Newer
Older
"github.com/coreos/go-systemd/v22/activation"
addr = flag.String("addr", "127.0.0.1:11434", "address to listen on")
useSystemd = flag.Bool("systemd-activation", false, "use systemd activation")
token = flag.String("token", "", "bearer token for authentication")
target = flag.String("target", "https://ollama.ula.inventati.org", "target hostname")
func newSystemdListener() (net.Listener, error) {
listeners, err := activation.Listeners()
if err != nil {
return nil, err
}
return listeners[0], nil
}
func newListener() (net.Listener, error) {
if *useSystemd {
return newSystemdListener()
}
return net.Listen("tcp", *addr)
}
func main() {
flag.Parse()
authHdr := "Bearer " + base64.StdEncoding.EncodeToString([]byte(*token))
targetURI, _ := url.Parse(*target)
proxy := &httputil.ReverseProxy{
Rewrite: func(req *httputil.ProxyRequest) {
req.SetURL(targetURI)
req.Out.Header.Set("Authorization", authHdr)
},
}
l, err := newListener()
if err != nil {
log.Fatal(err)
}
if err := http.Serve(l, proxy); err != nil {
log.Fatal(err)
}