args: add arg to disable api auth (for development!)

a long flag to type out, that requires debug to be enabled and results
in a prompt to confirm your action.
This commit is contained in:
Harvey Tindall
2025-05-27 18:45:43 +01:00
parent 80fd7c9842
commit 79e8b24d7a
3 changed files with 26 additions and 1 deletions
+14
View File
@@ -8,6 +8,8 @@ import (
"os"
"path/filepath"
"strings"
lm "github.com/hrfee/jfa-go/logmessages"
)
func (app *appContext) loadArgs(firstCall bool) {
@@ -28,6 +30,8 @@ func (app *appContext) loadArgs(firstCall bool) {
PPROF = flag.Bool("pprof", false, "Exposes pprof profiler on /debug/pprof.")
SWAGGER = flag.Bool("swagger", false, "Enable swagger at /swagger/index.html")
flag.BoolVar(&NO_API_AUTH_DO_NOT_USE, "disable-api-auth-do-not-use", false, "Disables API authentication. DO NOT USE!")
flag.Parse()
if *help {
flag.Usage()
@@ -45,6 +49,16 @@ func (app *appContext) loadArgs(firstCall bool) {
if *_LOADBAK != "" {
LOADBAK = *_LOADBAK
}
if NO_API_AUTH_DO_NOT_USE && *DEBUG {
NO_API_AUTH_DO_NOT_USE = false
buf := bufio.NewReader(os.Stdin)
app.err.Print(lm.NoAPIAuthPrompt)
sentence, err := buf.ReadBytes('\n')
if err == nil && strings.ContainsRune(string(sentence), 'y') {
NO_API_AUTH_DO_NOT_USE = true
}
}
}
if os.Getenv("SWAGGER") == "1" {
+1
View File
@@ -281,6 +281,7 @@ const (
External = "external"
RegisterPprof = "Registered pprof"
SwaggerWarning = "Warning: Swagger should not be used on a public instance."
NoAPIAuthPrompt = `Disabling API auth is dangerous, only use locally for development. Disable it? [y/n]: `
// storage.go
ConnectDB = "Connected to DB \"%s\""
+11 -1
View File
@@ -15,6 +15,11 @@ import (
ginSwagger "github.com/swaggo/gin-swagger"
)
var (
// Disables authentication for the API. Do not use!
NO_API_AUTH_DO_NOT_USE = false
)
// loads HTML templates. If [files]/html_templates is set, alternative files inside the directory are loaded in place of the internal templates.
func (app *appContext) loadHTML(router *gin.Engine) {
customPath := app.config.Section("files").Key("html_templates").MustString("")
@@ -182,7 +187,12 @@ func (app *appContext) loadRoutes(router *gin.Engine) {
}
}
api := router.Group("/", app.webAuth())
var api *gin.RouterGroup
if NO_API_AUTH_DO_NOT_USE && *DEBUG {
api = router.Group("/")
} else {
api = router.Group("/", app.webAuth())
}
for _, p := range routePrefixes {
var user *gin.RouterGroup