package lean: add packages

This commit is contained in:
CN_SZTL 2019-11-08 22:57:22 +08:00
parent bea1279eec
commit 53db75023e
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
743 changed files with 104705 additions and 0 deletions

View 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)))

View 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)))

Binary file not shown.

View 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

View 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

View 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

View 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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View 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

View File

@ -0,0 +1,15 @@
! ------------------------------ ADByby 自定义过滤语法简表---------------------------------
! -------------- 规则基于abp规则并进行了字符替换部分的扩展-----------------------------
! ABP规则请参考https://adblockplus.org/zh_CN/filters下面为大致摘要
! "!" 为行注释符,注释行以该符号起始作为一行注释语义,用于规则描述
! "*" 为字符通配符能够匹配0长度或任意长度的字符串该通配符不能与正则语法混用。
! "^" 为分隔符,可以是除了字母、数字或者 _ - . % 之外的任何字符。
! "|" 为管线符号,来表示地址的最前端或最末端
! "||" 为子域通配符,方便匹配主域名下的所有子域。
! "~" 为排除标识符,通配符能过滤大多数广告,但同时存在误杀, 可以通过排除标识符修正误杀链接。
! "##" 为元素选择器标识符后面跟需要隐藏元素的CSS样式例如 #ad_id .ad_class
!! 元素隐藏暂不支持全局规则和排除规则
!! 字符替换扩展
! 文本替换选择器标识符,后面跟需要替换的文本数据,格式:$s@模式字符串@替换后的文本@
! 支持通配符*和?
! -------------------------------------------------------------------------------------------

View File

View 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---------

File diff suppressed because one or more lines are too long

View 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

View File

Binary file not shown.

Binary file not shown.

109
package/lean/amule/Makefile Normal file
View 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))

View 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))

View 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

View 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;
}

View 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

File diff suppressed because it is too large Load Diff

View 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

View 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;
}

View 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

View File

@ -0,0 +1,8 @@
mkdir -pv m4
libtoolize
aclocal
aclocal -I m4
automake --add-missing --copy
autoconf

View 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

View 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

View 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))

View 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
}

View 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))

View 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

View File

@ -0,0 +1,7 @@
#!/bin/sh
sleep 15
mv /etc/15-automount /etc/hotplug.d/block/

View 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))

View 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

View 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
View 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

View 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

View 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))

View 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)))

View 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

View 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)))

View 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'

File diff suppressed because it is too large Load Diff

View 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"

View 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 "$@"

View 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)))

Binary file not shown.

View 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

View File

@ -0,0 +1,9 @@
default 0
timeout 0
fallback 0
title Synology DSM
map --mem (pd)/dsm.iso (hd32)
map --hook
chainloader (hd32)

Binary file not shown.

View 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)))

View 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))

File diff suppressed because it is too large Load Diff

View 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

View 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
}

File diff suppressed because it is too large Load Diff

View 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

View File

@ -0,0 +1,9 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "Domain Lists Settings"
msgstr "域名列表设置"
msgid "Domain Lists"
msgstr "域名列表"

View File

@ -0,0 +1,3 @@
update:
./gen-china-routes.sh > ../files/etc/ipset/china
./gen-gfwlist.sh > ../files/etc/gfwlist/china-banned

File diff suppressed because it is too large Load Diff

View 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

View 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

View 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;
}

View 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))

View 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

View 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)))

View 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))

View 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))

View 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

View File

@ -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

View 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

View File

@ -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>

View 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 "日"

View File

@ -0,0 +1,3 @@
config basic
option enable '0'

View 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
}

View File

@ -0,0 +1 @@
/etc/init.d/mia restart

View 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

View 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

View File

@ -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

View 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 Hostfiltering 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 ModeThe slowest, the best effects"))
o:value("1", translate("Plus + ModeFilter 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

View File

@ -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>

View 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 Hostfiltering 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 ModeThe slowest, the best effects"
msgstr "全局模式(最慢, 效果最好)"
msgid "Plus + ModeFilter 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 "优先从官方网站更新规则"

View 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'

View 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}
}

View File

@ -0,0 +1,3 @@
#!/bin/sh
sleep 40 && /etc/init.d/adbyby restart

View 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

View File

@ -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

View 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

View File

@ -0,0 +1,3 @@
weixin.qq.com
qpic.cn
imtt.qq.com

View File

@ -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

View 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

View 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

View File

@ -0,0 +1 @@
2.2.2.2

View 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