from requests.exceptions import ConnectionError, ReadTimeout
from db import RedisClient
TEST_URL = 'http://www.baidu.com'
ADSL_BASH = 'adsl-stop;adsl-start'
def get_ip(self, ifname=ADSL_IFNAME):
(status, output) = subprocess.getstatusoutput('ifconfig')
pattern = re.compile(ifname + '.*?inet.*?(\d+\.\d+\.\d+\.\d+).*?netmask', re.S)
result = re.search(pattern, output)
def test_proxy(self, proxy):
response = requests.get(TEST_URL, proxies={
'http': 'http://' + proxy,
'https': 'https://' + proxy
if response.status_code == 200:
except (ConnectionError, ReadTimeout):
self.redis = RedisClient()
self.redis.remove(CLIENT_NAME)
print('Successfully Removed Proxy')
def set_proxy(self, proxy):
self.redis = RedisClient()
if self.redis.set(CLIENT_NAME, proxy):
print('Successfully Set Proxy', proxy)
print('ADSL Start, Remove Proxy, Please wait')
(status, output) = subprocess.getstatusoutput(ADSL_BASH)
print('ADSL Successfully')
print('Testing Proxy, Please Wait')
proxy = '{ip}:{port}'.format(ip=ip, port=PROXY_PORT)
if self.test_proxy(proxy):
print('Get IP Failed, Re Dialing')
time.sleep(ADSL_ERROR_CYCLE)
print('ADSL Failed, Please Check')
time.sleep(ADSL_ERROR_CYCLE)