49 lines
1.2 KiB
Go
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())
|
|
}
|