From dd4e696ed9f5b06e578a75b14da85229403b870e Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Wed, 23 Sep 2020 10:12:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=BA=9B=E8=A1=A8?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 2 +- go.sum | 2 + internal/db/models/admin_model.go | 4 +- internal/db/models/api_node_dao.go | 2 +- internal/db/models/api_node_model.go | 12 +++- internal/db/models/api_token_dao.go | 2 +- internal/db/models/db_node_dao.go | 65 +++++++++++++++++++ internal/db/models/db_node_dao_test.go | 5 ++ internal/db/models/db_node_model.go | 44 +++++++++++++ internal/db/models/db_node_model_ext.go | 1 + internal/db/models/file_model.go | 8 ++- internal/db/models/http_cache_policy_model.go | 8 +-- .../db/models/http_firewall_policy_model.go | 6 ++ internal/db/models/http_firewall_rule_dao.go | 57 ++++++++++++++++ .../db/models/http_firewall_rule_dao_test.go | 5 ++ .../db/models/http_firewall_rule_group_dao.go | 65 +++++++++++++++++++ .../http_firewall_rule_group_dao_test.go | 5 ++ .../models/http_firewall_rule_group_model.go | 32 +++++++++ .../http_firewall_rule_group_model_ext.go | 1 + .../db/models/http_firewall_rule_model.go | 34 ++++++++++ .../db/models/http_firewall_rule_model_ext.go | 1 + .../db/models/http_firewall_rule_set_dao.go | 65 +++++++++++++++++++ .../models/http_firewall_rule_set_dao_test.go | 5 ++ .../db/models/http_firewall_rule_set_model.go | 34 ++++++++++ .../http_firewall_rule_set_model_ext.go | 1 + internal/db/models/http_gzip_model.go | 4 +- internal/db/models/http_header_model.go | 4 +- .../db/models/http_header_policy_model.go | 2 +- internal/db/models/http_page_model.go | 2 +- internal/db/models/http_web_model.go | 2 +- internal/db/models/log_model.go | 2 +- internal/db/models/log_model_ext.go | 1 + internal/db/models/node_cluster_model.go | 2 +- internal/db/models/node_grant_model.go | 4 +- internal/db/models/node_group_model.go | 2 +- internal/db/models/node_group_model_ext.go | 1 + internal/db/models/node_model.go | 2 +- internal/db/models/origin_model.go | 2 +- internal/db/models/provider_model.go | 4 +- internal/db/models/provider_model_ext.go | 1 + internal/db/models/reverse_proxy_model.go | 2 +- internal/db/models/server_group_model.go | 2 +- internal/db/models/server_group_model_ext.go | 1 + internal/db/models/server_model.go | 2 +- internal/db/models/tcp_firewall_policy_dao.go | 22 +++++++ .../db/models/tcp_firewall_policy_dao_test.go | 5 ++ .../db/models/tcp_firewall_policy_model.go | 20 ++++++ .../models/tcp_firewall_policy_model_ext.go | 1 + internal/db/models/user_model.go | 6 +- internal/db/models/user_model_ext.go | 1 + 50 files changed, 529 insertions(+), 34 deletions(-) create mode 100644 internal/db/models/db_node_dao.go create mode 100644 internal/db/models/db_node_dao_test.go create mode 100644 internal/db/models/db_node_model.go create mode 100644 internal/db/models/db_node_model_ext.go create mode 100644 internal/db/models/http_firewall_rule_dao.go create mode 100644 internal/db/models/http_firewall_rule_dao_test.go create mode 100644 internal/db/models/http_firewall_rule_group_dao.go create mode 100644 internal/db/models/http_firewall_rule_group_dao_test.go create mode 100644 internal/db/models/http_firewall_rule_group_model.go create mode 100644 internal/db/models/http_firewall_rule_group_model_ext.go create mode 100644 internal/db/models/http_firewall_rule_model.go create mode 100644 internal/db/models/http_firewall_rule_model_ext.go create mode 100644 internal/db/models/http_firewall_rule_set_dao.go create mode 100644 internal/db/models/http_firewall_rule_set_dao_test.go create mode 100644 internal/db/models/http_firewall_rule_set_model.go create mode 100644 internal/db/models/http_firewall_rule_set_model_ext.go create mode 100644 internal/db/models/log_model_ext.go create mode 100644 internal/db/models/node_group_model_ext.go create mode 100644 internal/db/models/provider_model_ext.go create mode 100644 internal/db/models/server_group_model_ext.go create mode 100644 internal/db/models/tcp_firewall_policy_dao.go create mode 100644 internal/db/models/tcp_firewall_policy_dao_test.go create mode 100644 internal/db/models/tcp_firewall_policy_model.go create mode 100644 internal/db/models/tcp_firewall_policy_model_ext.go create mode 100644 internal/db/models/user_model_ext.go diff --git a/go.mod b/go.mod index 9dccbcfa..973340d7 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/go-sql-driver/mysql v1.5.0 github.com/go-yaml/yaml v2.1.0+incompatible github.com/golang/protobuf v1.4.2 - github.com/iwind/TeaGo v0.0.0-20200916035436-dbdbf25f8524 + github.com/iwind/TeaGo v0.0.0-20200923021120-f5d76441fe9e github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.1 // indirect github.com/pkg/sftp v1.12.0 diff --git a/go.sum b/go.sum index 45ce1c12..3b408569 100644 --- a/go.sum +++ b/go.sum @@ -58,6 +58,8 @@ github.com/iwind/TeaGo v0.0.0-20200910072805-729cffe36729 h1:/v0WhSFVeNay/dA5zU9 github.com/iwind/TeaGo v0.0.0-20200910072805-729cffe36729/go.mod h1:KU4mS7QNiZ7QWEuDBk1zw0/Q2LrAPZv3tycEFBsuUwc= github.com/iwind/TeaGo v0.0.0-20200916035436-dbdbf25f8524 h1:WnARCxusBjX5vJ8E71AjhuxSeAMGfEiYvi42XVK/Yf8= github.com/iwind/TeaGo v0.0.0-20200916035436-dbdbf25f8524/go.mod h1:KU4mS7QNiZ7QWEuDBk1zw0/Q2LrAPZv3tycEFBsuUwc= +github.com/iwind/TeaGo v0.0.0-20200923021120-f5d76441fe9e h1:/xn7wUvlwaoA5IkdBUctv2OQbJSZ0/Dw8qRJmn55sJk= +github.com/iwind/TeaGo v0.0.0-20200923021120-f5d76441fe9e/go.mod h1:KU4mS7QNiZ7QWEuDBk1zw0/Q2LrAPZv3tycEFBsuUwc= github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= diff --git a/internal/db/models/admin_model.go b/internal/db/models/admin_model.go index e77e0f13..3cd2f2f5 100644 --- a/internal/db/models/admin_model.go +++ b/internal/db/models/admin_model.go @@ -7,8 +7,8 @@ type Admin struct { Password string `field:"password"` // 密码 Fullname string `field:"fullname"` // 全名 IsSuper uint8 `field:"isSuper"` // 是否为超级管理员 - CreatedAt uint32 `field:"createdAt"` // 创建时间 - UpdatedAt uint32 `field:"updatedAt"` // 修改时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 + UpdatedAt uint64 `field:"updatedAt"` // 修改时间 State uint8 `field:"state"` // 状态 } diff --git a/internal/db/models/api_node_dao.go b/internal/db/models/api_node_dao.go index 60981399..b7fcad2d 100644 --- a/internal/db/models/api_node_dao.go +++ b/internal/db/models/api_node_dao.go @@ -20,7 +20,7 @@ func NewAPINodeDAO() *APINodeDAO { return dbs.NewDAO(&APINodeDAO{ DAOObject: dbs.DAOObject{ DB: Tea.Env, - Table: "edgeApiNodes", + Table: "edgeAPINodes", Model: new(APINode), PkName: "id", }, diff --git a/internal/db/models/api_node_model.go b/internal/db/models/api_node_model.go index 0e77451f..03baccc0 100644 --- a/internal/db/models/api_node_model.go +++ b/internal/db/models/api_node_model.go @@ -1,6 +1,6 @@ package models -// +// API节点 type APINode struct { Id uint32 `field:"id"` // ID IsOn uint8 `field:"isOn"` // 是否启用 @@ -9,10 +9,13 @@ type APINode struct { Secret string `field:"secret"` // 密钥 Name string `field:"name"` // 名称 Description string `field:"description"` // 描述 - Host string `field:"host"` // 地址 + Host string `field:"host"` // 主机 Port uint32 `field:"port"` // 端口 Order uint32 `field:"order"` // 排序 State uint8 `field:"state"` // 状态 + CreatedAt uint64 `field:"createdAt"` // 创建时间 + AdminId uint32 `field:"adminId"` // 管理员ID + Weight uint32 `field:"weight"` // 权重 } type APINodeOperator struct { @@ -23,10 +26,13 @@ type APINodeOperator struct { Secret interface{} // 密钥 Name interface{} // 名称 Description interface{} // 描述 - Host interface{} // 地址 + Host interface{} // 主机 Port interface{} // 端口 Order interface{} // 排序 State interface{} // 状态 + CreatedAt interface{} // 创建时间 + AdminId interface{} // 管理员ID + Weight interface{} // 权重 } func NewAPINodeOperator() *APINodeOperator { diff --git a/internal/db/models/api_token_dao.go b/internal/db/models/api_token_dao.go index 641d2a7d..23c256ec 100644 --- a/internal/db/models/api_token_dao.go +++ b/internal/db/models/api_token_dao.go @@ -17,7 +17,7 @@ func NewApiTokenDAO() *ApiTokenDAO { return dbs.NewDAO(&ApiTokenDAO{ DAOObject: dbs.DAOObject{ DB: Tea.Env, - Table: "edgeApiTokens", + Table: "edgeAPITokens", Model: new(ApiToken), PkName: "id", }, diff --git a/internal/db/models/db_node_dao.go b/internal/db/models/db_node_dao.go new file mode 100644 index 00000000..a8093e35 --- /dev/null +++ b/internal/db/models/db_node_dao.go @@ -0,0 +1,65 @@ +package models + +import ( + _ "github.com/go-sql-driver/mysql" + "github.com/iwind/TeaGo/Tea" + "github.com/iwind/TeaGo/dbs" +) + +const ( + DBNodeStateEnabled = 1 // 已启用 + DBNodeStateDisabled = 0 // 已禁用 +) + +type DBNodeDAO dbs.DAO + +func NewDBNodeDAO() *DBNodeDAO { + return dbs.NewDAO(&DBNodeDAO{ + DAOObject: dbs.DAOObject{ + DB: Tea.Env, + Table: "edgeDBNodes", + Model: new(DBNode), + PkName: "id", + }, + }).(*DBNodeDAO) +} + +var SharedDBNodeDAO = NewDBNodeDAO() + +// 启用条目 +func (this *DBNodeDAO) EnableDBNode(id uint32) error { + _, err := this.Query(). + Pk(id). + Set("state", DBNodeStateEnabled). + Update() + return err +} + +// 禁用条目 +func (this *DBNodeDAO) DisableDBNode(id uint32) error { + _, err := this.Query(). + Pk(id). + Set("state", DBNodeStateDisabled). + Update() + return err +} + +// 查找启用中的条目 +func (this *DBNodeDAO) FindEnabledDBNode(id uint32) (*DBNode, error) { + result, err := this.Query(). + Pk(id). + Attr("state", DBNodeStateEnabled). + Find() + if result == nil { + return nil, err + } + return result.(*DBNode), err +} + +// 根据主键查找名称 +func (this *DBNodeDAO) FindDBNodeName(id uint32) (string, error) { + return this.Query(). + Pk(id). + Result("name"). + FindStringCol("") +} diff --git a/internal/db/models/db_node_dao_test.go b/internal/db/models/db_node_dao_test.go new file mode 100644 index 00000000..97c24b56 --- /dev/null +++ b/internal/db/models/db_node_dao_test.go @@ -0,0 +1,5 @@ +package models + +import ( + _ "github.com/go-sql-driver/mysql" +) diff --git a/internal/db/models/db_node_model.go b/internal/db/models/db_node_model.go new file mode 100644 index 00000000..04fcca54 --- /dev/null +++ b/internal/db/models/db_node_model.go @@ -0,0 +1,44 @@ +package models + +// 数据库节点 +type DBNode struct { + Id uint32 `field:"id"` // ID + IsOn uint8 `field:"isOn"` // 是否启用 + Role string `field:"role"` // 数据库角色 + Name string `field:"name"` // 名称 + Description string `field:"description"` // 描述 + Host string `field:"host"` // 主机 + Port uint32 `field:"port"` // 端口 + Username string `field:"username"` // 用户名 + Password string `field:"password"` // 密码 + Charset string `field:"charset"` // 通讯字符集 + ConnTimeout uint32 `field:"connTimeout"` // 连接超时时间(秒) + State uint8 `field:"state"` // 状态 + CreatedAt uint64 `field:"createdAt"` // 创建时间 + Weight uint32 `field:"weight"` // 权重 + Order uint32 `field:"order"` // 排序 + AdminId uint32 `field:"adminId"` // 管理员ID +} + +type DBNodeOperator struct { + Id interface{} // ID + IsOn interface{} // 是否启用 + Role interface{} // 数据库角色 + Name interface{} // 名称 + Description interface{} // 描述 + Host interface{} // 主机 + Port interface{} // 端口 + Username interface{} // 用户名 + Password interface{} // 密码 + Charset interface{} // 通讯字符集 + ConnTimeout interface{} // 连接超时时间(秒) + State interface{} // 状态 + CreatedAt interface{} // 创建时间 + Weight interface{} // 权重 + Order interface{} // 排序 + AdminId interface{} // 管理员ID +} + +func NewDBNodeOperator() *DBNodeOperator { + return &DBNodeOperator{} +} diff --git a/internal/db/models/db_node_model_ext.go b/internal/db/models/db_node_model_ext.go new file mode 100644 index 00000000..2640e7f9 --- /dev/null +++ b/internal/db/models/db_node_model_ext.go @@ -0,0 +1 @@ +package models diff --git a/internal/db/models/file_model.go b/internal/db/models/file_model.go index e51f15fc..e8c93bbf 100644 --- a/internal/db/models/file_model.go +++ b/internal/db/models/file_model.go @@ -1,12 +1,14 @@ package models -// +// 文件管理 type File struct { Id uint32 `field:"id"` // ID + AdminId uint32 `field:"adminId"` // 管理员ID + UserId uint32 `field:"userId"` // 用户ID Description string `field:"description"` // 文件描述 Filename string `field:"filename"` // 文件名 Size uint32 `field:"size"` // 文件尺寸 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 Order uint32 `field:"order"` // 排序 Type string `field:"type"` // 类型 State uint8 `field:"state"` // 状态 @@ -14,6 +16,8 @@ type File struct { type FileOperator struct { Id interface{} // ID + AdminId interface{} // 管理员ID + UserId interface{} // 用户ID Description interface{} // 文件描述 Filename interface{} // 文件名 Size interface{} // 文件尺寸 diff --git a/internal/db/models/http_cache_policy_model.go b/internal/db/models/http_cache_policy_model.go index a71b5bdc..0c1817b0 100644 --- a/internal/db/models/http_cache_policy_model.go +++ b/internal/db/models/http_cache_policy_model.go @@ -1,6 +1,6 @@ package models -// +// HTTP缓存策略 type HTTPCachePolicy struct { Id uint32 `field:"id"` // ID AdminId uint32 `field:"adminId"` // 管理员ID @@ -16,8 +16,8 @@ type HTTPCachePolicy struct { SkipCacheControlValues string `field:"skipCacheControlValues"` // 忽略的cache-control SkipSetCookie uint8 `field:"skipSetCookie"` // 是否忽略Set-Cookie Header EnableRequestCachePragma uint8 `field:"enableRequestCachePragma"` // 是否支持客户端的Pragma: no-cache - Cond string `field:"cond"` // 请求条件 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + Conds string `field:"conds"` // 请求条件 + CreatedAt uint64 `field:"createdAt"` // 创建时间 State uint8 `field:"state"` // 状态 } @@ -36,7 +36,7 @@ type HTTPCachePolicyOperator struct { SkipCacheControlValues interface{} // 忽略的cache-control SkipSetCookie interface{} // 是否忽略Set-Cookie Header EnableRequestCachePragma interface{} // 是否支持客户端的Pragma: no-cache - Cond interface{} // 请求条件 + Conds interface{} // 请求条件 CreatedAt interface{} // 创建时间 State interface{} // 状态 } diff --git a/internal/db/models/http_firewall_policy_model.go b/internal/db/models/http_firewall_policy_model.go index a45afda4..69de8b56 100644 --- a/internal/db/models/http_firewall_policy_model.go +++ b/internal/db/models/http_firewall_policy_model.go @@ -10,6 +10,9 @@ type HTTPFirewallPolicy struct { CreatedAt uint64 `field:"createdAt"` // 创建时间 IsOn uint8 `field:"isOn"` // 是否启用 Name string `field:"name"` // 名称 + Inbound string `field:"inbound"` // 入站规则 + Outbound string `field:"outbound"` // 出站规则 + Conds string `field:"conds"` // 条件 } type HTTPFirewallPolicyOperator struct { @@ -21,6 +24,9 @@ type HTTPFirewallPolicyOperator struct { CreatedAt interface{} // 创建时间 IsOn interface{} // 是否启用 Name interface{} // 名称 + Inbound interface{} // 入站规则 + Outbound interface{} // 出站规则 + Conds interface{} // 条件 } func NewHTTPFirewallPolicyOperator() *HTTPFirewallPolicyOperator { diff --git a/internal/db/models/http_firewall_rule_dao.go b/internal/db/models/http_firewall_rule_dao.go new file mode 100644 index 00000000..176a0db3 --- /dev/null +++ b/internal/db/models/http_firewall_rule_dao.go @@ -0,0 +1,57 @@ +package models + +import ( + _ "github.com/go-sql-driver/mysql" + "github.com/iwind/TeaGo/Tea" + "github.com/iwind/TeaGo/dbs" +) + +const ( + HTTPFirewallRuleStateEnabled = 1 // 已启用 + HTTPFirewallRuleStateDisabled = 0 // 已禁用 +) + +type HTTPFirewallRuleDAO dbs.DAO + +func NewHTTPFirewallRuleDAO() *HTTPFirewallRuleDAO { + return dbs.NewDAO(&HTTPFirewallRuleDAO{ + DAOObject: dbs.DAOObject{ + DB: Tea.Env, + Table: "edgeHTTPFirewallRules", + Model: new(HTTPFirewallRule), + PkName: "id", + }, + }).(*HTTPFirewallRuleDAO) +} + +var SharedHTTPFirewallRuleDAO = NewHTTPFirewallRuleDAO() + +// 启用条目 +func (this *HTTPFirewallRuleDAO) EnableHTTPFirewallRule(id uint32) error { + _, err := this.Query(). + Pk(id). + Set("state", HTTPFirewallRuleStateEnabled). + Update() + return err +} + +// 禁用条目 +func (this *HTTPFirewallRuleDAO) DisableHTTPFirewallRule(id uint32) error { + _, err := this.Query(). + Pk(id). + Set("state", HTTPFirewallRuleStateDisabled). + Update() + return err +} + +// 查找启用中的条目 +func (this *HTTPFirewallRuleDAO) FindEnabledHTTPFirewallRule(id uint32) (*HTTPFirewallRule, error) { + result, err := this.Query(). + Pk(id). + Attr("state", HTTPFirewallRuleStateEnabled). + Find() + if result == nil { + return nil, err + } + return result.(*HTTPFirewallRule), err +} diff --git a/internal/db/models/http_firewall_rule_dao_test.go b/internal/db/models/http_firewall_rule_dao_test.go new file mode 100644 index 00000000..97c24b56 --- /dev/null +++ b/internal/db/models/http_firewall_rule_dao_test.go @@ -0,0 +1,5 @@ +package models + +import ( + _ "github.com/go-sql-driver/mysql" +) diff --git a/internal/db/models/http_firewall_rule_group_dao.go b/internal/db/models/http_firewall_rule_group_dao.go new file mode 100644 index 00000000..1effb379 --- /dev/null +++ b/internal/db/models/http_firewall_rule_group_dao.go @@ -0,0 +1,65 @@ +package models + +import ( + _ "github.com/go-sql-driver/mysql" + "github.com/iwind/TeaGo/Tea" + "github.com/iwind/TeaGo/dbs" +) + +const ( + HTTPFirewallRuleGroupStateEnabled = 1 // 已启用 + HTTPFirewallRuleGroupStateDisabled = 0 // 已禁用 +) + +type HTTPFirewallRuleGroupDAO dbs.DAO + +func NewHTTPFirewallRuleGroupDAO() *HTTPFirewallRuleGroupDAO { + return dbs.NewDAO(&HTTPFirewallRuleGroupDAO{ + DAOObject: dbs.DAOObject{ + DB: Tea.Env, + Table: "edgeHTTPFirewallRuleGroups", + Model: new(HTTPFirewallRuleGroup), + PkName: "id", + }, + }).(*HTTPFirewallRuleGroupDAO) +} + +var SharedHTTPFirewallRuleGroupDAO = NewHTTPFirewallRuleGroupDAO() + +// 启用条目 +func (this *HTTPFirewallRuleGroupDAO) EnableHTTPFirewallRuleGroup(id uint32) error { + _, err := this.Query(). + Pk(id). + Set("state", HTTPFirewallRuleGroupStateEnabled). + Update() + return err +} + +// 禁用条目 +func (this *HTTPFirewallRuleGroupDAO) DisableHTTPFirewallRuleGroup(id uint32) error { + _, err := this.Query(). + Pk(id). + Set("state", HTTPFirewallRuleGroupStateDisabled). + Update() + return err +} + +// 查找启用中的条目 +func (this *HTTPFirewallRuleGroupDAO) FindEnabledHTTPFirewallRuleGroup(id uint32) (*HTTPFirewallRuleGroup, error) { + result, err := this.Query(). + Pk(id). + Attr("state", HTTPFirewallRuleGroupStateEnabled). + Find() + if result == nil { + return nil, err + } + return result.(*HTTPFirewallRuleGroup), err +} + +// 根据主键查找名称 +func (this *HTTPFirewallRuleGroupDAO) FindHTTPFirewallRuleGroupName(id uint32) (string, error) { + return this.Query(). + Pk(id). + Result("name"). + FindStringCol("") +} diff --git a/internal/db/models/http_firewall_rule_group_dao_test.go b/internal/db/models/http_firewall_rule_group_dao_test.go new file mode 100644 index 00000000..97c24b56 --- /dev/null +++ b/internal/db/models/http_firewall_rule_group_dao_test.go @@ -0,0 +1,5 @@ +package models + +import ( + _ "github.com/go-sql-driver/mysql" +) diff --git a/internal/db/models/http_firewall_rule_group_model.go b/internal/db/models/http_firewall_rule_group_model.go new file mode 100644 index 00000000..833ae4ef --- /dev/null +++ b/internal/db/models/http_firewall_rule_group_model.go @@ -0,0 +1,32 @@ +package models + +// 防火墙规则分组 +type HTTPFirewallRuleGroup struct { + Id uint32 `field:"id"` // ID + IsOn uint8 `field:"isOn"` // 是否启用 + Name string `field:"name"` // 名称 + Description string `field:"description"` // 描述 + Code string `field:"code"` // 代号 + AdminId uint32 `field:"adminId"` // 管理员ID + UserId uint32 `field:"userId"` // 用户ID + State uint8 `field:"state"` // 状态 + Sets string `field:"sets"` // 规则集列表 + CreatedAt uint64 `field:"createdAt"` // 创建时间 +} + +type HTTPFirewallRuleGroupOperator struct { + Id interface{} // ID + IsOn interface{} // 是否启用 + Name interface{} // 名称 + Description interface{} // 描述 + Code interface{} // 代号 + AdminId interface{} // 管理员ID + UserId interface{} // 用户ID + State interface{} // 状态 + Sets interface{} // 规则集列表 + CreatedAt interface{} // 创建时间 +} + +func NewHTTPFirewallRuleGroupOperator() *HTTPFirewallRuleGroupOperator { + return &HTTPFirewallRuleGroupOperator{} +} diff --git a/internal/db/models/http_firewall_rule_group_model_ext.go b/internal/db/models/http_firewall_rule_group_model_ext.go new file mode 100644 index 00000000..2640e7f9 --- /dev/null +++ b/internal/db/models/http_firewall_rule_group_model_ext.go @@ -0,0 +1 @@ +package models diff --git a/internal/db/models/http_firewall_rule_model.go b/internal/db/models/http_firewall_rule_model.go new file mode 100644 index 00000000..3db1a678 --- /dev/null +++ b/internal/db/models/http_firewall_rule_model.go @@ -0,0 +1,34 @@ +package models + +// 防火墙规则 +type HTTPFirewallRule struct { + Id uint32 `field:"id"` // ID + IsOn uint8 `field:"isOn"` // 是否启用 + Param string `field:"param"` // 参数 + Operator string `field:"operator"` // 操作符 + Value string `field:"value"` // 对比值 + IsCaseInsensitive uint8 `field:"isCaseInsensitive"` // 是否大小写不敏感 + CheckpointOptions string `field:"checkpointOptions"` // 检查点参数 + State uint8 `field:"state"` // 状态 + CreatedAt uint64 `field:"createdAt"` // 创建时间 + AdminId uint32 `field:"adminId"` // 管理员ID + UserId uint32 `field:"userId"` // 用户ID +} + +type HTTPFirewallRuleOperator struct { + Id interface{} // ID + IsOn interface{} // 是否启用 + Param interface{} // 参数 + Operator interface{} // 操作符 + Value interface{} // 对比值 + IsCaseInsensitive interface{} // 是否大小写不敏感 + CheckpointOptions interface{} // 检查点参数 + State interface{} // 状态 + CreatedAt interface{} // 创建时间 + AdminId interface{} // 管理员ID + UserId interface{} // 用户ID +} + +func NewHTTPFirewallRuleOperator() *HTTPFirewallRuleOperator { + return &HTTPFirewallRuleOperator{} +} diff --git a/internal/db/models/http_firewall_rule_model_ext.go b/internal/db/models/http_firewall_rule_model_ext.go new file mode 100644 index 00000000..2640e7f9 --- /dev/null +++ b/internal/db/models/http_firewall_rule_model_ext.go @@ -0,0 +1 @@ +package models diff --git a/internal/db/models/http_firewall_rule_set_dao.go b/internal/db/models/http_firewall_rule_set_dao.go new file mode 100644 index 00000000..2856d080 --- /dev/null +++ b/internal/db/models/http_firewall_rule_set_dao.go @@ -0,0 +1,65 @@ +package models + +import ( + _ "github.com/go-sql-driver/mysql" + "github.com/iwind/TeaGo/Tea" + "github.com/iwind/TeaGo/dbs" +) + +const ( + HTTPFirewallRuleSetStateEnabled = 1 // 已启用 + HTTPFirewallRuleSetStateDisabled = 0 // 已禁用 +) + +type HTTPFirewallRuleSetDAO dbs.DAO + +func NewHTTPFirewallRuleSetDAO() *HTTPFirewallRuleSetDAO { + return dbs.NewDAO(&HTTPFirewallRuleSetDAO{ + DAOObject: dbs.DAOObject{ + DB: Tea.Env, + Table: "edgeHTTPFirewallRuleSets", + Model: new(HTTPFirewallRuleSet), + PkName: "id", + }, + }).(*HTTPFirewallRuleSetDAO) +} + +var SharedHTTPFirewallRuleSetDAO = NewHTTPFirewallRuleSetDAO() + +// 启用条目 +func (this *HTTPFirewallRuleSetDAO) EnableHTTPFirewallRuleSet(id uint32) error { + _, err := this.Query(). + Pk(id). + Set("state", HTTPFirewallRuleSetStateEnabled). + Update() + return err +} + +// 禁用条目 +func (this *HTTPFirewallRuleSetDAO) DisableHTTPFirewallRuleSet(id uint32) error { + _, err := this.Query(). + Pk(id). + Set("state", HTTPFirewallRuleSetStateDisabled). + Update() + return err +} + +// 查找启用中的条目 +func (this *HTTPFirewallRuleSetDAO) FindEnabledHTTPFirewallRuleSet(id uint32) (*HTTPFirewallRuleSet, error) { + result, err := this.Query(). + Pk(id). + Attr("state", HTTPFirewallRuleSetStateEnabled). + Find() + if result == nil { + return nil, err + } + return result.(*HTTPFirewallRuleSet), err +} + +// 根据主键查找名称 +func (this *HTTPFirewallRuleSetDAO) FindHTTPFirewallRuleSetName(id uint32) (string, error) { + return this.Query(). + Pk(id). + Result("name"). + FindStringCol("") +} diff --git a/internal/db/models/http_firewall_rule_set_dao_test.go b/internal/db/models/http_firewall_rule_set_dao_test.go new file mode 100644 index 00000000..97c24b56 --- /dev/null +++ b/internal/db/models/http_firewall_rule_set_dao_test.go @@ -0,0 +1,5 @@ +package models + +import ( + _ "github.com/go-sql-driver/mysql" +) diff --git a/internal/db/models/http_firewall_rule_set_model.go b/internal/db/models/http_firewall_rule_set_model.go new file mode 100644 index 00000000..bc54822a --- /dev/null +++ b/internal/db/models/http_firewall_rule_set_model.go @@ -0,0 +1,34 @@ +package models + +// 防火墙规则集 +type HTTPFirewallRuleSet struct { + Id uint32 `field:"id"` // ID + IsOn uint8 `field:"isOn"` // 是否启用 + Code string `field:"code"` // 代号 + Name string `field:"name"` // 名称 + Description string `field:"description"` // 描述 + CreatedAt uint64 `field:"createdAt"` // 创建时间 + Rules string `field:"rules"` // 规则列表 + Connector string `field:"connector"` // 规则之间的关系 + State uint8 `field:"state"` // 状态 + AdminId uint32 `field:"adminId"` // 管理员ID + UserId uint32 `field:"userId"` // 用户ID +} + +type HTTPFirewallRuleSetOperator struct { + Id interface{} // ID + IsOn interface{} // 是否启用 + Code interface{} // 代号 + Name interface{} // 名称 + Description interface{} // 描述 + CreatedAt interface{} // 创建时间 + Rules interface{} // 规则列表 + Connector interface{} // 规则之间的关系 + State interface{} // 状态 + AdminId interface{} // 管理员ID + UserId interface{} // 用户ID +} + +func NewHTTPFirewallRuleSetOperator() *HTTPFirewallRuleSetOperator { + return &HTTPFirewallRuleSetOperator{} +} diff --git a/internal/db/models/http_firewall_rule_set_model_ext.go b/internal/db/models/http_firewall_rule_set_model_ext.go new file mode 100644 index 00000000..2640e7f9 --- /dev/null +++ b/internal/db/models/http_firewall_rule_set_model_ext.go @@ -0,0 +1 @@ +package models diff --git a/internal/db/models/http_gzip_model.go b/internal/db/models/http_gzip_model.go index 9fe1dcd4..00f5bc1a 100644 --- a/internal/db/models/http_gzip_model.go +++ b/internal/db/models/http_gzip_model.go @@ -10,7 +10,8 @@ type HTTPGzip struct { MinLength string `field:"minLength"` // 可压缩最小值 MaxLength string `field:"maxLength"` // 可压缩最大值 State uint8 `field:"state"` // 状态 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 + Conds string `field:"conds"` // 条件 } type HTTPGzipOperator struct { @@ -23,6 +24,7 @@ type HTTPGzipOperator struct { MaxLength interface{} // 可压缩最大值 State interface{} // 状态 CreatedAt interface{} // 创建时间 + Conds interface{} // 条件 } func NewHTTPGzipOperator() *HTTPGzipOperator { diff --git a/internal/db/models/http_header_model.go b/internal/db/models/http_header_model.go index 35223c8a..146b8d20 100644 --- a/internal/db/models/http_header_model.go +++ b/internal/db/models/http_header_model.go @@ -1,6 +1,6 @@ package models -// +// HTTP Header type HTTPHeader struct { Id uint32 `field:"id"` // ID AdminId uint32 `field:"adminId"` // 管理员ID @@ -12,7 +12,7 @@ type HTTPHeader struct { Order uint32 `field:"order"` // 排序 Status string `field:"status"` // 状态码设置 State uint8 `field:"state"` // 状态 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 } type HTTPHeaderOperator struct { diff --git a/internal/db/models/http_header_policy_model.go b/internal/db/models/http_header_policy_model.go index 9f44e2bb..1bc4545f 100644 --- a/internal/db/models/http_header_policy_model.go +++ b/internal/db/models/http_header_policy_model.go @@ -7,7 +7,7 @@ type HTTPHeaderPolicy struct { State uint8 `field:"state"` // 状态 AdminId uint32 `field:"adminId"` // 管理员ID UserId uint32 `field:"userId"` // 用户ID - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 AddHeaders string `field:"addHeaders"` // 添加的Header AddTrailers string `field:"addTrailers"` // 添加的Trailers SetHeaders string `field:"setHeaders"` // 设置Header diff --git a/internal/db/models/http_page_model.go b/internal/db/models/http_page_model.go index bf8bb8b0..1d1c65c5 100644 --- a/internal/db/models/http_page_model.go +++ b/internal/db/models/http_page_model.go @@ -10,7 +10,7 @@ type HTTPPage struct { Url string `field:"url"` // 页面URL NewStatus int32 `field:"newStatus"` // 新状态码 State uint8 `field:"state"` // 状态 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 } type HTTPPageOperator struct { diff --git a/internal/db/models/http_web_model.go b/internal/db/models/http_web_model.go index 33c11467..4d3c2ba0 100644 --- a/internal/db/models/http_web_model.go +++ b/internal/db/models/http_web_model.go @@ -8,7 +8,7 @@ type HTTPWeb struct { AdminId uint32 `field:"adminId"` // 管理员ID UserId uint32 `field:"userId"` // 用户ID State uint8 `field:"state"` // 状态 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 Root string `field:"root"` // 资源根目录 Charset string `field:"charset"` // 字符集 Shutdown string `field:"shutdown"` // 临时关闭页面配置 diff --git a/internal/db/models/log_model.go b/internal/db/models/log_model.go index 261f5403..846022a3 100644 --- a/internal/db/models/log_model.go +++ b/internal/db/models/log_model.go @@ -5,7 +5,7 @@ type Log struct { Id uint32 `field:"id"` // ID Level string `field:"level"` // 级别 Description string `field:"description"` // 描述 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 Action string `field:"action"` // 动作 UserId uint32 `field:"userId"` // 用户ID AdminId uint32 `field:"adminId"` // 管理员ID diff --git a/internal/db/models/log_model_ext.go b/internal/db/models/log_model_ext.go new file mode 100644 index 00000000..2640e7f9 --- /dev/null +++ b/internal/db/models/log_model_ext.go @@ -0,0 +1 @@ +package models diff --git a/internal/db/models/node_cluster_model.go b/internal/db/models/node_cluster_model.go index fedc3f0c..1b53597a 100644 --- a/internal/db/models/node_cluster_model.go +++ b/internal/db/models/node_cluster_model.go @@ -10,7 +10,7 @@ type NodeCluster struct { ApiNodes string `field:"apiNodes"` // 使用的API节点 InstallDir string `field:"installDir"` // 安装目录 Order uint32 `field:"order"` // 排序 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 GrantId uint32 `field:"grantId"` // 默认认证方式 State uint8 `field:"state"` // 状态 } diff --git a/internal/db/models/node_grant_model.go b/internal/db/models/node_grant_model.go index cf699914..5d3d31ec 100644 --- a/internal/db/models/node_grant_model.go +++ b/internal/db/models/node_grant_model.go @@ -1,6 +1,6 @@ package models -// +// 节点授权 type NodeGrant struct { Id uint32 `field:"id"` // ID Name string `field:"name"` // 名称 @@ -12,6 +12,7 @@ type NodeGrant struct { Description string `field:"description"` // 备注 NodeId uint32 `field:"nodeId"` // 专有节点 State uint8 `field:"state"` // 状态 + CreatedAt uint64 `field:"createdAt"` // 创建时间 } type NodeGrantOperator struct { @@ -25,6 +26,7 @@ type NodeGrantOperator struct { Description interface{} // 备注 NodeId interface{} // 专有节点 State interface{} // 状态 + CreatedAt interface{} // 创建时间 } func NewNodeGrantOperator() *NodeGrantOperator { diff --git a/internal/db/models/node_group_model.go b/internal/db/models/node_group_model.go index 26d3ec8b..0965ae2b 100644 --- a/internal/db/models/node_group_model.go +++ b/internal/db/models/node_group_model.go @@ -5,7 +5,7 @@ type NodeGroup struct { Id uint32 `field:"id"` // ID Name string `field:"name"` // 名称 Order uint32 `field:"order"` // 排序 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 State uint8 `field:"state"` // 状态 } diff --git a/internal/db/models/node_group_model_ext.go b/internal/db/models/node_group_model_ext.go new file mode 100644 index 00000000..2640e7f9 --- /dev/null +++ b/internal/db/models/node_group_model_ext.go @@ -0,0 +1 @@ +package models diff --git a/internal/db/models/node_model.go b/internal/db/models/node_model.go index 3613d3d3..eea6cec6 100644 --- a/internal/db/models/node_model.go +++ b/internal/db/models/node_model.go @@ -13,7 +13,7 @@ type Node struct { ClusterId uint32 `field:"clusterId"` // 集群ID RegionId uint32 `field:"regionId"` // 区域ID GroupId uint32 `field:"groupId"` // 分组ID - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 Status string `field:"status"` // 最新的状态 Version uint32 `field:"version"` // 当前版本号 LatestVersion uint32 `field:"latestVersion"` // 最后版本号 diff --git a/internal/db/models/origin_model.go b/internal/db/models/origin_model.go index 96fc2d0e..cb5a71f4 100644 --- a/internal/db/models/origin_model.go +++ b/internal/db/models/origin_model.go @@ -25,7 +25,7 @@ type Origin struct { HealthCheck string `field:"healthCheck"` // 健康检查设置 Cert string `field:"cert"` // 证书设置 Ftp string `field:"ftp"` // FTP相关设置 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 State uint8 `field:"state"` // 状态 } diff --git a/internal/db/models/provider_model.go b/internal/db/models/provider_model.go index 471288be..0ea4c3f4 100644 --- a/internal/db/models/provider_model.go +++ b/internal/db/models/provider_model.go @@ -6,8 +6,8 @@ type Provider struct { Username string `field:"username"` // 用户名 Password string `field:"password"` // 密码 Fullname string `field:"fullname"` // 真实姓名 - CreatedAt uint32 `field:"createdAt"` // 创建时间 - UpdatedAt uint32 `field:"updatedAt"` // 修改时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 + UpdatedAt uint64 `field:"updatedAt"` // 修改时间 State uint8 `field:"state"` // 状态 } diff --git a/internal/db/models/provider_model_ext.go b/internal/db/models/provider_model_ext.go new file mode 100644 index 00000000..2640e7f9 --- /dev/null +++ b/internal/db/models/provider_model_ext.go @@ -0,0 +1 @@ +package models diff --git a/internal/db/models/reverse_proxy_model.go b/internal/db/models/reverse_proxy_model.go index 0acba404..35189d55 100644 --- a/internal/db/models/reverse_proxy_model.go +++ b/internal/db/models/reverse_proxy_model.go @@ -11,7 +11,7 @@ type ReverseProxy struct { PrimaryOrigins string `field:"primaryOrigins"` // 主要源站 BackupOrigins string `field:"backupOrigins"` // 备用源站 State uint8 `field:"state"` // 状态 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 } type ReverseProxyOperator struct { diff --git a/internal/db/models/server_group_model.go b/internal/db/models/server_group_model.go index 6dec8d83..573aff58 100644 --- a/internal/db/models/server_group_model.go +++ b/internal/db/models/server_group_model.go @@ -7,7 +7,7 @@ type ServerGroup struct { UserId uint32 `field:"userId"` // 用户ID Name string `field:"name"` // 名称 Order uint32 `field:"order"` // 排序 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 State uint8 `field:"state"` // 状态 } diff --git a/internal/db/models/server_group_model_ext.go b/internal/db/models/server_group_model_ext.go new file mode 100644 index 00000000..2640e7f9 --- /dev/null +++ b/internal/db/models/server_group_model_ext.go @@ -0,0 +1 @@ +package models diff --git a/internal/db/models/server_model.go b/internal/db/models/server_model.go index 8cf4f2db..81d1079b 100644 --- a/internal/db/models/server_model.go +++ b/internal/db/models/server_model.go @@ -25,7 +25,7 @@ type Server struct { IncludeNodes string `field:"includeNodes"` // 部署条件 ExcludeNodes string `field:"excludeNodes"` // 节点排除条件 Version uint32 `field:"version"` // 版本号 - CreatedAt uint32 `field:"createdAt"` // 创建时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 IsUpdating uint8 `field:"isUpdating"` // 是否正在更新 State uint8 `field:"state"` // 状态 } diff --git a/internal/db/models/tcp_firewall_policy_dao.go b/internal/db/models/tcp_firewall_policy_dao.go new file mode 100644 index 00000000..d62be0c7 --- /dev/null +++ b/internal/db/models/tcp_firewall_policy_dao.go @@ -0,0 +1,22 @@ +package models + +import ( + _ "github.com/go-sql-driver/mysql" + "github.com/iwind/TeaGo/Tea" + "github.com/iwind/TeaGo/dbs" +) + +type TCPFirewallPolicyDAO dbs.DAO + +func NewTCPFirewallPolicyDAO() *TCPFirewallPolicyDAO { + return dbs.NewDAO(&TCPFirewallPolicyDAO{ + DAOObject: dbs.DAOObject{ + DB: Tea.Env, + Table: "edgeTCPFirewallPolicies", + Model: new(TCPFirewallPolicy), + PkName: "id", + }, + }).(*TCPFirewallPolicyDAO) +} + +var SharedTCPFirewallPolicyDAO = NewTCPFirewallPolicyDAO() diff --git a/internal/db/models/tcp_firewall_policy_dao_test.go b/internal/db/models/tcp_firewall_policy_dao_test.go new file mode 100644 index 00000000..97c24b56 --- /dev/null +++ b/internal/db/models/tcp_firewall_policy_dao_test.go @@ -0,0 +1,5 @@ +package models + +import ( + _ "github.com/go-sql-driver/mysql" +) diff --git a/internal/db/models/tcp_firewall_policy_model.go b/internal/db/models/tcp_firewall_policy_model.go new file mode 100644 index 00000000..c92ff181 --- /dev/null +++ b/internal/db/models/tcp_firewall_policy_model.go @@ -0,0 +1,20 @@ +package models + +// TCP防火墙 +type TCPFirewallPolicy struct { + Id uint32 `field:"id"` // ID + AdminId int32 `field:"adminId"` // 管理员ID + UserId uint32 `field:"userId"` // 用户ID + TemplateId uint32 `field:"templateId"` // 模版ID +} + +type TCPFirewallPolicyOperator struct { + Id interface{} // ID + AdminId interface{} // 管理员ID + UserId interface{} // 用户ID + TemplateId interface{} // 模版ID +} + +func NewTCPFirewallPolicyOperator() *TCPFirewallPolicyOperator { + return &TCPFirewallPolicyOperator{} +} diff --git a/internal/db/models/tcp_firewall_policy_model_ext.go b/internal/db/models/tcp_firewall_policy_model_ext.go new file mode 100644 index 00000000..2640e7f9 --- /dev/null +++ b/internal/db/models/tcp_firewall_policy_model_ext.go @@ -0,0 +1 @@ +package models diff --git a/internal/db/models/user_model.go b/internal/db/models/user_model.go index cc1c2839..b883ca19 100644 --- a/internal/db/models/user_model.go +++ b/internal/db/models/user_model.go @@ -1,13 +1,13 @@ package models -// +// 用户 type User struct { Id uint32 `field:"id"` // ID Username string `field:"username"` // 用户名 Password string `field:"password"` // 密码 Fullname string `field:"fullname"` // 真实姓名 - CreatedAt uint32 `field:"createdAt"` // 创建时间 - UpdatedAt uint32 `field:"updatedAt"` // 修改时间 + CreatedAt uint64 `field:"createdAt"` // 创建时间 + UpdatedAt uint64 `field:"updatedAt"` // 修改时间 State uint8 `field:"state"` // 状态 } diff --git a/internal/db/models/user_model_ext.go b/internal/db/models/user_model_ext.go new file mode 100644 index 00000000..2640e7f9 --- /dev/null +++ b/internal/db/models/user_model_ext.go @@ -0,0 +1 @@ +package models