Index: third_party/twisted_8_1/twisted/runner/inetdtap.py |
diff --git a/third_party/twisted_8_1/twisted/runner/inetdtap.py b/third_party/twisted_8_1/twisted/runner/inetdtap.py |
deleted file mode 100644 |
index fc0f676ab8e1a117c9bb32757c962ee0b5e77bae..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/runner/inetdtap.py |
+++ /dev/null |
@@ -1,160 +0,0 @@ |
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
-# |
- |
-""" |
-Twisted inetd TAP support |
- |
-Maintainer: U{Andrew Bennetts<mailto:spiv@twistedmatrix.com>} |
- |
-Future Plans: more configurability. |
-""" |
- |
-import os, pwd, grp, socket |
- |
-from twisted.runner import inetd, inetdconf |
-from twisted.python import log, usage |
-from twisted.internet.protocol import ServerFactory |
-from twisted.application import internet, service as appservice |
- |
-try: |
- import portmap |
- rpcOk = 1 |
-except ImportError: |
- rpcOk = 0 |
- |
- |
-# Protocol map |
-protocolDict = {'tcp': socket.IPPROTO_TCP, 'udp': socket.IPPROTO_UDP} |
- |
- |
-class Options(usage.Options): |
- |
- optParameters = [ |
- ['rpc', 'r', '/etc/rpc', 'RPC procedure table file'], |
- ['file', 'f', '/etc/inetd.conf', 'Service configuration file'] |
- ] |
- |
- optFlags = [['nointernal', 'i', "Don't run internal services"]] |
- zsh_actions = {"file" : "_files -g '*.conf'"} |
- |
-class RPCServer(internet.TCPServer): |
- |
- def __init__(self, rpcVersions, rpcConf, proto, service): |
- internet.TCPServer.__init__(0, ServerFactory()) |
- self.rpcConf = rpcConf |
- self.proto = proto |
- self.service = service |
- |
- def startService(self): |
- internet.TCPServer.startService(self) |
- import portmap |
- portNo = self._port.getHost()[2] |
- service = self.service |
- for version in rpcVersions: |
- portmap.set(self.rpcConf.services[name], version, self.proto, |
- portNo) |
- inetd.forkPassingFD(service.program, service.programArgs, |
- os.environ, service.user, service.group, p) |
- |
-def makeService(config): |
- s = appservice.MultiService() |
- conf = inetdconf.InetdConf() |
- conf.parseFile(open(config['file'])) |
- |
- rpcConf = inetdconf.RPCServicesConf() |
- try: |
- rpcConf.parseFile(open(config['rpc'])) |
- except: |
- # We'll survive even if we can't read /etc/rpc |
- log.deferr() |
- |
- for service in conf.services: |
- rpc = service.protocol.startswith('rpc/') |
- protocol = service.protocol |
- |
- if rpc and not rpcOk: |
- log.msg('Skipping rpc service due to lack of rpc support') |
- continue |
- |
- if rpc: |
- # RPC has extra options, so extract that |
- protocol = protocol[4:] # trim 'rpc/' |
- if not protocolDict.has_key(protocol): |
- log.msg('Bad protocol: ' + protocol) |
- continue |
- |
- try: |
- name, rpcVersions = service.name.split('/') |
- except ValueError: |
- log.msg('Bad RPC service/version: ' + service.name) |
- continue |
- |
- if not rpcConf.services.has_key(name): |
- log.msg('Unknown RPC service: ' + repr(service.name)) |
- continue |
- |
- try: |
- if '-' in rpcVersions: |
- start, end = map(int, rpcVersions.split('-')) |
- rpcVersions = range(start, end+1) |
- else: |
- rpcVersions = [int(rpcVersions)] |
- except ValueError: |
- log.msg('Bad RPC versions: ' + str(rpcVersions)) |
- continue |
- |
- if (protocol, service.socketType) not in [('tcp', 'stream'), |
- ('udp', 'dgram')]: |
- log.msg('Skipping unsupported type/protocol: %s/%s' |
- % (service.socketType, service.protocol)) |
- continue |
- |
- # Convert the username into a uid (if necessary) |
- try: |
- service.user = int(service.user) |
- except ValueError: |
- try: |
- service.user = pwd.getpwnam(service.user)[2] |
- except KeyError: |
- log.msg('Unknown user: ' + service.user) |
- continue |
- |
- # Convert the group name into a gid (if necessary) |
- if service.group is None: |
- # If no group was specified, use the user's primary group |
- service.group = pwd.getpwuid(service.user)[3] |
- else: |
- try: |
- service.group = int(service.group) |
- except ValueError: |
- try: |
- service.group = grp.getgrnam(service.group)[2] |
- except KeyError: |
- log.msg('Unknown group: ' + service.group) |
- continue |
- |
- if service.program == 'internal': |
- if config['nointernal']: |
- continue |
- |
- # Internal services can use a standard ServerFactory |
- if not inetd.internalProtocols.has_key(service.name): |
- log.msg('Unknown internal service: ' + service.name) |
- continue |
- factory = ServerFactory() |
- factory.protocol = inetd.internalProtocols[service.name] |
- elif rpc: |
- i = RPCServer(rpcVersions, rpcConf, proto, service) |
- i.setServiceParent(s) |
- continue |
- else: |
- # Non-internal non-rpc services use InetdFactory |
- factory = inetd.InetdFactory(service) |
- |
- if protocol == 'tcp': |
- internet.TCPServer(service.port, factory).setServiceParent(s) |
- elif protocol == 'udp': |
- raise RuntimeError("not supporting UDP") |
- return s |