jlelse
/
ProxyExposer
Archived
1
Fork 0
This repository has been archived on 2024-01-02. You can view files and clone it, but cannot push or open issues or pull requests.
ProxyExposer/main.go

59 lines
947 B
Go

package main
import (
"log"
"net/http"
"net/http/httputil"
"net/url"
"os"
"strconv"
)
func main() {
proxy := os.Getenv("PE_PROXY")
if proxy == "" {
log.Fatal("PE_PROXY not specified")
return
}
proxyUrl, err := url.Parse(proxy)
if err != nil {
log.Fatal(err.Error())
return
}
upstream := os.Getenv("PE_UPSTREAM")
if upstream == "" {
log.Fatal("PE_UPSTREAM not specified")
return
}
upstreamUrl, err := url.Parse(upstream)
if err != nil {
log.Fatal(err.Error())
return
}
portString := os.Getenv("PE_PORT")
if portString == "" {
log.Fatal("PE_PORT not specified")
return
}
port, err := strconv.Atoi(portString)
if err != nil {
log.Fatal(err.Error())
return
}
rp := httputil.NewSingleHostReverseProxy(upstreamUrl)
rp.Transport = &http.Transport{
Proxy: http.ProxyURL(proxyUrl),
}
err = http.ListenAndServe(":"+strconv.Itoa(port), rp)
if err != nil {
log.Fatal(err.Error())
return
}
}