OSDN Git Service

luci-app-unblockneteasemusic: initial fw4 support
[immortalwrt/luci.git] / applications / luci-app-unblockneteasemusic / root / usr / share / unblockneteasemusic / rules / set.uc
1 {%
2
3 let local_addr4 = "
4         0.0.0.0/8
5         10.0.0.0/8
6         100.64.0.0/10
7         127.0.0.0/8
8         169.254.0.0/16
9         172.16.0.0/12
10         192.0.0.0/24
11         192.0.2.0/24
12         192.31.196.0/24
13         192.52.193.0/24
14         192.88.99.0/24
15         192.168.0.0/16
16         192.175.48.0/24
17         198.18.0.0/15
18         198.51.100.0/24
19         203.0.113.0/24
20         224.0.0.0/4
21         240.0.0.0/4
22 ";
23 let local_addr6 = "
24         ::1/128
25         ::/128
26         ::ffff:0:0/96
27         64:ff9b:1::/48
28         100::/64
29         fe80::/10
30         2001::/23
31         fc00::/7
32 ";
33 let o_local_bypass = local_addr4 + " " + local_addr6;
34
35 let set_suffix = {
36         "acl_neteasemusic_http": {
37                 str: o_acl_http_addr,
38         },
39         "acl_neteasemusic_https": {
40                 str: o_acl_https_addr,
41         },
42         "local_addr": {
43                 str: o_local_bypass,
44         },
45         "neteasemusic": {
46                 str: o_neteasemusic_addr,
47         },
48 };
49
50 function set_name(suf, af) {
51         if (af == 4) {
52                 return suf+"_ipv4";
53         } else {
54                 return suf+"_ipv6";
55         }
56 }
57
58 function set_elements_parse(res, str, af) {
59         for (let addr in split(str, /[ \t\n]/)) {
60                 addr = trim(addr);
61                 if (!addr) continue;
62                 if (af == 4 && index(addr, ":") != -1) continue;
63                 if (af == 6 && index(addr, ":") == -1) continue;
64                 push(res, addr);
65         }
66 }
67
68 function set_elements(suf, af) {
69         let obj = set_suffix[suf];
70         let res = [];
71         let addr;
72
73         let str = obj["str"];
74         if (str) {
75                 set_elements_parse(res, str, af);
76         }
77
78         return res;
79 }
80 %}
81
82 {% for (let suf in set_suffix): for (let af in [4, 6]): %}
83 set {{ set_name(suf, af) }} {
84         type ipv{{af}}_addr;
85         flags interval;
86 {%   let elems = set_elements(suf, af); if (length(elems)): %}
87         elements = {
88 {%     for (let i = 0; i < length(elems); i++): %}
89                 {{ elems[i] }}{% if (i < length(elems) - 1): %},{% endif %}{% print("\n") %}
90 {%     endfor %}
91         }
92 {%   endif %}
93 }
94 {% endfor; endfor %}