Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit f0e2cd1

Browse files
committed
feat: only quick setup missing
License: MIT Signed-off-by: Henrique Dias <hacdias@gmail.com>
1 parent daf1865 commit f0e2cd1

File tree

1 file changed

+75
-57
lines changed

1 file changed

+75
-57
lines changed

parser.go

Lines changed: 75 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,27 @@ import (
77
"os"
88
"path/filepath"
99

10+
"github.com/filebrowser/filebrowser/auth"
11+
12+
"github.com/asdine/storm"
13+
"github.com/filebrowser/filebrowser/http"
14+
"github.com/filebrowser/filebrowser/settings"
15+
"github.com/filebrowser/filebrowser/storage/bolt"
16+
1017
"github.com/mholt/caddy"
1118
"github.com/mholt/caddy/caddyhttp/httpserver"
1219
)
1320

1421
func parse(c *caddy.Controller) (*handler, error) {
1522
values := map[string]string{
16-
"baseURL": "/",
17-
"scope": ".",
18-
"database": "",
23+
"baseURL": "/",
24+
"scope": ".",
25+
"database": "",
26+
"auth_method": "json",
27+
"auth_header": "",
28+
"recaptcha_host": "",
29+
"recaptcha_key": "",
30+
"recaptcha_secret": "",
1931
}
2032

2133
args := c.RemainingArgs()
@@ -31,8 +43,8 @@ func parse(c *caddy.Controller) (*handler, error) {
3143
for c.NextBlock() {
3244
switch val := c.Val(); val {
3345
case "database",
34-
"locale",
3546
"auth_method",
47+
"auth_header",
3648
"recaptcha_host",
3749
"recaptcha_key",
3850
"recaptcha_secret":
@@ -51,69 +63,75 @@ func parse(c *caddy.Controller) (*handler, error) {
5163
return nil, err
5264
}
5365

54-
/*
55-
56-
57-
u.Scope = scope
58-
u.FileSystem = fileutils.Dir(scope)
59-
60-
var db *storm.DB
61-
if stored, ok := databases[database]; ok {
62-
db = stored
63-
} else {
64-
db, err = storm.Open(database)
65-
databases[database] = db
66-
}
67-
68-
if err != nil {
69-
return nil, err
70-
}
66+
ser := &settings.Server{
67+
Root: values["root"],
68+
BaseURL: values["baseURL"],
69+
}
7170

72-
authMethod := "default"
73-
if noAuth {
74-
authMethod = "none"
75-
}
71+
// quick setup
7672

77-
m := &l.FileBrowser{
78-
BaseURL: "",
79-
PrefixURL: "",
80-
DefaultUser: u,
81-
Auth: &l.Auth{
82-
Method: authMethod,
83-
},
84-
ReCaptcha: &l.ReCaptcha{
85-
Host: reCaptchaHost,
86-
Key: reCaptchaKey,
87-
Secret: reCaptchaSecret,
88-
},
89-
Store: &l.Store{
90-
Config: bolt.ConfigStore{DB: db},
91-
Users: bolt.UsersStore{DB: db},
92-
Share: bolt.ShareStore{DB: db},
93-
},
94-
NewFS: func(scope string) l.FileSystem {
95-
return fileutils.Dir(scope)
96-
},
97-
}
73+
db, err := storm.Open(values["database"])
74+
if err != nil {
75+
return nil, err
76+
}
9877

99-
err = m.Setup()
100-
if err != nil {
101-
return nil, err
102-
}
78+
sto := bolt.NewStorage(db)
10379

80+
set, err := sto.Settings.Get()
81+
if err != nil {
82+
return nil, err
83+
}
10484

85+
var auther auth.Auther
86+
87+
switch settings.AuthMethod(values["auth_method"]) {
88+
case auth.MethodJSONAuth:
89+
set.AuthMethod = auth.MethodJSONAuth
90+
auther = &auth.JSONAuth{
91+
ReCaptcha: &auth.ReCaptcha{
92+
Host: values["recaptcha_host"],
93+
Key: values["recaptcha_key"],
94+
Secret: values["recaptcha_secret"],
95+
},
96+
}
97+
case auth.MethodNoAuth:
98+
set.AuthMethod = auth.MethodNoAuth
99+
auther = &auth.NoAuth{}
100+
case auth.MethodProxyAuth:
101+
set.AuthMethod = auth.MethodProxyAuth
102+
header := values["auth_header"]
103+
if header == "" {
104+
return nil, c.ArgErr()
105+
}
106+
auther = &auth.ProxyAuth{Header: header}
107+
default:
108+
return nil, c.ArgErr()
109+
}
105110

106-
if err != nil {
107-
return nil, err
108-
}
111+
err = sto.Settings.Save(set)
112+
if err != nil {
113+
return nil, err
114+
}
109115

110-
m.SetBaseURL(baseURL)
111-
m.SetPrefixURL(strings.TrimSuffix(caddyConf.Addr.Path, "/"))
116+
err = sto.Settings.SaveServer(ser)
117+
if err != nil {
118+
return nil, err
119+
}
112120

121+
err = sto.Auth.Save(auther)
122+
if err != nil {
123+
return nil, err
124+
}
113125

114-
} */
126+
httpHandler, err := http.NewHandler(sto, ser)
127+
if err != nil {
128+
return nil, err
129+
}
115130

116-
return nil, nil
131+
return &handler{
132+
Handler: httpHandler,
133+
baseURL: values["baseURL"],
134+
}, nil
117135
}
118136

119137
var warningTemplate = `[WARNING] A database is going to be created for your File Browser

0 commit comments

Comments
 (0)