go-examples/photoblog/main.go

57 lines
1.2 KiB
Go
Raw Normal View History

package main
import (
2017-07-29 11:54:23 +00:00
"fmt"
"html/template"
"log"
"net/http"
2017-07-29 11:54:23 +00:00
"os"
"strings"
"meutel.net/meutel/go-examples/photoblog/admin"
2017-07-29 11:54:23 +00:00
"meutel.net/meutel/go-examples/photoblog/photo"
"github.com/gorilla/sessions"
)
func main() {
tpl, err := template.ParseGlob("templates/*.html")
if err != nil {
log.Fatalln(err)
}
2017-07-29 11:54:23 +00:00
dataInfo, err := os.Stat("data")
if !dataInfo.IsDir() {
log.Fatalln("data is not a directory")
}
data, err := os.Open("data")
if err != nil {
log.Fatalln(err)
}
defer data.Close()
admin := admin.AuthCookie{
Templates: tpl,
Store: sessions.NewCookieStore([]byte("flQ6QzM/c3Jtdl9ycDx6OXRIfFgK")),
}
2017-07-29 11:54:23 +00:00
app := photo.PhotoBlog{
AuthCookie: &admin,
Templates: tpl,
2017-07-29 11:54:23 +00:00
DataDir: data,
}
2017-07-29 11:54:23 +00:00
fileServer := http.FileServer(http.Dir(data.Name()))
http.HandleFunc("/", func(res http.ResponseWriter, req *http.Request) {
fmt.Println(req.RequestURI)
if strings.HasPrefix(req.RequestURI, "/data") {
http.StripPrefix("/data/", fileServer).ServeHTTP(res, req)
} else {
app.HomePage(res, req)
}
})
http.HandleFunc("/upload", app.UploadPage)
http.HandleFunc("/login", app.LoginPage)
http.HandleFunc("/logout", app.LogoutPage)
http.ListenAndServeTLS(":9443", "../cert.pem", "../key.pem", nil)
}