Add HTTP Server header
ci/woodpecker/push/test_golang Pipeline was successful Details

main
Leonid Maslakov 4 months ago
parent 5a29c80d76
commit 5037eac2e6

@ -34,24 +34,24 @@ type Data struct {
RateLimitNew *netshare.RateLimitSystem
RateLimitGet *netshare.RateLimitSystem
Lexers *[]string
Lexers []string
Version *string
Version string
TitleMaxLen *int
BodyMaxLen *int
MaxLifeTime *int64
TitleMaxLen int
BodyMaxLen int
MaxLifeTime int64
ServerAbout *string
ServerRules *string
ServerTermsOfUse *string
ServerAbout string
ServerRules string
ServerTermsOfUse string
AdminName *string
AdminMail *string
AdminName string
AdminMail string
LenPasswdFile *string
LenPasswdFile string
UiDefaultLifeTime *string
UiDefaultLifeTime string
}
func Load(db storage.DB, cfg config.Config) *Data {
@ -62,18 +62,18 @@ func Load(db storage.DB, cfg config.Config) *Data {
Log: cfg.Log,
RateLimitNew: cfg.RateLimitNew,
RateLimitGet: cfg.RateLimitGet,
Lexers: &lexers,
Version: &cfg.Version,
TitleMaxLen: &cfg.TitleMaxLen,
BodyMaxLen: &cfg.BodyMaxLen,
MaxLifeTime: &cfg.MaxLifeTime,
ServerAbout: &cfg.ServerAbout,
ServerRules: &cfg.ServerRules,
ServerTermsOfUse: &cfg.ServerTermsOfUse,
AdminName: &cfg.AdminName,
AdminMail: &cfg.AdminMail,
LenPasswdFile: &cfg.LenPasswdFile,
UiDefaultLifeTime: &cfg.UiDefaultLifetime,
Lexers: lexers,
Version: cfg.Version,
TitleMaxLen: cfg.TitleMaxLen,
BodyMaxLen: cfg.BodyMaxLen,
MaxLifeTime: cfg.MaxLifeTime,
ServerAbout: cfg.ServerAbout,
ServerRules: cfg.ServerRules,
ServerTermsOfUse: cfg.ServerTermsOfUse,
AdminName: cfg.AdminName,
AdminMail: cfg.AdminMail,
LenPasswdFile: cfg.LenPasswdFile,
UiDefaultLifeTime: cfg.UiDefaultLifetime,
}
}
@ -81,6 +81,8 @@ func (data *Data) Hand(rw http.ResponseWriter, req *http.Request) {
// Process request
var err error
rw.Header().Set("Server", config.Software+"/"+data.Version)
switch req.URL.Path {
// Search engines
case "/api/v1/new":

@ -36,12 +36,12 @@ func (data *Data) newHand(rw http.ResponseWriter, req *http.Request) error {
var err error
// Check auth
if *data.LenPasswdFile != "" {
if data.LenPasswdFile != "" {
authOk := false
user, pass, authExist := req.BasicAuth()
if authExist == true {
authOk, err = lenpasswd.LoadAndCheck(*data.LenPasswdFile, user, pass)
authOk, err = lenpasswd.LoadAndCheck(data.LenPasswdFile, user, pass)
if err != nil {
return err
}
@ -58,7 +58,7 @@ func (data *Data) newHand(rw http.ResponseWriter, req *http.Request) error {
}
// Get form data and create paste
pasteID, createTime, deleteTime, err := netshare.PasteAddFromForm(req, data.DB, data.RateLimitNew, *data.TitleMaxLen, *data.BodyMaxLen, *data.MaxLifeTime, *data.Lexers)
pasteID, createTime, deleteTime, err := netshare.PasteAddFromForm(req, data.DB, data.RateLimitNew, data.TitleMaxLen, data.BodyMaxLen, data.MaxLifeTime, data.Lexers)
if err != nil {
return err
}

@ -50,18 +50,18 @@ func (data *Data) getServerInfoHand(rw http.ResponseWriter, req *http.Request) e
// Prepare data
serverInfo := serverInfoType{
Software: "Lenpaste",
Version: *data.Version,
TitleMaxLen: *data.TitleMaxLen,
BodyMaxLen: *data.BodyMaxLen,
MaxLifeTime: *data.MaxLifeTime,
ServerAbout: *data.ServerAbout,
ServerRules: *data.ServerRules,
ServerTermsOfUse: *data.ServerTermsOfUse,
AdminName: *data.AdminName,
AdminMail: *data.AdminMail,
Syntaxes: *data.Lexers,
UiDefaultLifeTime: *data.UiDefaultLifeTime,
AuthRequired: *data.LenPasswdFile != "",
Version: data.Version,
TitleMaxLen: data.TitleMaxLen,
BodyMaxLen: data.BodyMaxLen,
MaxLifeTime: data.MaxLifeTime,
ServerAbout: data.ServerAbout,
ServerRules: data.ServerRules,
ServerTermsOfUse: data.ServerTermsOfUse,
AdminName: data.AdminName,
AdminMail: data.AdminMail,
Syntaxes: data.Lexers,
UiDefaultLifeTime: data.UiDefaultLifeTime,
AuthRequired: data.LenPasswdFile != "",
}
// Return response

@ -23,6 +23,8 @@ import (
"git.lcomrade.su/root/lenpaste/internal/netshare"
)
const Software = "Lenpaste"
type Config struct {
Log logger.Logger

@ -31,6 +31,8 @@ type Data struct {
Log logger.Logger
RateLimitGet *netshare.RateLimitSystem
Version string
}
func Load(db storage.DB, cfg config.Config) *Data {
@ -38,10 +40,13 @@ func Load(db storage.DB, cfg config.Config) *Data {
DB: db,
Log: cfg.Log,
RateLimitGet: cfg.RateLimitGet,
Version: cfg.Version,
}
}
func (data *Data) Hand(rw http.ResponseWriter, req *http.Request) {
rw.Header().Set("Server", config.Software+"/"+data.Version)
err := data.rawHand(rw, req)
if err == nil {

@ -41,7 +41,7 @@ type Data struct {
RateLimitNew *netshare.RateLimitSystem
RateLimitGet *netshare.RateLimitSystem
Lexers *[]string
Lexers []string
Locales Locales
LocalesList LocalesList
Themes Themes
@ -70,26 +70,26 @@ type Data struct {
EmbeddedPage *template.Template
EmbeddedHelpPage *template.Template
Version *string
Version string
TitleMaxLen *int
BodyMaxLen *int
MaxLifeTime *int64
TitleMaxLen int
BodyMaxLen int
MaxLifeTime int64
ServerAbout *string
ServerRules *string
ServerTermsExist *bool
ServerTermsOfUse *string
ServerAbout string
ServerRules string
ServerTermsExist bool
ServerTermsOfUse string
AdminName *string
AdminMail *string
AdminName string
AdminMail string
RobotsDisallow *bool
RobotsDisallow bool
LenPasswdFile *string
LenPasswdFile string
UiDefaultLifeTime *string
UiDefaultTheme *string
UiDefaultLifeTime string
UiDefaultTheme string
}
func Load(db storage.DB, cfg config.Config) (*Data, error) {
@ -103,33 +103,32 @@ func Load(db storage.DB, cfg config.Config) (*Data, error) {
data.RateLimitNew = cfg.RateLimitNew
data.RateLimitGet = cfg.RateLimitGet
data.Version = &cfg.Version
data.Version = cfg.Version
data.TitleMaxLen = &cfg.TitleMaxLen
data.BodyMaxLen = &cfg.BodyMaxLen
data.MaxLifeTime = &cfg.MaxLifeTime
data.UiDefaultLifeTime = &cfg.UiDefaultLifetime
data.UiDefaultTheme = &cfg.UiDefaultTheme
data.LenPasswdFile = &cfg.LenPasswdFile
data.TitleMaxLen = cfg.TitleMaxLen
data.BodyMaxLen = cfg.BodyMaxLen
data.MaxLifeTime = cfg.MaxLifeTime
data.UiDefaultLifeTime = cfg.UiDefaultLifetime
data.UiDefaultTheme = cfg.UiDefaultTheme
data.LenPasswdFile = cfg.LenPasswdFile
data.ServerAbout = &cfg.ServerAbout
data.ServerRules = &cfg.ServerRules
data.ServerTermsOfUse = &cfg.ServerTermsOfUse
data.ServerAbout = cfg.ServerAbout
data.ServerRules = cfg.ServerRules
data.ServerTermsOfUse = cfg.ServerTermsOfUse
serverTermsExist := false
if cfg.ServerTermsOfUse != "" {
serverTermsExist = true
}
data.ServerTermsExist = &serverTermsExist
data.ServerTermsExist = serverTermsExist
data.AdminName = &cfg.AdminName
data.AdminMail = &cfg.AdminMail
data.AdminName = cfg.AdminName
data.AdminMail = cfg.AdminMail
data.RobotsDisallow = &cfg.RobotsDisallow
data.RobotsDisallow = cfg.RobotsDisallow
// Get Chroma lexers
lexers := chromaLexers.Names(false)
data.Lexers = &lexers
data.Lexers = chromaLexers.Names(false)
// Load locales
data.Locales, data.LocalesList, err = loadLocales(embFS, "data/locale")
@ -271,6 +270,8 @@ func (data *Data) Handler(rw http.ResponseWriter, req *http.Request) {
// Process request
var err error
rw.Header().Set("Server", config.Software+"/"+data.Version)
switch req.URL.Path {
// Search engines
case "/robots.txt":

@ -47,15 +47,15 @@ type aboutMinTmp struct {
// Pattern: /about
func (data *Data) aboutHand(rw http.ResponseWriter, req *http.Request) error {
dataTmpl := aboutTmpl{
Version: *data.Version,
TitleMaxLen: *data.TitleMaxLen,
BodyMaxLen: *data.BodyMaxLen,
MaxLifeTime: *data.MaxLifeTime,
ServerAbout: *data.ServerAbout,
ServerRules: *data.ServerRules,
ServerTermsExist: *data.ServerTermsExist,
AdminName: *data.AdminName,
AdminMail: *data.AdminMail,
Version: data.Version,
TitleMaxLen: data.TitleMaxLen,
BodyMaxLen: data.BodyMaxLen,
MaxLifeTime: data.MaxLifeTime,
ServerAbout: data.ServerAbout,
ServerRules: data.ServerRules,
ServerTermsExist: data.ServerTermsExist,
AdminName: data.AdminName,
AdminMail: data.AdminMail,
Highlight: data.Themes.findTheme(req, data.UiDefaultTheme).tryHighlight,
Translate: data.Locales.findLocale(req).translate,
}

@ -37,8 +37,8 @@ type errorTmpl struct {
func (data *Data) writeError(rw http.ResponseWriter, req *http.Request, e error) (int, error) {
errData := errorTmpl{
Code: 0,
AdminName: *data.AdminName,
AdminMail: *data.AdminMail,
AdminName: data.AdminName,
AdminMail: data.AdminMail,
Translate: data.Locales.findLocale(req).translate,
}

@ -49,12 +49,12 @@ func (data *Data) newPasteHand(rw http.ResponseWriter, req *http.Request) error
// Check auth
authOk := true
if *data.LenPasswdFile != "" {
if data.LenPasswdFile != "" {
authOk = false
user, pass, authExist := req.BasicAuth()
if authExist == true {
authOk, err = lenpasswd.LoadAndCheck(*data.LenPasswdFile, user, pass)
authOk, err = lenpasswd.LoadAndCheck(data.LenPasswdFile, user, pass)
if err != nil {
return err
}
@ -68,7 +68,7 @@ func (data *Data) newPasteHand(rw http.ResponseWriter, req *http.Request) error
// Create paste if need
if req.Method == "POST" {
pasteID, _, _, err := netshare.PasteAddFromForm(req, data.DB, data.RateLimitNew, *data.TitleMaxLen, *data.BodyMaxLen, *data.MaxLifeTime, *data.Lexers)
pasteID, _, _, err := netshare.PasteAddFromForm(req, data.DB, data.RateLimitNew, data.TitleMaxLen, data.BodyMaxLen, data.MaxLifeTime, data.Lexers)
if err != nil {
return err
}
@ -80,13 +80,13 @@ func (data *Data) newPasteHand(rw http.ResponseWriter, req *http.Request) error
// Else show create page
tmplData := createTmpl{
TitleMaxLen: *data.TitleMaxLen,
BodyMaxLen: *data.BodyMaxLen,
TitleMaxLen: data.TitleMaxLen,
BodyMaxLen: data.BodyMaxLen,
AuthorAllMaxLen: netshare.MaxLengthAuthorAll,
MaxLifeTime: *data.MaxLifeTime,
UiDefaultLifeTime: *data.UiDefaultLifeTime,
Lexers: *data.Lexers,
ServerTermsExist: *data.ServerTermsExist,
MaxLifeTime: data.MaxLifeTime,
UiDefaultLifeTime: data.UiDefaultLifeTime,
Lexers: data.Lexers,
ServerTermsExist: data.ServerTermsExist,
AuthorDefault: getCookie(req, "author"),
AuthorEmailDefault: getCookie(req, "authorEmail"),
AuthorURLDefault: getCookie(req, "authorURL"),

@ -51,12 +51,12 @@ func (data *Data) settingsHand(rw http.ResponseWriter, req *http.Request) error
// Check auth
authOk := true
if *data.LenPasswdFile != "" {
if data.LenPasswdFile != "" {
authOk = false
user, pass, authExist := req.BasicAuth()
if authExist == true {
authOk, err = lenpasswd.LoadAndCheck(*data.LenPasswdFile, user, pass)
authOk, err = lenpasswd.LoadAndCheck(data.LenPasswdFile, user, pass)
if err != nil {
return err
}
@ -80,7 +80,7 @@ func (data *Data) settingsHand(rw http.ResponseWriter, req *http.Request) error
}
if dataTmpl.Theme == "" {
dataTmpl.Theme = *data.UiDefaultTheme
dataTmpl.Theme = data.UiDefaultTheme
}
// Show page

@ -28,7 +28,7 @@ func (data *Data) robotsTxtHand(rw http.ResponseWriter, req *http.Request) error
// Generate robots.txt
robotsTxt := "User-agent: *\nDisallow: /\n"
if *data.RobotsDisallow == false {
if data.RobotsDisallow == false {
proto := netshare.GetProtocol(req.Header)
host := netshare.GetHost(req)
@ -46,7 +46,7 @@ func (data *Data) robotsTxtHand(rw http.ResponseWriter, req *http.Request) error
}
func (data *Data) sitemapHand(rw http.ResponseWriter, req *http.Request) error {
if *data.RobotsDisallow {
if data.RobotsDisallow {
return netshare.ErrNotFound
}

@ -34,7 +34,7 @@ type termsOfUseTmpl struct {
func (data *Data) termsOfUseHand(rw http.ResponseWriter, req *http.Request) error {
rw.Header().Set("Content-Type", "text/html; charset=utf-8")
return data.TermsOfUse.Execute(rw, termsOfUseTmpl{
TermsOfUse: *data.ServerTermsOfUse,
TermsOfUse: data.ServerTermsOfUse,
Highlight: data.Themes.findTheme(req, data.UiDefaultTheme).tryHighlight,
Translate: data.Locales.findLocale(req).translate},
)

@ -39,7 +39,7 @@ type Themes map[string]Theme
type ThemesListPart map[string]string
type ThemesList map[string]ThemesListPart
func loadThemes(hostThemeDir string, localesList LocalesList, defaultTheme *string) (Themes, ThemesList, error) {
func loadThemes(hostThemeDir string, localesList LocalesList, defaultTheme string) (Themes, ThemesList, error) {
themes := make(Themes)
themesList := make(ThemesList)
@ -154,9 +154,9 @@ func loadThemes(hostThemeDir string, localesList LocalesList, defaultTheme *stri
}
// Check default theme exist
_, ok := themes[*defaultTheme]
_, ok := themes[defaultTheme]
if ok == false {
return nil, nil, errors.New("web: default theme '" + *defaultTheme + "' not found")
return nil, nil, errors.New("web: default theme '" + defaultTheme + "' not found")
}
return themes, themesList, nil
@ -177,7 +177,7 @@ func (themesList ThemesList) getForLocale(req *http.Request) ThemesListPart {
return theme
}
func (themes Themes) findTheme(req *http.Request, defaultTheme *string) Theme {
func (themes Themes) findTheme(req *http.Request, defaultTheme string) Theme {
// Get theme by cookie
themeCookie := getCookie(req, "theme")
if themeCookie != "" {
@ -188,7 +188,7 @@ func (themes Themes) findTheme(req *http.Request, defaultTheme *string) Theme {
}
// Load default theme
theme, _ := themes[*defaultTheme]
theme, _ := themes[defaultTheme]
return theme
}

Loading…
Cancel
Save