From 09a9cc573e021b79471c0c12e000211dfe7659bf Mon Sep 17 00:00:00 2001 From: luorijun Date: Thu, 22 May 2025 15:22:40 +0800 Subject: [PATCH] =?UTF-8?q?channel=20=E8=A1=A8=E6=B7=BB=E5=8A=A0=20IP=20?= =?UTF-8?q?=E7=99=BD=E5=90=8D=E5=8D=95=E5=AD=97=E6=AE=B5=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E5=BF=AB=E7=85=A7=E4=BF=9D=E5=AD=98=E4=B8=8E=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 ++++++----- scripts/sql/init.sql | 2 ++ web/models/channel.gen.go | 1 + web/queries/channel.gen.go | 6 +++++- web/services/channel.go | 4 ++++ 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 5490c65..3d567a3 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ +## TODO + ## 枚举字典 ### 产品 -| 代码 | 缩写 | 产品 | -|----------------------|-----|------| -| proxy/shared-static | pss | 动态代理 | -| proxy/shared-rotate | psr | 隧道代理 | -| proxy/private-static | pps | 独享代理 | +| 代码 | 产品 | +|-------|------| +| short | 短效代理 | +| long | 长效代理 | ## 业务流程 diff --git a/scripts/sql/init.sql b/scripts/sql/init.sql index 91faa8c..74de32e 100644 --- a/scripts/sql/init.sql +++ b/scripts/sql/init.sql @@ -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 '密码'; diff --git a/web/models/channel.gen.go b/web/models/channel.gen.go index 8a96fe9..634227c 100644 --- a/web/models/channel.gen.go +++ b/web/models/channel.gen.go @@ -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 diff --git a/web/queries/channel.gen.go b/web/queries/channel.gen.go index bef8d54..1821c45 100644 --- a/web/queries/channel.gen.go +++ b/web/queries/channel.gen.go @@ -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 { diff --git a/web/services/channel.go b/web/services/channel.go index 09aa017..dfbb577 100644 --- a/web/services/channel.go +++ b/web/services/channel.go @@ -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