write Content-Type and Content-Length headers

This commit is contained in:
Lukas Schulte Pelkum 2023-06-17 18:35:26 +02:00
parent 9708263373
commit 695b900f28
No known key found for this signature in database
GPG Key ID: AB3985CECFAFC962
4 changed files with 37 additions and 30 deletions

View File

@ -91,7 +91,7 @@ func main() {
PasteIDLength: cfg.PasteIDLength,
PasteIDCharset: cfg.PasteIDCharset,
PasteLengthCap: cfg.PasteLengthCap,
ModificationTokensEnabled: cfg.ModificationTokens,
ModificationTokensEnabled: cfg.ModificationTokensEnabled,
ModificationTokenLength: cfg.ModificationTokenLength,
ModificationTokenCharset: cfg.ModificationTokenCharset,
}

View File

@ -22,19 +22,19 @@ var removedKeys = []string{
}
var keyRedirects = map[string][]string{
"PASTY_ADDRESS": {"PASTY_WEB_ADDRESS"},
"PASTY_STORAGE_DRIVER": {"PASTY_STORAGE_TYPE"},
"PASTY_POSTGRES_DSN": {"PASTY_STORAGE_POSTGRES_DSN"},
"PASTY_PASTE_ID_LENGTH": {"PASTY_ID_LENGTH"},
"PASTY_PASTE_ID_CHARSET": {"PASTY_ID_CHARACTERS"},
"PASTY_PASTE_LENGTH_CAP": {"PASTY_LENGTH_CAP"},
"PASTY_REPORTS_ENABLED": {"PASTY_REPORTS_ENABLED"},
"PASTY_REPORTS_WEBHOOK_URL": {"PASTY_REPORT_WEBHOOK"},
"PASTY_REPORTS_WEBHOOK_TOKEN": {"PASTY_REPORT_WEBHOOK_TOKEN"},
"PASTY_MODIFICATION_TOKEN_CHARSET": {"PASTY_MODIFICATION_TOKEN_CHARACTERS"},
"PASTY_MODIFICATION_TOKENS": {"PASTY_DELETION_TOKENS"},
"PASTY_MODIFICATION_TOKEN_MASTER": {"PASTY_DELETION_TOKEN_MASTER"},
"PASTY_MODIFICATION_TOKEN_LENGTH": {"PASTY_DELETION_TOKEN_LENGTH"},
"PASTY_ADDRESS": {"PASTY_WEB_ADDRESS"},
"PASTY_STORAGE_DRIVER": {"PASTY_STORAGE_TYPE"},
"PASTY_POSTGRES_DSN": {"PASTY_STORAGE_POSTGRES_DSN"},
"PASTY_PASTE_ID_LENGTH": {"PASTY_ID_LENGTH"},
"PASTY_PASTE_ID_CHARSET": {"PASTY_ID_CHARACTERS"},
"PASTY_PASTE_LENGTH_CAP": {"PASTY_LENGTH_CAP"},
"PASTY_REPORTS_ENABLED": {"PASTY_REPORTS_ENABLED"},
"PASTY_REPORTS_WEBHOOK_URL": {"PASTY_REPORT_WEBHOOK"},
"PASTY_REPORTS_WEBHOOK_TOKEN": {"PASTY_REPORT_WEBHOOK_TOKEN"},
"PASTY_MODIFICATION_TOKENS_ENABLED": {"PASTY_MODIFICATION_TOKENS", "PASTY_DELETION_TOKENS"},
"PASTY_MODIFICATION_TOKEN_CHARSET": {"PASTY_MODIFICATION_TOKEN_CHARACTERS"},
"PASTY_MODIFICATION_TOKEN_MASTER": {"PASTY_DELETION_TOKEN_MASTER"},
"PASTY_MODIFICATION_TOKEN_LENGTH": {"PASTY_DELETION_TOKEN_LENGTH"},
}
// Compatibility runs several compatibility measurements.
@ -55,7 +55,7 @@ func Compatibility() {
if err := os.Setenv(newKey, os.Getenv(oldKey)); err != nil {
continue
}
log.Warn().Msgf("You have set the '%s' environment variable. This variable has been renamed to '%s'. The value has been propagated, but please consider changing your configuration to avoid further complications.", oldKey, newKey)
log.Warn().Msgf("You have set the '%s' environment variable. This variable has been renamed to '%s'. The value has been propagated, but please consider adjusting your configuration to avoid further complications.", oldKey, newKey)
break
}
}

View File

@ -7,21 +7,21 @@ import (
)
type Config struct {
LogLevel string `default:"info" split_words:"true"`
Address string `default:":8080" split_words:"true"`
StorageDriver string `default:"sqlite" split_words:"true"`
PasteIDLength int `default:"6" split_words:"true"`
PasteIDCharset string `default:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" split_words:"true"`
ModificationTokens bool `default:"true" split_words:"true"`
ModificationTokenMaster string `split_words:"true"`
ModificationTokenLength int `default:"12" split_words:"true"`
ModificationTokenCharset string `default:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" split_words:"true"`
RateLimit string `default:"30-M" split_words:"true"`
PasteLengthCap int `default:"50000" split_words:"true"`
AutoDelete *AutoDeleteConfig `split_words:"true"`
Reports *ReportConfig
Postgres *PostgresConfig
SQLite *SQLiteConfig
LogLevel string `default:"info" split_words:"true"`
Address string `default:":8080" split_words:"true"`
StorageDriver string `default:"sqlite" split_words:"true"`
PasteIDLength int `default:"6" split_words:"true"`
PasteIDCharset string `default:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" split_words:"true"`
ModificationTokensEnabled bool `default:"true" split_words:"true"`
ModificationTokenMaster string `split_words:"true"`
ModificationTokenLength int `default:"12" split_words:"true"`
ModificationTokenCharset string `default:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" split_words:"true"`
RateLimit string `default:"30-M" split_words:"true"`
PasteLengthCap int `default:"50000" split_words:"true"`
AutoDelete *AutoDeleteConfig `split_words:"true"`
Reports *ReportConfig
Postgres *PostgresConfig
SQLite *SQLiteConfig
}
type AutoDeleteConfig struct {

View File

@ -4,14 +4,19 @@ import (
"encoding/json"
"github.com/lus/pasty/pkg/chizerolog"
"net/http"
"strconv"
)
func writeErr(request *http.Request, writer http.ResponseWriter, err error) {
chizerolog.InjectError(request, err)
writer.Header().Set("Content-Type", "text/plain")
writer.Header().Set("Content-Length", strconv.Itoa(len(err.Error())))
writeString(writer, http.StatusInternalServerError, err.Error())
}
func writeString(writer http.ResponseWriter, status int, value string) {
writer.Header().Set("Content-Type", "text/plain")
writer.Header().Set("Content-Length", strconv.Itoa(len(value)))
writer.WriteHeader(status)
writer.Write([]byte(value))
}
@ -22,6 +27,8 @@ func writeJSON(writer http.ResponseWriter, status int, value any) error {
return err
}
writer.Header().Set("Content-Type", "application/json")
writer.Header().Set("Content-Length", strconv.Itoa(len(jsonData)))
writer.WriteHeader(status)
writer.Write(jsonData)