Mercurial > moin > 1.9
diff MoinMoin/server/__init__.py @ 1584:1a1d6e0fe14f
make moin.cgi work similar to the standalone/Twisted start scripts
author | Thomas Waldmann <tw AT waldmann-edv DOT de> |
---|---|
date | Mon, 25 Sep 2006 16:15:57 +0200 |
parents | f37b49b6313d |
children | a843bc5793fb |
line wrap: on
line diff
--- a/MoinMoin/server/__init__.py Mon Sep 25 11:03:14 2006 +0200 +++ b/MoinMoin/server/__init__.py Mon Sep 25 16:15:57 2006 +0200 @@ -47,6 +47,10 @@ """ # some defaults that should be common for all servers: url_prefix_static = config.url_prefix_static + docs = None # document root (if supported) + user = None # user we shall use for running (if supported) + group = None # group ... + port = None # tcp port number (if supported) def __init__(self): """ Validate and post process configuration values @@ -55,36 +59,36 @@ """ # Check that docs path is accessible - self.docs = os.path.normpath(os.path.abspath(self.docs)) - if not os.access(self.docs, os.F_OK | os.R_OK | os.X_OK): - raise RuntimeError("Can't access docs directory '%s'. Check docs " - "setting and permissions." % self.docs) + if self.docs: + self.docs = os.path.normpath(os.path.abspath(self.docs)) + if not os.access(self.docs, os.F_OK | os.R_OK | os.X_OK): + raise RuntimeError("Can't access docs directory '%s'. Check docs " + "setting and permissions." % self.docs) # Don't check uid and gid on windows, those calls are not available. if os.name == 'nt': self.uid = self.gid = 0 return + self.uid = os.getuid() + self.gid = os.getgid() + # If serving privileged port, we must run as root to bind the port. # we will give up root privileges later - if self.port < 1024 and os.getuid() != 0: + if self.port and self.port < 1024 and self.uid != 0: raise RuntimeError('Must run as root to serve port number under 1024. ' 'Run as root or change port setting.') - # If we run as root to serve privileged port, we change user and group - # to a safe setting. Get the uid and gid now, switch later. - self.uid = os.getuid() - self.gid = os.getgid() - if self.uid == 0: + if self.user and self.group and self.uid == 0: + # If we run as root to serve privileged port, we change user and group + # to a safe setting. Get the uid and gid now, switch later. import pwd, grp try: self.uid = pwd.getpwnam(self.user)[2] except KeyError: - raise RuntimeError("Unknown user: '%s', check user setting" % - self.user) + raise RuntimeError("Unknown user: '%s', check user setting" % self.user) try: self.gid = grp.getgrnam(self.group)[2] except KeyError: - raise RuntimeError("Unknown group: '%s', check group setting" % - self.group) + raise RuntimeError("Unknown group: '%s', check group setting" % self.group)