summaryrefslogtreecommitdiffstats
path: root/mansrht-keys
blob: 56a88912cdd97f87f54a94bb9e1f07fe12a78162 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env python3
import os
import sys
import requests
from srht.config import cfg
from srht.database import DbSession
db = DbSession(cfg("man.sr.ht", "connection-string"))
from mansrht.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]), "mansrht-shell")
shell = cfg("man.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)