def download_nodes_list(): url = 'https://nodes.tox.chat/json' s = settings.Settings.get_instance() if not s['download_nodes_list']: return if not s['proxy_type']: # no proxy try: req = urllib.request.Request(url) req.add_header('Content-Type', 'application/json') response = urllib.request.urlopen(req) result = response.read() save_nodes(result) except Exception as ex: log('TOX nodes loading error: ' + str(ex)) else: # proxy netman = QtNetwork.QNetworkAccessManager() proxy = QtNetwork.QNetworkProxy() proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy if s['proxy_type'] == 2 else QtNetwork.QNetworkProxy.HttpProxy) proxy.setHostName(s['proxy_host']) proxy.setPort(s['proxy_port']) netman.setProxy(proxy) try: request = QtNetwork.QNetworkRequest() request.setUrl(QtCore.QUrl(url)) reply = netman.get(request) while not reply.isFinished(): QtCore.QThread.msleep(1) QtCore.QCoreApplication.processEvents() data = bytes(reply.readAll().data()) save_nodes(data) except Exception as ex: log('TOX nodes loading error: ' + str(ex))
def set_proxy(self, ip='160.196.170.48'): proxy = QtNetwork.QNetworkProxy() proxy.setType(QtNetwork.QNetworkProxy.HttpProxy) proxy.setHostName(ip) proxy.setPort(8080) QtNetwork.QNetworkProxy.setApplicationProxy(proxy) self._update_googlemap()
def setup_proxy(self): proxy = QtNetwork.QNetworkProxy() if config.setting["use_proxy"]: proxy.setType(QtNetwork.QNetworkProxy.HttpProxy) proxy.setHostName(config.setting["proxy_server_host"]) proxy.setPort(config.setting["proxy_server_port"]) proxy.setUser(config.setting["proxy_username"]) proxy.setPassword(config.setting["proxy_password"]) self.manager.setProxy(proxy)
def set_proxy(self, socks5=True): proxy = QtNetwork.QNetworkProxy() if socks5: proxy_type = QtNetwork.QNetworkProxy.Socks5Proxy else: proxy_type = QtNetwork.QNetworkProxy.HttpProxy proxy.setType(proxy_type) proxy.setHostName('proxy.hud.gov') proxy.setPort(5050 if socks5 else 8080) QtNetwork.QNetworkProxy.setApplicationProxy(proxy)
def set_proxy(self, host, port, type): if type == 'Socks5': proxy_type = QtNetwork.QNetworkProxy.Socks5Proxy elif type == 'Http': proxy_type = QtNetwork.QNetworkProxy.HttpProxy else: return proxy = QtNetwork.QNetworkProxy() proxy.setType(proxy_type) proxy.setHostName(host) proxy.setPort(int(port)) QtNetwork.QNetworkProxy.setApplicationProxy(proxy)
def setup_proxy(self): proxy = QtNetwork.QNetworkProxy() config = get_config() if config.setting["use_proxy"]: if config.setting["proxy_type"] == 'socks': proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy) else: proxy.setType(QtNetwork.QNetworkProxy.HttpProxy) proxy.setHostName(config.setting["proxy_server_host"]) proxy.setPort(config.setting["proxy_server_port"]) if config.setting["proxy_username"]: proxy.setUser(config.setting["proxy_username"]) if config.setting["proxy_password"]: proxy.setPassword(config.setting["proxy_password"]) self.manager.setProxy(proxy)
def globalProxy(self, pro): proxy = QtNetwork.QNetworkProxy() # Http访问代理 proxy.setType(QtNetwork.QNetworkProxy.HttpProxy) # 代理ip地址HttpProxy # proxy.setHostName("211.159.177.212") proxy.setHostName(pro['ip']) # 端口号 # proxy.setPort(3128) proxy.setPort(int(pro['port'])) if 'username' in pro and pro['username'] != None: proxy.setUser(pro['username']) proxy.setPassword(pro['password']) QtNetwork.QNetworkProxy.setApplicationProxy(proxy)
def __init__(self, proxy_type=None, proxy_addr=None, proxy_port=None): self.app = QApplication(sys.argv) QWebView.__init__(self) self._loaded = False self.loadFinished.connect(self._loadFinished) # Sets the proxy if any if proxy_addr and proxy_port and proxy_type: proxy = QtNetwork.QNetworkProxy() if proxy_type == "http": proxy.setType(QtNetwork.QNetworkProxy.HttpProxy) elif proxy_type == "socks5": proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy) proxy.setHostName(proxy_addr) proxy.setPort(int(proxy_port)) QtNetwork.QNetworkProxy.setApplicationProxy(proxy) if not os.path.exists("./screenshots"): os.makedirs("./screenshots")
def tox_dns(email): """ TOX DNS 4 :param email: data like '*****@*****.**' :return: tox id on success else None """ site = email.split('@')[1] data = {"action": 3, "name": "{}".format(email)} urls = ('https://{}/api'.format(site), 'http://{}/api'.format(site)) s = settings.Settings.get_instance() if not s['proxy_type']: # no proxy for url in urls: try: return send_request(url, data) except Exception as ex: log('TOX DNS ERROR: ' + str(ex)) else: # proxy netman = QtNetwork.QNetworkAccessManager() proxy = QtNetwork.QNetworkProxy() proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy if s['proxy_type'] == 2 else QtNetwork.QNetworkProxy.HttpProxy) proxy.setHostName(s['proxy_host']) proxy.setPort(s['proxy_port']) netman.setProxy(proxy) for url in urls: try: request = QtNetwork.QNetworkRequest() request.setUrl(QtCore.QUrl(url)) request.setHeader(QtNetwork.QNetworkRequest.ContentTypeHeader, "application/json") reply = netman.post(request, bytes(json.dumps(data), 'utf-8')) while not reply.isFinished(): QtCore.QThread.msleep(1) QtCore.QCoreApplication.processEvents() data = bytes(reply.readAll().data()) result = json.loads(str(data, 'utf-8')) if not result['c']: return result['tox_id'] except Exception as ex: log('TOX DNS ERROR: ' + str(ex)) return None # error
def send_request(version): s = settings.Settings.get_instance() netman = QtNetwork.QNetworkAccessManager() proxy = QtNetwork.QNetworkProxy() if s['proxy_type']: proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy if s['proxy_type'] == 2 else QtNetwork.QNetworkProxy.HttpProxy) proxy.setHostName(s['proxy_host']) proxy.setPort(s['proxy_port']) netman.setProxy(proxy) url = test_url(version) try: request = QtNetwork.QNetworkRequest() request.setUrl(QtCore.QUrl(url)) reply = netman.get(request) while not reply.isFinished(): QtCore.QThread.msleep(1) QtCore.QCoreApplication.processEvents() attr = reply.attribute( QtNetwork.QNetworkRequest.HttpStatusCodeAttribute) return attr is not None and 200 <= attr < 300 except Exception as ex: util.log('TOXYGEN UPDATER ERROR: ' + str(ex)) return False
request_id = r.json().get('request') t = threading.Timer(5, check_and_post, args=[request_id, key]) t.start() app = QApplication(sys.argv) view = QWebEngineView() res = requests.get(proxy_provider_url) ip = res.text.split(":") port = ip[1] ip = ip[0] proxy = QtNetwork.QNetworkProxy() # Http访问代理 proxy.setType(QtNetwork.QNetworkProxy.HttpProxy) # 代理ip地址HttpProxy proxy.setHostName(ip) # 端口号 proxy.setPort(int(port)) QtNetwork.QNetworkProxy.setApplicationProxy(proxy) interceptor = TwitchInterceptor() profile = QWebEngineProfile() profile.clearHttpCache() profile.clearAllVisitedLinks() pCookie = profile.cookieStore() pCookie.deleteAllCookies() pCookie.deleteSessionCookies()
def __init__(self, *args, **kwargs): super(MainWindow,self).__init__(*args,**kwargs) self.browser = QWebEngineView() self.browser.setUrl(QUrl("https://duckduckgo.com/")) self.setCentralWidget(self.browser) self.browser.loadStarted.connect(self.loadStartedHandler) self.browser.loadProgress.connect(self.loadProgressHandler) self.browser.loadFinished.connect(self.loadFinishedHandler) navtb = QToolBar("Navigation") navtb.setIconSize(QSize(250, 250)) navtb.setFixedHeight(50) self.addToolBar(navtb) self.proxy = QtNetwork.QNetworkProxy() self.textbox = QLineEdit(self) self.textbox.move(20, 15) self.textbox.resize(500,20) self.textboxproxyip = QLineEdit(self) self.textboxproxyip.move(740, 15) self.textboxproxyip.resize(300,20) self.textboxproxyport = QLineEdit(self) self.textboxproxyport.move(1200, 15) self.textboxproxyport.resize(100,20) self.label1 = QLabel(self) self.label1.move(1300, 10) self.label1.setText("Port") self.label2 = QLabel(self) self.label2.move(1050, 10) self.label2.setText("ip") self.button_reloadproxy = QPushButton('Reload Proxy', self) self.button_reloadproxy.move(1600,10) self.button_proxyhttp = QPushButton('H', self) self.button_proxyhttp.move(1600,50) self.button_proxyhttp.resize(30,30) self.button_proxysocks5 = QPushButton('S5', self) self.button_proxysocks5.move(1630,50) self.button_proxysocks5.resize(30,30) self.button_proxychttp = QPushButton('CH', self) self.button_proxychttp.move(1660,50) self.button_proxychttp.resize(30,30) self.button_proxydefault = QPushButton('D', self) self.button_proxydefault.move(1690,50) self.button_proxydefault.resize(30,30) self.button_noproxy = QPushButton('NP', self) self.button_noproxy.move(1720,50) self.button_noproxy.resize(30,30) self.button_search = QPushButton('Enter', self) self.button_search.move(530,10) self.button_back = QPushButton('Back', self) self.button_back.move(630,10) self.button_search.clicked.connect(self.on_click_button_search) self.button_back.clicked.connect(self.on_click_button_back) self.button_reloadproxy.clicked.connect(self.on_click_button_reloadproxy) self.button_proxyhttp.clicked.connect(self.on_click_button_proxyhttp) self.button_proxysocks5.clicked.connect(self.on_click_button_proxysocks5) self.button_proxychttp.clicked.connect(self.on_click_button_proxychttp) self.button_proxydefault.clicked.connect(self.on_click_button_proxydefault) self.button_noproxy.clicked.connect(self.on_click_button_noproxy) self.show()
def startPykib(self): # Register Sigterm command signal.signal(signal.SIGINT, sigint_handler) # ---------------------------------------------------------- # Eval for all relevant Arguments # ---------------------------------------------------------- # Parsing Arguments self.args = pykib_base.arguments.getArguments(self.dirname) #Set Logging: logging.basicConfig( format= '%(asctime)s.%(msecs)03d %(levelname)s %(module)s %(lineno) s - %(funcName)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S', ) # logging.getLogger().setLevel(logging.INFO) if (self.args.logLevel == "ERROR"): logging.getLogger().setLevel(logging.ERROR) elif (self.args.logLevel == "WARNING"): logging.getLogger().setLevel(logging.WARNING) elif (self.args.logLevel == "INFO"): logging.getLogger().setLevel(logging.INFO) elif (self.args.logLevel == "DEBUG"): logging.getLogger().setLevel(logging.DEBUG) #Storing Process ID to file if set if (self.args.storePid): logging.info("Storing current process id:") logging.info(" ProcId: " + str(os.getpid())) pid_path = tempfile.gettempdir() if (self.args.storePidPath): pid_path = self.args.storePidPath pid_path = pid_path.replace("\\", "/") + "/.pykibLatestProcId" with open(pid_path, "w") as text_file: text_file.write(str(os.getpid())) logging.info(" Storing process id under: " + pid_path) # Set Start URL if (self.args.url is None and self.args.defaultURL): self.args.url = self.args.defaultURL elif (self.args.url is None and self.args.defaultURL is None): self.args.url = "https://github.com/WinTeach/pykib" # Set Proxy if (self.args.proxy): proxy = QtNetwork.QNetworkProxy() proxy.setType(QtNetwork.QNetworkProxy.HttpProxy) proxy.setHostName(self.args.proxy) proxy.setPort(self.args.proxyPort) if (self.args.proxyUsername and self.args.proxyPassword): proxy.setUser(self.args.proxyUsername) proxy.setPassword(self.args.proxyPassword) elif (self.args.proxyUsername or self.args.proxyPassword): print( "It is not possible to use a proxy username without password" ) sys.exit() QtNetwork.QNetworkProxy.setApplicationProxy(proxy) # Allow Webcam and Microfon Support. Warn if PyQt Version is to old if (self.args.allowWebcamAccess): if (PYQT_VERSION_STR < "5.15.0"): logging.info( "Webcam Access is only supported with PyQt5 Version 5.15.0 and will be disabled. Currently installed Version:" + PYQT_VERSION_STR) self.args.allowWebcamAccess = False if (self.args.allowMicAccess): if (PYQT_VERSION_STR < "5.15.0"): logging.info( "Microfon Access is only supported with PyQt5 Version 5.15.0 and will be disabled. . Currently installed Version:" + PYQT_VERSION_STR) self.args.allowMicAccess = False # Check if a configred Download Location exists if (self.args.downloadPath): if (os.path.isdir(self.args.downloadPath) != True): print("The folder for downloadPath (" + self.args.downloadPath + ") does not exists or is unreachable") sys.exit() # Parse Download Handle if (self.args.downloadHandle): tempDownloadHandle = [] for x in self.args.downloadHandle: handle = x.split("|") if (len(handle) != 0): tempDownloadHandle.append(handle) self.args.downloadHandle = tempDownloadHandle # Check if a configred temporarySessionTokenPath Location exists if (self.args.temporarySessionTokenPath): if (os.path.isdir(self.args.temporarySessionTokenPath) != True): print("The folder for storing the temporary Session Token (" + self.args.temporarySessionTokenPath + ") does not exists or is unreachable") sys.exit() # Check if a set Zoom Factor is inside the allowed area if (self.args.setZoomFactor < 25 or self.args.setZoomFactor > 500): print("The Zoom factor must be a value between 25 and 500") sys.exit() # Calculate Screen Offset when normalizeGeometry is set self.args.screenOffsetLeft = 0 try: if (self.args.normalizeGeometry): screens = self.app.screens() for key in screens: if (self.app.primaryScreen() == key): self.args.screenOffsetLeft = key.availableGeometry( ).left() except: self.args.screenOffsetLeft = 0 # ---------------------------------------------------------- # Define System application Name # ---------------------------------------------------------- self.app.setApplicationName(self.args.systemApplicationName) # ---------------------------------------------------------- # Switch between Remote Daemon an Default Pykib # ---------------------------------------------------------- if (self.args.remoteBrowserDaemon): RemotePykib(self.args, self.dirname) # ---------------------------------------------------------- # Eval Arguments for da Default Pykib Start # ---------------------------------------------------------- # Check autologin Data if (self.args.enableAutoLogon and not (self.args.autoLogonUser and self.args.autoLogonPassword)): print( "When Autologin is enabled at least autoLogonUser and autoLogonPassword has to be set also" ) sys.exit() view = pykib_base.mainWindow.MainWindow(self.args, self.dirname) # Set Dimensions if (self.args.fullscreen): if (len(self.args.geometry) != 2 and len(self.args.geometry) != 4): print( "When geometry is set with maximized or fullsreen only 2 parameters for starting point (#left# and #top#) is allowed" ) sys.exit() view.move(self.args.geometry[0] + self.args.screenOffsetLeft, self.args.geometry[1]) view.showFullScreen() elif (self.args.maximized): if (len(self.args.geometry) != 2 and len(self.args.geometry) != 4): print( "When geometry is set with maximized or fullsreen only 2 parameters for starting point (#left# and #top#) is allowed" ) sys.exit() view.move(self.args.geometry[0] + self.args.screenOffsetLeft, self.args.geometry[1]) view.showMaximized() else: if (len(self.args.geometry) != 4): print( "When geometry without maximized or fullsreen is set, you have to define the whole position an screen #left# #top# #width# #height#" ) sys.exit() view.show() view.setGeometry( self.args.geometry[0] + self.args.screenOffsetLeft, self.args.geometry[1], self.args.geometry[2], self.args.geometry[3]) sys.exit(self.app.exec_())