mirror of https://github.com/dnomd343/ProxyC
				
				
			
				 5 changed files with 156 additions and 37 deletions
			
			
		@ -0,0 +1,50 @@ | 
				
			|||
#!/usr/bin/env python3 | 
				
			|||
# -*- coding: utf-8 -*- | 
				
			|||
 | 
				
			|||
import time | 
				
			|||
from Basis.Logger import logging | 
				
			|||
from Builder import Builder, clientEntry | 
				
			|||
 | 
				
			|||
from ProxyChecker import httpCheck  # TODO: refactor in the future | 
				
			|||
 | 
				
			|||
 | 
				
			|||
def Check(proxyType: str, proxyInfo: dict, checkInfo: dict) -> dict: | 
				
			|||
    # TODO: checkInfo -> [...] (only check http for now) | 
				
			|||
    if proxyType not in clientEntry: | 
				
			|||
        logging.error('Unknown proxy type %s' % proxyType) | 
				
			|||
        raise RuntimeError('Unknown proxy type') | 
				
			|||
    try: | 
				
			|||
        client = Builder(proxyType, proxyInfo) | 
				
			|||
    except Exception as reason: | 
				
			|||
        logging.error('Client build error -> %s' % reason) | 
				
			|||
        raise RuntimeError('Client build error') | 
				
			|||
 | 
				
			|||
    # TODO: debug combine output | 
				
			|||
    logging.debug(client.id) | 
				
			|||
    logging.debug(client.proxyType) | 
				
			|||
    logging.debug(client.proxyInfo) | 
				
			|||
    logging.debug(client.socksAddr) | 
				
			|||
    logging.debug(client.socksPort) | 
				
			|||
 | 
				
			|||
    # TODO: wait port occupied | 
				
			|||
    time.sleep(1) | 
				
			|||
    if not client.status():  # client unexpected exit | 
				
			|||
        client.destroy()  # remove file and kill sub process | 
				
			|||
        logging.error('Client unexpected exit\n%s', client.output) | 
				
			|||
        raise RuntimeError('Client unexpected exit') | 
				
			|||
 | 
				
			|||
    # TODO: check process | 
				
			|||
    status, _ = httpCheck(client.socksPort)  # TODO: add socks5 addr | 
				
			|||
 | 
				
			|||
    logging.critical('http check status -> %s' % status) | 
				
			|||
 | 
				
			|||
    client.destroy()  # clean up the client | 
				
			|||
 | 
				
			|||
    return { | 
				
			|||
        'http': { | 
				
			|||
            'status': status, | 
				
			|||
            # TODO: more http check info | 
				
			|||
        }, | 
				
			|||
        # TODO: more check items (from checkInfo list) | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
					Loading…
					
					
				
		Reference in new issue