import gevent import gevent.socket import dpkt import config import traceback import urllib2 import fqsocks.httpd FQROUTER_VERSION = 'UNKNOWN' LOGGER = logging.getLogger('fqrouter.%s' % __name__) LOG_DIR = '/data/data/fq.router2/log' MANAGER_LOG_FILE = os.path.join(LOG_DIR, 'manager.log') FQDNS_LOG_FILE = os.path.join(LOG_DIR, 'fqdns.log') nat_map = {} # sport => (dst, dport), src always be 10.25.1.1 default_dns_server = config.get_default_dns_server() DNS_HANDLER = fqdns.DnsHandler( enable_china_domain=True, enable_hosted_domain=True, original_upstream=('udp', default_dns_server, 53) if default_dns_server else None) def handle_ping(environ, start_response): try: LOGGER.info('VPN PONG/%s' % FQROUTER_VERSION) except: traceback.print_exc() os._exit(1) start_response(httplib.OK, [('Content-Type', 'text/plain')]) yield 'VPN PONG/%s' % FQROUTER_VERSION
)] SOCKS_RULES = [ ( {'target': 'DROP', 'extra': 'icmp type 5'}, ('filter', 'OUTPUT', '-p icmp --icmp-type 5 -j DROP') ), ( {'target': 'ACCEPT', 'destination': '127.0.0.1'}, ('nat', 'OUTPUT', '-p tcp -d 127.0.0.1 -j ACCEPT') ), ( {'target': 'DNAT', 'extra': 'to:10.1.2.3:12345'}, ('nat', 'OUTPUT', '-p tcp ! -s 10.1.2.3 -j DNAT --to-destination 10.1.2.3:12345') ), ( {'target': 'DNAT', 'extra': 'to:10.1.2.3:12345'}, ('nat', 'PREROUTING', '-p tcp ! -s 10.1.2.3 -j DNAT --to-destination 10.1.2.3:12345') )] default_dns_server = config.get_default_dns_server() DNS_HANDLER = fqdns.DnsHandler( enable_china_domain=True, enable_hosted_domain=True, original_upstream=(default_dns_server, 53) if default_dns_server else None) fqsocks.fqsocks.DNS_HANDLER = DNS_HANDLER def handle_ping(environ, start_response): try: LOGGER.info('PONG/%s' % FQROUTER_VERSION) except: traceback.print_exc() os._exit(1) start_response(httplib.OK, [('Content-Type', 'text/plain')]) yield 'PONG/%s' % FQROUTER_VERSION