|
|
@@ -19,7 +19,7 @@ func viewPage(w http.ResponseWriter, r *http.Request) { |
|
|
|
http.Error(w, "Error", http.StatusInternalServerError) |
|
|
|
} |
|
|
|
|
|
|
|
log.Info(fmt.Sprintf("\"%s %s\" %s \"%s\"", r.Method, r.RequestURI, time.Since(start), r.UserAgent())) |
|
|
|
log.Info(fmt.Sprintf("\"%s %s\" %s \"%s\" \"%s\"", r.Method, r.RequestURI, time.Since(start), r.UserAgent(), r.Host)) |
|
|
|
}() |
|
|
|
|
|
|
|
name := r.URL.Path[1:] |
|
|
@@ -27,41 +27,47 @@ func viewPage(w http.ResponseWriter, r *http.Request) { |
|
|
|
name = "index" |
|
|
|
} |
|
|
|
|
|
|
|
pl := &platform.WriteAs |
|
|
|
if r.Host == "developers.snap.as" || r.Host == fmt.Sprintf("devsnap.local:%d", *portPtr) { |
|
|
|
pl = &platform.SnapAs |
|
|
|
} |
|
|
|
|
|
|
|
p := struct { |
|
|
|
Path string |
|
|
|
Platform *platform.Platform |
|
|
|
}{ |
|
|
|
Path: name, |
|
|
|
Platform: pl, |
|
|
|
} |
|
|
|
|
|
|
|
// Make sure the page exists |
|
|
|
if _, err := os.Stat(filepath.Join(pagesDir, name+".tmpl")); os.IsNotExist(err) { |
|
|
|
log.Info(filepath.Join(pagesDir, name, "index.tmpl")) |
|
|
|
if _, err := os.Stat(filepath.Join(pagesDir, name, "index.tmpl")); os.IsNotExist(err) { |
|
|
|
t, err := getTemplate("404") |
|
|
|
if _, err := os.Stat(filepath.Join(pagesDir, pl.SiteDir, p.Path+".tmpl")); os.IsNotExist(err) { |
|
|
|
log.Info(filepath.Join(pagesDir, pl.SiteDir, p.Path, "index.tmpl")) |
|
|
|
if _, err := os.Stat(filepath.Join(pagesDir, pl.SiteDir, p.Path, "index.tmpl")); os.IsNotExist(err) { |
|
|
|
t, err := getTemplate(pl.SiteDir, "404") |
|
|
|
if err != nil { |
|
|
|
http.Error(w, err.Error(), http.StatusInternalServerError) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
w.WriteHeader(http.StatusNotFound) |
|
|
|
err = t.ExecuteTemplate(w, "base", nil) |
|
|
|
err = t.ExecuteTemplate(w, "base", p) |
|
|
|
if err != nil { |
|
|
|
log.Info("Unable to render 404 page: %s", err) |
|
|
|
} |
|
|
|
return |
|
|
|
} else { |
|
|
|
name = filepath.Join(name, "index") |
|
|
|
log.Info("name is now %s", name) |
|
|
|
p.Path = filepath.Join(p.Path, "index") |
|
|
|
log.Info("name is now %s", p.Path) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Render the page |
|
|
|
t, err := getTemplate(name) |
|
|
|
t, err := getTemplate(pl.SiteDir, p.Path) |
|
|
|
if err != nil { |
|
|
|
http.Error(w, err.Error(), http.StatusInternalServerError) |
|
|
|
return |
|
|
|
} |
|
|
|
p := struct { |
|
|
|
Path string |
|
|
|
Platform platform.Platform |
|
|
|
}{ |
|
|
|
Path: name, |
|
|
|
Platform: platform.WriteAs, |
|
|
|
} |
|
|
|
|
|
|
|
err = t.ExecuteTemplate(w, "base", p) |
|
|
|
if err != nil { |
|
|
|