#!/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)