| Index: third_party/twisted_8_1/twisted/protocols/postfix.py
|
| diff --git a/third_party/twisted_8_1/twisted/protocols/postfix.py b/third_party/twisted_8_1/twisted/protocols/postfix.py
|
| deleted file mode 100644
|
| index ef85e50a2a349a966baf8e57246749fac86b0246..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/protocols/postfix.py
|
| +++ /dev/null
|
| @@ -1,132 +0,0 @@
|
| -# -*- test-case-name: twisted.test.test_postfix -*-
|
| -#
|
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -#
|
| -
|
| -"""Postfix mail transport agent related protocols."""
|
| -
|
| -import sys
|
| -
|
| -# Twisted imports
|
| -from twisted.protocols import basic
|
| -from twisted.protocols import policies
|
| -from twisted.internet import protocol, defer
|
| -from twisted.python import log
|
| -import UserDict
|
| -import urllib
|
| -
|
| -# urllib's quote functions just happen to match
|
| -# the postfix semantics.
|
| -
|
| -def quote(s):
|
| - return urllib.quote(s)
|
| -
|
| -def unquote(s):
|
| - return urllib.unquote(s)
|
| -
|
| -class PostfixTCPMapServer(basic.LineReceiver, policies.TimeoutMixin):
|
| - """Postfix mail transport agent TCP map protocol implementation.
|
| -
|
| - Receive requests for data matching given key via lineReceived,
|
| - asks it's factory for the data with self.factory.get(key), and
|
| - returns the data to the requester. None means no entry found.
|
| -
|
| - You can use postfix's postmap to test the map service::
|
| -
|
| - /usr/sbin/postmap -q KEY tcp:localhost:4242
|
| -
|
| - """
|
| -
|
| - timeout = 600
|
| - delimiter = '\n'
|
| -
|
| - def connectionMade(self):
|
| - self.setTimeout(self.timeout)
|
| -
|
| - def sendCode(self, code, message=''):
|
| - "Send an SMTP-like code with a message."
|
| - self.sendLine('%3.3d %s' % (code, message or ''))
|
| -
|
| - def lineReceived(self, line):
|
| - self.resetTimeout()
|
| - try:
|
| - request, params = line.split(None, 1)
|
| - except ValueError:
|
| - request = line
|
| - params = None
|
| - try:
|
| - f = getattr(self, 'do_' + request)
|
| - except AttributeError:
|
| - self.sendCode(400, 'unknown command')
|
| - else:
|
| - try:
|
| - f(params)
|
| - except:
|
| - self.sendCode(400, 'Command %r failed: %s.' % (request, sys.exc_info()[1]))
|
| -
|
| - def do_get(self, key):
|
| - if key is None:
|
| - self.sendCode(400, 'Command %r takes 1 parameters.' % 'get')
|
| - else:
|
| - d = defer.maybeDeferred(self.factory.get, key)
|
| - d.addCallbacks(self._cbGot, self._cbNot)
|
| - d.addErrback(log.err)
|
| -
|
| - def _cbNot(self, fail):
|
| - self.sendCode(400, fail.getErrorMessage())
|
| -
|
| - def _cbGot(self, value):
|
| - if value is None:
|
| - self.sendCode(500)
|
| - else:
|
| - self.sendCode(200, quote(value))
|
| -
|
| - def do_put(self, keyAndValue):
|
| - if keyAndValue is None:
|
| - self.sendCode(400, 'Command %r takes 2 parameters.' % 'put')
|
| - else:
|
| - try:
|
| - key, value = keyAndValue.split(None, 1)
|
| - except ValueError:
|
| - self.sendCode(400, 'Command %r takes 2 parameters.' % 'put')
|
| - else:
|
| - self.sendCode(500, 'put is not implemented yet.')
|
| -
|
| -
|
| -class PostfixTCPMapDictServerFactory(protocol.ServerFactory,
|
| - UserDict.UserDict):
|
| - """An in-memory dictionary factory for PostfixTCPMapServer."""
|
| -
|
| - protocol = PostfixTCPMapServer
|
| -
|
| -class PostfixTCPMapDeferringDictServerFactory(protocol.ServerFactory):
|
| - """An in-memory dictionary factory for PostfixTCPMapServer."""
|
| -
|
| - protocol = PostfixTCPMapServer
|
| -
|
| - def __init__(self, data=None):
|
| - self.data = {}
|
| - if data is not None:
|
| - self.data.update(data)
|
| -
|
| - def get(self, key):
|
| - return defer.succeed(self.data.get(key))
|
| -
|
| -if __name__ == '__main__':
|
| - """Test app for PostfixTCPMapServer. Call with parameters
|
| - KEY1=VAL1 KEY2=VAL2 ..."""
|
| - from twisted.internet import reactor
|
| - log.startLogging(sys.stdout)
|
| - d = {}
|
| - for arg in sys.argv[1:]:
|
| - try:
|
| - k,v = arg.split('=', 1)
|
| - except ValueError:
|
| - k = arg
|
| - v = ''
|
| - d[k]=v
|
| - f=PostfixTCPMapDictServerFactory(d)
|
| - port = reactor.listenTCP(4242, f, interface='127.0.0.1')
|
| - reactor.run()
|
|
|