mirror of
https://github.com/WJQSERVER-STUDIO/ghproxy.git
synced 2026-02-03 08:11:11 +08:00
24w11a
This commit is contained in:
parent
f5d7d0994e
commit
dc8f4a28e9
9 changed files with 112 additions and 13 deletions
35
CHANGELOG.md
35
CHANGELOG.md
|
|
@ -1,5 +1,14 @@
|
||||||
# 更新日志
|
# 更新日志
|
||||||
|
|
||||||
|
24w11a
|
||||||
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v1.4.0的预发布版本,请勿在生产环境中使用
|
||||||
|
- **ANNOUNCE**: 自此版本起,DEV版本号格式进行修改,小版本号不再仅限于a/b,而是采用字母表顺序进行排列,此修改将带来一个重要改变,正式版前的预发布版本的数字版本号将会统一,以便于版本管理与发布管理
|
||||||
|
- CHANGE: 优化代码结构,提升性能
|
||||||
|
- ADD: 新增auth子模块whitelist.go,支持白名单功能
|
||||||
|
- ADD: 新增whitelist.json文件,用于配置白名单
|
||||||
|
- FIX: 由于新加入未在原开发路线上计划的白名单功能,导致函数命名冲突,在此修复blacklist.go的函数命名问题
|
||||||
|
|
||||||
v1.3.1
|
v1.3.1
|
||||||
---
|
---
|
||||||
- CHANGE: 优化代码结构,提升性能
|
- CHANGE: 优化代码结构,提升性能
|
||||||
|
|
@ -8,6 +17,7 @@ v1.3.1
|
||||||
|
|
||||||
24w10a
|
24w10a
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v1.3.1的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 优化代码结构,提升性能
|
- CHANGE: 优化代码结构,提升性能
|
||||||
- CHANGE: 剃刀计划,减少多余日志输出
|
- CHANGE: 剃刀计划,减少多余日志输出
|
||||||
- CHANGE: 调整缓存参数
|
- CHANGE: 调整缓存参数
|
||||||
|
|
@ -24,12 +34,14 @@ v1.3.0
|
||||||
|
|
||||||
24w09b
|
24w09b
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v1.3.0的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 优化代码结构,提升性能
|
- CHANGE: 优化代码结构,提升性能
|
||||||
- CHANGE: 修正配置,提升稳定性
|
- CHANGE: 修正配置,提升稳定性
|
||||||
- WARNING: 此版本配置文件重构,此版本不再向前兼容,请注意备份文件并重新部署
|
- WARNING: 此版本配置文件重构,此版本不再向前兼容,请注意备份文件并重新部署
|
||||||
|
|
||||||
24w09a
|
24w09a
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v1.3.0的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 优化代码结构,提升性能
|
- CHANGE: 优化代码结构,提升性能
|
||||||
- CHANGE: 优化黑名单功能,提升稳定性
|
- CHANGE: 优化黑名单功能,提升稳定性
|
||||||
- CHANGE&ADD: 新增auth子模块blacklist.go
|
- CHANGE&ADD: 新增auth子模块blacklist.go
|
||||||
|
|
@ -38,6 +50,7 @@ v1.3.0
|
||||||
|
|
||||||
24w08b
|
24w08b
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v1.3.0的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 优化代码结构,提升性能
|
- CHANGE: 优化代码结构,提升性能
|
||||||
- ADD & CHANGE: 新增仓库黑名单功能,改进Auth模块
|
- ADD & CHANGE: 新增仓库黑名单功能,改进Auth模块
|
||||||
- ADD: 新增blacklist.yaml文件,用于配置仓库黑名单
|
- ADD: 新增blacklist.yaml文件,用于配置仓库黑名单
|
||||||
|
|
@ -54,6 +67,7 @@ v1.2.0
|
||||||
|
|
||||||
24w08a
|
24w08a
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v1.2.0的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 同步更新logger模块,与golang-temp项目定义的开发规范保持一致
|
- CHANGE: 同步更新logger模块,与golang-temp项目定义的开发规范保持一致
|
||||||
- ADD: 新增日志翻转功能
|
- ADD: 新增日志翻转功能
|
||||||
|
|
||||||
|
|
@ -65,12 +79,14 @@ v1.1.1
|
||||||
|
|
||||||
24w07b
|
24w07b
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v1.1.1的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 修改部分代码,与golang-temp项目定义的开发规范保持一致
|
- CHANGE: 修改部分代码,与golang-temp项目定义的开发规范保持一致
|
||||||
- CHANGE: 更新Go版本至v1.23.2
|
- CHANGE: 更新Go版本至v1.23.2
|
||||||
- CHANGE: 跟随Caddy更新,修改Caddyfile配置
|
- CHANGE: 跟随Caddy更新,修改Caddyfile配置
|
||||||
|
|
||||||
24w07a
|
24w07a
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v1.1.1的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 修改部分代码,与golang-temp项目定义的开发规范保持一致
|
- CHANGE: 修改部分代码,与golang-temp项目定义的开发规范保持一致
|
||||||
- CHANGE: 更新Go版本至v1.23.2
|
- CHANGE: 更新Go版本至v1.23.2
|
||||||
|
|
||||||
|
|
@ -85,6 +101,7 @@ v1.1.0
|
||||||
|
|
||||||
24w06b
|
24w06b
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v1.1.0的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 优化代码结构,对main函数进行模块化,提升可读性
|
- CHANGE: 优化代码结构,对main函数进行模块化,提升可读性
|
||||||
- CHANGE: Docker代理功能移至DEV版本内,保证稳定性
|
- CHANGE: Docker代理功能移至DEV版本内,保证稳定性
|
||||||
- ADD&CHANGE: 增加Auth(用户鉴权)模块,并改进其的错误处理与日志记录
|
- ADD&CHANGE: 增加Auth(用户鉴权)模块,并改进其的错误处理与日志记录
|
||||||
|
|
@ -94,6 +111,7 @@ v1.1.0
|
||||||
|
|
||||||
v1.0.0
|
v1.0.0
|
||||||
---
|
---
|
||||||
|
- **ANNOUNCE**: 项目正式发布, 并迁移至[WJQSERVER-STUDIO/ghproxy](https://github.com/WJQSERVER-STUDIO/ghproxy),由Apache License Version 2.0转为WJQserver Studio License 请注意相关条例变更
|
||||||
- CHANGE: 项目正式发布, 并迁移至[WJQSERVER-STUDIO/ghproxy](https://github.com/WJQSERVER-STUDIO/ghproxy)
|
- CHANGE: 项目正式发布, 并迁移至[WJQSERVER-STUDIO/ghproxy](https://github.com/WJQSERVER-STUDIO/ghproxy)
|
||||||
- CHANGE: 再次重构代码,优化性能,提升稳定性
|
- CHANGE: 再次重构代码,优化性能,提升稳定性
|
||||||
- CHANGE: 使用golang-temp项目作为底层构建,标准化日志与配置模块
|
- CHANGE: 使用golang-temp项目作为底层构建,标准化日志与配置模块
|
||||||
|
|
@ -101,6 +119,7 @@ v1.0.0
|
||||||
|
|
||||||
24w06a
|
24w06a
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v1.0.0的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 与v1.0.0版本同步
|
- CHANGE: 与v1.0.0版本同步
|
||||||
|
|
||||||
v0.2.0
|
v0.2.0
|
||||||
|
|
@ -112,21 +131,25 @@ v0.2.0
|
||||||
|
|
||||||
24w05b
|
24w05b
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v0.2.0的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 重命名proxychrome函数
|
- CHANGE: 重命名proxychrome函数
|
||||||
- ADD: 增加多处日志记录,便于审计与排障
|
- ADD: 增加多处日志记录,便于审计与排障
|
||||||
|
|
||||||
24w05a
|
24w05a
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v0.2.0的预发布版本,请勿在生产环境中使用
|
||||||
- FIX: 修正上一版本的req请求未继承请求方式的问题
|
- FIX: 修正上一版本的req请求未继承请求方式的问题
|
||||||
- CHANGE: 优化代码结构,进一步模块化,同时提升性能
|
- CHANGE: 优化代码结构,进一步模块化,同时提升性能
|
||||||
|
|
||||||
24w04b
|
24w04b
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v0.2.0的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 更换Docker基础镜像为daily版本
|
- CHANGE: 更换Docker基础镜像为daily版本
|
||||||
- ADD: 新增使用req库实现代理请求,使用chrome TLS指纹发起请求
|
- ADD: 新增使用req库实现代理请求,使用chrome TLS指纹发起请求
|
||||||
|
|
||||||
24w04a
|
24w04a
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v0.2.0的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 调整程序结构,使用init函数初始化配置,并优化代码结构
|
- CHANGE: 调整程序结构,使用init函数初始化配置,并优化代码结构
|
||||||
|
|
||||||
v0.1.7
|
v0.1.7
|
||||||
|
|
@ -135,6 +158,7 @@ v0.1.7
|
||||||
|
|
||||||
24w03b
|
24w03b
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v0.1.7的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 合入上游(wjqserver/caddy:latest)安全更新, 增强镜像安全性
|
- CHANGE: 合入上游(wjqserver/caddy:latest)安全更新, 增强镜像安全性
|
||||||
|
|
||||||
v0.1.6
|
v0.1.6
|
||||||
|
|
@ -144,6 +168,7 @@ v0.1.6
|
||||||
|
|
||||||
24w03a
|
24w03a
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v0.1.6的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 改进Docker代理相关Caddy配置
|
- CHANGE: 改进Docker代理相关Caddy配置
|
||||||
- ADD: 新增跨域配置选项
|
- ADD: 新增跨域配置选项
|
||||||
|
|
||||||
|
|
@ -154,16 +179,17 @@ v0.1.5
|
||||||
|
|
||||||
24w02b
|
24w02b
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v0.1.5的预发布版本,请勿在生产环境中使用
|
||||||
- ADD: 新增Docker代理 (未并入正式版)
|
- ADD: 新增Docker代理 (未并入正式版)
|
||||||
|
|
||||||
24w02a
|
24w02a
|
||||||
---
|
---
|
||||||
|
- PRE-RELEASE: 此版本是v0.1.5的预发布版本,请勿在生产环境中使用
|
||||||
- CHANGE: 更新Go版本至v1.23.1
|
- CHANGE: 更新Go版本至v1.23.1
|
||||||
- CHANGE: 优化代码行为
|
- CHANGE: 优化代码行为
|
||||||
|
|
||||||
v0.1.4
|
v0.1.4
|
||||||
---
|
---
|
||||||
正式版24w01b内容更新
|
|
||||||
- ADD: 新增外部文件配置功能
|
- ADD: 新增外部文件配置功能
|
||||||
- ADD: 新增日志功能
|
- ADD: 新增日志功能
|
||||||
- CHANGE: 优化代码结构,提升性能
|
- CHANGE: 优化代码结构,提升性能
|
||||||
|
|
@ -171,7 +197,7 @@ v0.1.4
|
||||||
|
|
||||||
24w01b
|
24w01b
|
||||||
---
|
---
|
||||||
标志着项目正式进入自主开发阶段
|
- PRE-RELEASE: 此版本是v0.1.4的预发布版本,请勿在生产环境中使用
|
||||||
- ADD: 新增外部文件配置功能
|
- ADD: 新增外部文件配置功能
|
||||||
- ADD: 新增日志功能
|
- ADD: 新增日志功能
|
||||||
- CHANGE: 优化代码结构,提升性能
|
- CHANGE: 优化代码结构,提升性能
|
||||||
|
|
@ -179,12 +205,13 @@ v0.1.4
|
||||||
|
|
||||||
v0.1.3
|
v0.1.3
|
||||||
---
|
---
|
||||||
开始自行维护项目,脱离上游更新
|
- **ANNOUNCE**: 开始自行维护项目,脱离上游更新
|
||||||
- CHANGE: 改进已有实现,增强程序稳定性
|
- CHANGE: 改进已有实现,增强程序稳定性
|
||||||
|
|
||||||
24w01a
|
24w01a
|
||||||
---
|
---
|
||||||
首个DEV版本
|
- PRE-RELEASE: 此版本是v0.1.3的预发布版本,请勿在生产环境中使用
|
||||||
|
- **ANNOUNCE**: 首个DEV版本发布
|
||||||
- CHANGE: 同步更新
|
- CHANGE: 同步更新
|
||||||
|
|
||||||
v0.1.2
|
v0.1.2
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
24w10a
|
24w11a
|
||||||
|
|
@ -6,19 +6,19 @@ import (
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type BlacklistConfig struct {
|
||||||
Blacklist []string `json:"blacklist"`
|
Blacklist []string `json:"blacklist"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
cfg *config.Config
|
cfg *config.Config
|
||||||
blacklistfile = "/data/ghproxy/config/blacklist.json"
|
blacklistfile = "/data/ghproxy/config/blacklist.json"
|
||||||
blacklist *Config
|
blacklist *BlacklistConfig
|
||||||
)
|
)
|
||||||
|
|
||||||
func LoadBlacklist(cfg *config.Config) {
|
func LoadBlacklist(cfg *config.Config) {
|
||||||
blacklistfile = cfg.Blacklist.BlacklistFile
|
blacklistfile = cfg.Blacklist.BlacklistFile
|
||||||
blacklist = &Config{}
|
blacklist = &BlacklistConfig{}
|
||||||
|
|
||||||
data, err := os.ReadFile(blacklistfile)
|
data, err := os.ReadFile(blacklistfile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -32,10 +32,10 @@ func LoadBlacklist(cfg *config.Config) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func CheckBlacklist(fullrepo string) bool {
|
func CheckBlacklist(fullrepo string) bool {
|
||||||
return forRangeCheck(blacklist.Blacklist, fullrepo)
|
return forRangeCheckBlacklist(blacklist.Blacklist, fullrepo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func forRangeCheck(blist []string, fullrepo string) bool {
|
func forRangeCheckBlacklist(blist []string, fullrepo string) bool {
|
||||||
for _, blocked := range blist {
|
for _, blocked := range blist {
|
||||||
if blocked == fullrepo {
|
if blocked == fullrepo {
|
||||||
return true
|
return true
|
||||||
|
|
|
||||||
44
auth/whitelist.go
Normal file
44
auth/whitelist.go
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
package auth
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"ghproxy/config"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
type WhitelistConfig struct {
|
||||||
|
Whitelist []string `json:"whitelist"`
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
whitelistfile = "/data/ghproxy/config/whitelist.json"
|
||||||
|
whitelist *WhitelistConfig
|
||||||
|
)
|
||||||
|
|
||||||
|
func LoadWhitelist(cfg *config.Config) {
|
||||||
|
whitelistfile = cfg.Whitelist.WhitelistFile
|
||||||
|
whitelist = &WhitelistConfig{}
|
||||||
|
|
||||||
|
data, err := os.ReadFile(whitelistfile)
|
||||||
|
if err != nil {
|
||||||
|
logw("Failed to read whitelist file: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(data, whitelist)
|
||||||
|
if err != nil {
|
||||||
|
logw("Failed to unmarshal whitelist JSON: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func CheckWhitelist(fullrepo string) bool {
|
||||||
|
return forRangeCheckWhitelist(whitelist.Whitelist, fullrepo)
|
||||||
|
}
|
||||||
|
|
||||||
|
func forRangeCheckWhitelist(blist []string, fullrepo string) bool {
|
||||||
|
for _, blocked := range blist {
|
||||||
|
if blocked == fullrepo {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
@ -31,6 +31,11 @@ type Config struct {
|
||||||
Enabled bool `yaml:"enabled"`
|
Enabled bool `yaml:"enabled"`
|
||||||
BlacklistFile string `yaml:"blacklistfile"`
|
BlacklistFile string `yaml:"blacklistfile"`
|
||||||
} `yaml:"blacklist"`
|
} `yaml:"blacklist"`
|
||||||
|
|
||||||
|
Whitelist struct {
|
||||||
|
Enabled bool `yaml:"enabled"`
|
||||||
|
WhitelistFile string `yaml:"whitelistfile"`
|
||||||
|
} `yaml:"whitelist"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadConfig 从 YAML 配置文件加载配置
|
// LoadConfig 从 YAML 配置文件加载配置
|
||||||
|
|
|
||||||
|
|
@ -20,5 +20,10 @@ auth:
|
||||||
|
|
||||||
# Blacklist Configuration
|
# Blacklist Configuration
|
||||||
blacklist:
|
blacklist:
|
||||||
enabled: true
|
enabled: false
|
||||||
blacklistfile: "/data/ghproxy/config/blacklist.json"
|
blacklistfile: "/data/ghproxy/config/blacklist.json"
|
||||||
|
|
||||||
|
# Whitelist Configuration
|
||||||
|
whitelist:
|
||||||
|
enabled: false
|
||||||
|
whitelistfile: "/data/ghproxy/config/whitelist.json"
|
||||||
8
config/whitelist.json
Normal file
8
config/whitelist.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"whitelist": [
|
||||||
|
"test/test1",
|
||||||
|
"example/repo2",
|
||||||
|
"another/repo3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
5
main.go
5
main.go
|
|
@ -53,14 +53,15 @@ func setupLogger() {
|
||||||
logw("Init Completed")
|
logw("Init Completed")
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadBlacklist(cfg *config.Config) {
|
func Loadlist(cfg *config.Config) {
|
||||||
auth.LoadBlacklist(cfg)
|
auth.LoadBlacklist(cfg)
|
||||||
|
auth.LoadWhitelist(cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
loadConfig()
|
loadConfig()
|
||||||
setupLogger()
|
setupLogger()
|
||||||
LoadBlacklist(cfg)
|
Loadlist(cfg)
|
||||||
|
|
||||||
// 设置 Gin 模式
|
// 设置 Gin 模式
|
||||||
gin.SetMode(gin.ReleaseMode)
|
gin.SetMode(gin.ReleaseMode)
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,15 @@ func NoRouteHandler(cfg *config.Config) gin.HandlerFunc {
|
||||||
logw("Blacklist Check > Username: %s, Repo: %s", username, repo)
|
logw("Blacklist Check > Username: %s, Repo: %s", username, repo)
|
||||||
fullrepo := fmt.Sprintf("%s/%s", username, repo)
|
fullrepo := fmt.Sprintf("%s/%s", username, repo)
|
||||||
|
|
||||||
|
// 白名单检查
|
||||||
|
whitelistpass := auth.CheckWhitelist(fullrepo)
|
||||||
|
if !whitelistpass {
|
||||||
|
errMsg := fmt.Sprintf("Whitelist Blocked repo: %s", fullrepo)
|
||||||
|
c.JSON(http.StatusForbidden, gin.H{"error": errMsg})
|
||||||
|
logw(errMsg)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 黑名单检查
|
// 黑名单检查
|
||||||
blacklistpass := auth.CheckBlacklist(fullrepo)
|
blacklistpass := auth.CheckBlacklist(fullrepo)
|
||||||
if blacklistpass {
|
if blacklistpass {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue