def set_default_proxy(proxy_type=None, addr=None, port=None, rdns=True, username=None, password=None): """ set_default_proxy(proxy_type, addr[, port[, rdns[, username, password]]]) Sets a default proxy which all further socksocket objects will use, unless explicitly changed. All parameters are as for socket.set_proxy(). """ proxy_type = utils.bytes2str_only(proxy_type) addr = utils.to_str(addr) if isinstance(port, bytes): port = int(utils.to_str(port)) else: port = int(port) username = utils.to_bytes(username) password = utils.to_bytes(password) if isinstance(proxy_type, str): proxy_type = proxy_type.lower() if "http" in proxy_type: proxy_type = PROXY_TYPE_HTTP elif "socks5" in proxy_type: proxy_type = PROXY_TYPE_SOCKS5 elif "socks4" in proxy_type: proxy_type = PROXY_TYPE_SOCKS4 else: raise ProxyError("unknown proxy type:%s" % proxy_type) socksocket.default_proxy = (proxy_type, addr, port, rdns, username if username else None, password if password else None)
def set_proxy(self, proxy_type=None, addr=None, port=None, rdns=True, username=None, password=None): """set_proxy(proxy_type, addr[, port[, rdns[, username[, password]]]]) Sets the proxy to be used. proxy_type - The type of the proxy to be used. Three types are supported: PROXY_TYPE_SOCKS4 (including socks4a), PROXY_TYPE_SOCKS5 and PROXY_TYPE_HTTP addr - The address of the server (IP or DNS). port - The port of the server. Defaults to 1080 for SOCKS servers and 8080 for HTTP proxy servers. rdns - Should DNS queries be performed on the remote side (rather than the local side). The default is True. Note: This has no effect with SOCKS4 servers. username - Username to authenticate with to the server. The default is no authentication. password - Password to authenticate with to the server. Only relevant when username is also provided. """ proxy_type = utils.bytes2str_only(proxy_type) addr = utils.to_str(addr) if isinstance(port, bytes): port = int(utils.to_str(port)) else: port = int(port) username = utils.to_bytes(username) password = utils.to_bytes(password) if isinstance(proxy_type, str): proxy_type = proxy_type.lower() if "http" in proxy_type: proxy_type = PROXY_TYPE_HTTP self.resolve_dest = False elif "socks5" in proxy_type: if proxy_type == "socks5h": self.resolve_dest = False rdns = True proxy_type = PROXY_TYPE_SOCKS5 elif "socks4" in proxy_type: proxy_type = PROXY_TYPE_SOCKS4 else: raise ProxyError("unknown proxy type:%s" % proxy_type) self.proxy = (proxy_type, addr, port, rdns, username if username else None, password if password else None)
def log(self, level, console_color, html_color, fmt, *args, **kwargs): args = utils.bytes2str_only(args) now = datetime.now() time_str = now.strftime("%Y-%m-%d %H:%M:%S.%f")[:23] string = '%s - [%s] %s\n' % (time_str, level, fmt % args) self.buffer_lock.acquire() try: try: console_string = '%s [%s][%s] %s\n' % (time_str, self.name, level, fmt % args) self.set_console_color(console_color) sys.stderr.write(console_string) self.set_console_color(self.reset_color) except: pass if self.log_fd: self.log_fd.write(string) try: self.log_fd.flush() except: pass self.file_size += len(string) if self.file_size > self.file_max_size: self.log_fd.close() self.log_fd = None self.roll_log() self.log_fd = open(self.log_filename, "w") self.file_size = 0 if self.buffer_size: self.last_no += 1 self.buffer[self.last_no] = string buffer_len = len(self.buffer) if buffer_len > self.buffer_size: del self.buffer[self.last_no - self.buffer_size] except Exception as e: string = '%s - [%s]LOG_EXCEPT: %s, Except:%s<br> %s' % (time.ctime( )[4:-5], level, fmt % args, e, traceback.format_exc()) self.last_no += 1 self.buffer[self.last_no] = string buffer_len = len(self.buffer) if buffer_len > self.buffer_size: del self.buffer[self.last_no - self.buffer_size] finally: self.buffer_lock.release()