Добавил изменения конфига

This commit is contained in:
B4D_US3R 2025-05-05 15:40:58 +05:00
parent b6866f8540
commit 4c2f052d70
5 changed files with 223 additions and 62 deletions

View file

@ -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
}