// +build linux package main import ( "context" "crypto/tls" "log" "os" "time" "git.xeserv.us/xena/route/internal/tun2" "github.com/Xe/ln" ) var ( token = mustEnv("ROUTE_TOKEN", "") domain = mustEnv("ROUTE_DOMAIN", "") backend = mustEnv("ROUTE_BACKEND", "") method = mustEnv("ROUTE_METHOD", "") serverAddr = mustEnv("ROUTE_LOAD_BALANCER", "") connMethod = mustEnv("ROUTE_METHOD", "tcp") ) func mustEnv(key string, def string) string { val := os.Getenv(key) if val == "" { log.Printf("autohttpagent: %s not found, things may not work", key) return def } return val } func doHTTPAgent() { go func() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() cfg := &tun2.ClientConfig{ TLSConfig: &tls.Config{}, ConnType: connMethod, ServerAddr: serverAddr, Token: token, Domain: domain, BackendURL: backend, } client, _ := tun2.NewClient(cfg) err := client.Connect(ctx) if err != nil { ln.Error(ctx, err, ln.Action("client connection error, restarting")) time.Sleep(5 * time.Second) doHTTPAgent() } }() } func init() { doHTTPAgent() }