def ntransfercmd(self, cmd, rest=None): size = None if self.passiveserver: host, port = self.makepasv() conn = socket.create_connection((host, port), self.timeout, self.source_address) try: if rest is not None: self.sendcmd("REST %s" % rest) resp = self.sendcmd(cmd) if resp[0] == '2': resp = self.getresp() if resp[0] != '1': raise ftplib.error_reply(resp) except Exception: conn.close() raise else: sock = self.makeport() try: if rest is not None: self.sendcmd("REST %s" % rest) resp = self.sendcmd(cmd) if resp[0] == '2': resp = self.getresp() if resp[0] != '1': raise ftplib.error_reply(resp) conn, sockaddr = sock.accept() if self.timeout is not socket._GLOBAL_DEFAULT_TIMEOUT: conn.settimeout(self.timeout) finally: sock.close() if resp[:3] == '150': size = ftplib.parse150(resp) return conn, size
def ntransfercmd(self, cmd, rest=None): size = None if self.passiveserver: host, port = self.makepasv() conn = socket.create_connection((host, port), self.timeout, self.source_address) try: if rest is not None: self.sendcmd("REST %s" % rest) resp = self.sendcmd(cmd) if resp[0] == '2': resp = self.getresp() if resp[0] != '1': raise ftplib.error_reply(resp) except: conn.close() raise else: sock = self.makeport() try: if rest is not None: self.sendcmd("REST %s" % rest) resp = self.sendcmd(cmd) if resp[0] == '2': resp = self.getresp() if resp[0] != '1': raise ftplib.error_reply(resp) conn, sockaddr = sock.accept() if self.timeout is not socket._GLOBAL_DEFAULT_TIMEOUT: conn.settimeout(self.timeout) finally: sock.close() if resp[:3] == '150': size = ftplib.parse150(resp) return conn, size
def ntransfercmd(self, cmd, rest=None): """ Internal: Initiate a transfer over the data connection. If the transfer is active, send a port command and the transfer command, and accept the connection. If the server is passive, send a pasv command, connect to it, and start the transfer command. Either way, return the socket for the connection and the expected size of the transfer. The expected size may be None if it could not be determined. Optional `rest' argument can be a string that is sent as the argument to a RESTART command. This is essentially a server marker used to tell the server to skip over any data up to the given marker. """ size = None if self.passiveserver: host, port = self.makepasv() af, socktype, proto, canon, sa = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM)[0] conn = socket.socket(af, socktype, proto) if self.data_socket_timeout: conn.settimeout(self.data_socket_timeout) conn.connect(sa) if rest is not None: self.sendcmd("REST %s" % rest) resp = self.sendcmd(cmd) if resp[0] != '1': raise error_reply, resp else: sock = self.makeport() if rest is not None: self.sendcmd("REST %s" % rest) resp = self.sendcmd(cmd) if resp[0] != '1': raise error_reply, resp conn, sockaddr = sock.accept() if resp[:3] == '150': # this is conditional in case we received a 125 size = ftplib.parse150(resp) return conn, size
def transfer(self, method, *args, **kwargs): """Returns a urllib3 connection for the given URL. This should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. :param url: The URL to connect to. :param proxies: (optional) A Requests-style dictionary of proxies used on this request. """ connCallback = kwargs.get("connCallback") passive = kwargs.get("passive", DEFAULT_PASSIVE) restartMarker = kwargs.get("restartMarker") connMetadata = {} if not passive: sock, metadata = self.makeport(self.sock.family) connMetadata.update(metadata) else: conn, metadata = self.makepasv(self.sock.family) connMetadata.update(metadata) if restartMarker is not None: self._request("REST", restartMarker) resp = self._request(method, *args, **kwargs) # Some servers apparently send a 200 reply to # a LIST or STOR command, before the 150 reply # (and way before the 226 reply). This seems to # be in violation of the protocol (which only allows # 1xx or error messages for LIST), so we just discard # this response. # if resp.raw[0] == '2': # resp = self._getresponse() # if resp.raw[0] != '1': # raise ftplib.error_reply, resp if not passive: conn, connMetadata["sockaddr"] = sock.accept() if resp.status_code == 150: # this is conditional in case we received a 125 connMetadata["size"] = ftplib.parse150(str(resp.raw)) if connCallback: newConn = connCallback(conn) if newConn: conn = newConn return conn, connMetadata
def ntransfercmd(self, cmd, rest=None): assert self.passiveserver host, port = self.makepasv() conn = gevent.socket.create_connection((host, port), self.timeout) try: if rest is not None: self.sendcmd("REST %s" % rest) resp = self.sendcmd(cmd) if resp[0] == '2': resp = self.getresp() if resp[0] != '1': raise ftplib.error_reply(resp) except: conn.close() raise if resp[:3] == '150': size = ftplib.parse150(resp) return conn, size
def update_event(self, inp=-1): self.set_output_val(0, ftplib.parse150(self.input(0)))
if resp[0] == '2': resp = self.getresp() if resp[0] != '1': raise ftplib.error_reply, resp else: sock = self.makeport() if rest is not None: self.sendcmd("REST %s" % rest) resp = self.sendcmd(cmd) if resp[0] == '2': resp = self.getresp() if resp[0] != '1': raise ftplib.error_reply, resp conn, sockaddr = sock.accept() if resp[:3] == '150': size = ftplib.parse150(resp) return conn, size class TimeoutHTTPHandler(_H): """A timeout enabled HTTPHandler for urllib2.""" def __init__(self, timeout=None, debuglevel=0): """Initialize the object. Args: timeout: the socket connect timeout value. debuglevel: the debuglevel level. """ _H.__init__(self, debuglevel) TimeoutHTTPConnection._timeout = timeout