From 94b95beadff3afbaa203fec7351fb7f61493b28e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Mon, 18 Sep 2023 16:09:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E5=85=A8=E5=B1=80=E7=9A=84=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E8=AE=BE=E7=BD=AE--=E5=9F=9F=E5=90=8D=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E8=AE=BE=E7=BD=AE=E7=A7=BB=E5=88=B0=E2=80=9C=E9=9B=86?= =?UTF-8?q?=E7=BE=A4=E8=AE=BE=E7=BD=AE--=E7=BD=91=E7=AB=99=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E2=80=9D=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/rpc/services/service_server.go | 76 ++++++++++++++++++++----- internal/setup/sql_upgrade.go | 61 ++++++++++++++++++++ internal/setup/sql_upgrade_test.go | 19 +++++++ 3 files changed, 143 insertions(+), 13 deletions(-) diff --git a/internal/rpc/services/service_server.go b/internal/rpc/services/service_server.go index 623e3433..a3d4a808 100644 --- a/internal/rpc/services/service_server.go +++ b/internal/rpc/services/service_server.go @@ -118,12 +118,12 @@ func (this *ServerService) CreateServer(ctx context.Context, req *pb.CreateServe var auditingServerNamesJSON = []byte("[]") if userId > 0 { // 如果域名不为空的时候需要审核 - if len(serverNamesJSON) > 0 && string(serverNamesJSON) != "[]" { - globalConfig, err := models.SharedSysSettingDAO.ReadGlobalConfig(tx) + if len(serverNamesJSON) > 0 && string(serverNamesJSON) != "[]" && req.NodeClusterId > 0 { + globalServerConfig, err := models.SharedNodeClusterDAO.FindClusterGlobalServerConfig(tx, req.NodeClusterId) if err != nil { return nil, err } - if globalConfig != nil && globalConfig.HTTPAll.DomainAuditingIsOn { + if globalServerConfig != nil && globalServerConfig.HTTPAll.DomainAuditingIsOn { isAuditing = true serverNamesJSON = []byte("[]") auditingServerNamesJSON = req.ServerNamesJSON @@ -259,11 +259,12 @@ func (this *ServerService) CreateBasicHTTPServer(ctx context.Context, req *pb.Cr if userId > 0 { // 如果域名不为空的时候需要审核 if len(serverNamesJSON) > 0 && string(serverNamesJSON) != "[]" { - globalConfig, err := models.SharedSysSettingDAO.ReadGlobalConfig(tx) + globalServerConfig, err := models.SharedNodeClusterDAO.FindClusterGlobalServerConfig(tx, req.NodeClusterId) if err != nil { return nil, err } - if globalConfig != nil && globalConfig.HTTPAll.DomainAuditingIsOn { + + if globalServerConfig != nil && globalServerConfig.HTTPAll.DomainAuditingIsOn { isAuditing = true serverNamesJSON = []byte("[]") auditingServerNamesJSON = serverNamesJSON @@ -1091,22 +1092,31 @@ func (this *ServerService) UpdateServerNames(ctx context.Context, req *pb.Update } // 是否需要审核 - globalConfig, err := models.SharedSysSettingDAO.ReadGlobalConfig(tx) + clusterId, err := models.SharedServerDAO.FindServerClusterId(tx, req.ServerId) if err != nil { return nil, err } - if globalConfig != nil && globalConfig.HTTPAll.DomainAuditingIsOn { - err = models.SharedServerDAO.UpdateAuditingServerNames(tx, req.ServerId, true, req.ServerNamesJSON) + if clusterId > 0 { + globalServerConfig, err := models.SharedNodeClusterDAO.FindClusterGlobalServerConfig(tx, clusterId) if err != nil { return nil, err } + if globalServerConfig != nil && globalServerConfig.HTTPAll.DomainAuditingIsOn { + err = models.SharedServerDAO.UpdateAuditingServerNames(tx, req.ServerId, true, req.ServerNamesJSON) + if err != nil { + return nil, err + } - // 发送审核通知 - err = models.SharedMessageDAO.CreateMessage(tx, 0, 0, models.MessageTypeServerNamesRequireAuditing, models.MessageLevelWarning, "有新的网站域名需要审核", "有新的网站域名需要审核", maps.Map{ - "serverId": req.ServerId, - }.AsJSON()) + // 发送审核通知 + err = models.SharedMessageDAO.CreateMessage(tx, 0, 0, models.MessageTypeServerNamesRequireAuditing, models.MessageLevelWarning, "有新的网站域名需要审核", "有新的网站域名需要审核", maps.Map{ + "serverId": req.ServerId, + }.AsJSON()) + if err != nil { + return nil, err + } - return this.Success() + return this.Success() + } } } @@ -3043,3 +3053,43 @@ func (this *ServerService) CopyServerConfig(ctx context.Context, req *pb.CopySer return this.Success() } + +// FindServerAuditingPrompt 获取域名审核时的提示文字 +func (this *ServerService) FindServerAuditingPrompt(ctx context.Context, req *pb.FindServerAuditingPromptRequest) (*pb.FindServerAuditingPromptResponse, error) { + _, userId, err := this.ValidateAdminAndUser(ctx, true) + if err != nil { + return nil, err + } + + var tx = this.NullTx() + if userId > 0 { + err = models.SharedServerDAO.CheckUserServer(tx, userId, req.ServerId) + if err != nil { + return nil, err + } + } + + clusterId, err := models.SharedServerDAO.FindServerClusterId(tx, req.ServerId) + if err != nil { + return nil, err + } + if clusterId <= 0 { + return &pb.FindServerAuditingPromptResponse{ + PromptText: "", + }, nil + } + + globalServerConfig, err := models.SharedNodeClusterDAO.FindClusterGlobalServerConfig(tx, clusterId) + if err != nil { + return nil, err + } + if globalServerConfig != nil { + return &pb.FindServerAuditingPromptResponse{ + PromptText: globalServerConfig.HTTPAll.DomainAuditingPrompt, + }, nil + } + + return &pb.FindServerAuditingPromptResponse{ + PromptText: "", + }, nil +} diff --git a/internal/setup/sql_upgrade.go b/internal/setup/sql_upgrade.go index 247dd2c1..e4ae516a 100644 --- a/internal/setup/sql_upgrade.go +++ b/internal/setup/sql_upgrade.go @@ -98,6 +98,9 @@ var upgradeFuncs = []*upgradeVersion{ { "1.2.9", upgradeV1_2_9, }, + { + "1.2.10", upgradeV1_2_10, + }, } // UpgradeSQLData 升级SQL数据 @@ -749,3 +752,61 @@ func upgradeV1_2_1(db *dbs.DB) error { } return nil } + +// 1.2.10 +func upgradeV1_2_10(db *dbs.DB) error { + { + type OldGlobalConfig struct { + // HTTP & HTTPS相关配置 + HTTPAll struct { + DomainAuditingIsOn bool `yaml:"domainAuditingIsOn" json:"domainAuditingIsOn"` // 域名是否需要审核 + DomainAuditingPrompt string `yaml:"domainAuditingPrompt" json:"domainAuditingPrompt"` // 域名审核的提示 + } `yaml:"httpAll" json:"httpAll"` + + TCPAll struct { + PortRangeMin int `yaml:"portRangeMin" json:"portRangeMin"` // 最小端口 + PortRangeMax int `yaml:"portRangeMax" json:"portRangeMax"` // 最大端口 + DenyPorts []int `yaml:"denyPorts" json:"denyPorts"` // 禁止使用的端口 + } `yaml:"tcpAll" json:"tcpAll"` + } + + globalConfigValue, err := db.FindCol(0, "SELECT value FROM edgeSysSettings WHERE code='serverGlobalConfig'") + if err != nil { + return err + } + var globalConfigString = types.String(globalConfigValue) + if len(globalConfigString) > 0 { + var oldGlobalConfig = &OldGlobalConfig{} + err = json.Unmarshal([]byte(globalConfigString), oldGlobalConfig) + if err == nil { // we ignore error + ones, _, err := db.FindOnes("SELECT id,globalServerConfig FROM edgeNodeClusters") + if err != nil { + return err + } + for _, one := range ones { + var id = one.GetInt64("id") + var globalServerConfigData = []byte(one.GetString("globalServerConfig")) + if len(globalServerConfigData) > 32 { + var globalServerConfig = &serverconfigs.GlobalServerConfig{} + err = json.Unmarshal(globalServerConfigData, globalServerConfig) + if err != nil { + return err + } + globalServerConfig.HTTPAll.DomainAuditingIsOn = oldGlobalConfig.HTTPAll.DomainAuditingIsOn + globalServerConfig.HTTPAll.DomainAuditingPrompt = oldGlobalConfig.HTTPAll.DomainAuditingPrompt + globalServerConfigJSON, err := json.Marshal(globalServerConfig) + if err != nil { + return err + } + _, err = db.Exec("UPDATE edgeNodeClusters SET globalServerConfig=? WHERE id=?", globalServerConfigJSON, id) + if err != nil { + return err + } + } + } + } + } + } + + return nil +} diff --git a/internal/setup/sql_upgrade_test.go b/internal/setup/sql_upgrade_test.go index 1ed598cf..98ae600f 100644 --- a/internal/setup/sql_upgrade_test.go +++ b/internal/setup/sql_upgrade_test.go @@ -270,3 +270,22 @@ func TestUpgradeSQLData_v1_2_1(t *testing.T) { } t.Log("ok") } + +func TestUpgradeSQLData_v1_2_10(t *testing.T) { + db, err := dbs.NewInstanceFromConfig(&dbs.DBConfig{ + Driver: "mysql", + Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge?charset=utf8mb4&timeout=30s", + Prefix: "edge", + }) + if err != nil { + t.Fatal(err) + } + defer func() { + _ = db.Close() + }() + err = upgradeV1_2_10(db) + if err != nil { + t.Fatal(err) + } + t.Log("ok") +}