├── Makefile
├── README.md
├── files
├── bin
│ ├── arm
│ ├── i386
│ ├── mips
│ ├── mipsel
│ └── x86_64
├── etc
│ ├── adblocklist
│ │ ├── adblock
│ │ ├── adblockip
│ │ ├── adbypass
│ │ └── adbypassip
│ ├── config
│ │ └── koolproxy
│ ├── init.d
│ │ └── koolproxy
│ └── uci-defaults
│ │ └── luci-koolproxy
├── lib
│ └── upgrade
│ │ └── keep.d
│ │ └── koolproxy
└── usr
│ ├── lib
│ └── lua
│ │ └── luci
│ │ ├── controller
│ │ └── koolproxy.lua
│ │ ├── i18n
│ │ └── koolproxy.zh-cn.lmo
│ │ ├── model
│ │ └── cbi
│ │ │ └── koolproxy
│ │ │ ├── global.lua
│ │ │ └── rss_rule.lua
│ │ └── view
│ │ └── koolproxy
│ │ ├── cadvalue.htm
│ │ ├── caupload.htm
│ │ ├── dvalue.htm
│ │ └── index.htm
│ ├── sbin
│ └── adblockplus
│ └── share
│ └── koolproxy
│ ├── adblock.conf
│ ├── camanagement
│ ├── data
│ ├── gen_ca.sh
│ ├── openssl.cnf
│ ├── rules
│ │ ├── daily.txt
│ │ ├── koolproxy.txt
│ │ ├── kp.dat
│ │ └── user.txt
│ ├── source.list
│ └── user.txt
│ ├── dnsmasq.adblock
│ ├── koolproxy_ipset.conf
│ └── kpupdate
├── koolproxy.txt
└── koolproxyupdate.sh
/Makefile:
--------------------------------------------------------------------------------
1 | include $(TOPDIR)/rules.mk
2 |
3 | PKG_NAME:=luci-app-koolproxy
4 | PKG_VERSION:=3.8.4
5 | PKG_RELEASE:=4
6 |
7 | PKG_MAINTAINER:=panda-mute
8 | PKG_LICENSE:=GPLv3
9 | PKG_LICENSE_FILES:=LICENSE
10 |
11 | PKG_BUILD_PARALLEL:=1
12 |
13 | RSTRIP:=true
14 |
15 | include $(INCLUDE_DIR)/package.mk
16 |
17 | define Package/luci-app-koolproxy
18 | SECTION:=luci
19 | CATEGORY:=LuCI
20 | SUBMENU:=3. Applications
21 | TITLE:=LuCI support for koolproxy
22 | DEPENDS:=+openssl-util +ipset +dnsmasq-full +@BUSYBOX_CONFIG_DIFF +iptables-mod-nat-extra +wget
23 | MAINTAINER:=panda-mute
24 | endef
25 |
26 | define Package/luci-app-koolproxy/description
27 | This package contains LuCI configuration pages for koolproxy.
28 | endef
29 |
30 | define Build/Compile
31 | endef
32 |
33 | define Package/luci-app-koolproxy/postinst
34 | #!/bin/sh
35 | if [ -z "$${IPKG_INSTROOT}" ]; then
36 | ( . /etc/uci-defaults/luci-koolproxy ) && rm -f /etc/uci-defaults/luci-koolproxy
37 | rm -f /tmp/luci-indexcache
38 | fi
39 | exit 0
40 | endef
41 |
42 | define Package/luci-app-koolproxy/install
43 | $(INSTALL_DIR) $(1)/etc/uci-defaults
44 | $(INSTALL_DIR) $(1)/etc/config
45 | $(INSTALL_DIR) $(1)/etc/adblocklist
46 | $(INSTALL_DIR) $(1)/etc/init.d
47 | $(INSTALL_DIR) $(1)/lib/upgrade/keep.d
48 | $(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n/
49 | $(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller
50 | $(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi/koolproxy
51 | $(INSTALL_DIR) $(1)/usr/lib/lua/luci/view
52 | $(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/koolproxy
53 | $(INSTALL_DIR) $(1)/usr/sbin
54 | $(INSTALL_DIR) $(1)/usr/share/koolproxy
55 | $(INSTALL_DIR) $(1)/usr/share/koolproxy/data
56 | $(INSTALL_DIR) $(1)/usr/share/koolproxy/data/rules/
57 |
58 | $(INSTALL_BIN) ./files/etc/uci-defaults/luci-koolproxy $(1)/etc/uci-defaults/luci-koolproxy
59 | $(INSTALL_BIN) ./files/etc/init.d/* $(1)/etc/init.d/
60 | $(INSTALL_DATA) ./files/etc/config/* $(1)/etc/config/
61 | $(INSTALL_DATA) ./files/etc/adblocklist/* $(1)/etc/adblocklist/
62 | $(INSTALL_DATA) ./files/lib/upgrade/keep.d/koolproxy $(1)/lib/upgrade/keep.d/
63 | $(INSTALL_DATA) ./files/usr/lib/lua/luci/model/cbi/koolproxy/global.lua $(1)/usr/lib/lua/luci/model/cbi/koolproxy/global.lua
64 | $(INSTALL_DATA) ./files/usr/lib/lua/luci/model/cbi/koolproxy/rss_rule.lua $(1)/usr/lib/lua/luci/model/cbi/koolproxy/rss_rule.lua
65 | $(INSTALL_DATA) ./files/usr/lib/lua/luci/controller/koolproxy.lua $(1)/usr/lib/lua/luci/controller/koolproxy.lua
66 | $(INSTALL_DATA) ./files/usr/lib/lua/luci/view/koolproxy/* $(1)/usr/lib/lua/luci/view/koolproxy/
67 | $(INSTALL_DATA) ./files/usr/lib/lua/luci/i18n/koolproxy.zh-cn.lmo $(1)/usr/lib/lua/luci/i18n/koolproxy.zh-cn.lmo
68 | $(INSTALL_BIN) ./files/usr/sbin/* $(1)/usr/sbin/
69 | $(INSTALL_BIN) ./files/usr/share/koolproxy/data/gen_ca.sh $(1)/usr/share/koolproxy/data/
70 | $(INSTALL_DATA) ./files/usr/share/koolproxy/data/openssl.cnf $(1)/usr/share/koolproxy/data/
71 | $(INSTALL_DATA) ./files/usr/share/koolproxy/data/user.txt $(1)/usr/share/koolproxy/data/
72 | $(INSTALL_DATA) ./files/usr/share/koolproxy/data/source.list $(1)/usr/share/koolproxy/data/
73 | $(INSTALL_DATA) ./files/usr/share/koolproxy/data/rules/* $(1)/usr/share/koolproxy/data/rules/
74 | $(INSTALL_BIN) ./files/usr/share/koolproxy/camanagement $(1)/usr/share/koolproxy/camanagement
75 | $(INSTALL_BIN) ./files/usr/share/koolproxy/kpupdate $(1)/usr/share/koolproxy/kpupdate
76 | $(INSTALL_DATA) ./files/usr/share/koolproxy/koolproxy_ipset.conf $(1)/usr/share/koolproxy/koolproxy_ipset.conf
77 | $(INSTALL_DATA) ./files/usr/share/koolproxy/dnsmasq.adblock $(1)/usr/share/koolproxy/dnsmasq.adblock
78 | ifeq ($(ARCH),mipsel)
79 | $(INSTALL_BIN) ./files/bin/mipsel $(1)/usr/share/koolproxy/koolproxy
80 | endif
81 | ifeq ($(ARCH),mips)
82 | $(INSTALL_BIN) ./files/bin/mips $(1)/usr/share/koolproxy/koolproxy
83 | endif
84 | ifeq ($(ARCH),i386)
85 | $(INSTALL_BIN) ./files/bin/i386 $(1)/usr/share/koolproxy/koolproxy
86 | endif
87 | ifeq ($(ARCH),x86_64)
88 | $(INSTALL_BIN) ./files/bin/x86_64 $(1)/usr/share/koolproxy/koolproxy
89 | endif
90 | ifeq ($(ARCH),arm)
91 | $(INSTALL_BIN) ./files/bin/arm $(1)/usr/share/koolproxy/koolproxy
92 | endif
93 | endef
94 |
95 | $(eval $(call BuildPackage,luci-app-koolproxy))
96 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## 声明:
2 | 1. KoolProxy 是一个免费软件,著作权归属 KoolProxy.com,用户可以非商业性地复制和使用 KoolProxy,但禁止将 KoolProxy 用于商业用途。
3 | 2. KoolProxy 可以对 https 网络数据进行识别代理,使用 https 功能的用户需要自己提供相关证书,本程序提供的证书生成脚本仅供用户参考,证书的保密工作由用户自行负责。
4 | 3. 使用本软件的风险由用户自行承担,在适用法律允许的最大范围内,对因使用本产品所产生的损害及风险,包括但不限于直接或间接的个人损害、商业赢利的丧失、贸易中断、商业信息的丢失或任何其它经济损失,KoolProxy.com 不承担任何责任。
5 |
6 | koolproxy更新日志:
7 | http://koolshare.cn/thread-64086-1-1.html
8 |
9 | koolproxy性能测试:
10 | http://koolshare.cn/thread-80772-1-1.html
11 |
12 |
13 | ## 准备工作:
14 |
15 | 先运行:
16 | `opkg install openssl-util ipset dnsmasq-full diffutils iptables-mod-nat-extra wget ca-bundle ca-certificates libustream-openssl`
17 | 手动安装以上依赖包
18 |
19 | 如果以上文字很难复制,请到这里去复制:https://github.com/koolshare/firmware/blob/master/binary/KoolProxy/luci/README.md
20 |
21 | * 如果没有 **openssl** ,就不能正常生成证书,导致https过滤失败!
22 | * 如果没有 **ipset, dnsmasq-full, diffutils**,黑名单模式也会出现问题!(ipset 需要版本6),如果你的固件的busybox带有支持diff支持,那么diffutils包可以不安装
23 | * 如果没有 **iptables-mod-nat-extra** ,会导致mac过滤失效!
24 | * 如果没有 **wget, ca-bundle, ca-certificates, libustream-openssl** ,会导致规则文件更新失败,host规则条数变为0,如果你的固件的busybox带有支持https的wget,那么这几个包可以不安装
25 |
26 |
27 | ## 开始安装:
28 | 请使用cat /proc/cpuinfo查询自己路由器的cpu架构,注意ar系列基本都是mips,mtk的都是mipsel,然后根据自己的cpu架构选择对应的安装方式:
29 | 请使用putty或者其它SSH工具登陆到路由器,然后在联网状态下运行:
30 | mips: opkg install http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_mips.ipk
31 | mipsel: opkg install http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_mipsel.ipk
32 | arm: opkg install http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_arm.ipk
33 | i386: opkg install http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_i386.ipk
34 | x86_64: opkg install http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_x86_64.ipk
35 |
36 | 如果需要中文翻译,还需要运行
37 | opkg install http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-i18n-koolproxy-zh-cn.ipk
38 |
39 | ## 注意事项:
40 | 1. 首次运行koolproxy的时候,保存并提交速度较慢,因为会生成证书。
41 | 2. 使用koolshare论坛fw867发布的LEDE固件的朋友,不建议安装此luci,虽然也能使用(需要卸载掉自带的koolproxy再安装),但是部分代码和原固件集成的有差别,建议使用F大固件的朋友仅仅更新二进制文件即可
42 | 3. 此版本在网件WNDR4300V1(mips) OpenWrt Chaos Calmer 15.05.1上测试通过,其它机型暂时未经过测试,如果遇到问题,请到以下渠道进行反馈:
43 | * QQ群:https://jq.qq.com/?_wv=1027&k=445DYpV
44 | * TG群:https://t.me/joinchat/AAAAAD-tO7GPvfOU131_vg
45 |
46 | ## LUCI更新日志:
47 | 2017年03月31日 17:01, koolproxy 3.3.6
48 |
49 |
50 |
--------------------------------------------------------------------------------
/files/bin/arm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openwrt-develop/luci-app-koolproxy/e888e1ed7c8708410bdf2768fef135130602ae42/files/bin/arm
--------------------------------------------------------------------------------
/files/bin/i386:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openwrt-develop/luci-app-koolproxy/e888e1ed7c8708410bdf2768fef135130602ae42/files/bin/i386
--------------------------------------------------------------------------------
/files/bin/mips:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openwrt-develop/luci-app-koolproxy/e888e1ed7c8708410bdf2768fef135130602ae42/files/bin/mips
--------------------------------------------------------------------------------
/files/bin/mipsel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openwrt-develop/luci-app-koolproxy/e888e1ed7c8708410bdf2768fef135130602ae42/files/bin/mipsel
--------------------------------------------------------------------------------
/files/bin/x86_64:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openwrt-develop/luci-app-koolproxy/e888e1ed7c8708410bdf2768fef135130602ae42/files/bin/x86_64
--------------------------------------------------------------------------------
/files/etc/adblocklist/adblock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openwrt-develop/luci-app-koolproxy/e888e1ed7c8708410bdf2768fef135130602ae42/files/etc/adblocklist/adblock
--------------------------------------------------------------------------------
/files/etc/adblocklist/adblockip:
--------------------------------------------------------------------------------
1 | 61.160.200.252
--------------------------------------------------------------------------------
/files/etc/adblocklist/adbypass:
--------------------------------------------------------------------------------
1 | v2ex.com
2 |
--------------------------------------------------------------------------------
/files/etc/adblocklist/adbypassip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openwrt-develop/luci-app-koolproxy/e888e1ed7c8708410bdf2768fef135130602ae42/files/etc/adblocklist/adbypassip
--------------------------------------------------------------------------------
/files/etc/config/koolproxy:
--------------------------------------------------------------------------------
1 |
2 | config global
3 | option time_update '4'
4 | option koolproxy_port '0'
5 | option startup_delay '5'
6 | option koolproxy_acl_default '0'
7 | option koolproxy_mode '2'
8 | option koolproxy_host '1'
9 | option koolproxy_rules 'kp.dat user.txt'
10 | option enabled '0'
11 |
12 | config rss_rule
13 | option name '乘风广告过滤规则'
14 | option url 'https://raw.githubusercontent.com/xinggsf/Adblock-Plus-Rule/master/ABP-FX.txt'
15 | option file 'ABP-FX.txt'
16 | option load '0'
17 | option time '2019-04-28 20:58'
18 |
19 | config rss_rule
20 | option load '0'
21 | option name 'Fanboy'
22 | option url 'https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/fanboy-annoyance.txt'
23 | option file 'fanboy-annoyance.txt'
24 | option time '2019-08-10 08:32'
25 |
--------------------------------------------------------------------------------
/files/etc/init.d/koolproxy:
--------------------------------------------------------------------------------
1 | #!/bin/sh /etc/rc.common
2 | #
3 | # Copyright (C) 2015 OpenWrt-dist
4 | # Copyright (C) 2016 fw867
5 | #
6 | # This is free software, licensed under the GNU General Public License v3.
7 | # See /LICENSE for more information.
8 | #
9 |
10 | START=99
11 | USE_PROCD=1
12 |
13 | CONFIG=koolproxy
14 | KP_DIR=/usr/share/koolproxy
15 | TMP_DIR=/tmp
16 |
17 | alias echo_date='echo $(date +%Y年%m月%d日\ %X):'
18 |
19 | config_n_get() {
20 | local ret=$(uci get $CONFIG.$1.$2 2>/dev/null)
21 | echo ${ret:=$3}
22 | }
23 |
24 | config_t_get() {
25 | local index=0
26 | [ -n "$4" ] && index=$4
27 | local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
28 | echo ${ret:=$3}
29 | }
30 |
31 | add_ipset_conf() {
32 | if [ -s /etc/adblocklist/adbypass ]; then
33 | echo_date 添加白名单软连接...
34 | cat /etc/adblocklist/adbypass | sed "s/,/\n/g" | sed "s/^/ipset=&\/./g" | sed "s/$/\/white_kp_list/g" >> /tmp/adbypass.conf
35 | rm -rf /tmp/dnsmasq.d/adbypass.conf
36 | ln -sf /tmp/adbypass.conf /tmp/dnsmasq.d/adbypass.conf
37 |
38 | dnsmasq_restart=1
39 | fi
40 |
41 | if [ "$koolproxy_mode" == "2" ]; then
42 | if [ "$koolproxy_host" == "1" ];then
43 | echo_date 添加Adblock Plus Host软连接...
44 | ln -sf $KP_DIR/dnsmasq.adblock /tmp/dnsmasq.d/dnsmasq.adblock
45 | fi
46 |
47 | echo_date 添加黑名单软连接...
48 | rm -rf /tmp/dnsmasq.d/koolproxy_ipset.conf
49 | ln -sf $KP_DIR/koolproxy_ipset.conf /tmp/dnsmasq.d/koolproxy_ipset.conf
50 |
51 | echo_date 添加自定义黑名单软连接...
52 | if [ -s /etc/adblocklist/adblock ]; then
53 | cat /etc/adblocklist/adblock | sed "s/,/\n/g" | sed "s/^/ipset=&\/./g" | sed "s/$/\/black_koolproxy/g" >> /tmp/adblock.conf
54 | rm -rf /tmp/dnsmasq.d/adblock.conf
55 | ln -sf /tmp/adblock.conf /tmp/dnsmasq.d/adblock.conf
56 | fi
57 |
58 | dnsmasq_restart=1
59 | fi
60 | }
61 |
62 | remove_ipset_conf() {
63 | if [ -L "/tmp/dnsmasq.d/adbypass.conf" ]; then
64 | echo_date 移除白名单软连接...
65 | rm -rf /tmp/adbypass.conf
66 | rm -rf /tmp/dnsmasq.d/adbypass.conf
67 | dnsmasq_restart=1
68 | fi
69 |
70 | if [ -L "/tmp/dnsmasq.d/koolproxy_ipset.conf" ]; then
71 | echo_date 移除黑名单软连接...
72 | rm -rf /tmp/dnsmasq.d/koolproxy_ipset.conf
73 | dnsmasq_restart=1
74 | fi
75 |
76 | if [ -L "/tmp/dnsmasq.d/adblock.conf" ]; then
77 | echo_date 移除自定义黑名单软连接...
78 | rm -rf /tmp/dnsmasq.d/adblock.conf
79 | rm -rf /tmp/adblock.conf
80 | dnsmasq_restart=1
81 | fi
82 |
83 | if [ -L "/tmp/dnsmasq.d/dnsmasq.adblock" ]; then
84 | echo_date 移除Adblock Plus Host软连接...
85 | rm -rf /tmp/dnsmasq.d/dnsmasq.adblock
86 | dnsmasq_restart=1
87 | fi
88 | }
89 |
90 |
91 | restart_dnsmasq() {
92 | if [ "$dnsmasq_restart" == "1" ]; then
93 | echo_date 重启dnsmasq进程...
94 | /etc/init.d/dnsmasq restart > /dev/null 2>&1
95 | fi
96 | }
97 |
98 | creat_ipset() {
99 | echo_date 创建ipset名单
100 | # Load ipset netfilter kernel modules and kernel modules
101 | ipset -! create white_kp_list nethash
102 | ipset -! create black_koolproxy iphash
103 | cat $KP_DIR/data/rules/koolproxy.txt $KP_DIR/data/rules/daily.txt $KP_DIR/data/rules/user.txt | grep -Eo "(.\w+\:[1-9][0-9]{1,4})/" | grep -Eo "([0-9]{1,5})" | sort -un | sed -e '$a\80' -e '$a\443' | sed -e "s/^/-A kp_full_port &/g" -e "1 i\-N kp_full_port bitmap:port range 0-65535 " | ipset -R -!
104 | }
105 |
106 | add_white_black_ip() {
107 | echo_date 添加ipset名单
108 | ip_lan="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.168.0.0/16 224.0.0.0/4 240.0.0.0/4"
109 | for ip in $ip_lan
110 | do
111 | ipset -A white_kp_list $ip >/dev/null 2>&1
112 |
113 | done
114 | sed -e "s/^/add white_kp_list &/g" /etc/adblocklist/adbypassip | awk '{print $0} END{print "COMMIT"}' | ipset -R 2>/dev/null
115 | ipset -A black_koolproxy 110.110.110.110 >/dev/null 2>&1
116 | sed -e "s/^/add black_koolproxy &/g" /etc/adblocklist/adblockip | awk '{print $0} END{print "COMMIT"}' | ipset -R 2>/dev/null
117 | }
118 |
119 | load_config() {
120 | ENABLED=$(config_t_get global enabled 0)
121 | [ $ENABLED -ne 1 ] && return 0
122 | koolproxy_mode=$(config_t_get global koolproxy_mode 1)
123 | koolproxy_host=$(config_t_get global koolproxy_host 0)
124 | koolproxy_acl_default=$(config_t_get global koolproxy_acl_default 1)
125 | koolproxy_port=$(config_t_get global koolproxy_port 0)
126 | koolproxy_bp_port=$(config_t_get global koolproxy_bp_port)
127 | config_load $CONFIG
128 | return 1
129 | }
130 |
131 | __load_lan_acl() {
132 | local mac
133 | local ipaddr
134 | local proxy_mode
135 | config_get mac $1 mac
136 | config_get ipaddr $1 ipaddr
137 | config_get proxy_mode $1 proxy_mode
138 | [ -n "$ipaddr" ] && [ -z "$mac" ] && echo_date 加载ACL规则:【$ipaddr】模式为:$(get_mode_name $proxy_mode)
139 | [ -z "$ipaddr" ] && [ -n "$mac" ] && echo_date 加载ACL规则:【$mac】模式为:$(get_mode_name $proxy_mode)
140 | [ -n "$ipaddr" ] && [ -n "$mac" ] && echo_date 加载ACL规则:【$ipaddr】【$mac】模式为:$(get_mode_name $proxy_mode)
141 | #echo iptables -t nat -A KOOLPROXY $(factor $ipaddr "-s") $(factor $mac "-m mac --mac-source") -p tcp $(get_jump_mode $proxy_mode) $(get_action_chain $proxy_mode)
142 | iptables -t nat -A KOOLPROXY $(factor $ipaddr "-s") $(factor $mac "-m mac --mac-source") -p tcp $(get_jump_mode $proxy_mode) $(get_action_chain $proxy_mode)
143 |
144 | acl_nu=`expr $acl_nu + 1`
145 | }
146 |
147 | lan_acess_control() {
148 | acl_nu=0
149 | [ -z "$koolproxy_acl_default" ] && koolproxy_acl_default=1
150 | config_foreach __load_lan_acl acl_rule
151 | if [ $acl_nu -ne 0 ]; then
152 | echo_date 加载ACL规则:其余主机模式为:$(get_mode_name $koolproxy_acl_default)
153 | else
154 | echo_date 加载ACL规则:所有模式为:$(get_mode_name $koolproxy_acl_default)
155 | fi
156 | }
157 |
158 | __load_exrule() {
159 | local file
160 | local exrule
161 | local enable
162 | config_get file $1 file
163 | config_get exrule $1 url
164 | config_get enable $1 load
165 | if [ -n "$exrule" ]; then
166 | if [ $enable -ne 1 ]; then
167 | [ -n "$file" ] && [ -f $KP_DIR/data/rules/$file ] && rm -f $KP_DIR/data/rules/$file
168 | uci set koolproxy.$1.time=""
169 | uci commit koolproxy
170 | return
171 | fi
172 |
173 | if [ -z "$file" ]; then
174 | file=$(echo $exrule |awk -F "/" '{print $NF}')
175 | uci set koolproxy.$1.file="$file"
176 | uci commit koolproxy
177 | fi
178 |
179 | if [ ! -f $KP_DIR/data/rules/$file ]; then
180 | wget-ssl --quiet --timeout=5 --no-check-certificate $exrule -O $TMP_DIR/$file
181 | if [ "$?" == "0" ]; then
182 | uci set koolproxy.$1.time="`date +%Y-%m-%d" "%H:%M`"
183 | uci commit koolproxy
184 | mv $TMP_DIR/$file $KP_DIR/data/rules/$file
185 | else
186 | echo "koolproxy download rule $file failed!"
187 | [ -f $TMP_DIR/$file ] && rm -f $TMP_DIR/$file
188 | fi
189 | fi
190 | cat $KP_DIR/data/rules/$file >>$KP_DIR/data/rules/user.txt
191 | fi
192 | }
193 |
194 | load_user_rules() {
195 | cp $KP_DIR/data/user.txt $KP_DIR/data/rules/user.txt
196 | config_foreach __load_exrule rss_rule
197 | }
198 |
199 | load_rules() {
200 | sed -i '1,7s/1/0/g' $KP_DIR/data/source.list
201 |
202 | local rulelist="$(uci -q get koolproxy.@global[0].koolproxy_rules)"
203 | for rule in $rulelist
204 | do
205 | case "$rule" in
206 | koolproxy.txt)
207 | sed -i '1s/0/1/g' $KP_DIR/data/source.list
208 | ;;
209 | daily.txt)
210 | sed -i '2s/0/1/g' $KP_DIR/data/source.list
211 | ;;
212 | kp.dat)
213 | sed -i '3s/0/1/g' $KP_DIR/data/source.list
214 | ;;
215 | user.txt)
216 | sed -i '4s/0/1/g' $KP_DIR/data/source.list
217 | ;;
218 | esac
219 | done
220 |
221 | local rulelist="$(uci -q get koolproxy.@global[0].thirdparty_rules)"
222 | for rule in $rulelist
223 | do
224 | case "$rule" in
225 | easylistchina.txt)
226 | sed -i '5s/0/1/g' $KP_DIR/data/source.list
227 | ;;
228 | chengfeng.txt)
229 | sed -i '6s/0/1/g' $KP_DIR/data/source.list
230 | ;;
231 | fanboy.txt)
232 | sed -i '7s/0/1/g' $KP_DIR/data/source.list
233 | ;;
234 | esac
235 | done
236 | }
237 |
238 | get_mode_name() {
239 | case "$1" in
240 | 0)
241 | echo "不过滤"
242 | ;;
243 | 1)
244 | echo "http模式"
245 | ;;
246 | 2)
247 | echo "http + https"
248 | ;;
249 | 3)
250 | echo "full port"
251 | ;;
252 | esac
253 | }
254 |
255 | get_jump_mode() {
256 | case "$1" in
257 | 0)
258 | echo "-j"
259 | ;;
260 | *)
261 | echo "-g"
262 | ;;
263 | esac
264 | }
265 |
266 | get_action_chain() {
267 | case "$1" in
268 | 0)
269 | echo "RETURN"
270 | ;;
271 | 1)
272 | echo "KP_HTTP"
273 | ;;
274 | 2)
275 | echo "KP_HTTPS"
276 | ;;
277 | 3)
278 | echo "KP_ALL_PORT"
279 | ;;
280 | esac
281 | }
282 |
283 | factor() {
284 | if [ -z "$1" ] || [ -z "$2" ]; then
285 | echo ""
286 | else
287 | echo "$2 $1"
288 | fi
289 | }
290 |
291 | load_nat() {
292 | echo_date 加载nat规则!
293 | #----------------------BASIC RULES---------------------
294 | echo_date 写入iptables规则到nat表中...
295 | # 创建KOOLPROXY nat rule
296 | iptables -t nat -N KOOLPROXY
297 | # 局域网地址不走KP
298 | iptables -t nat -A KOOLPROXY -m set --match-set white_kp_list dst -j RETURN
299 | # 生成对应CHAIN
300 | iptables -t nat -N KP_HTTP
301 | iptables -t nat -A KP_HTTP -p tcp -m multiport --dport 80 -j REDIRECT --to-ports 3000
302 | iptables -t nat -N KP_HTTPS
303 | iptables -t nat -A KP_HTTPS -p tcp -m multiport --dport 80,443 -j REDIRECT --to-ports 3000
304 | iptables -t nat -N KP_ALL_PORT
305 | #iptables -t nat -A KP_ALL_PORT -p tcp -j REDIRECT --to-ports 3000
306 | # 端口控制
307 | if [ "$koolproxy_port" == "1" ]; then
308 | echo_date 开启端口控制:【$koolproxy_bp_port】
309 | if [ -n "$koolproxy_bp_port" ]; then
310 | iptables -t nat -A KP_ALL_PORT -p tcp -m multiport ! --dport $koolproxy_bp_port -m set --match-set kp_full_port dst -j REDIRECT --to-ports 3000
311 | else
312 | iptables -t nat -A KP_ALL_PORT -p tcp -m set --match-set kp_full_port dst -j REDIRECT --to-ports 3000
313 | fi
314 | else
315 | iptables -t nat -A KP_ALL_PORT -p tcp -m set --match-set kp_full_port dst -j REDIRECT --to-ports 3000
316 | fi
317 | # 局域网控制
318 | lan_acess_control
319 | # 剩余流量转发到缺省规则定义的链中
320 | iptables -t nat -A KOOLPROXY -p tcp -j $(get_action_chain $koolproxy_acl_default)
321 | # 重定所有流量到 KOOLPROXY
322 | # 全局模式和视频模式
323 | [ "$koolproxy_mode" == "1" ] || [ "$koolproxy_mode" == "3" ] && iptables -t nat -I PREROUTING 1 -p tcp -j KOOLPROXY
324 | # ipset 黑名单模式
325 | [ "$koolproxy_mode" == "2" ] && iptables -t nat -I PREROUTING 1 -p tcp -m set --match-set black_koolproxy dst -j KOOLPROXY
326 | }
327 |
328 | add_cru() {
329 | time=$(config_t_get global time_update)
330 | wirtecron=$(cat /etc/crontabs/root | grep "00 $time * * *" | grep kpupdate)
331 | if [ -z "$wirtecron" ];then
332 | sed -i '/kpupdate/d' /etc/crontabs/root >/dev/null 2>&1
333 | echo "0 $time * * * /usr/share/koolproxy/kpupdate" >> /etc/crontabs/root
334 | fi
335 | }
336 |
337 | del_cru() {
338 | sed -i '/kpupdate/d' /etc/crontabs/root >/dev/null 2>&1
339 | }
340 |
341 | detect_cert(){
342 | if [ ! -f $KP_DIR/data/private/ca.key.pem -o ! -f $KP_DIR/data/cert/ca.crt ]; then
343 | echo_date 开始生成koolproxy证书,用于https过滤!
344 | cd $KP_DIR/data && sh gen_ca.sh
345 | fi
346 | }
347 |
348 | flush_nat() {
349 | echo_date 移除nat规则...
350 | cd $TMP_DIR
351 | iptables -t nat -S | grep -E "KOOLPROXY|KP_HTTP|KP_HTTPS|KP_ALL_PORT" | sed 's/-A/iptables -t nat -D/g'|sed 1,4d > clean.sh && chmod 777 clean.sh && ./clean.sh
352 | [ -f $TMP_DIR/clean.sh ] && rm -f $TMP_DIR/clean.sh
353 | iptables -t nat -X KOOLPROXY > /dev/null 2>&1
354 | iptables -t nat -X KP_HTTP > /dev/null 2>&1
355 | iptables -t nat -X KP_HTTPS > /dev/null 2>&1
356 | iptables -t nat -X KP_ALL_PORT > /dev/null 2>&1
357 | ipset -F black_koolproxy > /dev/null 2>&1 && ipset -X black_koolproxy > /dev/null 2>&1
358 | ipset -F white_kp_list > /dev/null 2>&1 && ipset -X white_kp_list > /dev/null 2>&1
359 | }
360 |
361 | export_ipt_rules() {
362 | FWI=$(uci get firewall.koolproxy.path 2>/dev/null)
363 | [ -n "$FWI" ] || return 0
364 | cat <<-CAT >>$FWI
365 | iptables-save -c | grep -v -E "KOOLPROXY|KP" | iptables-restore -c
366 | iptables-restore -n <<-EOF
367 | $(iptables-save | grep -E "KOOLPROXY|KP|^\*|^COMMIT" |\
368 | sed -e "s/^-A \(PREROUTING\)/-I \1 1/")
369 | EOF
370 | CAT
371 | return $?
372 | }
373 |
374 | flush_ipt_rules() {
375 | FWI=$(uci get firewall.koolproxy.path 2>/dev/null)
376 | [ -n "$FWI" ] && echo '# firewall include file' >$FWI
377 | return 0
378 | }
379 |
380 | pre_start() {
381 | load_config
382 | [ $? -ne 1 ] && return 0
383 | iptables -t nat -C PREROUTING -p tcp -j KOOLPROXY 2>/dev/null && [ $? -eq 0 ] && return 0;
384 | detect_cert
385 | load_rules
386 | load_user_rules
387 | add_ipset_conf && restart_dnsmasq
388 | creat_ipset
389 | add_white_black_ip
390 | load_nat
391 | flush_ipt_rules && export_ipt_rules
392 | add_cru
393 | [ "$koolproxy_mode" == "1" ] && echo_date 选择【全局过滤模式】
394 | [ "$koolproxy_mode" == "2" ] && echo_date 选择【IPSET过滤模式】
395 | if [ "$koolproxy_mode" == "3" ]; then
396 | echo_date 选择【视频过滤模式】
397 | sed -i '1s/1/0/g;2s/1/0/g' $KP_DIR/data/source.list
398 | fi
399 | return 1
400 | }
401 |
402 | post_stop() {
403 | load_config
404 | [ $? -ne 1 ] && NO_RESTART_DNSMASQ=false
405 | if [ $NO_RESTART_DNSMASQ ]; then
406 | remove_ipset_conf
407 | else
408 | remove_ipset_conf && restart_dnsmasq
409 | fi
410 | flush_ipt_rules
411 | flush_nat
412 | del_cru
413 | return 0
414 | }
415 |
416 | start_service() {
417 | echo_date ================== koolproxy启用 ================
418 | pre_start
419 | [ $? -ne 1 ] && return 0
420 |
421 | procd_open_instance
422 | procd_set_param command /usr/share/koolproxy/koolproxy
423 | procd_append_param command --mark
424 | procd_append_param command --ttl 160
425 |
426 | procd_set_param respawn
427 |
428 | procd_set_param file /etc/adblocklist/adblock
429 | procd_set_param file /etc/adblocklist/adblockip
430 | procd_set_param file /usr/share/koolproxy/data/user.txt
431 | procd_set_param stdout 1
432 | procd_set_param stderr 1
433 | procd_close_instance
434 |
435 | logger "koolproxy has started."
436 | echo_date =================================================
437 | }
438 |
439 | stop_service() {
440 | echo_date ====================== 关闭 =====================
441 | post_stop
442 | logger "koolproxy has stopped."
443 | echo_date =================================================
444 | }
445 |
446 | reload_service() {
447 | logger "koolproxy reload service."
448 | NO_RESTART_DNSMASQ=true
449 | stop
450 | start
451 | }
452 |
453 | service_triggers() {
454 | procd_add_reload_trigger "koolproxy"
455 | }
456 |
457 | restart() {
458 | logger "koolproxy restart service."
459 | NO_RESTART_DNSMASQ=true
460 | stop
461 | start
462 | }
463 |
464 | boot() {
465 | local delay=$(config_t_get global startup_delay 0)
466 | (sleep $delay && start >/dev/null 2>&1) &
467 | return 0
468 | }
469 |
--------------------------------------------------------------------------------
/files/etc/uci-defaults/luci-koolproxy:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | uci -q batch <<-EOF >/dev/null
4 | delete ucitrack.@koolproxy[-1]
5 | add ucitrack koolproxy
6 | set ucitrack.@koolproxy[-1].init=koolproxy
7 | commit ucitrack
8 | delete firewall.koolproxy
9 | set firewall.koolproxy=include
10 | set firewall.koolproxy.type=script
11 | set firewall.koolproxy.path=/var/etc/koolproxy.include
12 | set firewall.koolproxy.reload=1
13 | commit firewall
14 | EOF
15 |
16 | rm -f /tmp/luci-indexcache
17 | exit 0
18 |
--------------------------------------------------------------------------------
/files/lib/upgrade/keep.d/koolproxy:
--------------------------------------------------------------------------------
1 | /usr/share/koolproxy/data/certs/ca.crt
2 | /usr/share/koolproxy/data/private/base.key.pem
3 | /usr/share/koolproxy/data/private/ca.key.pem
4 |
--------------------------------------------------------------------------------
/files/usr/lib/lua/luci/controller/koolproxy.lua:
--------------------------------------------------------------------------------
1 | module("luci.controller.koolproxy",package.seeall)
2 | function index()
3 | if not nixio.fs.access("/etc/config/koolproxy")then
4 | return
5 | end
6 | entry({"admin","services","koolproxy"},cbi("koolproxy/global"),_("KoolProxy"),1).dependent=true
7 | entry({"admin","services","koolproxy","rss_rule"},cbi("koolproxy/rss_rule"), nil).leaf=true
8 | end
9 |
--------------------------------------------------------------------------------
/files/usr/lib/lua/luci/i18n/koolproxy.zh-cn.lmo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openwrt-develop/luci-app-koolproxy/e888e1ed7c8708410bdf2768fef135130602ae42/files/usr/lib/lua/luci/i18n/koolproxy.zh-cn.lmo
--------------------------------------------------------------------------------
/files/usr/lib/lua/luci/model/cbi/koolproxy/global.lua:
--------------------------------------------------------------------------------
1 | local fs = require "nixio.fs"
2 | local sys = require "luci.sys"
3 | local http = require "luci.http"
4 |
5 | local o,t,e
6 | local v=luci.sys.exec("/usr/share/koolproxy/koolproxy -v")
7 | local s=luci.sys.exec("head -3 /usr/share/koolproxy/data/rules/koolproxy.txt | grep rules | awk -F' ' '{print $3,$4}'")
8 | local u=luci.sys.exec("head -4 /usr/share/koolproxy/data/rules/koolproxy.txt | grep video | awk -F' ' '{print $3,$4}'")
9 | local p=luci.sys.exec("head -3 /usr/share/koolproxy/data/rules/daily.txt | grep rules | awk -F' ' '{print $3,$4}'")
10 | local l=luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/koolproxy.txt | wc -l")
11 | local q=luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/daily.txt | wc -l")
12 | local h=luci.sys.exec("grep -v '^!' /usr/share/koolproxy/data/rules/user.txt | wc -l")
13 | local i=luci.sys.exec("cat /usr/share/koolproxy/dnsmasq.adblock | wc -l")
14 |
15 | if luci.sys.call("pidof koolproxy >/dev/null") == 0 then
16 | status = translate("KoolProxy is Running ")
17 | else
18 | status = translate("KoolProxy is Not Running ")
19 | end
20 |
21 | o = Map("koolproxy", translate("KoolProxy"), translate("A powerful advertisement blocker. Adblock Plus Host list + koolproxy Blacklist mode runs without loss of bandwidth due to performance issues. "))
22 |
23 | t = o:section(TypedSection, "global")
24 | t.anonymous = true
25 | t.description = translate(string.format("%s ", status))
26 |
27 | t:tab("base",translate("Basic Settings"))
28 |
29 | e = t:taboption("base", Flag, "enabled", translate("Enable"))
30 | e.default = 0
31 | e.rmempty = false
32 |
33 | e = t:taboption("base", DummyValue, "koolproxy_status", translate("程序版本"))
34 | e.value = string.format("[ %s ]", v)
35 |
36 | e = t:taboption("base", Value, "startup_delay", translate("Startup Delay"))
37 | e:value(0, translate("Not enabled"))
38 | for _, v in ipairs({5, 10, 15, 25, 40}) do
39 | e:value(v, translate("%u seconds") %{v})
40 | end
41 | e.datatype = "uinteger"
42 | e.default = 0
43 | e.rmempty = false
44 |
45 | e = t:taboption("base", ListValue, "koolproxy_mode", translate("Filter Mode"))
46 | e.default = 1
47 | e.rmempty = false
48 | e:value(1, translate("全局模式"))
49 | e:value(2, translate("IPSET模式"))
50 | e:value(3, translate("视频模式"))
51 |
52 | e = t:taboption("base", MultiValue, "koolproxy_rules", translate("内置规则"))
53 | e.optional = false
54 | e.rmempty = false
55 | e:value("koolproxy.txt", translate("静态规则"))
56 | e:value("daily.txt", translate("每日规则"))
57 | e:value("kp.dat", translate("视频规则"))
58 | e:value("user.txt", translate("自定义规则"))
59 |
60 | e = t:taboption("base", ListValue, "koolproxy_port", translate("端口控制"))
61 | e.default = 0
62 | e.rmempty = false
63 | e:value(0, translate("关闭"))
64 | e:value(1, translate("开启"))
65 |
66 | e = t:taboption("base", Value, "koolproxy_bp_port", translate("例外端口"))
67 | e:depends("koolproxy_port", "1")
68 | e.rmempty = false
69 | e.description = translate(string.format("单端口:80 多端口:80,443 "))
70 |
71 | e=t:taboption("base",Flag,"koolproxy_host",translate("开启Adblock Plus Host"))
72 | e.default=0
73 | e:depends("koolproxy_mode","2")
74 |
75 |
76 | e = t:taboption("base", ListValue, "koolproxy_acl_default", translate("默认访问控制"))
77 | e.default = 1
78 | e.rmempty = false
79 | e:value(0, translate("不过滤"))
80 | e:value(1, translate("http only"))
81 | e:value(2, translate("http + https"))
82 | e:value(3, translate("full port"))
83 | e.description = translate(string.format("访问控制设置中其他主机的默认规则 "))
84 |
85 | e = t:taboption("base", ListValue, "time_update", translate("定时更新"))
86 | for t = 0,23 do
87 | e:value(t,translate("每天"..t.."点"))
88 | end
89 | e.default = 0
90 | e.rmempty = false
91 | e.description = translate(string.format("定时更新订阅规则与Adblock Plus Host "))
92 |
93 | e = t:taboption("base", Button, "restart", translate("规则状态"))
94 | e.inputtitle = translate("更新规则")
95 | e.inputstyle = "reload"
96 | e.write = function()
97 | luci.sys.call("/usr/share/koolproxy/kpupdate 2>&1 >/dev/null")
98 | luci.http.redirect(luci.dispatcher.build_url("admin","services","koolproxy"))
99 | end
100 | e.description = translate(string.format("更新订阅规则与Adblock Plus Host 静态规则: %s / %s条 视频规则: %s 每日规则: %s / %s条 自定义规则: %s条 Host: %s条 ", s, l, u, p, q, h, i))
101 | t:tab("cert",translate("Certificate Management"))
102 |
103 | e=t:taboption("cert",DummyValue,"c1status",translate("Certificate Restore
"))
104 | e=t:taboption("cert",FileUpload,"")
105 | e.template="koolproxy/caupload"
106 | e=t:taboption("cert",DummyValue,"",nil)
107 | e.template="koolproxy/cadvalue"
108 | if nixio.fs.access("/usr/share/koolproxy/data/certs/ca.crt")then
109 | e=t:taboption("cert",DummyValue,"c2status",translate("Certificate Backup
"))
110 | e=t:taboption("cert",Button,"certificate")
111 | e.inputtitle=translate("Backup Download")
112 | e.inputstyle="reload"
113 | e.write=function()
114 | luci.sys.call("/usr/share/koolproxy/camanagement backup 2>&1 >/dev/null")
115 | Download()
116 | luci.http.redirect(luci.dispatcher.build_url("admin","services","koolproxy"))
117 | end
118 | end
119 |
120 | t:tab("white_weblist",translate("网站白名单设置"))
121 |
122 | local i = "/etc/adblocklist/adbypass"
123 | e = t:taboption("white_weblist", TextValue, "adbypass_domain")
124 | e.description = translate("These had been joined websites will not usefilter.Please input the domain names of websites,every line can input only one website domain.For example,google.com.")
125 | e.rows = 28
126 | e.wrap = "off"
127 | e.rmempty = false
128 |
129 | function e.cfgvalue()
130 | return fs.readfile(i) or ""
131 | end
132 |
133 | function e.write(self, section, value)
134 | if value then
135 | value = value:gsub("\r\n", "\n")
136 | else
137 | value = ""
138 | end
139 | fs.writefile("/tmp/adbypass", value)
140 | if (luci.sys.call("cmp -s /tmp/adbypass /etc/adblocklist/adbypass") == 1) then
141 | fs.writefile(i, value)
142 | end
143 | fs.remove("/tmp/adbypass")
144 | end
145 |
146 | t:tab("weblist",translate("Set Backlist Of Websites"))
147 |
148 | local i = "/etc/adblocklist/adblock"
149 | e = t:taboption("weblist", TextValue, "adblock_domain")
150 | e.description = translate("These had been joined websites will use filter,but only blacklist model.Please input the domain names of websites,every line can input only one website domain.For example,google.com.")
151 | e.rows = 28
152 | e.wrap = "off"
153 | e.rmempty = false
154 |
155 | function e.cfgvalue()
156 | return fs.readfile(i) or ""
157 | end
158 |
159 | function e.write(self, section, value)
160 | if value then
161 | value = value:gsub("\r\n", "\n")
162 | else
163 | value = ""
164 | end
165 | fs.writefile("/tmp/adblock", value)
166 | if (luci.sys.call("cmp -s /tmp/adblock /etc/adblocklist/adblock") == 1) then
167 | fs.writefile(i, value)
168 | end
169 | fs.remove("/tmp/adblock")
170 | end
171 |
172 | t:tab("white_iplist",translate("IP白名单设置"))
173 |
174 | local i = "/etc/adblocklist/adbypassip"
175 | e = t:taboption("white_iplist", TextValue, "adbypass_ip")
176 | e.description = translate("These had been joined ip addresses will use proxy, but only GFW model.Please input the ip address or ip address segment,every line can input only one ip address.For example,112.123.134.145/24 or 112.123.134.145.")
177 | e.rows = 28
178 | e.wrap = "off"
179 | e.rmempty = false
180 |
181 | function e.cfgvalue()
182 | return fs.readfile(i) or ""
183 | end
184 |
185 | function e.write(self, section, value)
186 | if value then
187 | value = value:gsub("\r\n", "\n")
188 | else
189 | value = ""
190 | end
191 | fs.writefile("/tmp/adbypassip", value)
192 | if (luci.sys.call("cmp -s /tmp/adbypassip /etc/adblocklist/adbypassip") == 1) then
193 | fs.writefile(i, value)
194 | end
195 | fs.remove("/tmp/adbypassip")
196 | end
197 |
198 | t:tab("iplist",translate("IP黑名单设置"))
199 |
200 | local i = "/etc/adblocklist/adblockip"
201 | e = t:taboption("iplist", TextValue, "adblock_ip")
202 | e.description = translate("These had been joined ip addresses will not use filter.Please input the ip address or ip address segment,every line can input only one ip address.For example,112.123.134.145/24 or 112.123.134.145.")
203 | e.rows = 28
204 | e.wrap = "off"
205 | e.rmempty = false
206 |
207 | function e.cfgvalue()
208 | return fs.readfile(i) or ""
209 | end
210 |
211 | function e.write(self, section, value)
212 | if value then
213 | value = value:gsub("\r\n", "\n")
214 | else
215 | value = ""
216 | end
217 | fs.writefile("/tmp/adblockip", value)
218 | if (luci.sys.call("cmp -s /tmp/adblockip /etc/adblocklist/adblockip") == 1) then
219 | fs.writefile(i, value)
220 | end
221 | fs.remove("/tmp/adblockip")
222 | end
223 |
224 | t:tab("customlist", translate("Set Backlist Of custom"))
225 |
226 | local i = "/usr/share/koolproxy/data/user.txt"
227 | e = t:taboption("customlist", TextValue, "user_rule")
228 | e.description = translate("Enter your custom rules, each row.")
229 | e.rows = 28
230 | e.wrap = "off"
231 | e.rmempty = false
232 |
233 | function e.cfgvalue()
234 | return fs.readfile(i) or ""
235 | end
236 |
237 | function e.write(self, section, value)
238 | if value then
239 | value = value:gsub("\r\n", "\n")
240 | else
241 | value = ""
242 | end
243 | fs.writefile("/tmp/user.txt", value)
244 | if (luci.sys.call("cmp -s /tmp/user.txt /usr/share/koolproxy/data/user.txt") == 1) then
245 | fs.writefile(i, value)
246 | end
247 | fs.remove("/tmp/user.txt")
248 | end
249 |
250 | t:tab("logs",translate("View the logs"))
251 |
252 | local i = "/var/log/koolproxy.log"
253 | e = t:taboption("logs", TextValue, "kpupdate_log")
254 | e.description = translate("Koolproxy Logs")
255 | e.rows = 28
256 | e.wrap = "off"
257 | e.rmempty = false
258 |
259 | function e.cfgvalue()
260 | return fs.readfile(i) or ""
261 | end
262 |
263 | function e.write(self, section, value)
264 | end
265 |
266 | t=o:section(TypedSection,"acl_rule",translate("KoolProxy 访问控制"),
267 | translate("ACLs is a tools which used to designate specific IP filter mode,The MAC addresses added to the list will be filtered using https"))
268 | t.template="cbi/tblsection"
269 | t.sortable=true
270 | t.anonymous=true
271 | t.addremove=true
272 | e=t:option(Value,"remarks",translate("Client Remarks"))
273 | e.width="30%"
274 | e.rmempty=true
275 | e=t:option(Value,"ipaddr",translate("IP Address"))
276 | e.width="20%"
277 | e.datatype="ip4addr"
278 | luci.ip.neighbors({family = 4}, function(neighbor)
279 | if neighbor.reachable then
280 | e:value(neighbor.dest:string(), "%s (%s)" %{neighbor.dest:string(), neighbor.mac})
281 | end
282 | end)
283 | e=t:option(Value,"mac",translate("MAC Address"))
284 | e.width="20%"
285 | e.rmempty=true
286 | e.datatype="macaddr"
287 | luci.ip.neighbors({family = 4}, function(neighbor)
288 | if neighbor.reachable then
289 | e:value(neighbor.mac, "%s (%s)" %{neighbor.mac, neighbor.dest:string()})
290 | end
291 | end)
292 | e=t:option(ListValue,"proxy_mode",translate("访问控制"))
293 | e.width="20%"
294 | e.default=1
295 | e.rmempty=false
296 | e:value(0,translate("不过滤"))
297 | e:value(1,translate("http only"))
298 | e:value(2,translate("http + https"))
299 | e:value(3,translate("full port"))
300 |
301 | t=o:section(TypedSection,"rss_rule",translate("KoolProxy 规则订阅"), translate("请确保订阅规则的兼容性"))
302 | t.anonymous=true
303 | t.addremove=true
304 | t.sortable=true
305 | t.template="cbi/tblsection"
306 | t.extedit=luci.dispatcher.build_url("admin/services/koolproxy/rss_rule/%s")
307 |
308 | t.create=function(...)
309 | local sid=TypedSection.create(...)
310 | if sid then
311 | luci.http.redirect(t.extedit % sid)
312 | return
313 | end
314 | end
315 |
316 | e=t:option(Flag,"load",translate("启用"))
317 | e.default=0
318 | e.rmempty=false
319 |
320 | e=t:option(DummyValue,"name",translate("规则名称"))
321 | function e.cfgvalue(...)
322 | return Value.cfgvalue(...) or translate("None")
323 | end
324 |
325 | e=t:option(DummyValue,"url",translate("规则地址"))
326 | function e.cfgvalue(...)
327 | return Value.cfgvalue(...) or translate("None")
328 | end
329 |
330 | e=t:option(DummyValue,"time",translate("更新时间"))
331 |
332 | function Download()
333 | local t,e
334 | t=nixio.open("/tmp/upload/koolproxyca.tar.gz","r")
335 | luci.http.header('Content-Disposition','attachment; filename="koolproxyCA.tar.gz"')
336 | luci.http.prepare_content("application/octet-stream")
337 | while true do
338 | e=t:read(nixio.const.buffersize)
339 | if(not e)or(#e==0)then
340 | break
341 | else
342 | luci.http.write(e)
343 | end
344 | end
345 | t:close()
346 | luci.http.close()
347 | end
348 | local t,e
349 | t="/tmp/upload/"
350 | nixio.fs.mkdir(t)
351 | luci.http.setfilehandler(
352 | function(o,a,i)
353 | if not e then
354 | if not o then return end
355 | e=nixio.open(t..o.file,"w")
356 | if not e then
357 | return
358 | end
359 | end
360 | if a and e then
361 | e:write(a)
362 | end
363 | if i and e then
364 | e:close()
365 | e=nil
366 | luci.sys.call("/usr/share/koolproxy/camanagement restore 2>&1 >/dev/null")
367 | end
368 | end
369 | )
370 | return o
371 |
--------------------------------------------------------------------------------
/files/usr/lib/lua/luci/model/cbi/koolproxy/rss_rule.lua:
--------------------------------------------------------------------------------
1 | local m, s, o
2 | local koolproxy = "koolproxy"
3 | local sid = arg[1]
4 |
5 | m = Map(koolproxy, "%s - %s" %{translate("koolproxy"), translate("编辑规则")})
6 | m.redirect = luci.dispatcher.build_url("admin/services/koolproxy")
7 |
8 | if not arg[1] or m.uci:get(koolproxy, sid) ~= "rss_rule" then
9 | luci.http.redirect(m.redirect)
10 | return
11 | end
12 |
13 | -- [[ Edit Rule ]]--
14 | s = m:section(NamedSection, sid, "rss_rule")
15 | s.anonymous = true
16 | s.addremove = true
17 |
18 | o=s:option(Flag,"load",translate("启用"))
19 | o.default=0
20 | o.rmempty=false
21 |
22 | o=s:option(Value,"name",translate("规则描述"))
23 | o.rmempty=true
24 |
25 | o=s:option(Value,"url",translate("规则地址"))
26 | o.rmempty=false
27 | o.placeholder="[https|http|ftp]://[Hostname]/[File]"
28 | function o.validate(self, value)
29 | if not value then
30 | return nil
31 | else
32 | return value
33 | end
34 | end
35 |
36 | return m
37 |
--------------------------------------------------------------------------------
/files/usr/lib/lua/luci/view/koolproxy/cadvalue.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 |
3 | <%
4 | local val = self:cfgvalue(section) or self.default or ""
5 | write(pcdata(val))
6 | %>
7 |
8 | <%+cbi/valuefooter%>
9 |
--------------------------------------------------------------------------------
/files/usr/lib/lua/luci/view/koolproxy/caupload.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 | <%:Upload backup file,The file name must be koolproxyCA.tar.gz%>
3 |
4 |
5 | <%+cbi/valuefooter%>
6 |
--------------------------------------------------------------------------------
/files/usr/lib/lua/luci/view/koolproxy/dvalue.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 | <%=pcdata(self:cfgvalue(section) or self.default or "")%>
3 | <%+cbi/valuefooter%>
4 |
--------------------------------------------------------------------------------
/files/usr/lib/lua/luci/view/koolproxy/index.htm:
--------------------------------------------------------------------------------
1 | <%#
2 | Copyright 2016 Chen RuiWei
3 | Licensed to the public under the Apache License 2.0.
4 | -%>
5 |
6 | <% include("cbi/map") %>
7 |
17 |
--------------------------------------------------------------------------------
/files/usr/sbin/adblockplus:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | echo "$(date "+%F %T"): 正在下载adblockplus规则..."
3 | wget-ssl --quiet --no-check-certificate https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt -O /tmp/adlist.txt
4 | if [ "$?" == "0" ]; then
5 | grep ^\|\|[^\*]*\^$ /tmp/adlist.txt | sed -e 's:||:address\=\/:' -e 's:\^:/0\.0\.0\.0:' > /tmp/dnsmasq.adblock
6 | rm -f /tmp/adlist.txt
7 | diff /tmp/dnsmasq.adblock /usr/share/koolproxy/dnsmasq.adblock >/dev/null
8 | [ $? = 0 ] && echo "$(date "+%F %T"): adblockplus本地规则和服务器规则相同,无需更新!" && rm -f /tmp/dnsmasq.adblock && return 1
9 | echo "$(date "+%F %T"): 检测到adblockplus规则有更新,开始转换规则!"
10 | sed -i '/youku/d' /tmp/dnsmasq.adblock >/dev/null 2>&1
11 | sed -i '/[1-9]\{1,3\}\.[1-9]\{1,3\}\.[1-9]\{1,3\}\.[1-9]\{1,3\}/d' /tmp/dnsmasq.adblock >/dev/null 2>&1
12 | mv /tmp/dnsmasq.adblock /usr/share/koolproxy/dnsmasq.adblock
13 | echo "$(date "+%F %T"): adblockplus规则转换完成,应用新规则。"
14 | echo ""
15 | echo "$(date "+%F %T"): 重启dnsmasq进程"
16 | /etc/init.d/dnsmasq restart > /dev/null 2>&1
17 |
18 | return 0
19 | else
20 | echo "$(date "+%F %T"): 获取在线版本时出现错误! "
21 | [ -f /tmp/adlist.txt ] && rm -f /tmp/adlist.txt
22 | return 1
23 | fi
24 |
--------------------------------------------------------------------------------
/files/usr/share/koolproxy/adblock.conf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openwrt-develop/luci-app-koolproxy/e888e1ed7c8708410bdf2768fef135130602ae42/files/usr/share/koolproxy/adblock.conf
--------------------------------------------------------------------------------
/files/usr/share/koolproxy/camanagement:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | kpfolder="/usr/share/koolproxy/data"
3 | kplogfile="/var/log/koolproxy.log"
4 | readyfolder="/tmp/upload/koolproxy"
5 |
6 | backup() {
7 | if [ ! -f $kpfolder/private/ca.key.pem ]; then
8 | echo "未找到ca.key.pem,请先运行Koolproxy一次!" > $kplogfile
9 | exit 1
10 | fi
11 | if [ ! -f $kpfolder/private/base.key.pem ]; then
12 | echo "未找到base.key.pem,请先运行Koolproxy一次!" > $kplogfile
13 | exit 1
14 | fi
15 | if [ ! -f $kpfolder/certs/ca.crt ]; then
16 | echo "未找到ca.crt,请先运行Koolproxy一次!" > $kplogfile
17 | exit 1
18 | fi
19 |
20 | mkdir -p /tmp/upload
21 | cd $kpfolder
22 | tar czf /tmp/upload/koolproxyca.tar.gz private/ca.key.pem private/base.key.pem certs/ca.crt
23 | [ -f /tmp/upload/koolproxyca.tar.gz ] && echo "证书备份已成功生成。" > $kplogfile
24 | }
25 |
26 | restore() {
27 | if [ ! -f /tmp/upload/koolproxyCA.tar.gz ]; then
28 | echo "未找到备份文件,文件名必须为koolproxyCA.tar.gz或已损坏,请检查备份文件!" >> $kplogfile
29 | else
30 | mkdir -p $readyfolder
31 | cd $readyfolder
32 | tar xzf /tmp/upload/koolproxyCA.tar.gz
33 | fi
34 | if [ ! -f $readyfolder/private/ca.key.pem ]; then
35 | echo "未找到ca.key.pem,备份文件不正确或已损坏,请检查备份文件!" > $kplogfile
36 | exit 1
37 | fi
38 | if [ ! -f $readyfolder/private/base.key.pem ]; then
39 | echo "未找到base.key.pem,备份文件不正确或已损坏,请检查备份文件!" > $kplogfile
40 | exit 1
41 | fi
42 | if [ ! -f $readyfolder/certs/ca.crt ]; then
43 | echo "未找到ca.crt,备份文件不正确或已损坏,请检查备份文件!" > $kplogfile
44 | exit 1
45 | fi
46 |
47 | mv -f $readyfolder/private/ca.key.pem $kpfolder/private/ca.key.pem
48 | mv -f $readyfolder/private/base.key.pem $kpfolder/private/base.key.pem
49 | mv -f $readyfolder/certs/ca.crt $kpfolder/certs/ca.crt
50 | rm -rf $readyfolder
51 | rm -f /tmp/upload/koolproxyCA.tar.gz
52 | echo "证书成功还原,重启Koolproxy。" > $kplogfile
53 | /etc/init.d/koolproxy restart
54 | }
55 |
56 | case "$*" in
57 | "backup")
58 | backup
59 | ;;
60 | "restore")
61 | restore
62 | ;;
63 | "help")
64 | echo "use backup or restore"
65 | ;;
66 | esac
67 |
--------------------------------------------------------------------------------
/files/usr/share/koolproxy/data/gen_ca.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | alias echo_date='echo $(date +%Y年%m月%d日\ %X):'
3 |
4 | if [ ! -f openssl.cnf ]; then
5 | echo_date "Cannot found openssl.cnf"
6 | exit 1
7 | fi
8 | if [ -f /usr/share/koolproxy/data/private/ca.key.pem ]; then
9 | echo_date "已经有证书了!"
10 | else
11 | echo_date "生成证书中..."
12 |
13 | #step 1, root ca
14 | mkdir -p certs private
15 | rm -f serial private/ca.key.pem
16 | chmod 700 private
17 | echo 1000 > serial
18 | openssl genrsa -aes256 -passout pass:koolshare -out private/ca.key.pem 2048
19 | chmod 400 private/ca.key.pem
20 | openssl req -config openssl.cnf -passin pass:koolshare \
21 | -subj "/C=CN/ST=Beijing/L=KP/O=KoolProxy inc/CN=koolproxy.com" \
22 | -key private/ca.key.pem \
23 | -new -x509 -days 7300 -sha256 -extensions v3_ca \
24 | -out certs/ca.crt
25 |
26 | #step 2, domain rsa key
27 | openssl genrsa -aes256 -passout pass:koolshare -out private/base.key.pem 2048
28 | echo_date "证书生成完毕..."
29 | fi
30 |
--------------------------------------------------------------------------------
/files/usr/share/koolproxy/data/openssl.cnf:
--------------------------------------------------------------------------------
1 | # OpenSSL root CA configuration file.
2 | # Copy to `/root/ca/openssl.cnf`.
3 |
4 | [ ca ]
5 | # `man ca`
6 | default_ca = CA_default
7 |
8 | [ CA_default ]
9 | # Directory and file locations.
10 | dir = ./ca
11 | certs = $dir/certs
12 | crl_dir = $dir/crl
13 | new_certs_dir = $dir/newcerts
14 | database = $dir/index.txt
15 | serial = $dir/serial
16 | RANDFILE = $dir/private/.rand
17 |
18 | # The root key and root certificate.
19 | private_key = $dir/private/ca.key.pem
20 | certificate = $dir/certs/ca.cert.pem
21 |
22 | # For certificate revocation lists.
23 | crlnumber = $dir/crlnumber
24 | crl = $dir/crl/ca.crl.pem
25 | crl_extensions = crl_ext
26 | default_crl_days = 30
27 |
28 | # SHA-1 is deprecated, so use SHA-2 instead.
29 | default_md = sha256
30 |
31 | name_opt = ca_default
32 | cert_opt = ca_default
33 | default_days = 375
34 | preserve = no
35 | policy = policy_strict
36 |
37 | [ policy_strict ]
38 | # The root CA should only sign intermediate certificates that match.
39 | # See the POLICY FORMAT section of `man ca`.
40 | countryName = match
41 | stateOrProvinceName = match
42 | organizationName = match
43 | organizationalUnitName = optional
44 | commonName = supplied
45 | emailAddress = optional
46 |
47 | [ policy_loose ]
48 | # Allow the intermediate CA to sign a more diverse range of certificates.
49 | # See the POLICY FORMAT section of the `ca` man page.
50 | countryName = optional
51 | stateOrProvinceName = optional
52 | localityName = optional
53 | organizationName = optional
54 | organizationalUnitName = optional
55 | commonName = supplied
56 | emailAddress = optional
57 |
58 | [ req ]
59 | # Options for the `req` tool (`man req`).
60 | default_bits = 2048
61 | distinguished_name = req_distinguished_name
62 | string_mask = utf8only
63 |
64 | # SHA-1 is deprecated, so use SHA-2 instead.
65 | default_md = sha256
66 |
67 | # Extension to add when the -x509 option is used.
68 | x509_extensions = v3_ca
69 |
70 | [ req_distinguished_name ]
71 | # See .
72 | countryName = Country Name (2 letter code)
73 | stateOrProvinceName = State or Province Name
74 | localityName = Locality Name
75 | 0.organizationName = Organization Name
76 | organizationalUnitName = Organizational Unit Name
77 | commonName = Common Name
78 | emailAddress = Email Address
79 |
80 | # Optionally, specify some defaults.
81 | countryName_default = GB
82 | stateOrProvinceName_default = England
83 | localityName_default =
84 | 0.organizationName_default = Alice Ltd
85 | organizationalUnitName_default =
86 | emailAddress_default =
87 |
88 | [ v3_ca ]
89 | # Extensions for a typical CA (`man x509v3_config`).
90 | subjectKeyIdentifier = hash
91 | authorityKeyIdentifier = keyid:always,issuer
92 | basicConstraints = critical, CA:true
93 | keyUsage = critical, digitalSignature, cRLSign, keyCertSign
94 |
95 | [ v3_intermediate_ca ]
96 | # Extensions for a typical intermediate CA (`man x509v3_config`).
97 | subjectKeyIdentifier = hash
98 | authorityKeyIdentifier = keyid:always,issuer
99 | basicConstraints = critical, CA:true, pathlen:0
100 | keyUsage = critical, digitalSignature, cRLSign, keyCertSign
101 |
102 | [ usr_cert ]
103 | # Extensions for client certificates (`man x509v3_config`).
104 | basicConstraints = CA:FALSE
105 | nsCertType = client, email
106 | nsComment = "OpenSSL Generated Client Certificate"
107 | subjectKeyIdentifier = hash
108 | authorityKeyIdentifier = keyid,issuer
109 | keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment
110 | extendedKeyUsage = clientAuth, emailProtection
111 |
112 | [ server_cert ]
113 | # Extensions for server certificates (`man x509v3_config`).
114 | basicConstraints = CA:FALSE
115 | nsCertType = server
116 | nsComment = "OpenSSL Generated Server Certificate"
117 | subjectKeyIdentifier = hash
118 | authorityKeyIdentifier = keyid,issuer:always
119 | keyUsage = critical, digitalSignature, keyEncipherment
120 | extendedKeyUsage = serverAuth
121 |
122 | [ crl_ext ]
123 | # Extension for CRLs (`man x509v3_config`).
124 | authorityKeyIdentifier=keyid:always
125 |
126 | [ ocsp ]
127 | # Extension for OCSP signing certificates (`man ocsp`).
128 | basicConstraints = CA:FALSE
129 | subjectKeyIdentifier = hash
130 | authorityKeyIdentifier = keyid,issuer
131 | keyUsage = critical, digitalSignature
132 | extendedKeyUsage = critical, OCSPSigning
133 |
--------------------------------------------------------------------------------
/files/usr/share/koolproxy/data/rules/daily.txt:
--------------------------------------------------------------------------------
1 | !x -----------------------------------------------------------------------------------------------------------------
2 | !x -----[KoolProxy 3.8.4]
3 | !x -----Thanks: From lvba Group
4 | !x -----Thanks for help:
5 | !x -----------------------------------------------------------------------------------------------------------------
6 | ! ---- baidu union ----
7 | |http://*/*mgkokpa.js
8 | |http://*/*rlptqpn.js
9 | ! ---- baidu union ----
10 | ! ---- unsafe download ----
11 | |http://*/*_*@*.exe
12 | |http://*/*@*_*.exe
13 | ! ---- unsafe download ----
14 | !x -----------------------------------------------------------------------------------------------------------------
15 | @@@@|https://pic.yefu365.com
16 | @@@@|https://www.douyu.com
17 | @@@@|https://www.bilibili.com
18 | @@@@|https://crash.163.com
19 | @@|http://static.ws.126.net
20 | @@|http://img3.126.net
21 | @@|http://logstat.laosiji.com/index.html?
22 | @@||cnzz.com/q_stat.php$domain=qd.alibaba.com
23 | @@||mmstat.com/eg.js$domain=rjno1.com
24 | |http://*/adright.$domain=elecfans.com
25 | |http://d1.5h.com^
26 | |http://www.52movieba.com/img/ad*
27 | |http://ad.*
28 | |http://*/adimg/*
29 | |http://*/adImg/*
30 | |https://media.trafficjunky.net/js/holiday-promo.js
31 | |https://smpop.icfcdn.com/smpop-stable.js
32 | |https://wxstatic.cn
33 | |https://qclcdn.cn^
34 | |https://mc.tvzhe.com^
35 | |https://www.toolnb.com/Public/aliyun/900x60.png
36 | |https://max.book118.com/statics/js2/
37 | |https://max.book118.com/Public/book118/js/scz-zip/
38 | |https://max.book118.com/Public/book118/js/picture-else/
39 | |https://mgtv.djjca.cn/mgtv.php
40 | |https://hkitblog.com^*-banner
41 | |https://daima.huoche.net^
42 | |https://pan.keyunzhan.com^
43 | |https://static.hsbianma.com/Content/images/*-ad-
44 | |https://chequeconvert.hkcoding.com/img/
45 | |https://o.aolcdn.com/ads/
46 | |https://e.so.com/baike/ads?
47 | |https://v1.phb123.com^
48 | |https://www.atyun.com/wp-content/themes/xmag/js/ad.js
49 | |https://ba.cydp5.com^
50 | |https://js.jianbaimei.com^
51 | |https://www.91wii.com/*/common/ad_
52 | |https://www.91wii.com/data/ad/
53 | |https://asianmedia.com/*/www/delivery/
54 | |https://fzb01.qiushibaike.com^
55 | |https://cdn1.tvzhe.com^
56 | |https://ssl.bsriedu.cn:8004/
57 | |https://ax.*.ifeng.com^
58 | |https://emjs.mkzhan.com^
59 | |https://d1.5h.com^
60 | |https://www.danji6.com/style/style2016/js/gaosuxiazai.js
61 | |https://yy2018.jintonghua.com^
62 | |https://www.dangdang.com/adall.
63 | |https://www.dandanzan.com/res/dan
64 | |https://kpshx.douguo.com
65 | |https://ftic.qifake.com^
66 | |https://dd1.diymianmo.com^
67 | |https://union*.365inews.com^
68 | |https://union1.365inews.com^
69 | |https://ads.exosrv.com/ads.js
70 | |https://rugncn.ifeng.com^
71 | |https://jiejg.ifeng.com^
72 | |https://bdjs.ixiumei.com^
73 | |https://di.phncdn.com/www-static/js/
74 | |https://ads.trafficjunky.net/ads?
75 | |https://www.google-analytics.com/analytics.js
76 | ||eryamishu.com/zb_system/image/logo/64060.png
77 | ||eryamishu.com/zb_users/upload/2016/04/201604061459908985564295.jpg
78 | ||gum.xbooks.to/js/pc/pc_*_
79 | ||gum.xbooks.to/js/pc/pc_tsuibi
80 | ||meng.360zuowen.com^
81 | ||jzb.com/website/fe/pub_js/dbclickshow.js
82 | ||cjjjs.com/script/ad.js
83 | ||int.w3tong.com^
84 | ||fsdpp.cn/123.jpeg
85 | ||fsdpp.cn/skin/idea/images/hongbao.jpg
86 | ||52pk.com/style/files/images/beitou.jpg
87 | ||greenxf.com^$script
88 | ||91bg.xyz/Runtime/Js/
89 | ||usxpic.com/btimg/upload/image/20180426/42600001974.gif
90 | ||aigou023.com^
91 | ||ifengimg.com/static/news/js/newsAdvtrack_
92 | ||dm530.net/js/ne/*.js*.js
93 | ||jrjimg.cn/common/foot/wxXcxTg.js
94 | ||beijinglvyou.net.cn^
95 | ||76mao.com/52
96 | ||elecfans.com/skin-*ad_
97 | ||mglvqian.com^
98 | ||letvimg.com/*gugwl/*.swf
99 | ||emule.org.cn/km.gif
100 | ||emule.org.cn/templets/default/
101 | ||ucstatic.cn^
102 | ||mengheyu.com^
103 | ||7ia9h.cn^
104 | ||991pao.com^
105 | ||lfhnkp.com^
106 | ||1.ttxs123.net^
107 | ||chinaz.com/zt/hanyi/images/ziyou.jpg
108 | ||cnfol.com/index_new.php?id=
109 | ||cnfol.com/pc/Js/as/
110 | ||easypatent.net^
111 | ||aliyuncs.com/img/aliyun/300x300.jpg
112 | ||aliyuncs.com/img/aliyun/560x260.png
113 | ||bdcode.qinglm.com^
114 | ||hqcx.net/images/baidu.jpg
115 | ||159i.com/video/usr/uploads/1-
116 | ||159i.com/video/usr/uploads/bd/$image
117 | ||live173.com/AD/
118 | ||baid1.okooo.com^
119 | ||hqcx.net/index.php?m=poster&
120 | ||datas.tianqistatic.com^
121 | ||tom.com/adsender/
122 | ||gazoeft.cn^
123 | ||lglady.cn^
124 | ||cxslchkb.cn^
125 | ||hxyl.net/js/tv.js
126 | ||yjoiunf.com:5656/
127 | ||pniao.com/View/images/dianpu.png
128 | ||xcxzxc.cn
129 | ||https://7160.com/js/adweb
130 | ||https://7160.com/js/tiaozhuanquanju.js
131 | ||https://wdeie.com^
132 | ||https://zxin131.cn^
133 | ||https://yzaosite.com^
134 | ||https://zencu.com.cn^
135 | ||https://xn6ffc.com^
136 | ||https://yefu365.com^
137 | ||https://cojia.net:4457/
138 | ||https://4006825178.com^
139 | ||https://cwj2h.cn^
140 | ||https://18dusun.com^
141 | ||https://fjmailia.com^
142 | ||https://6yush.cn^
143 | ||https://15tianqi.com^
144 | ||https://wanzhuang.com^
145 | ||https://ybanj.com^
146 | ||https://spot.im/yad/
147 | ||https://atwola.com^
148 | ||https://spot.im/yad/
149 | ||https://adnxs.com^
150 | ||https://spotxchange.com^
151 | ||https://hnfxty.cn^
152 | ||https://clmmw.com^
153 | ||https://hchik.com^
154 | ||https://wjier.com^
155 | ||https://tinwong.cn^
156 | ||https://ywadf.cn^
157 | ||https://fastapi.net^
158 | ||https://ynp0h.cn^
159 | ||https://ejiur.com^
160 | ||https://qgaot.com^
161 | ||https://6nzev.cn^
162 | ||https://kguaq.com^
163 | ||https://nettsl.com^
164 | ||https://chenyanjiao.cn^
165 | ||https://ayues.com^
166 | ||https://22pixx.xyz/l/
167 | ||https://acv5e.cn^
168 | ||https://cxfzw.cn^
169 | ||https://tbaia.com^
170 | ||https://ysxywj.com^
171 | ||https://yjiaj.com^
172 | ||https://just9229.cn^
173 | ||https://tenh2.cn^
174 | ||https://beijinglvyou.net.cn^
175 | ||https://wcail.com^
176 | ||https://aganj.com^
177 | ||https://boyueguoji.com^
178 | ||https://heizundg.cn^
179 | ||https://themee.cn^
180 | ||https://kcenu.com^
181 | ||https://vkuay.com^
182 | ||https://whshangsha.com^
183 | ||https://shypqc.com^
184 | ||https://afefw.com:5110/
185 | ||https://c6z85.cn^
186 | ||https://pqnlorg.cn^
187 | ||https://gadhx.cn^
188 | ||https://galaxyns.com^
189 | ||https://rerwe.cn^
190 | ||https://izouo.com^
191 | ||https://979067.com^
192 | ||https://idanmei.cn^
193 | ||https://ni87.com^
194 | ||https://hzuok.com^
195 | ||https://baful.net:4459/
196 | ||https://aishangcan.com^
197 | ||https://spectram.pro^
198 | ||https://nxh2h.cn^
199 | ||https://vchim.com^
200 | ||https://qdiut.com^
201 | ||https://aliguojw.com^
202 | ||https://qwertyuiopa.co^
203 | ||https://boweineng.cn^
204 | ||https://wvstatic.cn^
205 | ||https://rtslgov.cn^
206 | ||https://gjuet.com^
207 | ||https://jscode.acg68.com^
208 | ||https://fbieq.com^
209 | ||https://zutodu.cn^
210 | ||https://fanli.in^
211 | ||https://ybaiu.com^
212 | ||https://xng02.com/api.php?mod=ad&
213 | ||https://wp.com/fbcinema.com/wp-content/uploads/20*?w=450
214 | ||https://yootui19999.com^
215 | ||https://phncdn.com/iframe
216 | ||https://dbeii.com^
217 | ||https://dceni.com^
218 | ||https://syxsa.cn^
219 | ||https://69yll.cn^
220 | ||https://yunsoka.com^
221 | ||https://xhera.cn^
222 | ||https://iyygzs.com^
223 | ||https://dldsrs.com^
224 | ||https://pkbrxja.cn^
225 | ||https://emshx.cn^
226 | ||https://ifengimg.com/*Couplet
227 | ||https://ifengimg.com/*adview_
228 | ||https://mmpuh.cn
229 | ||https://ucstatic.cn^
230 | ||https://mengheyu.com^
231 | ||https://hduic.com^
232 | ||https://991pao.com^
233 | ||https://7ia9h.cn^
234 | ||https://991pao.com^
235 | ||https://sjaidu.com^
236 | ||https://lguir.com^
237 | ||https://ibaop.com^
238 | ||https://zcand.com^
239 | ||https://mdous.com^
240 | ||https://tdoup.com^
241 | ||https://h2pzh.cn^
242 | ||https://wbanz.com^
243 | ||https://lfhnkp.com^
244 | ||https://1.ttxs123.net^
245 | ||https://jdflower.cn^
246 | ||https://baiduspider1.cn^
247 | ||https://wcaos.com^
248 | ||https://07kfh.cn^
249 | ||https://ahuac.com^
250 | ||https://fcunq.com^
251 | ||https://juejin.im/graphql
252 | ||https://9pb0h.cn^
253 | ||https://tjiaa.com^
254 | ||https://vbanm.com^
255 | ||https://hlhulu.com^
256 | ||https://ifeng.com^*=YWRp
257 | ||https://deliver.ifeng.com^
258 | ||https://izuis.com
259 | ||https://ifengimg.com/web/d/c_shichuang.js
260 | !|https://pan.baidu.com/feproxy/ad/list?
261 | !x -----------------------------------------------------------------------------------------------------------------
262 | !|https://pan.baidu.com,yun.baidu.com##[id^="share-ad-"],A#share_ad_info_panl,div[id^="cpro_"],img.share-center,.ad-platform-tips,.banner-active
263 | !x -----------------------------------------------------------------------------------------------------------------
264 | ||avtbo.com/$s@@@
265 | ||av.movie/$s@@@
266 | ||gdmm.com/$s@@@
267 | ||ad353.com/$s@@@
268 | ||zhongzishenqi.pw/$s@@@
269 | ||thzvv.*/$s@@@
270 | ||ruanyifeng.com/$s@@@
271 | ||itboth.com/$s@@@
272 | ||itkeyword.com/$s@@@
273 | ||pniao.com/$s@@@
274 | ||uxxux.com/$s@@@
275 | ||360-bo.com/$s@@@
276 | ||cnforex.com/$s@@@
277 | ||onlytvb.com/$s@@@
278 | ||onlytvb.com/$s@
110 |
111 |
112 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
586 |
587 |
588 |
589 |
590 |
591 |
592 |
593 |
594 |
595 |
596 |
Permalink
597 |
598 |
599 |
600 |
601 |
602 |
Join GitHub today
607 |
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.
608 |
Sign up
609 |
610 |
611 |
612 |
613 |
614 |
615 |
616 |
617 |
632 |
633 |
644 |
645 |
648 |
649 |
660 |
661 |
662 |
663 |
664 |
665 |
666 |
667 |
668 |
669 | user1121114685
670 |
671 | 2.2.3
679 |
680 |
681 |
682 | 6aff7c2
683 | Jul 30, 2019
684 |
685 |
686 |
687 |
688 |
689 |
690 | 1 contributor
691 |
692 |
696 |
704 |
705 |
706 |
707 |
708 |
709 |
710 |
711 |
712 |
713 |
714 |
715 |
716 |
717 |
718 |
719 | 36.4 KB
720 |
721 |
722 |
723 |
724 |
728 |
729 |
730 |
738 |
739 |
740 |
741 |
742 |
743 |
744 |
745 |
746 |
751 |
752 |
753 |
754 |
755 |
756 |
757 |
758 |
759 |
763 |
764 |
765 |
766 |
767 |
768 |
769 |
770 |
771 |
772 |
773 |
774 |
775 |
776 |
777 |
778 |
806 |
807 |
808 |
809 |
810 |
811 |
812 |
813 |
814 | You can’t perform that action at this time.
815 |
816 |
817 |
818 |
819 |
820 |
821 |
822 |
823 |
824 |
825 |
827 |
828 |
You signed in with another tab or window. Reload to refresh your session.
829 |
You signed out in another tab or window. Reload to refresh your session.
830 |
831 |
832 |
833 |
834 |
835 |
836 |
837 |
838 |
839 |
840 |
841 |
842 |
843 |
847 |
848 |
849 |
850 | @@
279 | ||dilidili.wang/$s@@@
280 | ||yxdown.com/$s@@@
281 | ||yxdown.com/$s@@@
282 | ||epinv.com/$s@@@
283 | ||epinv.com/$s@@@
284 | ||39.net/$s@@@
285 | ||xsjdy.net/$s@@@
286 | ||youxijpw.com/$s@@@
287 | ||eyy5.cn/$s@@@
288 | ||yn-dove.cn/$s@@@
289 | ||https://mydrivers.com/$s@@@
290 | ||https://cnbeta.com/$s@@@
291 | |http://www.zuixingkong.com/$s@@@
292 | |http://www.freep.cn/$s@@@
293 | |http://www.ixjys.com/$s@@@
294 | |http://www.rs05.com/$s@@@
295 | |http://news.163.com/$s@@@
296 | |http://www.rs05.com/$s@@@
297 | |http://bbs.hh010.com/$s@@@
298 | |http://thz2.cc/$s@@@
299 | |http://www.52ghai.com/$s@@@
300 | |http://www.52ghai.com/$s@@@
301 | |http://cpnn5.com:91/$s@@@
302 | |http://www.eroacg.com/$s@@@
303 | |http://www.friok.com/$s@@@
304 | |http://www.cjjjs.com/$s@@@
305 | |http://www.55xia.com/$s@@@
306 | |http://chromecj.com/$s@@@
307 | |http://www.ainuody.com/$s@@@
308 | |http://dm.dm530.net/$s@@@
309 | |http://dm.dm530.net/$s@@@
310 | |http://m.biqu*.*/$s@@@
311 | |http://www.chnmoney.com/$s@@@
312 | |http://www.zimuzu.io/$s@@@
313 | |http://*btbtdy.*/$s@@@
314 | |http://m.biqu*.*/$s@@@
315 | |http://www.meijumi.vip/$s@@@
316 | |http://www.meijumi.vip/$s@@@
317 | |http://www.avtbp.com/$s@@@
318 | |http://onetvb.com/$s@@@
319 | |http://onetvb.com/$s@@@
320 | |http://yeyemo.biz/$s@@@
321 | |http://www.jav777.cc/$s@@@
322 | |http://159i.com/$s@@@
323 | |http://159i.com/$s@@@
324 | |http://www.xunbopian.cc/$s@@@
325 | |http://www.xunbopian.cc/$s@@@
326 | |https://www.avav336.com/$s@@@
327 | |https://www.bt121.net/$s@@@
328 | |https://99a18.com/$s@@@
329 | |https://cnbtkitty.xyz/$s@@@
330 | |https://www.onetvb.com/$s@@@
331 | |https://www.phb123.com/$s@@@
332 | |https://m.ankangwang.com/$s@@@
333 | |https://www.445zh.com/$s@@@
334 | |https://m.sbiquge.com/$s@@@
335 | |https://wangpan007.com/$s@@@
336 | |https://www.eyusky.net/$s@@@
337 | |https://cc.dety.men/$s@@@
338 | |https://www.1788hd.com/$s@@@
339 | |https://www.btdx8.com/$s@@@
340 | |https://www.coolinet.com/$s@@@
341 | |https://m.tywx.la/$s@@@
342 | |https://m.tywx.la/$s@@@
343 | |https://www.lanzous.com/$s@@@
344 | |https://m.biquge5200.cc/$s@@@
345 | |https://m.biquge5200.cc/$s@@@
346 | |https://www.tom024.com/$s@@@
347 | |https://xclient.info/$s@@@
348 | |https://www.torrentkitty.se/$s@@@
349 | |https://www.imeiju.cc/$s@@@
350 | |https://www.chinatimes.com/$s@@@
351 | |https://www.wudidy.net/$s@@@
352 | !x -----------------------------------------------------------------------------------------------------------------
353 | www.freep.cn###divimg_2
354 | epinv.com##A[href*=".taobao.com"]
355 | vpansou.com##A[href*=".taobao.com"]
356 | dilidili.wang###newapp2018
357 | w1rl.xyz##A[href^="/htmm/"]
358 | zuanke8.com##DIV[style="padding:0px 0 10px 0;background-color:#F1F1F1;"],.zuanpw
359 | youxijpw.com##[id^="bn_con"]
360 | elecfans.com###MiddleLeaderboard,#company-ad,#new-adsm-berry,#adChannel,[id^="new-listAd"]
361 | lvse.cn###ad_banner_outer,[class^="fb_banner"]
362 | xmfish.com##.adv-760,[id^="adm_show_"],.wrapxy
363 | 58pic.com##.twelveModel,.feast,[id^="model-gift"],[id^="search_"]>*,.twelveFixedPage,.tallyActivity,div#ad.clearfix.w1200
364 | cnfol.com##.allAd.Mt10,.rightAd,[class^="wid595Ad"],[class^="wid390Ad"],.wid600Ad,[class^="wid325Ad"],.Ad310,[class^="NavTopAd"],.wid300,.Ad1000,.NewAdBox.Cf
365 | ali213.net##.ad1,[class^="ad_news_"]
366 | www.bt.cn##.btad
367 | ckck.vip##.alert_windows
368 | 9669.cn##.mt10[style="height:260px;"]
369 | bbs.hh010.com##[id$="_banadblock"],#fwin_banadblock_cover,.wp.a_hh_h
370 | sogou.com##.pz-widget-flash-container
371 | eryamishu.com##.post_tags
372 | xbooks.to##DIV[style="width:900px; height:250px; margin: -15px auto 15px auto;"],.movie-in-ad
373 | kpd80.com###wrapper_right_bg[target="_blank"],.topad
374 | zuowen.com##[class^="couplet_"]
375 | 360zuowen.com##[class^="guanggao"],.lew_tu
376 | eworldship.com###d1,#d2,A[href*="ad_click&"]
377 | kdnet.net##.c_spread
378 | bbs.zhiyoo.com##.a_p
379 | 52pk.com###bg_link,.tcgg.ggleft,.tcgg.ggright
380 | qmaile.com,wandhi.com##A[style="display: inline-block;position: relative"],#lovexin121
381 | zysj.com.cn###ad_pc_bottom
382 | pniao.com##img[src$="images/dianpu.png"]
383 | tom.com###body_right_banner
384 | isso.com.cn###wqd1519353145001serial
385 | itboth.com##ad_pop,.ad_pop_left
386 | hz66.com###hzhead + .column,.ad-line
387 | huarenjie.net##DIV[style*="top: 50px;"]
388 | 33am.cn##.bd_980_90
389 | m.9bbg.com##[class^="ndti"],[id^="ndt"]
390 | html-js.com##.module[style="padding:0;"],DIV[style="margin:10px auto;width:1000px;"]
391 | zimuzu.io##img[src^="http://tu.jstucdn.com/g3/ad-img/"]
392 | huaban.com##.extra
393 | henan100.com##.boxB
394 | so.com##.windisplayCell,.commercialCell
395 | gter.net##.ad1,.bottom,[class*="ad"]
396 | m.520boxtv.com##.logo_top
397 | |https://ditu.so.com##DIV[class^="index-adflag-"] + A,#imageSearch
398 | |https://bbs.instrument.com.cn##A[href*="/ad/"]
399 | |https://www.ggdoc.com.cn##.adDiv
400 | |https://hkitblog.com##.widget_text.widget.widget_custom_html,.widget widget_text,.widget.widget_text
401 | |https://www.backchina.com##DIV[style^="width:300px; min-height: 250px;"],div[id^="div-gpt-ad"],a[href*=".21usdeal.com"],.eis_subnav_area,.adsbygoogle,[style="width:300px; margin:0;"],.banner_ad,#eis_pad1,iframe[width="728"][height="90"],.trc-content-sponsored,.trc_related_container div[data-item-syndicated="true"],[style^="min-width:728px;min-height:90px;"]
402 | |https://www.91wii.com##.a_fr,.a_fl
403 | |https://www.rebooo.com###gong
404 | |https://www.iqshw.com###ZAML
405 | |https://www.howbuy.com##.topBigAd,a[href^="https://www.howbuy.com/advertisement/"]
406 | |https://99a18.com,https://99re.com,https://99re16.com##.dmcenter,.layui-layer-shade,img[class="half-img"]
407 | |https://99a18.com,https://99re.com,https://99re16.com##.spots,#_iframe_content
408 | |https://www.keyunzhan.com###AdLayer2
409 | |https://www.toolfk.com##.ad-container,.adsbygoogle
410 | |https://www.pangzi.ca###pop
411 | |https://cc.dety.men##.tips,#footer > table:nth-child(2) > tbody:nth-child(1) > tr:nth-child(1)
412 | |https://cc.dety.men##DIV > A > IMG[src^="http://www.t66y.cc/img/"]:first-child,DIV.container > DIV > A[rel="nofollow"],blockquote img[onclick^="window.open('http://www.viidii.info/"],blockquote .f16
413 | |https://www.pangzi.ca##img[src*="/ads/images"]
414 | |https://lifanmoe.xyz##a[href^="http"]:not([href*="lifanmoe."]) > img[src*=".sinaimg."]
415 | |https://btring.com##.card[target="_blank"]
416 | |https://forum.xda-developers.com##.sponsor-banner,.leaderboard
417 | |https://finance.sina.com.cn##.m-s-tab + DIV
418 | |https://wenku.baidu.com##.ad-vip-close,.topicBox.search-topicBox-wrap
419 | |https://www.tom024.com###layui-layer1,.layui-layer-shade
420 | |https://www.china.com##.tonglan
421 | |https://www.bt.cn##.btad
422 | |https://www.myqqjd.com###advert_widget,.qz-box
423 | |https://xclient.info##.lim-ad
424 | |https://www.e-learn.cn###block-layui-ele,#block-tengxunyunshuang11
425 | |https://gaus.ee##.adsbygoogle
426 | |https://juejin.im##.sidebar-bd-entry
427 | |https://www.cnbeta.com##.trc_related_container div[data-item-syndicated="true"]
428 | ||https://css88.com##.spark-rm
429 | ||https://zhangxinxu.com###topRecomm
430 | ||https://fastadmin.net##.container > .d-lg-block:first-child
431 | ||https://renren101.com##.ad-flag-wrap
432 | ||https://xsool.com###diy1,#diynavtop
433 | ||https://appinn.com###ranshownow
434 | ||https://engadget.com###atwAdFrame2,#atwAdFrame1,#atwAdFrame2,#AdDiv,div[data-spotim-slot],div[data-nav-drawer-slide-panel] > aside[role="banner"]
435 | ||https://haha.mx##.joke-list-anecdote,.ad-2,.ad-6,.adsbygoogle
436 | ||https://huarenjie.net##DIV[style*="top: 50px;"]
437 | ||https://laomoit.com###sidebar A[target="_blank"] > IMG,.cboxElement + CENTER[style=" padding-top:10px; "]
438 | ||https://pornhub.com##body > .wrapper + div[class][-ext-has='> .removeAdLink']
439 | ||https://pornhub.com##.realsex,.removeAdsStyle,.ad-link,#hAd
440 |
441 | |https://hao.360.cn###header-patch,#daily-hotwords,#top_activity,#top_hotsite,#activity,#iguess,.mbar-bd,#festival-logoskin,#plane > .plane-hd,.cangbao_redbags,#top-full-column-tips,#plane-ria,.ad-top
442 | !x -----------------------------------------------------------------------------------------------------------------
443 | |http://bbs.hh010.com/$s@var freeaddon_banadblock = 0;@var freeaddon_banadblock = 30;@
444 | |http://www.52movieba.com$s@var ua*@@
445 | |http://vv.video.qq.com/getvinfo?$s@* @@
446 | ||52pk.com/$s@function goto() {@function goto() { return;@
447 | |https://cc.dety.men/*.html$s@/((!?function )[readS\w]+\(\) ?{)/@${1}return;@
448 | |https://cc.dety.men/*.html$s@/(setTimeout\(function ?\(\) ?{)/@${1}return;@
449 | |https://cc.dety.men/*.html$s@ @ @
450 | |https://www.coolinet.com/$s@e.insert(c);@return 0;@
451 | |https://currencyex.doitwell.tw/$s@setTimeout(function() {@setTimeout(function() { return;@
452 |
453 | |https://console.bonuscloud.io/$r@/https:\/\/.*\.bonuscloud\.io\/.*/@https://kprules.b0.upaiyun.com/null/404.html@
454 | !x ------------------------------------------ xiaoshuo TXT ADV ----------------------------------------------------
455 | |http://js.passport.qihucdn.com/11
456 | |https://yihu.s06th.cn^
457 | |https://m.zhenben.cc/2000/
458 | ||https://mgsue.cn^
459 | ||https://hjues.com^
460 | |https://m.hjiec.com^
461 | ||https://ffanq.com^
462 | ||abfirst.cn^
463 | ||https://mendoc.cn^
464 | ||https://eshuy.com^
465 | |http://*/haojio/images/KF-ZL.jpg
466 | |http://livep.l.qq.com/livemsg?
467 | |http://mtrace.qq.com/mkvcollect?
468 | |http://dp3.qq.com/
469 | |http://news.l.qq.com/app?
470 | |https://1.bh5.com.cn^
471 | |https://adman.henghost.com
472 | |https://abc.hkepc.net^
473 | |https://www.toolfk.com/tools/images/vps/
474 | |https://www.toolfk.com/common/cp.js
475 | |https://dp3.qq.com/
476 | |https://news.l.qq.com/app?
477 | |https://union.591.com.tw/cpt?
478 | |https://vip.fengyelin.net:9595/
479 | |https://m.eshuy.com^
480 | |https://m.tingshuge.com/*/m
481 | |https://static.xiashu.la/*/js/read.js
482 | |https://static.xiashu.la/*/js/fx.js?0.4
483 | |http://m.wodexiaoshuo2.cc/js/zhangjie.js
484 | |https://m.xinshula.com/js/ziji
485 | |https://m.x81zw.com/x81.js
486 | |http://m.wodexiaoshuo2.cc/js/xialun
487 | |https://wap.txtduo.com/mtxtduo.js
488 | |https://m.txt2017.com/*/js/style.js
489 | |https://m.shuanshu.com/js/dipiao.js
490 | |https://m.booktxt.net/js/ym11111
491 | |https://m.bxwx9.org/mjs/newwap.js
492 | |https://m.shengyan.org/*/book.js
493 | |https://m.biduo.cc/scripts/common.js
494 | |https://m.qianrenge.cc/*/common.js
495 | |https://m.zhuaji.org/css/common.js
496 | |https://m.sjxs.la/js/comm.js
497 | |https://m.qianrenge.cc/*/true.js
498 | |https://m.liewen.cc/js/common.js
499 | |https://m.biqumo.com/baidu/newcn
500 | |http://m.biqugego.com/wap/dun.js
501 | |https://gg.dsxdn.com/duanwenxue/wapdwx.js
502 | |http://m.longtanxs.com/js/baisu.js
503 | |https://jiansuo.dsxdn.com^
504 | |https://m.ttzw.com/*/true.js
505 | |https://m.ttzw.com/*/h.js
506 | |https://m.duanwenxue.com/js/tongji.js
507 | |https://m.dpcq1.net/*/s_wap_novelsearch_chapter_read.js
508 | |https://m.daizhuzai.com/*/s_wap_novelsearch_chapter_read.js
509 | |https://m.duanwenxue.com/functions/
510 | |https://m.qu.la/*/true.js
511 | |https://m.qu.la/*/cp.js
512 | |http://m.xbiquge.la/js/wap.js
513 | |https://m.biqudao.com/js/wap.js
514 | |https://m.555zw.com/js/wap.js
515 | |https://m.aszw.org/js/wap.js
516 | |https://m.kewaishu.info/ad1/wap.js
517 | |https://m.ranwena.com/scripts/wap.js
518 | |https://m.sjxs.la/js/wap.js
519 | |https://m.zhenben.cc/js/wap.js
520 | |https://m.zhenben.cc/foot.js
521 | |https://m.yfxiaoshuod.com/js/foot.js
522 | |http://*/wap.js$domain=23wxx.com|chenhuixsd.com|cyxse.com|hfxiaoshuo.com|hlxiaoshuo.net|lwxiaoshuo.com|m.1200ksw.com|m.16kxsw.com|m.23sw.net|m.2kxs.com|m.31wxw8.com|m.360118.com|m.37zw.net|m.3dllc.cc|m.3kw.cc|m.50zw.co|m.50zw.la|m.50zww.com|m.52biquge.com|m.555zw.com|m.58xs.tw|m.5ccc.net|m.630book.la|m.67shu.com|m.69shu.org|m.6mao.com|m.80txt.com|m.83zw.com|m.88106.com|m.88dus.com|m.98xiaoshuo.com|m.99shumeng.net|m.aiquxs.com|m.amu520.com|m.aszw.org|m.b5200.net|m.baishulou8.com|m.baoliny.com|m.beijingaishu.net|m.bichi.me|m.biqudu.com|m.biquge.cm|m.biquge.com.tw|m.biquge.info|m.biqugego.com|m.biqugexsw.com|m.biqugezw.com|m.biqumo.com|m.biquwu.cc|m.boluoxs.com|m.book9.net|m.booktxt.net|m.bqg5.cc|m.bqg5200.com|m.bxwx9.org|m.daizhuzai.com|m.dashubao.cc|m.ddxsw.net|m.dhzw.org|m.diyibanzhu.xyz|m.dpcq1.net|m.duanwenxue.com|m.fhxiaoshuo.com|m.fhxsw.org|m.gsdaquan.com|m.gulizw.com|m.gxwztv.com|m.haotxt.com|m.haxwx2.com|m.heiyanwang.com|m.hkslg.net|m.jjxsw.org|m.kewaishu.info|m.konlan.org|m.kxs7.com|m.lanseshuba.com|m.lbxs.com|m.ldw.la|m.lewenxiaoshuo.com|m.liewen.cc|m.liushuba.com|m.lkshu.com|m.longtanxs.com|m.luoqiu.com|m.lwtxt.net|m.miaobige.com|m.miaoshufang.com|m.mishug.com|m.mpzw.com|m.panqis.cn|m.qianrenge.cc|m.qu.la|m.ranwena.com|m.sanjiangge.com|m.shengyan.org|m.shuanshu.com|m.shuketxt.net|m.shumil.com|m.shuqu8.com|m.shuquge.com|m.shushu8.com|m.silukeke.com|m.sjtxt.la|m.snwx8.com|m.sosoxiaoshuo.cc|m.sqsxs.com|m.suimeng.la|m.tingshuge.com|m.tmetb.net|m.tsxsw.com|m.ttzw.com|m.txt2017.com|m.txtduo.com|m.tywxw.la|m.vodtw.com|m.wanjuanba.com|m.wantxt.com|m.wenxue6.com|m.wenxuem.com|m.wenxuemi.com|m.wodeshucheng.com|m.wodexiaoshuo1.cc|m.x81zw.com|m.xbxwx.net|m.xiaoxiaoshuwu.net|m.xiashu.la|m.xinshula.com|m.xs.la|m.xs222.tw|m.xy48.net|m.yawenb.com|m.ybdu.com|m.yssm.org|m.yunlaige.com|m.yuyouge.com|m.zbzw.la|m.zhenben.cc|m.zhuaji.org|m.zhuishubang.com|qihaoqihao.com|wap.xxbiquge.com|wap.yb3.cc|xntk.net|yfxiaoshuoa.com|zhxiaoshuoa.com|zwdu.com|k.heiyanwang.com|3g.wenxuem.com|m.biquyun.com|dm530.net
523 | |https://m.52biquge.com/*/true.js
524 | |https://m.52biquge.com/*/h.js
525 | |https://wap.xbiquge6.com/js/script.js
526 | |https://m.chenhuixsg.com/js/foot.js
527 | |https://m.chenhuixsg.com/js/p.js
528 | |https://m.chenhuixsg.com/js/b.js
529 | |https://m.chenhuixsg.com/js/p.js
530 | |https://m.chenhuixsg.com/js/y.js
531 | |https://m.chenhuixsg.com/js/hfz
532 | |https://m.cyxsi.com/js/foot.js
533 | |https://m.cyxsi.com/js/p.js
534 | |https://m.cyxsi.com/js/b.js
535 | |https://m.cyxsi.com/js/hfz
536 | |https://m.yfxiaoshuod.com/js/hfz
537 | |https://m.hfxiaoshuoa.com/js/foot.js
538 | |https://m.hfxiaoshuoa.com/js/p.js
539 | |https://m.hfxiaoshuoa.com/js/b.js
540 | |https://m.hfxiaoshuoa.com/js/y.js
541 | |https://m.hfxiaoshuoa.com/js/hfz
542 | |https://m.hlxiaoshuoa.com/js/foot.js
543 | |https://m.hlxiaoshuoa.com/js/p.js
544 | |https://m.hlxiaoshuoa.com/js/b.js
545 | |https://m.hlxiaoshuoa.com/js/y.js
546 | |https://m.hlxiaoshuoa.com/js/hfz
547 | |https://m.bichi.me/hepu/nydj
548 | |https://m.bichi.me/hepu/xxf.js
549 | |https://m.88dush.com/mobile/css/m.js
550 | |https://www.qihaoqihao.com/script/book.js
551 | ||https://ienkdaccessible.cn^
552 | |http://m.31wxw8.com/*/so.js
553 | ||https://edysn.cn^
554 | |https://www.93vitui.com/svr/weixin.aspx?
555 | |http://m.kukudm.com/mg/show2.js
556 | ||https://18tzx.com^
557 | ||https://uodoo.com^
558 | |https://track.uc.cn/collect?
559 | |https://rescn.u3.ucweb.com^
560 | |https://applog.uc.cn/collect?
561 | |https://m.cyxsi.com/js/m.js?$s@function _17mb_@function @
562 | |https://m.hfxiaoshuoa.com/js/wap.js?$s@function _17mb_@function @
563 | |https://m.hlxiaoshuoa.com/js/wap.js?$s@function _17mb_@function @
564 | |https://m.23uu.org/*/script/wap.js$s@function _17mb_@function @
565 | |https://m.fpzw.com/wap/wap.js$s@function style_@function @
566 | |http://m.biquge.com.tw/*/style.js$s@function m_@function @
567 | |https://m.x83zw.com/style/style.js$s@function yd_d@function @
568 | |https://m.beijingaishu.net/*/wap.js$s@function qijixs_@function @
569 | |https://m.bichi.me/wap/qijixs/wap.js$s@function xbaixs_@function @
570 | |https://m.booktxt.net/js/read.js$s@function _17mb@function @
571 | |https://m.bqg5.cc/js/main.js$s@function invoke1@function xxxx@
572 | |https://m.dhzw.org/js/wap.js$s@function xuanfu@function xxxxxx@
573 | |https://m.dhzw.org/js/wap.js$s@function yuedu@function xxxxxx@
574 | |https://m.hkslg.net/js/wap.js$s@function yuedu@function xxxxx@
575 | |https://m.lewenxiaoshuo.com/js/wap.js$s@function xuanfu@function xxxxxx@
576 | |https://m.lewenxiaoshuo.com/js/wap.js$s@function yuedu@function xxxxxx@
577 | |https://m.konlan.org/js/wap.js$s@function xuanfu@function xxxxxx@
578 | |https://m.konlan.org/js/wap.js$s@function yuedu@function xxxxxx@
579 | |https://m.sanjiangge.com/js/wap.js$s@function _17mb@function _xxxxx@
580 | |https://m.sanjiangge.com/fs/style.js$s@function _17mb@function _xxxxx@
581 | |https://m.snwx8.com/$s@function xuanxuan@function xxxxxx@
582 | |https://m.snwx8.com/$s@function yuedu@function xxxxxx@
583 | |https://m.sqsxs.com/js/wap.js$s@function xuanfu@function xxxxxx@
584 | |https://m.sqsxs.com/js/wap.js$s@function yuedu@function xxxxxx@
585 | |https://m.tmetb.net/js/wap.js$s@function xuanfu@function xxxxxx@
586 | |https://m.tmetb.net/js/wap.js$s@function yuedu@function xxxxxx@
587 | |https://m.wenxuemi6.com/js/common.js$s@function style_@function xxxxx_@
588 | |https://m.zwdu.com/scripts/common.js$s@function app3@function xxxxx@
589 | |http://m.biquge.com.tw/style/style.js$s@function middle(){*function uc_foot(){*}@@
590 | |https://m.biqugexsw.com/js/common.js$s@eval(function(*});@@
591 | !x ------------------------------------------ xiaoshuo TXT ADV ----------------------------------------------------
--------------------------------------------------------------------------------
/files/usr/share/koolproxy/data/rules/kp.dat:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |