work in progress dockerfile

This commit is contained in:
Sam 2015-04-15 14:02:33 +10:00
parent 729f57a166
commit 31b15c200e
3 changed files with 28 additions and 10 deletions

5
docker/Dockerfile Normal file
View File

@ -0,0 +1,5 @@
FROM gliderlabs/alpine
ADD build/discourse-auth-proxy /bin/discourse-auth-proxy
CMD ["/bin/discourse-auth-proxy"]

11
docker/build/Dockerfile Normal file
View File

@ -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

22
main.go
View File

@ -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{