mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
git: Use AUR_USER env var instead of ForceCommand argument
Also add an utility function for formatting the ForceCommand, using shlex.quote to quote the value. Signed-off-by: Johannes Löthberg <johannes@kyriasis.com> Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
parent
ae2907a57e
commit
e9485531be
2 changed files with 24 additions and 3 deletions
|
@ -2,10 +2,27 @@
|
||||||
|
|
||||||
import configparser
|
import configparser
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
|
import shlex
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def format_command(env_vars, command, ssh_opts, ssh_key):
|
||||||
|
environment = ''
|
||||||
|
for key, var in env_vars.items():
|
||||||
|
environment += '{}={} '.format(key, shlex.quote(var))
|
||||||
|
|
||||||
|
command = shlex.quote(command)
|
||||||
|
command = '{}{}'.format(environment, command)
|
||||||
|
|
||||||
|
# The command is being substituted into an authorized_keys line below,
|
||||||
|
# so we need to escape the double quotes.
|
||||||
|
command = command.replace('"', '\\"')
|
||||||
|
msg = 'command="{}",{} {}'.format(command, ssh_opts, ssh_key)
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
config = configparser.RawConfigParser()
|
||||||
config.read(os.path.dirname(os.path.realpath(__file__)) + "/../conf/config")
|
config.read(os.path.dirname(os.path.realpath(__file__)) + "/../conf/config")
|
||||||
|
|
||||||
|
@ -40,5 +57,9 @@ user = cur.fetchone()[0]
|
||||||
if not re.match(username_regex, user):
|
if not re.match(username_regex, user):
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
print('command="%s %s",%s %s' % (git_serve_cmd, user, ssh_opts,
|
env_vars = {
|
||||||
keytype + " " + keytext))
|
'AUR_USER': user,
|
||||||
|
}
|
||||||
|
key = keytype + ' ' + keytext
|
||||||
|
|
||||||
|
print(format_command(env_vars, git_serve_cmd, ssh_opts, key))
|
||||||
|
|
|
@ -106,7 +106,7 @@ def die(msg):
|
||||||
def die_with_help(msg):
|
def die_with_help(msg):
|
||||||
die(msg + "\nTry `{:s} help` for a list of commands.".format(ssh_cmdline))
|
die(msg + "\nTry `{:s} help` for a list of commands.".format(ssh_cmdline))
|
||||||
|
|
||||||
user = sys.argv[1]
|
user = os.environ.get("AUR_USER")
|
||||||
cmd = os.environ.get("SSH_ORIGINAL_COMMAND")
|
cmd = os.environ.get("SSH_ORIGINAL_COMMAND")
|
||||||
if not cmd:
|
if not cmd:
|
||||||
die_with_help("Interactive shell is disabled.")
|
die_with_help("Interactive shell is disabled.")
|
||||||
|
|
Loading…
Add table
Reference in a new issue