def config(self): from apfilter import ap_filter self.gfwlist = ap_filter() self.local = ap_filter() self.ignore = ap_filter() # used by rules like "||twimg.com auto" for line in open("./fgfw-lite/local.txt"): rule, _, dest = line.strip().partition(" ") if dest: # |http://www.google.com/url forcehttps self.add_redirect(rule, dest) else: self.add_rule(line, local=True) if self.conf.rproxy is False: self.logger.info("loading gfwlist...") try: with open("./fgfw-lite/gfwlist.txt") as f: data = f.read() if "!" not in data: data = "".join(data.split()) data = base64.b64decode(data).decode() for line in data.splitlines(): self.add_rule(line) except Exception: self.logger.warning("./fgfw-lite/gfwlist.txt is corrupted!")
def config(self): from apfilter import ap_filter self.gfwlist = ap_filter() self.local = ap_filter() self.ignore = ap_filter() # used by rules like "||twimg.com auto" for line in open('./fgfw-lite/local.txt'): rule, _, dest = line.strip().partition(' ') if dest: # |http://www.google.com/url forcehttps self.add_redirect(rule, dest) else: self.add_rule(line, local=True) if self.conf.rproxy is False: self.logger.info('loading gfwlist...') try: with open('./fgfw-lite/gfwlist.txt') as f: data = f.read() if '!' not in data: data = ''.join(data.split()) data = base64.b64decode(data).decode() for line in data.splitlines(): self.add_rule(line) except Exception: self.logger.warning('./fgfw-lite/gfwlist.txt is corrupted!')
def __init__(self, conf): self.conf = conf self.logger = logging.getLogger('redirector') self.logger.setLevel(logging.INFO) hdr = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s %(name)s:%(levelname)s %(message)s', datefmt='%H:%M:%S') hdr.setFormatter(formatter) self.logger.addHandler(hdr) self._bad302 = ap_filter() self.adblock = ap_filter() self.redirlst = []
def __init__(self, conf): from apfilter import ap_filter self.conf = conf self.logger = logging.getLogger('redirector') self.logger.setLevel(logging.INFO) hdr = logging.StreamHandler() formatter = logging.Formatter( '%(asctime)s %(name)s:%(levelname)s %(message)s', datefmt='%H:%M:%S') hdr.setFormatter(formatter) self.logger.addHandler(hdr) self._bad302 = ap_filter() self.adblock = ap_filter() self.redirlst = []
def config(self): self.gfwlist = ap_filter() self.force = ap_filter() self.temp = [] self.temp_rules = set() self.ignore = [] for line in open('./fgfw-lite/local.txt'): rule, _, dest = line.strip().partition(' ') if dest: # |http://www.google.com/url forcehttps self.add_redirect(rule, dest) else: self.add_temp(line, quiet=True) if self.conf.rproxy is False: for line in open('./fgfw-lite/cloud.txt'): rule, _, dest = line.strip().partition(' ') if dest: # |http://www.google.com/url forcehttps self.add_redirect(rule, dest) else: self.add_rule(line, force=True) self.logger.info('loading gfwlist...') try: with open('./fgfw-lite/gfwlist.txt') as f: data = f.read() if '!' not in data: data = ''.join(data.split()) data = base64.b64decode(data).decode() for line in data.splitlines(): self.add_rule(line) except: self.logger.warning('./fgfw-lite/gfwlist.txt is corrupted!') if self.conf.userconf.dgetbool('fgfwproxy', 'adblock', False): self.logger.info('loading adblock...') try: with open('./fgfw-lite/adblock.txt') as f: data = f.read() for line in data.splitlines(): if line.startswith('||') and line.endswith('^'): self.add_redirect(line, 'adblock') except: self.logger.warning('./fgfw-lite/adblock.txt is corrupted!')
def start_dns_server(server_address, localserver=('223.5.5.5', 53), remoteserver=('8.8.8.8', 53), proxy=None): from resolver import get_resolver from apfilter import ap_filter import base64 af = ap_filter() with open('gfwlist.txt') as f: data = f.read() if '!' not in data: data = ''.join(data.split()) data = base64.b64decode(data).decode() for line in data.splitlines(): if '||' in line: try: af.add(line) except: pass r = get_resolver(localserver, remoteserver, proxy, af) resolver = Resolver(r) server = UDPDNSServer(server_address, DNSHandler, resolver) server.serve_forever()
def __init__(self, conf): self.conf = conf self.logger = conf.logger self._bad302 = ap_filter() self.adblock = ap_filter() self.redirlst = []
def get_resolver(localdns, remotedns=None, proxy=None, apfilter=None, bad_ip=None): bad_ip = bad_ip or set() if not remotedns or localdns == remotedns: return Resolver(localdns) else: return Anti_GFW_Resolver(localdns, remotedns, proxy, apfilter, bad_ip) if __name__ == '__main__': from apfilter import ap_filter import base64 apfilter = ap_filter() with open('./gfwlist.txt', 'r') as f: data = f.read() if '!' not in data: data = ''.join(data.split()) data = base64.b64decode(data).decode() for line in data.splitlines(): if '||' in line: apfilter.add(line) print('test apfilter...') print(apfilter.match('twitter.com', 'twitter.com', True)) print(apfilter.match('www.163.com', 'www.163.com', True)) resolver = get_resolver([ ('119.29.29.29', 53), ], [
return self.remote.record(domain, qtype) def is_poisoned(self, domain): if self.apfilter and self.apfilter.match(domain, domain, True): return True def get_resolver(localdns, remotedns=None, proxy=None, apfilter=None): if not remotedns or localdns == remotedns: return Resolver(localdns) else: return Anti_GFW_Resolver(localdns, remotedns, proxy, apfilter) if __name__ == '__main__': from apfilter import ap_filter import base64 apfilter = ap_filter() with open('./gfwlist.txt', 'r') as f: data = f.read() if '!' not in data: data = ''.join(data.split()) data = base64.b64decode(data).decode() for line in data.splitlines(): if '||' in line: apfilter.add(line) print(apfilter.match('twitter.com', 'twitter.com', True)) resolver = get_resolver(('223.5.5.5', 53), ('8.8.8.8', 53), 'http://127.0.0.1:8119', apfilter) print(resolver.record('twitter.com', 'ANY')) print(resolver.resolve('twitter.com')) print(resolver.get_ip_address('twitter.com'))
def __init__(self, conf): self.conf = conf self.logger = conf.logger self._bad302 = ap_filter() self.adblock = ap_filter() self.redirlst = []