summaryrefslogtreecommitdiffstats
path: root/gitsrht-keys
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-12-31 11:24:45 -0500
committerDrew DeVault <sir@cmpwn.com>2018-12-31 11:24:45 -0500
commitacf9751e050d65898660ce87d8c4a9af98bf6e11 (patch)
tree3e7e3bbc37cc08fde1040cf898d85f2ce152c904 /gitsrht-keys
parent240c0f64e8a74ba7e75e7590b18b4ead711d3a77 (diff)
Swap relation of symlinks
Diffstat (limited to 'gitsrht-keys')
-rwxr-xr-x[l---------]gitsrht-keys34
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)