Files
proxy-lite/main.go
2025-06-26 15:38:02 -04:00

49 lines
1.2 KiB
Go

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())
}