All pastes #827603 Raw Edit

Stuff

public text v1 · immutable
#827603 ·published 2007-12-21 21:44 UTC
rendered paste body
#!/usr/bin/python -tt

import sys, os

commands = {"sftp-server": "/usr/bin/run-sftp",
    "git-receive-pack": "/usr/bin/git-receive-pack",
    "git-upload-pack": "/usr/bin/git-upload-pack",
    "bzr": "/usr/bin/run-bzr",
    "hg": "/usr/bin/run-hg",
    "svnserve": "/usr/bin/run-svnserve",
    "scp": "/usr/bin/scp",
}

if __name__ == '__main__':
    orig_cmd = os.environ.get('SSH_ORIGINAL_COMMAND')
    if not orig_cmd:
        print "Need a command"
        sys.exit(1)

    allargs = orig_cmd.split()
    try:
        basecmd = os.path.basename(allargs[0])
        cmd = commands[basecmd]
    except:
        sys.stderr.write("Invalid command %s\n" % orig_cmd)
        sys.exit(2)

    if basecmd in ('git-receive-pack', 'git-upload-pack'):
        # git repositories need to be parsed specially
        thearg = ' '.join(allargs[1:])
        if thearg[0] == "'" and thearg[-1] == "'":
            thearg = thearg.replace("'","")
        thearg = thearg.replace("\\'", "")
        if thearg[:len('/git/')] != '/git/' or not os.path.isdir(thearg):
            print "Invalid repository %s" % thearg
            sys.exit(3)
        allargs = [thearg]
    elif basecmd in ('scp'):
        thearg = ' '.join(allargs[1:])
        if thearg.find('/') != -1:
            print "scp yourfile-1.2.tar.gz scm.fedorahosted.org:$YOURPROJECT # No trailing /"
            sys.exit(4)
        else:
            newargs = []
            newargs.append(allargs[0])
            newargs.append(allargs[1])
            newargs.append("/tmp/%s/" % allargs[2])
            os.execv(cmd, [cmd] + newargs[1:])
            sys.exit(1)
    else:
        allargs = allargs[1:]
    os.execv(cmd, [cmd] + allargs)
    sys.exit(1)