Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit e360776

Browse files
committed
db4s, common: Add a basic system for banning users
1 parent 7b1a6e6 commit e360776

File tree

5 files changed

+35
-17
lines changed

5 files changed

+35
-17
lines changed

api/handlers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1223,7 +1223,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
12231223

12241224
// Set the maximum accepted database size for uploading
12251225
oversizeAllowed := false
1226-
for _, user := range com.Conf.Environment.SizeOverrideUsers {
1226+
for _, user := range com.Conf.UserMgmt.SizeOverrideUsers {
12271227
if loggedInUser == user {
12281228
oversizeAllowed = true
12291229
}

common/config_types.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type TomlConfig struct {
1717
MQ MQInfo
1818
Pg PGInfo
1919
Sign SigningInfo
20+
UserMgmt UserMgmtInfo
2021
Web WebInfo
2122
}
2223

@@ -55,9 +56,8 @@ type DiskCacheInfo struct {
5556
// EnvInfo holds information about the purpose of the running server. eg "is this a production, docker,
5657
// or development" instance?
5758
type EnvInfo struct {
58-
Environment string
59-
UserOverride string `toml:"user_override"`
60-
SizeOverrideUsers []string `toml:"size_override_users"` // List of users allowed to override the database upload size limits
59+
Environment string
60+
UserOverride string `toml:"user_override"`
6161
}
6262

6363
// EventProcessingInfo hold configuration for the event processing loop
@@ -122,6 +122,12 @@ type SigningInfo struct {
122122
IntermediateKey string `toml:"intermediate_key"`
123123
}
124124

125+
// UserMgmtInfo contains the various settings for specific users, or groups of users
126+
type UserMgmtInfo struct {
127+
BannedUsers []string `toml:"banned_users"` // List of users banned from the service
128+
SizeOverrideUsers []string `toml:"size_override_users"` // List of users allowed to override the database upload size limits
129+
}
130+
125131
// WebInfo contains configuration info for the webUI daemon
126132
type WebInfo struct {
127133
BaseDir string `toml:"base_dir"`

db4s/main.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,15 @@ func extractUserAndServer(w http.ResponseWriter, r *http.Request) (userAcc strin
200200
return
201201
}
202202

203+
// If the user has been banned, reject their authentication
204+
for _, u := range com.Conf.UserMgmt.BannedUsers {
205+
if u == userAcc {
206+
log.Printf("Banned user '%s' attempted to connect using DB4S", userAcc)
207+
err = errors.New("User has been banned. Get in contact with us if you want the ban removed.")
208+
return
209+
}
210+
}
211+
203212
// Everything is ok, so return
204213
return
205214
}
@@ -785,7 +794,7 @@ func metadataGetHandler(w http.ResponseWriter, r *http.Request) {
785794
func postHandler(w http.ResponseWriter, r *http.Request, userAcc string) {
786795
// Set the maximum accepted database size for uploading
787796
oversizeAllowed := false
788-
for _, user := range com.Conf.Environment.SizeOverrideUsers {
797+
for _, user := range com.Conf.UserMgmt.SizeOverrideUsers {
789798
if userAcc == user {
790799
oversizeAllowed = true
791800
}

docker/config.toml

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
[api]
2+
base_dir = "/dbhub.io"
3+
bind_address = ":9444"
4+
server_name = "docker-dev.dbhub.io:9444"
5+
certificate = "/dbhub.io/docker/certs/docker-dev.dbhub.io.cert.pem"
6+
certificate_key = "/dbhub.io/docker/certs/docker-dev.dbhub.io.key.pem"
7+
request_log = "/var/log/dbhub/api_request.log"
8+
session_store_password = "example2"
9+
website_name = "DBHub.io"
10+
111
[db4s]
212
server = "docker-dev.dbhub.io"
313
port = 5550
@@ -11,7 +21,6 @@ directory = "/home/dbhub/.dbhub/disk_cache"
1121
[environment]
1222
environment = "test"
1323
user_override = "default"
14-
size_override_users = ["default"]
1524

1625
[event]
1726
delay = 2
@@ -57,6 +66,10 @@ cert_days_valid = 365
5766
intermediate_cert = "/dbhub.io/docker/certs/intermediate-docker.cert.pem"
5867
intermediate_key = "/dbhub.io/docker/certs/intermediate-docker.key.pem"
5968

69+
[usermgmt]
70+
banned_users = [""]
71+
size_override_users = ["default"]
72+
6073
[web]
6174
base_dir = "/dbhub.io"
6275
bind_address = ":9443"
@@ -65,13 +78,3 @@ certificate = "/dbhub.io/docker/certs/docker-dev.dbhub.io.cert.pem"
6578
certificate_key = "/dbhub.io/docker/certs/docker-dev.dbhub.io.key.pem"
6679
request_log = "/var/log/dbhub/request.log"
6780
session_store_password = "example"
68-
69-
[api]
70-
base_dir = "/dbhub.io"
71-
bind_address = ":9444"
72-
server_name = "docker-dev.dbhub.io:9444"
73-
certificate = "/dbhub.io/docker/certs/docker-dev.dbhub.io.cert.pem"
74-
certificate_key = "/dbhub.io/docker/certs/docker-dev.dbhub.io.key.pem"
75-
request_log = "/var/log/dbhub/api_request.log"
76-
session_store_password = "example2"
77-
website_name = "DBHub.io"

webui/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5192,7 +5192,7 @@ func uploadDataHandler(w http.ResponseWriter, r *http.Request) {
51925192

51935193
// Set the maximum accepted database size for uploading
51945194
oversizeAllowed := false
5195-
for _, user := range com.Conf.Environment.SizeOverrideUsers {
5195+
for _, user := range com.Conf.UserMgmt.SizeOverrideUsers {
51965196
if loggedInUser == user {
51975197
oversizeAllowed = true
51985198
}

0 commit comments

Comments
 (0)