Skip to content

Commit bac2905

Browse files
committed
feat(user): remove support for case-sensitive username
BREAKING CHANGE Before: Use `--user-match-case` to make username case sensitive. If the option is not present, username is case-insensitive. After: Username is always case-insensitive. `--user-match-case` is removed.
1 parent 01f9fad commit bac2905

File tree

7 files changed

+37
-137
lines changed

7 files changed

+37
-137
lines changed

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,6 @@ ghfs [options]
240240
--user-sha256 [<username>]:<sha256-password> ...
241241
--user-sha512 [<username>]:<sha512-password> ...
242242
Specify users for Basic Auth, with encoded password.
243-
--user-match-case
244-
Username is case sensitive.
245243
246244
-c|--cert <file> ...
247245
Specify TLS certificate file.

README.zh-CN.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,6 @@ ghfs [选项]
230230
--user-sha256 [<用户名>]:<sha256密码> ...
231231
--user-sha512 [<用户名>]:<sha512密码> ...
232232
指定http基本验证的用户,对密码使用特定的编码。
233-
--user-match-case
234-
用户名区分大小写。
235233
236234
-c|--cert <证书文件> ...
237235
指定TLS证书文件。

src/param/cli.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,6 @@ func NewCliCmd() *goNixArgParser.Command {
132132
err = options.AddFlagValues("userssha512", "--user-sha512", "", nil, "user info: <username>:<sha512-password>")
133133
serverError.CheckFatal(err)
134134

135-
err = options.AddFlag("usermatchcase", "--user-match-case", "GHFS_USER_MATCH_CASE", "username should be case sensitive")
136-
serverError.CheckFatal(err)
137-
138135
err = options.AddFlagsValues("certs", []string{"-c", "--cert"}, "GHFS_CERT", nil, "TLS certificate path")
139136
serverError.CheckFatal(err)
140137

@@ -291,7 +288,6 @@ func CmdResultsToParams(results []*goNixArgParser.ParseResult) (params Params, e
291288
param.EmptyRoot = result.HasKey("emptyroot")
292289
param.PrefixUrls, _ = result.GetStrings("prefixurls")
293290
param.DefaultSort, _ = result.GetString("defaultsort")
294-
param.UserMatchCase = result.HasKey("usermatchcase")
295291
param.HostNames, _ = result.GetStrings("hostnames")
296292
param.Theme, _ = result.GetString("theme")
297293
param.ThemeDir, _ = result.GetString("themedir")

src/param/main.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,12 @@ type Param struct {
5656
AuthUrls []string
5757
AuthDirs []string
5858
// value: [username, password]
59-
UsersPlain [][2]string
60-
UsersBase64 [][2]string
61-
UsersMd5 [][2]string
62-
UsersSha1 [][2]string
63-
UsersSha256 [][2]string
64-
UsersSha512 [][2]string
65-
UserMatchCase bool
59+
UsersPlain [][2]string
60+
UsersBase64 [][2]string
61+
UsersMd5 [][2]string
62+
UsersSha1 [][2]string
63+
UsersSha256 [][2]string
64+
UsersSha512 [][2]string
6665

6766
Certificates []tls.Certificate
6867
Listens []string

src/serverHandler/vhostHandler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func NewVhostHandler(
3838
theme theme.Theme,
3939
) (handler http.Handler, errs []error) {
4040
// users
41-
users := user.NewList(p.UserMatchCase)
41+
users := user.NewList()
4242
for _, u := range p.UsersPlain {
4343
errs = serverError.AppendError(errs, users.AddPlain(u[0], u[1]))
4444
}

src/user/list.go

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@ package user
22

33
import (
44
"errors"
5-
"mjpclab.dev/ghfs/src/util"
5+
"strings"
66
)
77

88
type List struct {
9-
users []user
10-
namesEqualFunc util.StrEqualFunc
9+
users []user
1110
}
1211

1312
func (list *List) Len() int {
@@ -16,7 +15,7 @@ func (list *List) Len() int {
1615

1716
func (list *List) FindIndex(username string) int {
1817
for i := range list.users {
19-
if list.namesEqualFunc(list.users[i].getName(), username) {
18+
if strings.EqualFold(list.users[i].getName(), username) {
2019
return i
2120
}
2221
}
@@ -95,12 +94,6 @@ func (list *List) Auth(username, password string) bool {
9594
return list.users[index].auth(password)
9695
}
9796

98-
func NewList(nameCaseSensitive bool) *List {
99-
var namesEqualFunc util.StrEqualFunc
100-
if nameCaseSensitive {
101-
namesEqualFunc = util.IsStrEqualAccurate
102-
} else {
103-
namesEqualFunc = util.IsStrEqualNoCase
104-
}
105-
return &List{namesEqualFunc: namesEqualFunc}
97+
func NewList() *List {
98+
return &List{}
10699
}

src/user/list_test.go

Lines changed: 25 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -4,168 +4,84 @@ import (
44
"testing"
55
)
66

7-
var listAccurate *List
8-
var listNoCase *List
9-
10-
func init() {
11-
listAccurate = NewList(true)
12-
listNoCase = NewList(false)
13-
}
7+
var list = NewList()
148

159
func TestUserPlain(t *testing.T) {
16-
// accurate
17-
listAccurate.AddPlain("plain_user", "123")
18-
if !listAccurate.Auth("plain_user", "123") {
19-
t.Error()
20-
}
21-
if listAccurate.Auth("Plain_user", "123") {
10+
list.AddPlain("plain_user", "123")
11+
if !list.Auth("plain_user", "123") {
2212
t.Error()
2313
}
24-
if listAccurate.Auth("plain_user", "12") {
14+
if !list.Auth("Plain_User", "123") {
2515
t.Error()
2616
}
27-
28-
// no case
29-
listNoCase.AddPlain("plain_user", "123")
30-
if !listNoCase.Auth("plain_user", "123") {
31-
t.Error()
32-
}
33-
if !listNoCase.Auth("Plain_User", "123") {
34-
t.Error()
35-
}
36-
if listNoCase.Auth("plain_user", "12") {
17+
if list.Auth("plain_user", "12") {
3718
t.Error()
3819
}
3920
}
4021

4122
func TestUserBase64(t *testing.T) {
42-
// accurate
43-
listAccurate.AddBase64("base64_user", "MjM0")
44-
if !listAccurate.Auth("base64_user", "234") {
45-
t.Error()
46-
}
47-
if listAccurate.Auth("Base64_user", "234") {
23+
list.AddBase64("base64_user", "MjM0")
24+
if !list.Auth("base64_user", "234") {
4825
t.Error()
4926
}
50-
if listAccurate.Auth("base64_user", "23") {
27+
if !list.Auth("Base64_user", "234") {
5128
t.Error()
5229
}
53-
54-
// no case
55-
listNoCase.AddBase64("base64_user", "MjM0")
56-
if !listNoCase.Auth("base64_user", "234") {
57-
t.Error()
58-
}
59-
if !listNoCase.Auth("Base64_user", "234") {
60-
t.Error()
61-
}
62-
if listNoCase.Auth("base64_user", "23") {
30+
if list.Auth("base64_user", "23") {
6331
t.Error()
6432
}
6533

6634
}
6735

6836
func TestUserMd5(t *testing.T) {
69-
// accurate
70-
listAccurate.AddMd5("md5_user", "d81f9c1be2e08964bf9f24b15f0e4900")
71-
if !listAccurate.Auth("md5_user", "345") {
72-
t.Error()
73-
}
74-
if listAccurate.Auth("Md5_user", "345") {
75-
t.Error()
76-
}
77-
if listAccurate.Auth("md5_user", "34") {
78-
t.Error()
79-
}
80-
81-
// no case
82-
listNoCase.AddMd5("md5_user", "d81f9c1be2e08964bf9f24b15f0e4900")
83-
if !listNoCase.Auth("md5_user", "345") {
37+
list.AddMd5("md5_user", "d81f9c1be2e08964bf9f24b15f0e4900")
38+
if !list.Auth("md5_user", "345") {
8439
t.Error()
8540
}
86-
if !listNoCase.Auth("Md5_user", "345") {
41+
if !list.Auth("Md5_user", "345") {
8742
t.Error()
8843
}
89-
if listNoCase.Auth("md5_user", "34") {
44+
if list.Auth("md5_user", "34") {
9045
t.Error()
9146
}
9247

9348
}
9449

9550
func TestUserSha1(t *testing.T) {
96-
// accurate
97-
listAccurate.AddSha1("sha1_user", "51eac6b471a284d3341d8c0c63d0f1a286262a18")
98-
if !listAccurate.Auth("sha1_user", "456") {
99-
t.Error()
100-
}
101-
if listAccurate.Auth("Sha1_user", "456") {
51+
list.AddSha1("sha1_user", "51eac6b471a284d3341d8c0c63d0f1a286262a18")
52+
if !list.Auth("sha1_user", "456") {
10253
t.Error()
10354
}
104-
if listAccurate.Auth("sha1_user", "45") {
105-
t.Error()
106-
}
107-
108-
// no case
109-
listNoCase.AddSha1("sha1_user", "51eac6b471a284d3341d8c0c63d0f1a286262a18")
110-
if !listNoCase.Auth("sha1_user", "456") {
55+
if !list.Auth("Sha1_user", "456") {
11156
t.Error()
11257
}
113-
if !listNoCase.Auth("Sha1_user", "456") {
114-
t.Error()
115-
}
116-
if listNoCase.Auth("sha1_user", "45") {
58+
if list.Auth("sha1_user", "45") {
11759
t.Error()
11860
}
11961
}
12062

12163
func TestUserSha256(t *testing.T) {
122-
// accurate
123-
listAccurate.AddSha256("sha256_user", "97a6d21df7c51e8289ac1a8c026aaac143e15aa1957f54f42e30d8f8a85c3a55")
124-
if !listAccurate.Auth("sha256_user", "567") {
125-
t.Error()
126-
}
127-
if listAccurate.Auth("Sha256_user", "567") {
128-
t.Error()
129-
}
130-
if listAccurate.Auth("sha256_user", "56") {
131-
t.Error()
132-
}
133-
134-
// no case
135-
listNoCase.AddSha256("sha256_user", "97a6d21df7c51e8289ac1a8c026aaac143e15aa1957f54f42e30d8f8a85c3a55")
136-
if !listNoCase.Auth("sha256_user", "567") {
64+
list.AddSha256("sha256_user", "97a6d21df7c51e8289ac1a8c026aaac143e15aa1957f54f42e30d8f8a85c3a55")
65+
if !list.Auth("sha256_user", "567") {
13766
t.Error()
13867
}
139-
if !listNoCase.Auth("Sha256_user", "567") {
68+
if !list.Auth("Sha256_user", "567") {
14069
t.Error()
14170
}
142-
if listNoCase.Auth("sha256_user", "56") {
71+
if list.Auth("sha256_user", "56") {
14372
t.Error()
14473
}
14574
}
14675

14776
func TestUserSha512(t *testing.T) {
148-
// accurate
149-
listAccurate.AddSha512("sha512_user", "c7d57e5c0b0792b154d573089792d80f5b64d2bc0cf4d7d1f551a9e4a4966e925d06b253cc9662c01df76623fdfecb812a2a0604119cb1ac37c47e8027e94cb5")
150-
if !listAccurate.Auth("sha512_user", "678") {
151-
t.Error()
152-
}
153-
if listAccurate.Auth("Sha512_user", "678") {
154-
t.Error()
155-
}
156-
if listAccurate.Auth("sha512_user", "67") {
157-
t.Error()
158-
}
159-
160-
// no case
161-
listNoCase.AddSha512("sha512_user", "c7d57e5c0b0792b154d573089792d80f5b64d2bc0cf4d7d1f551a9e4a4966e925d06b253cc9662c01df76623fdfecb812a2a0604119cb1ac37c47e8027e94cb5")
162-
if !listNoCase.Auth("sha512_user", "678") {
77+
list.AddSha512("sha512_user", "c7d57e5c0b0792b154d573089792d80f5b64d2bc0cf4d7d1f551a9e4a4966e925d06b253cc9662c01df76623fdfecb812a2a0604119cb1ac37c47e8027e94cb5")
78+
if !list.Auth("sha512_user", "678") {
16379
t.Error()
16480
}
165-
if !listNoCase.Auth("Sha512_user", "678") {
81+
if !list.Auth("Sha512_user", "678") {
16682
t.Error()
16783
}
168-
if listNoCase.Auth("sha512_user", "67") {
84+
if list.Auth("sha512_user", "67") {
16985
t.Error()
17086
}
17187
}

0 commit comments

Comments
 (0)