diff --git a/website/camweb.go b/website/camweb.go
index 5469268a8..a0e36a90e 100644
--- a/website/camweb.go
+++ b/website/camweb.go
@@ -30,7 +30,6 @@ import (
"log"
"net"
"net/http"
- "net/http/httputil"
"net/smtp"
"net/url"
"os"
@@ -67,17 +66,15 @@ const defaultAddr = ":31798" // default webserver address
var h1TitlePattern = regexp.MustCompile(`
([^<]+)
`)
var (
- httpAddr = flag.String("http", defaultAddr, "HTTP address")
- httpsAddr = flag.String("https", "", "HTTPS address")
- root = flag.String("root", "", "Website root (parent of 'static', 'content', and 'tmpl)")
- logDir = flag.String("logdir", "", "Directory to write log files to (one per hour), or empty to not log.")
- logStdout = flag.Bool("logstdout", true, "Whether to log to stdout")
- tlsCertFile = flag.String("tlscert", "", "TLS cert file")
- tlsKeyFile = flag.String("tlskey", "", "TLS private key file")
- buildbotBackend = flag.String("buildbot_backend", "", "[optional] Build bot status backend URL")
- buildbotHost = flag.String("buildbot_host", "", "[optional] Hostname to map to the buildbot_backend. If an HTTP request with this hostname is received, it proxies to buildbot_backend.")
- alsoRun = flag.String("also_run", "", "[optiona] Path to run as a child process. (Used to run camlistore.org's ./scripts/run-blob-server)")
- devMode = flag.Bool("dev", false, "in dev mode")
+ httpAddr = flag.String("http", defaultAddr, "HTTP address")
+ httpsAddr = flag.String("https", "", "HTTPS address")
+ root = flag.String("root", "", "Website root (parent of 'static', 'content', and 'tmpl)")
+ logDir = flag.String("logdir", "", "Directory to write log files to (one per hour), or empty to not log.")
+ logStdout = flag.Bool("logstdout", true, "Whether to log to stdout")
+ tlsCertFile = flag.String("tlscert", "", "TLS cert file")
+ tlsKeyFile = flag.String("tlskey", "", "TLS private key file")
+ alsoRun = flag.String("also_run", "", "[optiona] Path to run as a child process. (Used to run camlistore.org's ./scripts/run-blob-server)")
+ devMode = flag.Bool("dev", false, "in dev mode")
gceProjectID = flag.String("gce_project_id", "", "GCE project ID; required if not running on GCE and gce_log_name is specified.")
gceLogName = flag.String("gce_log_name", "", "GCE Cloud Logging log name; if non-empty, logs go to Cloud Logging instead of Apache-style local disk log files")
@@ -92,6 +89,8 @@ var (
pageHTML, errorHTML, camliErrorHTML *template.Template
packageHTML *txttemplate.Template
+
+ buildbotBackend, buildbotHost string
)
var fmap = template.FuncMap{
@@ -548,8 +547,8 @@ func setProdFlags() {
*flagChromeBugRepro = true
*httpAddr = ":80"
*httpsAddr = ":443"
- *buildbotBackend = "https://travis-ci.org/camlistore/camlistore"
- *buildbotHost = "build.camlistore.org"
+ buildbotBackend = "https://travis-ci.org/camlistore/camlistore"
+ buildbotHost = "build.camlistore.org"
*gceLogName = "camweb-access-log"
*root = filepath.Join(prodSrcDir, "website")
*gitContainer = true
@@ -774,14 +773,14 @@ func main() {
mux.Handle("/doc/", http.StripPrefix("/doc", http.HandlerFunc(docHandler)))
mux.HandleFunc("/", mainHandler)
- if *buildbotHost != "" && *buildbotBackend != "" {
- buildbotUrl, err := url.Parse(*buildbotBackend)
- if err != nil {
- log.Fatalf("Failed to parse %v as a URL: %v", *buildbotBackend, err)
+ if buildbotHost != "" && buildbotBackend != "" {
+ if _, err := url.Parse(buildbotBackend); err != nil {
+ log.Fatalf("Failed to parse %v as a URL: %v", buildbotBackend, err)
}
- buildbotHandler := httputil.NewSingleHostReverseProxy(buildbotUrl)
- bbhpattern := strings.TrimRight(*buildbotHost, "/") + "/"
- mux.Handle(bbhpattern, buildbotHandler)
+ bbhpattern := strings.TrimRight(buildbotHost, "/") + "/"
+ mux.HandleFunc(bbhpattern, func(w http.ResponseWriter, r *http.Request) {
+ http.Redirect(w, r, buildbotBackend, http.StatusFound)
+ })
}
// ctx initialized now, because gceLauncher needs it first (when in prod).