package main

import (
	"context"
	"crypto/tls"
	"flag"
	"time"

	"git.xeserv.us/xena/route/internal/tun2"
	"github.com/Xe/ln"
	"github.com/facebookgo/flagenv"
	_ "github.com/joho/godotenv"
)

var (
	token      = flag.String("token", "", "authentication token used to authenticate with routed")
	domain     = flag.String("domain", "", "domain to use when authenticating with routed")
	backend    = flag.String("backend", "http://127.0.0.1:9090", "backend TCP/HTTP server route-httpagent should relay traffic to/from")
	serverAddr = flag.String("server", "127.0.0.1:9234", "the address that routed is listening on for backend connections")
	connMethod = flag.String("method", "tcp", "the connection method used to talk to routed (MUST be either 'tcp' or 'kcp')")
)

func main() {
	flagenv.Parse()
	flag.Parse()

	cfg := &tun2.ClientConfig{
		TLSConfig:  &tls.Config{},
		ConnType:   *connMethod,
		ServerAddr: *serverAddr,
		Token:      *token,
		Domain:     *domain,
		BackendURL: *backend,
	}

	client, _ := tun2.NewClient(cfg)

	for {
		err := client.Connect(context.Background())
		if err != nil {
			ln.Error(context.Background(), err, ln.Action("client connection failed"))
		}

		time.Sleep(2 * time.Second)
	}
}
