package lean: add packages
This commit is contained in:
parent
bea1279eec
commit
53db75023e
62
package/lean/UnblockNeteaseMusic/Makefile
Normal file
62
package/lean/UnblockNeteaseMusic/Makefile
Normal file
@ -0,0 +1,62 @@
|
||||
#
|
||||
# Copyright (C) 2015-2016 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
#
|
||||
# licheng
|
||||
# www.maxlicheng.com
|
||||
# 2019-07-28
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=UnblockNeteaseMusic
|
||||
PKG_VERSION:=0.20.4
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/nondanee/UnblockNeteaseMusic.git
|
||||
PKG_SOURCE_VERSION:=023a97f0e62d322a8d64c59ef3942da7c8a1b546
|
||||
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
|
||||
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR)-$(PKG_VERSION).tar.gz
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=Revive unavailable songs for Netease Cloud Music
|
||||
DEPENDS:=+node
|
||||
URL:=https://github.com/nondanee/UnblockNeteaseMusic/releases
|
||||
SUBMENU:=NeteaseMusic
|
||||
PKGARCH:=all
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
Revive unavailable songs for Netease Cloud Music
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
tar -xzvf $(DL_DIR)/$(PKG_SOURCE) -C $(PKG_BUILD_DIR)
|
||||
mkdir -p $(PKG_BUILD_DIR)/$(PKG_NAME)
|
||||
echo -e $(PKG_VERSION) > $(PKG_BUILD_DIR)/$(PKG_NAME)/core_ver
|
||||
echo -e $(PKG_SOURCE_VERSION) > $(PKG_BUILD_DIR)/$(PKG_NAME)/local_ver
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_DIR) $(1)/usr/share/$(PKG_NAME)
|
||||
cp -pR $(PKG_BUILD_DIR)/$(PKG_NAME)/* $(1)/usr/share/$(PKG_NAME)
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||
70
package/lean/adbyby/Makefile
Normal file
70
package/lean/adbyby/Makefile
Normal file
@ -0,0 +1,70 @@
|
||||
#
|
||||
# Copyright (C) 2015-2016 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=adbyby
|
||||
PKG_VERSION:=2.7
|
||||
PKG_RELEASE:=20181023
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=Powerful adblock module to block ad.
|
||||
DEPENDS:=
|
||||
URL:=http://www.adbyby.com/
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
Adbyby is a powerful adblock module to block ad,just like adblock.
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_DIR) $(1)/usr/share/adbyby
|
||||
$(INSTALL_BIN) ./files/adbyby.sh $(1)/usr/share/adbyby/
|
||||
$(INSTALL_BIN) ./files/adbybyfirst.sh $(1)/usr/share/adbyby/
|
||||
$(INSTALL_BIN) ./files/adbybyupdate.sh $(1)/usr/share/adbyby/
|
||||
$(INSTALL_CONF) ./files/adhook.ini $(1)/usr/share/adbyby/
|
||||
$(INSTALL_CONF) ./files/user.action $(1)/usr/share/adbyby/
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/share/adbyby/data
|
||||
$(INSTALL_DATA) ./files/data/* $(1)/usr/share/adbyby/data/
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/share/adbyby/doc
|
||||
$(INSTALL_DATA) ./files/doc/* $(1)/usr/share/adbyby/doc/
|
||||
|
||||
ifeq ($(ARCH),mipsel)
|
||||
$(INSTALL_BIN) ./files/7620n/adbyby $(1)/usr/share/adbyby/
|
||||
endif
|
||||
ifeq ($(ARCH),mips)
|
||||
$(INSTALL_BIN) ./files/ar71xx/adbyby $(1)/usr/share/adbyby/
|
||||
endif
|
||||
ifeq ($(ARCH),i386)
|
||||
$(INSTALL_BIN) ./files/x86/adbyby $(1)/usr/share/adbyby/
|
||||
endif
|
||||
ifeq ($(ARCH),x86_64)
|
||||
$(INSTALL_BIN) ./files/x86_64/adbyby $(1)/usr/share/adbyby/
|
||||
endif
|
||||
ifeq ($(ARCH),arm)
|
||||
$(INSTALL_BIN) ./files/arm/adbyby $(1)/usr/share/adbyby/
|
||||
endif
|
||||
ifeq ($(ARCH),aarch64)
|
||||
$(INSTALL_BIN) ./files/armv7/adbyby $(1)/usr/share/adbyby/
|
||||
endif
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||
BIN
package/lean/adbyby/files/7620n/adbyby
Executable file
BIN
package/lean/adbyby/files/7620n/adbyby
Executable file
Binary file not shown.
16
package/lean/adbyby/files/adbyby.sh
Executable file
16
package/lean/adbyby/files/adbyby.sh
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
PROG_PATH=/usr/share/adbyby
|
||||
err=0
|
||||
until [ $err -ge 5 ]; do
|
||||
if [ -n "$(pgrep $PROG_PATH/adbyby)" ]; then
|
||||
iptables-save | grep ADBYBY >/dev/null || \
|
||||
/etc/init.d/adbyby add_rule
|
||||
sleep 10
|
||||
err=0
|
||||
else
|
||||
$PROG_PATH/adbyby --no-daemon &>/dev/null &
|
||||
sleep 1
|
||||
err=$((err+1))
|
||||
fi
|
||||
done
|
||||
/etc/init.d/adbyby del_rule
|
||||
11
package/lean/adbyby/files/adbybyfirst.sh
Executable file
11
package/lean/adbyby/files/adbybyfirst.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
PROG_PATH=/usr/share/adbyby
|
||||
if [ -z "$(dnsmasq --version | grep no-ipset)" ]; then
|
||||
[ $(uci get adbyby.@adbyby[-1].wan_mode) -ne 2 ] && \
|
||||
[ $(awk -F= '/^ipset/{print $2}' $PROG_PATH/adhook.ini) -eq 1 ] && \
|
||||
{
|
||||
sed -i 's/adbyby_list/adbyby_wan/' /tmp/adbyby_host.conf
|
||||
echo conf-file=/tmp/adbyby_host.conf >> /etc/dnsmasq.conf
|
||||
/etc/init.d/dnsmasq restart
|
||||
}
|
||||
fi
|
||||
11
package/lean/adbyby/files/adbybyupdate.sh
Executable file
11
package/lean/adbyby/files/adbybyupdate.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
PROG_PATH=/usr/share/adbyby
|
||||
if [ -z "$(dnsmasq --version | grep no-ipset)" ]; then
|
||||
[ $(uci get adbyby.@adbyby[-1].wan_mode) -ne 2 ] && \
|
||||
[ $(awk -F= '/^ipset/{print $2}' $PROG_PATH/adhook.ini) -eq 1 ] && \
|
||||
{
|
||||
sed -i 's/adbyby_list/adbyby_wan/' /tmp/adbyby_host.conf
|
||||
ipset -F adbyby_wan 2>/dev/null
|
||||
/etc/init.d/dnsmasq restart
|
||||
}
|
||||
fi
|
||||
14
package/lean/adbyby/files/adhook.ini
Executable file
14
package/lean/adbyby/files/adhook.ini
Executable file
@ -0,0 +1,14 @@
|
||||
[cfg]
|
||||
### 2.1 ###
|
||||
listen-address=0.0.0.0:8118
|
||||
buffer-limit=1024
|
||||
keep-alive-timeout=30
|
||||
socket-timeout=60
|
||||
### 2.5 ###
|
||||
max_client_connections=0
|
||||
### 2.6 ###
|
||||
stack_size=200
|
||||
auto_restart=0
|
||||
### 2.7 ###
|
||||
debug=0
|
||||
ipset=0
|
||||
BIN
package/lean/adbyby/files/ar71xx/adbyby
Executable file
BIN
package/lean/adbyby/files/ar71xx/adbyby
Executable file
Binary file not shown.
BIN
package/lean/adbyby/files/arm/adbyby
Executable file
BIN
package/lean/adbyby/files/arm/adbyby
Executable file
Binary file not shown.
BIN
package/lean/adbyby/files/armv7/adbyby
Executable file
BIN
package/lean/adbyby/files/armv7/adbyby
Executable file
Binary file not shown.
BIN
package/lean/adbyby/files/data/lazy.bin
Normal file
BIN
package/lean/adbyby/files/data/lazy.bin
Normal file
Binary file not shown.
25
package/lean/adbyby/files/data/lazy.txt
Normal file
25
package/lean/adbyby/files/data/lazy.txt
Normal file
@ -0,0 +1,25 @@
|
||||
! -----¸üÐÂʱ¼ä: 2018-10-08 23:07:52 by:xwhyc-----
|
||||
.php?ad=
|
||||
/99rejs/js
|
||||
/agetsou.js^
|
||||
/c@*!25.js|$script
|
||||
/cococ-66/$script
|
||||
/defaultts.tc.qq.com/*.ts?index=0&start=0&
|
||||
/defaultts.tc.qq.com/*.ts?index=0&start=0&end=*&ver=4
|
||||
/gg_js/
|
||||
/imgs.js?t=
|
||||
/js/adtop.js|
|
||||
/js/guanggao_gg.js?d=
|
||||
/js/sss/ad.js
|
||||
/static/js/aall.js
|
||||
/unionjs/$script
|
||||
/variety.tc.qq.com/*.mp4^*fmt=hd
|
||||
/variety.tc.qq.com/*.mp4^*fmt=shd
|
||||
/video.dispatch.tc.qq.com/*.mp4^*sdtfrom=
|
||||
/view/image/QT_HY.jpg?t=
|
||||
/view/js/slade.js|$script
|
||||
/vlive.qqvideo.tc.qq.com/*.mp4^*fmt=hd
|
||||
/vlive.qqvideo.tc.qq.com/*.mp4^*fmt=shd
|
||||
/vmind.qqvideo.tc.qq.com/*.mp4^*sdtfrom=
|
||||
/vmindhls.tc.qq.com/*ugc=0&ga=0&gv=0&start=
|
||||
/zzhzgg.js
|
||||
15
package/lean/adbyby/files/data/rules.txt
Normal file
15
package/lean/adbyby/files/data/rules.txt
Normal file
@ -0,0 +1,15 @@
|
||||
! ------------------------------ ADByby 自定义过滤语法简表---------------------------------
|
||||
! -------------- 规则基于abp规则,并进行了字符替换部分的扩展-----------------------------
|
||||
! ABP规则请参考https://adblockplus.org/zh_CN/filters,下面为大致摘要
|
||||
! "!" 为行注释符,注释行以该符号起始作为一行注释语义,用于规则描述
|
||||
! "*" 为字符通配符,能够匹配0长度或任意长度的字符串,该通配符不能与正则语法混用。
|
||||
! "^" 为分隔符,可以是除了字母、数字或者 _ - . % 之外的任何字符。
|
||||
! "|" 为管线符号,来表示地址的最前端或最末端
|
||||
! "||" 为子域通配符,方便匹配主域名下的所有子域。
|
||||
! "~" 为排除标识符,通配符能过滤大多数广告,但同时存在误杀, 可以通过排除标识符修正误杀链接。
|
||||
! "##" 为元素选择器标识符,后面跟需要隐藏元素的CSS样式例如 #ad_id .ad_class
|
||||
!! 元素隐藏暂不支持全局规则和排除规则
|
||||
!! 字符替换扩展
|
||||
! 文本替换选择器标识符,后面跟需要替换的文本数据,格式:$s@模式字符串@替换后的文本@
|
||||
! 支持通配符*和?
|
||||
! -------------------------------------------------------------------------------------------
|
||||
0
package/lean/adbyby/files/data/user.txt
Normal file
0
package/lean/adbyby/files/data/user.txt
Normal file
30
package/lean/adbyby/files/data/video.txt
Normal file
30
package/lean/adbyby/files/data/video.txt
Normal file
@ -0,0 +1,30 @@
|
||||
! -----更新时间: 2018-10-08 23:06:11 by:xwhyc-----------------------------------------------
|
||||
! -----广告反馈:http://www.adbyby.com/help.htm QQ群: 79547134(满), 364066294(满),470705224(满),534897434,438394572--------------
|
||||
|
||||
|
||||
!-------------------------------------------
|
||||
/showadv/
|
||||
3199.cn###ad640,[id^="ad0"]
|
||||
76fengyun.com###down_box{display:block!important;}.gggg,.ggao
|
||||
9553.com##[class="zm"]
|
||||
962.net##.show_ad,.g-962-ad
|
||||
amazon.cn##.adv-float-div
|
||||
downsx.rocks##.adbox,.Left-ad3_fixed,.google-ad2_fixed
|
||||
edu-acc.cn###doyoo_monitor
|
||||
fx678.com##[class^="adv-"]
|
||||
||76fengyun.com/body22233.js
|
||||
||76fengyun.com/file/$s@onclick="window.open('*');startWait();"@onclick="window.open(document.getElementById('downpage_link').href);startWait();"@
|
||||
||atanx.alicdn.com/t/tanxssp.js?_v=
|
||||
||biquguan.com/guan/$script
|
||||
||djv99sxoqpv11.cloudfront.net
|
||||
||jmxlaser.com
|
||||
||jump2.bdimg.com/p/$s@<div class="l_post l_post_bright j_l_post clearfix ?????????? "@<div style="display:none"@
|
||||
||nxkycx.com
|
||||
||res.jklan.cn/wp-content/themes/tt/js/system.js?ver=$s@function goto()@function xxx()@
|
||||
||tieba.com/p/$s@<div class="l_post l_post_bright j_l_post clearfix ?????????? "@<div style="display:none"@
|
||||
||ychap.com
|
||||
!-----------------------
|
||||
/qkostn.js|
|
||||
|http://mark.l.qq.com/fcgi-bin/get_video_mark_all*&strAdParam=
|
||||
!---------adbyby---------
|
||||
|
||||
1
package/lean/adbyby/files/doc/hidecss.js
Normal file
1
package/lean/adbyby/files/doc/hidecss.js
Normal file
File diff suppressed because one or more lines are too long
10
package/lean/adbyby/files/update.info
Executable file
10
package/lean/adbyby/files/update.info
Executable file
@ -0,0 +1,10 @@
|
||||
;¸üйæÔòurl,dir,size,reverse,reverse
|
||||
http://update.adbyby.com/rule3/lazy.jpg \data\lazy.txt 385337 4 0
|
||||
http://update.adbyby.com/rule3/video.jpg \data\video.txt 1028 4 0
|
||||
http://update.adbyby.com/rule3/user.action \user.action 512 5 0
|
||||
http://update.adbyby.com/rule3/clean.ini \data\clean.ini 2167 0 0
|
||||
http://update.adbyby.com/rule3/adclear.ini \data\adclear.ini 4901 0 0
|
||||
https://github.com/gchangchen/suho/raw/master/adhook.dll \adhook.dll 117248 0 0 2.4.3.2
|
||||
https://github.com/gchangchen/suho/raw/master/adhook64.dll \adhook64.dll 142848 0 0 2.4.3.2
|
||||
https://github.com/gchangchen/suho/raw/master/adbyby.exe \adbyby.exe 1004183 1 0 2.4.4.0
|
||||
|
||||
0
package/lean/adbyby/files/user.action
Executable file
0
package/lean/adbyby/files/user.action
Executable file
BIN
package/lean/adbyby/files/x86/adbyby
Executable file
BIN
package/lean/adbyby/files/x86/adbyby
Executable file
Binary file not shown.
BIN
package/lean/adbyby/files/x86_64/adbyby
Executable file
BIN
package/lean/adbyby/files/x86_64/adbyby
Executable file
Binary file not shown.
109
package/lean/amule/Makefile
Normal file
109
package/lean/amule/Makefile
Normal file
@ -0,0 +1,109 @@
|
||||
#
|
||||
# Copyright (C) 2007-2009 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=aMule
|
||||
PKG_VERSION:=20190827
|
||||
PKG_RELEASE:=1
|
||||
PKG_REV=2a1b092
|
||||
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-r$(PKG_REV).tar.bz2
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_VERSION:=$(PKG_REV)
|
||||
PKG_SOURCE_URL:=https://github.com/amule-project/amule.git
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_BUILD_DEPENDS:=libgd libcryptopp
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
|
||||
define Package/amule/config
|
||||
config AMULE_CRYPTOPP_STATIC_LINKING
|
||||
bool "Link libcryptopp statically"
|
||||
default y
|
||||
endef
|
||||
|
||||
define Package/amule
|
||||
SUBMENU:=P2P
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=A multi-platform eMule-like ed2k client
|
||||
URL:=http://www.amule.org/
|
||||
DEPENDS:=+libpng +libpthread +libncurses +libreadline +libwxbase +libupnp +libbfd \
|
||||
$(ICONV_DEPENDS) $(INTL_DEPENDS) +!AMULE_CRYPTOPP_STATIC_LINKING:libcryptopp
|
||||
endef
|
||||
|
||||
CONFIGURE_ARGS+= \
|
||||
--disable-static \
|
||||
--disable-rpath \
|
||||
--with-gnu-ld \
|
||||
--disable-ccache \
|
||||
--disable-optimize \
|
||||
--disable-profile \
|
||||
--disable-monolithic \
|
||||
--enable-amule-daemon \
|
||||
--enable-amulecmd \
|
||||
--enable-webserver \
|
||||
--disable-amule-gui \
|
||||
--disable-cas \
|
||||
--disable-wxcas \
|
||||
--disable-ed2k \
|
||||
--disable-alc \
|
||||
--disable-alcc \
|
||||
--disable-fileview \
|
||||
--disable-plasmamule \
|
||||
--without-wxdebug \
|
||||
--enable-dlp \
|
||||
--enable-upnp \
|
||||
--with-zlib="$(STAGING_DIR)/usr" \
|
||||
--with-gdlib-prefix="$(STAGING_DIR)/usr" \
|
||||
--with-libpng-prefix="$(STAGING_DIR)/usr" \
|
||||
--with-wx-prefix="$(STAGING_DIR)/usr" \
|
||||
--with-crypto-prefix="$(STAGING_DIR)/usr" \
|
||||
--with-libiconv-prefix="$(ICONV_PREFIX)" \
|
||||
--with-libintl-prefix="$(INTL_PREFIX)" \
|
||||
--with-libupnp-prefix="$(STAGING_DIR)/usr" \
|
||||
--without-x \
|
||||
--disable-debug
|
||||
|
||||
TARGET_LDFLAGS += -liconv
|
||||
|
||||
|
||||
define Build/Configure
|
||||
cd $(PKG_BUILD_DIR) && sh ./autogen.sh
|
||||
$(call Build/Configure/Default)
|
||||
endef
|
||||
|
||||
ifeq ($(CONFIG_AMULE_CRYPTOPP_STATIC_LINKING),y)
|
||||
SED_CMD:=sed
|
||||
else
|
||||
SED_CMD:=true
|
||||
endif
|
||||
|
||||
define Build/Compile
|
||||
$(SED_CMD) -i 's;^CRYPTOPP_LIBS.*;CRYPTOPP_LIBS \= "$(STAGING_DIR)/usr/lib/libcryptopp.a";g' \
|
||||
$(PKG_BUILD_DIR)/src/Makefile
|
||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
||||
HOSTCC="$(HOSTCC)" \
|
||||
DESTDIR="$(PKG_INSTALL_DIR)" \
|
||||
all
|
||||
endef
|
||||
|
||||
define Package/amule/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_DIR) $(1)/usr/share/amule/webserver
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/amule{cmd,d} $(1)/usr/bin/
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/webserver/src/amuleweb $(1)/usr/bin/
|
||||
$(CP) $(PKG_BUILD_DIR)/src/webserver/default $(1)/usr/share/amule/webserver
|
||||
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,amule))
|
||||
58
package/lean/antileech/Makefile
Normal file
58
package/lean/antileech/Makefile
Normal file
@ -0,0 +1,58 @@
|
||||
#
|
||||
# Copyright (C) 2007-2009 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=antileech
|
||||
PKG_VERSION:=2.3.2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
#PKG_SOURCE:=antileech-2.3.1.tar.gz
|
||||
#PKG_SOURCE_URL:=@SF/amule
|
||||
#PKG_MD5SUM:=a892a1cc00d03e943e03434d182fe73e
|
||||
|
||||
PKG_BUILD_DEPENDS:=libgd
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
|
||||
define Package/antileech
|
||||
SUBMENU:=P2P
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=AntiLeech for amule
|
||||
URL:=http://www.amule.org/
|
||||
DEPENDS:=+libc +amule +libwxbase
|
||||
endef
|
||||
|
||||
TARGET_LDFLAGS += \
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
$(CP) ./src/* $(PKG_BUILD_DIR)/
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
sed -i "s:^AC_CHECK_PROG.WXCONFIG,.*::g" $(PKG_BUILD_DIR)/configure.ac
|
||||
sed -i "s:wx-config --cppflags:$(STAGING_DIR)/usr/bin/wx-config --cppflags:g" $(PKG_BUILD_DIR)/configure.ac
|
||||
cd $(PKG_BUILD_DIR) && sh ./autogen.sh
|
||||
$(call Build/Configure/Default)
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(MAKE) -k -C $(PKG_BUILD_DIR) \
|
||||
HOSTCC="$(HOSTCC)" \
|
||||
DESTDIR="$(PKG_INSTALL_DIR)" \
|
||||
all install
|
||||
endef
|
||||
|
||||
define Package/antileech/install
|
||||
$(INSTALL_DIR) $(1)/usr/share/amule
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/amule/libantiLeech.so $(1)/usr/share/amule
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,antileech))
|
||||
63
package/lean/antileech/src/CString_wx.h
Normal file
63
package/lean/antileech/src/CString_wx.h
Normal file
@ -0,0 +1,63 @@
|
||||
/**
|
||||
* Author: Bill Lee<bill.lee.y@gmail.com>
|
||||
* License: GNU GPL
|
||||
*/
|
||||
//---------------------
|
||||
#ifndef CSTRING_WX_H
|
||||
#define CSTRING_WX_H
|
||||
|
||||
//#include <wx/wx.h>
|
||||
#include <wx/string.h>
|
||||
|
||||
class CString : public wxString{
|
||||
public:
|
||||
CString(){}
|
||||
CString(wxChar c, size_t n=1): wxString(c, n){}
|
||||
CString(const wxChar* str): wxString(str){}
|
||||
CString(const wxString& str): wxString(str){}
|
||||
CString(const CString& str): wxString(str){}
|
||||
//---------------------
|
||||
CString& operator=(const wxChar* str){
|
||||
wxString::operator=(str);
|
||||
return *this;
|
||||
}
|
||||
//operator*() from wxString;
|
||||
size_t GetLength()const{ return Length(); }
|
||||
wxChar GetAt(size_t nIndex)const{ return GetChar(nIndex); }
|
||||
//IsEmpty() from wxString;
|
||||
CString& TrimLeft(wxChar c){
|
||||
size_t pos = find_first_not_of(c);
|
||||
if(pos == 0)
|
||||
return *this;
|
||||
erase(0, pos);
|
||||
return *this;
|
||||
}
|
||||
CString& TrimRight(wxChar c){
|
||||
size_t pos = find_last_not_of(c) + 1;
|
||||
if(pos == Length())
|
||||
return *this;
|
||||
erase(pos, Length() - pos);
|
||||
return *this;
|
||||
}
|
||||
CString Trim(){
|
||||
CString ret(*this);
|
||||
ret.wxString::Trim(false); /* wxString::Trim(bool fromright = true) */
|
||||
ret.wxString::Trim(true);
|
||||
return ret;
|
||||
}
|
||||
//Find(wxChar) and Find(wxChar*) from wxString;
|
||||
int Find(const CString& str)const{ return wxString::Find(str.c_str()); }
|
||||
int ReverseFind(const wxChar c)const{ return wxString::Find(c, true); }
|
||||
int ReverseFind(const wxChar* str)const{ return rfind(str); }
|
||||
int ReverseFind(const CString& str)const{ return rfind(str); }
|
||||
CString Right(size_t len)const{ return wxString::Right(len); }
|
||||
CString Left(size_t len)const{ return wxString::Left(len); }
|
||||
#if wxCHECK_VERSION(2, 9, 0)
|
||||
CString Mid(size_t first, size_t count = wxString::npos)const{
|
||||
#else
|
||||
CString Mid(size_t first, size_t count = wxSTRING_MAXLEN)const{
|
||||
#endif
|
||||
return wxString::Mid(first, count);
|
||||
}
|
||||
};
|
||||
#endif
|
||||
28
package/lean/antileech/src/Interface.cpp
Normal file
28
package/lean/antileech/src/Interface.cpp
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* =====================================================================================
|
||||
*
|
||||
* Filename: Interface.cpp
|
||||
*
|
||||
* Description: A part of aMule DLP
|
||||
*
|
||||
* Created: 2011-02-24 19:49
|
||||
*
|
||||
* Author: Bill Lee , bill.lee.y@gmail.com
|
||||
*
|
||||
* Copyright (c) 2011, Bill Lee
|
||||
* License: GNU General Public License
|
||||
*
|
||||
* =====================================================================================
|
||||
*/
|
||||
|
||||
/* ##### HEADER FILE INCLUDES ################################################### */
|
||||
#include "antiLeech.h"
|
||||
|
||||
/* ##### FUNCTION DEFINITIONS - EXPORTED FUNCTIONS ############################ */
|
||||
extern "C" IantiLeech* createAntiLeechInstant(){
|
||||
return new CantiLeech;
|
||||
}
|
||||
extern "C" int destoryAntiLeechInstant(IantiLeech* ptr){
|
||||
delete ptr;
|
||||
return 0;
|
||||
}
|
||||
16
package/lean/antileech/src/Makefile.am
Executable file
16
package/lean/antileech/src/Makefile.am
Executable file
@ -0,0 +1,16 @@
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
pkgdir = $(datadir)/amule
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
pkg_LTLIBRARIES = libantiLeech.la
|
||||
libantiLeech_la_CPPFLAGS = ${ANTILEECH_CPPFLAGS}
|
||||
libantiLeech_la_LDFLAGS = ${ANTILEECH_LDFLAGS} -module -avoid-version --no-la-files
|
||||
libantiLeech_la_SOURCES = \
|
||||
antiLeech.h \
|
||||
antiLeech_wx.h \
|
||||
CString_wx.h \
|
||||
antiLeech.cpp \
|
||||
antiLeech_wx.cpp \
|
||||
Interface.cpp
|
||||
|
||||
1599
package/lean/antileech/src/antiLeech.cpp
Normal file
1599
package/lean/antileech/src/antiLeech.cpp
Normal file
File diff suppressed because it is too large
Load Diff
161
package/lean/antileech/src/antiLeech.h
Normal file
161
package/lean/antileech/src/antiLeech.h
Normal file
@ -0,0 +1,161 @@
|
||||
#ifndef ANTILEECH_H
|
||||
#define ANTILEECH_H
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "antiLeech_wx.h"
|
||||
#include "CString_wx.h"
|
||||
|
||||
class IantiLeech
|
||||
{
|
||||
public:
|
||||
virtual ~IantiLeech(){}; /* Bill Lee: Not be used currently */
|
||||
//BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD,LPVOID);
|
||||
virtual DWORD GetDLPVersion() = 0;
|
||||
//old versions to keep compatible
|
||||
/* //drop old version support
|
||||
virtual LPCTSTR DLPCheckModstring(LPCTSTR modversion, LPCTSTR clientversion);
|
||||
virtual LPCTSTR DLPCheckUsername(LPCTSTR username);
|
||||
virtual LPCTSTR DLPCheckNameAndHash(CString username, CString& userhash);
|
||||
*/
|
||||
//new versions
|
||||
virtual LPCTSTR DLPCheckModstring_Hard(LPCTSTR modversion, LPCTSTR clientversion) = 0;
|
||||
virtual LPCTSTR DLPCheckModstring_Soft(LPCTSTR modversion, LPCTSTR clientversion) = 0;
|
||||
virtual LPCTSTR DLPCheckUsername_Hard(LPCTSTR username) = 0;
|
||||
virtual LPCTSTR DLPCheckUsername_Soft(LPCTSTR username) = 0;
|
||||
virtual LPCTSTR DLPCheckNameAndHashAndMod(const CString& username, const CString& userhash, const CString& modversion) = 0;
|
||||
virtual LPCTSTR DLPCheckMessageSpam(LPCTSTR messagetext) = 0;
|
||||
|
||||
|
||||
virtual LPCTSTR DLPCheckUserhash(const PBYTE userhash) = 0;
|
||||
|
||||
|
||||
virtual LPCTSTR DLPCheckHelloTag(UINT tagnumber) = 0;
|
||||
virtual LPCTSTR DLPCheckInfoTag(UINT tagnumber) = 0;
|
||||
|
||||
//void TestFunc();
|
||||
|
||||
//Bill Lee: no need in interface abstract class
|
||||
//private:
|
||||
// static bool IsTypicalHex (const CString& addon);
|
||||
};
|
||||
|
||||
//Bill Lee: never call delete on IantiLeech, use destoryAntiLeechInstat instead.
|
||||
extern "C" IantiLeech* createAntiLeechInstant();
|
||||
extern "C" int destoryAntiLeechInstant(IantiLeech*);
|
||||
|
||||
class CantiLeech: public IantiLeech
|
||||
{
|
||||
public:
|
||||
//BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD,LPVOID);
|
||||
virtual DWORD GetDLPVersion(){ return DLPVersion; }
|
||||
//old versions to keep compatible
|
||||
/* //drop old version support
|
||||
virtual LPCTSTR DLPCheckModstring(LPCTSTR modversion, LPCTSTR clientversion);
|
||||
virtual LPCTSTR DLPCheckUsername(LPCTSTR username);
|
||||
virtual LPCTSTR DLPCheckNameAndHash(CString username, CString& userhash);
|
||||
*/
|
||||
//new versions
|
||||
virtual LPCTSTR DLPCheckModstring_Hard(LPCTSTR modversion, LPCTSTR clientversion);
|
||||
virtual LPCTSTR DLPCheckModstring_Soft(LPCTSTR modversion, LPCTSTR clientversion);
|
||||
virtual LPCTSTR DLPCheckUsername_Hard(LPCTSTR username);
|
||||
virtual LPCTSTR DLPCheckUsername_Soft(LPCTSTR username);
|
||||
virtual LPCTSTR DLPCheckNameAndHashAndMod(const CString& username, const CString& userhash, const CString& modversion);
|
||||
virtual LPCTSTR DLPCheckMessageSpam(LPCTSTR messagetext);
|
||||
|
||||
|
||||
virtual LPCTSTR DLPCheckUserhash(const PBYTE userhash);
|
||||
|
||||
|
||||
virtual LPCTSTR DLPCheckHelloTag(UINT tagnumber);
|
||||
virtual LPCTSTR DLPCheckInfoTag(UINT tagnumber);
|
||||
|
||||
//void TestFunc();
|
||||
|
||||
private:
|
||||
static const DWORD DLPVersion;
|
||||
static bool IsTypicalHex (const CString& addon);
|
||||
};
|
||||
|
||||
//<<< new tags from eMule 0.04x
|
||||
#define CT_UNKNOWNx0 0x00 // Hybrid Horde protocol
|
||||
#define CT_UNKNOWNx12 0x12 // http://www.haspepapa-welt.de (DodgeBoards)
|
||||
#define CT_UNKNOWNx13 0x13 // http://www.haspepapa-welt.de (DodgeBoards)
|
||||
#define CT_UNKNOWNx14 0x14 // http://www.haspepapa-welt.de (DodgeBoards)
|
||||
#define CT_UNKNOWNx15 0x15 // http://www.haspepapa-welt.de (DodgeBoards) & DarkMule |eVorte|X|
|
||||
#define CT_UNKNOWNx16 0x16 // http://www.haspepapa-welt.de (DodgeBoards)
|
||||
#define CT_UNKNOWNx17 0x17 // http://www.haspepapa-welt.de (DodgeBoards)
|
||||
#define CT_UNKNOWNx4D 0x4D // pimp my mule (00de)
|
||||
#define CT_UNKNOWNxE6 0xE6 // http://www.haspepapa-welt.de
|
||||
#define CT_UNKNOWNx22 0x22 // DarkMule |eVorte|X|
|
||||
#define CT_UNKNOWNx5D 0x5D // md4
|
||||
#define CT_UNKNOWNx63 0x63 // ?
|
||||
#define CT_UNKNOWNx64 0x64 // ?
|
||||
#define CT_UNKNOWNx69 0x69 // eMuleReactor //Xman don't use this, it's webcache!
|
||||
#define CT_UNKNOWNx6B 0x6B // md4
|
||||
#define CT_UNKNOWNx6C 0x6C // md4
|
||||
#define CT_UNKNOWNx74 0x74 // md4
|
||||
#define CT_UNKNOWNx76 0x76 // www.donkey2002.to
|
||||
#define CT_UNKNOWNx79 0x79 // Bionic
|
||||
#define CT_UNKNOWNx7A 0x7A // NewDarkMule
|
||||
#define CT_UNKNOWNx83 0x83 // Fusspi
|
||||
#define CT_UNKNOWNx87 0x87 // md4
|
||||
#define CT_UNKNOWNx88 0x88 // DarkMule v6 |eVorte|X|
|
||||
#define CT_UNKNOWNx8c 0x8c // eMule v0.27c [LSD7c]
|
||||
#define CT_UNKNOWNx8d 0x8d // unknown Leecher - (client version:60)
|
||||
#define CT_UNKNOWNx94 0x94 // 00.de community //Xman 20.08.05
|
||||
#define CT_UNKNOWNx97 0x97 // Emulereactor Community Mod
|
||||
#define CT_UNKNOWNx98 0x98 // Emulereactor Community Mod
|
||||
#define CT_UNKNOWNx99 0x99 // eMule v0.26d [RAMMSTEIN 8b]
|
||||
#define CT_UNKNOWNx9C 0x9C // Emulereactor Community Mod
|
||||
#define CT_UNKNOWNxbb 0xbb // emule.de (client version:60)
|
||||
#define CT_UNKNOWNxc4 0xc4 //MD5 Community from new bionic - hello
|
||||
#define CT_UNKNOWNxC8 0xc8 // MD5 Community from new bionic - hello //Xman x4
|
||||
#define CT_UNKNOWNxCA 0xCA // NewDarkMule
|
||||
#define CT_UNKNOWNxCD 0xCD // www.donkey2002.to
|
||||
#define CT_UNKNOWNxCE 0xCE // FRZ community //Xman 20.08.05
|
||||
#define CT_UNKNOWNxCF 0xCF // FRZ community //Xman 20.08.05
|
||||
#define CT_UNKNOWNxDA 0xDA // Emulereactor Community Mod
|
||||
#define CT_UNKNOWNxEC 0xec // SpeedMule and clones //Xman x4
|
||||
#define CT_UNKNOWNxF0 0xF0 // Emulereactor Community Mod
|
||||
#define CT_UNKNOWNxF4 0xF4 // Emulereactor Community Mod
|
||||
#define CT_UNKNOWNxD2 0xD2 // Chinese Leecher //SquallATF
|
||||
//#define CT_UNKNOWNx85 0x85 // viper-israel.org and eChanblardNext //zz_fly, viper become good
|
||||
|
||||
#define CT_FRIENDSHARING 0x66 //eWombat [SNAFU]
|
||||
#define CT_DARK 0x54 //eWombat [SNAFU]
|
||||
#define FRIENDSHARING_ID 0x5F73F1A0 // Magic Key, DO NOT CHANGE!
|
||||
|
||||
// unknown eMule tags
|
||||
#define ET_MOD_UNKNOWNx12 0x12 // http://www.haspepapa-welt.de
|
||||
#define ET_MOD_UNKNOWNx13 0x13 // http://www.haspepapa-welt.de
|
||||
#define ET_MOD_UNKNOWNx14 0x14 // http://www.haspepapa-welt.de
|
||||
#define ET_MOD_UNKNOWNx17 0x17 // http://www.haspepapa-welt.de
|
||||
#define ET_MOD_UNKNOWNx2F 0x2F // eMule v0.30 [OMEGA v.07 Heiko]
|
||||
#define ET_MOD_UNKNOWNx30 0x30 // aMule 1.2.0
|
||||
#define ET_MOD_UNKNOWNx36 0x36 // eMule v0.26
|
||||
#define ET_MOD_UNKNOWNx3C 0x3C // enkeyDev.6 / LamerzChoice 9.9a
|
||||
#define ET_MOD_UNKNOWNx41 0x41 // CrewMod (pre-release mod based on Plus) identification
|
||||
#define ET_MOD_UNKNOWNx42 0x42 // CrewMod (pre-release mod based on Plus) key verification
|
||||
#define ET_MOD_UNKNOWNx43 0x43 // CrewMod (pre-release mod based on Plus) version info
|
||||
#define ET_MOD_UNKNOWNx50 0x50 // Bionic 0.20 Beta]
|
||||
#define ET_MOD_UNKNOWNx59 0x59 // emule 0.40 / eMule v0.30 [LSD.12e]
|
||||
#define ET_MOD_UNKNOWNx5B 0x5B // eMule v0.26
|
||||
#define ET_MOD_UNKNOWNx60 0x60 // eMule v0.30a Hunter.6 + eMule v0.26
|
||||
#define ET_MOD_UNKNOWNx64 0x64 // LSD.9dT / Athlazan(0.29c)Alpha.3
|
||||
#define ET_MOD_UNKNOWNx76 0x76 // http://www.haspepapa-welt.de (DodgeBoards)
|
||||
#define ET_MOD_UNKNOWNx84 0x84 // eChanblardv3.2
|
||||
#define ET_MOD_UNKNOWNx85 0x85 // ?
|
||||
#define ET_MOD_UNKNOWNx86 0x86 // ?
|
||||
#define ET_MOD_UNKNOWNx93 0x93 // ?
|
||||
#define ET_MOD_UNKNOWNxA6 0xA6 // eMule v0.26
|
||||
#define ET_MOD_UNKNOWNxB1 0xB1 // Bionic 0.20 Beta]
|
||||
#define ET_MOD_UNKNOWNxB4 0xB4 // Bionic 0.20 Beta]
|
||||
#define ET_MOD_UNKNOWNxC8 0xC8 // Bionic 0.20 Beta]
|
||||
#define ET_MOD_UNKNOWNxC9 0xC9 // Bionic 0.20 Beta]
|
||||
#define ET_MOD_UNKNOWNxDA 0xDA // Rumata (rus)(Plus v1f) - leecher mod?
|
||||
//>>> eWombat [SNAFU_V3]
|
||||
|
||||
#undef __declspec
|
||||
#endif
|
||||
25
package/lean/antileech/src/antiLeech_wx.cpp
Normal file
25
package/lean/antileech/src/antiLeech_wx.cpp
Normal file
@ -0,0 +1,25 @@
|
||||
//Author: greensea <gs@bbxy.net>
|
||||
#include "antiLeech_wx.h" //Modified by Bill Lee.
|
||||
|
||||
//Bug fixed by Orzogc Lee
|
||||
LPCTSTR StrStrI(LPCTSTR haystack, LPCTSTR needle){
|
||||
//Bill Lee: allocate wchar array on the stack
|
||||
wchar_t haystacki[512];
|
||||
wchar_t needlei[512];
|
||||
int i = 0;
|
||||
do{
|
||||
haystacki[i] = towlower(haystack[i]);
|
||||
if(i == 511)
|
||||
break;
|
||||
}while(haystack[i++]); //As haystacki is allocated on the stack, it wans't set 0. So the NULL needs to be copy.
|
||||
i = 0;
|
||||
do{
|
||||
needlei[i] = towlower(needle[i]);
|
||||
if(i == 511)
|
||||
break;
|
||||
}while(needle[i++]);
|
||||
const wchar_t* ret = wcsstr(haystacki, needlei);
|
||||
if(ret != NULL)
|
||||
ret = ret - haystacki + haystack;
|
||||
return ret;
|
||||
}
|
||||
54
package/lean/antileech/src/antiLeech_wx.h
Normal file
54
package/lean/antileech/src/antiLeech_wx.h
Normal file
@ -0,0 +1,54 @@
|
||||
#ifndef ANTILEECH_WX_H
|
||||
#define ANTILEECH_WX_H
|
||||
|
||||
#include <wx/defs.h>
|
||||
#include <string.h>
|
||||
#include <wctype.h> // for towlower()
|
||||
|
||||
#define LPCTSTR const wxChar*
|
||||
#define BOOL bool
|
||||
//#define _T(var) wxT(var) //defined in wxWidgets
|
||||
#define DWORD wxUint32
|
||||
#define UINT wxUint16
|
||||
#define WINAPI
|
||||
#define HINSTANCE
|
||||
#define LPVOID void*
|
||||
#define PBYTE unsigned char*
|
||||
#define TCHAR wxChar
|
||||
#define _TINT wxInt32
|
||||
#define SSIZE_T ptrdiff_t
|
||||
|
||||
#define StrCmpI _tcsicmp
|
||||
#define _tcsicmp _wcsicmp
|
||||
|
||||
#define _istdigit(var) iswdigit(var)
|
||||
#define _istcntrl(var) iswcntrl(var)
|
||||
#define _istpunct(var) iswpunct(var)
|
||||
#define _istspace(var) iswspace(var)
|
||||
#define _istxdigit(var) iswxdigit(var)
|
||||
inline float _tstof(const wchar_t* str){
|
||||
wchar_t** ptail = NULL;
|
||||
return wcstof(str, ptail);
|
||||
}
|
||||
//This function is not used. by Orzogc Lee
|
||||
//But I think there is no need to removing, linker will remove it.
|
||||
/*
|
||||
inline void tolowers(wxChar* str){
|
||||
int i = 0;
|
||||
do{
|
||||
str[i] = towlower(str[i]);
|
||||
}while(str[++i]);
|
||||
}
|
||||
*/
|
||||
#define _tcsstr(haystack, needle) wcsstr(haystack, needle)
|
||||
#define _tcslen(var) wcslen(var)
|
||||
#define StrStr(a, b) wcsstr(a, b)
|
||||
#define StrStrIW(a, b) StrStrI(a, b)
|
||||
|
||||
LPCTSTR StrStrI(LPCTSTR haystack, LPCTSTR needle);
|
||||
//Bill Lee: I think inlining this function make no senses, because it is a very large operation.
|
||||
|
||||
#define _wcsicmp(a, b) wcscasecmp(a, b)
|
||||
#define StrCmpIW(a, b) wcscasecmp(a, b)
|
||||
|
||||
#endif
|
||||
8
package/lean/antileech/src/autogen.sh
Executable file
8
package/lean/antileech/src/autogen.sh
Executable file
@ -0,0 +1,8 @@
|
||||
mkdir -pv m4
|
||||
libtoolize
|
||||
aclocal
|
||||
aclocal -I m4
|
||||
automake --add-missing --copy
|
||||
autoconf
|
||||
|
||||
|
||||
44
package/lean/antileech/src/configure.ac
Executable file
44
package/lean/antileech/src/configure.ac
Executable file
@ -0,0 +1,44 @@
|
||||
# -*- Autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
# Copyright (C) 2011 Bill Lee <bill.lee.y@gmail.com>
|
||||
# License: GNU GPL v3 or any later version released by Free Software Foundation
|
||||
|
||||
#AC_PREREQ([2.65])
|
||||
AC_INIT([antiLeech], [44], [https://github.com/persmule/amule-dlp/issues])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AM_INIT_AUTOMAKE()
|
||||
AC_CONFIG_SRCDIR([antiLeech.cpp])
|
||||
#AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CC
|
||||
AC_PROG_CPP
|
||||
AC_PROG_MAKE_SET
|
||||
AM_DISABLE_STATIC
|
||||
AC_PROG_LIBTOOL
|
||||
|
||||
#Check for wx-config
|
||||
|
||||
AC_CHECK_PROG(WXCONFIG, [wx-config], [wx-config])
|
||||
ANTILEECH_CPPFLAGS=$(wx-config --cppflags)
|
||||
|
||||
AC_SUBST(ANTILEECH_CPPFLAGS)
|
||||
|
||||
# Checks for libraries.
|
||||
ANTILEECH_LDFLAGS=
|
||||
|
||||
AC_SUBST(ANTILEECH_LDFLAGS)
|
||||
|
||||
# Checks for header files.
|
||||
AC_CHECK_HEADERS([string.h], [wx/string.h], [wx/defs.h])
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_HEADER_STDBOOL
|
||||
AC_C_INLINE
|
||||
AC_TYPE_SIZE_T
|
||||
|
||||
# Checks for library functions.
|
||||
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
||||
61
package/lean/antileech/src/sdc2amule.diff
Executable file
61
package/lean/antileech/src/sdc2amule.diff
Executable file
@ -0,0 +1,61 @@
|
||||
--- antiLeech.cpp.win 2016-02-15 19:31:18.748711749 +0800
|
||||
+++ antiLeech.cpp 2016-02-15 20:49:25.691484626 +0800
|
||||
@@ -17,8 +17,11 @@
|
||||
//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
|
||||
-#include <atlstr.h>
|
||||
+#include "CString_wx.h"
|
||||
#include "antiLeech.h"
|
||||
+#define __declspec(var) CantiLeech::
|
||||
+#define SPECIAL_DLP_VERSION
|
||||
+#define ALL_VERYCD_MOD
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
@@ -51,7 +54,10 @@ LPCTSTR apszSnafuTag[]=
|
||||
//,_T("[eChanblardNext]") //21 zz_fly
|
||||
};
|
||||
|
||||
+const DWORD CantiLeech::DLPVersion = 4405;
|
||||
|
||||
+//deactivate M$WIN-specific codes
|
||||
+#if 0
|
||||
BOOL WINAPI DllMain (
|
||||
HANDLE hModule,
|
||||
DWORD dwFunction,
|
||||
@@ -74,6 +80,7 @@ void __declspec(dllexport) TestFunc()
|
||||
{
|
||||
::MessageBox(NULL,_T("Inside the DLL!"),_T("Nix"),0);
|
||||
}
|
||||
+#endif
|
||||
|
||||
//old versions just to keep compatible
|
||||
/* //drop old version support
|
||||
@@ -285,7 +292,7 @@ LPCTSTR __declspec(dllexport) DLPCheckNa
|
||||
*/
|
||||
//end old version ------------------------------------------
|
||||
|
||||
-bool IsTypicalHex(CString& addon)
|
||||
+bool CantiLeech::IsTypicalHex(const CString& addon)
|
||||
{
|
||||
if(addon.GetLength()>25 || addon.GetLength()<5)
|
||||
return false;
|
||||
@@ -1244,7 +1251,7 @@ LPCTSTR __declspec(dllexport) DLPCheckUs
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-LPCTSTR __declspec(dllexport) DLPCheckNameAndHashAndMod(CString username, CString& userhash, CString& modversion)
|
||||
+LPCTSTR __declspec(dllexport) DLPCheckNameAndHashAndMod(const CString& username, const CString& userhash, const CString& modversion)
|
||||
{
|
||||
if(username.IsEmpty() || userhash.IsEmpty())
|
||||
return NULL;
|
||||
@@ -1309,7 +1316,7 @@ LPCTSTR __declspec(dllexport) DLPCheckNa
|
||||
|
||||
//Check for aedit
|
||||
//remark: a unmodded emule can't send a space at last sign
|
||||
- if(modversion.IsEmpty() && username.Right(1)==32)
|
||||
+ if(modversion.IsEmpty() && username.Right(1)==_T(" "))
|
||||
return _T("AEdit");
|
||||
|
||||
//Check for Hex-Modstring
|
||||
35
package/lean/autocore/Makefile
Normal file
35
package/lean/autocore/Makefile
Normal file
@ -0,0 +1,35 @@
|
||||
#
|
||||
# Copyright (C) 2010-2011 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=autocore
|
||||
PKG_VERSION:=1
|
||||
PKG_RELEASE:=19
|
||||
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/autocore
|
||||
TITLE:=x86/x64 auto core loadbalance script.
|
||||
MAINTAINER:=Lean
|
||||
DEPENDS:=@TARGET_x86 +bc +lm-sensors +ethtool
|
||||
endef
|
||||
|
||||
define Package/autocore/description
|
||||
A usb autoconfig hotplug script.
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/autocore/install
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/autocore $(1)/etc/init.d/autocore
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,autocore))
|
||||
62
package/lean/autocore/files/autocore
Executable file
62
package/lean/autocore/files/autocore
Executable file
@ -0,0 +1,62 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2017 lean <coolsnowwolf@gmail.com>
|
||||
|
||||
START=99
|
||||
|
||||
start()
|
||||
{
|
||||
rfc=4096
|
||||
cc=$(grep -c processor /proc/cpuinfo)
|
||||
rsfe=$(echo $cc*$rfc | bc)
|
||||
sysctl -w net.core.rps_sock_flow_entries=$rsfe
|
||||
for fileRps in $(ls /sys/class/net/eth*/queues/rx-*/rps_cpus)
|
||||
do
|
||||
echo $cc > $fileRps
|
||||
done
|
||||
|
||||
for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt)
|
||||
do
|
||||
echo $rfc > $fileRfc
|
||||
done
|
||||
|
||||
for fileRps in $(ls /sys/class/net/eth*/queues/tx-*/xps_cpus)
|
||||
do
|
||||
echo $cc > $fileRps
|
||||
done
|
||||
|
||||
a=$(cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq)
|
||||
b=$(echo -n ' : ')
|
||||
c=$(cat /proc/cpuinfo | grep 'core id' | sort -u | wc -l)
|
||||
d=$(echo -n ' Core ')
|
||||
e=$(cat /proc/cpuinfo | grep 'processor' | wc -l)
|
||||
f=$(echo -n ' Thread ')
|
||||
g=${a}${b}${c}${d}${e}${f}
|
||||
echo $g > /tmp/sysinfo/model
|
||||
|
||||
ethtool -K eth0 rx-checksum on >/dev/null 2>&1
|
||||
ethtool -K eth0 tx-checksum-ip-generic on >/dev/null 2>&1
|
||||
ethtool -K eth0 tso on >/dev/null 2>&1
|
||||
ethtool -K eth0 ufo on >/dev/null 2>&1
|
||||
ethtool -K eth0 gso on >/dev/null 2>&1
|
||||
|
||||
ethtool -K eth1 rx-checksum on >/dev/null 2>&1
|
||||
ethtool -K eth1 tx-checksum-ip-generic on >/dev/null 2>&1
|
||||
ethtool -K eth1 tso on >/dev/null 2>&1
|
||||
ethtool -K eth1 ufo on >/dev/null 2>&1
|
||||
ethtool -K eth1 gso on >/dev/null 2>&1
|
||||
|
||||
ethtool -K eth2 rx-checksum on >/dev/null 2>&1
|
||||
ethtool -K eth2 tx-checksum-ip-generic on >/dev/null 2>&1
|
||||
ethtool -K eth2 tso on >/dev/null 2>&1
|
||||
ethtool -K eth2 ufo on >/dev/null 2>&1
|
||||
ethtool -K eth2 gso on >/dev/null 2>&1
|
||||
|
||||
ethtool -K eth3 rx-checksum on >/dev/null 2>&1
|
||||
ethtool -K eth3 tx-checksum-ip-generic on >/dev/null 2>&1
|
||||
ethtool -K eth3 tso on >/dev/null 2>&1
|
||||
ethtool -K eth3 ufo on >/dev/null 2>&1
|
||||
ethtool -K eth3 gso on >/dev/null 2>&1
|
||||
}
|
||||
|
||||
|
||||
|
||||
36
package/lean/automount/Makefile
Normal file
36
package/lean/automount/Makefile
Normal file
@ -0,0 +1,36 @@
|
||||
#
|
||||
# Copyright (C) 2010-2011 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=automount
|
||||
PKG_VERSION:=1
|
||||
PKG_RELEASE:=26
|
||||
PKG_ARCH:=all
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/automount
|
||||
TITLE:=Mount autoconfig hotplug script.
|
||||
MAINTAINER:=Lean
|
||||
DEPENDS:=+block-mount +kmod-usb-storage +kmod-usb-storage-extras +kmod-fs-vfat +kmod-fs-ext4 +kmod-fs-exfat +ntfs-3g
|
||||
endef
|
||||
|
||||
define Package/automount/description
|
||||
A usb autoconfig hotplug script.
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/automount/install
|
||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||
$(INSTALL_BIN) ./files/15-automount $(1)/etc/15-automount
|
||||
$(INSTALL_BIN) ./files/zzz-move-automount $(1)/etc/uci-defaults/zzz-move-automount
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,automount))
|
||||
27
package/lean/automount/files/15-automount
Executable file
27
package/lean/automount/files/15-automount
Executable file
@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (C) 2015 OpenWrt.org
|
||||
|
||||
# 0 yes blockdevice handles this - 1 no it is not there
|
||||
blkdev=`dirname $DEVPATH`
|
||||
basename=`basename $blkdev`
|
||||
device=`basename $DEVPATH`
|
||||
skip=`block info | sed 's/\(.*\): .*/\1/' | grep -q $device ; echo $?`
|
||||
path=$DEVPATH
|
||||
|
||||
if [ $basename != "block" ] && [ -z "${device##sd*}" ] && [ $skip -eq 1 ]; then
|
||||
mntpnt=$device
|
||||
case "$ACTION" in
|
||||
add)
|
||||
mkdir -p /mnt/$mntpnt
|
||||
chmod 777 /mnt/$mntpnt
|
||||
# Try to be gentle on solid state devices
|
||||
mount -o rw,noatime,discard /dev/$device /mnt/$mntpnt
|
||||
;;
|
||||
remove)
|
||||
# Once the device is removed, the /dev entry disappear. We need mountpoint
|
||||
mountpoint=`mount |grep /dev/$device | sed 's/.* on \(.*\) type.*/\1/'`
|
||||
umount -l $mountpoint
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
7
package/lean/automount/files/zzz-move-automount
Executable file
7
package/lean/automount/files/zzz-move-automount
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
sleep 15
|
||||
mv /etc/15-automount /etc/hotplug.d/block/
|
||||
|
||||
|
||||
|
||||
35
package/lean/autosamba/Makefile
Normal file
35
package/lean/autosamba/Makefile
Normal file
@ -0,0 +1,35 @@
|
||||
#
|
||||
# Copyright (C) 2010-2011 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=autosamba
|
||||
PKG_VERSION:=1
|
||||
PKG_RELEASE:=10
|
||||
PKG_ARCH:=all
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/autosamba
|
||||
TITLE:=Samba autoconfig hotplug script.
|
||||
MAINTAINER:=Lean
|
||||
DEPENDS:=+luci-app-samba
|
||||
endef
|
||||
|
||||
define Package/autosamba/description
|
||||
A hotplug script to config Samba share automatically.
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/autosamba/install
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/block
|
||||
$(INSTALL_BIN) ./files/20-smb $(1)/etc/hotplug.d/block/20-smb
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,autosamba))
|
||||
104
package/lean/autosamba/files/20-smb
Executable file
104
package/lean/autosamba/files/20-smb
Executable file
@ -0,0 +1,104 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# D-Team Technology Co.,Ltd. ShenZhen
|
||||
# 作者:Vic
|
||||
#
|
||||
#
|
||||
# 警告:对着屏幕的哥们,我们允许你使用此脚本,但不允许你抹去作者的信息,请保留这段话。
|
||||
#
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/service.sh
|
||||
|
||||
global=0
|
||||
config_file="/etc/config/samba"
|
||||
|
||||
wait_for_init() {
|
||||
for i in `seq 30`
|
||||
do
|
||||
[ -e /tmp/procd.done ] || {
|
||||
sleep 1; continue;
|
||||
}
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
smb_handle() {
|
||||
config_get path $1 path
|
||||
if [ "$path" = "$2" ] ;then
|
||||
global=1
|
||||
fi
|
||||
}
|
||||
|
||||
chk_en() {
|
||||
config_get_bool autoshare $1 autoshare 1
|
||||
[ $autoshare -eq 0 ] && exit
|
||||
}
|
||||
|
||||
config_load samba
|
||||
config_foreach chk_en samba
|
||||
|
||||
device=`basename $DEVPATH`
|
||||
|
||||
case "$ACTION" in
|
||||
add)
|
||||
|
||||
case "$device" in
|
||||
sd*) ;;
|
||||
md*) ;;
|
||||
hd*);;
|
||||
mmcblk*);;
|
||||
*) return;;
|
||||
esac
|
||||
|
||||
path="/dev/$device"
|
||||
|
||||
wait_for_init
|
||||
|
||||
cat /proc/mounts | while read j
|
||||
do
|
||||
str=${j%% *}
|
||||
if [ "$str" == $path ];then
|
||||
strr=${j#* }
|
||||
target=${strr%% *}
|
||||
global=0
|
||||
config_foreach smb_handle sambashare $target
|
||||
name=${target#*/mnt/}
|
||||
|
||||
if [ $global -eq 0 ] ;then
|
||||
echo -e "\n\nconfig sambashare" >> $config_file
|
||||
echo -e "\toption auto '1'" >> $config_file
|
||||
echo -e "\toption name '$name'" >> $config_file
|
||||
echo -e "\toption path '$target'" >> $config_file
|
||||
echo -e "\toption read_only 'no'" >> $config_file
|
||||
echo -e "\toption guest_ok 'yes'" >> $config_file
|
||||
echo -e "\toption create_mask '0666'" >> $config_file
|
||||
echo -e "\toption dir_mask '0777'" >> $config_file
|
||||
echo -e "\toption device '$device'" >> $config_file
|
||||
/etc/init.d/samba reload
|
||||
return
|
||||
fi
|
||||
fi
|
||||
done
|
||||
;;
|
||||
remove)
|
||||
i=0
|
||||
while true
|
||||
do
|
||||
|
||||
dev=`uci get samba.@sambashare[$i].device`
|
||||
[ $? -ne 0 ] && break
|
||||
|
||||
[ "$dev" = "$device" ] && {
|
||||
auto=`uci get samba.@sambashare[$i].auto`
|
||||
[ $auto = "1" ] && {
|
||||
mount_dir=`uci get samba.@sambashare[$i].name`
|
||||
uci delete samba.@sambashare[$i]
|
||||
uci commit
|
||||
/etc/init.d/samba reload
|
||||
return
|
||||
}
|
||||
}
|
||||
let i+=1
|
||||
done
|
||||
;;
|
||||
esac
|
||||
71
package/lean/coremark/Makefile
Normal file
71
package/lean/coremark/Makefile
Normal file
@ -0,0 +1,71 @@
|
||||
# Copyright 2018 Embedded Microprocessor Benchmark Consortium (EEMBC)
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=coremark
|
||||
PKG_RELEASE:=12
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/eembc/coremark.git
|
||||
PKG_SOURCE_VERSION:=2e9d6165f362f7071d29b7f88c6d32655e5d4a3c
|
||||
PKG_SOURCE_DATE:=2019-01-31
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/coremark
|
||||
SECTION:=utils
|
||||
CATEGORY:=Utilities
|
||||
TITLE:=CoreMark Embedded Microprocessor Benchmark
|
||||
URL:=https://github.com/eembc/coremark
|
||||
endef
|
||||
|
||||
define Package/coremark/description
|
||||
Embedded Microprocessor Benchmark
|
||||
endef
|
||||
|
||||
DIR_ARCH:=linux
|
||||
|
||||
ifeq ($(ARCH),x86_64)
|
||||
DIR_ARCH:=linux64
|
||||
endif
|
||||
ifeq ($(ARCH),aarch64)
|
||||
DIR_ARCH:=linux64
|
||||
endif
|
||||
|
||||
define Build/Compile
|
||||
$(SED) 's|EXE = .exe|EXE =|' $(PKG_BUILD_DIR)/$(DIR_ARCH)/core_portme.mak
|
||||
mkdir $(PKG_BUILD_DIR)/$(ARCH)
|
||||
cp -r $(PKG_BUILD_DIR)/$(DIR_ARCH)/* $(PKG_BUILD_DIR)/$(ARCH)
|
||||
$(MAKE) XCFLAGS="-DMULTITHREAD=8 -DUSE_PTHREAD" -C $(PKG_BUILD_DIR) PORT_DIR=$(ARCH) $(MAKE_FLAGS) \
|
||||
compile
|
||||
endef
|
||||
|
||||
define Package/coremark/install
|
||||
$(INSTALL_DIR) $(1)/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/coremark $(1)/bin/
|
||||
$(INSTALL_DIR) $(1)/etc
|
||||
$(INSTALL_BIN) ./coremark.sh $(1)/etc/
|
||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||
$(INSTALL_BIN) ./coremark $(1)/etc/uci-defaults/xxx-coremark
|
||||
endef
|
||||
|
||||
define Package/coremark/postinst
|
||||
#!/bin/sh
|
||||
[ -n "$${IPKG_INSTROOT}" ] || sed -i '/coremark/d' /etc/crontabs/root
|
||||
[ -n "$${IPKG_INSTROOT}" ] || echo "0 4 * * 0 /etc/coremark.sh" >> /etc/crontabs/root
|
||||
[ -n "$${IPKG_INSTROOT}" ] || crontab /etc/crontabs/root
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,coremark))
|
||||
7
package/lean/coremark/coremark
Executable file
7
package/lean/coremark/coremark
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
sed -i '/coremark/d' /etc/crontabs/root
|
||||
echo "0 4 * * 0 /etc/coremark.sh" >> /etc/crontabs/root
|
||||
crontab /etc/crontabs/root
|
||||
|
||||
touch /etc/bench.log
|
||||
12
package/lean/coremark/coremark.sh
Executable file
12
package/lean/coremark/coremark.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
/bin/coremark > /tmp/coremark.log
|
||||
|
||||
cat /tmp/coremark.log | grep "CoreMark 1.0" | cut -d "/" -f 1 > /etc/bench.log
|
||||
sed -i 's/CoreMark 1.0/(CpuMark/g' /etc/bench.log
|
||||
echo " Scores)" >> /etc/bench.log
|
||||
|
||||
if [ -f "/etc/bench.log" ]; then
|
||||
sed -i '/coremark/d' /etc/crontabs/root
|
||||
crontab /etc/crontabs/root
|
||||
fi
|
||||
39
package/lean/csstidy/Makefile
Normal file
39
package/lean/csstidy/Makefile
Normal file
@ -0,0 +1,39 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=csstidy
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=https://github.com/jow-/csstidy-cpp.git
|
||||
PKG_SOURCE_DATE:=2018-12-20
|
||||
PKG_SOURCE_VERSION:=1d5620149ae35c0d49fb2014d4e63a23ecfb6f69
|
||||
PKG_MIRROR_HASH:=3210d475f6ae966d4dfcd3e1f7fcbf0ad9507a37878d50de015ffe795c1d160e
|
||||
|
||||
PKG_LICENSE:=LGPL-2.1
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/csstidy
|
||||
SECTION:=utils
|
||||
CATEGORY:=Utilities
|
||||
TITLE:=CSSTidy parser and optimiser
|
||||
DEPENDS:=+libstdcpp
|
||||
endef
|
||||
|
||||
define Package/csstidy/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/csstidy/csstidy $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
|
||||
define Host/Install
|
||||
$(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin/
|
||||
$(INSTALL_BIN) $(HOST_BUILD_DIR)/csstidy/csstidy $(1)/bin/
|
||||
endef
|
||||
|
||||
$(eval $(call HostBuild))
|
||||
$(eval $(call BuildPackage,csstidy))
|
||||
72
package/lean/ddns-scripts_aliyun/Makefile
Normal file
72
package/lean/ddns-scripts_aliyun/Makefile
Normal file
@ -0,0 +1,72 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ddns-scripts_aliyun
|
||||
PKG_VERSION:=1.0.0
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_LICENSE:=GPLv2
|
||||
PKG_MAINTAINER:=Sense <sensec@gmail.com>
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=IP Addresses and Names
|
||||
TITLE:=DDNS extension for AliYun.com
|
||||
PKGARCH:=all
|
||||
DEPENDS:=+ddns-scripts +wget +openssl-util
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
Dynamic DNS Client scripts extension for AliYun.com
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(CP) ./*.sh $(PKG_BUILD_DIR)
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/preinst
|
||||
#!/bin/sh
|
||||
# if NOT run buildroot then stop service
|
||||
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
||||
exit 0 # suppress errors
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ddns
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/update_aliyun_com.sh $(1)/usr/lib/ddns
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/postinst
|
||||
#!/bin/sh
|
||||
# remove old services file entries
|
||||
/bin/sed -i '/aliyun\.com/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||
/bin/sed -i '/aliyun\.com/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
||||
# and create new
|
||||
printf "%s\\t\\t%s\\n" '"aliyun.com"' '"update_aliyun_com.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
||||
printf "%s\\t\\t%s\\n" '"aliyun.com"' '"update_aliyun_com.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6
|
||||
# on real system restart service if enabled
|
||||
[ -z "$${IPKG_INSTROOT}" ] && {
|
||||
/etc/init.d/ddns enabled && \
|
||||
/etc/init.d/ddns start >/dev/null 2>&1
|
||||
}
|
||||
exit 0 # suppress errors
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/prerm
|
||||
#!/bin/sh
|
||||
# if NOT run buildroot then stop service
|
||||
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
||||
# remove services file entries
|
||||
/bin/sed -i '/aliyun\.com/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||
/bin/sed -i '/aliyun\.com/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
||||
exit 0 # suppress errors
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||
246
package/lean/ddns-scripts_aliyun/update_aliyun_com.sh
Executable file
246
package/lean/ddns-scripts_aliyun/update_aliyun_com.sh
Executable file
@ -0,0 +1,246 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# 用于阿里云解析的DNS更新脚本
|
||||
# 2017-2018 Sense <sensec at gmail dot com>
|
||||
# 阿里云解析API文档 https://help.aliyun.com/document_detail/29739.html
|
||||
#
|
||||
# 本脚本由 dynamic_dns_functions.sh 内的函数 send_update() 调用
|
||||
#
|
||||
# 需要在 /etc/config/ddns 中设置的选项
|
||||
# option username - 阿里云API访问账号 Access Key ID。可通过 aliyun.com 帐号管理的 accesskeys 获取, 或者访问 https://ak-console.aliyun.com
|
||||
# option password - 阿里云API访问密钥 Access Key Secret
|
||||
# option domain - 完整的域名。建议主机与域名之间使用 @符号 分隔,否则将以第一个 .符号 之前的内容作为主机名
|
||||
#
|
||||
|
||||
# 检查传入参数
|
||||
[ -z "$username" ] && write_log 14 "配置错误!保存阿里云API访问账号的'用户名'不能为空"
|
||||
[ -z "$password" ] && write_log 14 "配置错误!保存阿里云API访问密钥的'密码'不能为空"
|
||||
|
||||
# 检查外部调用工具
|
||||
[ -n "$WGET_SSL" ] || write_log 13 "使用阿里云API需要 GNU Wget 支持,请先安装"
|
||||
command -v sed >/dev/null 2>&1 || write_log 13 "使用阿里云API需要 sed 支持,请先安装"
|
||||
command -v openssl >/dev/null 2>&1 || write_log 13 "使用阿里云API需要 openssl-util 支持,请先安装"
|
||||
|
||||
# 包含用于解析 JSON 格式返回值的函数
|
||||
. /usr/share/libubox/jshn.sh
|
||||
|
||||
# 变量声明
|
||||
local __HOST __DOMAIN __TYPE __URLBASE __CMDBASE __URLARGS __SEPARATOR __RECID
|
||||
[ $use_https -eq 0 ] && __URLBASE="http://alidns.aliyuncs.com/" || __URLBASE="https://alidns.aliyuncs.com/"
|
||||
__SEPARATOR="&"
|
||||
|
||||
# 从 $domain 分离主机和域名
|
||||
[ "${domain:0:2}" == "@." ] && domain="${domain/./}" # 主域名处理
|
||||
[ "$domain" == "${domain/@/}" ] && domain="${domain/./@}" # 未找到分隔符,兼容常用域名格式
|
||||
__HOST="${domain%%@*}"
|
||||
__DOMAIN="${domain#*@}"
|
||||
[ -z "$__HOST" -o "$__HOST" == "$__DOMAIN" ] && __HOST="@"
|
||||
|
||||
# 设置记录类型
|
||||
[ $use_ipv6 -eq 0 ] && __TYPE="A" || __TYPE="AAAA"
|
||||
|
||||
# 构造基本通信命令
|
||||
build_command() {
|
||||
__CMDBASE="$WGET_SSL -nv -t 1 -O $DATFILE -o $ERRFILE"
|
||||
# 绑定用于通信的主机/IP
|
||||
if [ -n "$bind_network" ]; then
|
||||
local bind_ip run_prog
|
||||
[ $use_ipv6 -eq 0 ] && run_prog="network_get_ipaddr" || run_prog="network_get_ipaddr6"
|
||||
eval "$run_prog bind_ip $bind_network" || \
|
||||
write_log 13 "无法使用 '$run_prog $bind_network' 获取本地IP地址 - 错误代码: '$?'"
|
||||
write_log 7 "强制使用IP '$bind_ip' 通信"
|
||||
__CMDBASE="$__CMDBASE --bind-address=$bind_ip"
|
||||
fi
|
||||
# 强制设定IP版本
|
||||
if [ $force_ipversion -eq 1 ]; then
|
||||
[ $use_ipv6 -eq 0 ] && __CMDBASE="$__CMDBASE -4" || __CMDBASE="$__CMDBASE -6"
|
||||
fi
|
||||
# 设置CA证书参数
|
||||
if [ $use_https -eq 1 ]; then
|
||||
if [ "$cacert" = "IGNORE" ]; then
|
||||
__CMDBASE="$__CMDBASE --no-check-certificate"
|
||||
elif [ -f "$cacert" ]; then
|
||||
__CMDBASE="$__CMDBASE --ca-certificate=${cacert}"
|
||||
elif [ -d "$cacert" ]; then
|
||||
__CMDBASE="$__CMDBASE --ca-directory=${cacert}"
|
||||
elif [ -n "$cacert" ]; then
|
||||
write_log 14 "在 '$cacert' 中未找到用于 HTTPS 通信的有效证书"
|
||||
fi
|
||||
fi
|
||||
# 如果没有设置,禁用代理 (这可能是 .wgetrc 或环境设置错误)
|
||||
[ -z "$proxy" ] && __CMDBASE="$__CMDBASE --no-proxy"
|
||||
}
|
||||
|
||||
# 用于阿里云API的通信函数
|
||||
aliyun_transfer() {
|
||||
local __PARAM=$*
|
||||
local __CNT=0
|
||||
local __RUNPROG __ERR PID_SLEEP
|
||||
|
||||
[ $# -eq 0 ] && write_log 12 "'aliyun_transfer()' 出错 - 参数数量错误"
|
||||
|
||||
while : ; do
|
||||
build_Request $__PARAM
|
||||
__RUNPROG="$__CMDBASE '${__URLBASE}?${__URLARGS}'"
|
||||
|
||||
write_log 7 "#> $__RUNPROG"
|
||||
eval $__RUNPROG
|
||||
__ERR=$?
|
||||
[ $__ERR -eq 0 ] && return 0
|
||||
|
||||
write_log 3 "wget 错误代码: '$__ERR'"
|
||||
write_log 7 "$(cat $ERRFILE)"
|
||||
|
||||
if [ $VERBOSE -gt 1 ]; then
|
||||
write_log 4 "传输失败 - 详细模式: $VERBOSE - 出错后不再重试"
|
||||
return 1
|
||||
fi
|
||||
|
||||
__CNT=$(( $__CNT + 1 ))
|
||||
[ $retry_count -gt 0 -a $__CNT -gt $retry_count ] && \
|
||||
write_log 14 "$retry_count 次重试后传输还是失败"
|
||||
|
||||
write_log 4 "传输失败 - $__CNT/$retry_count 在 $RETRY_SECONDS 秒后重试"
|
||||
sleep $RETRY_SECONDS &
|
||||
PID_SLEEP=$!
|
||||
wait $PID_SLEEP
|
||||
PID_SLEEP=0
|
||||
done
|
||||
}
|
||||
|
||||
# 百分号编码
|
||||
percentEncode() {
|
||||
if [ -z "${1//[A-Za-z0-9_.~-]/}" ]; then
|
||||
echo -n "$1"
|
||||
else
|
||||
local string=$1; local i=0; local ret chr
|
||||
while [ $i -lt ${#string} ]; do
|
||||
chr=${string:$i:1}
|
||||
[ -z "${chr#[^A-Za-z0-9_.~-]}" ] && chr=$(printf '%%%02X' "'$chr")
|
||||
ret="$ret$chr"
|
||||
i=$(( $i + 1 ))
|
||||
done
|
||||
echo -n "$ret"
|
||||
fi
|
||||
}
|
||||
|
||||
# 构造阿里云解析请求参数
|
||||
build_Request() {
|
||||
local args=$*; local string
|
||||
local HTTP_METHOD="GET"
|
||||
|
||||
# 添加请求参数
|
||||
__URLARGS=
|
||||
for string in $args; do
|
||||
case "${string%%=*}" in
|
||||
Format|Version|AccessKeyId|SignatureMethod|Timestamp|SignatureVersion|SignatureNonce|Signature) ;; # 过滤公共参数
|
||||
*) __URLARGS="$__URLARGS${__SEPARATOR}"$(percentEncode "${string%%=*}")"="$(percentEncode "${string#*=}");;
|
||||
esac
|
||||
done
|
||||
__URLARGS="${__URLARGS:1}"
|
||||
|
||||
# 附加公共参数
|
||||
string="Format=JSON"; __URLARGS="$__URLARGS${__SEPARATOR}"$(percentEncode "${string%%=*}")"="$(percentEncode "${string#*=}")
|
||||
string="Version=2015-01-09"; __URLARGS="$__URLARGS${__SEPARATOR}"$(percentEncode "${string%%=*}")"="$(percentEncode "${string#*=}")
|
||||
string="AccessKeyId=$username"; __URLARGS="$__URLARGS${__SEPARATOR}"$(percentEncode "${string%%=*}")"="$(percentEncode "${string#*=}")
|
||||
string="SignatureMethod=HMAC-SHA1"; __URLARGS="$__URLARGS${__SEPARATOR}"$(percentEncode "${string%%=*}")"="$(percentEncode "${string#*=}")
|
||||
string="Timestamp="$(date -u '+%Y-%m-%dT%H:%M:%SZ'); __URLARGS="$__URLARGS${__SEPARATOR}"$(percentEncode "${string%%=*}")"="$(percentEncode "${string#*=}")
|
||||
string="SignatureVersion=1.0"; __URLARGS="$__URLARGS${__SEPARATOR}"$(percentEncode "${string%%=*}")"="$(percentEncode "${string#*=}")
|
||||
string="SignatureNonce="$(cat '/proc/sys/kernel/random/uuid'); __URLARGS="$__URLARGS${__SEPARATOR}"$(percentEncode "${string%%=*}")"="$(percentEncode "${string#*=}")
|
||||
|
||||
# 对请求参数进行排序,用于生成签名
|
||||
string=$(echo -n "$__URLARGS" | sed 's/\'"${__SEPARATOR}"'/\n/g' | sort | sed ':label; N; s/\n/\'"${__SEPARATOR}"'/g; b label')
|
||||
# 构造用于计算签名的字符串
|
||||
string="${HTTP_METHOD}${__SEPARATOR}"$(percentEncode "/")"${__SEPARATOR}"$(percentEncode "$string")
|
||||
# 字符串计算签名HMAC值
|
||||
local signature=$(echo -n "$string" | openssl dgst -sha1 -hmac "${password}&" -binary)
|
||||
# HMAC值编码成字符串,得到签名值
|
||||
signature=$(echo -n "$signature" | openssl base64)
|
||||
|
||||
# 附加签名参数
|
||||
string="Signature=$signature"; __URLARGS="$__URLARGS${__SEPARATOR}"$(percentEncode "${string%%=*}")"="$(percentEncode "${string#*=}")
|
||||
}
|
||||
|
||||
# 添加解析记录
|
||||
add_domain() {
|
||||
local value
|
||||
aliyun_transfer "Action=AddDomainRecord" "DomainName=${__DOMAIN}" "RR=${__HOST}" "Type=${__TYPE}" "Value=${__IP}" || write_log 14 "服务器通信失败"
|
||||
json_cleanup; json_load "$(cat "$DATFILE" 2> /dev/null)" >/dev/null 2>&1
|
||||
json_get_var value "RecordId"
|
||||
[ -z "$value" ] && write_log 14 "添加新解析记录失败"
|
||||
write_log 7 "添加新解析记录成功"
|
||||
return 0
|
||||
}
|
||||
|
||||
# 修改解析记录
|
||||
update_domain() {
|
||||
local value
|
||||
aliyun_transfer "Action=UpdateDomainRecord" "RecordId=${__RECID}" "RR=${__HOST}" "Type=${__TYPE}" "Value=${__IP}" || write_log 14 "服务器通信失败"
|
||||
json_cleanup; json_load "$(cat "$DATFILE" 2> /dev/null)" >/dev/null 2>&1
|
||||
json_get_var value "RecordId"
|
||||
[ -z "$value" ] && write_log 14 "修改解析记录失败"
|
||||
write_log 7 "修改解析记录成功"
|
||||
return 0
|
||||
}
|
||||
|
||||
# 启用解析记录
|
||||
enable_domain() {
|
||||
local value
|
||||
aliyun_transfer "Action=SetDomainRecordStatus" "RecordId=${__RECID}" "Status=Enable" || write_log 14 "服务器通信失败"
|
||||
json_cleanup; json_load "$(cat "$DATFILE" 2> /dev/null)" >/dev/null 2>&1
|
||||
json_get_var value "Status"
|
||||
[ "$value" != "Enable" ] && write_log 14 "启用解析记录失败"
|
||||
write_log 7 "启用解析记录成功"
|
||||
return 0
|
||||
}
|
||||
|
||||
# 获取子域名解析记录列表
|
||||
describe_domain() {
|
||||
local count value; local ret=0
|
||||
aliyun_transfer "Action=DescribeSubDomainRecords" "SubDomain=${__HOST}.${__DOMAIN}" || write_log 14 "服务器通信失败"
|
||||
write_log 7 "获取到解析记录: $(cat "$DATFILE" 2> /dev/null)"
|
||||
json_cleanup; json_load "$(cat "$DATFILE" 2> /dev/null)" >/dev/null 2>&1
|
||||
json_get_var count "TotalCount"
|
||||
if [ $count -eq 0 ]; then
|
||||
write_log 7 "解析记录不存在"
|
||||
ret=1
|
||||
else
|
||||
local i=1;
|
||||
while [ $i -le $count ]; do
|
||||
json_cleanup; json_load "$(cat "$DATFILE" 2> /dev/null)" >/dev/null 2>&1
|
||||
json_select "DomainRecords" >/dev/null 2>&1
|
||||
json_select "Record" >/dev/null 2>&1
|
||||
json_select $i >/dev/null 2>&1
|
||||
i=$(( $i + 1 ))
|
||||
json_get_var value "Type"
|
||||
if [ "$value" != "${__TYPE}" ]; then
|
||||
write_log 7 "当前解析类型: ${__TYPE}, 获得不匹配类型: $value"
|
||||
ret=1; continue
|
||||
else
|
||||
ret=0
|
||||
json_get_var __RECID "RecordId"
|
||||
write_log 7 "获得解析记录ID: ${__RECID}, 类型: $value"
|
||||
json_get_var value "Locked"
|
||||
[ $value -ne 0 ] && write_log 14 "解析记录被锁定"
|
||||
json_get_var value "Status"
|
||||
[ "$value" != "ENABLE" ] && ret=$(( $ret | 2 )) && write_log 7 "解析记录被禁用"
|
||||
json_get_var value "Value"
|
||||
[ "$value" != "${__IP}" ] && ret=$(( $ret | 4 )) && write_log 7 "地址需要修改"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
return $ret
|
||||
}
|
||||
|
||||
build_command
|
||||
describe_domain
|
||||
ret=$?
|
||||
if [ $ret -eq 1 ]; then
|
||||
sleep 3 && add_domain
|
||||
else
|
||||
[ $(( $ret & 2 )) -ne 0 ] && sleep 3 && enable_domain
|
||||
[ $(( $ret & 4 )) -ne 0 ] && sleep 3 && update_domain
|
||||
fi
|
||||
|
||||
return 0
|
||||
45
package/lean/dnsforwarder/Makefile
Normal file
45
package/lean/dnsforwarder/Makefile
Normal file
@ -0,0 +1,45 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=dnsforwarder
|
||||
PKG_VERSION:=6.1.15
|
||||
PKG_RELEASE:=10
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/holmium/dnsforwarder.git
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_VERSION:=587e61ae4d75dc976f538088b715a3c8ee26c144
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_MAINTAINER:=Dennis <openwrt@tossp.com>
|
||||
PKG_LICENSE:=GPL-3.0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=A simple DNS forwarder
|
||||
URL:=https://github.com/holmium/dnsforwarder
|
||||
DEPENDS:=+wget +dnsmasq-full +libpthread +coreutils-base64
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
Forwarding queries to customized domains (and their subdomains) to specified servers over a specified protocol (UDP or TCP). non-standard ports are supported.
|
||||
endef
|
||||
|
||||
CONFIGURE_ARGS += --enable-downloader=wget
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/dnsforwarder $(1)/usr/bin/dnsforwarder
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) files/etc/init.d/dnsforwarder $(1)/etc/init.d/dnsforwarder
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_CONF) files/etc/config/dnsforwarder $(1)/etc/config/dnsforwarder
|
||||
$(INSTALL_DIR) $(1)/etc/dnsforwarder
|
||||
$(INSTALL_CONF) files/etc/dnsforwarder/gfw.txt $(1)/etc/dnsforwarder/gfw.txt
|
||||
$(INSTALL_DIR) $(1)/usr/share/dnsforwarder
|
||||
$(INSTALL_BIN) files/usr/share/dnsforwarder/gfwlist.sh $(1)/usr/share/dnsforwarder/gfwlist.sh
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||
79
package/lean/dnsforwarder/files/etc/config/dnsforwarder
Normal file
79
package/lean/dnsforwarder/files/etc/config/dnsforwarder
Normal file
@ -0,0 +1,79 @@
|
||||
|
||||
config arguments
|
||||
option enabled '0'
|
||||
option addr '127.0.0.1:5053'
|
||||
|
||||
config config
|
||||
option cache 'true'
|
||||
option cache_size '102400'
|
||||
option cache_ignore 'false'
|
||||
option gfw 'true'
|
||||
list block_ip '74.125.127.102'
|
||||
list block_ip '74.125.155.102'
|
||||
list block_ip '74.125.39.102'
|
||||
list block_ip '74.125.39.113'
|
||||
list block_ip '209.85.229.138'
|
||||
list block_ip '128.121.126.139'
|
||||
list block_ip '159.106.121.75'
|
||||
list block_ip '169.132.13.103'
|
||||
list block_ip '192.67.198.6'
|
||||
list block_ip '202.106.1.2'
|
||||
list block_ip '202.181.7.85'
|
||||
list block_ip '203.161.230.171'
|
||||
list block_ip '203.98.7.65'
|
||||
list block_ip '207.12.88.98'
|
||||
list block_ip '208.56.31.43'
|
||||
list block_ip '209.145.54.50'
|
||||
list block_ip '209.220.30.174'
|
||||
list block_ip '209.36.73.33'
|
||||
list block_ip '211.94.66.147'
|
||||
list block_ip '213.169.251.35'
|
||||
list block_ip '216.221.188.182'
|
||||
list block_ip '216.234.179.13'
|
||||
list block_ip '243.185.187.39'
|
||||
list block_ip '37.61.54.158'
|
||||
list block_ip '4.36.66.178'
|
||||
list block_ip '46.82.174.68'
|
||||
list block_ip '59.24.3.173'
|
||||
list block_ip '64.33.88.161'
|
||||
list block_ip '64.33.99.47'
|
||||
list block_ip '64.66.163.251'
|
||||
list block_ip '65.104.202.252'
|
||||
list block_ip '65.160.219.113'
|
||||
list block_ip '66.45.252.237'
|
||||
list block_ip '69.55.52.253'
|
||||
list block_ip '72.14.205.104'
|
||||
list block_ip '72.14.205.99'
|
||||
list block_ip '78.16.49.15'
|
||||
list block_ip '8.7.198.45'
|
||||
list block_ip '93.46.8.89'
|
||||
list block_ip '37.61.54.158'
|
||||
list block_ip '243.185.187.39'
|
||||
list block_ip '190.93.247.4'
|
||||
list block_ip '190.93.246.4'
|
||||
list block_ip '190.93.245.4'
|
||||
list block_ip '190.93.244.4'
|
||||
list block_ip '65.49.2.178'
|
||||
list block_ip '189.163.17.5'
|
||||
list block_ip '23.89.5.60'
|
||||
list block_ip '49.2.123.56'
|
||||
list block_ip '54.76.135.1'
|
||||
list block_ip '77.4.7.92'
|
||||
list block_ip '118.5.49.6'
|
||||
list block_ip '159.24.3.173'
|
||||
list block_ip '188.5.4.96'
|
||||
list block_ip '197.4.4.12'
|
||||
list block_ip '220.250.64.24'
|
||||
list block_ip '243.185.187.30'
|
||||
list block_ip '249.129.46.48'
|
||||
list block_ip '253.157.14.165'
|
||||
option block_ipv6 'false'
|
||||
list cache_control 'tossp.com $orig'
|
||||
list cache_control '* fixed 3600'
|
||||
option log 'false'
|
||||
list udp_group '9.9.9.9,119.29.29.29,223.5.5.5,114.114.114.114 * on'
|
||||
option block_negative_resp 'true'
|
||||
list udp_local '0.0.0.0:5053'
|
||||
list udp_local '[::0]:5053'
|
||||
option domain_statistic 'false'
|
||||
|
||||
5604
package/lean/dnsforwarder/files/etc/dnsforwarder/gfw.txt
Normal file
5604
package/lean/dnsforwarder/files/etc/dnsforwarder/gfw.txt
Normal file
File diff suppressed because it is too large
Load Diff
251
package/lean/dnsforwarder/files/etc/init.d/dnsforwarder
Executable file
251
package/lean/dnsforwarder/files/etc/init.d/dnsforwarder
Executable file
@ -0,0 +1,251 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=60
|
||||
|
||||
CRON_FILE=/etc/crontabs/root
|
||||
PID_PATH=/var/run/dnsforwarder
|
||||
PID_FILE=${PID_PATH}/dns.pid
|
||||
DNSFORWARDER_CONF=/tmp/dnsforwarder.conf
|
||||
|
||||
add_cron()
|
||||
{
|
||||
sed -i '/dnsforwarder/d' $CRON_FILE
|
||||
echo '*/5 * * * * /etc/init.d/dnsforwarder health' >> $CRON_FILE
|
||||
echo '0 1 * * 0 /etc/init.d/dnsforwarder makegfwlist' >> $CRON_FILE
|
||||
crontab $CRON_FILE
|
||||
}
|
||||
|
||||
del_cron()
|
||||
{
|
||||
sed -i '/dnsforwarder/d' $CRON_FILE
|
||||
/etc/init.d/cron restart
|
||||
}
|
||||
|
||||
fixflowoffload(){
|
||||
dns=$(uci get flowoffload.@flow[0].dns 2>/dev/null)
|
||||
if [ $dns -eq 1 ]; then
|
||||
uci set flowoffload.@flow[0].dns=0 && uci commit flowoffload
|
||||
/etc/init.d/flowoffload restart
|
||||
fi
|
||||
}
|
||||
|
||||
makelist() {
|
||||
[ -z "$2" ] && return
|
||||
local i
|
||||
local t="$1"; shift
|
||||
for i in "$@"
|
||||
do
|
||||
echo "$t $i"
|
||||
done
|
||||
}
|
||||
|
||||
health(){
|
||||
rm /var/log/dnsforwarder.log.* 2>/dev/null
|
||||
local pid=$(cat ${PID_FILE} 2>/dev/null)
|
||||
if [ -n "${pid}" -a -d /proc/$pid ]; then
|
||||
echo "[health] process exists ${pid}"
|
||||
else
|
||||
echo "[health] Dnsforwarder is not running ${pid}"
|
||||
start
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
makegfwlist(){
|
||||
local GFW_FILE='/etc/dnsforwarder/gfw.txt'
|
||||
local GFW_TMP_FILE='/tmp/dnsforwarder-gfw.old'
|
||||
local TSTIME=`date '+%Y-%m-%d %H:%M:%S'`
|
||||
touch ${GFW_TMP_FILE}
|
||||
cat /etc/config/gfw.list 2>/dev/null > /tmp/edf.ts
|
||||
cat /etc/dnsmasq.ssr/gfw_base.conf 2>/dev/null | awk -F '/' '{print $2}' | sed 's/^.//g' >> /tmp/edf.ts
|
||||
cat /etc/dnsmasq.ssr/gfw_list.conf 2>/dev/null | awk -F '/' '{print $2}' | sed 's/^.//g' >> /tmp/edf.ts
|
||||
sort /tmp/edf.ts | uniq > /tmp/edf.ts
|
||||
/usr/share/dnsforwarder/gfwlist.sh -i -l -o /tmp/dnsforwarder-gfw.tmp --extra-domain-file /tmp/edf.ts
|
||||
if [ $? != 0 ]; then
|
||||
echo 'Failed to fetch gfwlist'
|
||||
logger -t Failed to fetch gfwlist
|
||||
return 2
|
||||
fi
|
||||
local gfw=$(cat /tmp/dnsforwarder-gfw.tmp)
|
||||
echo "# GenerationAt TS_BUILD_TIME" > ${GFW_TMP_FILE}.new
|
||||
echo "protocol tcp" >> ${GFW_TMP_FILE}.new
|
||||
echo "server 8.8.8.8,8.8.4.4,1.1.1.1,1.0.0.1,208.67.222.222,208.67.220.220,209.244.0.3,209.244.0.4,8.26.56.26,8.20.247.20,156.154.70.1,156.154.71.1,199.85.126.10" >> ${GFW_TMP_FILE}.new
|
||||
echo -e 'proxy no\n\n\n' >> ${GFW_TMP_FILE}.new
|
||||
echo "${gfw}" >> ${GFW_TMP_FILE}.new
|
||||
if [ "`cat ${GFW_TMP_FILE}.new | md5sum`" == "`cat ${GFW_TMP_FILE} | md5sum`" ]; then
|
||||
printf "[\e[32m%s\e[0m]\n" "hold"
|
||||
else
|
||||
cp ${GFW_TMP_FILE}.new ${GFW_TMP_FILE}
|
||||
cp ${GFW_TMP_FILE} ${GFW_FILE}
|
||||
sed -i "s/TS_BUILD_TIME/${TSTIME}/g" ${GFW_FILE}
|
||||
printf "[\e[33m%s\e[0m]" "PID"
|
||||
restart
|
||||
fi
|
||||
}
|
||||
|
||||
makeconfig () {
|
||||
config_load dnsforwarder
|
||||
|
||||
local log=$(uci get dnsforwarder.@config[0].log 2>/dev/null)
|
||||
local log_size=$(uci get dnsforwarder.@config[0].log_size 2>/dev/null)
|
||||
|
||||
local gfw=$(uci get dnsforwarder.@config[0].gfw 2>/dev/null)
|
||||
|
||||
local udp_local=$(uci -d ',' get dnsforwarder.@config[0].udp_local 2>/dev/null)
|
||||
local udp_local_list=$(uci get dnsforwarder.@config[0].udp_local 2>/dev/null)
|
||||
local tcp_group=$(uci get dnsforwarder.@config[0].tcp_group 2>/dev/null)
|
||||
local udp_group=$(uci get dnsforwarder.@config[0].udp_group 2>/dev/null)
|
||||
local group_file=$(uci get dnsforwarder.@config[0].group_file 2>/dev/null)
|
||||
local block_ip=$(uci -d ',' get dnsforwarder.@config[0].block_ip 2>/dev/null)
|
||||
local ip_substituting=$(uci -d ',' get dnsforwarder.@config[0].ip_substituting 2>/dev/null)
|
||||
local block_negative_resp=$(uci get dnsforwarder.@config[0].block_negative_resp 2>/dev/null)
|
||||
local append_host=$(uci get dnsforwarder.@config[0].append_host 2>/dev/null)
|
||||
local block_ipv6=$(uci get dnsforwarder.@config[0].block_ipv6 2>/dev/null)
|
||||
|
||||
local cache=$(uci get dnsforwarder.@config[0].cache 2>/dev/null)
|
||||
local cache_size=$(uci get dnsforwarder.@config[0].cache_size 2>/dev/null)
|
||||
local cache_ignore=$(uci get dnsforwarder.@config[0].cache_ignore 2>/dev/null)
|
||||
local cache_control=$(uci get dnsforwarder.@config[0].cache_control 2>/dev/null)
|
||||
|
||||
local domain_statistic=$(uci get dnsforwarder.@config[0].domain_statistic 2>/dev/null)
|
||||
local udp_local_addr=$(uci get dnsforwarder.@arguments[0].addr 2>/dev/null)
|
||||
udp_local_addr=${udp_local_addr/:/#}
|
||||
|
||||
echo "LogOn ${log}" > $DNSFORWARDER_CONF
|
||||
if [ $log = "true" ]; then
|
||||
rm /var/log/dnsforwarder.log.* 2>/dev/null
|
||||
echo '' > /var/log/dnsforwarder.log
|
||||
echo "LogFileThresholdLength ${log_size}" >> $DNSFORWARDER_CONF
|
||||
echo "LogFileFolder /var/log" >> $DNSFORWARDER_CONF
|
||||
fi
|
||||
|
||||
[ -n "$udp_local" ] && echo "UDPLocal ${udp_local}" >> $DNSFORWARDER_CONF
|
||||
[ -n "$udp_local_addr" ] && eval "makelist 'server=' $udp_local_addr" > /tmp/dnsmasq.dnsforwarder.conf
|
||||
sed -i "s/ //g" /tmp/dnsmasq.dnsforwarder.conf
|
||||
|
||||
eval "makelist 'TCPGroup' $tcp_group" >> $DNSFORWARDER_CONF
|
||||
eval "makelist 'UDPGroup' $udp_group" >> $DNSFORWARDER_CONF
|
||||
eval "makelist 'GroupFile' $group_file" >> $DNSFORWARDER_CONF
|
||||
|
||||
if [ $gfw = "true" ]; then
|
||||
echo 'GroupFile /etc/dnsforwarder/gfw.txt' >> $DNSFORWARDER_CONF
|
||||
fi
|
||||
|
||||
echo "BlockIP ${block_ip}" >> $DNSFORWARDER_CONF
|
||||
eval "makelist 'IPSubstituting' $ip_substituting" >> $DNSFORWARDER_CONF
|
||||
echo "BlockNegativeResponse ${block_negative_resp}" >> $DNSFORWARDER_CONF
|
||||
eval "makelist 'AppendHosts' $append_host" >> $DNSFORWARDER_CONF
|
||||
echo "BlockIpv6WhenIpv4Exists ${block_ipv6}" >> $DNSFORWARDER_CONF
|
||||
|
||||
echo "UseCache ${cache}" >> $DNSFORWARDER_CONF
|
||||
if [ $cache = "true" ]; then
|
||||
echo "CacheSize ${cache_size}" >> $DNSFORWARDER_CONF
|
||||
echo "MemoryCache false" >> $DNSFORWARDER_CONF
|
||||
echo "CacheFile /tmp/dnsforwarder.cache" >> $DNSFORWARDER_CONF
|
||||
echo "IgnoreTTL ${cache_ignore}" >> $DNSFORWARDER_CONF
|
||||
eval "makelist 'CacheControl' $cache_control" >> $DNSFORWARDER_CONF
|
||||
echo "ReloadCache true" >> $DNSFORWARDER_CONF
|
||||
echo "OverwriteCache true" >> $DNSFORWARDER_CONF
|
||||
fi
|
||||
echo "DomainStatistic ${domain_statistic}" >> $DNSFORWARDER_CONF
|
||||
if [ $domain_statistic = "true" ]; then
|
||||
touch /tmp/dnsforwarder-statistic.html
|
||||
mkdir -p /root/.dnsforwarder
|
||||
rm /root/.dnsforwarder/statistic.html 2 > /dev/null
|
||||
ln -s /tmp/dnsforwarder-statistic.html /root/.dnsforwarder/statistic.html
|
||||
local domain_statistic_tag='<!-- TS DNSFORWARDER -->'
|
||||
echo "DomainStatisticTempletFile /tmp/dnsforwarder-statistic.html" >> $DNSFORWARDER_CONF
|
||||
echo "StatisticInsertionPosition ${domain_statistic_tag}" >> $DNSFORWARDER_CONF
|
||||
echo "StatisticUpdateInterval 60" >> $DNSFORWARDER_CONF
|
||||
echo "${domain_statistic_tag}" > /tmp/dnsforwarder-statistic.html
|
||||
fi
|
||||
}
|
||||
|
||||
start()
|
||||
{
|
||||
echo luci for dnsforwarder
|
||||
local vt_enabled=$(uci get dnsforwarder.@arguments[0].enabled 2>/dev/null)
|
||||
if [ $vt_enabled = 0 ]; then
|
||||
echo dnsforwarder is not enabled
|
||||
exit
|
||||
fi
|
||||
makeconfig
|
||||
fixflowoffload
|
||||
dnsforwarder -f $DNSFORWARDER_CONF -d
|
||||
sleep 10
|
||||
mkdir -p ${PID_PATH}
|
||||
pid=$(ps | awk '$5 ~ /\[dnsforwarder\]/ {print $1}')
|
||||
echo "dnsforwarder running pid is ${pid}"
|
||||
logger -t The pid of dnsforwarder is ${PID_FILE} ${pid}
|
||||
echo ${pid} > ${PID_FILE}
|
||||
/etc/init.d/dnsforwarder enable
|
||||
local dnsmasq=$(uci get dnsforwarder.@arguments[0].dnsmasq 2>/dev/null)
|
||||
local addr=$(uci get dnsforwarder.@arguments[0].addr 2>/dev/null)
|
||||
[ -n "${addr}" ] && addr=${addr/:/#}
|
||||
|
||||
if [ "${dnsmasq}" = "1" ]; then
|
||||
uci delete dhcp.@dnsmasq[0].server 2>/dev/null
|
||||
# uci add_list dhcp.@dnsmasq[0].server=$addr
|
||||
uci delete dhcp.@dnsmasq[0].resolvfile 2>/dev/null
|
||||
uci set dhcp.@dnsmasq[0].noresolv=1
|
||||
uci set dhcp.@dnsmasq[0].serversfile=/tmp/dnsmasq.dnsforwarder.conf
|
||||
uci commit dhcp
|
||||
/etc/init.d/dnsmasq restart
|
||||
fi
|
||||
add_cron
|
||||
}
|
||||
|
||||
stop()
|
||||
{
|
||||
del_cron
|
||||
logger -t stopping dnsforwarder
|
||||
local addr=$(uci get dnsforwarder.@arguments[0].addr 2>/dev/null)
|
||||
addr=${addr/:/#}
|
||||
uci del_list dhcp.@dnsmasq[0].server=$addr 2>/dev/null
|
||||
uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.auto 2>/dev/null
|
||||
uci delete dhcp.@dnsmasq[0].noresolv 2>/dev/null
|
||||
uci delete dhcp.@dnsmasq[0].serversfile 2>/dev/null
|
||||
uci commit dhcp
|
||||
/etc/init.d/dnsmasq restart
|
||||
[ -e ${PID_FILE} ] && {
|
||||
pid=$(cat ${PID_FILE})
|
||||
logger -t killing dnsforwarder pid ${pid}
|
||||
echo killing dnsforwarder pid ${pid}
|
||||
kill ${pid}
|
||||
rm -f ${PID_FILE}
|
||||
} || {
|
||||
logger -t Cannot find dnsforwarder pid file
|
||||
}
|
||||
}
|
||||
|
||||
restart()
|
||||
{
|
||||
pid=$(cat ${PID_FILE} 2>/dev/null)
|
||||
echo Dnsforwarder pid file is ${pid}
|
||||
[ -n "$pid" ] && {
|
||||
echo stopping pid ${pid}
|
||||
logger -t There is dnsforwarder pid ${pid}
|
||||
stop
|
||||
} || {
|
||||
logger -t Dnsforwarder is not running
|
||||
}
|
||||
sleep 7
|
||||
local vt_enabled=$(uci get dnsforwarder.@arguments[0].enabled 2>/dev/null)
|
||||
echo dnsforwarder status is ${vt_enabled}
|
||||
logger -t Dnsforwarder is initializing enabled is ${vt_enabled}
|
||||
if [ ${vt_enabled} = 1 ]; then
|
||||
[ -n "$pid" ] && {
|
||||
logger -t There is dnsforwarder pid ${pid}
|
||||
stop
|
||||
} || {
|
||||
logger -t Dnsforwarder is not running
|
||||
}
|
||||
|
||||
logger -t Restarting dnsforwarder
|
||||
start
|
||||
else
|
||||
/etc/init.d/dnsforwarder disable
|
||||
fi
|
||||
}
|
||||
|
||||
EXTRA_COMMANDS="makeconfig makegfwlist health"
|
||||
313
package/lean/dnsforwarder/files/usr/share/dnsforwarder/gfwlist.sh
Executable file
313
package/lean/dnsforwarder/files/usr/share/dnsforwarder/gfwlist.sh
Executable file
@ -0,0 +1,313 @@
|
||||
#/bin/sh
|
||||
|
||||
# Name: gfwlist2dnsmasq.sh
|
||||
# Desription: A shell script which convert gfwlist into dnsmasq rules.
|
||||
# Version: 0.8.0 (2017.12.25)
|
||||
# Author: Cokebar Chi
|
||||
# Website: https://github.com/cokebar
|
||||
|
||||
_green() {
|
||||
printf '\033[1;31;32m'
|
||||
printf -- "%b" "$1"
|
||||
printf '\033[0m'
|
||||
}
|
||||
|
||||
_red() {
|
||||
printf '\033[1;31;31m'
|
||||
printf -- "%b" "$1"
|
||||
printf '\033[0m'
|
||||
}
|
||||
|
||||
_yellow() {
|
||||
printf '\033[1;31;33m'
|
||||
printf -- "%b" "$1"
|
||||
printf '\033[0m'
|
||||
}
|
||||
|
||||
usage() {
|
||||
cat <<-EOF
|
||||
|
||||
Name: gfwlist2dnsmasq.sh
|
||||
Desription: A shell script which convert gfwlist into dnsmasq rules.
|
||||
Version: 0.8.0 (2017.12.25)
|
||||
Author: Cokebar Chi
|
||||
Website: https://github.com/cokebar
|
||||
|
||||
Usage: sh gfwlist2dnsmasq.sh [options] -o FILE
|
||||
Valid options are:
|
||||
-d, --dns <dns_ip>
|
||||
DNS IP address for the GfwList Domains (Default: 127.0.0.1)
|
||||
-p, --port <dns_port>
|
||||
DNS Port for the GfwList Domains (Default: 5353)
|
||||
-s, --ipset <ipset_name>
|
||||
Ipset name for the GfwList domains
|
||||
(If not given, ipset rules will not be generated.)
|
||||
-o, --output <FILE>
|
||||
/path/to/output_filename
|
||||
-i, --insecure
|
||||
Force bypass certificate validation (insecure)
|
||||
-l, --domain-list
|
||||
Convert Gfwlist into domain list instead of dnsmasq rules
|
||||
(If this option is set, DNS IP/Port & ipset are not needed)
|
||||
--exclude-domain-file <FILE>
|
||||
Delete specific domains in the result from a domain list text file
|
||||
Please put one domain per line
|
||||
--extra-domain-file <FILE>
|
||||
Include extra domains to the result from a domain list text file
|
||||
This file will be processed after the exclude-domain-file
|
||||
Please put one domain per line
|
||||
-h, --help
|
||||
Usage
|
||||
EOF
|
||||
exit $1
|
||||
}
|
||||
|
||||
clean_and_exit(){
|
||||
# Clean up temp files
|
||||
printf 'Cleaning up... '
|
||||
rm -rf $TMP_DIR
|
||||
_green 'Done\n\n'
|
||||
[ $1 -eq 0 ] && _green 'Job Finished.\n\n' || _red 'Exit with Error code '$1'.\n'
|
||||
exit $1
|
||||
}
|
||||
|
||||
check_depends(){
|
||||
which sed base64 curl >/dev/null
|
||||
if [ $? != 0 ]; then
|
||||
_red 'Error: Missing Dependency.\nPlease check whether you have the following binaries on you system:\nwhich, sed, base64, curl.\n'
|
||||
exit 3
|
||||
fi
|
||||
|
||||
SYS_KERNEL=`uname -s`
|
||||
if [ $SYS_KERNEL = "Darwin" -o $SYS_KERNEL = "FreeBSD" ]; then
|
||||
BASE64_DECODE='base64 -D'
|
||||
SED_ERES='sed -E'
|
||||
else
|
||||
BASE64_DECODE='base64 -d'
|
||||
SED_ERES='sed -r'
|
||||
fi
|
||||
}
|
||||
|
||||
get_args(){
|
||||
OUT_TYPE='DNSMASQ_RULES'
|
||||
DNS_IP='127.0.0.1'
|
||||
DNS_PORT='5353'
|
||||
IPSET_NAME=''
|
||||
FILE_FULLPATH=''
|
||||
CURL_EXTARG=''
|
||||
WITH_IPSET=0
|
||||
EXTRA_DOMAIN_FILE=''
|
||||
EXCLUDE_DOMAIN_FILE=''
|
||||
IPV4_PATTERN='^((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\.){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)$'
|
||||
IPV6_PATTERN='^((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:)))(%.+)?$'
|
||||
|
||||
while [ ${#} -gt 0 ]; do
|
||||
case "${1}" in
|
||||
--help | -h)
|
||||
usage 0
|
||||
;;
|
||||
--domain-list | -l)
|
||||
OUT_TYPE='DOMAIN_LIST'
|
||||
;;
|
||||
--insecure | -i)
|
||||
CURL_EXTARG='--insecure'
|
||||
;;
|
||||
--dns | -d)
|
||||
DNS_IP="$2"
|
||||
shift
|
||||
;;
|
||||
--port | -p)
|
||||
DNS_PORT="$2"
|
||||
shift
|
||||
;;
|
||||
--ipset | -s)
|
||||
IPSET_NAME="$2"
|
||||
shift
|
||||
;;
|
||||
--output | -o)
|
||||
OUT_FILE="$2"
|
||||
shift
|
||||
;;
|
||||
--extra-domain-file)
|
||||
EXTRA_DOMAIN_FILE="$2"
|
||||
shift
|
||||
;;
|
||||
--exclude-domain-file)
|
||||
EXCLUDE_DOMAIN_FILE="$2"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
_red "Invalid argument: $1"
|
||||
usage 1
|
||||
;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
|
||||
# Check path & file name
|
||||
if [ -z $OUT_FILE ]; then
|
||||
_red 'Error: Please specify the path to the output file(using -o/--output argument).\n'
|
||||
exit 1
|
||||
else
|
||||
if [ -z ${OUT_FILE##*/} ]; then
|
||||
_red 'Error: '$OUT_FILE' is a path, not a file.\n'
|
||||
exit 1
|
||||
else
|
||||
if [ ${OUT_FILE}a != ${OUT_FILE%/*}a ] && [ ! -d ${OUT_FILE%/*} ]; then
|
||||
_red 'Error: Folder do not exist: '${OUT_FILE%/*}'\n'
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $OUT_TYPE = 'DNSMASQ_RULES' ]; then
|
||||
# Check DNS IP
|
||||
IPV4_TEST=$(echo $DNS_IP | grep -E $IPV4_PATTERN)
|
||||
IPV6_TEST=$(echo $DNS_IP | grep -E $IPV6_PATTERN)
|
||||
if [ "$IPV4_TEST" != "$DNS_IP" -a "$IPV6_TEST" != "$DNS_IP" ]; then
|
||||
_red 'Error: Please enter a valid DNS server IP address.\n'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check DNS port
|
||||
if [ $DNS_PORT -lt 1 -o $DNS_PORT -gt 65535 ]; then
|
||||
_red 'Error: Please enter a valid DNS server port.\n'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check ipset name
|
||||
if [ -z $IPSET_NAME ]; then
|
||||
WITH_IPSET=0
|
||||
else
|
||||
IPSET_TEST=$(echo $IPSET_NAME | grep -E '^\w+$')
|
||||
if [ "$IPSET_TEST" != "$IPSET_NAME" ]; then
|
||||
_red 'Error: Please enter a valid IP set name.\n'
|
||||
exit 1
|
||||
else
|
||||
WITH_IPSET=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -z $EXTRA_DOMAIN_FILE ] && [ ! -f $EXTRA_DOMAIN_FILE ]; then
|
||||
_yellow 'WARNING:\nExtra domain file does not exist, ignored.\n\n'
|
||||
EXTRA_DOMAIN_FILE=''
|
||||
fi
|
||||
|
||||
if [ ! -z $EXCLUDE_DOMAIN_FILE ] && [ ! -f $EXCLUDE_DOMAIN_FILE ]; then
|
||||
_yellow 'WARNING:\nExclude domain file does not exist, ignored.\n\n'
|
||||
EXCLUDE_DOMAIN_FILE=''
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
process(){
|
||||
# Set Global Var
|
||||
BASE_URL='https://github.com/gfwlist/gfwlist/raw/master/gfwlist.txt'
|
||||
TMP_DIR=`mktemp -d /tmp/gfwlist2dnsmasq.XXXXXX`
|
||||
BASE64_FILE="$TMP_DIR/base64.txt"
|
||||
GFWLIST_FILE="$TMP_DIR/gfwlist.txt"
|
||||
DOMAIN_TEMP_FILE="$TMP_DIR/gfwlist2domain.tmp"
|
||||
DOMAIN_FILE="$TMP_DIR/gfwlist2domain.txt"
|
||||
CONF_TMP_FILE="$TMP_DIR/gfwlist.conf.tmp"
|
||||
OUT_TMP_FILE="$TMP_DIR/gfwlist.out.tmp"
|
||||
|
||||
# Fetch GfwList and decode it into plain text
|
||||
printf 'Fetching GfwList... '
|
||||
local tscurl='curl -L --connect-timeout 5 -m 300 --retry 3 --retry-delay 1'
|
||||
$tscurl $CURL_EXTARG -o$BASE64_FILE $BASE_URL \
|
||||
|| $tscurl $CURL_EXTARG -o$BASE64_FILE https://gitlab.com/gfwlist/gfwlist/raw/master/gfwlist.txt \
|
||||
|| $tscurl $CURL_EXTARG -o$BASE64_FILE https://git.tuxfamily.org/gfwlist/gfwlist.git/plain/gfwlist.txt \
|
||||
|| $tscurl $CURL_EXTARG -o$BASE64_FILE https://pagure.io/gfwlist/raw/master/f/gfwlist.txt \
|
||||
|| $tscurl $CURL_EXTARG -o$BASE64_FILE http://repo.or.cz/gfwlist.git/blob_plain/HEAD:/gfwlist.txt \
|
||||
|| $tscurl $CURL_EXTARG -o$BASE64_FILE https://bitbucket.org/gfwlist/gfwlist/raw/HEAD/gfwlist.txt \
|
||||
|| $tscurl $CURL_EXTARG -o$BASE64_FILE $BASE_URL
|
||||
if [ $? != 0 ]; then
|
||||
_red '\nFailed to fetch gfwlist.txt. Please check your Internet connection.\n'
|
||||
clean_and_exit 2
|
||||
fi
|
||||
$BASE64_DECODE $BASE64_FILE > $GFWLIST_FILE || ( _red 'Failed to decode gfwlist.txt. Quit.\n'; clean_and_exit 2 )
|
||||
_green 'Done.\n\n'
|
||||
|
||||
# Convert
|
||||
IGNORE_PATTERN='^\!|\[|^@@|(https?://){0,1}[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'
|
||||
HEAD_FILTER_PATTERN='s#^(\|\|?)?(https?://)?##g'
|
||||
TAIL_FILTER_PATTERN='s#/.*$|%2F.*$##g'
|
||||
DOMAIN_PATTERN='([a-zA-Z0-9][-a-zA-Z0-9]*(\.[a-zA-Z0-9][-a-zA-Z0-9]*)+)'
|
||||
HANDLE_WILDCARD_PATTERN='s#^(([a-zA-Z0-9]*\*[-a-zA-Z0-9]*)?(\.))?([a-zA-Z0-9][-a-zA-Z0-9]*(\.[a-zA-Z0-9][-a-zA-Z0-9]*)+)(\*)?#\4#g'
|
||||
|
||||
printf 'Converting GfwList to ' && _green $OUT_TYPE && printf ' ...\n'
|
||||
_yellow '\nWARNING:\nThe following lines in GfwList contain regex, and might be ignored:\n\n'
|
||||
cat $GFWLIST_FILE | grep -n '^/.*$'
|
||||
_yellow "\nThis script will try to convert some of the regex rules. But you should know this may not be a equivalent conversion.\nIf there's regex rules which this script do not deal with, you should add the domain manually to the list.\n\n"
|
||||
grep -vE $IGNORE_PATTERN $GFWLIST_FILE | $SED_ERES $HEAD_FILTER_PATTERN | $SED_ERES $TAIL_FILTER_PATTERN | grep -E $DOMAIN_PATTERN | $SED_ERES $HANDLE_WILDCARD_PATTERN > $DOMAIN_TEMP_FILE
|
||||
|
||||
printf 'google.com\ngoogle.ad\ngoogle.ae\ngoogle.com.af\ngoogle.com.ag\ngoogle.com.ai\ngoogle.al\ngoogle.am\ngoogle.co.ao\ngoogle.com.ar\ngoogle.as\ngoogle.at\ngoogle.com.au\ngoogle.az\ngoogle.ba\ngoogle.com.bd\ngoogle.be\ngoogle.bf\ngoogle.bg\ngoogle.com.bh\ngoogle.bi\ngoogle.bj\ngoogle.com.bn\ngoogle.com.bo\ngoogle.com.br\ngoogle.bs\ngoogle.bt\ngoogle.co.bw\ngoogle.by\ngoogle.com.bz\ngoogle.ca\ngoogle.cd\ngoogle.cf\ngoogle.cg\ngoogle.ch\ngoogle.ci\ngoogle.co.ck\ngoogle.cl\ngoogle.cm\ngoogle.cn\ngoogle.com.co\ngoogle.co.cr\ngoogle.com.cu\ngoogle.cv\ngoogle.com.cy\ngoogle.cz\ngoogle.de\ngoogle.dj\ngoogle.dk\ngoogle.dm\ngoogle.com.do\ngoogle.dz\ngoogle.com.ec\ngoogle.ee\ngoogle.com.eg\ngoogle.es\ngoogle.com.et\ngoogle.fi\ngoogle.com.fj\ngoogle.fm\ngoogle.fr\ngoogle.ga\ngoogle.ge\ngoogle.gg\ngoogle.com.gh\ngoogle.com.gi\ngoogle.gl\ngoogle.gm\ngoogle.gp\ngoogle.gr\ngoogle.com.gt\ngoogle.gy\ngoogle.com.hk\ngoogle.hn\ngoogle.hr\ngoogle.ht\ngoogle.hu\ngoogle.co.id\ngoogle.ie\ngoogle.co.il\ngoogle.im\ngoogle.co.in\ngoogle.iq\ngoogle.is\ngoogle.it\ngoogle.je\ngoogle.com.jm\ngoogle.jo\ngoogle.co.jp\ngoogle.co.ke\ngoogle.com.kh\ngoogle.ki\ngoogle.kg\ngoogle.co.kr\ngoogle.com.kw\ngoogle.kz\ngoogle.la\ngoogle.com.lb\ngoogle.li\ngoogle.lk\ngoogle.co.ls\ngoogle.lt\ngoogle.lu\ngoogle.lv\ngoogle.com.ly\ngoogle.co.ma\ngoogle.md\ngoogle.me\ngoogle.mg\ngoogle.mk\ngoogle.ml\ngoogle.com.mm\ngoogle.mn\ngoogle.ms\ngoogle.com.mt\ngoogle.mu\ngoogle.mv\ngoogle.mw\ngoogle.com.mx\ngoogle.com.my\ngoogle.co.mz\ngoogle.com.na\ngoogle.com.nf\ngoogle.com.ng\ngoogle.com.ni\ngoogle.ne\ngoogle.nl\ngoogle.no\ngoogle.com.np\ngoogle.nr\ngoogle.nu\ngoogle.co.nz\ngoogle.com.om\ngoogle.com.pa\ngoogle.com.pe\ngoogle.com.pg\ngoogle.com.ph\ngoogle.com.pk\ngoogle.pl\ngoogle.pn\ngoogle.com.pr\ngoogle.ps\ngoogle.pt\ngoogle.com.py\ngoogle.com.qa\ngoogle.ro\ngoogle.ru\ngoogle.rw\ngoogle.com.sa\ngoogle.com.sb\ngoogle.sc\ngoogle.se\ngoogle.com.sg\ngoogle.sh\ngoogle.si\ngoogle.sk\ngoogle.com.sl\ngoogle.sn\ngoogle.so\ngoogle.sm\ngoogle.sr\ngoogle.st\ngoogle.com.sv\ngoogle.td\ngoogle.tg\ngoogle.co.th\ngoogle.com.tj\ngoogle.tk\ngoogle.tl\ngoogle.tm\ngoogle.tn\ngoogle.to\ngoogle.com.tr\ngoogle.tt\ngoogle.com.tw\ngoogle.co.tz\ngoogle.com.ua\ngoogle.co.ug\ngoogle.co.uk\ngoogle.com.uy\ngoogle.co.uz\ngoogle.com.vc\ngoogle.co.ve\ngoogle.vg\ngoogle.co.vi\ngoogle.com.vn\ngoogle.vu\ngoogle.ws\ngoogle.rs\ngoogle.co.za\ngoogle.co.zm\ngoogle.co.zw\ngoogle.cat\n' >> $DOMAIN_TEMP_FILE
|
||||
printf 'Google search domains... ' && _green 'Added\n'
|
||||
|
||||
# Add blogspot domains
|
||||
printf 'blogspot.ca\nblogspot.co.uk\nblogspot.com\nblogspot.com.ar\nblogspot.com.au\nblogspot.com.br\nblogspot.com.by\nblogspot.com.co\nblogspot.com.cy\nblogspot.com.ee\nblogspot.com.eg\nblogspot.com.es\nblogspot.com.mt\nblogspot.com.ng\nblogspot.com.tr\nblogspot.com.uy\nblogspot.de\nblogspot.gr\nblogspot.in\nblogspot.mx\nblogspot.ch\nblogspot.fr\nblogspot.ie\nblogspot.it\nblogspot.pt\nblogspot.ro\nblogspot.sg\nblogspot.be\nblogspot.no\nblogspot.se\nblogspot.jp\nblogspot.in\nblogspot.ae\nblogspot.al\nblogspot.am\nblogspot.ba\nblogspot.bg\nblogspot.ch\nblogspot.cl\nblogspot.cz\nblogspot.dk\nblogspot.fi\nblogspot.gr\nblogspot.hk\nblogspot.hr\nblogspot.hu\nblogspot.ie\nblogspot.is\nblogspot.kr\nblogspot.li\nblogspot.lt\nblogspot.lu\nblogspot.md\nblogspot.mk\nblogspot.my\nblogspot.nl\nblogspot.no\nblogspot.pe\nblogspot.qa\nblogspot.ro\nblogspot.ru\nblogspot.se\nblogspot.sg\nblogspot.si\nblogspot.sk\nblogspot.sn\nblogspot.tw\nblogspot.ug\nblogspot.cat\n' >> $DOMAIN_TEMP_FILE
|
||||
printf 'Blogspot domains... ' && _green 'Added\n'
|
||||
|
||||
# Add twimg.edgesuite.net
|
||||
printf 'twimg.edgesuite.net\n' >> $DOMAIN_TEMP_FILE
|
||||
printf 'twimg.edgesuite.net... ' && _green 'Added\n'
|
||||
|
||||
# Delete exclude domains
|
||||
if [ ! -z $EXCLUDE_DOMAIN_FILE ]; then
|
||||
for line in $(cat $EXCLUDE_DOMAIN_FILE)
|
||||
do
|
||||
cat $DOMAIN_TEMP_FILE | grep -vF -f $EXCLUDE_DOMAIN_FILE > $DOMAIN_FILE
|
||||
done
|
||||
printf 'Domains in exclude domain file '$EXCLUDE_DOMAIN_FILE'... ' && _green 'Deleted\n'
|
||||
else
|
||||
cat $DOMAIN_TEMP_FILE > $DOMAIN_FILE
|
||||
fi
|
||||
|
||||
# Add extra domains
|
||||
if [ ! -z $EXTRA_DOMAIN_FILE ]; then
|
||||
cat $EXTRA_DOMAIN_FILE >> $DOMAIN_FILE
|
||||
printf 'Extra domain file '$EXTRA_DOMAIN_FILE'... ' && _green 'Added\n'
|
||||
fi
|
||||
|
||||
if [ $OUT_TYPE = 'DNSMASQ_RULES' ]; then
|
||||
# Convert domains into dnsmasq rules
|
||||
if [ $WITH_IPSET -eq 1 ]; then
|
||||
_green 'Ipset rules included.'
|
||||
sort -u $DOMAIN_FILE | $SED_ERES 's#(.+)#server=/\1/'$DNS_IP'\#'$DNS_PORT'\
|
||||
ipset=/\1/'$IPSET_NAME'#g' > $CONF_TMP_FILE
|
||||
else
|
||||
_green 'Ipset rules not included.'
|
||||
sort -u $DOMAIN_FILE | $SED_ERES 's#(.+)#server=/\1/'$DNS_IP'\#'$DNS_PORT'#g' > $CONF_TMP_FILE
|
||||
fi
|
||||
|
||||
# Generate output file
|
||||
echo '# dnsmasq rules generated by gfwlist' > $OUT_TMP_FILE
|
||||
echo "# Last Updated on $(date "+%Y-%m-%d %H:%M:%S")" >> $OUT_TMP_FILE
|
||||
echo '# ' >> $OUT_TMP_FILE
|
||||
cat $CONF_TMP_FILE >> $OUT_TMP_FILE
|
||||
cp $OUT_TMP_FILE $OUT_FILE
|
||||
else
|
||||
sort -u $DOMAIN_FILE > $OUT_TMP_FILE
|
||||
fi
|
||||
|
||||
cp $OUT_TMP_FILE $OUT_FILE
|
||||
printf '\nConverting GfwList to '$OUT_TYPE'... ' && _green 'Done\n\n'
|
||||
|
||||
# Clean up
|
||||
clean_and_exit 0
|
||||
}
|
||||
|
||||
main() {
|
||||
if [ -z "$1" ]; then
|
||||
usage 0
|
||||
else
|
||||
check_depends
|
||||
get_args "$@"
|
||||
_green '\nJob Started.\n\n'
|
||||
process
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
||||
42
package/lean/dsmboot/Makefile
Normal file
42
package/lean/dsmboot/Makefile
Normal file
@ -0,0 +1,42 @@
|
||||
#
|
||||
# Copyright (C) 2015-2016 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=dsmboot
|
||||
PKG_VERSION:=5.2
|
||||
PKG_RELEASE:=5967.1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=Synology DSM pxeboot from TFTP
|
||||
DEPENDS:=
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
DSM 5.2 boot from TFTP
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_DIR) $(1)/root
|
||||
$(INSTALL_DATA) ./files/* $(1)/root/
|
||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||
$(INSTALL_BIN) ./files/dsmboot $(1)/etc/uci-defaults/yyy-dsmboot
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||
BIN
package/lean/dsmboot/files/dsm.iso
Normal file
BIN
package/lean/dsmboot/files/dsm.iso
Normal file
Binary file not shown.
10
package/lean/dsmboot/files/dsmboot
Normal file
10
package/lean/dsmboot/files/dsmboot
Normal file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
set dhcp.@dnsmasq[0].enable_tftp='1'
|
||||
set dhcp.@dnsmasq[0].dhcp_boot='pxelinux.0'
|
||||
set dhcp.@dnsmasq[0].tftp_root='/root'
|
||||
commit dhcp
|
||||
EOF
|
||||
|
||||
exit 0
|
||||
9
package/lean/dsmboot/files/menu.lst
Normal file
9
package/lean/dsmboot/files/menu.lst
Normal file
@ -0,0 +1,9 @@
|
||||
default 0
|
||||
timeout 0
|
||||
fallback 0
|
||||
|
||||
title Synology DSM
|
||||
map --mem (pd)/dsm.iso (hd32)
|
||||
map --hook
|
||||
chainloader (hd32)
|
||||
|
||||
BIN
package/lean/dsmboot/files/pxelinux.0
Normal file
BIN
package/lean/dsmboot/files/pxelinux.0
Normal file
Binary file not shown.
70
package/lean/frpc/Makefile
Normal file
70
package/lean/frpc/Makefile
Normal file
@ -0,0 +1,70 @@
|
||||
#
|
||||
# Copyright (C) 2015-2016 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=frpc
|
||||
PKG_VERSION:=0.27.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
ifeq ($(ARCH),mipsel)
|
||||
FRPC_ARCH:=mipsle
|
||||
endif
|
||||
ifeq ($(ARCH),mips)
|
||||
FRPC_ARCH:=mips
|
||||
endif
|
||||
ifeq ($(ARCH),i386)
|
||||
FRPC_ARCH:=386
|
||||
endif
|
||||
ifeq ($(ARCH),x86_64)
|
||||
FRPC_ARCH:=amd64
|
||||
endif
|
||||
ifeq ($(ARCH),arm)
|
||||
FRPC_ARCH:=arm
|
||||
endif
|
||||
ifeq ($(ARCH),aarch64)
|
||||
FRPC_ARCH:=arm64
|
||||
endif
|
||||
|
||||
PKG_LICENSE:=Apache-2.0
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/fatedier/frp/releases/download/v$(PKG_VERSION)
|
||||
PKG_SOURCE:=frp_$(PKG_VERSION)_linux_$(FRPC_ARCH).tar.gz
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/frp_$(PKG_VERSION)_linux_$(FRPC_ARCH)
|
||||
PKG_HASH:=skip
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=FRPC Client
|
||||
DEPENDS:=
|
||||
URL:=https://github.com/fatedier/frp/releases
|
||||
endef
|
||||
|
||||
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
$(PKG_UNPACK)
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/frpc $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||
48
package/lean/ipset-lists/Makefile
Normal file
48
package/lean/ipset-lists/Makefile
Normal file
@ -0,0 +1,48 @@
|
||||
#
|
||||
# Copyright (c) 2015 Justin Liu
|
||||
# Author: Justin Liu <rssnsj@gmail.com>
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ipset-lists
|
||||
PKG_VERSION:=20181104
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/ipset-lists
|
||||
CATEGORY:=Network
|
||||
TITLE:=Service for IPSET address tables
|
||||
MAINTAINER:=Justin Liu <rssnsj@gmail.com>
|
||||
DEPENDS:=+ipset
|
||||
endef
|
||||
|
||||
define Package/ipset-lists/conffiles
|
||||
/etc/gfwlist/china-banned
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
endef
|
||||
|
||||
define Build/Compile/Default
|
||||
|
||||
endef
|
||||
Build/Compile = $(Build/Compile/Default)
|
||||
|
||||
define Package/ipset-lists/install
|
||||
$(CP) -a files/* $(1)/
|
||||
endef
|
||||
|
||||
define Package/ipset-lists/postinst
|
||||
#!/bin/sh
|
||||
if [ -e /etc/openwrt_release ]; then
|
||||
/etc/init.d/ipset.sh restart
|
||||
/etc/init.d/ipset.sh enable || :
|
||||
fi
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,ipset-lists))
|
||||
4801
package/lean/ipset-lists/files/etc/gfwlist/china-banned
Executable file
4801
package/lean/ipset-lists/files/etc/gfwlist/china-banned
Executable file
File diff suppressed because it is too large
Load Diff
95
package/lean/ipset-lists/files/etc/gfwlist/unblock-youku
Executable file
95
package/lean/ipset-lists/files/etc/gfwlist/unblock-youku
Executable file
@ -0,0 +1,95 @@
|
||||
v.youku.com
|
||||
api.youku.com
|
||||
v2.tudou.com
|
||||
www.tudou.com
|
||||
s.plcloud.music.qq.com
|
||||
i.y.qq.com
|
||||
hot.vrs.sohu.com
|
||||
live.tv.sohu.com
|
||||
pad.tv.sohu.com
|
||||
my.tv.sohu.com
|
||||
hot.vrs.letv.com
|
||||
data.video.qiyi.com
|
||||
cache.video.qiyi.com
|
||||
cache.vip.qiyi.com
|
||||
vv.video.qq.com
|
||||
tt.video.qq.com
|
||||
ice.video.qq.com
|
||||
tjsa.video.qq.com
|
||||
a10.video.qq.com
|
||||
xyy.video.qq.com
|
||||
vcq.video.qq.com
|
||||
vsh.video.qq.com
|
||||
vbj.video.qq.com
|
||||
bobo.video.qq.com
|
||||
flvs.video.qq.com
|
||||
bkvv.video.qq.com
|
||||
info.zb.qq.com
|
||||
geo.js.kankan.xunlei.com
|
||||
web-play.pptv.com
|
||||
web-play.pplive.cn
|
||||
dyn.ugc.pps.tv
|
||||
v.pps.tv
|
||||
inner.kandian.com
|
||||
ipservice.163.com
|
||||
so.open.163.com
|
||||
zb.s.qq.com
|
||||
ip.kankan.xunlei.com
|
||||
vxml.56.com
|
||||
music.sina.com.cn
|
||||
play.baidu.com
|
||||
v.iask.com
|
||||
tv.weibo.com
|
||||
wtv.v.iask.com
|
||||
video.sina.com.cn
|
||||
www.yinyuetai.com
|
||||
api.letv.com
|
||||
live.gslb.letv.com
|
||||
static.itv.letv.com
|
||||
ip.apps.cntv.cn
|
||||
vdn.apps.cntv.cn
|
||||
vdn.live.cntv.cn
|
||||
vip.sports.cntv.cn
|
||||
a.play.api.3g.youku.com
|
||||
i.play.api.3g.youku.com
|
||||
api.3g.youku.com
|
||||
tv.api.3g.youku.com
|
||||
play.api.3g.youku.com
|
||||
play.api.3g.tudou.com
|
||||
tv.api.3g.tudou.com
|
||||
api.3g.tudou.com
|
||||
api.tv.sohu.com
|
||||
access.tv.sohu.com
|
||||
iface.iqiyi.com
|
||||
iface2.iqiyi.com
|
||||
cache.m.iqiyi.com
|
||||
dynamic.app.m.letv.com
|
||||
dynamic.meizi.app.m.letv.com
|
||||
dynamic.search.app.m.letv.com
|
||||
dynamic.live.app.m.letv.com
|
||||
listso.m.areainfo.ppstream.com
|
||||
epg.api.pptv.com
|
||||
play.api.pptv.com
|
||||
m.letv.com
|
||||
interface.bilibili.com
|
||||
3g.music.qq.com
|
||||
mqqplayer.3g.qq.com
|
||||
proxy.music.qq.com
|
||||
proxymc.qq.com
|
||||
ip2.kugou.com
|
||||
ip.kugou.com
|
||||
client.api.ttpod.com
|
||||
mobi.kuwo.cn
|
||||
mobilefeedback.kugou.com
|
||||
tingapi.ting.baidu.com
|
||||
music.baidu.com
|
||||
serviceinfo.sdk.duomi.com
|
||||
music.163.com
|
||||
www.xiami.com
|
||||
spark.api.xiami.com
|
||||
iplocation.geo.qiyi.com
|
||||
sns.video.qq.com
|
||||
v5.pc.duomi.com
|
||||
tms.is.ysten.com
|
||||
internal.check.duokanbox.com
|
||||
openapi.youku.com
|
||||
29
package/lean/ipset-lists/files/etc/init.d/ipset.sh
Executable file
29
package/lean/ipset-lists/files/etc/init.d/ipset.sh
Executable file
@ -0,0 +1,29 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2014 Justin Liu <rssnsj@gmail.com>
|
||||
|
||||
START=21
|
||||
|
||||
start()
|
||||
{
|
||||
local file
|
||||
for file in /etc/ipset/*; do
|
||||
[ -f $file ] || continue
|
||||
ipset restore < $file
|
||||
done
|
||||
}
|
||||
|
||||
stop()
|
||||
{
|
||||
local file
|
||||
for file in /etc/ipset/*; do
|
||||
[ -f $file ] || continue
|
||||
ipset destroy `basename $file`
|
||||
done
|
||||
}
|
||||
|
||||
restart()
|
||||
{
|
||||
stop >/dev/null 2>&1
|
||||
start
|
||||
}
|
||||
|
||||
8265
package/lean/ipset-lists/files/etc/ipset/china
Executable file
8265
package/lean/ipset-lists/files/etc/ipset/china
Executable file
File diff suppressed because it is too large
Load Diff
6
package/lean/ipset-lists/files/etc/ipset/local
Executable file
6
package/lean/ipset-lists/files/etc/ipset/local
Executable file
@ -0,0 +1,6 @@
|
||||
create local hash:net family inet hashsize 1024 maxelem 65536
|
||||
add local 10.0.0.0/8
|
||||
add local 127.0.0.0/8
|
||||
add local 172.16.0.0/12
|
||||
add local 192.168.0.0/16
|
||||
add local 224.0.0.0/3
|
||||
9
package/lean/ipset-lists/po/zh_CN/gfwlist.po
Normal file
9
package/lean/ipset-lists/po/zh_CN/gfwlist.po
Normal file
@ -0,0 +1,9 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
msgid "Domain Lists Settings"
|
||||
msgstr "域名列表设置"
|
||||
|
||||
msgid "Domain Lists"
|
||||
msgstr "域名列表"
|
||||
|
||||
3
package/lean/ipset-lists/tools/Makefile
Normal file
3
package/lean/ipset-lists/tools/Makefile
Normal file
@ -0,0 +1,3 @@
|
||||
update:
|
||||
./gen-china-routes.sh > ../files/etc/ipset/china
|
||||
./gen-gfwlist.sh > ../files/etc/gfwlist/china-banned
|
||||
2941
package/lean/ipset-lists/tools/base-gfwlist.txt
Normal file
2941
package/lean/ipset-lists/tools/base-gfwlist.txt
Normal file
File diff suppressed because it is too large
Load Diff
85
package/lean/ipset-lists/tools/gen-china-routes.sh
Executable file
85
package/lean/ipset-lists/tools/gen-china-routes.sh
Executable file
@ -0,0 +1,85 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
#
|
||||
# Script for generating China IPv4 route table by merging APNIC.net data and IPIP.net data
|
||||
#
|
||||
|
||||
china_routes_ipip()
|
||||
{
|
||||
[ -f ipip.txt ] || wget -4 https://cdn.jsdelivr.net/gh/17mon/china_ip_list/china_ip_list.txt -O ipip.txt >&2 || exit 1
|
||||
cat ipip.txt | xargs netmask | awk '{print $1}'
|
||||
}
|
||||
|
||||
china_routes_apnic()
|
||||
{
|
||||
[ -f apnic.txt ] || wget -4 http://ftp.apnic.net/stats/apnic/delegated-apnic-latest -O apnic.txt >&2 || exit 1
|
||||
|
||||
cat apnic.txt | awk -F'|' -vc=CN '
|
||||
function tobits(c) { for(n=0; c>=2; c/=2) n++; return 32-n; }
|
||||
$2==c&&$3=="ipv4" { printf("%s/%d\n", $4, tobits($5)) }' |
|
||||
xargs netmask | awk '{print $1}'
|
||||
}
|
||||
|
||||
china_routes_merged()
|
||||
{
|
||||
[ -x ./ipv4-merger ] || gcc ipv4_merger.c -o ipv4-merger >&2
|
||||
|
||||
china_routes_apnic > china.apnic
|
||||
china_routes_ipip > china.ipip
|
||||
|
||||
# Merge them together
|
||||
cat china.apnic china.ipip | ./ipv4-merger | sed 's/\-/:/g' |
|
||||
xargs netmask | awk '{print $1}' | awk -F/ '$2<=24' > china.merged
|
||||
|
||||
cat china.merged
|
||||
}
|
||||
|
||||
# $1: ipset name
|
||||
convert_routes_to_ipset()
|
||||
{
|
||||
local ipset_name="$1"
|
||||
echo "create $ipset_name hash:net family inet hashsize 1024 maxelem 65536"
|
||||
awk -vt="$ipset_name" '{ printf("add %s %s\n", t, $0) }'
|
||||
}
|
||||
|
||||
|
||||
generate_china_ipset()
|
||||
{
|
||||
china_routes_merged | convert_routes_to_ipset china
|
||||
}
|
||||
|
||||
generate_inverted_china_routes()
|
||||
{
|
||||
(
|
||||
china_routes_merged
|
||||
echo 0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 127.0.0.0/8 172.16.0.0/12 192.168.0.0/16 224.0.0.0/3
|
||||
) |
|
||||
xargs netmask -r | awk '{print $1}' |
|
||||
awk -F- '
|
||||
function iptoint(ip) { split(ip,arr,"."); n=0; for(i=1;i<=4;i++) n=n*256+arr[i]; return n; }
|
||||
function inttoip(n) { a=int(n/16777216); b=int(n%16777216/65536); c=int(n%65536/256); d=n%256; return a "." b "." c "." d; }
|
||||
BEGIN { st=0 }
|
||||
{ x=st; y=iptoint($1); st=iptoint($2)+1; if(y>x) { print inttoip(x) ":" inttoip(y-1); } }' |
|
||||
xargs netmask | awk '{print $1}'
|
||||
}
|
||||
|
||||
|
||||
##
|
||||
case "$1" in
|
||||
"")
|
||||
generate_china_ipset
|
||||
;;
|
||||
-c)
|
||||
china_routes_merged
|
||||
;;
|
||||
-r)
|
||||
generate_inverted_china_routes
|
||||
;;
|
||||
*)
|
||||
echo "Usage:"
|
||||
echo " $0 generate China routes in ipset format"
|
||||
echo " $0 -c generate China routes in IP/prefix format"
|
||||
echo " $0 -r generate invert China routes"
|
||||
;;
|
||||
*)
|
||||
esac
|
||||
29
package/lean/ipset-lists/tools/gen-gfwlist.sh
Executable file
29
package/lean/ipset-lists/tools/gen-gfwlist.sh
Executable file
@ -0,0 +1,29 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
generate_china_banned()
|
||||
{
|
||||
if [ ! -f gfwlist.txt ]; then
|
||||
wget https://cdn.jsdelivr.net/gh/gfwlist/gfwlist/gfwlist.txt -O gfwlist.b64 >&2
|
||||
cat gfwlist.b64 | base64 -d > gfwlist.txt
|
||||
rm -f gfwlist.b64
|
||||
fi
|
||||
|
||||
cat gfwlist.txt base-gfwlist.txt | sort -u |
|
||||
sed 's#!.\+##; s#|##g; s#@##g; s#http:\/\/##; s#https:\/\/##;' |
|
||||
sed '/\*/d; /apple\.com/d; /sina\.cn/d; /sina\.com\.cn/d; /baidu\.com/d; /qq\.com/d' |
|
||||
sed '/^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$/d' |
|
||||
grep '^[0-9a-zA-Z\.-]\+$' | grep '\.' | sed 's#^\.\+##' | rev | sort -u |
|
||||
awk '
|
||||
BEGIN { prev = "________"; } {
|
||||
cur = $0;
|
||||
if (index(cur, prev) == 1 && substr(cur, 1 + length(prev) ,1) == ".") {
|
||||
} else {
|
||||
print cur;
|
||||
prev = cur;
|
||||
}
|
||||
}' | rev | sort -u
|
||||
|
||||
}
|
||||
|
||||
generate_china_banned
|
||||
|
||||
339
package/lean/ipset-lists/tools/ipv4_merger.c
Normal file
339
package/lean/ipset-lists/tools/ipv4_merger.c
Normal file
@ -0,0 +1,339 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
typedef u_int32_t u32;
|
||||
typedef int bool;
|
||||
#define true 1
|
||||
#define false 0
|
||||
typedef unsigned gfp_t;
|
||||
|
||||
static inline char *ipv4_hltos(u32 u, char *s)
|
||||
{
|
||||
static char ss[20];
|
||||
if (!s)
|
||||
s = ss;
|
||||
sprintf(s, "%d.%d.%d.%d",
|
||||
(int)(u >> 24) & 0xff, (int)(u >> 16) & 0xff,
|
||||
(int)(u >> 8) & 0xff, (int)u & 0xff );
|
||||
return s;
|
||||
}
|
||||
|
||||
static inline u32 ipv4_stohl(const char *s)
|
||||
{
|
||||
int u[4];
|
||||
if (sscanf(s, "%d.%d.%d.%d", &u[0], &u[1], &u[2], &u[3]) == 4) {
|
||||
return (((u32)u[0] & 0xff) << 24) |
|
||||
(((u32)u[1] & 0xff) << 16) |
|
||||
(((u32)u[2] & 0xff) << 8) |
|
||||
(((u32)u[3] & 0xff));
|
||||
} else
|
||||
return 0xffffffff;
|
||||
}
|
||||
|
||||
static inline bool is_ipv4_addr(const char *s)
|
||||
{
|
||||
int u[4];
|
||||
if (sscanf(s, "%d.%d.%d.%d", &u[0], &u[1], &u[2], &u[3]) == 4)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
struct ipv4_range {
|
||||
u32 start;
|
||||
u32 end;
|
||||
};
|
||||
|
||||
struct sa_open_data {
|
||||
struct ipv4_range *tmp_base;
|
||||
size_t tmp_size;
|
||||
size_t tmp_length;
|
||||
int errors;
|
||||
};
|
||||
|
||||
static int __touch_tmp_base(struct sa_open_data *od, gfp_t gfp)
|
||||
{
|
||||
if (!od->tmp_base) {
|
||||
/**
|
||||
* Allocate a temporary table with twice the size of the previous
|
||||
* table or at least 100, on which new entries can be inserted.
|
||||
*/
|
||||
if (od->tmp_size < 100)
|
||||
od->tmp_size = 100;
|
||||
od->tmp_base = (struct ipv4_range *)malloc(
|
||||
sizeof(struct ipv4_range) * od->tmp_size /*, gfp*/ );
|
||||
if (!od->tmp_base) {
|
||||
fprintf(stderr,
|
||||
"salist: cannot allocate the temporary list for enlarging it.\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
od->tmp_length = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ipv4_list_add_range(struct sa_open_data *od, u32 start,
|
||||
u32 end, gfp_t gfp)
|
||||
{
|
||||
struct ipv4_range *cur;
|
||||
int ret;
|
||||
|
||||
/* Ignore a new range if it or a larger range already exists */
|
||||
//if (salist_check_ipv4(od->table, start, end))
|
||||
// return 0;
|
||||
|
||||
if ((ret = __touch_tmp_base(od, gfp)) < 0)
|
||||
return ret;
|
||||
|
||||
/* Check if the size is efficient. Enlarge it if needed. */
|
||||
if (od->tmp_length + 1 >= od->tmp_size) {
|
||||
size_t old_size = od->tmp_size;
|
||||
struct ipv4_range *old_base = od->tmp_base;
|
||||
|
||||
od->tmp_size *= 2;
|
||||
od->tmp_base = (struct ipv4_range *)realloc(od->tmp_base,
|
||||
sizeof(struct ipv4_range) * od->tmp_size);
|
||||
if (!od->tmp_base) {
|
||||
od->tmp_size = old_size;
|
||||
od->tmp_base = old_base;
|
||||
return -ENOMEM;
|
||||
}
|
||||
}
|
||||
|
||||
cur = &od->tmp_base[od->tmp_length++];
|
||||
cur->start = start;
|
||||
cur->end = end;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int ipv4_list_add_netmask(struct sa_open_data *od,
|
||||
u32 net, u32 net_mask, gfp_t gfp)
|
||||
{
|
||||
u32 start = net & net_mask;
|
||||
u32 end = net | ~net_mask;
|
||||
|
||||
return ipv4_list_add_range(od, start, end, gfp);
|
||||
}
|
||||
|
||||
static int ipv4_list_add_net(struct sa_open_data *od, u32 net,
|
||||
int net_bits, gfp_t gfp)
|
||||
{
|
||||
u32 net_mask;
|
||||
|
||||
if(net_bits == 0)
|
||||
net_mask = 0x00000000;
|
||||
else
|
||||
net_mask = ~(((u32)1 << (32 - net_bits)) - 1);
|
||||
//printf("%d: %08x, %08x\n", net_bits, net_mask, net_size);
|
||||
|
||||
return ipv4_list_add_netmask(od, net, net_mask, gfp);
|
||||
}
|
||||
|
||||
static int salist_cmd_parse(struct sa_open_data *od, char *cmd, gfp_t gfp)
|
||||
{
|
||||
char *a1 = NULL, *a2 = NULL;
|
||||
char *sep;
|
||||
char sc;
|
||||
int n = 32;
|
||||
|
||||
/* Case 3: Append an item */
|
||||
|
||||
/* Check IP description part: network segment or range? */
|
||||
if ((sep = strchr(cmd, '/'))) { }
|
||||
else if ((sep = strchr(cmd, '-'))) { }
|
||||
else if ((sep = strchr(cmd, ':'))) { }
|
||||
|
||||
if (sep) {
|
||||
/* Describes a subnet or range. */
|
||||
sc = *sep;
|
||||
*sep = '\0';
|
||||
|
||||
a1 = cmd;
|
||||
a2 = sep + 1;
|
||||
|
||||
if (*a2 == '\0') {
|
||||
fprintf(stderr, "Nothing after '%c'.\n", sc);
|
||||
return -EINVAL;
|
||||
}
|
||||
} else {
|
||||
/* Describes a single IP. */
|
||||
sc = '\0';
|
||||
a1 = cmd;
|
||||
}
|
||||
|
||||
switch (sc) {
|
||||
case '/':
|
||||
/* 10.10.20.0/24 */
|
||||
/* ------------------------------------ */
|
||||
if (is_ipv4_addr(a2)) {
|
||||
ipv4_list_add_netmask(od, ipv4_stohl(a1), ipv4_stohl(a2), gfp);
|
||||
} else {
|
||||
sscanf(a2, "%d", &n);
|
||||
ipv4_list_add_net(od, ipv4_stohl(a1), n, gfp);
|
||||
}
|
||||
/* ------------------------------------ */
|
||||
break;
|
||||
case ':':
|
||||
case '-':
|
||||
/* 10.10.20.0-10.20.0.255 */
|
||||
/* ------------------------------------ */
|
||||
ipv4_list_add_range(od, ipv4_stohl(a1), ipv4_stohl(a2), gfp);
|
||||
/* ------------------------------------ */
|
||||
break;
|
||||
default:
|
||||
if (is_ipv4_addr(a1)) {
|
||||
/* Single IP address. */
|
||||
u32 ip = ipv4_stohl(a1);
|
||||
/* ------------------------------------ */
|
||||
ipv4_list_add_range(od, ip, ip, gfp);
|
||||
/* ------------------------------------ */
|
||||
} else {
|
||||
fprintf(stderr, "Invalid IP address '%s'.\n", a1);
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ipv4_range_sort_cmp(const void *a, const void *b)
|
||||
{
|
||||
struct ipv4_range *ra = (struct ipv4_range *)a;
|
||||
struct ipv4_range *rb = (struct ipv4_range *)b;
|
||||
|
||||
if (ra->start > rb->start) {
|
||||
return 1;
|
||||
} else if (ra->start < rb->start) {
|
||||
return -1;
|
||||
} else if (ra->end > rb->end) {
|
||||
return 1;
|
||||
} else if (ra->end < rb->end) {
|
||||
return -1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void ipv4_range_swap(void *a, void *b, int size)
|
||||
{
|
||||
struct ipv4_range *ra = (struct ipv4_range *)a;
|
||||
struct ipv4_range *rb = (struct ipv4_range *)b;
|
||||
struct ipv4_range tmp;
|
||||
tmp = *ra;
|
||||
*ra = *rb;
|
||||
*rb = tmp;
|
||||
}
|
||||
|
||||
static struct sa_open_data *salist_open(void)
|
||||
{
|
||||
struct sa_open_data *od = NULL;
|
||||
|
||||
od = (struct sa_open_data *)malloc(sizeof(*od));
|
||||
if (!od) {
|
||||
fprintf(stderr, "salist: cannot allocate sa_open_data.\n");
|
||||
return NULL;
|
||||
}
|
||||
memset(od, 0, sizeof(*od));
|
||||
od->errors = 0;
|
||||
|
||||
return od;
|
||||
}
|
||||
|
||||
static int salist_close(struct sa_open_data *od)
|
||||
{
|
||||
size_t ri, wi;
|
||||
struct ipv4_range *old_base;
|
||||
|
||||
/* Flush the table if any modification has been done */
|
||||
if (od->tmp_base) {
|
||||
/* Sort the table and merge entries as many as possible. */
|
||||
if (od->tmp_length >= 2) {
|
||||
qsort(od->tmp_base, od->tmp_length, sizeof(struct ipv4_range),
|
||||
ipv4_range_sort_cmp);
|
||||
|
||||
for (wi = 0, ri = 1; ri < od->tmp_length; ri++) {
|
||||
/* NOTICE: 0xffffffff + 1 ? */
|
||||
if (od->tmp_base[wi].end == (u32)(-1)) {
|
||||
/* Nothing */
|
||||
} else if (od->tmp_base[ri].start <= od->tmp_base[wi].end + 1) {
|
||||
/* The two ranges overlap, so merge the 2nd to the 1st one */
|
||||
if (od->tmp_base[ri].end > od->tmp_base[wi].end)
|
||||
od->tmp_base[wi].end = od->tmp_base[ri].end;
|
||||
} else {
|
||||
wi++;
|
||||
if (wi < ri)
|
||||
od->tmp_base[wi] = od->tmp_base[ri];
|
||||
}
|
||||
}
|
||||
|
||||
od->tmp_length = wi + 1;
|
||||
}
|
||||
|
||||
/* Reduce the size */
|
||||
if (od->tmp_length < od->tmp_size) {
|
||||
struct ipv4_range *__tmp = od->tmp_base;
|
||||
od->tmp_base = (struct ipv4_range *)malloc(
|
||||
sizeof(struct ipv4_range) * (od->tmp_length ? od->tmp_length : 1));
|
||||
if (od->tmp_base) {
|
||||
memcpy(od->tmp_base, __tmp,
|
||||
sizeof(struct ipv4_range) * od->tmp_length);
|
||||
free(__tmp);
|
||||
} else {
|
||||
fprintf(stderr, "[%s:%d] Failed to allocate temporary table.\n",
|
||||
__FUNCTION__, __LINE__);
|
||||
/* If failed to allocate new memory, do not reduce it. */
|
||||
od->tmp_base = __tmp;
|
||||
}
|
||||
}
|
||||
|
||||
/* Dump the table instead */
|
||||
}
|
||||
|
||||
if (od->errors) {
|
||||
fprintf(stderr, "[%s] %d errors detected during table operation.\n",
|
||||
__FUNCTION__, od->errors);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sa_open_data_dump(struct sa_open_data *od)
|
||||
{
|
||||
size_t i;
|
||||
char s1[20], s2[20];
|
||||
|
||||
for (i = 0; i < od->tmp_length; i++) {
|
||||
printf("%s-%s\n", ipv4_hltos(od->tmp_base[i].start, s1),
|
||||
ipv4_hltos(od->tmp_base[i].end, s2));
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct sa_open_data *od;
|
||||
char lbuf[128];
|
||||
|
||||
od = salist_open();
|
||||
|
||||
while (fgets(lbuf, sizeof(lbuf), stdin)) {
|
||||
size_t llen = strlen(lbuf);
|
||||
if (llen > 0 && lbuf[llen - 1] == '\n')
|
||||
lbuf[--llen] = '\0';
|
||||
if (llen > 0 && lbuf[llen - 1] == '\r')
|
||||
lbuf[--llen] = '\0';
|
||||
if (llen == 0)
|
||||
continue;
|
||||
salist_cmd_parse(od, lbuf, 0);
|
||||
}
|
||||
|
||||
salist_close(od);
|
||||
|
||||
sa_open_data_dump(od);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
56
package/lean/ipv6-helper/Makefile
Normal file
56
package/lean/ipv6-helper/Makefile
Normal file
@ -0,0 +1,56 @@
|
||||
#
|
||||
# Copyright (C) 2015 OpenWrt-dist
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ipv6helper
|
||||
PKG_VERSION:=1.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_LICENSE:=GPLv3
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
PKG_MAINTAINER:=LEAN
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/ipv6helper
|
||||
SECTION:=ipv6
|
||||
TITLE:=IPv6 Helper and Dynamic Update he.net of ip
|
||||
PKGARCH:=all
|
||||
DEPENDS:=+luci-proto-ipv6 +wget +ip6tables +kmod-ipt-nat6 +odhcpd-ipv6only +odhcp6c +6in4
|
||||
endef
|
||||
|
||||
define Package/ipv6helper/description
|
||||
IPv6 Helper and Dynamic Update he.net of ip
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/ipv6helper/postinst
|
||||
#!/bin/sh
|
||||
if [ -z "$${IPKG_INSTROOT}" ]; then
|
||||
chmod 755 /etc/hotplug.d/iface/60-6in4 >/dev/null 2>&1
|
||||
fi
|
||||
exit 0
|
||||
endef
|
||||
|
||||
define Package/ipv6helper/install
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
||||
$(INSTALL_BIN) ./files/root/etc/hotplug.d/iface/60-6in4 $(1)/etc/hotplug.d/iface/60-6in4
|
||||
endef
|
||||
|
||||
|
||||
$(eval $(call BuildPackage,ipv6helper))
|
||||
12
package/lean/ipv6-helper/files/root/etc/hotplug.d/iface/60-6in4
Executable file
12
package/lean/ipv6-helper/files/root/etc/hotplug.d/iface/60-6in4
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
. /lib/functions.sh
|
||||
if [ "$ACTION" != "ifup" ]; then
|
||||
exit
|
||||
fi
|
||||
config_load network
|
||||
config_get tunnelid $INTERFACE tunnelid
|
||||
config_get username $INTERFACE username
|
||||
config_get password $INTERFACE password
|
||||
if [ "$tunnelid" != "" ]; then
|
||||
wget -O - https://$username:$password@ipv4.tunnelbroker.net/nic/update?hostname=$tunnelid --no-check-certificate
|
||||
fi
|
||||
42
package/lean/k3-brcmfmac4366c-firmware/Makefile
Normal file
42
package/lean/k3-brcmfmac4366c-firmware/Makefile
Normal file
@ -0,0 +1,42 @@
|
||||
#
|
||||
# Copyright (C) 2015-2016 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=k3wifi
|
||||
PKG_VERSION:=1
|
||||
PKG_RELEASE:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
TITLE:=k3wifi
|
||||
DEPENDS:=
|
||||
URL:=http://www.k3wifi.com/
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
k3wifi fw
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_DIR) $(1)/lib
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) ./files/lib/firmware/brcm/brcmfmac4366c-pcie.bin $(1)/lib/firmware/brcm/brcmfmac4366c-pcie.bin
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||
Binary file not shown.
61
package/lean/libcryptopp/Makefile
Normal file
61
package/lean/libcryptopp/Makefile
Normal file
@ -0,0 +1,61 @@
|
||||
#
|
||||
# Copyright (C) 2009-2012 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libcryptopp
|
||||
PKG_VERSION:=8.2.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=cryptopp$(subst .,,$(PKG_VERSION)).zip
|
||||
PKG_SOURCE_URL:=http://www.cryptopp.com/
|
||||
PKG_MD5SUM:=8a8bcb436af83e16d2227bd4ac642243
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
|
||||
define Package/libcryptopp
|
||||
SECTION:=libs
|
||||
CATEGORY:=Libraries
|
||||
DEPENDS:=+libpthread +libstdcpp
|
||||
TITLE:=Crypto++ is library for creating C++ programs which use cryptographic algorithms
|
||||
URL:=http://packages.debian.org/sid/libcrypto++-dev
|
||||
endef
|
||||
|
||||
define Package/package/libcryptopp
|
||||
Crypto++ is library for creating C++ programs which use cryptographic algorithms.
|
||||
The library uses a Pipes & Filters architecture with heavy use of templates and
|
||||
abstract base classes.
|
||||
endef
|
||||
|
||||
CMAKE_OPTIONS += -DCMAKE_CXX_FLAGS="$(FPIC)"
|
||||
CMAKE_OPTIONS += -DBUILD_STATIC=ON
|
||||
CMAKE_OPTIONS += -DBUILD_SHARED=ON
|
||||
|
||||
UNPACK_CMD=cd $(PKG_BUILD_DIR) && unzip "$(DL_DIR)/$(PKG_SOURCE)"
|
||||
define Build/Prepare
|
||||
[ ! -f $(BUILD_DIR)/$(PKG_NAME)/CRYPTOPP_8_2_0.zip ] && wget https://github.com/noloader/cryptopp-cmake/archive/CRYPTOPP_8_2_0.zip -O $(BUILD_DIR)/$(PKG_NAME)/CRYPTOPP_8_2_0.zip && unzip -o $(BUILD_DIR)/$(PKG_NAME)/CRYPTOPP_8_2_0.zip -d $(BUILD_DIR)/$(PKG_NAME) && cd $(BUILD_DIR)/$(PKG_NAME)/cryptopp-cmake-CRYPTOPP_8_2_0 && cp CMakeLists.txt cryptopp-config.cmake $(PKG_BUILD_DIR)
|
||||
$(Build/Prepare/Default)
|
||||
cd $(PKG_BUILD_DIR) && rm -f GNUmakefile GNUmakefile-cross
|
||||
endef
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(1)/usr/include/cryptopp
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/include/cryptopp/* $(1)/usr/include/cryptopp/
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcryptopp.{a,so*} $(1)/usr/lib/
|
||||
endef
|
||||
|
||||
define Package/libcryptopp/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcryptopp.so* $(1)/usr/lib/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,libcryptopp))
|
||||
93
package/lean/libidn2/Makefile
Normal file
93
package/lean/libidn2/Makefile
Normal file
@ -0,0 +1,93 @@
|
||||
#
|
||||
# Copyright (C) 2017-2018 Daniel Engberg <daniel.engberg.lists@pyret.net>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libidn2
|
||||
PKG_VERSION:=2.0.4
|
||||
PKG_RELEASE:=1
|
||||
PKG_MAINTAINER:=Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
PKG_LICENSE:=GPL-2.0-or-later LGPL-3.0-or-later
|
||||
PKG_LICENSE_FILES:=COPYING COPYINGv2 COPYING.LESSERv3
|
||||
|
||||
PKG_SOURCE_URL:=@GNU/libidn
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_HASH:=644b6b03b285fb0ace02d241d59483d98bc462729d8bb3608d5cad5532f3d2f0
|
||||
|
||||
PKG_INSTALL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
|
||||
define Package/idn2/Default
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
URL:=http://www.gnu.org/software/libidn/
|
||||
endef
|
||||
|
||||
define Package/idn2/Default/description
|
||||
Libidn2 is a free software implementation of IDNA2008,
|
||||
Punycode and TR46 in library form. It contains
|
||||
functionality to convert internationalized domain
|
||||
names to and from ASCII Compatible Encoding (ACE),
|
||||
following the IDNA2008 and TR46 standards.
|
||||
endef
|
||||
|
||||
define Package/idn2
|
||||
$(call Package/idn2/Default)
|
||||
SUBMENU:=IP Addresses and Names
|
||||
TITLE:=GNU IDN2 (Internationalized Domain Name) tool
|
||||
DEPENDS:=+libidn2
|
||||
endef
|
||||
|
||||
define Package/idn2/description
|
||||
$(call Package/idn2/Default/description)
|
||||
|
||||
Command line tool using libidn2
|
||||
|
||||
endef
|
||||
|
||||
define Package/libidn2
|
||||
SECTION:=libs
|
||||
CATEGORY:=Libraries
|
||||
DEPENDS:=+libunistring $(ICONV_DEPENDS) $(INTL_DEPENDS)
|
||||
TITLE:=International domain name library (IDNA2008, Punycode and TR46)
|
||||
URL:=https://www.gnu.org/software/libidn/#libidn2
|
||||
endef
|
||||
|
||||
define Package/libidn2/description
|
||||
$(call Package/idn2/Default/description)
|
||||
|
||||
Library only package
|
||||
|
||||
endef
|
||||
|
||||
CONFIGURE_ARGS += \
|
||||
--disable-rpath \
|
||||
--disable-doc
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(1)/usr/include
|
||||
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/idn2.h $(1)/usr/include
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.{la,so}* $(1)/usr/lib/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libidn2.pc $(1)/usr/lib/pkgconfig/
|
||||
endef
|
||||
|
||||
define Package/idn2/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
define Package/libidn2/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,idn2))
|
||||
$(eval $(call BuildPackage,libidn2))
|
||||
18
package/lean/luci-app-accesscontrol/Makefile
Normal file
18
package/lean/luci-app-accesscontrol/Makefile
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
# Copyright (C) 2016 Openwrt.org
|
||||
#
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI Access Control Configuration
|
||||
LUCI_DEPENDS:=
|
||||
LUCI_PKGARCH:=all
|
||||
PKG_NAME:=luci-app-accesscontrol
|
||||
PKG_VERSION:=1
|
||||
PKG_RELEASE:=11
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
||||
@ -0,0 +1,18 @@
|
||||
module("luci.controller.mia",package.seeall)
|
||||
|
||||
function index()
|
||||
if not nixio.fs.access("/etc/config/mia")then
|
||||
return
|
||||
end
|
||||
|
||||
entry({"admin","services","mia"},cbi("mia"),_("Internet Access Schedule Control"),30).dependent=true
|
||||
entry({"admin","services","mia","status"},call("act_status")).leaf=true
|
||||
|
||||
end
|
||||
|
||||
function act_status()
|
||||
local e={}
|
||||
e.running=luci.sys.call("iptables -L INPUT |grep MIA >/dev/null")==0
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
66
package/lean/luci-app-accesscontrol/luasrc/model/cbi/mia.lua
Normal file
66
package/lean/luci-app-accesscontrol/luasrc/model/cbi/mia.lua
Normal file
@ -0,0 +1,66 @@
|
||||
|
||||
a=Map("mia",translate("Internet Access Schedule Control"),translate("Access Schedule Control Settins"))
|
||||
a:section(SimpleSection).template = "mia/mia_status"
|
||||
|
||||
t=a:section(TypedSection,"basic")
|
||||
t.anonymous=true
|
||||
|
||||
e=t:option(Flag,"enable",translate("Enabled"))
|
||||
e.rmempty=false
|
||||
|
||||
e=t:option(Flag,"strict",translate("Strict Mode"))
|
||||
e.rmempty=false
|
||||
e.description = translate("Strict Mode will degrade CPU performance, but it can achieve better results")
|
||||
|
||||
t=a:section(TypedSection,"macbind",translate("Client Rules"))
|
||||
t.template="cbi/tblsection"
|
||||
t.anonymous=true
|
||||
t.addremove=true
|
||||
|
||||
e=t:option(Flag,"enable",translate("√"))
|
||||
e.rmempty=false
|
||||
e.default="1"
|
||||
|
||||
e=t:option(Value,"macaddr",translate("MAC address (Computer Name)"))
|
||||
e.rmempty=true
|
||||
luci.sys.net.mac_hints(function(t,a)
|
||||
e:value(t,"%s (%s)"%{t,a})
|
||||
end)
|
||||
|
||||
e=t:option(Value,"timeon",translate("Start time"))
|
||||
e.default="00:00"
|
||||
e.optional=false
|
||||
|
||||
e=t:option(Value,"timeoff",translate("End time"))
|
||||
e.default="23:59"
|
||||
e.optional=false
|
||||
|
||||
e=t:option(Flag,"z1",translate("Mon"))
|
||||
e.rmempty=true
|
||||
e.default=1
|
||||
|
||||
e=t:option(Flag,"z2",translate("Tue"))
|
||||
e.rmempty=true
|
||||
e.default=1
|
||||
|
||||
e=t:option(Flag,"z3",translate("Wed"))
|
||||
e.rmempty=true
|
||||
e.default=1
|
||||
|
||||
e=t:option(Flag,"z4",translate("Thu"))
|
||||
e.rmempty=true
|
||||
e.default=1
|
||||
|
||||
e=t:option(Flag,"z5",translate("Fri"))
|
||||
e.rmempty=true
|
||||
e.default=1
|
||||
|
||||
e=t:option(Flag,"z6",translate("Sat"))
|
||||
e.rmempty=true
|
||||
e.default=1
|
||||
|
||||
e=t:option(Flag,"z7",translate("Sun"))
|
||||
e.rmempty=true
|
||||
e.default=1
|
||||
|
||||
return a
|
||||
@ -0,0 +1,22 @@
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XHR.poll(3, '<%=url([[admin]], [[services]], [[mia]], [[status]])%>', null,
|
||||
function(x, data) {
|
||||
var tb = document.getElementById('mia_status');
|
||||
if (data && tb) {
|
||||
if (data.running) {
|
||||
var links = '<em><b><font color=green><%:Internet Access Schedule Control%> <%:RUNNING%></font></b></em>';
|
||||
tb.innerHTML = links;
|
||||
} else {
|
||||
tb.innerHTML = '<em><b><font color=red><%:Internet Access Schedule Control%> <%:NOT RUNNING%></font></b></em>';
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
//]]>
|
||||
</script>
|
||||
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
|
||||
<fieldset class="cbi-section">
|
||||
<p id="mia_status">
|
||||
<em><%:Collecting data...%></em>
|
||||
</p>
|
||||
</fieldset>
|
||||
52
package/lean/luci-app-accesscontrol/po/zh-cn/mia.po
Normal file
52
package/lean/luci-app-accesscontrol/po/zh-cn/mia.po
Normal file
@ -0,0 +1,52 @@
|
||||
msgid "Internet Access Schedule Control"
|
||||
msgstr "上网时间控制"
|
||||
|
||||
msgid "Access Schedule Control Settins"
|
||||
msgstr "设置客户端禁止访问互联网的时间"
|
||||
|
||||
msgid "General switch"
|
||||
msgstr "开启/关闭"
|
||||
|
||||
msgid "Strict Mode"
|
||||
msgstr "严格模式"
|
||||
|
||||
msgid "Strict Mode will degrade CPU performance, but it can achieve better results"
|
||||
msgstr "严格模式会损耗部分CPU资源,但可以按照时间规则立即拦截数据包,效果更好"
|
||||
|
||||
msgid "Client Rules"
|
||||
msgstr "客户端规则"
|
||||
|
||||
msgid "Description"
|
||||
msgstr "描述"
|
||||
|
||||
msgid "MAC address (Computer Name)"
|
||||
msgstr "MAC 地址 (主机名)"
|
||||
|
||||
msgid "Start time"
|
||||
msgstr "开始时间"
|
||||
|
||||
msgid "End time"
|
||||
msgstr "结束时间"
|
||||
|
||||
msgid "Mon"
|
||||
msgstr "一"
|
||||
|
||||
msgid "Tue"
|
||||
msgstr "二"
|
||||
|
||||
msgid "Wed"
|
||||
msgstr "三"
|
||||
|
||||
msgid "Thu"
|
||||
msgstr "四"
|
||||
|
||||
msgid "Fri"
|
||||
msgstr "五"
|
||||
|
||||
msgid "Sat"
|
||||
msgstr "六"
|
||||
|
||||
msgid "Sun"
|
||||
msgstr "日"
|
||||
|
||||
|
||||
3
package/lean/luci-app-accesscontrol/root/etc/config/mia
Normal file
3
package/lean/luci-app-accesscontrol/root/etc/config/mia
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
config basic
|
||||
option enable '0'
|
||||
88
package/lean/luci-app-accesscontrol/root/etc/init.d/mia
Executable file
88
package/lean/luci-app-accesscontrol/root/etc/init.d/mia
Executable file
@ -0,0 +1,88 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
#
|
||||
# Copyright (C) 2015 OpenWrt-dist
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
START=30
|
||||
|
||||
CONFIG=mia
|
||||
|
||||
uci_get_by_type() {
|
||||
local index=0
|
||||
if [ -n $4 ]; then
|
||||
index=$4
|
||||
fi
|
||||
local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
|
||||
echo ${ret:=$3}
|
||||
}
|
||||
|
||||
add_rule(){
|
||||
for i in $(seq 0 100)
|
||||
do
|
||||
local enable=$(uci_get_by_type macbind enable '' $i)
|
||||
local macaddr=$(uci_get_by_type macbind macaddr '' $i)
|
||||
local timeon=$(uci_get_by_type macbind timeon '' $i)
|
||||
local timeoff=$(uci_get_by_type macbind timeoff '' $i)
|
||||
local z1=$(uci_get_by_type macbind z1 '' $i)
|
||||
local z2=$(uci_get_by_type macbind z2 '' $i)
|
||||
local z3=$(uci_get_by_type macbind z3 '' $i)
|
||||
local z4=$(uci_get_by_type macbind z4 '' $i)
|
||||
local z5=$(uci_get_by_type macbind z5 '' $i)
|
||||
local z6=$(uci_get_by_type macbind z6 '' $i)
|
||||
local z7=$(uci_get_by_type macbind z7 '' $i)
|
||||
[ "$z1" == "1" ] && Z1="Mon,"
|
||||
[ "$z2" == "1" ] && Z2="Tue,"
|
||||
[ "$z3" == "1" ] && Z3="Wed,"
|
||||
[ "$z4" == "1" ] && Z4="Thu,"
|
||||
[ "$z5" == "1" ] && Z5="Fri,"
|
||||
[ "$z6" == "1" ] && Z6="Sat,"
|
||||
[ "$z7" == "1" ] && Z7="Sun"
|
||||
if [ -z $enable ] || [ -z $macaddr ] || [ -z $timeoff ] || [ -z $timeon ]; then
|
||||
break
|
||||
fi
|
||||
if [ "$enable" == "1" ]; then
|
||||
iptables -t filter -I MIA -m mac --mac-source $macaddr -m time --kerneltz --timestart $timeon --timestop $timeoff --weekdays $Z1$Z2$Z3$Z4$Z5$Z6$Z7 -j DROP
|
||||
fi
|
||||
for n in $(seq 1 7)
|
||||
do
|
||||
unset "Z$n"
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
del_rule(){
|
||||
type=$1
|
||||
blackMacAdd=$(iptables -t nat -L $type | grep -w RETURN | grep -w "MAC" | awk '{print $7}')
|
||||
[ -n "$blackMacAdd" ] && {
|
||||
for macaddrb in $blackMacAdd
|
||||
do
|
||||
iptables -t nat -D $type -m mac --mac-source $macaddrb -j RETURN
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
start(){
|
||||
stop
|
||||
enable=$(uci get mia.@basic[0].enable)
|
||||
[ $enable -eq 0 ] && exit 0
|
||||
iptables -t filter -N MIA
|
||||
iptables -I INPUT -p udp --dport 53 -m comment --comment "Rule For Control" -j MIA
|
||||
iptables -I INPUT -p tcp --dport 53 -m comment --comment "Rule For Control" -j MIA
|
||||
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 -m comment --comment "Rule For Control"
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53 -m comment --comment "Rule For Control"
|
||||
strict=$(uci get mia.@basic[0].strict)
|
||||
[ $strict -eq 1 ] && iptables -t filter -I FORWARD -m comment --comment "Rule For Control" -j MIA
|
||||
add_rule
|
||||
}
|
||||
stop(){
|
||||
iptables -t filter -D FORWARD -m comment --comment "Rule For Control" -j MIA 2>/dev/null
|
||||
iptables -D INPUT -p udp --dport 53 -m comment --comment "Rule For Control" -j MIA 2>/dev/null
|
||||
iptables -D INPUT -p tcp --dport 53 -m comment --comment "Rule For Control" -j MIA 2>/dev/null
|
||||
iptables -t nat -D PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 -m comment --comment "Rule For Control" 2>/dev/null
|
||||
iptables -t nat -D PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53 -m comment --comment "Rule For Control" 2>/dev/null
|
||||
iptables -t filter -F MIA 2>/dev/null
|
||||
iptables -t filter -X MIA 2>/dev/null
|
||||
}
|
||||
1
package/lean/luci-app-accesscontrol/root/etc/mia.include
Executable file
1
package/lean/luci-app-accesscontrol/root/etc/mia.include
Executable file
@ -0,0 +1 @@
|
||||
/etc/init.d/mia restart
|
||||
17
package/lean/luci-app-accesscontrol/root/etc/uci-defaults/mia
Executable file
17
package/lean/luci-app-accesscontrol/root/etc/uci-defaults/mia
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@mia[-1]
|
||||
add ucitrack mia
|
||||
set ucitrack.@mia[-1].init=mia
|
||||
commit ucitrack
|
||||
delete firewall.mia
|
||||
set firewall.mia=include
|
||||
set firewall.mia.type=script
|
||||
set firewall.mia.path=/etc/mia.include
|
||||
set firewall.mia.reload=1
|
||||
commit firewall
|
||||
EOF
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
||||
18
package/lean/luci-app-adbyby-plus/Makefile
Normal file
18
package/lean/luci-app-adbyby-plus/Makefile
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright (C) 2016 Openwrt.org
|
||||
#
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI support for Adbyby
|
||||
LUCI_DEPENDS:=+adbyby +wget +ipset +coreutils +coreutils-nohup +dnsmasq-full
|
||||
LUCI_PKGARCH:=all
|
||||
PKG_NAME:=luci-app-adbyby-plus
|
||||
PKG_VERSION:=2.0
|
||||
PKG_RELEASE:=41
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
|
||||
module("luci.controller.adbyby", package.seeall)
|
||||
|
||||
function index()
|
||||
if not nixio.fs.access("/etc/config/adbyby") then
|
||||
return
|
||||
end
|
||||
|
||||
entry({"admin", "services", "adbyby"}, cbi("adbyby"), _("ADBYBY Plus +"), 10).dependent = true
|
||||
entry({"admin","services","adbyby","status"},call("act_status")).leaf=true
|
||||
end
|
||||
|
||||
function act_status()
|
||||
local e={}
|
||||
e.running=luci.sys.call("pgrep adbyby >/dev/null")==0
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
174
package/lean/luci-app-adbyby-plus/luasrc/model/cbi/adbyby.lua
Normal file
174
package/lean/luci-app-adbyby-plus/luasrc/model/cbi/adbyby.lua
Normal file
@ -0,0 +1,174 @@
|
||||
|
||||
local NXFS = require "nixio.fs"
|
||||
local SYS = require "luci.sys"
|
||||
local HTTP = require "luci.http"
|
||||
local DISP = require "luci.dispatcher"
|
||||
|
||||
local DL = SYS.exec("head -1 /usr/share/adbyby/data/lazy.txt | awk -F' ' '{print $3,$4}'")
|
||||
local DV = SYS.exec("head -1 /usr/share/adbyby/data/video.txt | awk -F' ' '{print $3,$4}'")
|
||||
local NR = SYS.exec("grep -v '^!' /usr/share/adbyby/data/rules.txt | wc -l")
|
||||
local NU = SYS.exec("cat /usr/share/adbyby/data/user.txt | wc -l")
|
||||
local UD = SYS.exec("cat /tmp/adbyby.updated 2>/dev/null")
|
||||
local ND = SYS.exec("cat /usr/share/adbyby/dnsmasq.adblock | wc -l")
|
||||
|
||||
m = Map("adbyby")
|
||||
m.title = translate("Adbyby Plus +")
|
||||
m.description = translate("Adbyby Plus + can filter all kinds of banners, popups, video ads, and prevent tracking, privacy theft and a variety of malicious websites<br /><font color=\"red\">Plus + version combination mode can operation with Adblock Plus Host,filtering ads without losing bandwidth</font>")
|
||||
|
||||
m:section(SimpleSection).template = "adbyby/adbyby_status"
|
||||
|
||||
s = m:section(TypedSection, "adbyby")
|
||||
s.anonymous = true
|
||||
|
||||
s:tab("basic", translate("Base Setting"))
|
||||
|
||||
o = s:taboption("basic", Flag, "enable")
|
||||
o.title = translate("Enable")
|
||||
o.default = 0
|
||||
o.rmempty = false
|
||||
|
||||
o = s:taboption("basic", ListValue, "wan_mode")
|
||||
o.title = translate("Running Mode")
|
||||
o:value("0", translate("Global Mode(The slowest, the best effects)"))
|
||||
o:value("1", translate("Plus + Mode(Filter domain name list and blacklist website.Recommended)"))
|
||||
o:value("2", translate("No filter Mode (Must set in Client Filter Mode Settings manually)"))
|
||||
o.default = 1
|
||||
o.rmempty = false
|
||||
|
||||
mem = s:taboption("basic", Flag, "mem_mode")
|
||||
mem.title = translate("RAM Running Mode")
|
||||
mem.default = 1
|
||||
mem.rmempty = false
|
||||
mem.description = translate("Running Adbyby in RAM.More speed,less disk consumption")
|
||||
|
||||
|
||||
o = s:taboption("basic", Button, "restart")
|
||||
o.title = translate("Adbyby and Rule state")
|
||||
o.inputtitle = translate("Restart Adbyby")
|
||||
o.description = string.format("<strong>Last Update Checked:</strong> %s<br /><strong>Lazy Rule:</strong>%s <br /><strong>Video Rule:</strong>%s", UD, DL, DV)
|
||||
o.inputstyle = "reload"
|
||||
o.write = function()
|
||||
SYS.call("nohup sh /usr/share/adbyby/adupdate.sh > /tmp/adupdate.log 2>&1 &")
|
||||
SYS.call("sleep 4")
|
||||
HTTP.redirect(DISP.build_url("admin", "services", "adbyby"))
|
||||
end
|
||||
|
||||
s:tab("advanced", translate("Advance Setting"))
|
||||
|
||||
o = s:taboption("advanced", Flag, "cron_mode")
|
||||
o.title = translate("Update the rule at 6 a.m. every morning and restart adbyby")
|
||||
o.default = 0
|
||||
o.rmempty = false
|
||||
o.description = translate(string.format("<strong><font color=blue>Adblock Plus Host List:</font></strong> %s Lines<br /><br />", ND))
|
||||
|
||||
updatead = s:taboption("advanced", Button, "updatead", translate("Manually force update<br />Adblock Plus Host List"), translate("Note: It needs to download and convert the rules. The background process may takes 60-120 seconds to run. <br / > After completed it would automatically refresh, please do not duplicate click!"))
|
||||
updatead.inputtitle = translate("Manually force update")
|
||||
updatead.inputstyle = "apply"
|
||||
updatead.write = function()
|
||||
SYS.call("nohup sh /usr/share/adbyby/adblock.sh > /tmp/adupdate.log 2>&1 &")
|
||||
end
|
||||
|
||||
o = s:taboption("advanced", Flag, "block_ios")
|
||||
o.title = translate("Block Apple iOS OTA update")
|
||||
o.default = 0
|
||||
o.rmempty = false
|
||||
|
||||
s:tab("help", translate("Plus+ Domain List"))
|
||||
|
||||
local conf = "/usr/share/adbyby/adhost.conf"
|
||||
o = s:taboption("help", TextValue, "conf")
|
||||
o.description = translate("(!)Note that you should fill to the domain name ONLY. For example, http://www.baidu.com only needs to write to baidu.com. One line for each")
|
||||
o.rows = 13
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section)
|
||||
return NXFS.readfile(conf) or ""
|
||||
end
|
||||
o.write = function(self, section, value)
|
||||
NXFS.writefile(conf, value:gsub("\r\n", "\n"))
|
||||
--SYS.call("/etc/init.d/adbyby restart")
|
||||
end
|
||||
|
||||
s:tab("esc", translate("Bypass Domain List"))
|
||||
|
||||
local escconf = "/usr/share/adbyby/adesc.conf"
|
||||
o = s:taboption("esc", TextValue, "escconf")
|
||||
o.description = translate("(!)Will Never filter these Domain")
|
||||
o.rows = 13
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section)
|
||||
return NXFS.readfile(escconf) or ""
|
||||
end
|
||||
o.write = function(self, section, value)
|
||||
NXFS.writefile(escconf, value:gsub("\r\n", "\n"))
|
||||
--SYS.call("/etc/init.d/adbyby restart")
|
||||
end
|
||||
|
||||
s:tab("black", translate("Black Domain List"))
|
||||
|
||||
local blackconf = "/usr/share/adbyby/adblack.conf"
|
||||
o = s:taboption("black", TextValue, "blackconf")
|
||||
o.description = translate("(!)Will Always block these Domain")
|
||||
o.rows = 13
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section)
|
||||
return NXFS.readfile(blackconf) or ""
|
||||
end
|
||||
o.write = function(self, section, value)
|
||||
NXFS.writefile(blackconf, value:gsub("\r\n", "\n"))
|
||||
--SYS.call("/etc/init.d/adbyby restart")
|
||||
end
|
||||
|
||||
s:tab("block", translate("Black IP List"))
|
||||
|
||||
local blockconf = "/usr/share/adbyby/blockip.conf"
|
||||
o = s:taboption("block", TextValue, "blockconf")
|
||||
o.description = translate("(!)Will Always block these IP")
|
||||
o.rows = 13
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section)
|
||||
return NXFS.readfile(blockconf) or " "
|
||||
end
|
||||
o.write = function(self, section, value)
|
||||
NXFS.writefile(blockconf, value:gsub("\r\n", "\n"))
|
||||
--SYS.call("/etc/init.d/adbyby restart")
|
||||
end
|
||||
|
||||
s:tab("user", translate("User-defined Rule"))
|
||||
|
||||
local file = "/usr/share/adbyby/rules.txt"
|
||||
o = s:taboption("user", TextValue, "rules")
|
||||
o.description = translate("Each line of the beginning exclamation mark is considered an annotation.")
|
||||
o.rows = 13
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section)
|
||||
return NXFS.readfile(file) or ""
|
||||
end
|
||||
o.write = function(self, section, value)
|
||||
NXFS.writefile(file, value:gsub("\r\n", "\n"))
|
||||
end
|
||||
|
||||
t=m:section(TypedSection,"acl_rule",translate("<strong>Client Filter Mode Settings</strong>"),
|
||||
translate("Filter mode settings can be set to specific LAN clients ( <font color=blue> No filter , Global filter </font> ) . Does not need to be set by default."))
|
||||
t.template="cbi/tblsection"
|
||||
t.sortable=true
|
||||
t.anonymous=true
|
||||
t.addremove=true
|
||||
|
||||
e=t:option(Value,"ipaddr",translate("IP Address"))
|
||||
e.width="40%"
|
||||
e.datatype="ip4addr"
|
||||
e.placeholder="0.0.0.0/0"
|
||||
luci.ip.neighbors({ family = 4 }, function(entry)
|
||||
if entry.reachable then
|
||||
e:value(entry.dest:string())
|
||||
end
|
||||
end)
|
||||
|
||||
e=t:option(ListValue,"filter_mode",translate("Filter Mode"))
|
||||
e.width="40%"
|
||||
e.default="disable"
|
||||
e.rmempty=false
|
||||
e:value("disable",translate("No filter"))
|
||||
e:value("global",translate("Global filter"))
|
||||
|
||||
return m
|
||||
@ -0,0 +1,22 @@
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XHR.poll(3, '<%=url([[admin]], [[services]], [[adbyby]], [[status]])%>', null,
|
||||
function(x, data) {
|
||||
var tb = document.getElementById('adbyby_status');
|
||||
if (data && tb) {
|
||||
if (data.running) {
|
||||
var links = '<em><b><font color=green>Adbyby Plus+ <%:RUNNING%></font></b></em>';
|
||||
tb.innerHTML = links;
|
||||
} else {
|
||||
tb.innerHTML = '<em><b><font color=red>Adbyby Plus+ <%:NOT RUNNING%></font></b></em>';
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
//]]>
|
||||
</script>
|
||||
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
|
||||
<fieldset class="cbi-section">
|
||||
<p id="adbyby_status">
|
||||
<em><%:Collecting data...%></em>
|
||||
</p>
|
||||
</fieldset>
|
||||
125
package/lean/luci-app-adbyby-plus/po/zh-cn/adbyby.po
Normal file
125
package/lean/luci-app-adbyby-plus/po/zh-cn/adbyby.po
Normal file
@ -0,0 +1,125 @@
|
||||
msgid "ADBYBY Plus +"
|
||||
msgstr "广告屏蔽大师 Plus+"
|
||||
|
||||
msgid "<strong><font color=\"green\">Adbyby Plus + is Running</font></strong>"
|
||||
msgstr "<strong><font color=\"green\">广告屏蔽大师 Plus + 正在运行</font></strong>"
|
||||
|
||||
msgid "<strong><font color=\"red\">Adbyby Plus + is Not Running</font></strong>"
|
||||
msgstr "<strong><font color=\"red\">广告屏蔽大师 Plus + 没有运行</font></strong>"
|
||||
|
||||
msgid "Adbyby Plus + can filter all kinds of banners, popups, video ads, and prevent tracking, privacy theft and a variety of malicious websites<br /><font color=\"red\">Plus + version combination mode can operation with Adblock Plus Host,filtering ads without losing bandwidth</font>"
|
||||
msgstr "广告屏蔽大师 Plus + 可以全面过滤各种横幅、弹窗、视频广告,同时阻止跟踪、隐私窃取及各种恶意网站<br /><font color=\"red\">Plus + 版本可以和 Adblock Plus Host 结合方式运行,过滤广告不损失带宽</font>"
|
||||
|
||||
msgid "Adbyby Plus +"
|
||||
msgstr "广告屏蔽大师 Plus+"
|
||||
|
||||
msgid "Base Setting"
|
||||
msgstr "基本设置"
|
||||
|
||||
msgid "Running Mode"
|
||||
msgstr "运行模式"
|
||||
|
||||
msgid "Global Mode(The slowest, the best effects)"
|
||||
msgstr "全局模式(最慢, 效果最好)"
|
||||
|
||||
msgid "Plus + Mode(Filter domain name list and blacklist website.Recommended)"
|
||||
msgstr "Plus + 模式(只过滤列表内域名结合ABP名单。推荐!)"
|
||||
|
||||
msgid "No filter Mode (Must set in Client Filter Mode Settings manually)"
|
||||
msgstr "手动代理模式(必须手动设置浏览器代理,或者客户端过滤模式设置)"
|
||||
|
||||
msgid "Transparent proxy"
|
||||
msgstr "透明代理"
|
||||
|
||||
msgid "Click to disable"
|
||||
msgstr "点击关闭"
|
||||
|
||||
msgid "Click to enable"
|
||||
msgstr "点击开启"
|
||||
|
||||
msgid "Adbyby and Rule state"
|
||||
msgstr "规则状态"
|
||||
|
||||
msgid "Restart Adbyby"
|
||||
msgstr "重启Adbyby"
|
||||
|
||||
msgid "Plus+ Domain List"
|
||||
msgstr "Plus+ 模式过滤的域名"
|
||||
|
||||
msgid "Bypass Domain List"
|
||||
msgstr "域名白名单"
|
||||
|
||||
msgid "Black Domain List"
|
||||
msgstr "域名黑名单"
|
||||
|
||||
msgid "Black IP List"
|
||||
msgstr "IP黑名单"
|
||||
|
||||
|
||||
msgid "Advance Setting"
|
||||
msgstr "高级设置"
|
||||
|
||||
msgid "Update the rule at 6 a.m. every morning and restart adbyby"
|
||||
msgstr "每天凌晨6点更新规则并重启"
|
||||
|
||||
msgid "Manually force update<br />Adblock Plus Host List"
|
||||
msgstr "手动强制更新<br />Adblock Plus Host List"
|
||||
|
||||
msgid "Manually force update"
|
||||
msgstr "手动强制更新"
|
||||
|
||||
msgid "Block Apple iOS OTA update"
|
||||
msgstr "拦截 Apple iOS 的OTA更新"
|
||||
|
||||
msgid "RAM Running Mode"
|
||||
msgstr "内存运行模式"
|
||||
|
||||
msgid "Running Adbyby in RAM.More speed,less disk consumption"
|
||||
msgstr "在内存中运行Adbyby。更快的速度,更少的存储空间损耗"
|
||||
|
||||
|
||||
msgid "User-defined Rule"
|
||||
msgstr "用户自定义规则"
|
||||
|
||||
msgid "<strong>Client Filter Mode Settings</strong>"
|
||||
msgstr "<strong>客户端过滤模式设置</strong>"
|
||||
|
||||
msgid "Filter mode settings can be set to specific LAN clients ( <font color=blue> No filter , Global filter </font> ) . Does not need to be set by default."
|
||||
msgstr "可以为局域网客户端分别设置不同的过滤模式 ( <font color=blue> 不过滤 , 全局过滤 </font> ) 。默认无需设置"
|
||||
|
||||
msgid "IP Address"
|
||||
msgstr "IP地址"
|
||||
|
||||
msgid "Filter Mode"
|
||||
msgstr "过滤模式"
|
||||
|
||||
msgid "(!)Note that you should fill to the domain name ONLY. For example, http://www.baidu.com only needs to write to baidu.com. One line for each"
|
||||
msgstr "这些域名在 Plus 模式中会被过滤。你需要要填写域名即可,例如 http://www.baidu.com,你写 baidu.com 即可。每行一个域名"
|
||||
|
||||
msgid "(!)Will Never filter these Domain"
|
||||
msgstr "永不过滤白名单内的域名(所有模式中生效)"
|
||||
|
||||
msgid "(!)Will Always block these Domain"
|
||||
msgstr "拦截黑名单内的域名(所有模式中生效)"
|
||||
|
||||
msgid "(!)Will Always block these IP"
|
||||
msgstr "拦截黑名单内的IP地址(所有模式中生效)"
|
||||
|
||||
msgid "Each line of the beginning exclamation mark is considered an annotation."
|
||||
msgstr "每行一条规则,感叹号开头的被认为是注释"
|
||||
|
||||
msgid "<strong><font color=blue>Adblock Plus Host List:</font></strong>"
|
||||
msgstr "<strong><font color=blue>Adblock Plus Host 列表:</font></strong>"
|
||||
|
||||
msgid "Note: It needs to download and convert the rules. The background process may takes 60-120 seconds to run. <br / > After completed it would automatically refresh, please do not duplicate click!"
|
||||
msgstr "注意:需要下载并转换规则。后台进程可能需要60-120秒运行。完成后会自动刷新,请不要重复点击!"
|
||||
|
||||
msgid "No filter"
|
||||
msgstr "不过滤"
|
||||
|
||||
msgid "Global filter"
|
||||
msgstr "全局过滤"
|
||||
|
||||
msgid "Update adbyby rules form official website first"
|
||||
msgstr "优先从官方网站更新规则"
|
||||
|
||||
11
package/lean/luci-app-adbyby-plus/root/etc/config/adbyby
Normal file
11
package/lean/luci-app-adbyby-plus/root/etc/config/adbyby
Normal file
@ -0,0 +1,11 @@
|
||||
|
||||
config adbyby
|
||||
option daemon '2'
|
||||
option lan_mode '0'
|
||||
option cron_mode '1'
|
||||
option block_ios '0'
|
||||
option enable '0'
|
||||
option wan_mode '1'
|
||||
option mem_mode '1'
|
||||
option update_source '1'
|
||||
|
||||
222
package/lean/luci-app-adbyby-plus/root/etc/init.d/adbyby
Executable file
222
package/lean/luci-app-adbyby-plus/root/etc/init.d/adbyby
Executable file
@ -0,0 +1,222 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=99
|
||||
STOP=10
|
||||
|
||||
EXTRA_COMMANDS="add_rule del_rule reload_rule"
|
||||
PROG_PATH=/usr/share/adbyby
|
||||
DATA_PATH=$PROG_PATH/data
|
||||
WAN_FILE=/var/etc/dnsmasq-adbyby.d/03-adbyby-ipset.conf
|
||||
CRON_FILE=/etc/crontabs/root
|
||||
CONFIG=adbyby
|
||||
ipt_n="iptables -t nat"
|
||||
|
||||
|
||||
get_config()
|
||||
{
|
||||
config_get_bool enable $1 enable
|
||||
config_get_bool cron_mode $1 cron_mode
|
||||
config_get wan_mode $1 wan_mode
|
||||
config_get_bool block_ios $1 block_ios 0
|
||||
config_get_bool mem_mode $1 mem_mode 1
|
||||
}
|
||||
|
||||
add_rules()
|
||||
{
|
||||
rm -f $DATA_PATH/user.bin
|
||||
grep -v ^! $PROG_PATH/rules.txt > $DATA_PATH/user.txt
|
||||
cp $PROG_PATH/rules.txt $DATA_PATH/rules.txt
|
||||
}
|
||||
|
||||
|
||||
add_cron()
|
||||
{
|
||||
if [ $cron_mode -eq 1 ]; then
|
||||
sed -i '/adblock.sh/d' $CRON_FILE
|
||||
echo '0 6 * * * /usr/share/adbyby/adblock.sh > /tmp/adupdate.log 2>&1' >> $CRON_FILE
|
||||
crontab $CRON_FILE
|
||||
fi
|
||||
}
|
||||
|
||||
del_cron()
|
||||
{
|
||||
sed -i '/adblock.sh/d' $CRON_FILE
|
||||
/etc/init.d/cron restart
|
||||
}
|
||||
|
||||
ip_rule()
|
||||
{
|
||||
|
||||
ipset -N adbyby_esc hash:ip
|
||||
$ipt_n -A ADBYBY -m set --match-set adbyby_esc dst -j RETURN
|
||||
|
||||
for i in $(seq 0 100)
|
||||
do
|
||||
local ip=$(uci_get_by_type acl_rule ipaddr '' $i)
|
||||
local mode=$(uci_get_by_type acl_rule filter_mode '' $i)
|
||||
case "$mode" in
|
||||
disable)
|
||||
$ipt_n -A ADBYBY -s $ip -j RETURN
|
||||
;;
|
||||
global)
|
||||
$ipt_n -A ADBYBY -s $ip -p tcp -j REDIRECT --to-ports 8118
|
||||
$ipt_n -A ADBYBY -s $ip -j RETURN
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
|
||||
case $wan_mode in
|
||||
0)
|
||||
;;
|
||||
1)
|
||||
ipset -N adbyby_wan hash:ip
|
||||
$ipt_n -A ADBYBY -m set ! --match-set adbyby_wan dst -j RETURN
|
||||
;;
|
||||
2)
|
||||
$ipt_n -I ADBYBY -j RETURN
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "create blockip hash:net family inet hashsize 1024 maxelem 65536" > /tmp/blockip.ipset
|
||||
awk '!/^$/&&!/^#/{printf("add blockip %s'" "'\n",$0)}' /usr/share/adbyby/blockip.conf >> /tmp/blockip.ipset
|
||||
ipset -! restore < /tmp/blockip.ipset 2>/dev/null
|
||||
iptables -I FORWARD -m set --match-set blockip dst -j DROP
|
||||
iptables -I OUTPUT -m set --match-set blockip dst -j DROP
|
||||
}
|
||||
|
||||
add_dns()
|
||||
{
|
||||
mkdir -p /var/etc/dnsmasq-adbyby.d
|
||||
mkdir -p /tmp/dnsmasq.d
|
||||
awk '!/^$/&&!/^#/{printf("ipset=/%s/'"adbyby_esc"'\n",$0)}' $PROG_PATH/adesc.conf > /var/etc/dnsmasq-adbyby.d/06-dnsmasq.esc
|
||||
awk '!/^$/&&!/^#/{printf("address=/%s/'"0.0.0.0"'\n",$0)}' $PROG_PATH/adblack.conf > /var/etc/dnsmasq-adbyby.d/07-dnsmasq.black
|
||||
cat > /tmp/dnsmasq.d/dnsmasq-adbyby.conf <<EOF
|
||||
conf-dir=/var/etc/dnsmasq-adbyby.d
|
||||
EOF
|
||||
|
||||
local var=1
|
||||
if [ $wan_mode -eq 1 ]; then
|
||||
awk '!/^$/&&!/^#/{printf("ipset=/%s/'"adbyby_wan"'\n",$0)}' $PROG_PATH/adhost.conf > $WAN_FILE
|
||||
if ls /var/etc/dnsmasq-adbyby.d/* >/dev/null 2>&1; then
|
||||
mkdir -p /tmp/dnsmasq.d
|
||||
cp /usr/share/adbyby/dnsmasq.adblock /var/etc/dnsmasq-adbyby.d/04-dnsmasq.adblock
|
||||
cp /usr/share/adbyby/dnsmasq.ads /var/etc/dnsmasq-adbyby.d/05-dnsmasq.ads
|
||||
fi
|
||||
fi
|
||||
|
||||
sed -i '/mesu.apple.com/d' /etc/dnsmasq.conf && [ $block_ios -eq 1 ] && echo 'address=/mesu.apple.com/0.0.0.0' >> /etc/dnsmasq.conf
|
||||
}
|
||||
|
||||
del_dns()
|
||||
{
|
||||
rm -f /tmp/dnsmasq.d/dnsmasq-adbyby.conf
|
||||
rm -f /var/etc/dnsmasq-adbyby.d/*
|
||||
rm -f /tmp/adbyby_host.conf
|
||||
}
|
||||
|
||||
|
||||
add_rule()
|
||||
{
|
||||
$ipt_n -N ADBYBY
|
||||
$ipt_n -A ADBYBY -d 0.0.0.0/8 -j RETURN
|
||||
$ipt_n -A ADBYBY -d 10.0.0.0/8 -j RETURN
|
||||
$ipt_n -A ADBYBY -d 127.0.0.0/8 -j RETURN
|
||||
$ipt_n -A ADBYBY -d 169.254.0.0/16 -j RETURN
|
||||
$ipt_n -A ADBYBY -d 172.16.0.0/12 -j RETURN
|
||||
$ipt_n -A ADBYBY -d 192.168.0.0/16 -j RETURN
|
||||
$ipt_n -A ADBYBY -d 224.0.0.0/4 -j RETURN
|
||||
$ipt_n -A ADBYBY -d 240.0.0.0/4 -j RETURN
|
||||
ip_rule
|
||||
$ipt_n -A ADBYBY -p tcp -j REDIRECT --to-ports 8118
|
||||
$ipt_n -I PREROUTING -p tcp --dport 80 -j ADBYBY
|
||||
}
|
||||
|
||||
del_rule()
|
||||
{
|
||||
$ipt_n -D PREROUTING -p tcp --dport 80 -j ADBYBY 2>/dev/null
|
||||
$ipt_n -F ADBYBY 2>/dev/null
|
||||
$ipt_n -X ADBYBY 2>/dev/null
|
||||
iptables -D FORWARD -m set --match-set blockip dst -j DROP 2>/dev/null
|
||||
iptables -D OUTPUT -m set --match-set blockip dst -j DROP 2>/dev/null
|
||||
ipset -F adbyby_esc 2>/dev/null
|
||||
ipset -X adbyby_esc 2>/dev/null
|
||||
ipset -F adbyby_wan 2>/dev/null
|
||||
ipset -X adbyby_wan 2>/dev/null
|
||||
ipset -F blockip 2>/dev/null
|
||||
ipset -X blockip 2>/dev/null
|
||||
}
|
||||
|
||||
reload_rule()
|
||||
{
|
||||
config_load adbyby
|
||||
config_foreach get_config adbyby
|
||||
del_rule
|
||||
iptables-save | grep ADBYBY >/dev/null || \
|
||||
add_rule
|
||||
}
|
||||
|
||||
start()
|
||||
{
|
||||
config_load adbyby
|
||||
config_foreach get_config adbyby
|
||||
[ $enable -eq 0 ] && exit 0
|
||||
add_cron
|
||||
if [ $mem_mode -eq 1 ]; then
|
||||
echo "start mem mode"
|
||||
if mount | grep adbyby >/dev/null 2>&1; then
|
||||
echo "has mount"
|
||||
else
|
||||
echo "mount adbyby"
|
||||
[ ! -d "/tmp/adbyby" ] && mkdir -p /tmp/adbyby && cp -a $PROG_PATH/data /tmp/adbyby/
|
||||
mount --bind /tmp/adbyby/data $PROG_PATH/data
|
||||
fi
|
||||
/usr/share/adbyby/admem.sh &
|
||||
else
|
||||
/usr/share/adbyby/adupdate.sh &
|
||||
fi
|
||||
echo "add adbyby rules"
|
||||
add_rules
|
||||
$PROG_PATH/adbyby &>/dev/null &
|
||||
add_dns
|
||||
iptables-save | grep ADBYBY >/dev/null || \
|
||||
add_rule
|
||||
/etc/init.d/dnsmasq restart
|
||||
}
|
||||
|
||||
stop()
|
||||
{
|
||||
config_load adbyby
|
||||
config_foreach get_config adbyby
|
||||
del_rule
|
||||
del_cron
|
||||
del_dns
|
||||
killall -q adbyby
|
||||
if [ $mem_mode -eq 1 ]; then
|
||||
echo "stop mem mode"
|
||||
if mount | grep adbyby >/dev/null 2>&1; then
|
||||
echo "umount adbyby"
|
||||
umount /usr/share/adbyby/data
|
||||
fi
|
||||
fi
|
||||
kill -9 $(ps | grep admem.sh | grep -v grep | awk '{print $1}') >/dev/null 2>&1
|
||||
/etc/init.d/dnsmasq restart
|
||||
}
|
||||
|
||||
|
||||
uci_get_by_name() {
|
||||
local ret=$(uci get $CONFIG.$1.$2 2>/dev/null)
|
||||
echo ${ret:=$3}
|
||||
}
|
||||
|
||||
uci_get_by_type() {
|
||||
local index=0
|
||||
if [ -n $4 ]; then
|
||||
|
||||
index=$4
|
||||
fi
|
||||
local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
|
||||
echo ${ret:=$3}
|
||||
}
|
||||
|
||||
3
package/lean/luci-app-adbyby-plus/root/etc/ppp/ip-up.d/adrulesup.sh
Executable file
3
package/lean/luci-app-adbyby-plus/root/etc/ppp/ip-up.d/adrulesup.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
sleep 40 && /etc/init.d/adbyby restart
|
||||
30
package/lean/luci-app-adbyby-plus/root/etc/uci-defaults/adbyby
Executable file
30
package/lean/luci-app-adbyby-plus/root/etc/uci-defaults/adbyby
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@adbyby[-1]
|
||||
add ucitrack adbyby
|
||||
set ucitrack.@adbyby[-1].init=adbyby
|
||||
commit ucitrack
|
||||
delete firewall.adbyby
|
||||
set firewall.adbyby=include
|
||||
set firewall.adbyby.type=script
|
||||
set firewall.adbyby.path=/usr/share/adbyby/firewall.include
|
||||
set firewall.adbyby.reload=1
|
||||
delete firewall.adblock
|
||||
add firewall rule
|
||||
rename firewall.@rule[-1]="adblock"
|
||||
set firewall.@rule[-1].name="adblock"
|
||||
set firewall.@rule[-1].target="DROP"
|
||||
set firewall.@rule[-1].src="wan"
|
||||
set firewall.@rule[-1].proto="tcp"
|
||||
set firewall.@rule[-1].dest_port="8118"
|
||||
commit firewall
|
||||
EOF
|
||||
|
||||
mkdir -p /etc/dnsmasq.d
|
||||
|
||||
/etc/init.d/adbyby stop
|
||||
/etc/init.d/adbyby enable
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
||||
@ -0,0 +1,14 @@
|
||||
gvod.aiseejapp.atianqi.com
|
||||
stat.pandora.xiaomi.com
|
||||
upgrade.mishop.pandora.xiaomi.com
|
||||
logonext.tv.kuyun.com
|
||||
config.kuyun.com
|
||||
mishop.pandora.xiaomi.com
|
||||
dvb.pandora.xiaomi.com
|
||||
api.ad.xiaomi.com
|
||||
de.pandora.xiaomi.com
|
||||
data.mistat.xiaomi.com
|
||||
jellyfish.pandora.xiaomi.com
|
||||
gallery.pandora.xiaomi.com
|
||||
o2o.api.xiaomi.com
|
||||
bss.pandora.xiaomi.com
|
||||
14
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/adblock.sh
Executable file
14
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/adblock.sh
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
rm -f /tmp/dnsmasq.adblock
|
||||
|
||||
wget-ssl --no-check-certificate -O- https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt | grep ^\|\|[^\*]*\^$ | sed -e 's:||:address\=\/:' -e 's:\^:/0\.0\.0\.0:' > /tmp/dnsmasq.adblock
|
||||
if [ -s "/tmp/dnsmasq.adblock" ];then
|
||||
sed -i '/youku.com/d' /tmp/dnsmasq.adblock
|
||||
if ( ! cmp -s /tmp/dnsmasq.adblock /usr/share/adbyby/dnsmasq.adblock );then
|
||||
mv /tmp/dnsmasq.adblock /usr/share/adbyby/dnsmasq.adblock
|
||||
fi
|
||||
fi
|
||||
|
||||
sh /usr/share/adbyby/adupdate.sh
|
||||
sleep 10 && /etc/init.d/adbyby restart
|
||||
@ -0,0 +1,3 @@
|
||||
weixin.qq.com
|
||||
qpic.cn
|
||||
imtt.qq.com
|
||||
@ -0,0 +1,68 @@
|
||||
cbjs.baidu.com
|
||||
list.video.baidu.com
|
||||
nsclick.baidu.com
|
||||
play.baidu.com
|
||||
sclick.baidu.com
|
||||
tieba.baidu.com
|
||||
baidustatic.com
|
||||
bdimg.com
|
||||
bdstatic.com
|
||||
share.baidu.com
|
||||
hm.baidu.com
|
||||
v.baidu.com
|
||||
cpro.baidu.com
|
||||
1000fr.net
|
||||
atianqi.com
|
||||
56.com
|
||||
v-56.com
|
||||
acfun.com
|
||||
acfun.tv
|
||||
baofeng.com
|
||||
baofeng.net
|
||||
cntv.cn
|
||||
hoopchina.com.cn
|
||||
funshion.com
|
||||
fun.tv
|
||||
hitvs.cn
|
||||
hljtv.com
|
||||
iqiyi.com
|
||||
qiyi.com
|
||||
agn.aty.sohu.com
|
||||
itc.cn
|
||||
kankan.com
|
||||
ku6.com
|
||||
letv.com
|
||||
letvcloud.com
|
||||
letvimg.com
|
||||
pplive.cn
|
||||
pps.tv
|
||||
ppsimg.com
|
||||
pptv.com
|
||||
www.qq.com
|
||||
l.qq.com
|
||||
v.qq.com
|
||||
video.sina.com.cn
|
||||
tudou.com
|
||||
wasu.cn
|
||||
analytics-union.xunlei.com
|
||||
kankan.xunlei.com
|
||||
youku.com
|
||||
hunantv.com
|
||||
ifeng.com
|
||||
renren.com
|
||||
mediav.com
|
||||
cnbeta.com
|
||||
mydrivers.com
|
||||
168f.info
|
||||
doubleclick.net
|
||||
126.net
|
||||
sohu.com
|
||||
right.com.cn
|
||||
50bang.org
|
||||
you85.cn
|
||||
jiuzhilan.com
|
||||
googles.com
|
||||
cnbetacdn.com
|
||||
ptqy.gitv.tv
|
||||
admaster.com.cn
|
||||
serving-sys.com
|
||||
36
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/admem.sh
Executable file
36
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/admem.sh
Executable file
@ -0,0 +1,36 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ ! -f "/tmp/adbyby.updated" ];then
|
||||
touch /tmp/adbyby.mem
|
||||
wget_ok="0"
|
||||
while [ "$wget_ok" = "0" ]
|
||||
do
|
||||
wget-ssl --spider --quiet --tries=1 --timeout=3 www.baidu.com
|
||||
if [ "$?" == "0" ]; then
|
||||
wget_ok="1"
|
||||
touch /tmp/lazy.txt && wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/lazy.txt https://coding.net/u/adbyby/p/xwhyc-rules/git/raw/master/lazy.txt
|
||||
touch /tmp/video.txt && wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/video.txt https://coding.net/u/adbyby/p/xwhyc-rules/git/raw/master/video.txt
|
||||
|
||||
touch /tmp/local-md5.json && md5sum /tmp/lazy.txt /tmp/video.txt > /tmp/local-md5.json
|
||||
touch /tmp/md5.json && wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/md5.json https://coding.net/u/adbyby/p/xwhyc-rules/git/raw/master/md5.json
|
||||
|
||||
lazy_local=$(grep 'lazy' /tmp/local-md5.json | awk -F' ' '{print $1}')
|
||||
video_local=$(grep 'video' /tmp/local-md5.json | awk -F' ' '{print $1}')
|
||||
lazy_online=$(sed 's/":"/\n/g' /tmp/md5.json | sed 's/","/\n/g' | sed -n '2p')
|
||||
video_online=$(sed 's/":"/\n/g' /tmp/md5.json | sed 's/","/\n/g' | sed -n '4p')
|
||||
|
||||
if [ "$lazy_online"x == "$lazy_local"x -a "$video_online"x == "$video_local"x ]; then
|
||||
echo "adbyby rules MD5 OK!"
|
||||
mv /tmp/lazy.txt /usr/share/adbyby/data/lazy.txt
|
||||
mv /tmp/video.txt /usr/share/adbyby/data/video.txt
|
||||
echo $(date +%F) > /tmp/adbyby.updated
|
||||
logger "adbyby mem mode rules updated!"
|
||||
fi
|
||||
else
|
||||
sleep 10
|
||||
fi
|
||||
done
|
||||
rm -f /tmp/adbyby.mem /tmp/lazy.txt /tmp/video.txt /tmp/local-md5.json /tmp/md5.json
|
||||
rm -f /usr/share/adbyby/data/*.bak
|
||||
sleep 10 && /etc/init.d/adbyby restart
|
||||
fi
|
||||
30
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/adupdate.sh
Executable file
30
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/adupdate.sh
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
|
||||
rm -f /usr/share/adbyby/data/*.bak
|
||||
|
||||
touch /tmp/local-md5.json && md5sum /usr/share/adbyby/data/lazy.txt /usr/share/adbyby/data/video.txt > /tmp/local-md5.json
|
||||
touch /tmp/md5.json && wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/md5.json https://coding.net/u/adbyby/p/xwhyc-rules/git/raw/master/md5.json
|
||||
|
||||
lazy_local=$(grep 'lazy' /tmp/local-md5.json | awk -F' ' '{print $1}')
|
||||
video_local=$(grep 'video' /tmp/local-md5.json | awk -F' ' '{print $1}')
|
||||
lazy_online=$(sed 's/":"/\n/g' /tmp/md5.json | sed 's/","/\n/g' | sed -n '2p')
|
||||
video_online=$(sed 's/":"/\n/g' /tmp/md5.json | sed 's/","/\n/g' | sed -n '4p')
|
||||
|
||||
if [ "$lazy_online"x != "$lazy_local"x -o "$video_online"x != "$video_local"x ]; then
|
||||
echo "MD5 not match! Need update!"
|
||||
touch /tmp/lazy.txt && wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/lazy.txt https://coding.net/u/adbyby/p/xwhyc-rules/git/raw/master/lazy.txt
|
||||
touch /tmp/video.txt && wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/video.txt https://coding.net/u/adbyby/p/xwhyc-rules/git/raw/master/video.txt
|
||||
touch /tmp/local-md5.json && md5sum /tmp/lazy.txt /tmp/video.txt > /tmp/local-md5.json
|
||||
lazy_local=$(grep 'lazy' /tmp/local-md5.json | awk -F' ' '{print $1}')
|
||||
video_local=$(grep 'video' /tmp/local-md5.json | awk -F' ' '{print $1}')
|
||||
if [ "$lazy_online"x == "$lazy_local"x -a "$video_online"x == "$video_local"x ]; then
|
||||
echo "New rules MD5 match!"
|
||||
mv /tmp/lazy.txt /usr/share/adbyby/data/lazy.txt
|
||||
mv /tmp/video.txt /usr/share/adbyby/data/video.txt
|
||||
echo $(date +"%Y-%m-%d %H:%M:%S") > /tmp/adbyby.updated
|
||||
fi
|
||||
else
|
||||
echo "MD5 match! No need to update!"
|
||||
fi
|
||||
|
||||
rm -f /tmp/lazy.txt /tmp/video.txt /tmp/local-md5.json /tmp/md5.json
|
||||
@ -0,0 +1 @@
|
||||
2.2.2.2
|
||||
940
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/dnsmasq.adblock
Executable file
940
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/dnsmasq.adblock
Executable file
@ -0,0 +1,940 @@
|
||||
address=/a.youdao.com/0.0.0.0
|
||||
address=/adrs.sdo.com/0.0.0.0
|
||||
address=/hiad.myweb.hinet.net/0.0.0.0
|
||||
address=/log.interest.mix.sina.com.cn/0.0.0.0
|
||||
address=/tuiguang.178.com/0.0.0.0
|
||||
address=/0xxd.com/0.0.0.0
|
||||
address=/104.195.62.12/0.0.0.0
|
||||
address=/111.175.219.7/0.0.0.0
|
||||
address=/111111qb.com/0.0.0.0
|
||||
address=/112.124.98.75/0.0.0.0
|
||||
address=/116.55.227.242/0.0.0.0
|
||||
address=/122.227.254.195/0.0.0.0
|
||||
address=/123hala.com/0.0.0.0
|
||||
address=/139.159.32.82/0.0.0.0
|
||||
address=/182.92.81.104/0.0.0.0
|
||||
address=/1l1.cc/0.0.0.0
|
||||
address=/201071.com/0.0.0.0
|
||||
address=/2012ui.com/0.0.0.0
|
||||
address=/211.167.105.131/0.0.0.0
|
||||
address=/220.115.251.25/0.0.0.0
|
||||
address=/221.204.213.222/0.0.0.0
|
||||
address=/2m2n.com/0.0.0.0
|
||||
address=/360baidus.com/0.0.0.0
|
||||
address=/365bibi.com/0.0.0.0
|
||||
address=/365safego.com/0.0.0.0
|
||||
address=/366safego.com/0.0.0.0
|
||||
address=/36pn.com/0.0.0.0
|
||||
address=/3g.990.net/0.0.0.0
|
||||
address=/52kmk.com/0.0.0.0
|
||||
address=/58.215.179.159/0.0.0.0
|
||||
address=/61.152.223.15/0.0.0.0
|
||||
address=/68665565.com/0.0.0.0
|
||||
address=/6dvip.com/0.0.0.0
|
||||
address=/71sem.com/0.0.0.0
|
||||
address=/77power.com/0.0.0.0
|
||||
address=/7wen.cn/0.0.0.0
|
||||
address=/7xz3.com/0.0.0.0
|
||||
address=/81c.cn/0.0.0.0
|
||||
address=/85tgw.com/0.0.0.0
|
||||
address=/88rpg.net/0.0.0.0
|
||||
address=/892155.com/0.0.0.0
|
||||
address=/91ysa.com/0.0.0.0
|
||||
address=/91zgm.com/0.0.0.0
|
||||
address=/9377co.com/0.0.0.0
|
||||
address=/9377os.com/0.0.0.0
|
||||
address=/a907907.com/0.0.0.0
|
||||
address=/ad000000.com/0.0.0.0
|
||||
address=/adm-cnzz.net/0.0.0.0
|
||||
address=/ads.uc.cn/0.0.0.0
|
||||
address=/ajaxcdn.org/0.0.0.0
|
||||
address=/aliyuncss.com/0.0.0.0
|
||||
address=/aliyunxin.com/0.0.0.0
|
||||
address=/amazingmagics.com/0.0.0.0
|
||||
address=/aralego.com/0.0.0.0
|
||||
address=/at98.com/0.0.0.0
|
||||
address=/cangnews.com/0.0.0.0
|
||||
address=/caob5.info/0.0.0.0
|
||||
address=/cb.baidu.com/0.0.0.0
|
||||
address=/cbjs.baidu.com/0.0.0.0
|
||||
address=/cnxad.net/0.0.0.0
|
||||
address=/cnzz.com.so/0.0.0.0
|
||||
address=/code668.com/0.0.0.0
|
||||
address=/cpcv.cc/0.0.0.0
|
||||
address=/cpms.cc/0.0.0.0
|
||||
address=/cpro.baidu.com/0.0.0.0
|
||||
address=/cpro.baidustatic.com/0.0.0.0
|
||||
address=/cpv6.com/0.0.0.0
|
||||
address=/cpva.cc/0.0.0.0
|
||||
address=/crdrjs.info/0.0.0.0
|
||||
address=/csqiulong.com/0.0.0.0
|
||||
address=/ctsywy.com/0.0.0.0
|
||||
address=/cyacc.com/0.0.0.0
|
||||
address=/czpush.com/0.0.0.0
|
||||
address=/dashet.com/0.0.0.0
|
||||
address=/datafastguru.info/0.0.0.0
|
||||
address=/dou777.com/0.0.0.0
|
||||
address=/drmcmm.baidu.com/0.0.0.0
|
||||
address=/duiwai.baidu.com/0.0.0.0
|
||||
address=/dvr8.com/0.0.0.0
|
||||
address=/dw998.com/0.0.0.0
|
||||
address=/dxssiyi.com/0.0.0.0
|
||||
address=/e701.net/0.0.0.0
|
||||
address=/e70123.com/0.0.0.0
|
||||
address=/e708.net/0.0.0.0
|
||||
address=/e719.net/0.0.0.0
|
||||
address=/ecuc123.net/0.0.0.0
|
||||
address=/eiv.baidu.com/0.0.0.0
|
||||
address=/f1190.com/0.0.0.0
|
||||
address=/f6ce.com/0.0.0.0
|
||||
address=/f70123.com/0.0.0.0
|
||||
address=/fd7c.com/0.0.0.0
|
||||
address=/fjmeyer.com/0.0.0.0
|
||||
address=/fu68.com/0.0.0.0
|
||||
address=/fv99.com/0.0.0.0
|
||||
address=/gf108.com/0.0.0.0
|
||||
address=/gf1352.com/0.0.0.0
|
||||
address=/gm682.com/0.0.0.0
|
||||
address=/guduopu.com/0.0.0.0
|
||||
address=/gzmjnx.cn/0.0.0.0
|
||||
address=/gzqudou.com/0.0.0.0
|
||||
address=/hao123rt.com/0.0.0.0
|
||||
address=/haohaowan8.com/0.0.0.0
|
||||
address=/haolew.com/0.0.0.0
|
||||
address=/hfjuki.com/0.0.0.0
|
||||
address=/hmp33.com/0.0.0.0
|
||||
address=/hr44.com/0.0.0.0
|
||||
address=/humanding.com/0.0.0.0
|
||||
address=/i3818.com/0.0.0.0
|
||||
address=/ihualun.com/0.0.0.0
|
||||
address=/img80.net/0.0.0.0
|
||||
address=/jczzjx.com/0.0.0.0
|
||||
address=/jdlhg.com/0.0.0.0
|
||||
address=/jhzl001.com/0.0.0.0
|
||||
address=/jiyou2014.com/0.0.0.0
|
||||
address=/jk939.com/0.0.0.0
|
||||
address=/jlssbz.com/0.0.0.0
|
||||
address=/jnrsjm.com/0.0.0.0
|
||||
address=/johtzj.com/0.0.0.0
|
||||
address=/jwqj.net/0.0.0.0
|
||||
address=/jxjzny.com/0.0.0.0
|
||||
address=/keyyou.net/0.0.0.0
|
||||
address=/kingwam.com/0.0.0.0
|
||||
address=/kmadou.com/0.0.0.0
|
||||
address=/ku9377.com/0.0.0.0
|
||||
address=/lajizhan.org/0.0.0.0
|
||||
address=/le4le.com/0.0.0.0
|
||||
address=/lishuanghao.com/0.0.0.0
|
||||
address=/lzmm8.com/0.0.0.0
|
||||
address=/mainbx.com/0.0.0.0
|
||||
address=/mathads.com/0.0.0.0
|
||||
address=/mlt01.com/0.0.0.0
|
||||
address=/moodoocrv.com.cn/0.0.0.0
|
||||
address=/mscimg.com/0.0.0.0
|
||||
address=/nextcps.com/0.0.0.0
|
||||
address=/niuxgame77.com/0.0.0.0
|
||||
address=/notice.uchome.manyou.com/0.0.0.0
|
||||
address=/oikxlcv.wang/0.0.0.0
|
||||
address=/okm918.com/0.0.0.0
|
||||
address=/p3tt.com/0.0.0.0
|
||||
address=/pdsjycm.com/0.0.0.0
|
||||
address=/pos.baidu.com/0.0.0.0
|
||||
address=/qiqiww.com/0.0.0.0
|
||||
address=/qucaigg.com/0.0.0.0
|
||||
address=/re.taotaosou.com/0.0.0.0
|
||||
address=/ruxianke.com/0.0.0.0
|
||||
address=/rwjfs.com/0.0.0.0
|
||||
address=/sgbfjs.info/0.0.0.0
|
||||
address=/sharedaddomain.com/0.0.0.0
|
||||
address=/show.kc.taotaosou.com/0.0.0.0
|
||||
address=/si9377.com/0.0.0.0
|
||||
address=/socdm.com/0.0.0.0
|
||||
address=/spcode.baidu.com/0.0.0.0
|
||||
address=/sstc360.com/0.0.0.0
|
||||
address=/t70123.com/0.0.0.0
|
||||
address=/taat00889.com/0.0.0.0
|
||||
address=/tad.suning.com/0.0.0.0
|
||||
address=/tc600.com/0.0.0.0
|
||||
address=/tdayi.com/0.0.0.0
|
||||
address=/tg.1155t.cn/0.0.0.0
|
||||
address=/toourbb.com/0.0.0.0
|
||||
address=/ubmcmm.baidustatic.com/0.0.0.0
|
||||
address=/uoyrsd.com/0.0.0.0
|
||||
address=/v707070.com/0.0.0.0
|
||||
address=/victorjx.com/0.0.0.0
|
||||
address=/w65p.com/0.0.0.0
|
||||
address=/wdzsb.com.cn/0.0.0.0
|
||||
address=/winvestern.com.cn/0.0.0.0
|
||||
address=/wqsph.net/0.0.0.0
|
||||
address=/ws341.com/0.0.0.0
|
||||
address=/xa9t.com/0.0.0.0
|
||||
address=/xabaitai.com/0.0.0.0
|
||||
address=/xchgx.com/0.0.0.0
|
||||
address=/xcy8.com/0.0.0.0
|
||||
address=/xtxa.net/0.0.0.0
|
||||
address=/xxad.cc/0.0.0.0
|
||||
address=/xzyituo.com/0.0.0.0
|
||||
address=/yk0712.com/0.0.0.0
|
||||
address=/ymcqb.com/0.0.0.0
|
||||
address=/yqw88.com/0.0.0.0
|
||||
address=/yule8.net/0.0.0.0
|
||||
address=/yyp17.com/0.0.0.0
|
||||
address=/zgksb.com/0.0.0.0
|
||||
address=/zgunion.cn/0.0.0.0
|
||||
address=/zp22938576.com/0.0.0.0
|
||||
address=/120.27.34.156/0.0.0.0
|
||||
address=/122.228.236.165/0.0.0.0
|
||||
address=/125.46.61.28/0.0.0.0
|
||||
address=/192.184.10.171/0.0.0.0
|
||||
address=/218.65.30.232/0.0.0.0
|
||||
address=/27.255.67.120/0.0.0.0
|
||||
address=/32345sf.com/0.0.0.0
|
||||
address=/360safego.com/0.0.0.0
|
||||
address=/3dm.huya.com/0.0.0.0
|
||||
address=/5y9nfpes.52pk.com/0.0.0.0
|
||||
address=/654mmm.com/0.0.0.0
|
||||
address=/6d245gxt.52pk.com/0.0.0.0
|
||||
address=/7mad.7m.cn/0.0.0.0
|
||||
address=/801.tianyaui.com/0.0.0.0
|
||||
address=/86file.megajoy.com/0.0.0.0
|
||||
address=/8jkx.com/0.0.0.0
|
||||
address=/96.43.97.243/0.0.0.0
|
||||
address=/a-m-s.poco.cn/0.0.0.0
|
||||
address=/a.baomihua.com/0.0.0.0
|
||||
address=/a.xizi.com/0.0.0.0
|
||||
address=/a2.b310.com/0.0.0.0
|
||||
address=/a4.yeshj.com/0.0.0.0
|
||||
address=/a5.yeshj.com/0.0.0.0
|
||||
address=/a6.hujiang.com/0.0.0.0
|
||||
address=/abc.hkepc.com/0.0.0.0
|
||||
address=/acsystem.wasu.cn/0.0.0.0
|
||||
address=/ad.17173.com/0.0.0.0
|
||||
address=/ad.bjmama.net/0.0.0.0
|
||||
address=/adadmin.house365.com/0.0.0.0
|
||||
address=/add.dz19.net/0.0.0.0
|
||||
address=/adf.dahe.cn/0.0.0.0
|
||||
address=/adhome.1fangchan.com/0.0.0.0
|
||||
address=/adk.funshion.com/0.0.0.0
|
||||
address=/adm.265g.com/0.0.0.0
|
||||
address=/adm.72zx.com/0.0.0.0
|
||||
address=/adm.86wan.com/0.0.0.0
|
||||
address=/adm.bbcss.com/0.0.0.0
|
||||
address=/adm.funshion.com/0.0.0.0
|
||||
address=/adm.jjj8.cn/0.0.0.0
|
||||
address=/adm.qzbbs.com/0.0.0.0
|
||||
address=/adm.xmfish.com/0.0.0.0
|
||||
address=/adm.zbinfo.net/0.0.0.0
|
||||
address=/adm.zzfish.cn/0.0.0.0
|
||||
address=/admd.yam.com/0.0.0.0
|
||||
address=/adnetpub.yaolan.com/0.0.0.0
|
||||
address=/adp.cnool.net/0.0.0.0
|
||||
address=/adpub.yaolan.com/0.0.0.0
|
||||
address=/adpubs.yaolan.com/0.0.0.0
|
||||
address=/adsclick.yx.js.cn/0.0.0.0
|
||||
address=/adspending01.bwnet.com.tw/0.0.0.0
|
||||
address=/afp.chinanews.com/0.0.0.0
|
||||
address=/afp.wasu.cn/0.0.0.0
|
||||
address=/afpcreative.wasu.cn/0.0.0.0
|
||||
address=/ai.bioon.com/0.0.0.0
|
||||
address=/aid.chinayk.com/0.0.0.0
|
||||
address=/am.6park.com/0.0.0.0
|
||||
address=/am.szhome.com/0.0.0.0
|
||||
address=/app.acm.dzwww.com/0.0.0.0
|
||||
address=/as.sinahk.net/0.0.0.0
|
||||
address=/ashow.pcpop.com/0.0.0.0
|
||||
address=/bb345.com/0.0.0.0
|
||||
address=/besc.baidustatic.com/0.0.0.0
|
||||
address=/biz.gexing.com/0.0.0.0
|
||||
address=/biz.weibo.com/0.0.0.0
|
||||
address=/btn.onlylady.com/0.0.0.0
|
||||
address=/btn.pchome.net/0.0.0.0
|
||||
address=/business.92wy.com/0.0.0.0
|
||||
address=/by.7avz.com/0.0.0.0
|
||||
address=/cacafly.net/0.0.0.0
|
||||
address=/cachead.com/0.0.0.0
|
||||
address=/cdn.wdlm.cn/0.0.0.0
|
||||
address=/chidir.com/0.0.0.0
|
||||
address=/cps.okbuy.com/0.0.0.0
|
||||
address=/d.107788.com/0.0.0.0
|
||||
address=/d.taomato.com/0.0.0.0
|
||||
address=/d0.xcar.com.cn/0.0.0.0
|
||||
address=/dd.xdnice.com/0.0.0.0
|
||||
address=/de.as.pptv.com/0.0.0.0
|
||||
address=/dfad.dfdaily.com/0.0.0.0
|
||||
address=/dg.073img.com/0.0.0.0
|
||||
address=/doubleclick.tv002.com/0.0.0.0
|
||||
address=/dvs.china.com/0.0.0.0
|
||||
address=/dvser.china.com/0.0.0.0
|
||||
address=/e.yycqc.com/0.0.0.0
|
||||
address=/eap.big5.enorth.com.cn/0.0.0.0
|
||||
address=/eap.enorth.com.cn/0.0.0.0
|
||||
address=/ebp.renren.com/0.0.0.0
|
||||
address=/ecma.bdimg.com/0.0.0.0
|
||||
address=/ecmb.bdimg.com/0.0.0.0
|
||||
address=/fun.ynet.com/0.0.0.0
|
||||
address=/g.gxorg.com/0.0.0.0
|
||||
address=/g.hsw.cn/0.0.0.0
|
||||
address=/g.ousns.net/0.0.0.0
|
||||
address=/g1.0573ren.com/0.0.0.0
|
||||
address=/g2.ousns.net/0.0.0.0
|
||||
address=/ganjituiguang.ganji.com/0.0.0.0
|
||||
address=/gdt.qq.com/0.0.0.0
|
||||
address=/get.766.com/0.0.0.0
|
||||
address=/gg.0598yu.com/0.0.0.0
|
||||
address=/gg.18183.com/0.0.0.0
|
||||
address=/gg.cs090.com/0.0.0.0
|
||||
address=/gg.gao7.com/0.0.0.0
|
||||
address=/gg.kugou.com/0.0.0.0
|
||||
address=/gg.sonhoo.com/0.0.0.0
|
||||
address=/gg.yxdown.com/0.0.0.0
|
||||
address=/ggg.zj.com/0.0.0.0
|
||||
address=/ggw.gusuwang.com/0.0.0.0
|
||||
address=/ggw.watertu.com/0.0.0.0
|
||||
address=/ggyq.xdkb.net/0.0.0.0
|
||||
address=/go.hangzhou.com.cn/0.0.0.0
|
||||
address=/goto.www.iciba.com/0.0.0.0
|
||||
address=/gqgc.sz.zj.cn/0.0.0.0
|
||||
address=/groupa.onlylady.com/0.0.0.0
|
||||
address=/gsspcln.jp/0.0.0.0
|
||||
address=/gt.yy.com/0.0.0.0
|
||||
address=/guess.h.qhimg.com/0.0.0.0
|
||||
address=/haxiu.miaotiao.com/0.0.0.0
|
||||
address=/hdad.baike.com/0.0.0.0
|
||||
address=/hiad.vmall.com/0.0.0.0
|
||||
address=/hz.shouyoutv.com/0.0.0.0
|
||||
address=/hzhyhm.com/0.0.0.0
|
||||
address=/i.syasn.com/0.0.0.0
|
||||
address=/iads.xinmin.cn/0.0.0.0
|
||||
address=/idcot.com/0.0.0.0
|
||||
address=/ifx.aifang.com/0.0.0.0
|
||||
address=/image.6park.com/0.0.0.0
|
||||
address=/image.9duw.com/0.0.0.0
|
||||
address=/image.hh010.com/0.0.0.0
|
||||
address=/image.lepan.cc/0.0.0.0
|
||||
address=/images.chinaz.com/0.0.0.0
|
||||
address=/images.gxsky.com/0.0.0.0
|
||||
address=/img.3sjt.com/0.0.0.0
|
||||
address=/img.9duw.com/0.0.0.0
|
||||
address=/img1.126.net/0.0.0.0
|
||||
address=/img2.126.net/0.0.0.0
|
||||
address=/img2.www.fmdisk.com/0.0.0.0
|
||||
address=/inte.sogou.com/0.0.0.0
|
||||
address=/iwanad.baidu.com/0.0.0.0
|
||||
address=/j.6avz.com/0.0.0.0
|
||||
address=/j.7avz.com/0.0.0.0
|
||||
address=/ja.gamersky.com/0.0.0.0
|
||||
address=/jmsyzj.com/0.0.0.0
|
||||
address=/js-1.pchome.net/0.0.0.0
|
||||
address=/js.duotegame.com/0.0.0.0
|
||||
address=/js.leshen.com/0.0.0.0
|
||||
address=/js.pub.tom.com/0.0.0.0
|
||||
address=/js.youxi369.com/0.0.0.0
|
||||
address=/jxad.jx163.com/0.0.0.0
|
||||
address=/knnwdyou.com/0.0.0.0
|
||||
address=/leiqun.snxyf.com/0.0.0.0
|
||||
address=/life.e0575.com/0.0.0.0
|
||||
address=/lingdian98.com/0.0.0.0
|
||||
address=/link.fobshanghai.com/0.0.0.0
|
||||
address=/lxting.com/0.0.0.0
|
||||
address=/m.aty.sohu.com/0.0.0.0
|
||||
address=/manads.static.olcdn.com/0.0.0.0
|
||||
address=/manage.wdfans.cn/0.0.0.0
|
||||
address=/market.178.com/0.0.0.0
|
||||
address=/market.21cn.com/0.0.0.0
|
||||
address=/market.duowan.com/0.0.0.0
|
||||
address=/media.cheshi-img.com/0.0.0.0
|
||||
address=/money.qz828.com/0.0.0.0
|
||||
address=/myad.toocle.com/0.0.0.0
|
||||
address=/ok.432kkk.com/0.0.0.0
|
||||
address=/p.szonline.net/0.0.0.0
|
||||
address=/p.zol-img.com.cn/0.0.0.0
|
||||
address=/p4p.sina.com.cn/0.0.0.0
|
||||
address=/p8u.hinet.net/0.0.0.0
|
||||
address=/panda.kdnet.net/0.0.0.0
|
||||
address=/pcs1.app.joy.cn/0.0.0.0
|
||||
address=/phpad.cqnews.net/0.0.0.0
|
||||
address=/pic.0597kk.com/0.0.0.0
|
||||
address=/pic.111cn.net/0.0.0.0
|
||||
address=/pic.2u.com.cn/0.0.0.0
|
||||
address=/pic.ea3w.com/0.0.0.0
|
||||
address=/pic.fengniao.com/0.0.0.0
|
||||
address=/pic.taian.com/0.0.0.0
|
||||
address=/pic.xgo-img.com.cn/0.0.0.0
|
||||
address=/playad.xjmg.com/0.0.0.0
|
||||
address=/poster.weather.com.cn/0.0.0.0
|
||||
address=/pp.7060.la/0.0.0.0
|
||||
address=/pro.iweihai.cn/0.0.0.0
|
||||
address=/pub.funshion.com/0.0.0.0
|
||||
address=/pub.mop.com/0.0.0.0
|
||||
address=/publicize.liao1.com/0.0.0.0
|
||||
address=/publish.ad.youth.cn/0.0.0.0
|
||||
address=/res.hunantv.com/0.0.0.0
|
||||
address=/rh.qq.com/0.0.0.0
|
||||
address=/same.chinadaily.com.cn/0.0.0.0
|
||||
address=/same.eastmoney.com/0.0.0.0
|
||||
address=/same.stockstar.com/0.0.0.0
|
||||
address=/sc.tom.com/0.0.0.0
|
||||
address=/sgg.southcn.com/0.0.0.0
|
||||
address=/share.gzdsw.com/0.0.0.0
|
||||
address=/shenleyuni.com/0.0.0.0
|
||||
address=/shows.21cn.com/0.0.0.0
|
||||
address=/so.6949.com/0.0.0.0
|
||||
address=/sss.sege.xxx/0.0.0.0
|
||||
address=/static.yujiehenaishang.com/0.0.0.0
|
||||
address=/sub.powerapple.com/0.0.0.0
|
||||
address=/super.cat898.com/0.0.0.0
|
||||
address=/super.kdnet.net/0.0.0.0
|
||||
address=/synacast.com/0.0.0.0
|
||||
address=/tf.360.cn/0.0.0.0
|
||||
address=/tg.delnapb.com/0.0.0.0
|
||||
address=/tk.504pk.com/0.0.0.0
|
||||
address=/tp.sgcn.com/0.0.0.0
|
||||
address=/u.63kc.com/0.0.0.0
|
||||
address=/u.cnzol.com/0.0.0.0
|
||||
address=/union.china.com.cn/0.0.0.0
|
||||
address=/untitled.dwstatic.com/0.0.0.0
|
||||
address=/up.hiao.com/0.0.0.0
|
||||
address=/v-56.com/0.0.0.0
|
||||
address=/vas.funshion.com/0.0.0.0
|
||||
address=/vupload.duowan.com/0.0.0.0
|
||||
address=/web.900.la/0.0.0.0
|
||||
address=/xc.macd.cn/0.0.0.0
|
||||
address=/xs.houyi.baofeng.net/0.0.0.0
|
||||
address=/yktj.yzz.cn/0.0.0.0
|
||||
address=/zo66.com/0.0.0.0
|
||||
address=/zt2088.com/0.0.0.0
|
||||
address=/146.148.85.61/0.0.0.0
|
||||
address=/hdapp1003-a.akamaihd.net/0.0.0.0
|
||||
address=/hdapp1008-a.akamaihd.net/0.0.0.0
|
||||
address=/hdsrc-a.akamaihd.net/0.0.0.0
|
||||
address=/46.165.197.153/0.0.0.0
|
||||
address=/46.165.197.231/0.0.0.0
|
||||
address=/74.117.182.77/0.0.0.0
|
||||
address=/78.140.131.214/0.0.0.0
|
||||
address=/clkrev.com/0.0.0.0
|
||||
address=/a.livesportmedia.eu/0.0.0.0
|
||||
address=/a.ucoz.net/0.0.0.0
|
||||
address=/a.watershed-publishing.com/0.0.0.0
|
||||
address=/a04296f070c0146f314d-0dcad72565cb350972beb3666a86f246.r50.cf5.rackcdn.com/0.0.0.0
|
||||
address=/ad.about.co.kr/0.0.0.0
|
||||
address=/ad.accessmediaproductions.com/0.0.0.0
|
||||
address=/ad.bitmedia.io/0.0.0.0
|
||||
address=/ad.flux.com/0.0.0.0
|
||||
address=/ad.foxnetworks.com/0.0.0.0
|
||||
address=/ad.icasthq.com/0.0.0.0
|
||||
address=/ad.idgtn.net/0.0.0.0
|
||||
address=/ad.jamba.net/0.0.0.0
|
||||
address=/ad.livere.co.kr/0.0.0.0
|
||||
address=/ad.mail.ru/0.0.0.0
|
||||
address=/ad.mesomorphosis.com/0.0.0.0
|
||||
address=/ad.openmultimedia.biz/0.0.0.0
|
||||
address=/ad.outsidehub.com/0.0.0.0
|
||||
address=/ad.pickple.net/0.0.0.0
|
||||
address=/ad.proxy.sh/0.0.0.0
|
||||
address=/ad.r.worldssl.net/0.0.0.0
|
||||
address=/ad.rambler.ru/0.0.0.0
|
||||
address=/ad.reklamport.com/0.0.0.0
|
||||
address=/ad.sensismediasmart.com.au/0.0.0.0
|
||||
address=/ad.smartclip.net/0.0.0.0
|
||||
address=/ad.spielothek.so/0.0.0.0
|
||||
address=/ad.vidaroo.com/0.0.0.0
|
||||
address=/ad.winningpartner.com/0.0.0.0
|
||||
address=/add.bugun.com.tr/0.0.0.0
|
||||
address=/adingo.jp.eimg.jp/0.0.0.0
|
||||
address=/adn.ebay.com/0.0.0.0
|
||||
address=/adplus.goo.mx/0.0.0.0
|
||||
address=/ads.mp.mydas.mobi/0.0.0.0
|
||||
address=/adscaspion.appspot.com/0.0.0.0
|
||||
address=/adss.dotdo.net/0.0.0.0
|
||||
address=/adz.zwee.ly/0.0.0.0
|
||||
address=/aff.eteachergroup.com/0.0.0.0
|
||||
address=/aff.marathonbet.com/0.0.0.0
|
||||
address=/aff.svjump.com/0.0.0.0
|
||||
address=/affil.mupromo.com/0.0.0.0
|
||||
address=/affiliateprogram.keywordspy.com/0.0.0.0
|
||||
address=/affiliates.allposters.com/0.0.0.0
|
||||
address=/affiliatesmedia.sbobet.com/0.0.0.0
|
||||
address=/affiliation.fotovista.com/0.0.0.0
|
||||
address=/agenda.complex.com/0.0.0.0
|
||||
address=/airpushmarketing.s3.amazonaws.com/0.0.0.0
|
||||
address=/ais.abacast.com/0.0.0.0
|
||||
address=/analytics.disneyinternational.com/0.0.0.0
|
||||
address=/ard.ihookup.com/0.0.0.0
|
||||
address=/award.sitekeuring.net/0.0.0.0
|
||||
address=/b.babylon.com/0.0.0.0
|
||||
address=/b.livesport.eu/0.0.0.0
|
||||
address=/b92.putniktravel.com/0.0.0.0
|
||||
address=/banner.101xp.com/0.0.0.0
|
||||
address=/banner.3ddownloads.com/0.0.0.0
|
||||
address=/banner.europacasino.com/0.0.0.0
|
||||
address=/banner.telefragged.com/0.0.0.0
|
||||
address=/banner.titancasino.com/0.0.0.0
|
||||
address=/bl.wavecdn.de/0.0.0.0
|
||||
address=/blamads-assets.s3.amazonaws.com/0.0.0.0
|
||||
address=/bluhostedbanners.blucigs.com/0.0.0.0
|
||||
address=/box.anchorfree.net/0.0.0.0
|
||||
address=/btr.domywife.com/0.0.0.0
|
||||
address=/c.netu.tv/0.0.0.0
|
||||
address=/cas.clickability.com/0.0.0.0
|
||||
address=/cash.neweramediaworks.com/0.0.0.0
|
||||
address=/cerebral.typn.com/0.0.0.0
|
||||
address=/cjmooter.xcache.kinxcdn.com/0.0.0.0
|
||||
address=/clarity.abacast.com/0.0.0.0
|
||||
address=/click.eyk.net/0.0.0.0
|
||||
address=/clickstrip.6wav.es/0.0.0.0
|
||||
address=/connect.summit.co.uk/0.0.0.0
|
||||
address=/content.livesportmedia.eu/0.0.0.0
|
||||
address=/cpm.amateurcommunity.de/0.0.0.0
|
||||
address=/creatives.inmotionhosting.com/0.0.0.0
|
||||
address=/creatives.summitconnect.co.uk/0.0.0.0
|
||||
address=/d13czkep7ax7nj.cloudfront.net/0.0.0.0
|
||||
address=/d140sbu1b1m3h0.cloudfront.net/0.0.0.0
|
||||
address=/d15565yqt7pv7r.cloudfront.net/0.0.0.0
|
||||
address=/d15gt9gwxw5wu0.cloudfront.net/0.0.0.0
|
||||
address=/d17f2fxw547952.cloudfront.net/0.0.0.0
|
||||
address=/d19972r8wdpby8.cloudfront.net/0.0.0.0
|
||||
address=/d1ade4ciw4bqyc.cloudfront.net/0.0.0.0
|
||||
address=/d1cl1sqtf3o420.cloudfront.net/0.0.0.0
|
||||
address=/d1d95giojjkirt.cloudfront.net/0.0.0.0
|
||||
address=/d1ep3cn6qx0l3z.cloudfront.net/0.0.0.0
|
||||
address=/d1ey3fksimezm4.cloudfront.net/0.0.0.0
|
||||
address=/d1fo96xm8fci0r.cloudfront.net/0.0.0.0
|
||||
address=/d1gojtoka5qi10.cloudfront.net/0.0.0.0
|
||||
address=/d1k74lgicilrr3.cloudfront.net/0.0.0.0
|
||||
address=/d1noellhv8fksc.cloudfront.net/0.0.0.0
|
||||
address=/d1pcttwib15k25.cloudfront.net/0.0.0.0
|
||||
address=/d1pdpbxj733bb1.cloudfront.net/0.0.0.0
|
||||
address=/d1spb7fplenrp4.cloudfront.net/0.0.0.0
|
||||
address=/d1vbm0eveofcle.cloudfront.net/0.0.0.0
|
||||
address=/d1zgderxoe1a.cloudfront.net/0.0.0.0
|
||||
address=/d23guct4biwna6.cloudfront.net/0.0.0.0
|
||||
address=/d23nyyb6dc29z6.cloudfront.net/0.0.0.0
|
||||
address=/d25ruj6ht8bs1.cloudfront.net/0.0.0.0
|
||||
address=/d25xkbr68qqtcn.cloudfront.net/0.0.0.0
|
||||
address=/d26dzd2k67we08.cloudfront.net/0.0.0.0
|
||||
address=/d26j9bp9bq4uhd.cloudfront.net/0.0.0.0
|
||||
address=/d26wy0pxd3qqpv.cloudfront.net/0.0.0.0
|
||||
address=/d27jt7xr4fq3e8.cloudfront.net/0.0.0.0
|
||||
address=/d287x05ve9a63s.cloudfront.net/0.0.0.0
|
||||
address=/d29r6igjpnoykg.cloudfront.net/0.0.0.0
|
||||
address=/d2anfhdgjxf8s1.cloudfront.net/0.0.0.0
|
||||
address=/d2b2x1ywompm1b.cloudfront.net/0.0.0.0
|
||||
address=/d2b65ihpmocv7w.cloudfront.net/0.0.0.0
|
||||
address=/d2bgg7rjywcwsy.cloudfront.net/0.0.0.0
|
||||
address=/d2cxkkxhecdzsq.cloudfront.net/0.0.0.0
|
||||
address=/d2d2lbvq8xirbs.cloudfront.net/0.0.0.0
|
||||
address=/d2dxgm96wvaa5j.cloudfront.net/0.0.0.0
|
||||
address=/d2gpgaupalra1d.cloudfront.net/0.0.0.0
|
||||
address=/d2gtlljtkeiyzd.cloudfront.net/0.0.0.0
|
||||
address=/d2gz6iop9uxobu.cloudfront.net/0.0.0.0
|
||||
address=/d2hap2bsh1k9lw.cloudfront.net/0.0.0.0
|
||||
address=/d2ipklohrie3lo.cloudfront.net/0.0.0.0
|
||||
address=/d2mic0r0bo3i6z.cloudfront.net/0.0.0.0
|
||||
address=/d2mq0uzafv8ytp.cloudfront.net/0.0.0.0
|
||||
address=/d2nlytvx51ywh9.cloudfront.net/0.0.0.0
|
||||
address=/d2o307dm5mqftz.cloudfront.net/0.0.0.0
|
||||
address=/d2oallm7wrqvmi.cloudfront.net/0.0.0.0
|
||||
address=/d2omcicc3a4zlg.cloudfront.net/0.0.0.0
|
||||
address=/d2pgy8h4i30on1.cloudfront.net/0.0.0.0
|
||||
address=/d2plxos94peuwp.cloudfront.net/0.0.0.0
|
||||
address=/d2r359adnh3sfn.cloudfront.net/0.0.0.0
|
||||
address=/d2s64zaa9ua7uv.cloudfront.net/0.0.0.0
|
||||
address=/d2tgev5wuprbqq.cloudfront.net/0.0.0.0
|
||||
address=/d2tnimpzlb191i.cloudfront.net/0.0.0.0
|
||||
address=/d2ubicnllnnszy.cloudfront.net/0.0.0.0
|
||||
address=/d2ue9k1rhsumed.cloudfront.net/0.0.0.0
|
||||
address=/d2v4glj2m8yzg5.cloudfront.net/0.0.0.0
|
||||
address=/d2v9ajh2eysdau.cloudfront.net/0.0.0.0
|
||||
address=/d2vt6q0n0iy66w.cloudfront.net/0.0.0.0
|
||||
address=/d2yhukq7vldf1u.cloudfront.net/0.0.0.0
|
||||
address=/d2z1smm3i01tnr.cloudfront.net/0.0.0.0
|
||||
address=/d31807xkria1x4.cloudfront.net/0.0.0.0
|
||||
address=/d32pxqbknuxsuy.cloudfront.net/0.0.0.0
|
||||
address=/d33f10u0pfpplc.cloudfront.net/0.0.0.0
|
||||
address=/d33otidwg56k90.cloudfront.net/0.0.0.0
|
||||
address=/d34obr29voew8l.cloudfront.net/0.0.0.0
|
||||
address=/d34rdvn2ky3gnm.cloudfront.net/0.0.0.0
|
||||
address=/d37kzqe5knnh6t.cloudfront.net/0.0.0.0
|
||||
address=/d38pxm3dmrdu6d.cloudfront.net/0.0.0.0
|
||||
address=/d38r21vtgndgb1.cloudfront.net/0.0.0.0
|
||||
address=/d39xqloz8t5a6x.cloudfront.net/0.0.0.0
|
||||
address=/d3bvcf24wln03d.cloudfront.net/0.0.0.0
|
||||
address=/d3dphmosjk9rot.cloudfront.net/0.0.0.0
|
||||
address=/d3f9mcik999dte.cloudfront.net/0.0.0.0
|
||||
address=/d3fzrm6pcer44x.cloudfront.net/0.0.0.0
|
||||
address=/d3irruagotonpp.cloudfront.net/0.0.0.0
|
||||
address=/d3iwjrnl4m67rd.cloudfront.net/0.0.0.0
|
||||
address=/d3lvr7yuk4uaui.cloudfront.net/0.0.0.0
|
||||
address=/d3lzezfa753mqu.cloudfront.net/0.0.0.0
|
||||
address=/d3m41swuqq4sv5.cloudfront.net/0.0.0.0
|
||||
address=/d3nvrqlo8rj1kw.cloudfront.net/0.0.0.0
|
||||
address=/d3p9ql8flgemg7.cloudfront.net/0.0.0.0
|
||||
address=/d3pkae9owd2lcf.cloudfront.net/0.0.0.0
|
||||
address=/d3q2dpprdsteo.cloudfront.net/0.0.0.0
|
||||
address=/d3qszud4qdthr8.cloudfront.net/0.0.0.0
|
||||
address=/d3t2wca0ou3lqz.cloudfront.net/0.0.0.0
|
||||
address=/d3t9ip55bsuxrf.cloudfront.net/0.0.0.0
|
||||
address=/d3tdefw8pwfkbk.cloudfront.net/0.0.0.0
|
||||
address=/d3vc1nm9xbncz5.cloudfront.net/0.0.0.0
|
||||
address=/d5pvnbpawsaav.cloudfront.net/0.0.0.0
|
||||
address=/d6bdy3eto8fyu.cloudfront.net/0.0.0.0
|
||||
address=/d8qy7md4cj3gz.cloudfront.net/0.0.0.0
|
||||
address=/dal9hkyfi0m0n.cloudfront.net/0.0.0.0
|
||||
address=/dart.clearchannel.com/0.0.0.0
|
||||
address=/dasfdasfasdf.no-ip.info/0.0.0.0
|
||||
address=/data.neuroxmedia.com/0.0.0.0
|
||||
address=/dbam.dashbida.com/0.0.0.0
|
||||
address=/ddwht76d9jvfl.cloudfront.net/0.0.0.0
|
||||
address=/dew9ckzjyt2gn.cloudfront.net/0.0.0.0
|
||||
address=/dff7tx5c2qbxc.cloudfront.net/0.0.0.0
|
||||
address=/display.digitalriver.com/0.0.0.0
|
||||
address=/disy2s34euyqm.cloudfront.net/0.0.0.0
|
||||
address=/dizixdllzznrf.cloudfront.net/0.0.0.0
|
||||
address=/djlf5xdlz7m8m.cloudfront.net/0.0.0.0
|
||||
address=/dkd69bwkvrht1.cloudfront.net/0.0.0.0
|
||||
address=/dkdwv3lcby5zi.cloudfront.net/0.0.0.0
|
||||
address=/dl392qndlveq0.cloudfront.net/0.0.0.0
|
||||
address=/dl5v5atodo7gn.cloudfront.net/0.0.0.0
|
||||
address=/dlupv9uqtjlie.cloudfront.net/0.0.0.0
|
||||
address=/dm0acvguygm9h.cloudfront.net/0.0.0.0
|
||||
address=/dm8srf206hien.cloudfront.net/0.0.0.0
|
||||
address=/dp51h10v6ggpa.cloudfront.net/0.0.0.0
|
||||
address=/dpsq2uzakdgqz.cloudfront.net/0.0.0.0
|
||||
address=/dq2tgxnc2knif.cloudfront.net/0.0.0.0
|
||||
address=/dqhi3ea93ztgv.cloudfront.net/0.0.0.0
|
||||
address=/dr8pk6ovub897.cloudfront.net/0.0.0.0
|
||||
address=/duct5ntjian71.cloudfront.net/0.0.0.0
|
||||
address=/dvf2u7vwmkr5w.cloudfront.net/0.0.0.0
|
||||
address=/dvt4pepo9om3r.cloudfront.net/0.0.0.0
|
||||
address=/dx5qvhwg92mjd.cloudfront.net/0.0.0.0
|
||||
address=/dxq6c0tx3v6mm.cloudfront.net/0.0.0.0
|
||||
address=/dxqd86uz345mg.cloudfront.net/0.0.0.0
|
||||
address=/dy48bnzanqw0v.cloudfront.net/0.0.0.0
|
||||
address=/dycpc40hvg4ki.cloudfront.net/0.0.0.0
|
||||
address=/dyl3p6so5yozo.cloudfront.net/0.0.0.0
|
||||
address=/epowernetworktrackerimages.s3.amazonaws.com/0.0.0.0
|
||||
address=/euwidget.imshopping.com/0.0.0.0
|
||||
address=/events.kalooga.com/0.0.0.0
|
||||
address=/ext.theglobalweb.com/0.0.0.0
|
||||
address=/feeds.logicbuy.com/0.0.0.0
|
||||
address=/ft.pnop.com/0.0.0.0
|
||||
address=/gateway.fortunelounge.com/0.0.0.0
|
||||
address=/gateways.s3.amazonaws.com/0.0.0.0
|
||||
address=/geo.connexionsecure.com/0.0.0.0
|
||||
address=/geobanner.friendfinder.com/0.0.0.0
|
||||
address=/geobanner.passion.com/0.0.0.0
|
||||
address=/gfaf-banners.s3.amazonaws.com/0.0.0.0
|
||||
address=/homad-global-configs.schneevonmorgen.com/0.0.0.0
|
||||
address=/im.ov.yahoo.co.jp/0.0.0.0
|
||||
address=/ima3vpaid.appspot.com/0.0.0.0
|
||||
address=/indieclick.3janecdn.com/0.0.0.0
|
||||
address=/inskin.vo.llnwd.net/0.0.0.0
|
||||
address=/k2team.kyiv.ua/0.0.0.0
|
||||
address=/mads.aol.com/0.0.0.0
|
||||
address=/marketing.888.com/0.0.0.0
|
||||
address=/mb.zam.com/0.0.0.0
|
||||
address=/mozo-widgets.f2.com.au/0.0.0.0
|
||||
address=/network.aufeminin.com/0.0.0.0
|
||||
address=/network.business.com/0.0.0.0
|
||||
address=/oclasrv.comindex-2.htmlapu.php/0.0.0.0
|
||||
address=/odin.goo.mx/0.0.0.0
|
||||
address=/on.maxspeedcdn.com/0.0.0.0
|
||||
address=/ox-i.cordillera.tv/0.0.0.0
|
||||
address=/partner.bargaindomains.com/0.0.0.0
|
||||
address=/partner.catchy.com/0.0.0.0
|
||||
address=/partner.premiumdomains.com/0.0.0.0
|
||||
address=/partnerads.ysm.yahoo.com/0.0.0.0
|
||||
address=/partnerads1.ysm.yahoo.com/0.0.0.0
|
||||
address=/partners.fshealth.com/0.0.0.0
|
||||
address=/partners.optiontide.com/0.0.0.0
|
||||
address=/partners.rochen.com/0.0.0.0
|
||||
address=/partners.sportingbet.com.au/0.0.0.0
|
||||
address=/partners.vouchedfor.co.uk/0.0.0.0
|
||||
address=/partners.xpertmarket.com/0.0.0.0
|
||||
address=/priceinfo.comuv.com/0.0.0.0
|
||||
address=/promos.fling.com/0.0.0.0
|
||||
address=/promote.pair.com/0.0.0.0
|
||||
address=/promotions.iasbet.com/0.0.0.0
|
||||
address=/pub.betclick.com/0.0.0.0
|
||||
address=/pubs.hiddennetwork.com/0.0.0.0
|
||||
address=/rack.bauermedia.co.uk/0.0.0.0
|
||||
address=/res3.feedsportal.com/0.0.0.0
|
||||
address=/revealads.appspot.com/0.0.0.0
|
||||
address=/rotabanner.kulichki.net/0.0.0.0
|
||||
address=/rotator.tradetracker.net/0.0.0.0
|
||||
address=/s-yoolk-banner-assets.yoolk.com/0.0.0.0
|
||||
address=/s-yoolk-billboard-assets.yoolk.com/0.0.0.0
|
||||
address=/secretmedia.s3.amazonaws.com/0.0.0.0
|
||||
address=/servedby.keygamesnetwork.com/0.0.0.0
|
||||
address=/sitescout-video-cdn.edgesuite.net/0.0.0.0
|
||||
address=/slot.union.ucweb.com/0.0.0.0
|
||||
address=/smart.styria-digital.com/0.0.0.0
|
||||
address=/squarespace.evyy.net/0.0.0.0
|
||||
address=/stats.hosting24.com/0.0.0.0
|
||||
address=/stats.sitesuite.org/0.0.0.0
|
||||
address=/stuff-nzwhistleout.s3.amazonaws.com/0.0.0.0
|
||||
address=/survey.g.doubleclick.net/0.0.0.0
|
||||
address=/syndication.jsadapi.com/0.0.0.0
|
||||
address=/syndication1.viraladnetwork.net/0.0.0.0
|
||||
address=/tap.more-results.net/0.0.0.0
|
||||
address=/ti.tradetracker.net/0.0.0.0
|
||||
address=/track.bcvcmedia.com/0.0.0.0
|
||||
address=/twinplan.com/0.0.0.0
|
||||
address=/vendor1.fitschigogerl.com/0.0.0.0
|
||||
address=/web-jp.ad-v.jp/0.0.0.0
|
||||
address=/whistleout.s3.amazonaws.com/0.0.0.0
|
||||
address=/widget.crowdignite.com/0.0.0.0
|
||||
address=/widget.kelkoo.com/0.0.0.0
|
||||
address=/widget.raaze.com/0.0.0.0
|
||||
address=/widget.searchschoolsnetwork.com/0.0.0.0
|
||||
address=/widget.shopstyle.com.au/0.0.0.0
|
||||
address=/widget.solarquotes.com.au/0.0.0.0
|
||||
address=/widgets.realestate.com.au/0.0.0.0
|
||||
address=/wtpn.twenga.co.uk/0.0.0.0
|
||||
address=/wtpn.twenga.de/0.0.0.0
|
||||
address=/yb.torchbrowser.com/0.0.0.0
|
||||
address=/yeas.yahoo.co.jp/0.0.0.0
|
||||
address=/zapads.zapak.com/0.0.0.0
|
||||
address=/zeus.qj.net/0.0.0.0
|
||||
address=/iadc.qwapi.com/0.0.0.0
|
||||
address=/d1nmk7iw7hajjn.cloudfront.net/0.0.0.0
|
||||
address=/ad.duga.jp/0.0.0.0
|
||||
address=/ad.iloveinterracial.com/0.0.0.0
|
||||
address=/ads.videosz.com/0.0.0.0
|
||||
address=/affiliates.thrixxx.com/0.0.0.0
|
||||
address=/ard.sweetdiscreet.com/0.0.0.0
|
||||
address=/bannershotlink.perfectgonzo.com/0.0.0.0
|
||||
address=/blaaaa12.googlecode.com/0.0.0.0
|
||||
address=/br.blackfling.com/0.0.0.0
|
||||
address=/br.fling.com/0.0.0.0
|
||||
address=/br.realitykings.com/0.0.0.0
|
||||
address=/cpm.amateurcommunity.com/0.0.0.0
|
||||
address=/dailyvideo.securejoin.com/0.0.0.0
|
||||
address=/desk.cmix.org/0.0.0.0
|
||||
address=/feeds.videosz.com/0.0.0.0
|
||||
address=/ff.nsg.org.ua/0.0.0.0
|
||||
address=/freexxxvideoclip.aebn.net/0.0.0.0
|
||||
address=/geo.cliphunter.com/0.0.0.0
|
||||
address=/geo.frtya.com/0.0.0.0
|
||||
address=/geobanner.adultfriendfinder.com/0.0.0.0
|
||||
address=/geobanner.alt.com/0.0.0.0
|
||||
address=/geobanner.socialflirt.com/0.0.0.0
|
||||
address=/partners.pornerbros.com/0.0.0.0
|
||||
address=/s1magnettvcom.maynemyltf.netdna-cdn.com/0.0.0.0
|
||||
address=/surv.xbizmedia.com/0.0.0.0
|
||||
address=/sweet.game-rust.ru/0.0.0.0
|
||||
address=/widgets.comcontent.net/0.0.0.0
|
||||
address=/widgetssec.cam-content.com/0.0.0.0
|
||||
address=/a.cdngeek.net/0.0.0.0
|
||||
address=/a.clipconverter.cc/0.0.0.0
|
||||
address=/a.giantrealm.com/0.0.0.0
|
||||
address=/a.i-sgcm.com/0.0.0.0
|
||||
address=/a.kat.cr/0.0.0.0
|
||||
address=/a.kickass.to/0.0.0.0
|
||||
address=/a.lolwot.com/0.0.0.0
|
||||
address=/ac2.msn.com/0.0.0.0
|
||||
address=/access.njherald.com/0.0.0.0
|
||||
address=/ad.cooks.com/0.0.0.0
|
||||
address=/ad.digitimes.com.tw/0.0.0.0
|
||||
address=/ad.directmirror.com/0.0.0.0
|
||||
address=/ad.download.cnet.com/0.0.0.0
|
||||
address=/ad.evozi.com/0.0.0.0
|
||||
address=/ad.fnnews.com/0.0.0.0
|
||||
address=/ad.jamster.com/0.0.0.0
|
||||
address=/ad.lyricswire.com/0.0.0.0
|
||||
address=/ad.mangareader.net/0.0.0.0
|
||||
address=/ad.newegg.com/0.0.0.0
|
||||
address=/ad.pandora.tv/0.0.0.0
|
||||
address=/ad.reachlocal.com/0.0.0.0
|
||||
address=/ad.search.ch/0.0.0.0
|
||||
address=/ad.services.distractify.com/0.0.0.0
|
||||
address=/adcitrus.com/0.0.0.0
|
||||
address=/addirector.vindicosuite.com/0.0.0.0
|
||||
address=/adds.weatherology.com/0.0.0.0
|
||||
address=/adlink.shopsafe.co.nz/0.0.0.0
|
||||
address=/admeta.vo.llnwd.net/0.0.0.0
|
||||
address=/ads-rolandgarros.com/0.0.0.0
|
||||
address=/ads.pof.com/0.0.0.0
|
||||
address=/ads.yahoo.com/0.0.0.0
|
||||
address=/ads.zynga.com/0.0.0.0
|
||||
address=/adsatt.abcnews.starwave.com/0.0.0.0
|
||||
address=/adsatt.espn.starwave.com/0.0.0.0
|
||||
address=/adshare.freedocast.com/0.0.0.0
|
||||
address=/adsor.openrunner.com/0.0.0.0
|
||||
address=/adss.yahoo.com/0.0.0.0
|
||||
address=/adstil.indiatimes.com/0.0.0.0
|
||||
address=/adtest.theonion.com/0.0.0.0
|
||||
address=/advertise.twitpic.com/0.0.0.0
|
||||
address=/advice-ads-cdn.vice.com/0.0.0.0
|
||||
address=/adx.kat.ph/0.0.0.0
|
||||
address=/aff.lmgtfy.com/0.0.0.0
|
||||
address=/ajnad.aljazeera.net/0.0.0.0
|
||||
address=/amz.steamprices.com/0.0.0.0
|
||||
address=/analytics.mmosite.com/0.0.0.0
|
||||
address=/as.inbox.com/0.0.0.0
|
||||
address=/asd.projectfreetv.so/0.0.0.0
|
||||
address=/avpa.dzone.com/0.0.0.0
|
||||
address=/b.localpages.com/0.0.0.0
|
||||
address=/b.thefile.me/0.0.0.0
|
||||
address=/ba.ccm2.net/0.0.0.0
|
||||
address=/ba.kioskea.net/0.0.0.0
|
||||
address=/banner.automotiveworld.com/0.0.0.0
|
||||
address=/banner.itweb.co.za/0.0.0.0
|
||||
address=/banners.beevpn.com/0.0.0.0
|
||||
address=/banners.beted.com/0.0.0.0
|
||||
address=/banners.clubworldgroup.com/0.0.0.0
|
||||
address=/banners.expressindia.com/0.0.0.0
|
||||
address=/banners.i-comers.com/0.0.0.0
|
||||
address=/banners.itweb.co.za/0.0.0.0
|
||||
address=/banners.playocio.com/0.0.0.0
|
||||
address=/beap.gemini.yahoo.com/0.0.0.0
|
||||
address=/bizanti.youwatch.org/0.0.0.0
|
||||
address=/bnrs.ilm.ee/0.0.0.0
|
||||
address=/bwp.theinsider.com.com/0.0.0.0
|
||||
address=/cadvv.heraldm.com/0.0.0.0
|
||||
address=/cadvv.koreaherald.com/0.0.0.0
|
||||
address=/canvas.thenextweb.com/0.0.0.0
|
||||
address=/click.livedoor.com/0.0.0.0
|
||||
address=/clicks.superpages.com/0.0.0.0
|
||||
address=/cnetwidget.creativemark.co.uk/0.0.0.0
|
||||
address=/collector.viki.io/0.0.0.0
|
||||
address=/creatives.livejasmin.com/0.0.0.0
|
||||
address=/d.annarbor.com/0.0.0.0
|
||||
address=/d.businessinsider.com/0.0.0.0
|
||||
address=/d.gossipcenter.com/0.0.0.0
|
||||
address=/d.thelocal.com/0.0.0.0
|
||||
address=/dads.new.digg.com/0.0.0.0
|
||||
address=/dailydeals.amarillo.com/0.0.0.0
|
||||
address=/dailydeals.augustachronicle.com/0.0.0.0
|
||||
address=/dailydeals.brainerddispatch.com/0.0.0.0
|
||||
address=/dailydeals.lubbockonline.com/0.0.0.0
|
||||
address=/dailydeals.onlineathens.com/0.0.0.0
|
||||
address=/dailydeals.savannahnow.com/0.0.0.0
|
||||
address=/dcad.watersoul.com/0.0.0.0
|
||||
address=/deals.ledgertranscript.com/0.0.0.0
|
||||
address=/digdug.divxnetworks.com/0.0.0.0
|
||||
address=/display.superbay.net/0.0.0.0
|
||||
address=/dontblockme.modaco.com/0.0.0.0
|
||||
address=/ehow.com/media/ad.html/0.0.0.0
|
||||
address=/eva.ucas.com/0.0.0.0
|
||||
address=/fan.twitch.tv/0.0.0.0
|
||||
address=/fimserve.ign.com/0.0.0.0
|
||||
address=/findnsave.idahostatesman.com/0.0.0.0
|
||||
address=/g.brothersoft.com/0.0.0.0
|
||||
address=/gameads.digyourowngrave.com/0.0.0.0
|
||||
address=/geoshopping.nzherald.co.nz/0.0.0.0
|
||||
address=/get.thefile.me/0.0.0.0
|
||||
address=/gfx.infomine.com/0.0.0.0
|
||||
address=/green.virtual-nights.com/0.0.0.0
|
||||
address=/hejban.youwatch.org/0.0.0.0
|
||||
address=/ibanners.empoweredcomms.com.au/0.0.0.0
|
||||
address=/iframe.travel.yahoo.com/0.0.0.0
|
||||
address=/imads.rediff.com/0.0.0.0
|
||||
address=/kat-ads.torrenticity.com/0.0.0.0
|
||||
address=/keepthelighton.vpsboard.com/0.0.0.0
|
||||
address=/kermit.macnn.com/0.0.0.0
|
||||
address=/life.imagepix.org/0.0.0.0
|
||||
address=/ll.a.hulu.com/0.0.0.0
|
||||
address=/londonprivaterentals.standard.co.uk/0.0.0.0
|
||||
address=/looky.hyves.org/0.0.0.0
|
||||
address=/lw2.gamecopyworld.com/0.0.0.0
|
||||
address=/mads.dailymail.co.uk/0.0.0.0
|
||||
address=/marketingsolutions.yahoo.com/0.0.0.0
|
||||
address=/mb.hockeybuzz.com/0.0.0.0
|
||||
address=/mealsandsteals.sandiego6.com/0.0.0.0
|
||||
address=/media-delivery.armorgames.com/0.0.0.0
|
||||
address=/media-mgmt.armorgames.com/0.0.0.0
|
||||
address=/mediamgr.ugo.com/0.0.0.0
|
||||
address=/nest.youwatch.org/0.0.0.0
|
||||
address=/netspidermm.indiatimes.com/0.0.0.0
|
||||
address=/network.sofeminine.co.uk/0.0.0.0
|
||||
address=/noram.srv.ysm.yahoo.com/0.0.0.0
|
||||
address=/oas.autotrader.co.uk/0.0.0.0
|
||||
address=/oas.skyscanner.net/0.0.0.0
|
||||
address=/oasc07.citywire.co.uk/0.0.0.0
|
||||
address=/oascentral.chron.com/0.0.0.0
|
||||
address=/oascentral.hosted.ap.org/0.0.0.0
|
||||
address=/oascentral.newsmax.com/0.0.0.0
|
||||
address=/ox-d.rantsports.com/0.0.0.0
|
||||
address=/ox-d.sbnation.com/0.0.0.0
|
||||
address=/ox-d.wetransfer.com/0.0.0.0
|
||||
address=/ox.furaffinity.net/0.0.0.0
|
||||
address=/partners-z.com/0.0.0.0
|
||||
address=/photo.net/equipment/pg-160/0.0.0.0
|
||||
address=/player.1800coupon.com/0.0.0.0
|
||||
address=/player.1stcreditrepairs.com/0.0.0.0
|
||||
address=/player.800directories.com/0.0.0.0
|
||||
address=/player.accoona.com/0.0.0.0
|
||||
address=/player.alloutwedding.com/0.0.0.0
|
||||
address=/player.insuranceandhealth.com/0.0.0.0
|
||||
address=/pmm.people.com.cn/0.0.0.0
|
||||
address=/pop-over.powered-by.justplayzone.com/0.0.0.0
|
||||
address=/prerollads.ign.com/0.0.0.0
|
||||
address=/promo.fileforum.com/0.0.0.0
|
||||
address=/rad.microsoft.com/0.0.0.0
|
||||
address=/rad.msn.com/0.0.0.0
|
||||
address=/red.bayimg.net/0.0.0.0
|
||||
address=/redvase.bravenet.com/0.0.0.0
|
||||
address=/richmedia.yimg.com/0.0.0.0
|
||||
address=/roia.com/0.0.0.0
|
||||
address=/rpt.anchorfree.net/0.0.0.0
|
||||
address=/searchignited.com/0.0.0.0
|
||||
address=/sebar.thand.info/0.0.0.0
|
||||
address=/shoppingpartners2.futurenet.com/0.0.0.0
|
||||
address=/sponsors.s2ki.com/0.0.0.0
|
||||
address=/sponsors.webosroundup.com/0.0.0.0
|
||||
address=/srv.thespacereporter.com/0.0.0.0
|
||||
address=/storewidget.pcauthority.com.au/0.0.0.0
|
||||
address=/stream.heavenmedia.net/0.0.0.0
|
||||
address=/tanzanite.infomine.com/0.0.0.0
|
||||
address=/targetedinfo.com/0.0.0.0
|
||||
address=/targetedtopic.com/0.0.0.0
|
||||
address=/thejesperbay.com/0.0.0.0
|
||||
address=/themis.yahoo.com/0.0.0.0
|
||||
address=/tmcs.net/0.0.0.0
|
||||
address=/tom.itv.com/0.0.0.0
|
||||
address=/tracking.hostgator.com/0.0.0.0
|
||||
address=/ua.badongo.com/0.0.0.0
|
||||
address=/uimserv.net/0.0.0.0
|
||||
address=/unicast.ign.com/0.0.0.0
|
||||
address=/unicast.msn.com/0.0.0.0
|
||||
address=/verdict.abc.go.com/0.0.0.0
|
||||
address=/vice-ads-cdn.vice.com/0.0.0.0
|
||||
address=/w.homes.yahoo.net/0.0.0.0
|
||||
address=/webmaster.extabit.com/0.0.0.0
|
||||
address=/widget.directory.dailycommercial.com/0.0.0.0
|
||||
address=/x.castanet.net/0.0.0.0
|
||||
address=/yea.uploadimagex.com/0.0.0.0
|
||||
address=/yesbeby.whies.info/0.0.0.0
|
||||
address=/yrt7dgkf.exashare.com/0.0.0.0
|
||||
address=/ysm.yahoo.com/0.0.0.0
|
||||
address=/zads.care2.com/0.0.0.0
|
||||
address=/a.eporner.com/0.0.0.0
|
||||
address=/a.heavy-r.com/0.0.0.0
|
||||
address=/a.killergram-girls.com/0.0.0.0
|
||||
address=/ad.eporner.com/0.0.0.0
|
||||
address=/ad.slutload.com/0.0.0.0
|
||||
address=/ad.thisav.com/0.0.0.0
|
||||
address=/ad.userporn.com/0.0.0.0
|
||||
address=/ads.xxxbunker.com/0.0.0.0
|
||||
address=/affiliates.goodvibes.com/0.0.0.0
|
||||
address=/banner1.pornhost.com/0.0.0.0
|
||||
address=/banners.cams.com/0.0.0.0
|
||||
address=/bob.crazyshit.com/0.0.0.0
|
||||
address=/brcache.madthumbs.com/0.0.0.0
|
||||
address=/creatives.cliphunter.com/0.0.0.0
|
||||
address=/creatives.pichunter.com/0.0.0.0
|
||||
address=/dot.eporner.com/0.0.0.0
|
||||
address=/dot2.eporner.com/0.0.0.0
|
||||
address=/exit.macandbumble.com/0.0.0.0
|
||||
address=/lw1.cdmediaworld.com/0.0.0.0
|
||||
address=/m2.xhamster.com/0.0.0.0
|
||||
address=/partners.xhamster.com/0.0.0.0
|
||||
address=/pr-static.empflix.com/0.0.0.0
|
||||
address=/pr-static.tnaflix.com/0.0.0.0
|
||||
address=/r.radikal.ru/0.0.0.0
|
||||
address=/rev.fapdu.com/0.0.0.0
|
||||
address=/site.img.4tube.com/0.0.0.0
|
||||
address=/static.kinghost.com/0.0.0.0
|
||||
address=/x.eroticity.net/0.0.0.0
|
||||
address=/x.vipergirls.to/0.0.0.0
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user