Skip to content

Commit

Permalink
add tls
Browse files Browse the repository at this point in the history
  • Loading branch information
alireza0 committed Jun 6, 2024
1 parent f136229 commit c994f4b
Show file tree
Hide file tree
Showing 26 changed files with 1,335 additions and 81 deletions.
9 changes: 7 additions & 2 deletions backend/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ type APIHandler struct {
service.UserService
service.ConfigService
service.ClientService
service.TlsService
service.PanelService
service.StatsService
service.ServerService
Expand Down Expand Up @@ -159,7 +160,7 @@ func (a *APIHandler) getHandler(c *gin.Context) {
func (a *APIHandler) loadData(c *gin.Context) (string, error) {
var data string
lu := c.Query("lu")
isUpdated, err := a.ConfigService.CheckChnages(lu)
isUpdated, err := a.ConfigService.CheckChanges(lu)
if err != nil {
return "", err
}
Expand All @@ -176,11 +177,15 @@ func (a *APIHandler) loadData(c *gin.Context) (string, error) {
if err != nil {
return "", err
}
tlsConfigs, err := a.TlsService.GetAll()
if err != nil {
return "", err
}
subURI, err := a.SettingService.GetFinalSubURI(strings.Split(c.Request.Host, ":")[0])
if err != nil {
return "", err
}
data = fmt.Sprintf(`{"config": %s,"clients": %s,"subURI": "%s", "onlines": %s}`, string(*config), clients, subURI, onlines)
data = fmt.Sprintf(`{"config": %s, "clients": %s, "tls": %s, "subURI": "%s", "onlines": %s}`, string(*config), clients, tlsConfigs, subURI, onlines)
} else {
data = fmt.Sprintf(`{"onlines": %s}`, onlines)
}
Expand Down
1 change: 1 addition & 0 deletions backend/database/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ func InitDB(dbPath string) error {

err = db.AutoMigrate(
&model.Setting{},
&model.Tls{},
&model.User{},
&model.Stats{},
&model.Client{},
Expand Down
8 changes: 8 additions & 0 deletions backend/database/model/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@ type Setting struct {
Value string `json:"value" form:"value"`
}

type Tls struct {
Id uint `json:"id" form:"id" gorm:"primaryKey;autoIncrement"`
Name string `json:"name" form:"name"`
Inbounds json.RawMessage `json:"inbounds" form:"inbounds"`
Server json.RawMessage `json:"server" form:"server"`
Client json.RawMessage `json:"client" form:"client"`
}

type User struct {
Id uint `json:"id" form:"id" gorm:"primaryKey;autoIncrement"`
Username string `json:"username" form:"username"`
Expand Down
17 changes: 15 additions & 2 deletions backend/service/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ var LastUpdate int64

type ConfigService struct {
ClientService
TlsService
singbox.Controller
SettingService
}
Expand Down Expand Up @@ -67,13 +68,19 @@ func (s *ConfigService) GetConfig() (*[]byte, error) {

func (s *ConfigService) SaveChanges(changes map[string]string, loginUser string) error {
var err error
var clientChanges, settingChanges, configChanges []model.Changes
var clientChanges, tlsChanges, settingChanges, configChanges []model.Changes
if _, ok := changes["clients"]; ok {
err = json.Unmarshal([]byte(changes["clients"]), &clientChanges)
if err != nil {
return err
}
}
if _, ok := changes["tls"]; ok {
err = json.Unmarshal([]byte(changes["tls"]), &tlsChanges)
if err != nil {
return err
}
}
if _, ok := changes["settings"]; ok {
err = json.Unmarshal([]byte(changes["settings"]), &settingChanges)
if err != nil {
Expand Down Expand Up @@ -103,6 +110,12 @@ func (s *ConfigService) SaveChanges(changes map[string]string, loginUser string)
return err
}
}
if len(tlsChanges) > 0 {
err = s.TlsService.Save(tx, tlsChanges)
if err != nil {
return err
}
}
if len(settingChanges) > 0 {
err = s.SettingService.Save(tx, settingChanges)
if err != nil {
Expand Down Expand Up @@ -169,7 +182,7 @@ func (s *ConfigService) SaveChanges(changes map[string]string, loginUser string)

// Log changes
dt := time.Now().Unix()
allChanges := append(append(clientChanges, settingChanges...), configChanges...)
allChanges := append(append(clientChanges, settingChanges...), append(configChanges, tlsChanges...)...)
for index := range allChanges {
allChanges[index].DateTime = dt
allChanges[index].Actor = loginUser
Expand Down
49 changes: 49 additions & 0 deletions backend/service/tls.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package service

import (
"encoding/json"
"s-ui/database"
"s-ui/database/model"

"gorm.io/gorm"
)

type TlsService struct {
}

func (s *TlsService) GetAll() (string, error) {
db := database.GetDB()
tlsConfig := []model.Tls{}
err := db.Model(model.Tls{}).Scan(&tlsConfig).Error
if err != nil {
return "", err
}
data, err := json.Marshal(tlsConfig)
if err != nil {
return "", err
}
return string(data), nil
}

func (s *TlsService) Save(tx *gorm.DB, changes []model.Changes) error {
var err error
for _, change := range changes {
tlsConfig := model.Tls{}
err = json.Unmarshal(change.Obj, &tlsConfig)
if err != nil {
return err
}
switch change.Action {
case "new":
err = tx.Create(&tlsConfig).Error
case "del":
err = tx.Where("id = ?", change.Index).Delete(model.Tls{}).Error
default:
err = tx.Save(tlsConfig).Error
}
if err != nil {
return err
}
}
return err
}
Loading

0 comments on commit c994f4b

Please sign in to comment.