From 326ebc155cbd644eafb616146590c389aedcdf97 Mon Sep 17 00:00:00 2001 From: ingvar1995 Date: Mon, 4 Jul 2016 12:45:51 +0300 Subject: [PATCH] tox dns update --- docs/install.md | 29 +++++++++++++---------------- src/tox_dns.py | 37 ++++++++++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 21 deletions(-) diff --git a/docs/install.md b/docs/install.md index 05db352..5c1c31d 100644 --- a/docs/install.md +++ b/docs/install.md @@ -9,11 +9,12 @@ 1. [Download and install latest Python 3.4](https://www.python.org/downloads/windows/) 2. [Install PySide](https://pypi.python.org/pypi/PySide/1.2.4) (recommended) or [PyQt4](https://riverbankcomputing.com/software/pyqt/download) -3. Install PyAudio: ``pip3 install pyaudio`` -4. [Download toxygen](https://github.com/xveduk/toxygen/archive/master.zip) -5. Unpack archive -6. Download latest libtox.dll build, download latest libsodium.a build, put it into \src\libs\ -7. Run \src\main.py +3. Install PyAudio: ``pip3.4 install pyaudio`` +4. Install PySocks: ``pip3.4 install PySocks`` +5. [Download toxygen](https://github.com/xveduk/toxygen/archive/master.zip) +6. Unpack archive +7. Download latest libtox.dll build, download latest libsodium.a build, put it into \src\libs\ +8. Run \src\main.py [libtox.dll for 32-bit Python](https://build.tox.chat/view/libtoxcore/job/libtoxcore_build_windows_x86_shared_release/lastSuccessfulBuild/artifact/libtoxcore_build_windows_x86_shared_release.zip) @@ -30,19 +31,15 @@ Dependencies: 1. Install latest Python3.4: ``sudo apt-get install python3`` -2. [Install PySide](https://wiki.qt.io/PySide_Binaries_Linux) (recommended) or [PyQt4](https://riverbankcomputing.com/software/pyqt/download) +2. [Install PySide](https://wiki.qt.io/PySide_Binaries_Linux) (recommended), using terminal - ``sudo apt-get install python3-pyside``, or install [PyQt4](https://riverbankcomputing.com/software/pyqt/download). 3. Install [toxcore](https://github.com/irungentoo/toxcore/blob/master/INSTALL.md) with toxav support in your system (install in /usr/lib/) 4. Install PyAudio: -```bash -sudo apt-get install portaudio19-dev -sudo apt-get install python3-pyaudio -``` -Toxygen: - -1. [Download toxygen](https://github.com/xveduk/toxygen/archive/master.zip) -2. Unpack archive -3. Run app: -``python3 main.py`` +``sudo apt-get install portaudio19-dev`` and ``sudo apt-get install python3-pyaudio`` +5. Install PySocks: ``pip3.4 install PySocks`` +6. [Download toxygen](https://github.com/xveduk/toxygen/archive/master.zip) +7. Unpack archive +8. Run app: +``python3.4 main.py`` ## Compile Toxygen Check [compile.md](/docs/compile.md) for more info diff --git a/src/tox_dns.py b/src/tox_dns.py index 914c827..3e7ef63 100644 --- a/src/tox_dns.py +++ b/src/tox_dns.py @@ -1,6 +1,7 @@ import json import urllib.request from util import log +import settings def tox_dns(email): @@ -11,16 +12,42 @@ def tox_dns(email): """ site = email.split('@')[1] data = {"action": 3, "name": "{}".format(email)} - for url in ('https://{}/api'.format(site), 'http://{}/api'.format(site)): + urls = ('https://{}/api'.format(site), 'http://{}/api'.format(site)) + s = settings.Settings.get_instance() + if s['proxy_type'] != 2: # no proxy or http proxy + proxy = s['proxy_host'] + ':' + s['proxy_port'] if s['proxy_type'] else None + for url in urls: + try: + return send_request(url, data, proxy) + except Exception as ex: + log('TOX DNS ERROR: ' + str(ex)) + else: # SOCKS5 proxy try: - return send_request(url, data) - except Exception as ex: # try http - log('TOX DNS ERROR: ' + str(ex)) + import socks + import socket + import requests + + socks.set_default_proxy(socks.SOCKS5, s['proxy_host'], s['proxy_port']) + socket.socket = socks.socksocket + for url in urls: + try: + r = requests.get(url) + res = json.loads(r.text) + if not res['c']: + return res['tox_id'] + else: + raise LookupError() + except Exception as ex: + log('TOX DNS ERROR: ' + str(ex)) + except: + pass return None # error -def send_request(url, data): +def send_request(url, data, proxy): req = urllib.request.Request(url) + if proxy is not None: + req.set_proxy(proxy, 'http') req.add_header('Content-Type', 'application/json') response = urllib.request.urlopen(req, bytes(json.dumps(data), 'utf-8')) res = json.loads(str(response.read(), 'utf-8'))