mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-06 18:10:25 +08:00
edgeServers增加plainServerNames字段
This commit is contained in:
@@ -160,15 +160,27 @@ func (this *ServerDAO) CreateServer(tx *dbs.Tx,
|
|||||||
excludeNodesJSON string,
|
excludeNodesJSON string,
|
||||||
groupIds []int64,
|
groupIds []int64,
|
||||||
userPlanId int64) (serverId int64, err error) {
|
userPlanId int64) (serverId int64, err error) {
|
||||||
op := NewServerOperator()
|
var op = NewServerOperator()
|
||||||
op.UserId = userId
|
op.UserId = userId
|
||||||
op.AdminId = adminId
|
op.AdminId = adminId
|
||||||
op.Name = name
|
op.Name = name
|
||||||
op.Type = serverType
|
op.Type = serverType
|
||||||
op.Description = description
|
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
|
op.ServerNames = serverNamesJSON
|
||||||
|
|
||||||
|
plainServerNamesJSON, err := json.Marshal(serverconfigs.PlainServerNames(serverNames))
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
op.PlainServerNames = plainServerNamesJSON
|
||||||
}
|
}
|
||||||
op.IsAuditing = isAuditing
|
op.IsAuditing = isAuditing
|
||||||
op.AuditingAt = time.Now().Unix()
|
op.AuditingAt = time.Now().Unix()
|
||||||
@@ -556,7 +568,7 @@ func (this *ServerDAO) FindServerServerNames(tx *dbs.Tx, serverId int64) (server
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UpdateServerNames 修改ServerNames配置
|
// 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 {
|
if serverId <= 0 {
|
||||||
return errors.New("serverId should not be smaller than 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 := NewServerOperator()
|
||||||
op.Id = serverId
|
op.Id = serverId
|
||||||
|
|
||||||
if len(serverNames) == 0 {
|
if IsNull(serverNamesJSON) {
|
||||||
serverNames = []byte("[]")
|
serverNamesJSON = []byte("[]")
|
||||||
|
} else {
|
||||||
|
var serverNames = []*serverconfigs.ServerNameConfig{}
|
||||||
|
err := json.Unmarshal(serverNamesJSON, &serverNames)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
op.ServerNames = serverNames
|
|
||||||
|
op.ServerNames = serverNamesJSON
|
||||||
|
plainServerNamesJSON, err := json.Marshal(serverconfigs.PlainServerNames(serverNames))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
op.PlainServerNames = plainServerNamesJSON
|
||||||
|
}
|
||||||
|
op.ServerNames = serverNamesJSON
|
||||||
err := this.Save(tx, op)
|
err := this.Save(tx, op)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -587,7 +612,7 @@ func (this *ServerDAO) UpdateAuditingServerNames(tx *dbs.Tx, serverId int64, isA
|
|||||||
if isAuditing {
|
if isAuditing {
|
||||||
op.AuditingAt = time.Now().Unix()
|
op.AuditingAt = time.Now().Unix()
|
||||||
}
|
}
|
||||||
if len(auditingServerNamesJSON) == 0 {
|
if IsNull(auditingServerNamesJSON) {
|
||||||
op.AuditingServerNames = "[]"
|
op.AuditingServerNames = "[]"
|
||||||
} else {
|
} else {
|
||||||
op.AuditingServerNames = auditingServerNamesJSON
|
op.AuditingServerNames = auditingServerNamesJSON
|
||||||
@@ -615,12 +640,35 @@ func (this *ServerDAO) UpdateServerAuditing(tx *dbs.Tx, serverId int64, result *
|
|||||||
return err
|
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.Id = serverId
|
||||||
op.IsAuditing = false
|
op.IsAuditing = false
|
||||||
op.AuditingResult = resultJSON
|
op.AuditingResult = resultJSON
|
||||||
if result.IsOk {
|
if result.IsOk {
|
||||||
op.ServerNames = dbs.SQL("auditingServerNames")
|
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)
|
err = this.Save(tx, op)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ type Server struct {
|
|||||||
Type string `field:"type"` // 服务类型
|
Type string `field:"type"` // 服务类型
|
||||||
Name string `field:"name"` // 名称
|
Name string `field:"name"` // 名称
|
||||||
Description string `field:"description"` // 描述
|
Description string `field:"description"` // 描述
|
||||||
|
PlainServerNames dbs.JSON `field:"plainServerNames"` // 扁平化域名列表
|
||||||
ServerNames dbs.JSON `field:"serverNames"` // 域名列表
|
ServerNames dbs.JSON `field:"serverNames"` // 域名列表
|
||||||
AuditingAt uint64 `field:"auditingAt"` // 审核提交时间
|
AuditingAt uint64 `field:"auditingAt"` // 审核提交时间
|
||||||
AuditingServerNames dbs.JSON `field:"auditingServerNames"` // 审核中的域名
|
AuditingServerNames dbs.JSON `field:"auditingServerNames"` // 审核中的域名
|
||||||
@@ -57,6 +58,7 @@ type ServerOperator struct {
|
|||||||
Type interface{} // 服务类型
|
Type interface{} // 服务类型
|
||||||
Name interface{} // 名称
|
Name interface{} // 名称
|
||||||
Description interface{} // 描述
|
Description interface{} // 描述
|
||||||
|
PlainServerNames interface{} // 扁平化域名列表
|
||||||
ServerNames interface{} // 域名列表
|
ServerNames interface{} // 域名列表
|
||||||
AuditingAt interface{} // 审核提交时间
|
AuditingAt interface{} // 审核提交时间
|
||||||
AuditingServerNames 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.5", upgradeV0_4_5,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"0.4.7", upgradeV0_4_7,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpgradeSQLData 升级SQL数据
|
// UpgradeSQLData 升级SQL数据
|
||||||
@@ -620,16 +623,15 @@ func upgradeV0_4_5(db *dbs.DB) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 升级一个SQL注入规则
|
// 升级一个防SQL注入规则
|
||||||
{
|
{
|
||||||
var dao = models.NewHTTPFirewallRuleDAO()
|
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*\\(")
|
||||||
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*\\(")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for _, one := range ones {
|
for _, one := range ones {
|
||||||
var ruleId = one.GetInt64("id")
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -638,3 +640,35 @@ func upgradeV0_4_5(db *dbs.DB) error {
|
|||||||
|
|
||||||
return nil
|
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")
|
t.Log("ok")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func TestUpgradeSQLData_v0_4_5(t *testing.T) {
|
func TestUpgradeSQLData_v0_4_5(t *testing.T) {
|
||||||
db, err := dbs.NewInstanceFromConfig(&dbs.DBConfig{
|
db, err := dbs.NewInstanceFromConfig(&dbs.DBConfig{
|
||||||
Driver: "mysql",
|
Driver: "mysql",
|
||||||
@@ -157,3 +156,22 @@ func TestUpgradeSQLData_v0_4_5(t *testing.T) {
|
|||||||
}
|
}
|
||||||
t.Log("ok")
|
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