mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-08 03:00:26 +08:00
检查域名是否存在时同时检查泛域名
This commit is contained in:
@@ -1880,8 +1880,8 @@ func (this *ServerDAO) CheckPortIsUsing(tx *dbs.Tx, clusterId int64, protocolFam
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ExistServerNameInCluster 检查ServerName是否已存在
|
// ExistServerNameInCluster 检查ServerName是否已存在
|
||||||
func (this *ServerDAO) ExistServerNameInCluster(tx *dbs.Tx, clusterId int64, serverName string, excludeServerId int64) (bool, error) {
|
func (this *ServerDAO) ExistServerNameInCluster(tx *dbs.Tx, clusterId int64, serverName string, excludeServerId int64, supportWildcard bool) (bool, error) {
|
||||||
query := this.Query(tx).
|
var query = this.Query(tx).
|
||||||
Attr("clusterId", clusterId).
|
Attr("clusterId", clusterId).
|
||||||
Where("(JSON_CONTAINS(serverNames, :jsonQuery1) OR JSON_CONTAINS(serverNames, :jsonQuery2))").
|
Where("(JSON_CONTAINS(serverNames, :jsonQuery1) OR JSON_CONTAINS(serverNames, :jsonQuery2))").
|
||||||
Param("jsonQuery1", maps.Map{"name": serverName}.AsJSON()).
|
Param("jsonQuery1", maps.Map{"name": serverName}.AsJSON()).
|
||||||
@@ -1890,7 +1890,38 @@ func (this *ServerDAO) ExistServerNameInCluster(tx *dbs.Tx, clusterId int64, ser
|
|||||||
query.Neq("id", excludeServerId)
|
query.Neq("id", excludeServerId)
|
||||||
}
|
}
|
||||||
query.State(ServerStateEnabled)
|
query.State(ServerStateEnabled)
|
||||||
return query.Exist()
|
exists, err := query.Exist()
|
||||||
|
if err != nil || exists {
|
||||||
|
return exists, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if supportWildcard {
|
||||||
|
var countPieces = strings.Count(serverName, ".")
|
||||||
|
for {
|
||||||
|
var index = strings.Index(serverName, ".")
|
||||||
|
if index > 0 {
|
||||||
|
serverName = serverName[index+1:]
|
||||||
|
var search = strings.Repeat("*.", countPieces-strings.Count(serverName, ".")) + serverName
|
||||||
|
var query = this.Query(tx).
|
||||||
|
Attr("clusterId", clusterId).
|
||||||
|
Where("(JSON_CONTAINS(serverNames, :jsonQuery1) OR JSON_CONTAINS(serverNames, :jsonQuery2))").
|
||||||
|
Param("jsonQuery1", maps.Map{"name": search}.AsJSON()).
|
||||||
|
Param("jsonQuery2", maps.Map{"subNames": search}.AsJSON())
|
||||||
|
if excludeServerId > 0 {
|
||||||
|
query.Neq("id", excludeServerId)
|
||||||
|
}
|
||||||
|
query.State(ServerStateEnabled)
|
||||||
|
exists, err = query.Exist()
|
||||||
|
if err != nil || exists {
|
||||||
|
return exists, err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GenDNSName 生成DNS Name
|
// GenDNSName 生成DNS Name
|
||||||
|
|||||||
@@ -1707,9 +1707,9 @@ func (this *ServerService) CheckServerNameDuplicationInNodeCluster(ctx context.C
|
|||||||
|
|
||||||
var tx = this.NullTx()
|
var tx = this.NullTx()
|
||||||
|
|
||||||
duplicatedServerNames := []string{}
|
var duplicatedServerNames = []string{}
|
||||||
for _, serverName := range req.ServerNames {
|
for _, serverName := range req.ServerNames {
|
||||||
exist, err := models.SharedServerDAO.ExistServerNameInCluster(tx, req.NodeClusterId, serverName, req.ExcludeServerId)
|
exist, err := models.SharedServerDAO.ExistServerNameInCluster(tx, req.NodeClusterId, serverName, req.ExcludeServerId, req.SupportWildcard)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user