#!/usr/bin/env python3 from srht.config import cfg, get_origin import os import requests import sys key_type = sys.argv[3] b64key = sys.argv[4] def fail(reason): owner = cfg("sr.ht", "owner-name") email = cfg("sr.ht", "owner-email") print(reason) print(f"Please reach out to {owner} <{email}> for support.") sys.exit(1) meta_origin = get_origin("meta.sr.ht") r = requests.get(f"{meta_origin}/api/ssh-key/{b64key}") if r.status_code == 200: username = r.json()["owner"]["name"] elif r.status_code == 404: fail("We don't recognize your SSH key. Make sure you've added it to " + f"your account.\n{get_origin('meta.sr.ht', external=True)}/keys") else: fail("Temporary authentication failure. Try again later.") default_shell = os.path.join(os.path.dirname(sys.argv[0]), "master-shell") shell = cfg("builds.sr.ht", "shell", default=default_shell) print(f"restrict,pty,command=\"{shell} '{username}'\" {key_type} {b64key} somebody\n") sys.exit(0)