mirror of https://github.com/perkeep/perkeep.git
61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"camli/auth"
|
|
"camli/blobref"
|
|
"camli/httputil"
|
|
"camli/webserver"
|
|
"flag"
|
|
"fmt"
|
|
"http"
|
|
"os"
|
|
)
|
|
|
|
var accessPassword string
|
|
|
|
var flagPubKeyDir *string = flag.String("pubkey-dir", "test/pubkey-blobs",
|
|
"Temporary development hack; directory to dig-xxxx.camli public keys.")
|
|
|
|
// TODO: for now, the only implementation of the blobref.Fetcher
|
|
// interface for fetching public keys is the "local, from disk"
|
|
// implementation used for testing. In reality we'd want to be able
|
|
// to fetch these from blobservers.
|
|
var pubKeyFetcher = blobref.NewSimpleDirectoryFetcher(*flagPubKeyDir)
|
|
|
|
func handleRoot(conn http.ResponseWriter, req *http.Request) {
|
|
fmt.Fprintf(conn, "camsigd")
|
|
}
|
|
|
|
func handleCamliSig(conn http.ResponseWriter, req *http.Request) {
|
|
handler := func (conn http.ResponseWriter, req *http.Request) {
|
|
httputil.BadRequestError(conn, "Unsupported path or method.")
|
|
}
|
|
|
|
switch req.Method {
|
|
case "POST":
|
|
switch req.URL.Path {
|
|
case "/camli/sig/sign":
|
|
handler = auth.RequireAuth(handleSign)
|
|
case "/camli/sig/verify":
|
|
handler = handleVerify
|
|
}
|
|
}
|
|
handler(conn, req)
|
|
}
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
|
|
auth.AccessPassword = os.Getenv("CAMLI_PASSWORD")
|
|
if len(auth.AccessPassword) == 0 {
|
|
fmt.Fprintf(os.Stderr,
|
|
"No CAMLI_PASSWORD environment variable set.\n")
|
|
os.Exit(1)
|
|
}
|
|
|
|
ws := webserver.New()
|
|
ws.HandleFunc("/", handleRoot)
|
|
ws.HandleFunc("/camli/sig/", handleCamliSig)
|
|
ws.Serve()
|
|
}
|