mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			117 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Ucode
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Ucode
		
	
	
	
	
	
| {%
 | |
| let fs = require("fs");
 | |
| 
 | |
| let o_dst_bypass4_ = "
 | |
| 	0.0.0.0/8
 | |
| 	10.0.0.0/8
 | |
| 	100.64.0.0/10
 | |
| 	127.0.0.0/8
 | |
| 	169.254.0.0/16
 | |
| 	172.16.0.0/12
 | |
| 	192.0.0.0/24
 | |
| 	192.0.2.0/24
 | |
| 	192.168.0.0/16
 | |
| 	192.31.196.0/24
 | |
| 	192.52.193.0/24
 | |
| 	192.88.99.0/24
 | |
| 	192.175.48.0/24
 | |
| 	198.18.0.0/15
 | |
| 	198.51.100.0/24
 | |
| 	203.0.113.0/24
 | |
| 	224.0.0.0/4
 | |
| 	240.0.0.0/4
 | |
| ";
 | |
| let o_dst_bypass6_ = "
 | |
| 	::1/128
 | |
| 	::/128
 | |
| 	::ffff:0:0/96
 | |
| 	64:ff9b:1::/48
 | |
| 	100::/64
 | |
| 	fe80::/10
 | |
| 	2001::/23
 | |
| 	fc00::/7
 | |
| ";
 | |
| let o_dst_bypass_ = o_dst_bypass4_ + " " + o_dst_bypass6_;
 | |
| 
 | |
| let set_suffix = {
 | |
| 	"src_bypass": {
 | |
| 		str: o_src_bypass,
 | |
| 	},
 | |
| 	"src_forward": {
 | |
| 		str: o_src_forward,
 | |
| 	},
 | |
| 	"src_checkdst": {
 | |
| 		str: o_src_checkdst,
 | |
| 	},
 | |
| 	"remote_servers": {
 | |
| 		str: o_remote_servers
 | |
| 	},
 | |
| 	"dst_bypass": {
 | |
| 		str: o_dst_bypass,
 | |
| 		file: o_dst_bypass_file,
 | |
| 	},
 | |
| 	"dst_bypass_": {
 | |
| 		str: o_dst_bypass_,
 | |
| 	},
 | |
| 	"dst_forward": {
 | |
| 		str: o_dst_forward,
 | |
| 		file: o_dst_forward_file,
 | |
| 	},
 | |
| 	"dst_forward_rrst_": {},
 | |
| };
 | |
| 
 | |
| function set_name(suf, af) {
 | |
| 	if (af == 4) {
 | |
| 		return "xr_rules_"+suf;
 | |
| 	} else {
 | |
| 		return "xr_rules6_"+suf;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| function set_elements_parse(res, str, af) {
 | |
| 	for (let addr in split(str, /[ \t\n]/)) {
 | |
| 		addr = trim(addr);
 | |
| 		if (!addr) continue;
 | |
| 		if (af == 4 && index(addr, ":") != -1) continue;
 | |
| 		if (af == 6 && index(addr, ":") == -1) continue;
 | |
| 		push(res, addr);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| function set_elements(suf, af) {
 | |
| 	let obj = set_suffix[suf];
 | |
| 	let res = [];
 | |
| 	let addr;
 | |
| 
 | |
| 	let str = obj["str"];
 | |
| 	if (str) {
 | |
| 		set_elements_parse(res, str, af);
 | |
| 	}
 | |
| 
 | |
| 	let file = obj["file"];
 | |
| 	if (file) {
 | |
| 		let fd = fs.open(file);
 | |
| 		if (fd) {
 | |
| 			str = fd.read("all");
 | |
| 			set_elements_parse(res, str, af);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return res;
 | |
| }
 | |
| %}
 | |
| 
 | |
| {% for (let suf in set_suffix): for (let af in [4, 6]): %}
 | |
| set {{ set_name(suf, af) }} {
 | |
| 	type ipv{{af}}_addr;
 | |
| 	flags interval;
 | |
| 	auto-merge;
 | |
| {%   let elems = set_elements(suf, af); if (length(elems)): %}
 | |
| 	elements = {
 | |
| {%     for (let i = 0; i < length(elems); i++): %}
 | |
| 		{{ elems[i] }}{% if (i < length(elems) - 1): %},{% endif %}{% print("\n") %}
 | |
| {%     endfor %}
 | |
| 	}
 | |
| {%   endif %}
 | |
| }
 | |
| {% endfor; endfor %}
 |