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