mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	DNS服务商账号增加“最小TTL”选项
This commit is contained in:
		@@ -29,7 +29,10 @@ func NewDNSProvider(raw dnsclients.ProviderInterface, dnsDomain string) *DNSProv
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (this *DNSProvider) Present(domain, token, keyAuth string) error {
 | 
					func (this *DNSProvider) Present(domain, token, keyAuth string) error {
 | 
				
			||||||
	_ = os.Setenv("LEGO_DISABLE_CNAME_SUPPORT", "true")
 | 
						_ = os.Setenv("LEGO_DISABLE_CNAME_SUPPORT", "true")
 | 
				
			||||||
	fqdn, value := dns01.GetRecord(domain, keyAuth)
 | 
						var info = dns01.GetChallengeInfo(domain, keyAuth)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var fqdn = info.EffectiveFQDN
 | 
				
			||||||
 | 
						var value = info.Value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 设置记录
 | 
						// 设置记录
 | 
				
			||||||
	var index = strings.Index(fqdn, "."+this.dnsDomain)
 | 
						var index = strings.Index(fqdn, "."+this.dnsDomain)
 | 
				
			||||||
@@ -66,6 +69,7 @@ func (this *DNSProvider) Present(domain, token, keyAuth string) error {
 | 
				
			|||||||
		Type:  dnstypes.RecordTypeTXT,
 | 
							Type:  dnstypes.RecordTypeTXT,
 | 
				
			||||||
		Value: value,
 | 
							Value: value,
 | 
				
			||||||
		Route: this.raw.DefaultRoute(),
 | 
							Route: this.raw.DefaultRoute(),
 | 
				
			||||||
 | 
							TTL:   this.raw.MinTTL(),
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return fmt.Errorf("create DNS record failed: %w", err)
 | 
							return fmt.Errorf("create DNS record failed: %w", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -266,7 +266,6 @@ func (this *ACMETaskDAO) FindACMETaskUserId(tx *dbs.Tx, taskId int64) (userId in
 | 
				
			|||||||
		FindInt64Col(0)
 | 
							FindInt64Col(0)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
// UpdateACMETaskCert 设置任务关联的证书
 | 
					// UpdateACMETaskCert 设置任务关联的证书
 | 
				
			||||||
func (this *ACMETaskDAO) UpdateACMETaskCert(tx *dbs.Tx, taskId int64, certId int64) error {
 | 
					func (this *ACMETaskDAO) UpdateACMETaskCert(tx *dbs.Tx, taskId int64, certId int64) error {
 | 
				
			||||||
	if taskId <= 0 {
 | 
						if taskId <= 0 {
 | 
				
			||||||
@@ -387,6 +386,7 @@ func (this *ACMETaskDAO) runTaskWithoutLog(tx *dbs.Tx, taskId int64) (isOk bool,
 | 
				
			|||||||
			errMsg = "暂不支持此类型的DNS服务商 '" + dnsProvider.Type + "'"
 | 
								errMsg = "暂不支持此类型的DNS服务商 '" + dnsProvider.Type + "'"
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							providerInterface.SetMinTTL(int32(dnsProvider.MinTTL))
 | 
				
			||||||
		apiParams, err := dnsProvider.DecodeAPIParams()
 | 
							apiParams, err := dnsProvider.DecodeAPIParams()
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			errMsg = "解析DNS服务商API参数时出错:" + err.Error()
 | 
								errMsg = "解析DNS服务商API参数时出错:" + err.Error()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,7 +67,7 @@ func (this *DNSProviderDAO) FindEnabledDNSProvider(tx *dbs.Tx, id int64) (*DNSPr
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateDNSProvider 创建服务商
 | 
					// CreateDNSProvider 创建服务商
 | 
				
			||||||
func (this *DNSProviderDAO) CreateDNSProvider(tx *dbs.Tx, adminId int64, userId int64, providerType string, name string, apiParamsJSON []byte) (int64, error) {
 | 
					func (this *DNSProviderDAO) CreateDNSProvider(tx *dbs.Tx, adminId int64, userId int64, providerType string, name string, apiParamsJSON []byte, minTTL int32) (int64, error) {
 | 
				
			||||||
	var op = NewDNSProviderOperator()
 | 
						var op = NewDNSProviderOperator()
 | 
				
			||||||
	op.AdminId = adminId
 | 
						op.AdminId = adminId
 | 
				
			||||||
	op.UserId = userId
 | 
						op.UserId = userId
 | 
				
			||||||
@@ -76,6 +76,11 @@ func (this *DNSProviderDAO) CreateDNSProvider(tx *dbs.Tx, adminId int64, userId
 | 
				
			|||||||
	if len(apiParamsJSON) > 0 {
 | 
						if len(apiParamsJSON) > 0 {
 | 
				
			||||||
		op.ApiParams = apiParamsJSON
 | 
							op.ApiParams = apiParamsJSON
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if minTTL >= 0 {
 | 
				
			||||||
 | 
							op.MinTTL = minTTL
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	op.State = DNSProviderStateEnabled
 | 
						op.State = DNSProviderStateEnabled
 | 
				
			||||||
	err := this.Save(tx, op)
 | 
						err := this.Save(tx, op)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -85,7 +90,7 @@ func (this *DNSProviderDAO) CreateDNSProvider(tx *dbs.Tx, adminId int64, userId
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// UpdateDNSProvider 修改服务商
 | 
					// UpdateDNSProvider 修改服务商
 | 
				
			||||||
func (this *DNSProviderDAO) UpdateDNSProvider(tx *dbs.Tx, dnsProviderId int64, name string, apiParamsJSON []byte) error {
 | 
					func (this *DNSProviderDAO) UpdateDNSProvider(tx *dbs.Tx, dnsProviderId int64, name string, apiParamsJSON []byte, minTTL int32) error {
 | 
				
			||||||
	if dnsProviderId <= 0 {
 | 
						if dnsProviderId <= 0 {
 | 
				
			||||||
		return errors.New("invalid dnsProviderId")
 | 
							return errors.New("invalid dnsProviderId")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -99,6 +104,10 @@ func (this *DNSProviderDAO) UpdateDNSProvider(tx *dbs.Tx, dnsProviderId int64, n
 | 
				
			|||||||
		op.ApiParams = apiParamsJSON
 | 
							op.ApiParams = apiParamsJSON
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if minTTL >= 0 {
 | 
				
			||||||
 | 
							op.MinTTL = minTTL
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := this.Save(tx, op)
 | 
						err := this.Save(tx, op)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,19 @@ package dns
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "github.com/iwind/TeaGo/dbs"
 | 
					import "github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						DNSProviderField_Id            dbs.FieldName = "id"            // ID
 | 
				
			||||||
 | 
						DNSProviderField_Name          dbs.FieldName = "name"          // 名称
 | 
				
			||||||
 | 
						DNSProviderField_AdminId       dbs.FieldName = "adminId"       // 管理员ID
 | 
				
			||||||
 | 
						DNSProviderField_UserId        dbs.FieldName = "userId"        // 用户ID
 | 
				
			||||||
 | 
						DNSProviderField_Type          dbs.FieldName = "type"          // 供应商类型
 | 
				
			||||||
 | 
						DNSProviderField_ApiParams     dbs.FieldName = "apiParams"     // API参数
 | 
				
			||||||
 | 
						DNSProviderField_CreatedAt     dbs.FieldName = "createdAt"     // 创建时间
 | 
				
			||||||
 | 
						DNSProviderField_State         dbs.FieldName = "state"         // 状态
 | 
				
			||||||
 | 
						DNSProviderField_DataUpdatedAt dbs.FieldName = "dataUpdatedAt" // 数据同步时间
 | 
				
			||||||
 | 
						DNSProviderField_MinTTL        dbs.FieldName = "minTTL"        // 最小TTL
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DNSProvider DNS服务商
 | 
					// DNSProvider DNS服务商
 | 
				
			||||||
type DNSProvider struct {
 | 
					type DNSProvider struct {
 | 
				
			||||||
	Id            uint32   `field:"id"`            // ID
 | 
						Id            uint32   `field:"id"`            // ID
 | 
				
			||||||
@@ -13,18 +26,20 @@ type DNSProvider struct {
 | 
				
			|||||||
	CreatedAt     uint64   `field:"createdAt"`     // 创建时间
 | 
						CreatedAt     uint64   `field:"createdAt"`     // 创建时间
 | 
				
			||||||
	State         uint8    `field:"state"`         // 状态
 | 
						State         uint8    `field:"state"`         // 状态
 | 
				
			||||||
	DataUpdatedAt uint64   `field:"dataUpdatedAt"` // 数据同步时间
 | 
						DataUpdatedAt uint64   `field:"dataUpdatedAt"` // 数据同步时间
 | 
				
			||||||
 | 
						MinTTL        uint32   `field:"minTTL"`        // 最小TTL
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type DNSProviderOperator struct {
 | 
					type DNSProviderOperator struct {
 | 
				
			||||||
	Id            interface{} // ID
 | 
						Id            any // ID
 | 
				
			||||||
	Name          interface{} // 名称
 | 
						Name          any // 名称
 | 
				
			||||||
	AdminId       interface{} // 管理员ID
 | 
						AdminId       any // 管理员ID
 | 
				
			||||||
	UserId        interface{} // 用户ID
 | 
						UserId        any // 用户ID
 | 
				
			||||||
	Type          interface{} // 供应商类型
 | 
						Type          any // 供应商类型
 | 
				
			||||||
	ApiParams     interface{} // API参数
 | 
						ApiParams     any // API参数
 | 
				
			||||||
	CreatedAt     interface{} // 创建时间
 | 
						CreatedAt     any // 创建时间
 | 
				
			||||||
	State         interface{} // 状态
 | 
						State         any // 状态
 | 
				
			||||||
	DataUpdatedAt interface{} // 数据同步时间
 | 
						DataUpdatedAt any // 数据同步时间
 | 
				
			||||||
 | 
						MinTTL        any // 最小TTL
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewDNSProviderOperator() *DNSProviderOperator {
 | 
					func NewDNSProviderOperator() *DNSProviderOperator {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,9 @@ import (
 | 
				
			|||||||
	"github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type BaseProvider struct{}
 | 
					type BaseProvider struct {
 | 
				
			||||||
 | 
						minTTL int32
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// WrapError 封装解析相关错误
 | 
					// WrapError 封装解析相关错误
 | 
				
			||||||
func (this *BaseProvider) WrapError(err error, domain string, record *dnstypes.Record) error {
 | 
					func (this *BaseProvider) WrapError(err error, domain string, record *dnstypes.Record) error {
 | 
				
			||||||
@@ -25,3 +27,16 @@ func (this *BaseProvider) WrapError(err error, domain string, record *dnstypes.R
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return fmt.Errorf("record operation failed: '%s %s %s %d': %w", fullname, record.Type, record.Value, record.TTL, err)
 | 
						return fmt.Errorf("record operation failed: '%s %s %s %d': %w", fullname, record.Type, record.Value, record.TTL, err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SetMinTTL 设置最小TTL
 | 
				
			||||||
 | 
					func (this *BaseProvider) SetMinTTL(ttl int32) {
 | 
				
			||||||
 | 
						this.minTTL = ttl
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// MinTTL 最小TTL
 | 
				
			||||||
 | 
					func (this *BaseProvider) MinTTL() int32 {
 | 
				
			||||||
 | 
						if this.minTTL > 0 {
 | 
				
			||||||
 | 
							return this.minTTL
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,4 +39,10 @@ type ProviderInterface interface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// DefaultRoute 默认线路
 | 
						// DefaultRoute 默认线路
 | 
				
			||||||
	DefaultRoute() string
 | 
						DefaultRoute() string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// SetMinTTL 设置最小TTL
 | 
				
			||||||
 | 
						SetMinTTL(ttl int32)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// MinTTL 最小TTL
 | 
				
			||||||
 | 
						MinTTL() int32
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ func (this *DNSProviderService) CreateDNSProvider(ctx context.Context, req *pb.C
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	var tx = this.NullTx()
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	providerId, err := dns.SharedDNSProviderDAO.CreateDNSProvider(tx, adminId, userId, req.Type, req.Name, req.ApiParamsJSON)
 | 
						providerId, err := dns.SharedDNSProviderDAO.CreateDNSProvider(tx, adminId, userId, req.Type, req.Name, req.ApiParamsJSON, req.MinTTL)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -59,7 +59,7 @@ func (this *DNSProviderService) UpdateDNSProvider(ctx context.Context, req *pb.U
 | 
				
			|||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = dns.SharedDNSProviderDAO.UpdateDNSProvider(tx, req.DnsProviderId, req.Name, req.ApiParamsJSON)
 | 
						err = dns.SharedDNSProviderDAO.UpdateDNSProvider(tx, req.DnsProviderId, req.Name, req.ApiParamsJSON, req.MinTTL)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -114,6 +114,7 @@ func (this *DNSProviderService) ListEnabledDNSProviders(ctx context.Context, req
 | 
				
			|||||||
			TypeName:      dnsclients.FindProviderTypeName(provider.Type),
 | 
								TypeName:      dnsclients.FindProviderTypeName(provider.Type),
 | 
				
			||||||
			ApiParamsJSON: provider.ApiParams,
 | 
								ApiParamsJSON: provider.ApiParams,
 | 
				
			||||||
			DataUpdatedAt: int64(provider.DataUpdatedAt),
 | 
								DataUpdatedAt: int64(provider.DataUpdatedAt),
 | 
				
			||||||
 | 
								MinTTL:        int32(provider.MinTTL),
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &pb.ListEnabledDNSProvidersResponse{DnsProviders: result}, nil
 | 
						return &pb.ListEnabledDNSProvidersResponse{DnsProviders: result}, nil
 | 
				
			||||||
@@ -148,6 +149,7 @@ func (this *DNSProviderService) FindAllEnabledDNSProviders(ctx context.Context,
 | 
				
			|||||||
			TypeName:      dnsclients.FindProviderTypeName(provider.Type),
 | 
								TypeName:      dnsclients.FindProviderTypeName(provider.Type),
 | 
				
			||||||
			ApiParamsJSON: provider.ApiParams,
 | 
								ApiParamsJSON: provider.ApiParams,
 | 
				
			||||||
			DataUpdatedAt: int64(provider.DataUpdatedAt),
 | 
								DataUpdatedAt: int64(provider.DataUpdatedAt),
 | 
				
			||||||
 | 
								MinTTL:        int32(provider.MinTTL),
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &pb.FindAllEnabledDNSProvidersResponse{DnsProviders: result}, nil
 | 
						return &pb.FindAllEnabledDNSProvidersResponse{DnsProviders: result}, nil
 | 
				
			||||||
@@ -218,6 +220,7 @@ func (this *DNSProviderService) FindEnabledDNSProvider(ctx context.Context, req
 | 
				
			|||||||
			TypeName:      dnsclients.FindProviderTypeName(provider.Type),
 | 
								TypeName:      dnsclients.FindProviderTypeName(provider.Type),
 | 
				
			||||||
			ApiParamsJSON: provider.ApiParams,
 | 
								ApiParamsJSON: provider.ApiParams,
 | 
				
			||||||
			DataUpdatedAt: int64(provider.DataUpdatedAt),
 | 
								DataUpdatedAt: int64(provider.DataUpdatedAt),
 | 
				
			||||||
 | 
								MinTTL:        int32(provider.MinTTL),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}, nil
 | 
						}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -262,6 +265,7 @@ func (this *DNSProviderService) FindAllEnabledDNSProvidersWithType(ctx context.C
 | 
				
			|||||||
			Name:     provider.Name,
 | 
								Name:     provider.Name,
 | 
				
			||||||
			Type:     provider.Type,
 | 
								Type:     provider.Type,
 | 
				
			||||||
			TypeName: dnsclients.FindProviderTypeName(provider.Type),
 | 
								TypeName: dnsclients.FindProviderTypeName(provider.Type),
 | 
				
			||||||
 | 
								MinTTL:   int32(provider.MinTTL),
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &pb.FindAllEnabledDNSProvidersWithTypeResponse{DnsProviders: result}, nil
 | 
						return &pb.FindAllEnabledDNSProvidersWithTypeResponse{DnsProviders: result}, nil
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -109381,7 +109381,7 @@
 | 
				
			|||||||
      "name": "edgeDNSProviders",
 | 
					      "name": "edgeDNSProviders",
 | 
				
			||||||
      "engine": "InnoDB",
 | 
					      "engine": "InnoDB",
 | 
				
			||||||
      "charset": "utf8mb4_general_ci",
 | 
					      "charset": "utf8mb4_general_ci",
 | 
				
			||||||
      "definition": "CREATE TABLE `edgeDNSProviders` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `name` varchar(255) DEFAULT NULL COMMENT '名称',\n  `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n  `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n  `type` varchar(255) DEFAULT NULL COMMENT '供应商类型',\n  `apiParams` json DEFAULT NULL COMMENT 'API参数',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n  `dataUpdatedAt` bigint(11) unsigned DEFAULT '0' COMMENT '数据同步时间',\n  PRIMARY KEY (`id`),\n  KEY `type` (`type`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DNS服务商'",
 | 
					      "definition": "CREATE TABLE `edgeDNSProviders` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `name` varchar(255) DEFAULT NULL COMMENT '名称',\n  `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n  `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n  `type` varchar(255) DEFAULT NULL COMMENT '供应商类型',\n  `apiParams` json DEFAULT NULL COMMENT 'API参数',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n  `dataUpdatedAt` bigint(11) unsigned DEFAULT '0' COMMENT '数据同步时间',\n  `minTTL` int(11) unsigned DEFAULT '0' COMMENT '最小TTL',\n  PRIMARY KEY (`id`),\n  KEY `type` (`type`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DNS服务商'",
 | 
				
			||||||
      "fields": [
 | 
					      "fields": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "id",
 | 
					          "name": "id",
 | 
				
			||||||
@@ -109418,6 +109418,10 @@
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "dataUpdatedAt",
 | 
					          "name": "dataUpdatedAt",
 | 
				
			||||||
          "definition": "bigint(11) unsigned DEFAULT '0' COMMENT '数据同步时间'"
 | 
					          "definition": "bigint(11) unsigned DEFAULT '0' COMMENT '数据同步时间'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "name": "minTTL",
 | 
				
			||||||
 | 
					          "definition": "int(11) unsigned DEFAULT '0' COMMENT '最小TTL'"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
      "indexes": [
 | 
					      "indexes": [
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user