channel 表添加 IP 白名单字段用于快照保存与展示
This commit is contained in:
11
README.md
11
README.md
@@ -1,12 +1,13 @@
|
||||
## TODO
|
||||
|
||||
## 枚举字典
|
||||
|
||||
### 产品
|
||||
|
||||
| 代码 | 缩写 | 产品 |
|
||||
|----------------------|-----|------|
|
||||
| proxy/shared-static | pss | 动态代理 |
|
||||
| proxy/shared-rotate | psr | 隧道代理 |
|
||||
| proxy/private-static | pps | 独享代理 |
|
||||
| 代码 | 产品 |
|
||||
|-------|------|
|
||||
| short | 短效代理 |
|
||||
| long | 长效代理 |
|
||||
|
||||
## 业务流程
|
||||
|
||||
|
||||
@@ -635,6 +635,7 @@ create table channel (
|
||||
edge_host varchar(255),
|
||||
protocol int,
|
||||
auth_ip bool not null default false,
|
||||
whitelists text,
|
||||
auth_pass bool not null default false,
|
||||
username varchar(255),
|
||||
password varchar(255),
|
||||
@@ -666,6 +667,7 @@ comment on column channel.proxy_port is '转发端口';
|
||||
comment on column channel.edge_host is '节点地址';
|
||||
comment on column channel.protocol is '协议类型:1-http,2-https,3-socks5';
|
||||
comment on column channel.auth_ip is 'IP认证';
|
||||
comment on column channel.whitelists is 'IP白名单,逗号分隔';
|
||||
comment on column channel.auth_pass is '密码认证';
|
||||
comment on column channel.username is '用户名';
|
||||
comment on column channel.password is '密码';
|
||||
|
||||
@@ -30,6 +30,7 @@ type Channel struct {
|
||||
DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp without time zone;comment:删除时间" json:"deleted_at"` // 删除时间
|
||||
EdgeHost string `gorm:"column:edge_host;type:character varying(255);comment:节点地址" json:"edge_host"` // 节点地址
|
||||
EdgeID int32 `gorm:"column:edge_id;type:integer;comment:节点ID" json:"edge_id"` // 节点ID
|
||||
Whitelists string `gorm:"column:whitelists;type:text;comment:IP白名单,逗号分隔" json:"whitelists"` // IP白名单,逗号分隔
|
||||
}
|
||||
|
||||
// TableName Channel's table name
|
||||
|
||||
@@ -43,6 +43,7 @@ func newChannel(db *gorm.DB, opts ...gen.DOOption) channel {
|
||||
_channel.DeletedAt = field.NewField(tableName, "deleted_at")
|
||||
_channel.EdgeHost = field.NewString(tableName, "edge_host")
|
||||
_channel.EdgeID = field.NewInt32(tableName, "edge_id")
|
||||
_channel.Whitelists = field.NewString(tableName, "whitelists")
|
||||
|
||||
_channel.fillFieldMap()
|
||||
|
||||
@@ -69,6 +70,7 @@ type channel struct {
|
||||
DeletedAt field.Field // 删除时间
|
||||
EdgeHost field.String // 节点地址
|
||||
EdgeID field.Int32 // 节点ID
|
||||
Whitelists field.String // IP白名单,逗号分隔
|
||||
|
||||
fieldMap map[string]field.Expr
|
||||
}
|
||||
@@ -101,6 +103,7 @@ func (c *channel) updateTableName(table string) *channel {
|
||||
c.DeletedAt = field.NewField(table, "deleted_at")
|
||||
c.EdgeHost = field.NewString(table, "edge_host")
|
||||
c.EdgeID = field.NewInt32(table, "edge_id")
|
||||
c.Whitelists = field.NewString(table, "whitelists")
|
||||
|
||||
c.fillFieldMap()
|
||||
|
||||
@@ -117,7 +120,7 @@ func (c *channel) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
|
||||
}
|
||||
|
||||
func (c *channel) fillFieldMap() {
|
||||
c.fieldMap = make(map[string]field.Expr, 16)
|
||||
c.fieldMap = make(map[string]field.Expr, 17)
|
||||
c.fieldMap["id"] = c.ID
|
||||
c.fieldMap["user_id"] = c.UserID
|
||||
c.fieldMap["proxy_id"] = c.ProxyID
|
||||
@@ -134,6 +137,7 @@ func (c *channel) fillFieldMap() {
|
||||
c.fieldMap["deleted_at"] = c.DeletedAt
|
||||
c.fieldMap["edge_host"] = c.EdgeHost
|
||||
c.fieldMap["edge_id"] = c.EdgeID
|
||||
c.fieldMap["whitelists"] = c.Whitelists
|
||||
}
|
||||
|
||||
func (c channel) clone(db *gorm.DB) channel {
|
||||
|
||||
@@ -512,6 +512,7 @@ func assignShortChannels(
|
||||
if config.AuthIp {
|
||||
portConf.Whitelist = &config.Whitelists
|
||||
newChannel.AuthIP = true
|
||||
newChannel.Whitelists = strings.Join(config.Whitelists, ",")
|
||||
}
|
||||
|
||||
if config.AuthPass {
|
||||
@@ -637,6 +638,9 @@ func assignLongChannels(q *q.Query, userId int32, count int, config ChannelCreat
|
||||
ProxyHost: edge.Host,
|
||||
ProxyPort: edge.ProxyPort,
|
||||
}
|
||||
if config.AuthIp {
|
||||
channel.Whitelists = strings.Join(config.Whitelists, ",")
|
||||
}
|
||||
if config.AuthPass {
|
||||
username, password := genPassPair()
|
||||
channel.Username = username
|
||||
|
||||
Reference in New Issue
Block a user