aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/protocols/postfix.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/protocols/postfix.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/protocols/postfix.py112
1 files changed, 0 insertions, 112 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/protocols/postfix.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/protocols/postfix.py
deleted file mode 100755
index 7a2079d7..00000000
--- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/protocols/postfix.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- test-case-name: twisted.test.test_postfix -*-
-# Copyright (c) Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Postfix mail transport agent related protocols.
-"""
-
-import sys
-import UserDict
-import urllib
-
-from twisted.protocols import basic
-from twisted.protocols import policies
-from twisted.internet import protocol, defer
-from twisted.python import log
-
-# 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))