Добавил изменения конфига
This commit is contained in:
parent
b6866f8540
commit
4c2f052d70
5 changed files with 223 additions and 62 deletions
|
|
@ -1,19 +1,20 @@
|
|||
package users
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"errors"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type VLESSUsers []struct {
|
||||
type User struct {
|
||||
Name string `json:"name"`
|
||||
UUID uuid.UUID `json:"uuid"`
|
||||
}
|
||||
|
||||
type VLESSUsers []User
|
||||
|
||||
func (u VLESSUsers) Del(user string) VLESSUsers {
|
||||
var newU VLESSUsers
|
||||
var newU VLESSUsers = make(VLESSUsers, 0, len(u))
|
||||
for _, v := range u {
|
||||
if v.Name != user {
|
||||
newU = append(newU, v)
|
||||
|
|
@ -22,52 +23,28 @@ func (u VLESSUsers) Del(user string) VLESSUsers {
|
|||
return newU
|
||||
}
|
||||
|
||||
func (u VLESSUsers) Add(user string) VLESSUsers {
|
||||
var userStruct struct {
|
||||
Name string
|
||||
UUID uuid.UUID
|
||||
func (u VLESSUsers) checkInConfig(userName string) bool {
|
||||
for _, v := range u {
|
||||
if v.Name == userName {
|
||||
return true
|
||||
}
|
||||
}
|
||||
userStruct.Name = user
|
||||
randUUID, err := uuid.NewUUID()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
userStruct.UUID = randUUID
|
||||
|
||||
newU := append(u, struct {
|
||||
Name string "json:\"name\""
|
||||
UUID uuid.UUID "json:\"uuid\""
|
||||
}(userStruct))
|
||||
return newU
|
||||
return false
|
||||
}
|
||||
|
||||
func MapToStruct(toStructMap map[string]interface{}) VLESSUsers {
|
||||
var vlessUsers VLESSUsers
|
||||
usedMap := toStructMap["inbounds"].([]interface{})[0].(map[string]interface{})["users"].([]interface{})
|
||||
for _, curretMap := range usedMap {
|
||||
userMap := curretMap.(map[string]interface{})
|
||||
vlessUsers = append(vlessUsers, struct {
|
||||
Name string "json:\"name\""
|
||||
UUID uuid.UUID "json:\"uuid\""
|
||||
}{
|
||||
Name: userMap["name"].(string),
|
||||
UUID: uuid.MustParse(userMap["uuid"].(string)),
|
||||
})
|
||||
}
|
||||
return vlessUsers
|
||||
}
|
||||
func (u VLESSUsers) Add(userName string) (VLESSUsers, error) {
|
||||
|
||||
func StructToConfig(vlessUsers VLESSUsers, configMap map[string]interface{}) (map[string]interface{}, error) {
|
||||
var toInterface []map[string]interface{}
|
||||
newConfigMap := configMap
|
||||
structJson, err := json.Marshal(vlessUsers)
|
||||
if err != nil {
|
||||
return map[string]interface{}{}, err
|
||||
if u.checkInConfig(userName) {
|
||||
return nil, errors.New("пользователь уже добавлен в конфиг")
|
||||
}
|
||||
err = json.Unmarshal(structJson, &toInterface)
|
||||
|
||||
newUUID, err := uuid.NewRandom()
|
||||
if err != nil {
|
||||
return map[string]interface{}{}, err
|
||||
return nil, err
|
||||
}
|
||||
newConfigMap["inbounds"].([]interface{})[0].(map[string]interface{})["users"] = toInterface
|
||||
return newConfigMap, nil
|
||||
newUser := User{
|
||||
Name: userName,
|
||||
UUID: newUUID,
|
||||
}
|
||||
return append(u, newUser), nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue