diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..05cc2c4 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,5 @@ +FROM gliderlabs/alpine + +ADD build/discourse-auth-proxy /bin/discourse-auth-proxy + +CMD ["/bin/discourse-auth-proxy"] diff --git a/docker/build/Dockerfile b/docker/build/Dockerfile new file mode 100644 index 0000000..2f45932 --- /dev/null +++ b/docker/build/Dockerfile @@ -0,0 +1,11 @@ +FROM gliderlabs/alpine + +RUN apk --update add bash git go mercurial +RUN mkdir -p /gopath/src/github.com/discourse && cd /gopath/src/github.com/discourse && git clone https://github.com/discourse/discourse-auth-proxy +ENV GOPATH /gopath +RUN mkdir -p /gopath +RUN cd /gopath/src/github.com/discourse/discourse-auth-proxy && go get +RUN cd /gopath/src/github.com/discourse/discourse-auth-proxy && CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-w' . + +CMD cp /gopath/src/github.com/discourse/discourse-auth-proxy/discourse-auth-proxy /shared + diff --git a/main.go b/main.go index 1854fb3..c79822c 100644 --- a/main.go +++ b/main.go @@ -17,6 +17,7 @@ import ( "net/http" "net/http/httputil" "net/url" + "os" "strings" "time" ) @@ -25,10 +26,10 @@ var nonceCache = lru.New(20) func main() { - proxyUriPtr := flag.String("proxy-url", "", "uri to listen on eg: http://localhost:2000") - originUriPtr := flag.String("origin-url", "", "origin to proxy eg: http://somesecrethost:2001") + proxyUriPtr := flag.String("proxy-url", "", "uri to listen on eg: http://proxy.com") + originUriPtr := flag.String("origin-url", "", "origin to proxy eg: http://origin.com") ssoSecretPtr := flag.String("sso-secret", "", "SSO secret for origin") - ssoUriPtr := flag.String("sso-url", "", "SSO endpoint eg: http://yourdiscourse.com") + ssoUriPtr := flag.String("sso-url", "", "SSO endpoint eg: http://discourse.forum.com") flag.Parse() @@ -42,26 +43,27 @@ func main() { _, err = url.Parse(*ssoUriPtr) if err != nil { + flag.Usage() log.Fatal("invalid sso url, should point at Discourse site with enable sso") } proxyUrl, err2 := url.Parse(*proxyUriPtr) if err2 != nil { + flag.Usage() log.Fatal("invalid proxy uri") } + if *proxyUriPtr == "" || *originUriPtr == "" || *ssoSecretPtr == "" || *ssoUriPtr == "" { + flag.Usage() + os.Exit(1) + return + } + cookieSecret := uuid.New() proxy := httputil.NewSingleHostReverseProxy(originUrl) - // origDirector := proxy.Director - // proxy.Director = func(req *http.Request) { - // fmt.Printf("I WAS CALLED") - // req.Header.Set("Original-Request", req.URL.String()) - // origDirector(req) - // } - handler := redirectIfCookieMissing(proxy, *ssoSecretPtr, cookieSecret, *ssoUriPtr) server := &http.Server{