1
0
mirror of https://github.com/lus/pasty.git synced 2023-08-10 21:13:09 +03:00

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, PasteIDLength: cfg.PasteIDLength,
PasteIDCharset: cfg.PasteIDCharset, PasteIDCharset: cfg.PasteIDCharset,
PasteLengthCap: cfg.PasteLengthCap, PasteLengthCap: cfg.PasteLengthCap,
ModificationTokensEnabled: cfg.ModificationTokens, ModificationTokensEnabled: cfg.ModificationTokensEnabled,
ModificationTokenLength: cfg.ModificationTokenLength, ModificationTokenLength: cfg.ModificationTokenLength,
ModificationTokenCharset: cfg.ModificationTokenCharset, ModificationTokenCharset: cfg.ModificationTokenCharset,
} }

View File

@ -22,19 +22,19 @@ var removedKeys = []string{
} }
var keyRedirects = map[string][]string{ var keyRedirects = map[string][]string{
"PASTY_ADDRESS": {"PASTY_WEB_ADDRESS"}, "PASTY_ADDRESS": {"PASTY_WEB_ADDRESS"},
"PASTY_STORAGE_DRIVER": {"PASTY_STORAGE_TYPE"}, "PASTY_STORAGE_DRIVER": {"PASTY_STORAGE_TYPE"},
"PASTY_POSTGRES_DSN": {"PASTY_STORAGE_POSTGRES_DSN"}, "PASTY_POSTGRES_DSN": {"PASTY_STORAGE_POSTGRES_DSN"},
"PASTY_PASTE_ID_LENGTH": {"PASTY_ID_LENGTH"}, "PASTY_PASTE_ID_LENGTH": {"PASTY_ID_LENGTH"},
"PASTY_PASTE_ID_CHARSET": {"PASTY_ID_CHARACTERS"}, "PASTY_PASTE_ID_CHARSET": {"PASTY_ID_CHARACTERS"},
"PASTY_PASTE_LENGTH_CAP": {"PASTY_LENGTH_CAP"}, "PASTY_PASTE_LENGTH_CAP": {"PASTY_LENGTH_CAP"},
"PASTY_REPORTS_ENABLED": {"PASTY_REPORTS_ENABLED"}, "PASTY_REPORTS_ENABLED": {"PASTY_REPORTS_ENABLED"},
"PASTY_REPORTS_WEBHOOK_URL": {"PASTY_REPORT_WEBHOOK"}, "PASTY_REPORTS_WEBHOOK_URL": {"PASTY_REPORT_WEBHOOK"},
"PASTY_REPORTS_WEBHOOK_TOKEN": {"PASTY_REPORT_WEBHOOK_TOKEN"}, "PASTY_REPORTS_WEBHOOK_TOKEN": {"PASTY_REPORT_WEBHOOK_TOKEN"},
"PASTY_MODIFICATION_TOKEN_CHARSET": {"PASTY_MODIFICATION_TOKEN_CHARACTERS"}, "PASTY_MODIFICATION_TOKENS_ENABLED": {"PASTY_MODIFICATION_TOKENS", "PASTY_DELETION_TOKENS"},
"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_MASTER": {"PASTY_DELETION_TOKEN_MASTER"},
"PASTY_MODIFICATION_TOKEN_LENGTH": {"PASTY_DELETION_TOKEN_LENGTH"}, "PASTY_MODIFICATION_TOKEN_LENGTH": {"PASTY_DELETION_TOKEN_LENGTH"},
} }
// Compatibility runs several compatibility measurements. // Compatibility runs several compatibility measurements.
@ -55,7 +55,7 @@ func Compatibility() {
if err := os.Setenv(newKey, os.Getenv(oldKey)); err != nil { if err := os.Setenv(newKey, os.Getenv(oldKey)); err != nil {
continue 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 break
} }
} }

View File

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

View File

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