route/plugins/autohttpagent/main.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()
}