All checks were successful
Build Multi-Platform Binaries / build-frontend (push) Successful in 2m28s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Successful in 2m25s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Successful in 2m24s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Successful in 3m12s
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Successful in 1m17s
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Successful in 3m23s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Successful in 2m1s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Successful in 1m59s
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Successful in 1m15s
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Successful in 2m21s
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Successful in 1m50s
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Successful in 2m43s
45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
package main
|
||
|
||
import (
|
||
"flag"
|
||
"log"
|
||
|
||
"github.com/gotunnel/internal/client/tunnel"
|
||
"github.com/gotunnel/pkg/crypto"
|
||
"github.com/gotunnel/pkg/plugin"
|
||
"github.com/gotunnel/pkg/plugin/builtin"
|
||
)
|
||
|
||
func main() {
|
||
server := flag.String("s", "", "server address (ip:port)")
|
||
token := flag.String("t", "", "auth token")
|
||
id := flag.String("id", "", "client id (optional, auto-assigned if empty)")
|
||
noTLS := flag.Bool("no-tls", false, "disable TLS")
|
||
flag.Parse()
|
||
|
||
if *server == "" || *token == "" {
|
||
log.Fatal("Usage: client -s <server:port> -t <token> [-id <client_id>] [-no-tls]")
|
||
}
|
||
|
||
client := tunnel.NewClient(*server, *token, *id)
|
||
|
||
// TLS 默认启用,默认跳过证书验证(类似 frp)
|
||
if !*noTLS {
|
||
client.TLSEnabled = true
|
||
client.TLSConfig = crypto.ClientTLSConfig()
|
||
log.Printf("[Client] TLS enabled")
|
||
}
|
||
|
||
// 初始化插件系统
|
||
registry := plugin.NewRegistry()
|
||
for _, h := range builtin.GetClientPlugins() {
|
||
if err := registry.RegisterClient(h); err != nil {
|
||
log.Fatalf("[Plugin] Register error: %v", err)
|
||
}
|
||
}
|
||
client.SetPluginRegistry(registry)
|
||
log.Printf("[Plugin] Registered %d plugins", len(builtin.GetClientPlugins()))
|
||
|
||
client.Run()
|
||
}
|