diff options
Diffstat (limited to 'scripts/git-integration/git-auth.py')
-rwxr-xr-x | scripts/git-integration/git-auth.py | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/scripts/git-integration/git-auth.py b/scripts/git-integration/git-auth.py index 801a1d3..09dadec 100755 --- a/scripts/git-integration/git-auth.py +++ b/scripts/git-integration/git-auth.py @@ -4,6 +4,7 @@ import configparser import mysql.connector import os import re +import sys config = configparser.RawConfigParser() config.read(os.path.dirname(os.path.realpath(__file__)) + "/../../conf/config") @@ -14,14 +15,14 @@ aur_db_user = config.get('database', 'user') aur_db_pass = config.get('database', 'password') aur_db_socket = config.get('database', 'socket') -key_prefixes = config.get('auth', 'key-prefixes').split() +valid_keytypes = config.get('auth', 'valid-keytypes').split() username_regex = config.get('auth', 'username-regex') git_serve_cmd = config.get('auth', 'git-serve-cmd') ssh_opts = config.get('auth', 'ssh-options') -pubkey = os.environ.get("SSH_KEY") -valid_prefixes = tuple(p + " " for p in key_prefixes) -if pubkey is None or not pubkey.startswith(valid_prefixes): +keytype = sys.argv[1] +keytext = sys.argv[2] +if not keytype in valid_keytypes: exit(1) db = mysql.connector.connect(host=aur_db_host, user=aur_db_user, @@ -30,7 +31,7 @@ db = mysql.connector.connect(host=aur_db_host, user=aur_db_user, cur = db.cursor() cur.execute("SELECT Username FROM Users WHERE SSHPubKey = %s " + - "AND Suspended = 0", (pubkey,)) + "AND Suspended = 0", (keytype + " " + keytext,)) if cur.rowcount != 1: exit(1) @@ -39,4 +40,5 @@ user = cur.fetchone()[0] if not re.match(username_regex, user): exit(1) -print('command="%s %s",%s %s' % (git_serve_cmd, user, ssh_opts, pubkey)) +print('command="%s %s",%s %s' % (git_serve_cmd, user, ssh_opts, + keytype + " " + keytext)) |