use viper.BindPFlags
This commit is contained in:
parent
002d9fb9b5
commit
c407502fd2
@ -1,8 +1,7 @@
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"log"
|
||||||
"os"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
homedir "github.com/mitchellh/go-homedir"
|
homedir "github.com/mitchellh/go-homedir"
|
||||||
@ -29,8 +28,7 @@ easily, everywhere, every time.`,
|
|||||||
func Execute() {
|
func Execute() {
|
||||||
checkRootAlias()
|
checkRootAlias()
|
||||||
if err := rootCmd.Execute(); err != nil {
|
if err := rootCmd.Execute(); err != nil {
|
||||||
fmt.Println(err)
|
panic(err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,8 +45,7 @@ func initConfig() {
|
|||||||
// Find home directory.
|
// Find home directory.
|
||||||
home, err := homedir.Dir()
|
home, err := homedir.Dir()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
panic(err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
v.AddConfigPath(".")
|
v.AddConfigPath(".")
|
||||||
v.AddConfigPath(home)
|
v.AddConfigPath(home)
|
||||||
@ -68,6 +65,6 @@ func initConfig() {
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("Using config file:", v.ConfigFileUsed())
|
log.Println("Using config file:", v.ConfigFileUsed())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,6 @@ func init() {
|
|||||||
rootCmd.AddCommand(serveCmd)
|
rootCmd.AddCommand(serveCmd)
|
||||||
|
|
||||||
f := serveCmd.PersistentFlags()
|
f := serveCmd.PersistentFlags()
|
||||||
l := f.Lookup
|
|
||||||
|
|
||||||
// Global settings
|
// Global settings
|
||||||
port := 0
|
port := 0
|
||||||
@ -48,21 +47,13 @@ func init() {
|
|||||||
f.String("prefixurl", prefixurl, "Prefix URL")
|
f.String("prefixurl", prefixurl, "Prefix URL")
|
||||||
f.String("staticgen", staticg, "Static Generator you want to enable")
|
f.String("staticgen", staticg, "Static Generator you want to enable")
|
||||||
|
|
||||||
v.SetDefault("Port", port)
|
v.SetDefault("port", port)
|
||||||
v.SetDefault("Address", addr)
|
v.SetDefault("address", addr)
|
||||||
v.SetDefault("Database", database)
|
v.SetDefault("database", database)
|
||||||
v.SetDefault("Logger", logfile)
|
v.SetDefault("log", logfile)
|
||||||
v.SetDefault("BaseURL", baseurl)
|
v.SetDefault("baseurl", baseurl)
|
||||||
v.SetDefault("PrefixURL", prefixurl)
|
v.SetDefault("prefixurl", prefixurl)
|
||||||
v.SetDefault("StaticGen", staticg)
|
v.SetDefault("staticgen", staticg)
|
||||||
|
|
||||||
v.BindPFlag("Port", l("port"))
|
|
||||||
v.BindPFlag("Address", l("address"))
|
|
||||||
v.BindPFlag("Database", l("database"))
|
|
||||||
v.BindPFlag("Logger", l("log"))
|
|
||||||
v.BindPFlag("BaseURL", l("baseurl"))
|
|
||||||
v.BindPFlag("PrefixURL", l("prefixurl"))
|
|
||||||
v.BindPFlag("StaticGen", l("staticgen"))
|
|
||||||
|
|
||||||
// User default settings
|
// User default settings
|
||||||
var defaults = struct {
|
var defaults = struct {
|
||||||
@ -94,23 +85,14 @@ func init() {
|
|||||||
f.Bool("defaults.allowPublish", defaults.allowPublish, "Default allow publish option for new users")
|
f.Bool("defaults.allowPublish", defaults.allowPublish, "Default allow publish option for new users")
|
||||||
f.String("defaults.locale", defaults.locale, "Default locale for new users, set it empty to enable auto detect from browser")
|
f.String("defaults.locale", defaults.locale, "Default locale for new users, set it empty to enable auto detect from browser")
|
||||||
|
|
||||||
v.SetDefault("Defaults.Scope", defaults.scope)
|
v.SetDefault("defaults.scope", defaults.scope)
|
||||||
v.SetDefault("Defaults.Commands", []string{"git", "svn", "hg"})
|
v.SetDefault("defaults.commands", []string{"git", "svn", "hg"})
|
||||||
v.SetDefault("Defaults.ViewMode", defaults.viewMode)
|
v.SetDefault("defaults.viewMode", defaults.viewMode)
|
||||||
v.SetDefault("Defaults.AllowCommmands", defaults.allowCommands)
|
v.SetDefault("defaults.allowCommands", defaults.allowCommands)
|
||||||
v.SetDefault("Defaults.AllowEdit", defaults.allowEdit)
|
v.SetDefault("defaults.allowEdit", defaults.allowEdit)
|
||||||
v.SetDefault("Defaults.AllowNew", defaults.allowNew)
|
v.SetDefault("defaults.allowNew", defaults.allowNew)
|
||||||
v.SetDefault("Defaults.AllowPublish", defaults.allowPublish)
|
v.SetDefault("defaults.allowPublish", defaults.allowPublish)
|
||||||
v.SetDefault("Defaults.Locale", defaults.locale)
|
v.SetDefault("defaults.locale", defaults.locale)
|
||||||
|
|
||||||
v.BindPFlag("Defaults.Scope", l("defaults.scope"))
|
|
||||||
v.BindPFlag("Defaults.Commands", l("defaults.commands"))
|
|
||||||
v.BindPFlag("Defaults.ViewMode", l("defaults.viewMode"))
|
|
||||||
v.BindPFlag("Defaults.AllowCommands", l("defaults.allowCommands"))
|
|
||||||
v.BindPFlag("Defaults.AllowEdit", l("defaults.allowEdit"))
|
|
||||||
v.BindPFlag("Defaults.AllowNew", l("defaults.allowNew"))
|
|
||||||
v.BindPFlag("Defaults.AllowPublish", l("defaults.allowPublish"))
|
|
||||||
v.BindPFlag("Defaults.Locale", l("defaults.locale"))
|
|
||||||
|
|
||||||
// Recaptcha settings
|
// Recaptcha settings
|
||||||
var recaptcha = struct {
|
var recaptcha = struct {
|
||||||
@ -127,13 +109,9 @@ func init() {
|
|||||||
f.String("recaptcha.key", recaptcha.key, "ReCaptcha site key")
|
f.String("recaptcha.key", recaptcha.key, "ReCaptcha site key")
|
||||||
f.String("recaptcha.secret", recaptcha.secret, "ReCaptcha secret")
|
f.String("recaptcha.secret", recaptcha.secret, "ReCaptcha secret")
|
||||||
|
|
||||||
v.SetDefault("Recaptcha.Host", recaptcha.host)
|
v.SetDefault("recaptcha.host", recaptcha.host)
|
||||||
v.SetDefault("Recaptcha.Key", recaptcha.key)
|
v.SetDefault("recaptcha.key", recaptcha.key)
|
||||||
v.SetDefault("Recaptcha.Secret", recaptcha.secret)
|
v.SetDefault("recaptcha.secret", recaptcha.secret)
|
||||||
|
|
||||||
v.BindPFlag("Recaptcha.Host", l("recaptcha.host"))
|
|
||||||
v.BindPFlag("Recaptcha.Key", l("recaptcha.key"))
|
|
||||||
v.BindPFlag("Recaptcha.Secret", l("recaptcha.secret"))
|
|
||||||
|
|
||||||
// Auth settings
|
// Auth settings
|
||||||
var auth = struct {
|
var auth = struct {
|
||||||
@ -147,11 +125,13 @@ func init() {
|
|||||||
f.String("auth.method", auth.method, "Switch between 'none', 'default' and 'proxy' authentication")
|
f.String("auth.method", auth.method, "Switch between 'none', 'default' and 'proxy' authentication")
|
||||||
f.String("auth.header", auth.header, "The header name used for proxy authentication")
|
f.String("auth.header", auth.header, "The header name used for proxy authentication")
|
||||||
|
|
||||||
v.SetDefault("Auth.Method", auth.method)
|
v.SetDefault("auth.method", auth.method)
|
||||||
v.SetDefault("Auth.Header", auth.header)
|
v.SetDefault("auth.header", auth.header)
|
||||||
|
|
||||||
v.BindPFlag("Auth.Method", l("auth.method"))
|
// Bind the full flag set to the configuration
|
||||||
v.BindPFlag("Auth.Header", l("auth.header"))
|
if err := v.BindPFlags(f); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
// Deprecated flags
|
// Deprecated flags
|
||||||
Deprecated(f, "no-auth", false, "Disables authentication", "use --auth.method='none' instead")
|
Deprecated(f, "no-auth", false, "Disables authentication", "use --auth.method='none' instead")
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import (
|
|||||||
|
|
||||||
func Serve() {
|
func Serve() {
|
||||||
// Set up process log before anything bad happens.
|
// Set up process log before anything bad happens.
|
||||||
switch l := viper.GetString("Logger"); l {
|
switch l := viper.GetString("log"); l {
|
||||||
case "stdout":
|
case "stdout":
|
||||||
log.SetOutput(os.Stdout)
|
log.SetOutput(os.Stdout)
|
||||||
case "stderr":
|
case "stderr":
|
||||||
@ -44,14 +44,14 @@ func Serve() {
|
|||||||
validMethods["default"] = false
|
validMethods["default"] = false
|
||||||
validMethods["proxy"] = true
|
validMethods["proxy"] = true
|
||||||
|
|
||||||
m := viper.GetString("Auth.Method")
|
m := viper.GetString("auth.method")
|
||||||
b, ok := validMethods[m]
|
b, ok := validMethods[m]
|
||||||
if !ok {
|
if !ok {
|
||||||
log.Fatal("The property 'auth.method' needs to be set to 'none', 'default' or 'proxy'.")
|
log.Fatal("The property 'auth.method' needs to be set to 'none', 'default' or 'proxy'.")
|
||||||
}
|
}
|
||||||
|
|
||||||
if b {
|
if b {
|
||||||
if viper.GetString("Auth.Header") == "" {
|
if viper.GetString("auth.header") == "" {
|
||||||
log.Fatal("The 'auth.header' needs to be specified when '", m, "' authentication is used.")
|
log.Fatal("The 'auth.header' needs to be specified when '", m, "' authentication is used.")
|
||||||
}
|
}
|
||||||
log.Println("[WARN] Filebrowser authentication is configured to '", m, "' authentication. This can cause a huge security issue if the infrastructure is not configured correctly.")
|
log.Println("[WARN] Filebrowser authentication is configured to '", m, "' authentication. This can cause a huge security issue if the infrastructure is not configured correctly.")
|
||||||
@ -59,7 +59,7 @@ func Serve() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Builds the address and a listener.
|
// Builds the address and a listener.
|
||||||
laddr := viper.GetString("Address") + ":" + viper.GetString("Port")
|
laddr := viper.GetString("address") + ":" + viper.GetString("port")
|
||||||
listener, err := net.Listen("tcp", laddr)
|
listener, err := net.Listen("tcp", laddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@ -75,33 +75,33 @@ func Serve() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func handler() http.Handler {
|
func handler() http.Handler {
|
||||||
db, err := storm.Open(viper.GetString("Database"))
|
db, err := storm.Open(viper.GetString("database"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fb := &filebrowser.FileBrowser{
|
fb := &filebrowser.FileBrowser{
|
||||||
Auth: &filebrowser.Auth{
|
Auth: &filebrowser.Auth{
|
||||||
Method: viper.GetString("Auth.Method"),
|
Method: viper.GetString("auth.method"),
|
||||||
Header: viper.GetString("Auth.Header"),
|
Header: viper.GetString("auth.header"),
|
||||||
},
|
},
|
||||||
ReCaptcha: &filebrowser.ReCaptcha{
|
ReCaptcha: &filebrowser.ReCaptcha{
|
||||||
Host: viper.GetString("Recaptcha.Host"),
|
Host: viper.GetString("recaptcha.host"),
|
||||||
Key: viper.GetString("Recaptcha.Key"),
|
Key: viper.GetString("recaptcha.key"),
|
||||||
Secret: viper.GetString("Recaptcha.Secret"),
|
Secret: viper.GetString("recaptcha.secret"),
|
||||||
},
|
},
|
||||||
DefaultUser: &filebrowser.User{
|
DefaultUser: &filebrowser.User{
|
||||||
AllowCommands: viper.GetBool("Defaults.AllowCommands"),
|
AllowCommands: viper.GetBool("defaults.allowCommands"),
|
||||||
AllowEdit: viper.GetBool("Defaults.AllowEdit"),
|
AllowEdit: viper.GetBool("defaults.allowEdit"),
|
||||||
AllowNew: viper.GetBool("Defaults.AllowNew"),
|
AllowNew: viper.GetBool("defaults.allowNew"),
|
||||||
AllowPublish: viper.GetBool("Defaults.AllowPublish"),
|
AllowPublish: viper.GetBool("defaults.allowPublish"),
|
||||||
Commands: viper.GetStringSlice("Defaults.Commands"),
|
Commands: viper.GetStringSlice("defaults.commands"),
|
||||||
Rules: []*filebrowser.Rule{},
|
Rules: []*filebrowser.Rule{},
|
||||||
Locale: viper.GetString("Defaults.Locale"),
|
Locale: viper.GetString("defaults.locale"),
|
||||||
CSS: "",
|
CSS: "",
|
||||||
Scope: viper.GetString("Defaults.Scope"),
|
Scope: viper.GetString("defaults.scope"),
|
||||||
FileSystem: fileutils.Dir(viper.GetString("Defaults.Scope")),
|
FileSystem: fileutils.Dir(viper.GetString("defaults.scope")),
|
||||||
ViewMode: viper.GetString("Defaults.ViewMode"),
|
ViewMode: viper.GetString("defaults.viewMode"),
|
||||||
},
|
},
|
||||||
Store: &filebrowser.Store{
|
Store: &filebrowser.Store{
|
||||||
Config: bolt.ConfigStore{DB: db},
|
Config: bolt.ConfigStore{DB: db},
|
||||||
@ -113,15 +113,15 @@ func handler() http.Handler {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
fb.SetBaseURL(viper.GetString("BaseURL"))
|
fb.SetBaseURL(viper.GetString("baseurl"))
|
||||||
fb.SetPrefixURL(viper.GetString("PrefixURL"))
|
fb.SetPrefixURL(viper.GetString("prefixurl"))
|
||||||
|
|
||||||
err = fb.Setup()
|
err = fb.Setup()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch viper.GetString("StaticGen") {
|
switch viper.GetString("staticgen") {
|
||||||
case "hugo":
|
case "hugo":
|
||||||
hugo := &staticgen.Hugo{
|
hugo := &staticgen.Hugo{
|
||||||
Root: viper.GetString("Scope"),
|
Root: viper.GetString("Scope"),
|
||||||
|
|||||||
@ -227,7 +227,7 @@ func renderFile(c *fb.Context, w http.ResponseWriter, file string) (int, error)
|
|||||||
w.Header().Set("Content-Type", contentType+"; charset=utf-8")
|
w.Header().Set("Content-Type", contentType+"; charset=utf-8")
|
||||||
|
|
||||||
data := map[string]interface{}{
|
data := map[string]interface{}{
|
||||||
"BaseURL": c.RootURL(),
|
"baseurl": c.RootURL(),
|
||||||
"NoAuth": c.Auth.Method == "none",
|
"NoAuth": c.Auth.Method == "none",
|
||||||
"Version": fb.Version,
|
"Version": fb.Version,
|
||||||
"CSS": template.CSS(c.CSS),
|
"CSS": template.CSS(c.CSS),
|
||||||
@ -237,7 +237,7 @@ func renderFile(c *fb.Context, w http.ResponseWriter, file string) (int, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if c.StaticGen != nil {
|
if c.StaticGen != nil {
|
||||||
data["StaticGen"] = c.StaticGen.Name()
|
data["staticgen"] = c.StaticGen.Name()
|
||||||
}
|
}
|
||||||
|
|
||||||
err := tpl.Execute(w, data)
|
err := tpl.Execute(w, data)
|
||||||
@ -291,7 +291,7 @@ func sharePage(c *fb.Context, w http.ResponseWriter, r *http.Request) (int, erro
|
|||||||
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||||
|
|
||||||
err := tpl.Execute(w, map[string]interface{}{
|
err := tpl.Execute(w, map[string]interface{}{
|
||||||
"BaseURL": c.RootURL(),
|
"baseurl": c.RootURL(),
|
||||||
"File": c.File,
|
"File": c.File,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user