grim/hgkeeper

Introduce "rm <repo>" command

13 months ago, aklitzing
7485b844616f
Introduce "rm " command

It is possible to create a new repository with "hg init" but it is not possible
to remove any repositories. So let's use "ssh command" to allow this.

$ ssh hg.host.com rm repoName

Bugs closed: HGKEEPER-25

Reviewed at https://reviews.imfreedom.org/r/2421/
package http
import (
"fmt"
"net/http"
"strings"
"go.uber.org/zap"
"keep.imfreedom.org/grim/hgkeeper/access"
)
func authorizedKeysHandler(externalHostname, externalPort string) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fp := r.URL.Query().Get("fp")
if fp == "" {
w.WriteHeader(http.StatusBadRequest)
fmt.Fprintf(w, "missing fp parameter")
return
}
pubkey, err := access.PubkeyFromFingerprint(fp)
if err != nil {
w.WriteHeader(http.StatusNotFound)
fmt.Fprintf(w, "failed to find fingerprint %q", fp)
zap.S().Errorf("failed to find fingerprint for %s: %v", fp, err)
return
}
options := []string{
fmt.Sprintf(
"command=\"ssh -T %s -p %s $SSH_ORIGINAL_COMMAND\"",
externalHostname,
externalPort,
),
"restrict",
"agent-forwarding",
}
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, fmt.Sprintf("%s %s", strings.Join(options, ","), pubkey))
})
}