From 2d7f23ca67b144f1fd8a45621f5833394eaf6d35 Mon Sep 17 00:00:00 2001 From: iximeow Date: Sat, 16 Apr 2016 11:39:58 -0700 Subject: notesd initial commit ish --- httpd.py | 41 ++++++++++++++++++++++ newuser.py | 67 +++++++++++++++++++++++++++++++++++ notesd.run | 2 ++ ok@ok.ok.asc | 51 +++++++++++++++++++++++++++ ok@ok.ok.privkey | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ user2.gpg | 30 ++++++++++++++++ user2.gpg.key | 57 ++++++++++++++++++++++++++++++ user2_id_rsa | 27 ++++++++++++++ user2_id_rsa.pub | 1 + 9 files changed, 381 insertions(+) create mode 100644 httpd.py create mode 100644 newuser.py create mode 100755 notesd.run create mode 100644 ok@ok.ok.asc create mode 100644 ok@ok.ok.privkey create mode 100644 user2.gpg create mode 100644 user2.gpg.key create mode 100644 user2_id_rsa create mode 100644 user2_id_rsa.pub diff --git a/httpd.py b/httpd.py new file mode 100644 index 0000000..f61b22b --- /dev/null +++ b/httpd.py @@ -0,0 +1,41 @@ +#! /usr/bin/env python3 + +from http.server import * +import json +import tempfile +import base64 + +class HandlerClass(BaseHTTPRequestHandler): + def __init__(self, request, client_address, server): + self.timeout = 20 + BaseHTTPRequestHandler.__init__(self, request, client_address, server) + + def do_POST(self): + to_read = int(self.headers['Content-Length']) + data = self.rfile.read(to_read) + if len(data) > 0: + dat_str = data.decode("ascii") + body = json.loads(dat_str) + ssh_key = body['ssh'] + gpg_key = body['gpg'] + print("your (base64) ssh_key: " + ssh_key) + print("your (base64) gpg_key: " + gpg_key) + ssh_keypath = as_tempfile(base64.b64decode(ssh_key)) + gpg_keypath = as_tempfile(base64.b64decode(gpg_key)) + recv_keys(ssh_keypath, gpg_keypath) + + self.send_response(200) + self.end_headers() + +def as_tempfile(content): + tmpfile = tempfile.NamedTemporaryFile() + tmpfile.write(content) + return tmpfile + +def main(): + print("Running on port whatever") + server_address = ('', 8002) + httpd = HTTPServer(server_address, HandlerClass) + httpd.serve_forever() + +main() diff --git a/newuser.py b/newuser.py new file mode 100644 index 0000000..4e0a0cd --- /dev/null +++ b/newuser.py @@ -0,0 +1,67 @@ +#! /usr/bin/env python + +from subprocess import call +import base64 + +import gnupg # python-gnupg + +root_user_fs_path = './user_fses/' +root_repo_path = './repos/' + +authorized_keys_base = '/var/authorized_keys/' + +gpg = gnupg.GPG(gnupghome='/does/not/exist') + +def recv_keys(gpg_key_path, ssh_key_path): + fingerprint = full_fingerprint(gpg_key_path) + username = tiny_gpg_fingerprint(fingerprint) + alloc_user(username) + add_key(username, ssh_key_path) + print("gpg key: %s, ssh key: %s" % (gpg_key_path, ssh_key_path)) + print("username: %s, gpg fingerprint: %s" % (username, fingerprint)) + return True + +def full_fingerprint(gpg_key_path): + keys = gpg.scan_keys(gpg_key_path) + if (len(keys) == 0): + raise "hell" + if (len(keys) != 1): + raise "the roof" + return keys[0]["fingerprint"] + +# the s/./=/g thing here is because +# = is apparently not valid in a username! +# but having the padding around is nice. so keep it. +# so turn it into valid characters! +def untiny_gpg_fingerprint(tiny): + return binascii.unhexlify( + base64.b64decode(tiny.replace('.', '='), '-_') + ) + +def tiny_gpg_fingerprint(raw_fingerprint): + fingerprint_bytes = raw_fingerprint.decode('hex') + return base64.b64encode(fingerprint_bytes, '-_').replace('=', '.') + +def add_key(username, ssh_key_path): + with open(ssh_key_path, 'r') as key_file: + ssh_key = key_file.read() + with open(authorized_keys_base + username, 'a+') as user_authorized_keys: + user_authorized_keys.write(ssh_key) + return True + +def alloc_user(username): + + if username == '': + raise Exception("Username must not be empty and must be alphanumeric (but it's derived from your full gpg key id, so how did you do that?") + + fs_path = root_user_fs_path + username + repo_path = root_repo_path + username +# [D]on't give a password (ssh login only) +# Don't create a [H]ome directory +# Set the login [s]hell to a non-shell to disallow logins + call(['adduser', '-D', '-H', '-s', '/bin/false', username]) + call(['dd', 'if=/dev/zero', 'of=' + fs_path, 'bs=4096', 'count=32768']) + call(['mkfs.ext4', '-q', fs_path]) + call(['mkdir', repo_path]) + call(['mount', '-o', 'loop,rw', fs_path, repo_path + '/']) + call(['touch', repo_path + '/git-daemon-export-ok']) diff --git a/notesd.run b/notesd.run new file mode 100755 index 0000000..4df68d1 --- /dev/null +++ b/notesd.run @@ -0,0 +1,2 @@ +#! /bin/sh +qemu-system-x86_64 -cpu host -enable-kvm -hda notesd-test.img diff --git a/ok@ok.ok.asc b/ok@ok.ok.asc new file mode 100644 index 0000000..9b9e220 --- /dev/null +++ b/ok@ok.ok.asc @@ -0,0 +1,51 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +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 +=gL+n +-----END PGP PUBLIC KEY BLOCK----- diff --git a/ok@ok.ok.privkey b/ok@ok.ok.privkey new file mode 100644 index 0000000..45f5262 --- /dev/null +++ b/ok@ok.ok.privkey @@ -0,0 +1,105 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1 + +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 +=jCoW +-----END PGP PRIVATE KEY BLOCK----- diff --git a/user2.gpg b/user2.gpg new file mode 100644 index 0000000..9710265 --- /dev/null +++ b/user2.gpg @@ -0,0 +1,30 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQENBFbvqlQBCADgDkOVU0omwe7rwgfmDtOrQKsH7X6eFqMJglYg931cbBzHA0A2 +ZXKuSW/xA8aqUn2saaLilP2D90J9mU+rZvvlRubgyAVVQlCYqIDAz+sFW1lRtb+S +uLBHAiwV30D6sXxwOxlLaBGgddlDBfdypQW6ayIcycgwsQhnrBeu8OTAqg4O7dSG +HQUusbFnru6nVimRpwtmroSatBE9W+5lRA96imVI37KqaAffWlfebrN2Vcvd88nN +eCWt3+/TTleUZi89TGGQHjcWbTov5/5EVrav5vu1R+nL2FK+dUG29eC0ygsGXGqz +N4SmhYDqlMnhfgpCZSoZxFh3rwML+j+U/rE7ABEBAAG0GXVzZXIyIDx1c2VyMkB1 +c2VyMi51c2VyMj6JAT4EEwECACgFAlbvqlQCGwMFCQBPGgAGCwkIBwMCBhUIAgkK +CwQWAgMBAh4BAheAAAoJECtFmM6ddWu3cKUH/imIxa7+3Rkd6DNHq33MY59MCWCy +w+AgpSjA1cS/wr3syWqtRW374Yl/F9iA+cq77ZJMYtnoLrQjbNHWRDMw6u7DQpXh +OLzb3KzL12b3tu0TosE9nZ4Yg+84EXkp+NLP15wPNAXWJffqy6N21uoQMSy04wXC +NAVd1uEALLNErcZcj9mq9cZ2SxObw1clvdhJxntuYDl5vn32HX1IW6QaqKpY61AH +OJQXiImiDHFn0LdyCIwkgfyN8wpa5zrHUoA16JvkK2lJmhIsmLhB0cGjz1nJGkO6 +CP5rwroQbZrjC+ksFoVXJQyY3jxNMna0QVEOSBILDwj8xZ+BvYWdAQHqByq5AQ0E +Vu+qVAEIAOn9b1xtAACtFsgv+LH4K9kR23i6jEinLaS2UHSWRZmTepZAjI1cUXpr +EPwqnpktGUmpCrRZsdMudENnPnl4nK3D3Tl8atOjf7mSZsFCd5M2OJxO2vQ3MkXC +tszOHz/kgeipXVmr2sbp368uU7cJkVHCYwkzWbAtqT0qzSueFxOpnpQacLyK7IVt +DyZGezf5Ykf9n6Z+U0U512AtSHIFKy4PFHezsT6IEQ+DU+8RvS6H+/00yVPh1Hye +ZIu/STqXb/9mHYbAR2y7U+cNm60kPqY5DPKdk9RPla17mS7o5rOo4omcksBmrK6u +WIlk/mFxT7z9wHnBtnyCEoHZk53y+0EAEQEAAYkBJQQYAQIADwUCVu+qVAIbDAUJ +AE8aAAAKCRArRZjOnXVrt2mTB/9Y5sYEgnClykYr9LjWstmZ7eRXWMbr7mIpj3lh +L16qNDgoDGIJlZgO+rc3EqyJkP63WQnVlPw2VjrkPEEWQ4uScnh3BNGcOdAva0DM +PqmC5w+xgnEX/dkrUwUdDUQm1/bSFhH629KZoZOK58lHxd+a5/ewys0WN/i42+rj ++yW0wBfkLVTb5f6FickNpBv5kvPDghFFh2SYiLVF53F5f33MLkPzxRTbcuNvvQy7 +bc6fd9lv3tSy8xws8b0fqXL+i6yhcL4VmSJMmUb4wRxHIq+0/BKZP/phDN0lleQQ +wEQpC1Phbz8RBsurc7daMn4QLfVLNtPuEnmYqYcKrdI9krlN +=9k5w +-----END PGP PUBLIC KEY BLOCK----- diff --git a/user2.gpg.key b/user2.gpg.key new file mode 100644 index 0000000..fc6c4be --- /dev/null +++ b/user2.gpg.key @@ -0,0 +1,57 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1 + +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 +=Pt3j +-----END PGP PRIVATE KEY BLOCK----- diff --git a/user2_id_rsa b/user2_id_rsa new file mode 100644 index 0000000..f2a2fc1 --- /dev/null +++ b/user2_id_rsa @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAwL60hX/ImOYxsV5QbQ0G998gfog+tSKqwq7TyVvTOnKQwFh3 +VVDaVJmvKu3DQRdpbOVi9K4lqxAYiUgt9wb4eCOBYGIai2+DCNpIftLvK9UE3UNB +A36xEQA9Ij+7Bbm5I1wqwMVm6qLMH2ZkDrVKxY+3cvGAe/ZrXdFaPXsH0y/sRsHZ +4GFaYluSF8B5T1QRfZ8bqzSJrWByG/UAQJtvOC8Rmn8uRzPW000F3aPbtmINhQUV +IY/WtUqPFCk0kmZf+JhkOkIRgm/tk+jGMDKuwDtg1UYqFDuYE1XyzrQZcLNIwNgz +WsPB9E/Bhw9Y78WDIuy2Aeq/okM269esZgurdwIDAQABAoIBADVsZnLeQUaH/1wP +LTGcu8K2eLY5o0/nhPcjKBaWugxoNtDpdGIUX/+0/UVj04vWJmWFixEQt+YbNwHO +HNdsejAqfzCs4HinduVcQ13Lr3kxuQBvJLUIR6HTtB4rFfZ3TOaNJFh8HpOIfhVx +9ufQviHWPN3CLH+vhIDjhySlVjzlf2hlAb3BYczom6mMYESrfbdPuJ0ScWbrvTXM +vMDsR0NHu1/AiE/3nOql7fcShyuUrAw9IBPzXB/EQxyqWYJUZ+KXXrcTjpKtDfAH +fBVzN0CLBMjfIPJlYpf9ft+/iJHw/2GrE3hi4Yx9Dj4M9+QlVFwyiJ2PR3fl0me7 +YG7H+0kCgYEA4tQWPcTyyjNaCIRmvhR8lgFZhA/KY6Jd1qjQkYorrR1foUstQqju +j7uiO7bvvZqufL2pkf+TBiEYitwJX+VlofGHXABifyTnnkzlV5Kf+K5YFJ876/lo +Kq4dyFxB6pUmzk+N2qqRC/RGFfZl+ISdfUCFRL7WKrd3/ElPFTsCbksCgYEA2Yh7 +A90KT8Y7jOY7Kok3bBzbF5pbW7t7L3YaQ3rhAdqPaz5eDbdirWsWA9Hifo81zfU2 +uZZRxDtKgwsiA0H+5KDjb9TvZzWORscynS4JXVuMYZ610FOk8tnk9mJKJ4Ipp0Na +0boShfrfB0fz4yh3CRcV2KzoD7isyKgeErD8DAUCgYBtpZgaw9mZZLlg5J/FwqF2 +4bAj5n4vK42w9mnb8K6sQEa58V0vm/m2AT2rIAND5EH0irotmR25GMaEWVkuwfUf +E2IbVxRF4dEU9JbofjhWPfDWByMwLp/sAb7j27UBcJgRouMvkMQMw0gd1b31JCX9 +JfNGB/n/LDEUA1v3J09FgQKBgDrPcSKMQdtrZnIjVF+dlUQ/UORCsOxN9XHRZixU +LjzID/oYdGkU6TKlPuBtf+RjZ1J1NwRZpWV9+hkPi3SCBR1eed6kHM00Z3CvLfnc +ll+M/pjtxY26719QlVwfGpkv0X8M8KK+wX9DYcSgKUmCiRwGB7v6kwqdDOl6uhan +jpzZAoGBAN5WnzhILWsMrXpQmi3ToniWNgAVrt/nnmkKN9OEMMZ7mZi4YM0uSVVe +LHEFt6qh7OEla+NRxVjLdzyr3o/pFFaaf/wO/Hn+Tu3XYSiLStJqDv1jYTK0aY67 +RqzMvQrvZQSLv4qo0gF22rJYyI7X6Z4S8UTq0FjUSIb6ErxAGftW +-----END RSA PRIVATE KEY----- diff --git a/user2_id_rsa.pub b/user2_id_rsa.pub new file mode 100644 index 0000000..2a74c92 --- /dev/null +++ b/user2_id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAvrSFf8iY5jGxXlBtDQb33yB+iD61IqrCrtPJW9M6cpDAWHdVUNpUma8q7cNBF2ls5WL0riWrEBiJSC33Bvh4I4FgYhqLb4MI2kh+0u8r1QTdQ0EDfrERAD0iP7sFubkjXCrAxWbqoswfZmQOtUrFj7dy8YB79mtd0Vo9ewfTL+xGwdngYVpiW5IXwHlPVBF9nxurNImtYHIb9QBAm284LxGafy5HM9bTTQXdo9u2Yg2FBRUhj9a1So8UKTSSZl/4mGQ6QhGCb+2T6MYwMq7AO2DVRioUO5gTVfLOtBlws0jA2DNaw8H0T8GHD1jvxYMi7LYB6r+iQzbr16xmC6t3 iximeow@ivorytower -- cgit v1.1