mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	edgeServers增加plainServerNames字段
This commit is contained in:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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
											
										
									
								
							@@ -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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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")
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user