Disable debug routes unless PPROF is enabled in configuration (#4995)

This commit is contained in:
Lauris BH 2018-09-30 01:44:06 +03:00 committed by techknowlogick
parent fc0001caa1
commit ab5b245182
3 changed files with 19 additions and 14 deletions

4
Gopkg.lock generated
View file

@ -352,11 +352,11 @@
revision = "66031fcb37a0fff002a1f028eb0b3a815c78306b" revision = "66031fcb37a0fff002a1f028eb0b3a815c78306b"
[[projects]] [[projects]]
digest = "1:6fb9cae2a3b4518e048a899b273e23b671802b611ccfcca0b576ecc08bb7b8f5" digest = "1:758d2371fcdee6d02565901b348729053c636055e67ef6e17aa466c7ff6cc57c"
name = "github.com/go-macaron/toolbox" name = "github.com/go-macaron/toolbox"
packages = ["."] packages = ["."]
pruneopts = "NUT" pruneopts = "NUT"
revision = "99a42f20e9e88daec5c0d7beb4e7eac134680ab0" revision = "a77f45a7ce909c0ff14b28279fa1a2b674acb70f"
[[projects]] [[projects]]
digest = "1:747c1fcb10f8f6734551465ab73c6ed9c551aa6e66250fb6683d1624f554546a" digest = "1:747c1fcb10f8f6734551465ab73c6ed9c551aa6e66250fb6683d1624f554546a"

View file

@ -131,6 +131,7 @@ func NewMacaron() *macaron.Macaron {
Func: models.Ping, Func: models.Ping,
}, },
}, },
DisableDebug: !setting.EnablePprof,
})) }))
m.Use(context.Contexter()) m.Use(context.Contexter())
return m return m

View file

@ -26,7 +26,7 @@ import (
"gopkg.in/macaron.v1" "gopkg.in/macaron.v1"
) )
const _VERSION = "0.1.2" const _VERSION = "0.1.4"
func Version() string { func Version() string {
return _VERSION return _VERSION
@ -58,6 +58,8 @@ type Options struct {
HealthCheckFuncs []*HealthCheckFuncDesc HealthCheckFuncs []*HealthCheckFuncDesc
// URL for URL map json. Default is "/urlmap.json". // URL for URL map json. Default is "/urlmap.json".
URLMapPrefix string URLMapPrefix string
// DisableDebug turns off all debug functionality.
DisableDebug bool
// URL prefix of pprof. Default is "/debug/pprof/". // URL prefix of pprof. Default is "/debug/pprof/".
PprofURLPrefix string PprofURLPrefix string
// URL prefix of profile. Default is "/debug/profile/". // URL prefix of profile. Default is "/debug/profile/".
@ -98,7 +100,7 @@ func prepareOptions(options []Options) {
} }
} }
func dashboard(ctx *macaron.Context) string { func dashboard() string {
return fmt.Sprintf(`<p>Toolbox Index:</p> return fmt.Sprintf(`<p>Toolbox Index:</p>
<ol> <ol>
<li><a href="%s">Pprof Information</a></li> <li><a href="%s">Pprof Information</a></li>
@ -125,23 +127,25 @@ func Toolboxer(m *macaron.Macaron, options ...Options) macaron.Handler {
for _, fd := range opt.HealthCheckFuncs { for _, fd := range opt.HealthCheckFuncs {
t.AddHealthCheckFunc(fd.Desc, fd.Func) t.AddHealthCheckFunc(fd.Desc, fd.Func)
} }
m.Get(opt.HealthCheckURL, t.handleHealthCheck) m.Route(opt.HealthCheckURL, "HEAD,GET", t.handleHealthCheck)
// URL map. // URL map.
m.Get(opt.URLMapPrefix, func(rw http.ResponseWriter) { m.Get(opt.URLMapPrefix, func(rw http.ResponseWriter) {
t.JSON(rw) t.JSON(rw)
}) })
// Pprof. if !opt.DisableDebug {
// Pprof
m.Any(path.Join(opt.PprofURLPrefix, "cmdline"), pprof.Cmdline) m.Any(path.Join(opt.PprofURLPrefix, "cmdline"), pprof.Cmdline)
m.Any(path.Join(opt.PprofURLPrefix, "profile"), pprof.Profile) m.Any(path.Join(opt.PprofURLPrefix, "profile"), pprof.Profile)
m.Any(path.Join(opt.PprofURLPrefix, "symbol"), pprof.Symbol) m.Any(path.Join(opt.PprofURLPrefix, "symbol"), pprof.Symbol)
m.Any(opt.PprofURLPrefix, pprof.Index) m.Any(opt.PprofURLPrefix, pprof.Index)
m.Any(path.Join(opt.PprofURLPrefix, "*"), pprof.Index) m.Any(path.Join(opt.PprofURLPrefix, "*"), pprof.Index)
// Profile. // Profile
profilePath = opt.ProfilePath profilePath = opt.ProfilePath
m.Get(opt.ProfileURLPrefix, handleProfile) m.Get(opt.ProfileURLPrefix, handleProfile)
}
// Routes statistic. // Routes statistic.
t.UrlMap = &UrlMap{ t.UrlMap = &UrlMap{