src/mercurialserver/config.py
author Paul Crowley <paul@lshift.net>
Sat, 18 Dec 2010 12:51:42 +0000
branchdebian
changeset 284 85607df3fd19
parent 242 03d8f07230b3
child 303 3f9f247b72bd
permissions -rw-r--r--
Merge in default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
242
03d8f07230b3 Tidy up file prologues; move credits to CREDITS
Paul Crowley <paul@lshift.net>
parents: 225
diff changeset
     1
"""
03d8f07230b3 Tidy up file prologues; move credits to CREDITS
Paul Crowley <paul@lshift.net>
parents: 225
diff changeset
     2
Fix $HOME and read ~/.mercurial-server
03d8f07230b3 Tidy up file prologues; move credits to CREDITS
Paul Crowley <paul@lshift.net>
parents: 225
diff changeset
     3
"""
70
abb9ed8972e0 Move more into hg-ssh
Paul Crowley <paul@lshift.net>
parents:
diff changeset
     4
79
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
     5
import sys
217
32b431977bf9 Fix /home/paul if it's broken when we start
Paul Crowley <paul@lshift.net>
parents: 216
diff changeset
     6
import os
79
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
     7
import os.path
217
32b431977bf9 Fix /home/paul if it's broken when we start
Paul Crowley <paul@lshift.net>
parents: 216
diff changeset
     8
import pwd
215
584df0f2e5c7 Use ConfigParser istead of mercurial.config
Paul Crowley <paul@lshift.net>
parents: 213
diff changeset
     9
import ConfigParser
79
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    10
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    11
globalconfig = None
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    12
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    13
def _getConf():
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    14
    global globalconfig
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    15
    if globalconfig is None:
215
584df0f2e5c7 Use ConfigParser istead of mercurial.config
Paul Crowley <paul@lshift.net>
parents: 213
diff changeset
    16
        globalconfig = ConfigParser.RawConfigParser()
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    17
        globalconfig.read(os.path.expanduser("~/.mercurial-server"))
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    18
    return globalconfig
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    19
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    20
def _getPath(name):
215
584df0f2e5c7 Use ConfigParser istead of mercurial.config
Paul Crowley <paul@lshift.net>
parents: 213
diff changeset
    21
    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
    22
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    23
def _getPaths(name): 
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    24
    return [os.path.expanduser(p)
215
584df0f2e5c7 Use ConfigParser istead of mercurial.config
Paul Crowley <paul@lshift.net>
parents: 213
diff changeset
    25
        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
    26
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    27
def getReposPath(): return _getPath("repos")
213
72e7ba8b41a6 Don't hardwire location of authorized_keys file
Paul Crowley <paul@lshift.net>
parents: 212
diff changeset
    28
def getAuthorizedKeysPath(): return _getPath("authorized_keys")
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    29
216
0122df83ebd0 fix configExists test
Paul Crowley <paul@lshift.net>
parents: 215
diff changeset
    30
def configExists():
0122df83ebd0 fix configExists test
Paul Crowley <paul@lshift.net>
parents: 215
diff changeset
    31
    try:
225
ff08fd5b1a62 Fix configExists properly
Paul Crowley <paul@lshift.net>
parents: 217
diff changeset
    32
        getAuthorizedKeysPath()
216
0122df83ebd0 fix configExists test
Paul Crowley <paul@lshift.net>
parents: 215
diff changeset
    33
        return True
225
ff08fd5b1a62 Fix configExists properly
Paul Crowley <paul@lshift.net>
parents: 217
diff changeset
    34
    except Exception, e:
ff08fd5b1a62 Fix configExists properly
Paul Crowley <paul@lshift.net>
parents: 217
diff changeset
    35
        print e
216
0122df83ebd0 fix configExists test
Paul Crowley <paul@lshift.net>
parents: 215
diff changeset
    36
        return False
0122df83ebd0 fix configExists test
Paul Crowley <paul@lshift.net>
parents: 215
diff changeset
    37
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    38
def getKeysPaths(): return _getPaths("keys")
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    39
def getAccessPaths(): return _getPaths("access")
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    40
215
584df0f2e5c7 Use ConfigParser istead of mercurial.config
Paul Crowley <paul@lshift.net>
parents: 213
diff changeset
    41
def getEnv(): return _getConf().items("env")
165
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    42
3606d60b07e5 Use .mercurial-sever file instead of hardcoding
Paul Crowley <paul@lshift.net>
parents: 79
diff changeset
    43
# 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
    44
def initExe():
79
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    45
    global _exePath
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    46
    _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
    47
    # 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
    48
    os.environ['HOME'] = pwd.getpwuid(os.geteuid()).pw_dir
79
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    49
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    50
def getExePath():
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    51
    return _exePath
3a58a95fae2f abolish hg-ssh-wrapper
Paul Crowley <paul@lshift.net>
parents: 70
diff changeset
    52