package main import ( "flag" "fmt" "log" "net/http" "net/http/httputil" "net/url" ) var ( port = flag.Int("port", 42069, "port to listen on") https = flag.Bool("https", false, "use https") ) type server struct { jellyfinProxy *httputil.ReverseProxy } func (*server) index(w http.ResponseWriter, _ *http.Request) { fmt.Fprint(w, ` roseh.moe

Hello world

`) } func (s *server) cinema(w http.ResponseWriter, r *http.Request) { s.jellyfinProxy.ServeHTTP(w, r) } func main() { flag.Parse() jellyfinURL, err := url.Parse("http://localhost:8096") if err != nil { log.Fatalf("Jellyfin URL: %s", err) } s := &server{ jellyfinProxy: httputil.NewSingleHostReverseProxy(jellyfinURL), } http.HandleFunc("GET /{$}", s.index) http.HandleFunc("/cinema", s.cinema) http.HandleFunc("/cinema/", s.cinema) addr := fmt.Sprintf(":%d", *port) log.Printf("Listening on %q", addr) if *https { log.Fatal(http.ListenAndServeTLS(addr, "/var/lib/acme/roseh.moe/cert.pem", "/var/lib/acme/roseh.moe/key.pem", nil)) } else { log.Fatal(http.ListenAndServe(addr, nil)) } }