74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package am
|
|
|
|
import (
|
|
"flag"
|
|
"html/template"
|
|
"net/http"
|
|
"os"
|
|
"strings"
|
|
|
|
"golang.org/x/crypto/acme/autocert"
|
|
)
|
|
|
|
//go:generate go run cmd/generate/templates.go
|
|
|
|
/***********
|
|
* Globals *
|
|
***********/
|
|
|
|
var db *dbal
|
|
var tmpl *template.Template
|
|
|
|
func Main() {
|
|
var listenAddr string
|
|
flag.StringVar(&listenAddr, "listen", "localhost:8888",
|
|
"Listen address, <host>:<port>")
|
|
flag.Parse()
|
|
|
|
l := strings.Split(listenAddr, ":")
|
|
if len(l) != 2 {
|
|
flag.Usage()
|
|
os.Exit(1)
|
|
}
|
|
host := l[0]
|
|
port := l[1]
|
|
|
|
var err error
|
|
|
|
// Initialize globals.
|
|
tmpl = template.Must(template.New("").Parse(tmpls))
|
|
if db, err = newDB("database.sqlite3"); err != nil {
|
|
os.Exit(1)
|
|
}
|
|
|
|
go processTimeouts()
|
|
go purgeOldEntries()
|
|
|
|
// Root.
|
|
http.HandleFunc("/", handleRoot)
|
|
|
|
// API requests.
|
|
http.HandleFunc("/report", handleReport)
|
|
|
|
// User routes.
|
|
handle_admin("/user/insert", handleUserInsert)
|
|
handle_user("/user/list", handleUserList)
|
|
handle_user("/user/view/", handleUserView)
|
|
handle_admin("/user/update/", handleUserUpdate)
|
|
handle_admin("/user/delete/", handleUserDelete)
|
|
|
|
handle_admin("/source/insert", handleSourceInsert)
|
|
handle_user("/source/list", handleSourceList)
|
|
handle_user("/source/view/", handleSourceView)
|
|
handle_admin("/source/update/", handleSourceUpdate)
|
|
handle_admin("/source/delete/", handleSourceDelete)
|
|
|
|
handle_user("/log/list", handleLogList)
|
|
|
|
if port == "443" {
|
|
http.Serve(autocert.NewListener(host), http.DefaultServeMux)
|
|
} else {
|
|
http.ListenAndServe(listenAddr, nil)
|
|
}
|
|
}
|