test
This commit is contained in:
107
app/routes.go
107
app/routes.go
@@ -1,12 +1,17 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
)
|
||||
|
||||
type AddUserReq struct {
|
||||
@@ -31,22 +36,8 @@ func AddUser(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
provider, err := LoadProvider()
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
return
|
||||
}
|
||||
err = provider.AddUser(req.Username, req.Password)
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
return
|
||||
}
|
||||
err = provider.Save()
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
}
|
||||
|
||||
user, err := provider.GetUser(req.Password)
|
||||
rep := NewUserRepository(db)
|
||||
user, err := rep.AddUser(req.Username, req.Password)
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
return
|
||||
@@ -69,17 +60,8 @@ func DeleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
provider, err := LoadProvider()
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
return
|
||||
}
|
||||
err = provider.DeleteUser(req.ID)
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
return
|
||||
}
|
||||
err = provider.Save()
|
||||
rep := NewUserRepository(db)
|
||||
err = rep.DeleteUser(req.ID)
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
return
|
||||
@@ -94,12 +76,13 @@ func AllUsers(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
provider, err := LoadProvider()
|
||||
rep := NewUserRepository(db)
|
||||
users, err := rep.GetUsers()
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
return
|
||||
}
|
||||
WriteResponse(w, provider)
|
||||
WriteResponse(w, users)
|
||||
}
|
||||
|
||||
type GetConnectURLReq struct {
|
||||
@@ -114,25 +97,58 @@ func GetUserURL(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
provider, err := LoadProvider()
|
||||
rep := NewUserRepository(db)
|
||||
user, err := rep.GetById(req.ID)
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
return
|
||||
}
|
||||
user, err := provider.GetById(req.ID)
|
||||
//if user.Password != req.Pass {
|
||||
// WriteError(w, errors.New("invalid password"))
|
||||
// return
|
||||
//}
|
||||
|
||||
urlTemplate := "hysteria2://%s@%s%s?obfs=salamander&obfs-password=%s&type=hysteria&mport&security=tls&sni=%s&alpn=h3&fp=chrome&allowInsecure=0#%s"
|
||||
authString := encodeURL(user)
|
||||
u := fmt.Sprintf(
|
||||
urlTemplate,
|
||||
authString,
|
||||
cfg.Host,
|
||||
hysteriaCfg.Listen,
|
||||
hysteriaCfg.Obfs.Salamander.Password,
|
||||
cfg.SNI,
|
||||
formatConfigName(cfg.NameFormat, user),
|
||||
)
|
||||
WriteResponse(w, u)
|
||||
}
|
||||
|
||||
func Sub(w http.ResponseWriter, r *http.Request) {
|
||||
idS := chi.URLParam(r, "id")
|
||||
id, err := strconv.Atoi(idS)
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
return
|
||||
}
|
||||
if user.Password != req.Pass {
|
||||
WriteError(w, errors.New("invalid password"))
|
||||
return
|
||||
}
|
||||
|
||||
urlTemplate := "hysteria2://%s@%s:%s?obfs=salamander&obfs-password=%s&type=hysteria&mport&security=tls&sni=%s&alpn=h3&fp=chrome&allowInsecure=0#%s"
|
||||
rep := NewUserRepository(db)
|
||||
user, err := rep.GetById(id)
|
||||
if err != nil {
|
||||
WriteError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
urlTemplate := "hysteria2://%s@%s%s?obfs=salamander&obfs-password=%s&type=hysteria&mport&security=tls&sni=%s&alpn=h3&fp=chrome&allowInsecure=0#%s"
|
||||
authString := encodeURL(user)
|
||||
u := fmt.Sprintf(urlTemplate, authString, cfg.Host, cfg.Port, cfg.ObfsPassword, cfg.SNI, formatConfigName(cfg.NameFormat, user))
|
||||
WriteResponse(w, u)
|
||||
u := fmt.Sprintf(
|
||||
urlTemplate,
|
||||
authString,
|
||||
cfg.Host,
|
||||
hysteriaCfg.Listen,
|
||||
hysteriaCfg.Obfs.Salamander.Password,
|
||||
cfg.SNI,
|
||||
formatConfigName(cfg.NameFormat, user),
|
||||
)
|
||||
w.Write([]byte(base64.StdEncoding.EncodeToString([]byte(u))))
|
||||
}
|
||||
|
||||
type AuthReq struct {
|
||||
@@ -154,7 +170,7 @@ func DoAuth(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
req := new(AuthReq)
|
||||
if err := json.Unmarshal(data, req); err != nil {
|
||||
if err = json.Unmarshal(data, req); err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
log.Println(err)
|
||||
return
|
||||
@@ -164,20 +180,21 @@ func DoAuth(w http.ResponseWriter, r *http.Request) {
|
||||
reqUser, err := decodeURL(req.Auth)
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
provider, err := LoadProvider()
|
||||
rep := NewUserRepository(db)
|
||||
user, err := rep.GetById(reqUser.ID)
|
||||
if err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
w.WriteHeader(http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
log.Println(err)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
user, err := provider.GetUser(reqUser.Password)
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
res := &AuthRsp{true, user.Username}
|
||||
err = json.NewEncoder(w).Encode(res)
|
||||
|
||||
Reference in New Issue
Block a user