package main import ( "encoding/json" "flag" "html/template" "io/ioutil" "log" "net/http" "os" "sync" "github.com/elazarl/go-bindata-assetfs" ) type Cred struct { Name string Password string } var creds = make([]Cred, 0) var m = sync.Mutex{} var templates *template.Template func initDb() { b, err := ioutil.ReadFile(*dbFile) if err != nil { log.Println("Problem opening db file ... ignoring ...", err) } err = json.Unmarshal(b, &creds) if err != nil { log.Println("Problem parsing db file ... ignoring ...", err) creds = make([]Cred, 0) } } func main() { flag.Parse() initDb() http.HandleFunc("/pass", passHandler) http.HandleFunc("/api/1.0/creds/", credHandler) var fs http.FileSystem if os.Getenv("DEV") == "" { log.Printf("static: prod mode") fs = &assetfs.AssetFS{ Asset: Asset, AssetDir: AssetDir, Prefix: "static", } } else { log.Printf("static: dev mode") fs = http.Dir(os.Getenv("DEV")) } http.Handle("/", http.RedirectHandler("/s/", http.StatusMovedPermanently)) http.Handle("/s/", http.StripPrefix("/s/", http.FileServer(fs))) if err := http.ListenAndServe(*addr, nil); err != nil { log.Fatal("ListenAndServe:", err) } }