64 lines
1.1 KiB
Go
64 lines
1.1 KiB
Go
// +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()
|
|
}
|