60 lines
1.0 KiB
Go
60 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"log"
|
|
"os"
|
|
"time"
|
|
|
|
"git.xeserv.us/xena/route/lib/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() {
|
|
cfg := &tun2.ClientConfig{
|
|
TLSConfig: &tls.Config{},
|
|
ConnType: connMethod,
|
|
ServerAddr: serverAddr,
|
|
Token: token,
|
|
Domain: domain,
|
|
BackendURL: backend,
|
|
}
|
|
|
|
client, _ := tun2.NewClient(cfg)
|
|
err := client.Connect()
|
|
if err != nil {
|
|
ln.Error(err, ln.F{
|
|
"action": "client_running",
|
|
})
|
|
|
|
time.Sleep(5 * time.Second)
|
|
|
|
doHttpAgent()
|
|
}
|
|
}()
|
|
}
|
|
|
|
func init() {
|
|
doHttpAgent()
|
|
}
|