edgeServers增加plainServerNames字段

This commit is contained in:
GoEdgeLab
2022-04-14 16:44:00 +08:00
parent bc69e29f0b
commit 27e12085a6
5 changed files with 117 additions and 15 deletions

View File

@@ -160,15 +160,27 @@ func (this *ServerDAO) CreateServer(tx *dbs.Tx,
excludeNodesJSON string,
groupIds []int64,
userPlanId int64) (serverId int64, err error) {
op := NewServerOperator()
var op = NewServerOperator()
op.UserId = userId
op.AdminId = adminId
op.Name = name
op.Type = serverType
op.Description = description
if len(serverNamesJSON) > 0 {
if IsNotNull(serverNamesJSON) {
var serverNames = []*serverconfigs.ServerNameConfig{}
err := json.Unmarshal(serverNamesJSON, &serverNames)
if err != nil {
return 0, err
}
op.ServerNames = serverNamesJSON
plainServerNamesJSON, err := json.Marshal(serverconfigs.PlainServerNames(serverNames))
if err != nil {
return 0, err
}
op.PlainServerNames = plainServerNamesJSON
}
op.IsAuditing = isAuditing
op.AuditingAt = time.Now().Unix()
@@ -556,7 +568,7 @@ func (this *ServerDAO) FindServerServerNames(tx *dbs.Tx, serverId int64) (server
}
// UpdateServerNames 修改ServerNames配置
func (this *ServerDAO) UpdateServerNames(tx *dbs.Tx, serverId int64, serverNames []byte) error {
func (this *ServerDAO) UpdateServerNames(tx *dbs.Tx, serverId int64, serverNamesJSON []byte) error {
if serverId <= 0 {
return errors.New("serverId should not be smaller than 0")
}
@@ -564,10 +576,23 @@ func (this *ServerDAO) UpdateServerNames(tx *dbs.Tx, serverId int64, serverNames
op := NewServerOperator()
op.Id = serverId
if len(serverNames) == 0 {
serverNames = []byte("[]")
if IsNull(serverNamesJSON) {
serverNamesJSON = []byte("[]")
} else {
var serverNames = []*serverconfigs.ServerNameConfig{}
err := json.Unmarshal(serverNamesJSON, &serverNames)
if err != nil {
return err
}
op.ServerNames = serverNamesJSON
plainServerNamesJSON, err := json.Marshal(serverconfigs.PlainServerNames(serverNames))
if err != nil {
return err
}
op.PlainServerNames = plainServerNamesJSON
}
op.ServerNames = serverNames
op.ServerNames = serverNamesJSON
err := this.Save(tx, op)
if err != nil {
return err
@@ -587,7 +612,7 @@ func (this *ServerDAO) UpdateAuditingServerNames(tx *dbs.Tx, serverId int64, isA
if isAuditing {
op.AuditingAt = time.Now().Unix()
}
if len(auditingServerNamesJSON) == 0 {
if IsNull(auditingServerNamesJSON) {
op.AuditingServerNames = "[]"
} else {
op.AuditingServerNames = auditingServerNamesJSON
@@ -615,12 +640,35 @@ func (this *ServerDAO) UpdateServerAuditing(tx *dbs.Tx, serverId int64, result *
return err
}
op := NewServerOperator()
auditingServerNamesJSON, err := this.Query(tx).
Pk(serverId).
Result("auditingServerNames").
FindJSONCol()
if err != nil {
return err
}
var op = NewServerOperator()
op.Id = serverId
op.IsAuditing = false
op.AuditingResult = resultJSON
if result.IsOk {
op.ServerNames = dbs.SQL("auditingServerNames")
if IsNotNull(auditingServerNamesJSON) {
var serverNames = []*serverconfigs.ServerNameConfig{}
err := json.Unmarshal(auditingServerNamesJSON, &serverNames)
if err != nil {
return err
}
plainServerNamesJSON, err := json.Marshal(serverconfigs.PlainServerNames(serverNames))
if err != nil {
return err
}
op.PlainServerNames = plainServerNamesJSON
} else {
op.PlainServerNames = "[]"
}
}
err = this.Save(tx, op)
if err != nil {

View File

@@ -11,6 +11,7 @@ type Server struct {
Type string `field:"type"` // 服务类型
Name string `field:"name"` // 名称
Description string `field:"description"` // 描述
PlainServerNames dbs.JSON `field:"plainServerNames"` // 扁平化域名列表
ServerNames dbs.JSON `field:"serverNames"` // 域名列表
AuditingAt uint64 `field:"auditingAt"` // 审核提交时间
AuditingServerNames dbs.JSON `field:"auditingServerNames"` // 审核中的域名
@@ -57,6 +58,7 @@ type ServerOperator struct {
Type interface{} // 服务类型
Name interface{} // 名称
Description interface{} // 描述
PlainServerNames interface{} // 扁平化域名列表
ServerNames interface{} // 域名列表
AuditingAt interface{} // 审核提交时间
AuditingServerNames interface{} // 审核中的域名

File diff suppressed because one or more lines are too long

View File

@@ -72,6 +72,9 @@ var upgradeFuncs = []*upgradeVersion{
{
"0.4.5", upgradeV0_4_5,
},
{
"0.4.7", upgradeV0_4_7,
},
}
// UpgradeSQLData 升级SQL数据
@@ -620,16 +623,15 @@ func upgradeV0_4_5(db *dbs.DB) error {
}
}
// 升级一个SQL注入规则
// 升级一个SQL注入规则
{
var dao = models.NewHTTPFirewallRuleDAO()
ones, _, err := dao.Instance.FindOnes(`SELECT id FROM edgeHTTPFirewallRules WHERE value=?`, "(updatexml|extractvalue|ascii|ord|char|chr|count|concat|rand|floor|substr|length|len|user|database|benchmark|analyse)\\s*\\(")
ones, _, err := db.FindOnes(`SELECT id FROM edgeHTTPFirewallRules WHERE value=?`, "(updatexml|extractvalue|ascii|ord|char|chr|count|concat|rand|floor|substr|length|len|user|database|benchmark|analyse)\\s*\\(")
if err != nil {
return err
}
for _, one := range ones {
var ruleId = one.GetInt64("id")
_, err = dao.Instance.Exec(`UPDATE edgeHTTPFirewallRules SET value=? WHERE id=? LIMIT 1`, `\b(updatexml|extractvalue|ascii|ord|char|chr|count|concat|rand|floor|substr|length|len|user|database|benchmark|analyse)\s*\(.*\)`, ruleId)
_, err = db.Exec(`UPDATE edgeHTTPFirewallRules SET value=? WHERE id=? LIMIT 1`, `\b(updatexml|extractvalue|ascii|ord|char|chr|count|concat|rand|floor|substr|length|len|user|database|benchmark|analyse)\s*\(.*\)`, ruleId)
if err != nil {
return err
}
@@ -638,3 +640,35 @@ func upgradeV0_4_5(db *dbs.DB) error {
return nil
}
// v0.4.7
func upgradeV0_4_7(db *dbs.DB) error {
// 升级 edgeServers 中的 plainServerNames
{
ones, _, err := db.FindOnes("SELECT id,serverNames FROM edgeServers WHERE state=1")
if err != nil {
return err
}
for _, one := range ones {
var serverId = one.GetInt64("id")
var serverNamesJSON = one.GetBytes("serverNames")
if len(serverNamesJSON) > 0 {
var serverNames = []*serverconfigs.ServerNameConfig{}
err = json.Unmarshal(serverNamesJSON, &serverNames)
if err != nil {
return err
}
plainServerNamesJSON, err := json.Marshal(serverconfigs.PlainServerNames(serverNames))
if err != nil {
return err
}
_, err = db.Exec("UPDATE edgeServers SET plainServerNames=? WHERE id=?", plainServerNamesJSON, serverId)
if err != nil {
return err
}
}
}
}
return nil
}

View File

@@ -138,7 +138,6 @@ func TestUpgradeSQLData_v0_4_1(t *testing.T) {
t.Log("ok")
}
func TestUpgradeSQLData_v0_4_5(t *testing.T) {
db, err := dbs.NewInstanceFromConfig(&dbs.DBConfig{
Driver: "mysql",
@@ -157,3 +156,22 @@ func TestUpgradeSQLData_v0_4_5(t *testing.T) {
}
t.Log("ok")
}
func TestUpgradeSQLData_v0_4_7(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 = upgradeV0_4_7(db)
if err != nil {
t.Fatal(err)
}
t.Log("ok")
}