def run(self): while True: ip_speed = self.consumer_queue.get() # print 'The google ip is ' + ip_speed[0] + ', the speed is ' + ip_speed[1] self.add_to_result(ip_speed) Logger.log('Got one good ip: ' + ip_speed[0] + ' .') self.consumer_queue.task_done()
def wait_for_end(queues, result_lst): for queue in queues: queue.join() Logger.log('one finished.') Logger.log('all task finished.') result_lst.sort(cmp=lambda x, y: int(x[1] - y[1])) write_result_to_file(result_lst)
def run(self): first_ip = self.gen_ip_by_path(self.file_path) while True: try: ip = next(first_ip) self.producer_queue.put(ip) except StopIteration: break Logger.log('1st producer out.')
def run(self): while True: ip = self.consumer_queue.get() if self.test_simple_ip(ip): flag, cert = self.test_ssl_ip(ip) if flag: flag = self.test_goagent_ip(ip) if flag: self.producer_queue.put((ip, cert)) else: Logger.log(ip + ' is a broken ip.') else: Logger.log(ip + ' is a broken ip.') self.consumer_queue.task_done()
def main(): result_lst = list() ip_producer = ipgen.ConfigGenerator.ConfigIpGenerator() ip_producer.set_file_path('./ip_list.txt') ip_testers = setup_all_testers() ip_dealer = ipdealer.OutputStdout.SimpleOutput() ip_dealer.set_result_lst(result_lst) speed_testers = setup_all_speeders() queues = setup_all_queues(ip_producer, ip_testers, speed_testers, ip_dealer) boost_up(ip_testers, speed_testers, ip_dealer) ip_producer.run() Logger.log('1st producer end ...') wait_for_end(queues, result_lst) Logger.log(result_lst)
def test_ssl_ip(ip): try: connection = socket.socket() connection.settimeout(TIME_OUT) ssl_connection = ssl.wrap_socket(connection, cert_reqs=ssl.CERT_REQUIRED, ca_certs='cacert.pem') ssl_connection.settimeout(TIME_OUT * 4) ssl_connection.connect((ip, 443)) cert = ssl_connection.getpeercert() flag, subject = IpTester.judge_cert(cert) ssl_connection.close() connection.close() Logger.log('cert is ' + subject) return flag, subject except: return False, None
def test_goagent_ip(ip): sock = None ssl_sock = None ipaddr = (ip, 443) try: sock = socket.socket(socket.AF_INET) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 0)) sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 32 * 1024) sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, True) sock.settimeout(TIME_OUT) ssl_sock = ssl.wrap_socket(sock, ssl_version=3, ciphers='ECDHE-RSA-AES128-SHA', do_handshake_on_connect=False) ssl_sock.settimeout(TIME_OUT) ssl_sock.connect(ipaddr) ssl_sock.do_handshake() ssl_sock.sock = sock ssl_sock.settimeout(TIME_OUT) ssl_sock.send('HEAD /favicon.ico HTTP/1.1\r\nHost: %s\r\n\r\n' % hostname) response = httplib.HTTPResponse(ssl_sock, buffering=True) try: response.begin() if hostname.endswith('.appspot.com') and 'Google' not in response.getheader('server', ''): raise socket.timeout('timed out') except: ssl_sock.close() raise socket.timeout('timed out') finally: Logger.log('Server is ' + response.getheader('server', '')) response.close() return True except: if ssl_sock: ssl_sock.close() if sock: sock.close() return False
def main(): gen = segen.Generator.SegGenerator() seg_lst = get_google_ip_range() result_lst = list() ip_producer = FileGenerator.IpGenerator() ip_producer.set_seg_list(seg_lst) ip_testers = setup_all_testers() ip_dealer = ipdealer.OutputStdout.SimpleOutput() ip_dealer.set_result_lst(result_lst) speed_testers = setup_all_speeders() queues = setup_all_queues(ip_producer, ip_testers, speed_testers, ip_dealer) boost_up(ip_testers, speed_testers, ip_dealer) ip_producer.run() Logger.log('1st producer end ...') wait_for_end(queues, result_lst) Logger.log(result_lst) Logger.finish()