| Index: third_party/twisted_8_1/twisted/runner/inetdconf.py
|
| diff --git a/third_party/twisted_8_1/twisted/runner/inetdconf.py b/third_party/twisted_8_1/twisted/runner/inetdconf.py
|
| deleted file mode 100644
|
| index 9df90dcc6d28a106a2dc0e7bdddcd25ca891bc64..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/runner/inetdconf.py
|
| +++ /dev/null
|
| @@ -1,194 +0,0 @@
|
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -#
|
| -"""
|
| -Parser for inetd.conf files
|
| -
|
| -Maintainer: U{Andrew Bennetts<mailto:spiv@twistedmatrix.com>}
|
| -
|
| -Future Plans: xinetd configuration file support?
|
| -"""
|
| -
|
| -# Various exceptions
|
| -class InvalidConfError(Exception):
|
| - """Invalid configuration file"""
|
| -
|
| -
|
| -class InvalidInetdConfError(InvalidConfError):
|
| - """Invalid inetd.conf file"""
|
| -
|
| -
|
| -class InvalidServicesConfError(InvalidConfError):
|
| - """Invalid services file"""
|
| -
|
| -
|
| -class InvalidRPCServicesConfError(InvalidConfError):
|
| - """Invalid rpc services file"""
|
| -
|
| -
|
| -class UnknownService(Exception):
|
| - """Unknown service name"""
|
| -
|
| -
|
| -class SimpleConfFile:
|
| - """Simple configuration file parser superclass.
|
| -
|
| - Filters out comments and empty lines (which includes lines that only
|
| - contain comments).
|
| -
|
| - To use this class, override parseLine or parseFields.
|
| - """
|
| -
|
| - commentChar = '#'
|
| - defaultFilename = None
|
| -
|
| - def parseFile(self, file=None):
|
| - """Parse a configuration file
|
| -
|
| - If file is None and self.defaultFilename is set, it will open
|
| - defaultFilename and use it.
|
| - """
|
| - if file is None and self.defaultFilename:
|
| - file = open(self.defaultFilename,'r')
|
| -
|
| - for line in file.readlines():
|
| - # Strip out comments
|
| - comment = line.find(self.commentChar)
|
| - if comment != -1:
|
| - line = line[:comment]
|
| -
|
| - # Strip whitespace
|
| - line = line.strip()
|
| -
|
| - # Skip empty lines (and lines which only contain comments)
|
| - if not line:
|
| - continue
|
| -
|
| - self.parseLine(line)
|
| -
|
| - def parseLine(self, line):
|
| - """Override this.
|
| -
|
| - By default, this will split the line on whitespace and call
|
| - self.parseFields (catching any errors).
|
| - """
|
| - try:
|
| - self.parseFields(*line.split())
|
| - except ValueError:
|
| - raise InvalidInetdConfError, 'Invalid line: ' + repr(line)
|
| -
|
| - def parseFields(self, *fields):
|
| - """Override this."""
|
| -
|
| -
|
| -class InetdService:
|
| - """A simple description of an inetd service."""
|
| - name = None
|
| - port = None
|
| - socketType = None
|
| - protocol = None
|
| - wait = None
|
| - user = None
|
| - group = None
|
| - program = None
|
| - programArgs = None
|
| -
|
| - def __init__(self, name, port, socketType, protocol, wait, user, group,
|
| - program, programArgs):
|
| - self.name = name
|
| - self.port = port
|
| - self.socketType = socketType
|
| - self.protocol = protocol
|
| - self.wait = wait
|
| - self.user = user
|
| - self.group = group
|
| - self.program = program
|
| - self.programArgs = programArgs
|
| -
|
| -
|
| -class InetdConf(SimpleConfFile):
|
| - """Configuration parser for a traditional UNIX inetd(8)"""
|
| -
|
| - defaultFilename = '/etc/inetd.conf'
|
| -
|
| - def __init__(self, knownServices=None):
|
| - self.services = []
|
| -
|
| - if knownServices is None:
|
| - knownServices = ServicesConf()
|
| - knownServices.parseFile()
|
| - self.knownServices = knownServices
|
| -
|
| - def parseFields(self, serviceName, socketType, protocol, wait, user,
|
| - program, *programArgs):
|
| - """Parse an inetd.conf file.
|
| -
|
| - Implemented from the description in the Debian inetd.conf man page.
|
| - """
|
| - # Extract user (and optional group)
|
| - user, group = (user.split('.') + [None])[:2]
|
| -
|
| - # Find the port for a service
|
| - port = self.knownServices.services.get((serviceName, protocol), None)
|
| - if not port and not protocol.startswith('rpc/'):
|
| - # FIXME: Should this be discarded/ignored, rather than throwing
|
| - # an exception?
|
| - try:
|
| - port = int(serviceName)
|
| - serviceName = 'unknown'
|
| - except:
|
| - raise UnknownService, "Unknown service: %s (%s)" \
|
| - % (serviceName, protocol)
|
| -
|
| - self.services.append(InetdService(serviceName, port, socketType,
|
| - protocol, wait, user, group, program,
|
| - programArgs))
|
| -
|
| -
|
| -class ServicesConf(SimpleConfFile):
|
| - """/etc/services parser
|
| -
|
| - @ivar services: dict mapping service names to (port, protocol) tuples.
|
| - """
|
| -
|
| - defaultFilename = '/etc/services'
|
| -
|
| - def __init__(self):
|
| - self.services = {}
|
| -
|
| - def parseFields(self, name, portAndProtocol, *aliases):
|
| - try:
|
| - port, protocol = portAndProtocol.split('/')
|
| - port = long(port)
|
| - except:
|
| - raise InvalidServicesConfError, 'Invalid port/protocol:' + \
|
| - repr(portAndProtocol)
|
| -
|
| - self.services[(name, protocol)] = port
|
| - for alias in aliases:
|
| - self.services[(alias, protocol)] = port
|
| -
|
| -
|
| -class RPCServicesConf(SimpleConfFile):
|
| - """/etc/rpc parser
|
| -
|
| - @ivar self.services: dict mapping rpc service names to rpc ports.
|
| - """
|
| -
|
| - defaultFilename = '/etc/rpc'
|
| -
|
| - def __init__(self):
|
| - self.services = {}
|
| -
|
| - def parseFields(self, name, port, *aliases):
|
| - try:
|
| - port = long(port)
|
| - except:
|
| - raise InvalidRPCServicesConfError, 'Invalid port:' + repr(port)
|
| -
|
| - self.services[name] = port
|
| - for alias in aliases:
|
| - self.services[alias] = port
|
| -
|
| -
|
|
|