package main import ( "embed" "html/template" "log" "net/http" "inet.af/tcpproxy" ) //go:embed templates/*.html var templatesFS embed.FS func main() { go proxify() // Parse templates from the embedded file system tmpl, err := template.ParseFS(templatesFS, "templates/*.html") if err != nil { log.Fatalf("Error parsing templates: %v", err) } http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { data := struct{ Name string }{Name: "Go Embed"} err := tmpl.ExecuteTemplate(w, "index.html", data) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } }) log.Println("Server starting on :8080") log.Fatal(http.ListenAndServe(":8080", nil)) } func proxify() { var p tcpproxy.Proxy p.AddRoute("127.0.0.1:5555", tcpproxy.To("127.0.0.1:6666")) //p.AddHTTPHostRoute(":80", "foo.com", tcpproxy.To("10.0.0.1:8081")) //p.AddHTTPHostRoute(":80", "bar.com", tcpproxy.To("10.0.0.2:8082")) //p.AddRoute(":80", tcpproxy.To("10.0.0.1:8081")) // fallback //p.AddSNIRoute(":443", "foo.com", tcpproxy.To("10.0.0.1:4431")) //p.AddSNIRoute(":443", "bar.com", tcpproxy.To("10.0.0.2:4432")) //p.AddRoute(":443", tcpproxy.To("10.0.0.1:4431")) // fallback log.Fatal(p.Run()) }