mirror of
https://github.com/boringproxy/boringproxy.git
synced 2025-02-25 18:55:29 -06:00
Merge branch 'master' into implement-waygate
This commit is contained in:
commit
da4b2d1035
10
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Please report bugs over at https://forum.indiebits.io/c/boringproxy/9
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Please report bugs over at https://forum.indiebits.io/c/boringproxy/9
|
10
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Please request features over at https://forum.indiebits.io/c/boringproxy/9
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Please request features over at https://forum.indiebits.io/c/boringproxy/9
|
41
api.go
41
api.go
@ -154,11 +154,14 @@ func (a *Api) handleUsers(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
if tokenData.Client != "" {
|
||||
w.WriteHeader(403)
|
||||
io.WriteString(w, "Token cannot be used to create users")
|
||||
io.WriteString(w, "Token cannot be used to manage users")
|
||||
return
|
||||
}
|
||||
|
||||
switch r.Method {
|
||||
case "GET":
|
||||
users := a.GetUsers(tokenData, r.Form)
|
||||
json.NewEncoder(w).Encode(users)
|
||||
case "POST":
|
||||
err := a.CreateUser(tokenData, r.Form)
|
||||
if err != nil {
|
||||
@ -195,6 +198,9 @@ func (a *Api) handleTokens(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
switch r.Method {
|
||||
case "GET":
|
||||
tokens := a.GetTokens(tokenData, r.Form)
|
||||
json.NewEncoder(w).Encode(tokens)
|
||||
case "POST":
|
||||
r.ParseForm()
|
||||
token, err := a.CreateToken(tokenData, r.Form)
|
||||
@ -206,7 +212,7 @@ func (a *Api) handleTokens(w http.ResponseWriter, r *http.Request) {
|
||||
io.WriteString(w, token)
|
||||
default:
|
||||
w.WriteHeader(405)
|
||||
w.Write([]byte(err.Error()))
|
||||
fmt.Fprintf(w, "Invalid method for /api/tokens")
|
||||
}
|
||||
}
|
||||
|
||||
@ -266,7 +272,7 @@ func (a *Api) handleClients(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
default:
|
||||
w.WriteHeader(405)
|
||||
w.Write([]byte(err.Error()))
|
||||
fmt.Fprintf(w, "Invalid method for /api/clients")
|
||||
}
|
||||
}
|
||||
|
||||
@ -498,6 +504,35 @@ func (a *Api) DeleteToken(tokenData TokenData, params url.Values) error {
|
||||
|
||||
}
|
||||
|
||||
func (a *Api) GetTokens(tokenData TokenData, params url.Values) map[string]TokenData {
|
||||
|
||||
tokens := a.db.GetTokens()
|
||||
|
||||
user, _ := a.db.GetUser(tokenData.Owner)
|
||||
|
||||
for key, tok := range tokens {
|
||||
if !user.IsAdmin && tok.Owner != tokenData.Owner {
|
||||
delete(tokens, key)
|
||||
}
|
||||
}
|
||||
|
||||
return tokens
|
||||
}
|
||||
|
||||
func (a *Api) GetUsers(tokenData TokenData, params url.Values) map[string]User {
|
||||
|
||||
user, _ := a.db.GetUser(tokenData.Owner)
|
||||
users := a.db.GetUsers()
|
||||
|
||||
if user.IsAdmin {
|
||||
return users
|
||||
} else {
|
||||
return map[string]User{
|
||||
tokenData.Owner: user,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (a *Api) CreateUser(tokenData TokenData, params url.Values) error {
|
||||
|
||||
user, _ := a.db.GetUser(tokenData.Owner)
|
||||
|
Loading…
Reference in New Issue
Block a user