Skip to content
Snippets Groups Projects
proxy.go 675 B
Newer Older
ale's avatar
ale committed
package main

import (
	"encoding/base64"
	"flag"
	"net/http"
	"net/http/httputil"
	"net/url"
)

var (
	addr   = flag.String("addr", "127.0.0.1:11434", "address to listen on")
	token  = flag.String("token", "", "bearer token for authentication")
	target = flag.String("target", "https://ollama.ula.inventati.org", "target hostname")
)

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

	http.ListenAndServe(*addr, proxy)
}