commit
185b162c19
@ -0,0 +1,3 @@ |
|||||||
|
{ |
||||||
|
"makefile.configureOnOpen": false |
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
GO = go
|
||||||
|
APP_NAME = wormhole-client
|
||||||
|
VERSION = v1.0.0
|
||||||
|
LDFLAGS = -ldflags "-X main.version=$(VERSION) -X main.buildTime=$(shell date -u '+%Y-%m-%d_%H:%M:%S')"
|
||||||
|
|
||||||
|
.PHONY: all build clean deps test run install uninstall |
||||||
|
|
||||||
|
all: clean deps build |
||||||
|
|
||||||
|
deps: |
||||||
|
$(GO) mod download
|
||||||
|
$(GO) mod tidy
|
||||||
|
|
||||||
|
build: |
||||||
|
$(GO) build $(LDFLAGS) -o bin/$(APP_NAME) cmd/wormhole-client/main.go
|
||||||
|
|
||||||
|
run-http: build |
||||||
|
./bin/$(APP_NAME) -config configs/client.yaml -mode http
|
||||||
|
|
||||||
|
run-global: build |
||||||
|
sudo ./bin/$(APP_NAME) -config configs/client.yaml -mode global
|
||||||
|
|
||||||
|
run-transparent: build |
||||||
|
sudo ./bin/$(APP_NAME) -config configs/client.yaml -mode transparent
|
||||||
|
|
||||||
|
test: |
||||||
|
$(GO) test -v ./...
|
||||||
|
|
||||||
|
clean: |
||||||
|
rm -rf bin/
|
||||||
|
|
||||||
|
install: build |
||||||
|
sudo cp bin/$(APP_NAME) /usr/local/bin/
|
||||||
|
|
||||||
|
uninstall: |
||||||
|
sudo rm -f /usr/local/bin/$(APP_NAME)
|
||||||
|
|
||||||
|
help: |
||||||
|
@echo "Available targets:"
|
||||||
|
@echo " build - Build the client binary"
|
||||||
|
@echo " run-http - Run HTTP proxy mode"
|
||||||
|
@echo " run-global - Run global proxy mode (needs sudo)"
|
||||||
|
@echo " run-transparent - Run transparent proxy mode (needs sudo)"
|
||||||
|
@echo " test - Run tests"
|
||||||
|
@echo " clean - Clean build artifacts"
|
||||||
|
@echo " deps - Download dependencies"
|
||||||
|
@echo " install - Install to /usr/local/bin"
|
||||||
|
@echo " uninstall - Remove from /usr/local/bin"
|
@ -0,0 +1,126 @@ |
|||||||
|
# Wormhole SOCKS5 Client |
||||||
|
|
||||||
|
🌐 功能完整的 SOCKS5 代理客户端,支持多种代理模式 |
||||||
|
|
||||||
|
## 快速开始 |
||||||
|
|
||||||
|
### 构建和运行 |
||||||
|
```bash |
||||||
|
# HTTP 代理模式 |
||||||
|
make run-http |
||||||
|
|
||||||
|
# 全局代理模式 (需要管理员权限) |
||||||
|
make run-global |
||||||
|
|
||||||
|
# 透明代理模式 (需要root权限) |
||||||
|
make run-transparent |
||||||
|
``` |
||||||
|
|
||||||
|
### 配置 |
||||||
|
编辑 `configs/client.yaml` 来自定义客户端设置: |
||||||
|
|
||||||
|
```yaml |
||||||
|
server: |
||||||
|
address: your_server_ip |
||||||
|
port: 1080 |
||||||
|
username: your_username |
||||||
|
password: your_password |
||||||
|
|
||||||
|
proxy: |
||||||
|
mode: http |
||||||
|
localPort: 8080 |
||||||
|
``` |
||||||
|
|
||||||
|
## 功能特性 |
||||||
|
|
||||||
|
### 🔄 多种代理模式 |
||||||
|
- ✅ **HTTP 代理** - 简单易用的HTTP代理 |
||||||
|
- 🔄 **全局代理** - 系统级全局代理设置 |
||||||
|
- 🔄 **透明代理** - 透明流量拦截和转发 |
||||||
|
|
||||||
|
### 🎯 智能路由 |
||||||
|
- 🔄 域名/IP分流规则 |
||||||
|
- 🔄 本地网络绕过 |
||||||
|
- 🔄 PAC文件支持 |
||||||
|
- 🔄 自定义路由规则 |
||||||
|
|
||||||
|
### 🛡 系统集成 |
||||||
|
- 🔄 自动DNS配置 |
||||||
|
- 🔄 系统代理设置 |
||||||
|
- 🔄 iptables规则管理 |
||||||
|
- 🔄 网络路由配置 |
||||||
|
|
||||||
|
### 🖥 跨平台支持 |
||||||
|
- ✅ Linux - 完整支持 |
||||||
|
- 🔄 macOS - 系统代理支持 |
||||||
|
- 🔄 Windows - WinDivert透明代理 |
||||||
|
|
||||||
|
## 使用模式 |
||||||
|
|
||||||
|
### HTTP 代理模式 |
||||||
|
最简单的使用方式,在本地启动HTTP代理: |
||||||
|
|
||||||
|
```bash |
||||||
|
make run-http |
||||||
|
``` |
||||||
|
|
||||||
|
然后配置应用程序使用 `http://127.0.0.1:8080` 作为代理。 |
||||||
|
|
||||||
|
### 全局代理模式 |
||||||
|
配置系统级代理,所有网络流量通过代理: |
||||||
|
|
||||||
|
```bash |
||||||
|
sudo make run-global |
||||||
|
``` |
||||||
|
|
||||||
|
### 透明代理模式 |
||||||
|
透明拦截网络流量,无需配置应用程序: |
||||||
|
|
||||||
|
```bash |
||||||
|
sudo make run-transparent |
||||||
|
``` |
||||||
|
|
||||||
|
## 迁移状态 |
||||||
|
|
||||||
|
此项目是从 [原始 Wormhole 项目](https://github.com/azoic/wormhole) 拆分出的独立客户端。 |
||||||
|
|
||||||
|
### ✅ 已完成 |
||||||
|
- [x] 基础项目结构 |
||||||
|
- [x] HTTP代理模式框架 |
||||||
|
- [x] 配置管理系统 |
||||||
|
- [x] 构建系统 |
||||||
|
|
||||||
|
### 🔄 进行中 |
||||||
|
- [ ] 完整的客户端代码迁移 |
||||||
|
- [ ] 全局代理功能 |
||||||
|
- [ ] 透明代理实现 |
||||||
|
- [ ] 智能路由系统 |
||||||
|
|
||||||
|
### 🎯 计划中 |
||||||
|
- [ ] GUI客户端 |
||||||
|
- [ ] 移动端支持 |
||||||
|
- [ ] 浏览器扩展 |
||||||
|
- [ ] 高级分流规则 |
||||||
|
|
||||||
|
## 开发 |
||||||
|
|
||||||
|
### 系统要求 |
||||||
|
- Go 1.21+ |
||||||
|
- Linux: iptables, ip命令 |
||||||
|
- macOS: 管理员权限 |
||||||
|
- Windows: WinDivert驱动 |
||||||
|
|
||||||
|
### 添加依赖 |
||||||
|
```bash |
||||||
|
go get package_name |
||||||
|
go mod tidy |
||||||
|
``` |
||||||
|
|
||||||
|
### 运行测试 |
||||||
|
```bash |
||||||
|
make test |
||||||
|
``` |
||||||
|
|
||||||
|
## 许可证 |
||||||
|
|
||||||
|
MIT License - 详见 [LICENSE](LICENSE) 文件 |
Binary file not shown.
@ -0,0 +1,38 @@ |
|||||||
|
package main |
||||||
|
|
||||||
|
import ( |
||||||
|
"flag" |
||||||
|
"fmt" |
||||||
|
"log" |
||||||
|
"os" |
||||||
|
|
||||||
|
"github.com/azoic/wormhole-client/internal/client" |
||||||
|
) |
||||||
|
|
||||||
|
var ( |
||||||
|
version = "v1.0.0" |
||||||
|
buildTime = "unknown" |
||||||
|
) |
||||||
|
|
||||||
|
func main() { |
||||||
|
configPath := flag.String("config", "configs/client.yaml", "Configuration file path") |
||||||
|
mode := flag.String("mode", "http", "Client mode: http, global, transparent") |
||||||
|
showVersion := flag.Bool("version", false, "Show version information") |
||||||
|
flag.Parse() |
||||||
|
|
||||||
|
if *showVersion { |
||||||
|
fmt.Printf("Wormhole SOCKS5 Client %s\n", version) |
||||||
|
fmt.Printf("Build time: %s\n", buildTime) |
||||||
|
os.Exit(0) |
||||||
|
} |
||||||
|
|
||||||
|
fmt.Printf("🚀 Starting Wormhole SOCKS5 Client %s\n", version) |
||||||
|
fmt.Printf("📄 Config: %s\n", *configPath) |
||||||
|
fmt.Printf("🔧 Mode: %s\n", *mode) |
||||||
|
|
||||||
|
// TODO: 实现完整的客户端逻辑
|
||||||
|
cli := client.NewClient(*mode) |
||||||
|
if err := cli.Start(*configPath); err != nil { |
||||||
|
log.Fatalf("Client failed: %v", err) |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,44 @@ |
|||||||
|
# Wormhole SOCKS5 Client Configuration |
||||||
|
serviceType: client |
||||||
|
|
||||||
|
# SOCKS5 服务器设置 |
||||||
|
server: |
||||||
|
address: 127.0.0.1 |
||||||
|
port: 1080 |
||||||
|
username: admin |
||||||
|
password: secure_password_123 |
||||||
|
|
||||||
|
# 代理模式设置 |
||||||
|
proxy: |
||||||
|
mode: http # http, global, transparent |
||||||
|
localPort: 8080 |
||||||
|
|
||||||
|
# 全局代理设置 |
||||||
|
globalProxy: |
||||||
|
enabled: false |
||||||
|
dnsProxy: true |
||||||
|
dnsPort: 5353 |
||||||
|
|
||||||
|
# 分流规则 |
||||||
|
routing: |
||||||
|
bypassLocal: true |
||||||
|
bypassPrivate: true |
||||||
|
bypassDomains: |
||||||
|
- "*.local" |
||||||
|
- "*.lan" |
||||||
|
forceDomains: |
||||||
|
- "*.google.com" |
||||||
|
- "*.github.com" |
||||||
|
|
||||||
|
# 透明代理设置 |
||||||
|
transparentProxy: |
||||||
|
enabled: false |
||||||
|
port: 8080 |
||||||
|
dnsPort: 5353 |
||||||
|
|
||||||
|
# 系统设置 |
||||||
|
modifyDNS: true |
||||||
|
modifyRoute: true |
||||||
|
|
||||||
|
logLevel: info |
||||||
|
timeout: 30s |
Loading…
Reference in new issue