diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-12-31 11:24:45 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2018-12-31 11:24:45 -0500 |
commit | acf9751e050d65898660ce87d8c4a9af98bf6e11 (patch) | |
tree | 3e7e3bbc37cc08fde1040cf898d85f2ce152c904 /gitsrht-keys | |
parent | 240c0f64e8a74ba7e75e7590b18b4ead711d3a77 (diff) |
Swap relation of symlinks
Diffstat (limited to 'gitsrht-keys')
-rwxr-xr-x[l---------] | gitsrht-keys | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/gitsrht-keys b/gitsrht-keys index 1e54382..e797b8f 120000..100755 --- a/gitsrht-keys +++ b/gitsrht-keys @@ -1 +1,33 @@ -git-srht-keys
\ No newline at end of file +#!/usr/bin/env python3 +import os +import sys +import requests +from srht.config import cfg +from srht.database import DbSession +db = DbSession(cfg("git.sr.ht", "connection-string")) +from gitsrht.types import User +db.init() + +sys.stderr.write(str(sys.argv) + "\n") +key_type = sys.argv[3] +b64key = sys.argv[4] + +r = requests.get("{}/api/ssh-key/{}".format( + cfg("meta.sr.ht", "origin"), b64key)) +if r.status_code != 200: + sys.stderr.write("meta.sr.ht returned 404 for this key\n") + sys.exit(0) +j = r.json() +username = j["owner"]["name"] +u = User.query.filter(User.username == username).first() +if not u: + sys.stderr.write("Unknown user {}\n", username) + sys.exit(1) +default_shell = os.path.join(os.path.dirname(sys.argv[0]), "git-srht-shell") +shell = cfg("git.sr.ht", "shell", default=default_shell) +keys = "command=\"{} '{}' '{}'\",".format(shell, u.id, b64key) + \ + "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " + \ + "{} {} {}".format(key_type, b64key, username) + "\n" +print(keys) +sys.stderr.write(keys) +sys.exit(0) |