55 lines
1.6 KiB
Go
55 lines
1.6 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"log"
|
||
|
"net/http"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
var PublishedImgDir string
|
||
|
var NextImgDir string
|
||
|
var ThumbsDir string
|
||
|
|
||
|
func main() {
|
||
|
bind := flag.String("bind", "0.0.0.0:8080", "Bind port/socket")
|
||
|
htpasswd_file := flag.String("htpasswd", "", "Admin passwords file, Apache htpasswd format")
|
||
|
flag.StringVar(&PublishedImgDir, "publishedimgdir", "./images/published/", "Directory where save published pictures")
|
||
|
flag.StringVar(&NextImgDir, "nextimgdir", "./images/next/", "Directory where save pictures to review")
|
||
|
flag.StringVar(&ThumbsDir, "thumbsdir", "./images/thumbs/", "Directory where generate thumbs")
|
||
|
flag.Parse()
|
||
|
|
||
|
htpasswd := &Htpasswd{}
|
||
|
|
||
|
if htpasswd_file != nil && *htpasswd_file != "" {
|
||
|
log.Println("Reading htpasswd file...")
|
||
|
var err error
|
||
|
if htpasswd, err = NewHtpasswd(*htpasswd_file); htpasswd == nil {
|
||
|
log.Fatal("Unable to parse htpasswd:", err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
log.Println("Checking paths...")
|
||
|
if _, err := os.Stat(PublishedImgDir); os.IsNotExist(err) {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
if _, err := os.Stat(NextImgDir); os.IsNotExist(err) {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
if _, err := os.Stat(ThumbsDir); os.IsNotExist(err) {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
|
||
|
log.Println("Registering handlers...")
|
||
|
authFunc := func (r *http.Request) (*User){ return Authenticate(*htpasswd, r) }
|
||
|
|
||
|
mux := http.NewServeMux()
|
||
|
mux.Handle("/api/", http.StripPrefix("/api", ApiHandler(authFunc)))
|
||
|
mux.Handle("/", http.FileServer(http.Dir("./static/")))
|
||
|
|
||
|
log.Println("Ready, listening on", *bind)
|
||
|
if err := http.ListenAndServe(*bind, mux); err != nil {
|
||
|
log.Fatal("Unable to listen and serve: ", err)
|
||
|
}
|
||
|
}
|