photoprism/internal/commands/show_config.go
Michael Mayer d198a1d23f Security: Improve rate limit and HTTP proxy configuration #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2022-10-12 14:57:33 +02:00

58 lines
1.3 KiB
Go

package commands
import (
"fmt"
"github.com/sirupsen/logrus"
"github.com/urfave/cli"
"github.com/photoprism/photoprism/internal/config"
"github.com/photoprism/photoprism/internal/service"
"github.com/photoprism/photoprism/pkg/report"
)
// ShowConfigCommand configures the command name, flags, and action.
var ShowConfigCommand = cli.Command{
Name: "config",
Usage: "Displays global config options and their current values",
Flags: report.CliFlags,
Action: showConfigAction,
}
// ConfigReports specifies which configuration reports to display.
var ConfigReports = []Report{
{Title: "Config Options", NoWrap: true, Report: func(conf *config.Config) ([][]string, []string) {
return conf.Report()
}},
}
// showConfigAction shows global config option names and values.
func showConfigAction(ctx *cli.Context) error {
conf := config.NewConfig(ctx)
conf.SetLogLevel(logrus.FatalLevel)
service.SetConfig(conf)
if err := conf.Init(); err != nil {
log.Debug(err)
}
fmt.Println("")
for _, rep := range ConfigReports {
// Get values.
rows, cols := rep.Report(conf)
// Render report.
opt := report.Options{Format: report.CliFormat(ctx), NoWrap: rep.NoWrap}
result, _ := report.Render(rows, cols, opt)
// Show report.
if opt.Format == report.Default {
fmt.Printf("### %s ###\n\n", rep.Title)
}
fmt.Println(result)
}
return nil
}