diff --git a/cmd/root.go b/cmd/root.go index c9c9f7d1..e33f11ca 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -2,7 +2,6 @@ package cmd import ( "crypto/tls" - "errors" "io/ioutil" "log" "net" @@ -92,8 +91,8 @@ func mustGetStringViperFlag(flags *pflag.FlagSet, key string) string { var rootCmd = &cobra.Command{ Use: "filebrowser", - Short: "A stylish web-based file browser", Version: version.Version, + Short: "A stylish web-based file browser", Long: `File Browser CLI lets you create the database to use with File Browser, manage your users and all the configurations without acessing the web interface. @@ -130,6 +129,8 @@ Also, if the database path doesn't exist, File Browser will enter into the quick setup mode and a new database will be bootstraped and a new user created with the credentials from options "username" and "password".`, Run: python(func(cmd *cobra.Command, args []string, d pythonData) { + log.Println(cfgFile) + if !d.hadDB { quickSetup(cmd.Flags(), d) } @@ -141,22 +142,23 @@ user created with the credentials from options "username" and "password".`, checkErr(err) server.Root = root - handler, err := fbhttp.NewHandler(d.store, server) - checkErr(err) + adr := server.Address + ":" + server.Port var listener net.Listener if server.TLSKey != "" && server.TLSCert != "" { cer, err := tls.LoadX509KeyPair(server.TLSCert, server.TLSKey) checkErr(err) - config := &tls.Config{Certificates: []tls.Certificate{cer}} - listener, err = tls.Listen("tcp", server.Address+":"+server.Port, config) + listener, err = tls.Listen("tcp", adr, &tls.Config{Certificates: []tls.Certificate{cer}}) checkErr(err) } else { - listener, err = net.Listen("tcp", server.Address+":"+server.Port) + listener, err = net.Listen("tcp", adr) checkErr(err) } + handler, err := fbhttp.NewHandler(d.store, server) + checkErr(err) + log.Println("Listening on", listener.Addr().String()) if err := http.Serve(listener, handler); err != nil { log.Fatal(err) @@ -267,7 +269,7 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) { } if username == "" || password == "" { - checkErr(errors.New("username and password cannot be empty during quick setup")) + log.Fatal("username and password cannot be empty during quick setup") } user := &users.User{ @@ -303,7 +305,9 @@ func initConfig() { if _, ok := err.(v.ConfigParseError); ok { panic(err) } - // TODO: log.Println("No config file provided") + cfgFile = "No config file used" + } else { + cfgFile = "Using config file: " + v.ConfigFileUsed() } - // else TODO: log.Println("Using config file:", v.ConfigFileUsed()) + } diff --git a/cmd/rules.go b/cmd/rules.go index a0eab30b..efd23f7f 100644 --- a/cmd/rules.go +++ b/cmd/rules.go @@ -43,14 +43,14 @@ func runRules(st *storage.Storage, cmd *cobra.Command, users func(*users.User), return } - settings, err := st.Settings.Get() + s, err := st.Settings.Get() checkErr(err) if global != nil { - global(settings) + global(s) } - printRules(settings.Rules, id) + printRules(s.Rules, id) } func getUserIdentifier(flags *pflag.FlagSet) interface{} { diff --git a/cmd/users_update.go b/cmd/users_update.go index 65b281af..cf7cd2ac 100644 --- a/cmd/users_update.go +++ b/cmd/users_update.go @@ -26,8 +26,10 @@ options you want to change.`, password := mustGetString(flags, "password") newUsername := mustGetString(flags, "username") - var err error - var user *users.User + var ( + err error + user *users.User + ) if id != 0 { user, err = d.store.Users.Get("", id) diff --git a/http/auth.go b/http/auth.go index d2c4792f..db58bba1 100644 --- a/http/auth.go +++ b/http/auth.go @@ -7,7 +7,7 @@ import ( "strings" "time" - "github.com/dgrijalva/jwt-go" + jwt "github.com/dgrijalva/jwt-go" "github.com/dgrijalva/jwt-go/request" "github.com/filebrowser/filebrowser/v2/errors" "github.com/filebrowser/filebrowser/v2/users" diff --git a/http/static.go b/http/static.go index 2f0fe657..053c7654 100644 --- a/http/static.go +++ b/http/static.go @@ -9,7 +9,7 @@ import ( "strings" "text/template" - "github.com/GeertJohan/go.rice" + rice "github.com/GeertJohan/go.rice" "github.com/filebrowser/filebrowser/v2/auth" "github.com/filebrowser/filebrowser/v2/settings" "github.com/filebrowser/filebrowser/v2/storage" diff --git a/storage/bolt/importer/conf.go b/storage/bolt/importer/conf.go index 618a7766..d0348310 100644 --- a/storage/bolt/importer/conf.go +++ b/storage/bolt/importer/conf.go @@ -13,8 +13,8 @@ import ( "github.com/asdine/storm" "github.com/filebrowser/filebrowser/v2/settings" "github.com/filebrowser/filebrowser/v2/storage" - "github.com/pelletier/go-toml" - "gopkg.in/yaml.v2" + toml "github.com/pelletier/go-toml" + yaml "gopkg.in/yaml.v2" ) type oldDefs struct { @@ -33,7 +33,7 @@ type oldAuth struct { } type oldConf struct { - Port string `json:"port" yaml:"port" toml:"port"` + Port string `json:"port" yaml:"port" toml:"port"` BaseURL string `json:"baseURL" yaml:"baseURL" toml:"baseURL"` Log string `json:"log" yaml:"log" toml:"log"` Address string `json:"address" yaml:"address" toml:"address"` @@ -62,14 +62,14 @@ var defaults = &oldConf{ }, } -func importConf(db *storm.DB, path string, sto *storage.Storage) error { +func readConf(path string) (*oldConf, error) { cfg := &oldConf{} if path != "" { ext := filepath.Ext(path) fd, err := os.Open(path) if err != nil { - return err + return nil, err } defer fd.Close() @@ -81,23 +81,32 @@ func importConf(db *storm.DB, path string, sto *storage.Storage) error { case ".yaml", ".yml": err = yaml.NewDecoder(fd).Decode(cfg) default: - return errors.New("unsupported config extension " + ext) + return nil, errors.New("unsupported config extension " + ext) } if err != nil { - return err + return nil, err } } else { cfg = defaults path, err := filepath.Abs(".") if err != nil { - return err + return nil, err } cfg.Defaults.Scope = path } + return cfg, nil +} + +func importConf(db *storm.DB, path string, sto *storage.Storage) error { + + cfg, err := readConf(path) + if err != nil { + return err + } commands := map[string][]string{} - err := db.Get("config", "commands", &commands) + err = db.Get("config", "commands", &commands) if err != nil { return err } @@ -109,8 +118,8 @@ func importConf(db *storm.DB, path string, sto *storage.Storage) error { } s := &settings.Settings{ - Key: key, - Signup: false, + Key: key, + Signup: false, Defaults: settings.UserDefaults{ Scope: cfg.Defaults.Scope, Commands: cfg.Defaults.Commands, @@ -130,10 +139,10 @@ func importConf(db *storm.DB, path string, sto *storage.Storage) error { } server := &settings.Server{ - BaseURL : cfg.BaseURL, - Port : cfg.Port, - Address : cfg.Address, - Log : cfg.Log, + BaseURL: cfg.BaseURL, + Port: cfg.Port, + Address: cfg.Address, + Log: cfg.Log, } var auther auth.Auther