Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(858)

Unified Diff: third_party/twisted_8_1/twisted/protocols/ident.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/protocols/ident.py
diff --git a/third_party/twisted_8_1/twisted/protocols/ident.py b/third_party/twisted_8_1/twisted/protocols/ident.py
deleted file mode 100644
index 4c867861cd3427f310a808439f464413fbadde80..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/protocols/ident.py
+++ /dev/null
@@ -1,227 +0,0 @@
-# -*- test-case-name: twisted.test.test_ident -*-
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-
-"""
-Ident protocol implementation.
-
-@author: U{Jp Calderone<mailto:exarkun@twistedmatrix.com>}
-"""
-
-from __future__ import generators
-
-import struct
-
-from twisted.internet import defer
-from twisted.protocols import basic
-from twisted.python import log, failure
-
-_MIN_PORT = 1
-_MAX_PORT = 2 ** 16 - 1
-
-class IdentError(Exception):
- """
- Can't determine connection owner; reason unknown.
- """
-
- identDescription = 'UNKNOWN-ERROR'
-
- def __str__(self):
- return self.identDescription
-
-
-class NoUser(IdentError):
- """
- The connection specified by the port pair is not currently in use or
- currently not owned by an identifiable entity.
- """
- identDescription = 'NO-USER'
-
-
-class InvalidPort(IdentError):
- """
- Either the local or foreign port was improperly specified. This should
- be returned if either or both of the port ids were out of range (TCP
- port numbers are from 1-65535), negative integers, reals or in any
- fashion not recognized as a non-negative integer.
- """
- identDescription = 'INVALID-PORT'
-
-
-class HiddenUser(IdentError):
- """
- The server was able to identify the user of this port, but the
- information was not returned at the request of the user.
- """
- identDescription = 'HIDDEN-USER'
-
-
-class IdentServer(basic.LineOnlyReceiver):
- """
- The Identification Protocol (a.k.a., "ident", a.k.a., "the Ident
- Protocol") provides a means to determine the identity of a user of a
- particular TCP connection. Given a TCP port number pair, it returns a
- character string which identifies the owner of that connection on the
- server's system.
-
- Server authors should subclass this class and override the lookup method.
- The default implementation returns an UNKNOWN-ERROR response for every
- query.
- """
-
- def lineReceived(self, line):
- parts = line.split(',')
- if len(parts) != 2:
- self.invalidQuery()
- else:
- try:
- portOnServer, portOnClient = map(int, parts)
- except ValueError:
- self.invalidQuery()
- else:
- if _MIN_PORT <= portOnServer <= _MAX_PORT and _MIN_PORT <= portOnClient <= _MAX_PORT:
- self.validQuery(portOnServer, portOnClient)
- else:
- self._ebLookup(failure.Failure(InvalidPort()), portOnServer, portOnClient)
-
- def invalidQuery(self):
- self.transport.loseConnection()
-
- def validQuery(self, portOnServer, portOnClient):
- serverAddr = self.transport.getHost()[1], portOnServer
- clientAddr = self.transport.getPeer()[1], portOnClient
- defer.maybeDeferred(self.lookup, serverAddr, clientAddr
- ).addCallback(self._cbLookup, portOnServer, portOnClient
- ).addErrback(self._ebLookup, portOnServer, portOnClient
- )
-
- def _cbLookup(self, (sysName, userId), sport, cport):
- self.sendLine('%d, %d : USERID : %s : %s' % (sport, cport, sysName, userId))
-
- def _ebLookup(self, failure, sport, cport):
- if failure.check(IdentError):
- self.sendLine('%d, %d : ERROR : %s' % (sport, cport, failure.value))
- else:
- log.err(failure)
- self.sendLine('%d, %d : ERROR : %s' % (sport, cport, IdentError(failure.value)))
-
- def lookup(self, serverAddress, clientAddress):
- """Lookup user information about the specified address pair.
-
- Return value should be a two-tuple of system name and username.
- Acceptable values for the system name may be found online at::
-
- U{http://www.iana.org/assignments/operating-system-names}
-
- This method may also raise any IdentError subclass (or IdentError
- itself) to indicate user information will not be provided for the
- given query.
-
- A Deferred may also be returned.
-
- @param serverAddress: A two-tuple representing the server endpoint
- of the address being queried. The first element is a string holding
- a dotted-quad IP address. The second element is an integer
- representing the port.
-
- @param clientAddress: Like L{serverAddress}, but represents the
- client endpoint of the address being queried.
- """
- raise IdentError()
-
-class ProcServerMixin:
- """Implements lookup() to grab entries for responses from /proc/net/tcp
- """
-
- SYSTEM_NAME = 'LINUX'
-
- try:
- from pwd import getpwuid
- def getUsername(self, uid, getpwuid=getpwuid):
- return getpwuid(uid)[0]
- del getpwuid
- except ImportError:
- def getUsername(self, uid):
- raise IdentError()
-
- def entries(self):
- f = file('/proc/net/tcp')
- f.readline()
- for L in f:
- yield L.strip()
-
- def dottedQuadFromHexString(self, hexstr):
- return '.'.join(map(str, struct.unpack('4B', struct.pack('=L', int(hexstr, 16)))))
-
- def unpackAddress(self, packed):
- addr, port = packed.split(':')
- addr = self.dottedQuadFromHexString(addr)
- port = int(port, 16)
- return addr, port
-
- def parseLine(self, line):
- parts = line.strip().split()
- localAddr, localPort = self.unpackAddress(parts[1])
- remoteAddr, remotePort = self.unpackAddress(parts[2])
- uid = int(parts[7])
- return (localAddr, localPort), (remoteAddr, remotePort), uid
-
- def lookup(self, serverAddress, clientAddress):
- for ent in self.entries():
- localAddr, remoteAddr, uid = self.parseLine(ent)
- if remoteAddr == clientAddress and localAddr[1] == serverAddress[1]:
- return (self.SYSTEM_NAME, self.getUsername(uid))
-
- raise NoUser()
-
-
-class IdentClient(basic.LineOnlyReceiver):
-
- errorTypes = (IdentError, NoUser, InvalidPort, HiddenUser)
-
- def __init__(self):
- self.queries = []
-
- def lookup(self, portOnServer, portOnClient):
- """Lookup user information about the specified address pair.
- """
- self.queries.append((defer.Deferred(), portOnServer, portOnClient))
- if len(self.queries) > 1:
- return self.queries[-1][0]
-
- self.sendLine('%d, %d' % (portOnServer, portOnClient))
- return self.queries[-1][0]
-
- def lineReceived(self, line):
- if not self.queries:
- log.msg("Unexpected server response: %r" % (line,))
- else:
- d, _, _ = self.queries.pop(0)
- self.parseResponse(d, line)
- if self.queries:
- self.sendLine('%d, %d' % (self.queries[0][1], self.queries[0][2]))
-
- def connectionLost(self, reason):
- for q in self.queries:
- q[0].errback(IdentError(reason))
- self.queries = []
-
- def parseResponse(self, deferred, line):
- parts = line.split(':', 2)
- if len(parts) != 3:
- deferred.errback(IdentError(line))
- else:
- ports, type, addInfo = map(str.strip, parts)
- if type == 'ERROR':
- for et in self.errorTypes:
- if et.identDescription == addInfo:
- deferred.errback(et(line))
- return
- deferred.errback(IdentError(line))
- else:
- deferred.callback((type, addInfo))
-
-__all__ = ['IdentError', 'NoUser', 'InvalidPort', 'HiddenUser',
- 'IdentServer', 'IdentClient',
- 'ProcServerMixin']
« no previous file with comments | « third_party/twisted_8_1/twisted/protocols/http.py ('k') | third_party/twisted_8_1/twisted/protocols/imap4.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698