src/mercurialserver/config.py
author Paul Crowley <paul@lshift.net>
Tue, 15 Dec 2009 14:28:45 +0000
changeset 236 38cea4b518c1
parent 225 ff08fd5b1a62
child 242 03d8f07230b3
permissions -rw-r--r--
Aargh, ConfigParser smashes case, breaking security
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
70
abb9ed8972e0 Move more into hg-ssh
Paul Crowley <paul@lshift.net>
parents:
diff changeset
     1
# Copyright 2008-2009 LShift Ltd
abb9ed8972e0 Move more into hg-ssh
Paul Crowley <paul@lshift.net>
parents:
diff changeset
     2
79
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
     3
import sys
217
32b431977bf9 Fix /home/paul if it's broken when we start
Paul Crowley <paul@lshift.net>
parents: 216
diff changeset
     4
import os
79
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
     5
import os.path
217
32b431977bf9 Fix /home/paul if it's broken when we start
Paul Crowley <paul@lshift.net>
parents: 216
diff changeset
     6
import pwd
215
584df0f2e5c7 Use ConfigParser istead of mercurial.config
Paul Crowley <paul@lshift.net>
parents: 213
diff changeset
     7
import ConfigParser
79
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
     8
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
     9
globalconfig = None
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    10
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    11
def _getConf():
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    12
    global globalconfig
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    13
    if globalconfig is None:
215
584df0f2e5c7 Use ConfigParser istead of mercurial.config
Paul Crowley <paul@lshift.net>
parents: 213
diff changeset
    14
        globalconfig = ConfigParser.RawConfigParser()
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    15
        globalconfig.read(os.path.expanduser("~/.mercurial-server"))
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    16
    return globalconfig
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    17
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    18
def _getPath(name):
215
584df0f2e5c7 Use ConfigParser istead of mercurial.config
Paul Crowley <paul@lshift.net>
parents: 213
diff changeset
    19
    return os.path.expanduser(_getConf().get("paths", name))
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    20
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    21
def _getPaths(name): 
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    22
    return [os.path.expanduser(p)
215
584df0f2e5c7 Use ConfigParser istead of mercurial.config
Paul Crowley <paul@lshift.net>
parents: 213
diff changeset
    23
        for p in _getConf().get("paths", name).split(":")]
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    24
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    25
def getReposPath(): return _getPath("repos")
213
72e7ba8b41a6 Don't hardwire location of authorized_keys file
Paul Crowley <paul@lshift.net>
parents: 212
diff changeset
    26
def getAuthorizedKeysPath(): return _getPath("authorized_keys")
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    27
216
0122df83ebd0 fix configExists test
Paul Crowley <paul@lshift.net>
parents: 215
diff changeset
    28
def configExists():
0122df83ebd0 fix configExists test
Paul Crowley <paul@lshift.net>
parents: 215
diff changeset
    29
    try:
225
ff08fd5b1a62 Fix configExists properly
Paul Crowley <paul@lshift.net>
parents: 217
diff changeset
    30
        getAuthorizedKeysPath()
216
0122df83ebd0 fix configExists test
Paul Crowley <paul@lshift.net>
parents: 215
diff changeset
    31
        return True
225
ff08fd5b1a62 Fix configExists properly
Paul Crowley <paul@lshift.net>
parents: 217
diff changeset
    32
    except Exception, e:
ff08fd5b1a62 Fix configExists properly
Paul Crowley <paul@lshift.net>
parents: 217
diff changeset
    33
        print e
216
0122df83ebd0 fix configExists test
Paul Crowley <paul@lshift.net>
parents: 215
diff changeset
    34
        return False
0122df83ebd0 fix configExists test
Paul Crowley <paul@lshift.net>
parents: 215
diff changeset
    35
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    36
def getKeysPaths(): return _getPaths("keys")
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    37
def getAccessPaths(): return _getPaths("access")
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    38
215
584df0f2e5c7 Use ConfigParser istead of mercurial.config
Paul Crowley <paul@lshift.net>
parents: 213
diff changeset
    39
def getEnv(): return _getConf().items("env")
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    40
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    41
# Work out where we are, don't use config.
217
32b431977bf9 Fix /home/paul if it's broken when we start
Paul Crowley <paul@lshift.net>
parents: 216
diff changeset
    42
def initExe():
79
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    43
    global _exePath
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    44
    _exePath = os.path.dirname(os.path.abspath(sys.argv[0]))
217
32b431977bf9 Fix /home/paul if it's broken when we start
Paul Crowley <paul@lshift.net>
parents: 216
diff changeset
    45
    # Fix $HOME in case of "sudo -u hg refresh-auth"
32b431977bf9 Fix /home/paul if it's broken when we start
Paul Crowley <paul@lshift.net>
parents: 216
diff changeset
    46
    os.environ['HOME'] = pwd.getpwuid(os.geteuid()).pw_dir
79
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    47
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    48
def getExePath():
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    49
    return _exePath
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    50