forked from tangled.org/core
this repo has no description
1// This program must be configured to run as the sshd AuthorizedKeysCommand. 2// The format looks something like this: 3// Match User git 4// AuthorizedKeysCommand /keyfetch -internal-api http://localhost:5444 -repoguard-path /home/git/repoguard 5// AuthorizedKeysCommandUser nobody 6// 7// The command and its parent directories must be owned by root and set to 0755. Hence, the ideal location for this is 8// somewhere already owned by root so you don't have to mess with directory perms. 9 10package main 11 12import ( 13 "encoding/json" 14 "flag" 15 "fmt" 16 "io" 17 "log" 18 "net/http" 19) 20 21func main() { 22 endpoint := flag.String("internal-api", "http://localhost:5444", "Internal API endpoint") 23 repoguardPath := flag.String("repoguard-path", "/home/git/repoguard", "Path to the repoguard binary") 24 flag.Parse() 25 26 resp, err := http.Get(*endpoint + "/keys") 27 if err != nil { 28 log.Fatalf("error fetching keys: %v", err) 29 } 30 defer resp.Body.Close() 31 32 body, err := io.ReadAll(resp.Body) 33 if err != nil { 34 log.Fatalf("error reading response body: %v", err) 35 } 36 37 var data []map[string]interface{} 38 err = json.Unmarshal(body, &data) 39 if err != nil { 40 log.Fatalf("error unmarshalling response body: %v", err) 41 } 42 43 fmt.Print(formatKeyData(*repoguardPath, data)) 44}