diff --git a/package/lean/UnblockNeteaseMusic-Go/Makefile b/package/lean/UnblockNeteaseMusic-Go/Makefile deleted file mode 100644 index 3eb5a35c4..000000000 --- a/package/lean/UnblockNeteaseMusic-Go/Makefile +++ /dev/null @@ -1,76 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=UnblockNeteaseMusic-Go -PKG_VERSION:=0.2.13 -PKG_RELEASE:=5 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/cnsilvan/UnblockNeteaseMusic.git -PKG_SOURCE_VERSION:=2479ad75f8fbfe7cfdd7d86ebe330013dcb6a372 -PKG_HASH:=72b28cc22bfdfb1810e50c307ce00cbc124d55a7d10fe7c510227dfe1efa76bc -PKG_MAINTAINER:=Silvan - -PKG_SOURCE_SUBDIR:=$(PKG_NAME) -PKG_SOURCE:=$(PKG_SOURCE_SUBDIR)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 -PKG_USE_MIPS16:=0 - -GO_PKG:=github.com/cnsilvan/UnblockNeteaseMusic -GO_PKG_LDFLAGS:=-s -w -GO_PKG_LDFLAGS_X:= \ - $(GO_PKG)/version.Version=$(PKG_VERSION) - -include $(INCLUDE_DIR)/package.mk -include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk - -define Package/$(PKG_NAME)/config -config $(PKG_NAME)_INCLUDE_GOPROXY - bool "Compiling with GOPROXY proxy" - default y - -endef - -ifeq ($(CONFIG_$(PKG_NAME)_INCLUDE_GOPROXY),y) -export GO111MODULE=on -export GOPROXY=https://goproxy.io -#export GOPROXY=https://mirrors.aliyun.com/goproxy/ -endif - -define Package/$(PKG_NAME) - SECTION:=net - CATEGORY:=Network - TITLE:=Revive Netease Cloud Music (Golang) - DEPENDS:=$(GO_ARCH_DEPENDS) - URL:=https://github.com/cnsilvan/UnblockNeteaseMusic - SUBMENU:=NeteaseMusic -endef - -define Package/$(PKG_NAME)/description -Revive Netease Cloud Music (Golang) -endef - -define Build/Prepare - tar -zxvf $(DL_DIR)/$(PKG_SOURCE) -C $(BUILD_DIR)/$(PKG_NAME) --strip-components 1 -endef - -define Build/Configure - -endef - -define Build/Compile - $(eval GO_PKG_BUILD_PKG:=$(GO_PKG)) - $(call GoPackage/Build/Configure) - $(call GoPackage/Build/Compile) -endef - -define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/UnblockNeteaseMusic $(1)/usr/bin/UnblockNeteaseMusic - $(INSTALL_DIR) $(1)/usr/share/UnblockNeteaseMusicGo - $(CP) ./files/* $(1)/usr/share/UnblockNeteaseMusicGo/ -endef -$(eval $(call GoBinPackage,$(PKG_NAME))) -$(eval $(call BuildPackage,$(PKG_NAME))) \ No newline at end of file diff --git a/package/lean/UnblockNeteaseMusic-Go/files/ca.crt b/package/lean/UnblockNeteaseMusic-Go/files/ca.crt deleted file mode 100644 index bea3f7b04..000000000 --- a/package/lean/UnblockNeteaseMusic-Go/files/ca.crt +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICIjCCAaigAwIBAgIUTc9HQDej5hLCQ74u436a5yE4MDcwCgYIKoZIzj0EAwMw -SDELMAkGA1UEBhMCQ04xJDAiBgNVBAMMG1VuYmxvY2tOZXRlYXNlTXVzaWMgUm9v -dCBDQTETMBEGA1UECgwKMTcxNTE3MzMyOTAeFw0yMTA0MzAwNzIzMDJaFw0yNjA0 -MjkwNzIzMDJaMEgxCzAJBgNVBAYTAkNOMSQwIgYDVQQDDBtVbmJsb2NrTmV0ZWFz -ZU11c2ljIFJvb3QgQ0ExEzARBgNVBAoMCjE3MTUxNzMzMjkwdjAQBgcqhkjOPQIB -BgUrgQQAIgNiAASIyI7lYgGlq49qWtY1O2/XNDeowYf7W/Z+l7C14bphxAJ9jSDo -tLwbFPWy5VPENc0rB0/yeHA2z7LU67POL2gGgp+17y7scLkkBk3Q7wRMETrtP44Z -ITBstZ0wzVyyQEKjUzBRMB0GA1UdDgQWBBQ2F7+t8cPHJaWuCD8RHTSdLugKYzAf -BgNVHSMEGDAWgBQ2F7+t8cPHJaWuCD8RHTSdLugKYzAPBgNVHRMBAf8EBTADAQH/ -MAoGCCqGSM49BAMDA2gAMGUCMQDqaRX2e01e0U+f0As/KUKDhmG5ElkK5CjYK9jk -kXLNGFXJLGta6CDvjtMLBPc20qkCMBvDs+JnJKVBEJNZVsRBBs+v2YxNU/u2aYJa -dMwXuFveSDWOS7mBeRztX/geEggiSw== ------END CERTIFICATE----- diff --git a/package/lean/UnblockNeteaseMusic-Go/files/server.crt b/package/lean/UnblockNeteaseMusic-Go/files/server.crt deleted file mode 100644 index 73e2fa6ec..000000000 --- a/package/lean/UnblockNeteaseMusic-Go/files/server.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICRDCCAcqgAwIBAgIUeVqRrT2mHG5Mc8JD+ErphiAmlgkwCgYIKoZIzj0EAwMw -SDELMAkGA1UEBhMCQ04xJDAiBgNVBAMMG1VuYmxvY2tOZXRlYXNlTXVzaWMgUm9v -dCBDQTETMBEGA1UECgwKMTcxNTE3MzMyOTAeFw0yMTA0MzAwNzIzMDJaFw0yMjA0 -MzAwNzIzMDJaMHsxCzAJBgNVBAYTAkNOMREwDwYDVQQHDAhIYW5nemhvdTEsMCoG -A1UECgwjTmV0RWFzZSAoSGFuZ3pob3UpIE5ldHdvcmsgQ28uLCBMdGQxETAPBgNV -BAsMCElUIERlcHQuMRgwFgYDVQQDDA8qLm11c2ljLjE2My5jb20wdjAQBgcqhkjO -PQIBBgUrgQQAIgNiAAQTPyU9RQ1pAFMLmozi+c4pEC1rrxAlPGwO9Em+qV+a5qLW -gQjjsJeabMqJ/UQ7hDtdKVxWuXiAjMiDcXwL63I71MZKPTAEKXdCmNQwb4kXvRUn -oOR4r7BMxEpGlf0CULWjQjBAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMCkGA1UdEQQi -MCCCDW11c2ljLjE2My5jb22CDyoubXVzaWMuMTYzLmNvbTAKBggqhkjOPQQDAwNo -ADBlAjEAs5bdgnNP/DiK919RiWscC0kyuY0ugG1C8m8F2Yod4MI3oTyrkVcag21o -NSzm802uAjBoPuKEbjjFP4ics0BQdICiVd6WCVAsE69FnlmqRteAJqxvdKGpVLi+ -Qi3arfomrrc= ------END CERTIFICATE----- diff --git a/package/lean/UnblockNeteaseMusic-Go/files/server.key b/package/lean/UnblockNeteaseMusic-Go/files/server.key deleted file mode 100644 index 6bd769c11..000000000 --- a/package/lean/UnblockNeteaseMusic-Go/files/server.key +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN EC PARAMETERS----- -BgUrgQQAIg== ------END EC PARAMETERS----- ------BEGIN EC PRIVATE KEY----- -MIGkAgEBBDBfW3twxGaQmMzP9p0/UU5EvHFVCbBw4piVFJ+pm/uFY6CKZkC5LGMa -Uc9vn/KiewGgBwYFK4EEACKhZANiAAQTPyU9RQ1pAFMLmozi+c4pEC1rrxAlPGwO -9Em+qV+a5qLWgQjjsJeabMqJ/UQ7hDtdKVxWuXiAjMiDcXwL63I71MZKPTAEKXdC -mNQwb4kXvRUnoOR4r7BMxEpGlf0CULU= ------END EC PRIVATE KEY----- \ No newline at end of file diff --git a/package/lean/UnblockNeteaseMusic/Makefile b/package/lean/UnblockNeteaseMusic/Makefile deleted file mode 100644 index f51f25017..000000000 --- a/package/lean/UnblockNeteaseMusic/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# SPDX-Identifier-License: GPL-3.0-only -# -# Copyright (C) 2021 ImmortalWrt.org - -include $(TOPDIR)/rules.mk - -PKG_NAME:=UnblockNeteaseMusic -PKG_BASE_VERSION:=0.27.0-rc.4 -PKG_RELEASE:=$(AUTORELEASE) - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/UnblockNeteaseMusic/server.git -PKG_SOURCE_DATE:=2021-12-21 -PKG_SOURCE_VERSION:=54b7a60b07a85dea3b52a5d9f1ada456aba12609 -PKG_MIRROR_HASH:=1865a01021ced0a57bcb1f0d63ef72b0e517771602ad7e4026d18222713a77ac - -PKG_VERSION:=$(PKG_BASE_VERSION)-$(PKG_SOURCE_DATE)-$(call version_abbrev,$(PKG_SOURCE_VERSION)) - -PKG_LICENSE:=LGPL-3.0-only -PKG_LICENSE_FILE:=LICENSE -PKG_MAINTAINER:=Tianling Shen - -include $(INCLUDE_DIR)/package.mk - -define Package/UnblockNeteaseMusic - SECTION:=multimedia - CATEGORY:=Multimedia - TITLE:=Revive Netease Cloud Music (NodeJS) - URL:=https://github.com/nondanee/UnblockNeteaseMusic - DEPENDS:=+node - PKGARCH:=all -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) - xzcat $(DL_DIR)/$(PKG_SOURCE) | $(TAR) -C $(PKG_BUILD_DIR) $(TAR_OPTIONS) -endef - -define Build/Configure - echo -e $(PKG_BASE_VERSION) > $(PKG_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/core_ver - echo -e $(PKG_SOURCE_VERSION) > $(PKG_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/local_ver -endef - -define Build/Compile -endef - -define Package/UnblockNeteaseMusic/install - $(INSTALL_DIR) $(1)/usr/share/UnblockNeteaseMusic - $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/* $(1)/usr/share/UnblockNeteaseMusic -endef - -$(eval $(call BuildPackage,UnblockNeteaseMusic)) diff --git a/package/lean/aliyundrive-webdav/Makefile b/package/lean/aliyundrive-webdav/Makefile deleted file mode 100644 index c885e538b..000000000 --- a/package/lean/aliyundrive-webdav/Makefile +++ /dev/null @@ -1,76 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=aliyundrive-webdav -PKG_VERSION:=1.2.3 -PKG_RELEASE:=$(AUTORELEASE) - -PKG_LICENSE:=MIT -PKG_MAINTAINER:=messense - -PKG_LIBC:=musl -ifeq ($(ARCH),arm) - PKG_LIBC:=musleabi - - ARM_CPU_FEATURES:=$(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE)))) - ifneq ($(filter $(ARM_CPU_FEATURES),vfp vfpv2),) - PKG_LIBC:=musleabihf - endif -endif - -PKG_ARCH=$(ARCH) -ifeq ($(ARCH),i386) - PKG_ARCH:=i686 -endif - -PKG_SOURCE:=aliyundrive-webdav-v$(PKG_VERSION).$(PKG_ARCH)-unknown-linux-$(PKG_LIBC).tar.gz -PKG_SOURCE_URL:=https://github.com/messense/aliyundrive-webdav/releases/download/v$(PKG_VERSION)/ -PKG_HASH:=skip - -include $(INCLUDE_DIR)/package.mk - -define Package/aliyundrive-webdav - SECTION:=multimedia - CATEGORY:=Multimedia - TITLE:=WebDAV server for AliyunDrive - URL:=https://github.com/messense/aliyundrive-webdav -endef - -define Package/aliyundrive-webdav/description - WebDAV server for AliyunDrive. -endef - -define Package/aliyundrive-webdav/conffiles -/etc/config/aliyundrive-webdav -endef - -define Download/sha256sum - FILE:=$(PKG_SOURCE).sha256 - URL_FILE:=$(FILE) - URL:=$(PKG_SOURCE_URL) - HASH:=skip -endef -$(eval $(call Download,sha256sum)) - -define Build/Prepare - mv $(DL_DIR)/$(PKG_SOURCE).sha256 . - cp $(DL_DIR)/$(PKG_SOURCE) . - shasum -a 256 -c $(PKG_SOURCE).sha256 - rm $(PKG_SOURCE).sha256 $(PKG_SOURCE) - - tar -C $(PKG_BUILD_DIR)/ -zxf $(DL_DIR)/$(PKG_SOURCE) -endef - -define Build/Compile - echo "aliyundrive-webdav using precompiled binary." -endef - -define Package/aliyundrive-webdav/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/aliyundrive-webdav $(1)/usr/bin/aliyundrive-webdav - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/aliyundrive-webdav.init $(1)/etc/init.d/aliyundrive-webdav - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_CONF) ./files/aliyundrive-webdav.config $(1)/etc/config/aliyundrive-webdav -endef - -$(eval $(call BuildPackage,aliyundrive-webdav)) diff --git a/package/lean/aliyundrive-webdav/files/aliyundrive-webdav.config b/package/lean/aliyundrive-webdav/files/aliyundrive-webdav.config deleted file mode 100644 index 6c27837e2..000000000 --- a/package/lean/aliyundrive-webdav/files/aliyundrive-webdav.config +++ /dev/null @@ -1,17 +0,0 @@ -config server - option enable '0' - option debug '0' - option refresh_token '' - option host '0.0.0.0' - option port '8080' - option auth_user '' - option auth_password '' - option read_buffer_size '10485760' - option cache_size '1000' - option cache_ttl '600' - option root '/' - option no_trash '0' - option domain_id '' - option read_only '0' - option tls_cert '' - option tls_key '' diff --git a/package/lean/aliyundrive-webdav/files/aliyundrive-webdav.init b/package/lean/aliyundrive-webdav/files/aliyundrive-webdav.init deleted file mode 100755 index 8b1b1a107..000000000 --- a/package/lean/aliyundrive-webdav/files/aliyundrive-webdav.init +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/sh /etc/rc.common - -USE_PROCD=1 - -START=99 -STOP=15 - -NAME=aliyundrive-webdav - -uci_get_by_type() { - local ret=$(uci get $NAME.@$1[0].$2 2>/dev/null) - echo ${ret:=$3} -} - -start_service() { - local enable=$(uci_get_by_type server enable) - case "$enable" in - 1|on|true|yes|enabled) - local refresh_token=$(uci_get_by_type server refresh_token) - local auth_user=$(uci_get_by_type server auth_user) - local auth_password=$(uci_get_by_type server auth_password) - local read_buf_size=$(uci_get_by_type server read_buffer_size 10485760) - local cache_size=$(uci_get_by_type server cache_size 1000) - local cache_ttl=$(uci_get_by_type server cache_ttl 600) - local host=$(uci_get_by_type server host 127.0.0.1) - local port=$(uci_get_by_type server port 8080) - local root=$(uci_get_by_type server root /) - local domain_id=$(uci_get_by_type server domain_id) - local tls_cert=$(uci_get_by_type server tls_cert) - local tls_key=$(uci_get_by_type server tls_key) - - local extra_options="-I" - - if [[ ! -z "$domain_id" ]]; then - extra_options="$extra_options --domain-id $domain_id" - else - case "$(uci_get_by_type server no_trash 0)" in - 1|on|true|yes|enabled) - extra_options="$extra_options --no-trash" - ;; - *) ;; - esac - - case "$(uci_get_by_type server read_only 0)" in - 1|on|true|yes|enabled) - extra_options="$extra_options --read-only" - ;; - *) ;; - esac - fi - - if [[ ! -z "$tls_cert" && ! -z "$tls_key" ]]; then - extra_options="$extra_options --tls-cert $tls_cert --tls-key $tls_key" - fi - - procd_open_instance - procd_set_param command /bin/sh -c "/usr/bin/$NAME $extra_options --host $host --port $port --root $root -S $read_buf_size --cache-size $cache_size --cache-ttl $cache_ttl --workdir /var/run/$NAME >>/var/log/$NAME.log 2>&1" - procd_set_param pidfile /var/run/$NAME.pid - procd_set_param env REFRESH_TOKEN="$refresh_token" - [[ ! -z "$auth_user" ]] && procd_append_param env WEBDAV_AUTH_USER="$auth_user" - [[ ! -z "$auth_password" ]] && procd_append_param env WEBDAV_AUTH_PASSWORD="$auth_password" - case $(uci_get_by_type server debug) in - 1|on|true|yes|enabled) - procd_append_param env RUST_LOG="aliyundrive_webdav=debug" ;; - *) ;; - esac - procd_close_instance ;; - *) - stop_service ;; - esac -} - -service_triggers() { - procd_add_reload_trigger "aliyundrive-webdav" -} diff --git a/package/lean/amule/Makefile b/package/lean/amule/Makefile deleted file mode 100644 index 83299bd03..000000000 --- a/package/lean/amule/Makefile +++ /dev/null @@ -1,110 +0,0 @@ -# -# 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:=2.3.2 -PKG_RELEASE:=3 -PKG_REV=4b87b20 - - -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_MIRROR_HASH:=1575d31d68f9df881100c9e30f18fc7dec8493a8ae20787f41b6ef23604a78ff - -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 n -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)) diff --git a/package/lean/amule/patches/001-amule-dlp.patch b/package/lean/amule/patches/001-amule-dlp.patch deleted file mode 100644 index 5a37a27a6..000000000 --- a/package/lean/amule/patches/001-amule-dlp.patch +++ /dev/null @@ -1,1548 +0,0 @@ -diff -Naur a/configure.ac b/configure.ac ---- a/configure.ac 2016-10-06 19:01:54.000000000 +0800 -+++ b/configure.ac 2016-10-14 12:33:51.660347919 +0800 -@@ -89,6 +89,14 @@ - KDE_CONFIG_OPTIONS - QT_CONFIG_OPTIONS - -+#Dynamic Leecher Protection - Bill Lee -+AC_ARG_ENABLE( -+ [dlp], -+ [AS_HELP_STRING( -+ [--disable-dlp], -+ [Do not compile DLP.])], -+ [ENABLE_DLP=$enableval], [ENABLE_DLP=yes]) -+ - # Default is yes, because they're most likely compatible. - # However, this is only used when cross-compiling. - AC_ARG_WITH( -@@ -457,6 +465,8 @@ - AM_CONDITIONAL(GENERATE_FLEX_HEADER, test x$HAVE_FLEX_EXTENDED = xyes) - AM_CONDITIONAL(INSTALL_SKINS, test MULE_IS_ENABLED_ANY([monolithic, amule-gui])) - AM_CONDITIONAL(PLASMAMULE, test MULE_IS_ENABLED([plasmamule])) -+#Dynamic Leech Protection - Bill Lee -+AM_CONDITIONAL(ENABLE_DLP, test x$ENABLE_DLP = xyes) - - AM_CONDITIONAL([COMPILE_LIB_COMMON], [test MULE_IS_ENABLED_ANY([monolithic, amule-daemon, amulecmd, webserver, amule-gui, fileview])]) - AM_CONDITIONAL([COMPILE_LIB_EC], [test MULE_IS_ENABLED_ANY([monolithic, amule-daemon, amulecmd, webserver, amule-gui])]) -diff -Naur a/po/zh_CN.po b/po/zh_CN.po ---- a/po/zh_CN.po 2016-10-06 19:01:54.000000000 +0800 -+++ b/po/zh_CN.po 2016-10-14 12:33:51.662347964 +0800 -@@ -5,6 +5,7 @@ - # xiaoqiao <29551030@qq.com>, 2007, 2008. - # JimHu , 2009. - # Xiaoqiao , 2010. -+# Bill Lee , 2010, 2011. - # Yi Qi ,2011. - # - msgid "" -@@ -467,6 +468,12 @@ - msgid "http://kademlia.scs.cs.nyu.edu\n" - msgstr "http://kademlia.scs.cs.nyu.edu\n" - -+msgid "\nDynamic Leech Protection\n" -+msgstr "\n动态吸血保护\n" -+ -+msgid " Homepage: http://amule-dlp.googlecode.com \n" -+msgstr " 主页:http://amule-dlp.googlecode.com \n" -+ - #: src/amuleDlg.cpp:512 src/KadDlg.cpp:193 src/PartFile.cpp:918 - #: src/PartFile.cpp:926 src/PrefsUnifiedDlg.cpp:629 - #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 -@@ -3856,6 +3863,9 @@ - msgid "Click on this button to update the nodes list from URL ..." - msgstr "按此更新节点列表自网址..." - -+msgid "DLP Info" -+msgstr "动态反吸血信息" -+ - #: src/muuli_wdr.cpp:2649 - msgid "Nodes (0)" - msgstr "节点(0)" -@@ -7682,6 +7692,48 @@ - #~ "\n" - #~ "此外,浏览器设定已经被重设为系统默认值。如有必要,请重新配置浏览器选项。\n" - -+msgid "Dynamic Leecher Protection Options" -+msgstr "动态反吸血保护选项" -+ -+msgid "Reload antiLeech" -+msgstr "重新装载 antiLeech" -+ -+msgid "Check bad modstring" -+msgstr "根据 Mod 名字检测吸血驴" -+ -+msgid "Check bad username" -+msgstr "根据用户名字检测吸血驴" -+ -+msgid "Check bad userhash" -+msgstr "检测错误的用户哈希值" -+ -+msgid "Check bad hello tag" -+msgstr "根据握手标签(HelloTag)检测吸血驴" -+ -+msgid "Check bad info tag" -+msgstr "根据 InfoTag 检测吸血驴" -+ -+msgid "Check ghost mod" -+msgstr "检测幽灵客户端(Ghost Mod)" -+ -+#~ msgid "Ban VeryCD easyMule2" -+#~ msgstr "屏蔽 VeryCD easyMule2" -+ -+msgid "Ban eMule VeryCD mod(Please consider carefully whether to use)" -+msgstr "屏蔽 VeryCD eMule(请慎重考虑是否使用)" -+ -+#~ msgid "Ban VeryCD miniMule" -+#~ msgstr "屏蔽 VeryCD miniMule" -+ -+msgid "Trying to load antiLeech..." -+msgstr "尝试加载 antiLeech..." -+ -+msgid "No antiLeech available!" -+msgstr "未找到 antiLeech!" -+ -+msgid "Succeed loading antiLeech! Version: %d" -+msgstr "成功加载 antiLeech! 版本: %d" -+ - #~ msgid "Fetching status..." - #~ msgstr "正在获取状态..." - -diff -Naur a/src/BaseClient.cpp b/src/BaseClient.cpp ---- a/src/BaseClient.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/BaseClient.cpp 2016-10-14 12:35:45.793953665 +0800 -@@ -1,4 +1,3 @@ --// - // This file is part of the aMule Project. - // - // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) -@@ -23,6 +22,11 @@ - // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - // - -+//Dynamic Leech Protect - Bill Lee -+#ifdef AMULE_DLP -+#include "DLP.h" -+#endif -+ - #include - #include - #include -@@ -83,10 +87,8 @@ - #include "kademlia/kademlia/UDPFirewallTester.h" - #include "kademlia/routing/RoutingZone.h" - -- - //#define __PACKET_DEBUG__ - -- - // some client testing variables - static wxString crash_name = wxT("[Invalid User Name]"); - static wxString empty_name = wxT("[Empty User Name]"); -@@ -290,6 +292,10 @@ - m_cMessagesReceived = 0; - m_cMessagesSent = 0; - -+ #ifdef AMULE_DLP -+ dlp_nonofficialopcodes = false; //Dynamic Leecher Protect -+ #endif -+ - } - - -@@ -635,6 +641,15 @@ - m_fSharedDirectories = 1; - dwEmuleTags |= 4; - break; -+ //Bill Lee start -+ //Dynamic Leecher Protection -+ #ifdef AMULE_DLP -+ default: //if tag isn't those above, it may be used by leecher. -+ theDLP->CheckHelloTag(this, temptag.GetNameID()); -+ dlp_nonofficialopcodes = true; //to detect Ghost Mod -+ break; -+ //Bill Lee end -+ #endif - } - } - -@@ -717,6 +732,11 @@ - Kademlia::CKademlia::Bootstrap(wxUINT32_SWAP_ALWAYS(GetIP()), GetKadPort()); - } - -+ //Dynamic Leecher Protection - Bill Lee -+ #ifdef AMULE_DLP -+ theDLP->DLPCheck(this); -+ #endif -+ - return bIsMule; - } - -@@ -966,6 +986,14 @@ - % GetClientFullInfo() - ); - -+ //Bill Lee start -+ //Dynamic Leecher Protection -+ #ifdef AMULE_DLP -+ theDLP->CheckInfoTag(this, temptag.GetNameID()); -+ dlp_nonofficialopcodes = true; -+ #endif -+ //Bill Lee end -+ - break; - } - } -@@ -1003,6 +1031,11 @@ - m_byInfopacketsReceived |= IP_EMULEPROTPACK; - } - -+ //Dynamic Leecher Protection - Added by Bill Lee -+ #ifdef AMULE_DLP -+ theDLP->DLPCheck(this); -+ #endif -+ - return (protocol_version == 0xFF); // This was a OS_Info? - } - -@@ -2302,7 +2335,7 @@ - } - - --#ifdef __DEBUG__ -+#if defined (__DEBUG__) || defined (AMULE_DLP) - wxString CUpDownClient::GetClientFullInfo() - { - if (m_clientVerString.IsEmpty()) { -diff -Naur a/src/CString_wx.h b/src/CString_wx.h ---- a/src/CString_wx.h 1970-01-01 08:00:00.000000000 +0800 -+++ b/src/CString_wx.h 2016-10-14 12:33:51.664348010 +0800 -@@ -0,0 +1,59 @@ -+/** -+ * Author: Bill Lee -+ * License: GNU GPL -+ */ -+//--------------------- -+#ifndef CSTRING_WX_H -+#define CSTRING_WX_H -+ -+//#include -+#include -+ -+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); } -+ CString Mid(size_t first, size_t count = wxSTRING_MAXLEN)const{ -+ return wxString::Mid(first, count); -+ } -+}; -+#endif -diff -Naur a/src/DLP.cpp b/src/DLP.cpp ---- a/src/DLP.cpp 1970-01-01 08:00:00.000000000 +0800 -+++ b/src/DLP.cpp 2016-10-14 12:33:51.664348010 +0800 -@@ -0,0 +1,190 @@ -+// Copyright (C) 2011 Bill Lee -+// -+// This program is free software; you can redistribute it and/or modify -+// it under the terms of the GNU General Public License as published by -+// the Free Software Foundation; either version 2 of the License, or -+// (at your option) any later version. -+// -+// This program is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+// -+// You should have received a copy of the GNU General Public License -+// along with this program; if not, write to the Free Software -+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA -+// -+#include "Logger.h" -+ -+#include "DLP.h" -+#include "antiLeech.h" -+#include /* Needed for wxDynamicLibrary */ -+ -+#include "DLPPref.h" -+#include "Preferences.h" // Needed for CPreferences -+#include "amule.h" // Needed for theApp -+ -+#include /* Needed for wxStandardPaths */ -+ -+#define PRE_CHECK(tag) if( (!c->IsBanned()) && antiLeech && (thePrefs::GetDLPCheckMask() & tagn) ) -+ -+void DLP::CheckHelloTag(CUpDownClient* c, UINT tagn){ -+ PRE_CHECK(PF_HELLOTAG){ -+ const wxChar* dlp_result = antiLeech->DLPCheckHelloTag(tagn); -+ if(dlp_result != NULL) { -+ wxString ret; -+ ret.Printf(_("[HelloTag %s] %s"), dlp_result, c->GetClientFullInfo().c_str()); -+ //ret.Printf(_("[HelloTag %s] %s"), dlp_result, c->GetClientShortInfo().c_str()); -+ c->Ban(); -+ theApp->AddDLPMessageLine(ret); -+ } -+ } -+} -+ -+void DLP::CheckInfoTag(CUpDownClient* c, UINT tagn){ -+ PRE_CHECK(PF_INFOTAG){ -+ const wxChar* dlp_result = antiLeech->DLPCheckInfoTag(tagn); -+ if(dlp_result != NULL) { -+ wxString ret; -+ ret.Printf(_("[InfoTag %s] %s"), dlp_result, c->GetClientFullInfo().c_str()); -+ //ret.Printf(_("[InfoTag %s] %s"), dlp_result, c->GetClientShortInfo().c_str()); -+ c->Ban(); -+ theApp->AddDLPMessageLine(ret); -+ } -+ } -+} -+ -+bool DLP::DLPCheck(CUpDownClient* c){ -+ const wxChar* tmp = NULL; -+ wxString ret; -+ -+ unsigned int prefs = thePrefs::GetDLPCheckMask(); -+ -+ CString modver(c->GetClientModString()); -+ CString clientver(c->GetClientVerString()); -+ CString uname(c->GetUserName()); -+ CString uhash(wxString(c->GetUserHash().EncodeSTL().c_str(), wxConvUTF8)); -+ -+ //CheckGhostMod -+ if(prefs & PF_GHOSTMOD) { -+ if(c->HasNonOfficialOpCodes() && (modver.IsEmpty())) { -+ ret = _("GhostMod"); -+ tmp = ret.c_str(); //char pointer -+ } -+ } -+ -+ // Check bad modstring -+ if ((prefs & PF_MODSTRING) && (tmp == NULL)) { -+ if((tmp = antiLeech->DLPCheckModstring_Soft(modver.c_str(), clientver.c_str())) == NULL) -+ tmp = antiLeech->DLPCheckModstring_Hard(modver.c_str(), clientver.c_str()); -+ } -+ /* -+ if ((prefs & PF_USERHASH) && (tmp == NULL)) { -+ // not finished -+ } -+ */ -+ // Check bad username -+ if ((prefs & PF_USERNAME) && (tmp == NULL)) { -+ if ((tmp = antiLeech->DLPCheckNameAndHashAndMod(uname, uhash, modver)) == NULL){ -+ if( (tmp = antiLeech->DLPCheckUsername_Hard(uname.c_str())) == NULL ) -+ tmp = antiLeech->DLPCheckUsername_Soft(uname.c_str()); -+ } -+ } -+ -+ -+ // Check VeryCD eMule -+ if ((prefs & PF_VERYCDEMULE) && (tmp == NULL)) { -+ if(modver.Find(wxT("VeryCD")) != wxNOT_FOUND){ -+ ret = _("VeryCD Mod"); -+ tmp = ret.c_str(); -+ } -+ } -+ -+ if (tmp != NULL) { -+ ret = tmp; -+ wxString wxInfo; -+ wxInfo.Printf(wxT("[%s] %s"), ret.c_str(), c->GetClientFullInfo().c_str()); -+ //wxInfo.Printf(wxT("[%s] %s"), ret.c_str(), c->GetClientShortInfo().c_str()); -+ c->Ban(); -+ theApp->AddDLPMessageLine(wxInfo); -+ return true; -+ } -+ -+ return false; -+ -+} -+ -+int DLP::ReloadAntiLeech(){ -+ //Unloading -+ AddLogLineN( _("Checking if there is a antiLeech working...")); -+ if(antiLeechLib.IsLoaded()){ -+ Destoryer fn = (Destoryer)(antiLeechLib.GetSymbol( wxT("destoryAntiLeechInstant"))); -+ wxASSERT(fn); -+ AddLogLineN( _("Unload previous antiLeech...")); -+ fn(antiLeech); -+ antiLeech = NULL; -+ antiLeechLib.Unload(); -+ } -+ else -+ AddLogLineN( _("No working antiLeech exists.")); -+ //Get lib's location -+ wxStandardPathsBase &spb(wxStandardPaths::Get()); -+#ifdef __WXMSW__ -+ wxString dataDir(spb.GetPluginsDir()); -+#elif defined(__WXMAC__) -+ wxString dataDir(spb.GetDataDir()); -+#else -+ wxString dataDir(spb.GetDataDir().BeforeLast(wxT('/')) + wxT("/amule")); -+#endif -+ wxString localName = wxDynamicLibrary::CanonicalizeName(wxT("antiLeech")); -+ wxString systemwideFile(JoinPaths(dataDir, localName)); -+ //wxString userFile(theApp->ConfigDir + localName); -+ wxString userFile(thePrefs::GetConfigDir() + localName); -+ wxString fallbackFile(wxT("antiLeech")); -+ //Try to load lib; -+ AddLogLineN( _("Trying to load antiLeech...")); -+ if( !LoadFrom(userFile) ){ -+ if( !LoadFrom(systemwideFile) ){ -+ if( !LoadFrom(fallbackFile) ){ -+ AddLogLineC( _("No antiLeech available!")); -+ return 1; //Not found -+ } -+ } -+ } -+ //Searching symbol "createAntiLeechInstant" -+ Creator fn = (Creator)(antiLeechLib.GetSymbol( wxT("createAntiLeechInstant") )); -+ if(!fn){ -+ antiLeechLib.Unload(); -+ AddLogLineC( _("antiLeech found, but it seems not to be a valid antiLeech!")); -+ return 2; //Found, but isn't antiLeech -+ } -+ //Try to create antiLeech -+ antiLeech = fn(); -+ if(antiLeech){ -+ wxString logline; -+ logline.Printf(_("Succeed loading antiLeech! Version: %d"), antiLeech->GetDLPVersion()); -+ AddLogLineC( logline); -+ return 0; -+ } -+ //else -+ antiLeechLib.Unload(); -+ AddLogLineC( _("FAIL! An error occur when setting up antiLeech.")); -+ return 3; //Fail to create antiLeech instant -+ -+} -+ -+DLP::~DLP(){ -+ if(antiLeechLib.IsLoaded()){ -+ Destoryer fn = (Destoryer)(antiLeechLib.GetSymbol( wxT("destoryAntiLeechInstant"))); -+ wxASSERT(fn); -+ AddLogLineN( _("Unload previous antiLeech...")); -+ fn(antiLeech); -+ //antiLeech = NULL; -+ //antiLeechLib.Unload(); -+ } -+} -+ -+bool DLP::LoadFrom(wxString& file){ -+ antiLeechLib.Load(file); -+ return antiLeechLib.IsLoaded(); -+} -diff -Naur a/src/DLP.h b/src/DLP.h ---- a/src/DLP.h 1970-01-01 08:00:00.000000000 +0800 -+++ b/src/DLP.h 2016-10-14 12:33:51.665348032 +0800 -@@ -0,0 +1,45 @@ -+// Copyright (C) 2011 Bill Lee -+// -+// This program is free software; you can redistribute it and/or modify -+// it under the terms of the GNU General Public License as published by -+// the Free Software Foundation; either version 2 of the License, or -+// (at your option) any later version. -+// -+// This program is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+// -+// You should have received a copy of the GNU General Public License -+// along with this program; if not, write to the Free Software -+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA -+// -+ -+class IantiLeech; //forward declaretion -+ -+#include "updownclient.h" // Needed for CUpDownClient -+#include "antiLeech_wx.h" -+ -+#include -+ -+class DLP -+{ -+public: -+ DLP() : antiLeech(NULL) { ReloadAntiLeech(); } -+ ~DLP(); -+ -+ void CheckHelloTag(CUpDownClient*, UINT tagnumber); -+ void CheckInfoTag(CUpDownClient*, UINT tagnumber); -+ bool DLPCheck(CUpDownClient*); -+ -+ int ReloadAntiLeech(); -+ -+private: -+ typedef IantiLeech* (*Creator)(); -+ typedef int (*Destoryer)(IantiLeech*); -+ -+ wxDynamicLibrary antiLeechLib; -+ IantiLeech* antiLeech; -+ -+ bool LoadFrom(wxString& file); -+}; -diff -Naur a/src/DLPPref.h b/src/DLPPref.h ---- a/src/DLPPref.h 1970-01-01 08:00:00.000000000 +0800 -+++ b/src/DLPPref.h 2016-10-14 12:33:51.665348032 +0800 -@@ -0,0 +1,15 @@ -+#ifndef ANTILEECH_AMULE_H -+#define ANTILEECH_AMULE_H -+ -+/* Define DLPCheck prefs arg */ -+#define PF_MODSTRING 0x1 -+#define PF_USERHASH 0x2 -+#define PF_USERNAME 0x4 -+#define PF_HELLOTAG 0x8 -+#define PF_INFOTAG 0x10 -+#define PF_VERYCDEMULE 0x20 -+//#define PF_EASYMULE 0x40 -+//#define PF_MINIMULE 0x80 -+#define PF_GHOSTMOD 0x100 -+ -+#endif -diff -Naur a/src/DownloadQueue.cpp b/src/DownloadQueue.cpp ---- a/src/DownloadQueue.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/DownloadQueue.cpp 2016-10-14 12:33:51.665348032 +0800 -@@ -623,6 +623,15 @@ - return; - } - -+ //Dynamic Leecher Protect - Bill Lee -+ #ifdef AMULE_DLP -+ if ( source->IsBanned() ){ -+ source->Safe_Delete(); -+ return; -+ } -+ #endif -+ //Bill Lee end -+ - // Filter sources which are known to be dead/useless - if ( theApp->clientlist->IsDeadSource( source ) || sender->IsDeadSource(source) ) { - source->Safe_Delete(); -diff -Naur a/src/ExternalConn.cpp b/src/ExternalConn.cpp ---- a/src/ExternalConn.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/ExternalConn.cpp 2016-10-14 12:33:51.666348055 +0800 -@@ -57,6 +57,9 @@ - #include "kademlia/kademlia/UDPFirewallTester.h" - #include "Statistics.h" - -+#ifdef AMULE_DLP -+#include "DLP.h" -+#endif - - //-------------------- File_Encoder -------------------- - -@@ -1384,6 +1387,15 @@ - } - } - break; -+ //Dynamic Leech Protect - Bill Lee -+ #ifdef AMULE_DLP -+ case EC_OP_ANTILEECH_RELOAD: -+ if( theDLP->ReloadAntiLeech() ) -+ response = new CECPacket(EC_OP_FAILED); -+ else -+ response = new CECPacket(EC_OP_NOOP); -+ break; -+ #endif - // - // Status requests - // -diff -Naur a/src/Logger.cpp b/src/Logger.cpp ---- a/src/Logger.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/Logger.cpp 2016-10-14 12:40:22.827322335 +0800 -@@ -297,6 +297,8 @@ - } - - CLogger theLogger; -+//Dynamic Leech Protect - persmule -+CLogger dlpLogger; - - BEGIN_EVENT_TABLE(CLogger, wxEvtHandler) - EVT_MULE_LOGGING(CLogger::OnLoggingEvent) -diff -Naur a/src/Logger.h b/src/Logger.h ---- a/src/Logger.h 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/Logger.h 2016-10-14 12:41:14.694519856 +0800 -@@ -310,6 +310,8 @@ - }; - - extern CLogger theLogger; -+//Dynamic Leech Protect - persmule -+extern CLogger dlpLogger; - - /** - * This class forwards log-lines from wxWidgets to CLogger. -@@ -456,5 +458,8 @@ - #define AddLogLineF(string) theLogger.AddLogLine(__TFILE__, __LINE__, false, logStandard, string, false, false) - #endif - -+//Dynamic Leech Protect - persmule -+#define DlpAddLogLine(string) dlpLogger.AddLogLine(__TFILE__, __LINE__, false, logStandard, string, false, false) -+ - #endif - // File_checked_for_headers -diff -Naur a/src/LoggerConsole.cpp b/src/LoggerConsole.cpp ---- a/src/LoggerConsole.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/LoggerConsole.cpp 2016-10-14 12:41:54.805446813 +0800 -@@ -85,6 +85,8 @@ - } - - CLogger theLogger; -+//Dynamic Leech Protect - persmule -+CLogger dlpLogger; - - BEGIN_EVENT_TABLE(CLogger, wxEvtHandler) - END_EVENT_TABLE() -diff -Naur a/src/Makefile.am b/src/Makefile.am ---- a/src/Makefile.am 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/Makefile.am 2016-10-14 12:33:51.666348055 +0800 -@@ -179,6 +179,13 @@ - kademlia/routing/RoutingZone.cpp - - -+#Dynamic Leecher Protection - Bill Lee -+if ENABLE_DLP -+core_sources += \ -+ DLP.cpp -+AM_CPPFLAGS += -DAMULE_DLP -+endif -+ - gui_sources = \ - amule-gui.cpp \ - amuleDlg.cpp \ -diff -Naur a/src/Preferences.cpp b/src/Preferences.cpp ---- a/src/Preferences.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/Preferences.cpp 2016-10-14 12:33:51.667348078 +0800 -@@ -51,6 +51,11 @@ - - #include "UserEvents.h" - -+#ifdef AMULE_DLP -+#include "DLPPref.h" -+#include "antiLeech.h" -+#endif -+ - #ifndef AMULE_DAEMON - #include - #include "muuli_wdr.h" -@@ -344,6 +349,19 @@ - wxWindow* m_widget; - }; - -+/* Dynamic Leecher Protection */ -+#ifdef AMULE_DLP -+bool CPreferences::s_DLPCheckModString; -+bool CPreferences::s_DLPCheckUsername; -+bool CPreferences::s_DLPCheckUserHash; -+bool CPreferences::s_DLPCheckHelloTag; -+bool CPreferences::s_DLPCheckInfoTag; -+//bool CPreferences::s_DLPCheckEasyMule; -+bool CPreferences::s_DLPCheckVeryCDMod; -+//bool CPreferences::s_DLPCheckminiMule; //Added by Bill Lee -+bool CPreferences::s_DLPCheckGhostMod; -+unsigned int CPreferences::s_DLPCheckMask; -+#endif - - /** Cfg class for wxStrings. */ - class Cfg_Str : public Cfg_Tmpl -@@ -953,6 +971,11 @@ - s_userhash[5] = 14; - s_userhash[14] = 111; - -+ // Dynamic Leecher Protection -+ #ifdef AMULE_DLP -+ CalcDLPCheckMask(); -+ #endif -+ - #ifndef CLIENT_GUI - LoadPreferences(); - ReloadSharedFolders(); -@@ -1062,6 +1085,20 @@ - NewCfgItem( IDC_NETWORKKAD, (new Cfg_Bool( wxT("/eMule/ConnectToKad"), s_ConnectToKad, true )) ); - NewCfgItem( IDC_NETWORKED2K, ( new Cfg_Bool( wxT("/eMule/ConnectToED2K"), s_ConnectToED2K, true ) )); - -+ /** -+ * Dynamic Leecher Protection -+ **/ -+ #ifdef AMULE_DLP -+ NewCfgItem(IDC_CHECKMODSTRING, (new Cfg_Bool( wxT("/DLP/CheckModString"), s_DLPCheckModString, true ))); -+ NewCfgItem(IDC_CHECKUSERNAME, (new Cfg_Bool( wxT("/DLP/CheckUsername"), s_DLPCheckUsername, true ))); -+ NewCfgItem(IDC_CHECKUSERHASH, (new Cfg_Bool( wxT("/DLP/CheckUserHash"), s_DLPCheckUserHash, true ))); -+ NewCfgItem(IDC_CHECKHELLOTAG, (new Cfg_Bool( wxT("/DLP/CheckHelloTag"), s_DLPCheckHelloTag, true ))); -+ NewCfgItem(IDC_CHECKINFOTAG, (new Cfg_Bool( wxT("/DLP/CheckInfoTag"), s_DLPCheckInfoTag, true ))); -+ //NewCfgItem(IDC_CHECKEASYMULE, (new Cfg_Bool( wxT("/DLP/CheckEasyMule"), s_DLPCheckEasyMule, true ))); //Modified by Bill Lee -+ NewCfgItem(IDC_CHECKVERYCDMOD, (new Cfg_Bool( wxT("/DLP/CheckVeryCDMod"), s_DLPCheckVeryCDMod, false ))); -+ //NewCfgItem(IDC_CHECKMINIMULE, (new Cfg_Bool( wxT("/DLP/CheckminiMule"), s_DLPCheckminiMule, true))); //Added by Bill Lee -+ NewCfgItem(IDC_CHECKGHOSTMOD, (new Cfg_Bool( wxT("/DLP/CheckGhostMod"), s_DLPCheckGhostMod, true ))); //Added by Bill Lee. -+ #endif - - /** - * Files -@@ -1471,6 +1508,11 @@ - } - - SavePreferences(); -+ -+ // Dynamic Leecher Protection -+ #ifdef AMULE_DLP -+ CalcDLPCheckMask(); -+ #endif - - #ifndef CLIENT_GUI - CTextFile sdirfile; -@@ -1483,6 +1525,21 @@ - #endif - } - -+#ifdef AMULE_DLP -+void CPreferences::CalcDLPCheckMask() -+{ -+ s_DLPCheckMask = 0; -+ if (s_DLPCheckModString) s_DLPCheckMask |= PF_MODSTRING; -+ if (s_DLPCheckUsername) s_DLPCheckMask |= PF_USERNAME; -+ if (s_DLPCheckUserHash) s_DLPCheckMask |= PF_USERHASH; -+ if (s_DLPCheckHelloTag) s_DLPCheckMask |= PF_HELLOTAG; -+ if (s_DLPCheckInfoTag) s_DLPCheckMask |= PF_INFOTAG; -+ if (s_DLPCheckGhostMod) s_DLPCheckMask |= PF_GHOSTMOD; -+ //if (s_DLPCheckEasyMule) s_DLPCheckMask |= PF_EASYMULE; -+ if (s_DLPCheckVeryCDMod) s_DLPCheckMask |= PF_VERYCDEMULE; -+ //if (s_DLPCheckminiMule) s_DLPCheckMask |= PF_MINIMULE; //Added by Bill Lee -+} -+#endif - - CPreferences::~CPreferences() - { -diff -Naur a/src/Preferences.h b/src/Preferences.h ---- a/src/Preferences.h 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/Preferences.h 2016-10-14 12:33:51.667348078 +0800 -@@ -579,6 +579,11 @@ - // Sleep - static bool GetPreventSleepWhileDownloading() { return s_preventSleepWhileDownloading; } - static void SetPreventSleepWhileDownloading(bool status) { s_preventSleepWhileDownloading = status; } -+ -+ // Dynamic Leecher Protection -+ #ifdef AMULE_DLP -+ static unsigned int GetDLPCheckMask() {return s_DLPCheckMask;} -+ #endif - protected: - static int32 GetRecommendedMaxConnections(); - -@@ -599,6 +604,11 @@ - private: - void LoadPreferences(); - void SavePreferences(); -+ -+ // Dynamic Leecher Protection -+ #ifdef AMULE_DLP -+ void CalcDLPCheckMask(); -+ #endif - - protected: - static wxString s_configDir; -@@ -813,6 +823,20 @@ - // Stats server - static wxString s_StatsServerName; - static wxString s_StatsServerURL; -+ -+ // Dynamic Leecher Protection -+ #ifdef AMULE_DLP -+ static bool s_DLPCheckModString; -+ static bool s_DLPCheckUsername; -+ static bool s_DLPCheckUserHash; -+ static bool s_DLPCheckHelloTag; -+ static bool s_DLPCheckInfoTag; -+ //static bool s_DLPCheckEasyMule; -+ static bool s_DLPCheckVeryCDMod; -+ //static bool s_DLPCheckminiMule; //Added by Bill Lee -+ static bool s_DLPCheckGhostMod; //Added by Bill Lee -+ static unsigned int s_DLPCheckMask; -+ #endif - }; - - -diff -Naur a/src/PrefsUnifiedDlg.cpp b/src/PrefsUnifiedDlg.cpp ---- a/src/PrefsUnifiedDlg.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/PrefsUnifiedDlg.cpp 2016-10-14 12:33:51.668348101 +0800 -@@ -53,6 +53,11 @@ - #include "UserEvents.h" - #include "PlatformSpecific.h" // Needed for PLATFORMSPECIFIC_CAN_PREVENT_SLEEP_MODE - -+//Dynamic Leech Protect - Bill Lee -+#ifdef AMULE_DLP -+#include "DLP.h" -+#endif -+ - BEGIN_EVENT_TABLE(PrefsUnifiedDlg,wxDialog) - // Events - #define USEREVENTS_EVENT(ID, NAME, VARS) \ -@@ -114,6 +119,11 @@ - EVT_CHOICE(IDC_COLORSELECTOR, PrefsUnifiedDlg::OnColorCategorySelected) - EVT_LIST_ITEM_SELECTED(ID_PREFSLISTCTRL,PrefsUnifiedDlg::OnPrefsPageChange) - -+ //Dynamic Leech Protect - Bill Lee -+ #ifdef AMULE_DLP -+ EVT_BUTTON(IDC_RELOADANTILEECH, PrefsUnifiedDlg::OnButtonReloadAntiLeech) -+ #endif -+ - EVT_INIT_DIALOG(PrefsUnifiedDlg::OnInitDialog) - - EVT_COMMAND_SCROLL(IDC_SLIDER, PrefsUnifiedDlg::OnScrollBarChange) -@@ -187,6 +197,9 @@ - { wxTRANSLATE("Online Signature"), PreferencesOnlineSigTab, 21 }, - { wxTRANSLATE("Advanced"), PreferencesaMuleTweaksTab, 12 }, - { wxTRANSLATE("Events"), PreferencesEventsTab, 5 } -+#ifdef AMULE_DLP -+ ,{ wxTRANSLATE("DLP"), PreferencesDLPTab, 5} -+#endif - #ifdef __DEBUG__ - ,{ wxTRANSLATE("Debugging"), PreferencesDebug, 25 } - #endif -@@ -1076,6 +1089,21 @@ - theApp->ipfilter->Update( CastChild( IDC_IPFILTERURL, wxTextCtrl )->GetValue() ); - } - -+//Bill Lee -+#ifdef AMULE_DLP -+void PrefsUnifiedDlg::OnButtonReloadAntiLeech(wxCommandEvent& WXUNUSED(event)){ -+ #ifndef CLIENT_GUI -+ if( theDLP->ReloadAntiLeech() ) -+ wxMessageBox(_("Cannot load antiLeech!"), _("Message"), wxOK | wxICON_EXCLAMATION, this); -+ else -+ wxMessageBox(_("Succeed loading antiLeech!"), _("Message"), wxOK | wxICON_INFORMATION, this); -+ #else -+ AddLogLineN(_("Reload antiLeech from remote GUI has not been implemented.")); -+ wxMessageBox(_("Sorry, it has not been implemented yet!")); -+ #endif -+} -+#endif -+ - - void PrefsUnifiedDlg::OnPrefsPageChange(wxListEvent& event) - { -diff -Naur a/src/PrefsUnifiedDlg.h b/src/PrefsUnifiedDlg.h ---- a/src/PrefsUnifiedDlg.h 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/PrefsUnifiedDlg.h 2016-10-14 12:33:51.668348101 +0800 -@@ -124,6 +124,9 @@ - void OnUserEventSelected(wxListEvent& event); - void OnLanguageChoice(wxCommandEvent &event); - void CreateEventPanels(const int idx, const wxString& vars, wxWindow* parent); -+ #ifdef AMULE_DLP -+ void OnButtonReloadAntiLeech(wxCommandEvent &event); /* Dynamic Leech Protect - Bill Lee */ -+ #endif - - void OnInitDialog( wxInitDialogEvent& evt ); - -diff -Naur a/src/ServerWnd.cpp b/src/ServerWnd.cpp ---- a/src/ServerWnd.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/ServerWnd.cpp 2016-10-14 12:33:51.668348101 +0800 -@@ -46,6 +46,7 @@ - EVT_BUTTON(ID_BTN_RESET, CServerWnd::OnBnClickedResetLog) - EVT_BUTTON(ID_BTN_RESET_SERVER, CServerWnd::OnBnClickedResetServerLog) - EVT_SPLITTER_SASH_POS_CHANGED(ID_SRV_SPLITTER,CServerWnd::OnSashPositionChanged) -+ EVT_BUTTON(ID_BTN_RESET_DLP, CServerWnd::OnBnClickedResetDLPLog) - END_EVENT_TABLE() - - -@@ -152,6 +153,11 @@ - theApp->GetServerLog(true); // Reset it - } - -+void CServerWnd::OnBnClickedResetDLPLog(wxCommandEvent& WXUNUSED(evt)) -+{ -+ wxTextCtrl* cv= CastByID( ID_DLPINFO, this, wxTextCtrl ); -+ cv->Clear(); -+} - - void CServerWnd::UpdateED2KInfo() - { -diff -Naur a/src/ServerWnd.h b/src/ServerWnd.h ---- a/src/ServerWnd.h 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/ServerWnd.h 2016-10-14 12:33:51.668348101 +0800 -@@ -50,6 +50,7 @@ - void OnBnClickedUpdateservermetfromurl(wxCommandEvent& evt); - void OnBnClickedResetLog(wxCommandEvent& evt); - void OnBnClickedResetServerLog(wxCommandEvent& evt); -+ void OnBnClickedResetDLPLog(wxCommandEvent& evt); - - DECLARE_EVENT_TABLE() - }; -diff -Naur a/src/TextClient.cpp b/src/TextClient.cpp ---- a/src/TextClient.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/TextClient.cpp 2016-10-14 12:33:51.669348124 +0800 -@@ -73,6 +73,7 @@ - CMD_ID_RELOAD_SHARED, - CMD_ID_RELOAD_IPFILTER_LOCAL, - CMD_ID_RELOAD_IPFILTER_NET, -+ CMD_ID_RELOAD_ANTILEECH, /* Only used internally - Dynamic Leech Protect - Bill Lee */ - CMD_ID_SET_IPFILTER_ON, - CMD_ID_SET_IPFILTER_OFF, - CMD_ID_SET_IPFILTER_CLIENTS_ON, -@@ -106,7 +107,6 @@ - CMD_ID_DOWNLOAD, - // IDs for deprecated commands - CMD_ID_SET_IPFILTER -- - }; - - // method to create a SearchFile -@@ -240,6 +240,12 @@ - case CMD_ID_DISCONNECT_KAD: - request_list.push_back(new CECPacket(EC_OP_KAD_STOP)); - break; -+ //Dynamic Leech Protect - Bill Lee -+ #ifdef AMULE_DLP -+ case CMD_ID_RELOAD_ANTILEECH: -+ request_list.push_back(new CECPacket(EC_OP_ANTILEECH_RELOAD)); -+ break; -+ #endif - - case CMD_ID_RELOAD_SHARED: - request_list.push_back(new CECPacket(EC_OP_SHAREDFILES_RELOAD)); -@@ -903,6 +909,9 @@ - tmp2->AddCommand(wxT("Net"), CMD_ID_RELOAD_IPFILTER_NET, wxTRANSLATE("Update IP filtering table from URL."), - wxTRANSLATE("If URL is omitted the URL from the preferences is used."), CMD_PARAM_OPTIONAL); - -+ #ifdef AMULE_DLP -+ tmp->AddCommand(wxT("AntiLeech"), CMD_ID_RELOAD_ANTILEECH, wxTRANSLATE("Reloads antiLeech."), wxEmptyString, CMD_PARAM_NEVER); //Bill Lee -+ #endif - tmp = m_commands.AddCommand(wxT("Connect"), CMD_ID_CONNECT, wxTRANSLATE("Connect to the network."), - wxTRANSLATE("This will connect to all networks that are enabled in Preferences.\nYou may also optionally specify a server address in IP:Port form, to connect to\nthat server only. The IP must be a dotted decimal IPv4 address,\nor a resolvable DNS name."), CMD_PARAM_OPTIONAL); - tmp->AddCommand(wxT("ED2K"), CMD_ID_CONNECT_ED2K, wxTRANSLATE("Connect to eD2k only."), wxEmptyString, CMD_PARAM_NEVER); -diff -Naur a/src/UploadQueue.cpp b/src/UploadQueue.cpp ---- a/src/UploadQueue.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/UploadQueue.cpp 2016-10-14 12:33:51.669348124 +0800 -@@ -390,6 +390,11 @@ - return; - } - -+ //Dynamic Leecher Protect - Bill Lee -+ #if defined AMULE_DLP && defined __DEBUG__ -+ AddLogLineN(client->GetClientFullInfo()); -+ #endif -+ - client->AddAskedCount(); - client->SetLastUpRequest(); - -diff -Naur a/src/amule-gui.cpp b/src/amule-gui.cpp ---- a/src/amule-gui.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/amule-gui.cpp 2016-10-14 12:33:51.669348124 +0800 -@@ -333,6 +333,21 @@ - return CamuleApp::GetLog(reset); - } - -+#ifdef AMULE_DLP -+void CamuleGuiApp::AddDLPMessageLine(const wxString &msg) -+{ -+ wxString message; -+ time_t rawtime; -+ struct tm *timeinfo; -+ char tbuf[101]; -+ time(&rawtime); -+ timeinfo = localtime(&rawtime); -+ strftime(tbuf, 100, "%Y-%m-%d %X: ", timeinfo); -+ -+ message = wxString(tbuf, wxConvUTF8) + msg; -+ amuledlg->AddDLPMessageLine(message); -+} -+#endif - - wxString CamuleGuiApp::GetServerLog(bool reset) - { -diff -Naur a/src/amule.cpp b/src/amule.cpp ---- a/src/amule.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/amule.cpp 2016-10-14 12:33:51.670348146 +0800 -@@ -23,7 +23,6 @@ - // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - // - -- - #include "amule.h" // Interface declarations. - - #include -@@ -90,6 +89,11 @@ - #include // Do_not_auto_remove - #endif - -+//Dynamic Leecher Protection - Bill Lee -+#ifdef AMULE_DLP -+#include "DLP.h" -+#endif -+ - #ifndef AMULE_DAEMON - #ifdef __WXMAC__ - #include // Do_not_auto_remove -@@ -520,6 +524,11 @@ - uploadqueue = new CUploadQueue(); - ipfilter = new CIPFilter(); - -+ //DLP initialization - Bill Lee -+ #ifdef AMULE_DLP -+ theDLP = new DLP(); -+ #endif -+ - // Creates all needed listening sockets - wxString msg; - if (!ReinitializeNetwork(&msg)) { -@@ -2062,3 +2071,8 @@ - DEFINE_LOCAL_EVENT_TYPE(wxEVT_CORE_UDP_DNS_DONE) - DEFINE_LOCAL_EVENT_TYPE(wxEVT_CORE_SERVER_DNS_DONE) - // File_checked_for_headers -+ -+//Dynamic Leech Protect - Bill Lee -+#ifdef AMULE_DLP -+DLP* theDLP; -+#endif -diff -Naur a/src/amule.h b/src/amule.h ---- a/src/amule.h 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/amule.h 2016-10-14 12:42:22.776093625 +0800 -@@ -135,6 +135,8 @@ - bool m_geometryEnabled; - wxString m_geometryString; - wxString m_logFile; -+ //Dynamic Leech Protect - persmule -+ wxString m_dlplogFile; - wxString m_appName; - wxString m_PidFile; - -@@ -410,6 +412,7 @@ - wxString GetLog(bool reset = false); - wxString GetServerLog(bool reset = false); - void AddServerMessageLine(wxString &msg); -+ void AddDLPMessageLine(const wxString &msg); - DECLARE_EVENT_TABLE() - }; - -@@ -573,6 +576,8 @@ - - virtual int ShowAlert(wxString msg, wxString title, int flags); - -+ void AddDLPMessageLine(const wxString &msg); -+ - DECLARE_EVENT_TABLE() - }; - -@@ -583,3 +588,8 @@ - - #endif // AMULE_H - // File_checked_for_headers -+ -+#ifdef AMULE_DLP -+class DLP; //forward declaretion -+extern DLP* theDLP; -+#endif -diff -Naur a/src/amuleAppCommon.cpp b/src/amuleAppCommon.cpp ---- a/src/amuleAppCommon.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/amuleAppCommon.cpp 2016-10-14 12:44:08.981552362 +0800 -@@ -65,6 +65,9 @@ - m_configFile = wxT("amule.conf"); - m_logFile = wxT("logfile"); - -+ //Dynamic Leech Protect - persmule -+ m_dlplogFile = wxT("antileech.log"); -+ - if (IsDaemon()) { - m_appName = wxT("aMuleD"); - } else { -@@ -443,6 +446,21 @@ - return false; - } - -+ // Open the dlp log file - Dynamic Leech Protect - persmule -+ if (!IsRemoteGui()){ -+ CPath dlplogfileName = CPath(thePrefs::GetConfigDir() + m_dlplogFile); -+ if (dlplogfileName.FileExists()) { -+ CPath::BackupFile(dlplogfileName, wxT(".bak")); -+ } -+ -+ if (!dlpLogger.OpenLogfile(dlplogfileName.GetRaw())) { -+ // use std err as last resolt to indicate problem -+ fputs("ERROR: unable to open dlp log file\n", stderr); -+ // failure to open log is serious problem -+ return false; -+ } -+ } -+ - // Load Preferences - CPreferences::BuildItemList(thePrefs::GetConfigDir()); - CPreferences::LoadAllItems( wxConfigBase::Get() ); -diff -Naur a/src/amuleDlg.cpp b/src/amuleDlg.cpp ---- a/src/amuleDlg.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/amuleDlg.cpp 2016-10-14 12:44:47.637582726 +0800 -@@ -315,7 +315,7 @@ - wxNotebook* logs_notebook = CastChild( ID_SRVLOG_NOTEBOOK, wxNotebook); - wxNotebook* networks_notebook = CastChild( ID_NETNOTEBOOK, wxNotebook); - -- wxASSERT(logs_notebook->GetPageCount() == 4); -+ wxASSERT(logs_notebook->GetPageCount() == 5); - wxASSERT(networks_notebook->GetPageCount() == 2); - - for (uint32 i = 0; i < logs_notebook->GetPageCount(); ++i) { -@@ -507,7 +507,12 @@ - _("Part of aMule is based on \n") << - _("Kademlia: Peer-to-peer routing based on the XOR metric.\n") << - _(" Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n") << -- _("http://kademlia.scs.cs.nyu.edu\n"); -+ _("http://kademlia.scs.cs.nyu.edu\n") << -+ _("\nDynamic Leech Protection\n") << -+ _(" Homepage: http://amule-dlp.googlecode.com \n") << -+ _(" Copyright (C) 2002-2007 Xtreme-Mod \n") << -+ _(" Copyright (C) 2009 greensea \n") << -+ _(" Copyright (C) 2009-2011 Bill Lee \n"); - - if (m_is_safe_state) { - wxMessageBox(msg, _("Message"), wxOK | wxICON_INFORMATION, this); -@@ -659,8 +664,24 @@ - } - cv->ShowPosition(cv->GetLastPosition()-1); - } -+ //Dynamic Leech Protect - persmule -+ DlpAddLogLine(msg); - } - -+#ifdef AMULE_DLP -+void CamuleDlg::AddDLPMessageLine(const wxString& msg) /* modified by Bill Lee */ -+{ -+ wxTextCtrl* cv = CastByID( ID_DLPINFO, m_serverwnd, wxTextCtrl ); -+ if(cv) { -+ if (msg.Length() > 500) { -+ cv->AppendText(msg.Left(500) + wxT("\n")); -+ } else { -+ cv->AppendText(msg + wxT("\n")); -+ } -+ cv->ShowPosition(cv->GetLastPosition()-1); -+ } -+} -+#endif - - void CamuleDlg::ShowConnectionState(bool skinChanged) - { -@@ -1456,7 +1477,9 @@ - if (thePrefs::GetNetworkKademlia()) { - logs_notebook->AddPage(m_logpages[3].page, m_logpages[3].name); - } -- -+ -+ logs_notebook->AddPage(m_logpages[4].page, m_logpages[4].name); -+ - // Set the main window. - // If we have both networks active, activate a notebook to select between them. - // If only one is active, show the window directly without a surrounding one tab notebook. -diff -Naur a/src/amuleDlg.h b/src/amuleDlg.h ---- a/src/amuleDlg.h 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/amuleDlg.h 2016-10-14 12:33:51.671348169 +0800 -@@ -114,6 +114,9 @@ - - void AddLogLine(const wxString& line); - void AddServerMessageLine(wxString& message); -+ #ifdef AMULE_DLP -+ void AddDLPMessageLine(const wxString& msg); /* Modified by Bill Lee */ -+ #endif - void ResetLog(int id); - - void ShowUserCount(const wxString& info = wxEmptyString); -@@ -231,7 +234,7 @@ - WX_DECLARE_STRING_HASH_MAP(wxZipEntry*, ZipCatalog); - ZipCatalog cat; - -- PageType m_logpages[4]; -+ PageType m_logpages[5]; - PageType m_networkpages[2]; - - bool LoadGUIPrefs(bool override_pos, bool override_size); -diff -Naur a/src/amuled.cpp b/src/amuled.cpp ---- a/src/amuled.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/amuled.cpp 2016-10-14 12:45:23.506600119 +0800 -@@ -749,4 +749,10 @@ - return 0; // That's neither yes nor no, ok, cancel - } - -+void CamuleDaemonApp::AddDLPMessageLine(const wxString &msg) -+{ -+ //Dynamic Leech Protect - persmule -+ DlpAddLogLine(msg); -+} -+ - // File_checked_for_headers -diff -Naur a/src/antiLeech.h b/src/antiLeech.h ---- a/src/antiLeech.h 1970-01-01 08:00:00.000000000 +0800 -+++ b/src/antiLeech.h 2016-10-14 12:33:51.672348192 +0800 -@@ -0,0 +1,48 @@ -+#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*); -+ -+#endif -diff -Naur a/src/antiLeech_wx.h b/src/antiLeech_wx.h ---- a/src/antiLeech_wx.h 1970-01-01 08:00:00.000000000 +0800 -+++ b/src/antiLeech_wx.h 2016-10-14 12:33:51.672348192 +0800 -@@ -0,0 +1,49 @@ -+#ifndef ANTILEECH_WX_H -+#define ANTILEECH_WX_H -+ -+#include -+#include -+ -+#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 StrCmpI _tcsicmp -+ -+#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) -+ -+LPCTSTR StrStrI(LPCTSTR haystack, LPCTSTR needle); -+//Bill Lee: I think inlining this function make no senses, because it is a very large operation. -+ -+#define _tcsicmp(a, b) wcscasecmp(a, b) -+ -+#endif -diff -Naur a/src/libs/ec/abstracts/ECCodes.abstract b/src/libs/ec/abstracts/ECCodes.abstract ---- a/src/libs/ec/abstracts/ECCodes.abstract 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/libs/ec/abstracts/ECCodes.abstract 2016-10-14 12:33:51.672348192 +0800 -@@ -148,6 +148,8 @@ - - EC_OP_FRIEND 0x57 - -+EC_OP_ANTILEECH_RELOAD 0x80 -+ - [/Section] - - [Section Content] -diff -Naur a/src/libs/ec/cpp/ECCodes.h b/src/libs/ec/cpp/ECCodes.h ---- a/src/libs/ec/cpp/ECCodes.h 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/libs/ec/cpp/ECCodes.h 2016-10-14 12:33:51.673348215 +0800 -@@ -121,7 +121,8 @@ - EC_OP_CLIENT_SWAP_TO_ANOTHER_FILE = 0x54, - EC_OP_SHARED_FILE_SET_COMMENT = 0x55, - EC_OP_SERVER_SET_STATIC_PRIO = 0x56, -- EC_OP_FRIEND = 0x57 -+ EC_OP_FRIEND = 0x57, -+ EC_OP_ANTILEECH_RELOAD = 0x80 - }; - - enum ECTagNames { -@@ -556,6 +557,7 @@ - case 0x55: return wxT("EC_OP_SHARED_FILE_SET_COMMENT"); - case 0x56: return wxT("EC_OP_SERVER_SET_STATIC_PRIO"); - case 0x57: return wxT("EC_OP_FRIEND"); -+ case 0x80 : return wxT("EC_OP_ANTILEECH_RELOAD"); - default: return CFormat(wxT("unknown %d 0x%x")) % arg % arg; - } - } -diff -Naur a/src/libs/ec/java/ECCodes.java b/src/libs/ec/java/ECCodes.java ---- a/src/libs/ec/java/ECCodes.java 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/libs/ec/java/ECCodes.java 2016-10-14 12:33:51.673348215 +0800 -@@ -112,6 +112,7 @@ - public final static byte EC_OP_SHARED_FILE_SET_COMMENT = 0x55; - public final static byte EC_OP_SERVER_SET_STATIC_PRIO = 0x56; - public final static byte EC_OP_FRIEND = 0x57; -+public final static byte EC_OP_ANTILEECH_RELOAD = 0x80 ; - - public final static short EC_TAG_STRING = 0x0000; - public final static short EC_TAG_PASSWD_HASH = 0x0001; -diff -Naur a/src/muuli_wdr.cpp b/src/muuli_wdr.cpp ---- a/src/muuli_wdr.cpp 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/muuli_wdr.cpp 2016-10-14 12:33:51.676348283 +0800 -@@ -1769,6 +1769,51 @@ - return item0; - } - -+#ifdef AMULE_DLP -+wxSizer *PreferencesDLPTab( wxWindow *parent, bool call_fit, bool set_sizer ) -+{ -+ wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL ); -+ -+ wxButton* btnReload = new wxButton( parent, IDC_RELOADANTILEECH, _("Reload antiLeech"), wxDefaultPosition, wxDefaultSize, 0 ); //Bill Lee -+ -+ wxStaticBox *item2 = new wxStaticBox( parent, -1, _("Dynamic Leecher Protection Options") ); -+ wxStaticBoxSizer *item1 = new wxStaticBoxSizer( item2, wxVERTICAL ); -+ -+ wxCheckBox *item4 = new wxCheckBox( parent, IDC_CHECKMODSTRING, _("Check bad modstring"), wxDefaultPosition, wxDefaultSize, 0 ); -+ item1->Add( item4, 0, wxALIGN_CENTER_VERTICAL, 5 ); -+ -+ wxCheckBox *item5 = new wxCheckBox( parent, IDC_CHECKUSERNAME, _("Check bad username"), wxDefaultPosition, wxDefaultSize, 0 ); -+ item1->Add( item5, 0, wxALIGN_CENTER_VERTICAL, 5 ); -+ -+ wxCheckBox *item6 = new wxCheckBox( parent, IDC_CHECKUSERHASH, _("Check bad userhash"), wxDefaultPosition, wxDefaultSize, 0 ); -+ item1->Add( item6, 0, wxALIGN_CENTER_VERTICAL, 5 ); -+ -+ wxCheckBox *item7 = new wxCheckBox( parent, IDC_CHECKHELLOTAG, _("Check bad hello tag"), wxDefaultPosition, wxDefaultSize, 0 ); -+ item1->Add( item7, 0, wxALIGN_CENTER_VERTICAL, 5 ); -+ -+ wxCheckBox *item8 = new wxCheckBox( parent, IDC_CHECKINFOTAG, _("Check bad info tag"), wxDefaultPosition, wxDefaultSize, 0 ); -+ item1->Add( item8, 0, wxALIGN_CENTER_VERTICAL, 5 ); -+ -+ wxCheckBox *item9 = new wxCheckBox( parent, IDC_CHECKGHOSTMOD, _("Check ghost mod"), wxDefaultPosition, wxDefaultSize, 0); -+ item1->Add( item9, 0, wxALIGN_CENTER_VERTICAL, 5 ); -+ -+ wxCheckBox *item10 = new wxCheckBox( parent, IDC_CHECKVERYCDMOD, _("Ban eMule VeryCD mod(Please consider carefully whether to use)"), wxDefaultPosition, wxDefaultSize, 0 ); //Modified by Bill Lee -+ item1->Add( item10, 0, wxALIGN_CENTER_VERTICAL, 5 ); -+ -+ item0->Add( btnReload, 0, wxGROW|wxALL, 5); //Bill Lee -+ item0->Add( item1, 0, wxGROW|wxALL, 5 ); -+ -+ if (set_sizer) -+ { -+ parent->SetSizer( item0 ); -+ if (call_fit) -+ item0->SetSizeHints( parent ); -+ } -+ -+ return item0; -+} -+#endif -+ - wxSizer *PreferencesFilesTab( wxWindow *parent, bool call_fit, bool set_sizer ) - { - wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL ); -@@ -2587,6 +2632,42 @@ - return item0; - } - -+wxSizer *DLPInfoLog( wxWindow *parent, bool call_fit, bool set_sizer ) -+{ -+ wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL ); -+ -+ wxBoxSizer *item1 = new wxBoxSizer( wxHORIZONTAL ); -+ -+ wxStaticBitmap *item2 = new wxStaticBitmap( parent, -1, amuleDlgImages( 3 ), wxDefaultPosition, wxDefaultSize ); -+ item2->SetToolTip( _("Display DLP log") ); -+ item1->Add( item2, 0, wxALIGN_CENTER|wxALL, 5 ); -+ -+ wxStaticText *item3 = new wxStaticText( parent, -1, _("DLP Info"), wxDefaultPosition, wxDefaultSize, 0 ); -+ item1->Add( item3, 0, wxALIGN_CENTER|wxALL, 5 ); -+ -+ item0->Add( item1, 0, wxALIGN_CENTER_VERTICAL, 5 ); -+ -+ wxBoxSizer *item4 = new wxBoxSizer( wxHORIZONTAL ); -+ -+ CMuleTextCtrl *item5 = new CMuleTextCtrl( parent, ID_DLPINFO, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxVSCROLL ); -+ item4->Add( item5, 1, wxGROW|wxALIGN_CENTER_HORIZONTAL, 5 ); -+ -+ wxButton *item6 = new wxButton( parent, ID_BTN_RESET_DLP, _("Reset"), wxDefaultPosition, wxDefaultSize, 0 ); -+ item6->SetToolTip( _("Click this button to reset the log.") ); -+ item4->Add( item6, 0, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); -+ -+ item0->Add( item4, 1, wxGROW|wxALIGN_CENTER_VERTICAL, 5 ); -+ -+ if (set_sizer) -+ { -+ parent->SetSizer( item0 ); -+ if (call_fit) -+ item0->SetSizeHints( parent ); -+ } -+ -+ return item0; -+} -+ - wxSizer *serverListDlgDown( wxWindow *parent, bool call_fit, bool set_sizer ) - { - wxStaticBox *item1 = new wxStaticBox( parent, -1, wxT("") ); -@@ -2602,7 +2683,7 @@ - wxPanel *item4 = new wxPanel( item3, -1 ); - aMuleLog( item4, FALSE ); - item3->AddPage( item4, _("aMule Log") ); -- -+ - wxPanel *item5 = new wxPanel( item3, -1 ); - ServerInfoLog( item5, FALSE ); - item3->AddPage( item5, _("Server Info") ); -@@ -2614,6 +2695,10 @@ - wxPanel *item7 = new wxPanel( item3, -1 ); - Kad_Info( item7, FALSE ); - item3->AddPage( item7, _("Kad Info") ); -+ -+ wxPanel *item8 = new wxPanel( item3, -1); -+ DLPInfoLog( item8, FALSE); -+ item3->AddPage(item8, _("DLP Info")); - - item0->Add( item2, 1, wxGROW|wxALIGN_CENTER_VERTICAL, 5 ); - -diff -Naur a/src/muuli_wdr.h b/src/muuli_wdr.h ---- a/src/muuli_wdr.h 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/muuli_wdr.h 2016-10-14 12:33:51.676348283 +0800 -@@ -335,6 +335,10 @@ - #define ID_BTN_RESET_SERVER 10240 - wxSizer *ServerInfoLog( wxWindow *parent, bool call_fit = TRUE, bool set_sizer = TRUE ); - -+#define ID_DLPINFO 22001 -+#define ID_BTN_RESET_DLP 22002 -+wxSizer *DLPInfoLog( wxWindow *parent, bool call_fit = TRUE, bool set_sizer = TRUE ); -+ - #define ID_LOGVIEW 10241 - #define ID_BTN_RESET 10242 - wxSizer *aMuleLog( wxWindow *parent, bool call_fit = TRUE, bool set_sizer = TRUE ); -@@ -424,6 +428,21 @@ - #define ID_DEBUGCATS 10307 - wxSizer *PreferencesDebug( wxWindow *parent, bool call_fit = TRUE, bool set_sizer = TRUE ); - -+/* Dynamic Leecher Protection */ -+#define IDC_CHECKMODSTRING 11001 -+#define IDC_CHECKUSERNAME 11002 -+#define IDC_CHECKUSERHASH 11003 -+#define IDC_CHECKHELLOTAG 11004 -+#define IDC_CHECKINFOTAG 11005 -+#define IDC_CHECKEASYMULE 11006 -+#define IDC_CHECKVERYCDMOD 11007 -+#define IDC_CHECKMINIMULE 11008 -+#define IDC_CHECKGHOSTMOD 11009 -+#ifdef AMULE_DLP -+#define IDC_RELOADANTILEECH 11010 //Bill Lee -+wxSizer *PreferencesDLPTab( wxWindow *parent, bool call_fit = TRUE, bool set_sizer = TRUE ); -+#endif -+ - extern wxSizer *IDC_CURJOB; - #define IDC_CONV_PB_LABEL 10308 - #define IDC_CONV_PROZENT 10309 -diff -Naur a/src/updownclient.h b/src/updownclient.h ---- a/src/updownclient.h 2016-10-06 19:01:54.000000000 +0800 -+++ b/src/updownclient.h 2016-10-14 12:37:03.224728226 +0800 -@@ -408,7 +408,13 @@ - bool GetSentCancelTransfer() const { return m_fSentCancelTransfer; } - void SetSentCancelTransfer(bool bVal) { m_fSentCancelTransfer = bVal; } - -- DEBUG_ONLY( wxString GetClientFullInfo(); ) -+#if defined (__DEBUG__) || defined (AMULE_DLP) -+ /* -+ * This function is essential for dlp to produce ban log. -+ * So I decide to retain it when dlp is enabled. -+ */ -+ wxString GetClientFullInfo(); -+#endif - wxString GetClientShortInfo(); - - const wxString& GetClientOSInfo() const { return m_sClientOSInfo; } -@@ -581,7 +587,10 @@ - bool ShouldReceiveCryptUDPPackets() const; - - bool HasDisabledSharedFiles() const { return m_fNoViewSharedFiles; } -- -+ #ifdef AMULE_DLP -+ bool HasNonOfficialOpCodes() const { return dlp_nonofficialopcodes; } //Dynamic Leecher Protection - Bill Lee -+ #endif -+ - private: - - CClientCredits *credits; -@@ -842,6 +851,10 @@ - #ifdef __DEBUG__ - wxString connection_reason; - #endif -+ -+ #ifdef AMULE_DLP -+ bool dlp_nonofficialopcodes; //Dynamic Leecher Protect - Bill Lee -+ #endif - }; - - diff --git a/package/lean/amule/patches/003_enable_upnp_cross_compile.patch b/package/lean/amule/patches/003_enable_upnp_cross_compile.patch deleted file mode 100644 index 462e490c0..000000000 --- a/package/lean/amule/patches/003_enable_upnp_cross_compile.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -Naur a/m4/libupnp.m4 b/m4/libupnp.m4 ---- a/m4/libupnp.m4 2016-10-06 19:01:54.000000000 +0800 -+++ b/m4/libupnp.m4 2016-10-11 07:36:39.198318574 +0800 -@@ -52,7 +52,6 @@ - [export PKG_CONFIG_PATH=$withval/lib/pkgconfig]) - - dnl Check for libupnp >= MIN_LIBUPNP_VERSION -- AS_IF([test $cross_compiling = no], [ - AC_MSG_CHECKING([for libupnp version >= MIN_LIBUPNP_VERSION]) - AS_IF([test -n "$PKG_CONFIG"], [ - AS_IF([$PKG_CONFIG libupnp --exists], [ -@@ -79,11 +78,6 @@ - ]) - AC_MSG_RESULT([$result$resultstr]) - libupnp_error="libupnp >= MIN_LIBUPNP_VERSION not found$resultstr" -- ], [ --dnl Currently cross-compilation with libupnp is not supported. -- result=no -- libupnp_error="cross compiling" -- ]) - - dnl Execute the right action. - AS_IF([test ${result:-no} = yes], [$2], [$3]) diff --git a/package/lean/amule/patches/004_file_name_conversion.patch b/package/lean/amule/patches/004_file_name_conversion.patch deleted file mode 100644 index 2c511d0ce..000000000 --- a/package/lean/amule/patches/004_file_name_conversion.patch +++ /dev/null @@ -1,78 +0,0 @@ -diff --git a/src/amule.h b/src/amule.h -index f25702f..240c02d 100644 ---- a/src/amule.h -+++ b/src/amule.h -@@ -553,6 +553,13 @@ class CamuleDaemonApp : public CamuleApp - int OnExit(); - - virtual int InitGui(bool geometry_enable, wxString &geometry_string); -+ // The GTK wxApps sets its file name conversion properly -+ // in wxApp::Initialize(), while wxAppConsole::Initialize() -+ // does not, leaving wxConvFile being set to wxConvLibc. File -+ // name conversion should be set otherwise amuled will abort to -+ // handle non-ASCII file names which monolithic amule can handle. -+ // This function are overrided to perform this. -+ virtual bool Initialize(int& argc_, wxChar **argv_); - - #ifdef AMULED_APPTRAITS - struct sigaction m_oldSignalChildAction; -diff --git a/src/amuled.cpp b/src/amuled.cpp -index 486da59..86e1ff8 100644 ---- a/src/amuled.cpp -+++ b/src/amuled.cpp -@@ -704,6 +704,41 @@ int CamuleDaemonApp::InitGui(bool ,wxString &) - return 0; - } - -+bool CamuleDaemonApp::Initialize(int& argc_, wxChar **argv_) -+{ -+ if ( !wxAppConsole::Initialize(argc_, argv_) ) { -+ return false; -+ } -+ -+#ifdef __UNIX__ -+ wxString encName; -+#if wxUSE_INTL -+ // if a non default locale is set, -+ // assume that the user wants his -+ // filenames in this locale too -+ encName = wxLocale::GetSystemEncodingName().Upper(); -+ -+ // But don't consider ASCII in this case. -+ if ( !encName.empty() ) { -+ if ( encName == wxT("US-ASCII") ) { -+ // This means US-ASCII when returned -+ // from GetEncodingFromName(). -+ encName.clear(); -+ } -+ } -+#endif // wxUSE_INTL -+ -+ // in this case, UTF-8 is used by default. -+ if ( encName.empty() ) { -+ encName = wxT("UTF-8"); -+ } -+ -+ static wxConvBrokenFileNames fileconv(encName); -+ wxConvFileName = &fileconv; -+#endif // __UNIX__ -+ -+ return true; -+} - - int CamuleDaemonApp::OnExit() - { -diff --git a/src/libs/common/Path.cpp b/src/libs/common/Path.cpp -index 28152a2..5efefd0 100644 ---- a/src/libs/common/Path.cpp -+++ b/src/libs/common/Path.cpp -@@ -229,7 +229,8 @@ CPath::CPath(const wxString& filename) - } - - wxCharBuffer fn = filename2char(filename); -- if (fn.data()) { -+ // add fn.length() for wx 3.x -+ if (fn.data()) { - // Filename is valid in the current locale. This means that - // it either originated from a (wx)system-call, or from a - // user with a properly setup system. diff --git a/package/lean/amule/patches/005_best_keyword_kad_search.patch b/package/lean/amule/patches/005_best_keyword_kad_search.patch deleted file mode 100644 index c450a9f8e..000000000 --- a/package/lean/amule/patches/005_best_keyword_kad_search.patch +++ /dev/null @@ -1,174 +0,0 @@ -diff --git a/src/SearchList.cpp b/src/SearchList.cpp -index 32b28e9..342a18f 100644 ---- a/src/SearchList.cpp -+++ b/src/SearchList.cpp -@@ -75,7 +75,7 @@ void ParsedSearchExpression(const CSearchExpr* pexpr) - int iOpNot = 0; - - for (unsigned int i = 0; i < pexpr->m_aExpr.GetCount(); i++) { -- wxString str(pexpr->m_aExpr[i]); -+ const wxString& str = pexpr->m_aExpr[i]; - if (str == SEARCHOPTOK_AND) { - iOpAnd++; - } else if (str == SEARCHOPTOK_OR) { -@@ -108,6 +108,25 @@ void ParsedSearchExpression(const CSearchExpr* pexpr) - - // optimize search expression, if no OR nor NOT specified - if (iOpAnd > 0 && iOpOr == 0 && iOpNot == 0) { -+ // figure out if we can use a better keyword than the one the user selected -+ // for example most user will search like this "The oxymoronaccelerator 2", which would ask the node which indexes "the" -+ // This causes higher traffic for such nodes and makes them a viable target to attackers, while the kad result should be -+ // the same or even better if we ask the node which indexes the rare keyword "oxymoronaccelerator", so we try to rearrange -+ // keywords and generally assume that the longer keywords are rarer -+ if (/*thePrefs::GetRearrangeKadSearchKeywords() &&*/ !s_strCurKadKeyword.IsEmpty()) { -+ for (unsigned int i = 0; i < pexpr->m_aExpr.GetCount(); i++) { -+ if (pexpr->m_aExpr[i] != SEARCHOPTOK_AND) { -+ if (pexpr->m_aExpr[i] != s_strCurKadKeyword -+ && pexpr->m_aExpr[i].find_first_of(Kademlia::CSearchManager::GetInvalidKeywordChars()) == wxString::npos -+ && pexpr->m_aExpr[i].Find('"') != 0 // no quoted expressions as keyword -+ && pexpr->m_aExpr[i].length() >= 3 -+ && s_strCurKadKeyword.length() < pexpr->m_aExpr[i].length()) -+ { -+ s_strCurKadKeyword = pexpr->m_aExpr[i]; -+ } -+ } -+ } -+ } - wxString strAndTerms; - for (unsigned int i = 0; i < pexpr->m_aExpr.GetCount(); i++) { - if (pexpr->m_aExpr[i] != SEARCHOPTOK_AND) { -@@ -285,7 +304,7 @@ void CSearchList::RemoveResults(long searchID) - } - - --wxString CSearchList::StartNewSearch(uint32* searchID, SearchType type, const CSearchParams& params) -+wxString CSearchList::StartNewSearch(uint32* searchID, SearchType type, CSearchParams& params) - { - // Check that we can actually perform the specified desired search. - if ((type == KadSearch) && !Kademlia::CKademlia::IsRunning()) { -@@ -306,6 +325,16 @@ wxString CSearchList::StartNewSearch(uint32* searchID, SearchType type, const CS - m_resultType.Clear(); - } - -+ if (type == KadSearch) { -+ Kademlia::WordList words; -+ Kademlia::CSearchManager::GetWords(params.searchString, &words); -+ if (!words.empty()) { -+ params.strKeyword = words.front(); -+ } else { -+ return _("No keyword for Kad search - aborting"); -+ } -+ } -+ - bool supports64bit = type == KadSearch ? true : theApp->serverconnect->GetCurrentServer() != NULL && (theApp->serverconnect->GetCurrentServer()->GetTCPFlags() & SRV_TCPFLG_LARGEFILES); - bool packetUsing64bit; - -@@ -332,8 +361,7 @@ wxString CSearchList::StartNewSearch(uint32* searchID, SearchType type, const CS - - // searchstring will get tokenized there - // The tab must be created with the Kad search ID, so searchID is updated. -- Kademlia::CSearch* search = Kademlia::CSearchManager::PrepareFindKeywords( -- params.searchString, data->GetLength(), data->GetRawBuffer(), *searchID); -+ Kademlia::CSearch* search = Kademlia::CSearchManager::PrepareFindKeywords(params.strKeyword, data->GetLength(), data->GetRawBuffer(), *searchID); - - *searchID = search->GetSearchID(); - m_currentSearch = *searchID; -@@ -632,7 +660,7 @@ void CSearchList::StopSearch(bool globalOnly) - } - - --CSearchList::CMemFilePtr CSearchList::CreateSearchData(const CSearchParams& params, SearchType WXUNUSED(type), bool supports64bit, bool& packetUsing64bit) -+CSearchList::CMemFilePtr CSearchList::CreateSearchData(CSearchParams& params, SearchType type, bool supports64bit, bool& packetUsing64bit) - { - // Count the number of used parameters - unsigned int parametercount = 0; -@@ -659,14 +687,16 @@ CSearchList::CMemFilePtr CSearchList::CreateSearchData(const CSearchParams& para - _astrParserErrors.Empty(); - _SearchExpr.m_aExpr.Empty(); - -+ s_strCurKadKeyword.Clear(); -+ if (type == KadSearch) { -+ wxASSERT( !params.strKeyword.IsEmpty() ); -+ s_strCurKadKeyword = params.strKeyword; -+ } -+ - LexInit(params.searchString); - int iParseResult = yyparse(); - LexFree(); - --#ifdef __DEBUG__ -- AddLogLineNS(CFormat(wxT("Search parsing result for \"%s\": %i")) -- % params.searchString % iParseResult); --#endif - if (_astrParserErrors.GetCount() > 0) { - for (unsigned int i=0; i < _astrParserErrors.GetCount(); ++i) { - AddLogLineNS(CFormat(wxT("Error %u: %s\n")) % i % _astrParserErrors[i]); -@@ -681,21 +711,13 @@ CSearchList::CMemFilePtr CSearchList::CreateSearchData(const CSearchParams& para - return CMemFilePtr(NULL); - } - -- #ifdef __DEBUG__ -- wxString mes(wxT("Search expression:")); -- for (unsigned int i = 0; i < _SearchExpr.m_aExpr.GetCount(); i++) { -- mes << wxT(" ") << _SearchExpr.m_aExpr[i]; -+ if (type == KadSearch && s_strCurKadKeyword != params.strKeyword) { -+ AddDebugLogLineN(logSearch, CFormat(wxT("Keyword was rearranged, using '%s' instead of '%s'")) % s_strCurKadKeyword % params.strKeyword); -+ params.strKeyword = s_strCurKadKeyword; - } -- AddLogLineNS(mes); -- AddLogLineNS(CFormat(wxT("Expression count: %i")) % _SearchExpr.m_aExpr.GetCount()); -- #endif - - parametercount += _SearchExpr.m_aExpr.GetCount(); - -- #ifdef __DEBUG__ -- AddLogLineNS(CFormat(wxT("Parameters: %i")) % parametercount); -- #endif -- - /* Leave the unicode comment there, please... */ - CSearchExprTarget target(data.get(), true /*I assume everyone is unicoded */ ? utf8strRaw : utf8strNone, supports64bit, packetUsing64bit); - -diff --git a/src/SearchList.h b/src/SearchList.h -index 35b0fc6..6db7508 100644 ---- a/src/SearchList.h -+++ b/src/SearchList.h -@@ -64,6 +64,8 @@ class CSearchList : public wxEvtHandler - - //! The actual string to search for. - wxString searchString; -+ //! The keyword selected for Kad search -+ wxString strKeyword; - //! The type of files to search for (may be empty), one of ED2KFTSTR_* - wxString typeText; - //! The filename extension. May be empty. -@@ -90,7 +92,7 @@ class CSearchList : public wxEvtHandler - * @param params The search parameters, see CSearchParams. - * @return An empty string on success, otherwise an error-message. - */ -- wxString StartNewSearch(uint32* searchID, SearchType type, const CSearchParams& params); -+ wxString StartNewSearch(uint32* searchID, SearchType type, CSearchParams& params); - - /** Stops the current search (global or Kad), if any is in progress. */ - void StopSearch(bool globalOnly = false); -@@ -189,7 +191,7 @@ class CSearchList : public wxEvtHandler - typedef std::auto_ptr CMemFilePtr; - - /** Create a basic search-packet for the given search-type. */ -- CMemFilePtr CreateSearchData(const CSearchParams& params, SearchType type, bool supports64bit, bool& packetUsing64bit); -+ CMemFilePtr CreateSearchData(CSearchParams& params, SearchType type, bool supports64bit, bool& packetUsing64bit); - - - //! Timer used for global search intervals. -diff --git a/src/kademlia/kademlia/SearchManager.cpp b/src/kademlia/kademlia/SearchManager.cpp -index e7f25d4..f9ee924 100644 ---- a/src/kademlia/kademlia/SearchManager.cpp -+++ b/src/kademlia/kademlia/SearchManager.cpp -@@ -127,7 +127,7 @@ CSearch* CSearchManager::PrepareFindKeywords(const wxString& keyword, uint32_t s - - wxString wstrKeyword = s->m_words.front(); - -- AddLogLineNS(CFormat(_("Keyword for search: %s")) % wstrKeyword); -+ AddDebugLogLineN(logSearch, CFormat(wxT("Keyword for search: %s")) % wstrKeyword); - - // Kry - I just decided to assume everyone is unicoded - // GonoszTopi - seconded diff --git a/package/lean/amule/patches/006_update-libupnp.patch b/package/lean/amule/patches/006_update-libupnp.patch deleted file mode 100644 index a66c33bad..000000000 --- a/package/lean/amule/patches/006_update-libupnp.patch +++ /dev/null @@ -1,365 +0,0 @@ -diff -Naur a/m4/libupnp.m4 b/m4/libupnp.m4 ---- a/m4/libupnp.m4 2016-10-06 18:49:44.000000000 +0800 -+++ b/m4/libupnp.m4 2019-12-11 22:13:19.008225399 +0800 -@@ -45,11 +45,16 @@ - - dnl Test for --with-libupnp-prefix - AC_ARG_WITH( -- [libupnp-prefix], -- [AS_HELP_STRING( -+ [libupnp-prefix],[ -+ AS_HELP_STRING( - [--with-libupnp-prefix=PREFIX], -- [UPnP library location])], -- [export PKG_CONFIG_PATH=$withval/lib/pkgconfig]) -+ [UPnP library location])],[ -+ AS_IF([test -d "$withval/lib64/pkgconfig"],[ -+ export PKG_CONFIG_PATH=$withval/lib64/pkgconfig -+ ],[ -+ export PKG_CONFIG_PATH=$withval/lib/pkgconfig -+ ]) -+ ]) - - dnl Check for libupnp >= MIN_LIBUPNP_VERSION - AS_IF([test $cross_compiling = no], [ -diff -Naur a/src/UPnPBase.cpp b/src/UPnPBase.cpp ---- a/src/UPnPBase.cpp 2016-10-06 18:49:44.000000000 +0800 -+++ b/src/UPnPBase.cpp 2019-12-11 22:15:04.536768532 +0800 -@@ -1127,7 +1127,11 @@ - - - // This function is static -+#if UPNP_VERSION >= 10800 -+int CUPnPControlPoint::Callback(Upnp_EventType_e EventType, const void *Event, void * /*Cookie*/) -+#else - int CUPnPControlPoint::Callback(Upnp_EventType EventType, void *Event, void * /*Cookie*/) -+#endif - { - std::ostringstream msg; - std::ostringstream msg2; -@@ -1149,24 +1153,47 @@ - msg2<< "UPNP_DISCOVERY_SEARCH_RESULT: "; - // UPnP Discovery - upnpDiscovery: -+#if UPNP_VERSION >= 10800 -+ UpnpDiscovery *d_event = (UpnpDiscovery *)Event; -+#else - struct Upnp_Discovery *d_event = (struct Upnp_Discovery *)Event; -+#endif - IXML_Document *doc = NULL; -+#if UPNP_VERSION >= 10800 -+ int errCode = UpnpDiscovery_get_ErrCode(d_event); -+ if (errCode != UPNP_E_SUCCESS) { -+ msg << UpnpGetErrorMessage(errCode) << "."; -+#else - int ret; - if (d_event->ErrCode != UPNP_E_SUCCESS) { - msg << UpnpGetErrorMessage(d_event->ErrCode) << "."; -+#endif - AddDebugLogLineC(logUPnP, msg); - } - // Get the XML tree device description in doc -+#if UPNP_VERSION >= 10800 -+ const char *location = UpnpDiscovery_get_Location_cstr(d_event); -+ int ret = UpnpDownloadXmlDoc(location, &doc); -+#else - ret = UpnpDownloadXmlDoc(d_event->Location, &doc); -+#endif - if (ret != UPNP_E_SUCCESS) { - msg << "Error retrieving device description from " << -+#if UPNP_VERSION >= 10800 -+ location << ": " << -+#else - d_event->Location << ": " << -+#endif - UpnpGetErrorMessage(ret) << - "(" << ret << ")."; - AddDebugLogLineC(logUPnP, msg); - } else { - msg2 << "Retrieving device description from " << -+#if UPNP_VERSION >= 10800 -+ location << "."; -+#else - d_event->Location << "."; -+#endif - AddDebugLogLineN(logUPnP, msg2); - } - if (doc) { -@@ -1194,8 +1221,14 @@ - AddDebugLogLineC(logUPnP, msg); - } - // Add the root device to our list -+#if UPNP_VERSION >= 10800 -+ int expires = UpnpDiscovery_get_Expires(d_event); -+ upnpCP->AddRootDevice(rootDevice, urlBase, -+ location, expires); -+#else - upnpCP->AddRootDevice(rootDevice, urlBase, - d_event->Location, d_event->Expires); -+#endif - } - // Free the XML doc tree - IXML::Document::Free(doc); -@@ -1216,28 +1249,62 @@ - case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE: { - //fprintf(stderr, "Callback: UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE\n"); - // UPnP Device Removed -+#if UPNP_VERSION >= 10800 -+ UpnpDiscovery *dab_event = (UpnpDiscovery *)Event; -+ int errCode = UpnpDiscovery_get_ErrCode(dab_event); -+ if (errCode != UPNP_E_SUCCESS) { -+#else - struct Upnp_Discovery *dab_event = (struct Upnp_Discovery *)Event; - if (dab_event->ErrCode != UPNP_E_SUCCESS) { -+#endif - msg << "error(UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE): " << -+#if UPNP_VERSION >= 10800 -+ UpnpGetErrorMessage(errCode) << -+#else - UpnpGetErrorMessage(dab_event->ErrCode) << -+#endif - "."; - AddDebugLogLineC(logUPnP, msg); - } -+#if UPNP_VERSION >= 10800 -+ std::string devType = UpnpDiscovery_get_DeviceType_cstr(dab_event); -+#else - std::string devType = dab_event->DeviceType; -+#endif - // Check for an InternetGatewayDevice and removes it from the list -+ - std::transform(devType.begin(), devType.end(), devType.begin(), tolower); -+ - if (stdStringIsEqualCI(devType, UPnP::Device::IGW)) { -+#if UPNP_VERSION >= 10800 -+ const char *deviceID = -+ UpnpDiscovery_get_DeviceID_cstr(dab_event); -+ upnpCP->RemoveRootDevice(deviceID); -+#else - upnpCP->RemoveRootDevice(dab_event->DeviceId); -+#endif - } - break; - } - case UPNP_EVENT_RECEIVED: { - //fprintf(stderr, "Callback: UPNP_EVENT_RECEIVED\n"); - // Event reveived -+#if UPNP_VERSION >= 10800 -+ UpnpEvent *e_event = (UpnpEvent *)Event; -+ int eventKey = UpnpEvent_get_EventKey(e_event); -+ IXML_Document *changedVariables = -+ UpnpEvent_get_ChangedVariables(e_event); -+ const std::string sid = UpnpEvent_get_SID_cstr(e_event); -+#else - struct Upnp_Event *e_event = (struct Upnp_Event *)Event; - const std::string Sid = e_event->Sid; -+#endif - // Parses the event -+#if UPNP_VERSION >= 10800 -+ upnpCP->OnEventReceived(sid, eventKey, changedVariables); -+#else - upnpCP->OnEventReceived(Sid, e_event->EventKey, e_event->ChangedVariables); -+#endif - break; - } - case UPNP_EVENT_SUBSCRIBE_COMPLETE: -@@ -1252,24 +1319,42 @@ - //fprintf(stderr, "Callback: UPNP_EVENT_RENEWAL_COMPLETE\n"); - msg << "error(UPNP_EVENT_RENEWAL_COMPLETE): "; - upnpEventRenewalComplete: -+#if UPNP_VERSION >= 10800 -+ UpnpEventSubscribe *es_event = (UpnpEventSubscribe *)Event; -+ int errCode = UpnpEventSubscribe_get_ErrCode(es_event); -+ if (errCode != UPNP_E_SUCCESS) { -+#else - struct Upnp_Event_Subscribe *es_event = - (struct Upnp_Event_Subscribe *)Event; - if (es_event->ErrCode != UPNP_E_SUCCESS) { -+#endif - msg << "Error in Event Subscribe Callback"; -+#if UPNP_VERSION >= 10800 -+ UPnP::ProcessErrorMessage(msg.str(), errCode, NULL, NULL); -+#else - UPnP::ProcessErrorMessage( - msg.str(), es_event->ErrCode, NULL, NULL); -+#endif - } else { - #if 0 -+#if UPNP_VERSION >= 10800 -+ -+ const UpnpString *publisherUrl = -+ UpnpEventSubscribe_get_PublisherUrl(es_event); -+ const char *sid = UpnpEvent_get_SID_cstr(es_event); -+ int timeOut = UpnpEvent_get_TimeOut(es_event); -+ TvCtrlPointHandleSubscribeUpdate( -+ publisherUrl, sid, timeOut); -+#else - TvCtrlPointHandleSubscribeUpdate( - GET_UPNP_STRING(es_event->PublisherUrl), - es_event->Sid, - es_event->TimeOut ); - #endif -+#endif - } -- - break; - } -- - case UPNP_EVENT_AUTORENEWAL_FAILED: - //fprintf(stderr, "Callback: UPNP_EVENT_AUTORENEWAL_FAILED\n"); - msg << "error(UPNP_EVENT_AUTORENEWAL_FAILED): "; -@@ -1280,29 +1365,56 @@ - msg << "error(UPNP_EVENT_SUBSCRIPTION_EXPIRED): "; - msg2 << "UPNP_EVENT_SUBSCRIPTION_EXPIRED: "; - upnpEventSubscriptionExpired: -+#if UPNP_VERSION >= 10800 -+ UpnpEventSubscribe *es_event = (UpnpEventSubscribe *)Event; -+#else - struct Upnp_Event_Subscribe *es_event = - (struct Upnp_Event_Subscribe *)Event; -+#endif - Upnp_SID newSID; - memset(newSID, 0, sizeof(Upnp_SID)); - int TimeOut = 1801; -+#if UPNP_VERSION >= 10800 -+ const char *publisherUrl = -+ UpnpEventSubscribe_get_PublisherUrl_cstr(es_event); -+#endif - int ret = UpnpSubscribe( - upnpCP->m_UPnPClientHandle, -+#if UPNP_VERSION >= 10800 -+ publisherUrl, -+#else - GET_UPNP_STRING(es_event->PublisherUrl), -+#endif - &TimeOut, - newSID); - if (ret != UPNP_E_SUCCESS) { - msg << "Error Subscribing to EventURL"; -+#if UPNP_VERSION >= 10800 -+ int errCode = UpnpEventSubscribe_get_ErrCode(es_event); -+#endif - UPnP::ProcessErrorMessage( -+#if UPNP_VERSION >= 10800 -+ msg.str(), errCode, NULL, NULL); -+#else - msg.str(), es_event->ErrCode, NULL, NULL); -+#endif - } else { - ServiceMap::iterator it = -+#if UPNP_VERSION >= 10800 -+ upnpCP->m_ServiceMap.find(publisherUrl); -+#else - upnpCP->m_ServiceMap.find(GET_UPNP_STRING(es_event->PublisherUrl)); -+#endif - if (it != upnpCP->m_ServiceMap.end()) { - CUPnPService &service = *(it->second); - service.SetTimeout(TimeOut); - service.SetSID(newSID); - msg2 << "Re-subscribed to EventURL '" << -+#if UPNP_VERSION >= 10800 -+ publisherUrl << -+#else - GET_UPNP_STRING(es_event->PublisherUrl) << -+#endif - "' with SID == '" << - newSID << "'."; - AddDebugLogLineC(logUPnP, msg2); -@@ -1321,17 +1433,34 @@ - case UPNP_CONTROL_ACTION_COMPLETE: { - //fprintf(stderr, "Callback: UPNP_CONTROL_ACTION_COMPLETE\n"); - // This is here if we choose to do this asynchronously -+#if UPNP_VERSION >= 10800 -+ UpnpActionComplete *a_event = (UpnpActionComplete *)Event; -+ int errCode = UpnpActionComplete_get_ErrCode(a_event); -+ IXML_Document *actionResult = -+ UpnpActionComplete_get_ActionResult(a_event); -+ if (errCode != UPNP_E_SUCCESS) { -+#else - struct Upnp_Action_Complete *a_event = - (struct Upnp_Action_Complete *)Event; - if (a_event->ErrCode != UPNP_E_SUCCESS) { -+#endif - UPnP::ProcessErrorMessage( - "UpnpSendActionAsync", -+#if UPNP_VERSION >= 10800 -+ errCode, NULL, -+ actionResult); -+#else - a_event->ErrCode, NULL, - a_event->ActionResult); -+#endif - } else { - // Check the response document - UPnP::ProcessActionResponse( -+#if UPNP_VERSION >= 10800 -+ actionResult, -+#else - a_event->ActionResult, -+#endif - ""); - } - /* No need for any processing here, just print out results. -@@ -1342,22 +1471,43 @@ - case UPNP_CONTROL_GET_VAR_COMPLETE: { - //fprintf(stderr, "Callback: UPNP_CONTROL_GET_VAR_COMPLETE\n"); - msg << "error(UPNP_CONTROL_GET_VAR_COMPLETE): "; -+#if UPNP_VERSION >= 10800 -+ UpnpStateVarComplete *sv_event = (UpnpStateVarComplete *)Event; -+ int errCode = UpnpStateVarComplete_get_ErrCode(sv_event); -+ if (errCode != UPNP_E_SUCCESS) { -+#else - struct Upnp_State_Var_Complete *sv_event = - (struct Upnp_State_Var_Complete *)Event; - if (sv_event->ErrCode != UPNP_E_SUCCESS) { -+#endif - msg << "m_UpnpGetServiceVarStatusAsync"; - UPnP::ProcessErrorMessage( -+#if UPNP_VERSION >= 10800 -+ msg.str(), errCode, NULL, NULL); -+#else - msg.str(), sv_event->ErrCode, NULL, NULL); -+#endif - } else { - #if 0 - // Warning: The use of UpnpGetServiceVarStatus and - // UpnpGetServiceVarStatusAsync is deprecated by the - // UPnP forum. -+#if UPNP_VERSION >= 10800 -+ const char *ctrlUrl = -+ UpnpStateVarComplete_get_CtrlUrl(sv_event); -+ const char *stateVarName = -+ UpnpStateVarComplete_get_StateVarName(sv_event); -+ const DOMString currentVal = -+ UpnpStateVarComplete_get_CurrentVal(sv_event); -+ TvCtrlPointHandleGetVar( -+ ctrlUrl, stateVarName, currentVal); -+#else - TvCtrlPointHandleGetVar( - sv_event->CtrlUrl, - sv_event->StateVarName, - sv_event->CurrentVal ); - #endif -+#endif - } - break; - } -diff -Naur a/src/UPnPBase.h b/src/UPnPBase.h ---- a/src/UPnPBase.h 2016-10-06 18:49:44.000000000 +0800 -+++ b/src/UPnPBase.h 2019-12-11 22:16:28.165063153 +0800 -@@ -489,9 +489,15 @@ - - // Callback function - static int Callback( -+ #if UPNP_VERSION >= 10800 -+ Upnp_EventType_e EventType, -+ const void *Event, -+ void *Cookie); -+ #else - Upnp_EventType EventType, - void* Event, - void* Cookie); -+ #endif - - private: - void OnEventReceived( diff --git a/package/lean/amule/patches/007-binutils.patch b/package/lean/amule/patches/007-binutils.patch deleted file mode 100644 index 600a47620..000000000 --- a/package/lean/amule/patches/007-binutils.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/src/libs/common/MuleDebug.cpp 2016-10-06 18:49:44.000000000 +0800 -+++ b/src/libs/common/MuleDebug.cpp 2021-06-17 02:16:40.000000000 +0800 -@@ -268,14 +268,14 @@ - return; - } - -- bfd_vma vma = bfd_get_section_vma(abfd, section); -+ bfd_vma vma = bfd_section_vma(section); - - unsigned long address = (unsigned long)_address; - if (address < vma) { - return; - } - -- bfd_size_type size = bfd_section_size(abfd, section); -+ bfd_size_type size = bfd_section_size(section); - if (address > (vma + size)) { - return; - } diff --git a/package/lean/amule/patches/008-upnp2.patch b/package/lean/amule/patches/008-upnp2.patch deleted file mode 100644 index 20592509c..000000000 --- a/package/lean/amule/patches/008-upnp2.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/src/UPnPBase.cpp b/src/UPnPBase.cpp -index 46ac7451e..dd244e5b0 100644 ---- a/src/UPnPBase.cpp -+++ b/src/UPnPBase.cpp -@@ -828,9 +828,9 @@ - int ret; - char *ipAddress = NULL; - unsigned short port = 0; -- ret = UpnpInit(ipAddress, udpPort); -+ ret = UpnpInit2(0, udpPort); - if (ret != UPNP_E_SUCCESS) { -- msg << "error(UpnpInit): Error code "; -+ msg << "error(UpnpInit2): Error code "; - goto error; - } - port = UpnpGetServerPort(); diff --git a/package/lean/antileech/Makefile b/package/lean/antileech/Makefile deleted file mode 100644 index 6cece3a58..000000000 --- a/package/lean/antileech/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# -# 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)) diff --git a/package/lean/antileech/src/CString_wx.h b/package/lean/antileech/src/CString_wx.h deleted file mode 100644 index 30bf05187..000000000 --- a/package/lean/antileech/src/CString_wx.h +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Author: Bill Lee - * License: GNU GPL - */ -//--------------------- -#ifndef CSTRING_WX_H -#define CSTRING_WX_H - -//#include -#include - -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 diff --git a/package/lean/antileech/src/Interface.cpp b/package/lean/antileech/src/Interface.cpp deleted file mode 100644 index 7dae76584..000000000 --- a/package/lean/antileech/src/Interface.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - * ===================================================================================== - * - * 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; -} diff --git a/package/lean/antileech/src/Makefile.am b/package/lean/antileech/src/Makefile.am deleted file mode 100644 index 696a1bb2a..000000000 --- a/package/lean/antileech/src/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -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 - diff --git a/package/lean/antileech/src/antiLeech.cpp b/package/lean/antileech/src/antiLeech.cpp deleted file mode 100644 index d3276d472..000000000 --- a/package/lean/antileech/src/antiLeech.cpp +++ /dev/null @@ -1,1599 +0,0 @@ -//DLP = Dynamic Leecher Protection -//this code is part of Xtreme-Mod -//author: Xman - -//This program is free software; you can redistribute it and/or -//modify it under the terms of the GNU General Public License -//as published by the Free Software Foundation; either -//version 2 of the License, or (at your option) any later version. -// -//This program is distributed in the hope that it will be useful, -//but WITHOUT ANY WARRANTY; without even the implied warranty of -//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//GNU General Public License for more details. -// -//You should have received a copy of the GNU General Public License -//along with this program; if not, write to the Free Software -//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - -#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 -#endif - -//>>> eWombat [SNAFU_V3] -LPCTSTR apszSnafuTag[]= -{ - _T("[DodgeBoards]"), //0 - _T("[DodgeBoards & DarkMule eVorteX]"), //1 - _T("[DarkMule v6 eVorteX]"), //2 - _T("[eMuleReactor]"), //3 - _T("[Bionic]"), //4 - _T("[LSD7c]"), //5 - _T("[0x8d] unknown Leecher - (client version:60)"), //6 - _T("[RAMMSTEIN]"), //7 - _T("[MD5 Community]"), //8 - _T("[new DarkMule]"), //9 - _T("[OMEGA v.07 Heiko]"), //10 - _T("[eMule v0.26 Leecher]"), //11 - _T("[Hunter]"), //12 - _T("[Bionic 0.20 Beta]"), //13 - _T("[Rumata (rus)(Plus v1f)]"), //14 - _T("[Fusspi]"), //15 - _T("[donkey2002]"), //16 - _T("[md4]"), //17 - _T("[SpeedMule]"), //18 Xman - _T("[pimp]") //19 Xman - ,_T("[Chinese Leecher]") //20 SquallATF - //,_T("[eChanblardNext]") //21 zz_fly -}; - -const DWORD CantiLeech::DLPVersion = 4405; - -//deactivate M$WIN-specific codes -#if 0 -BOOL WINAPI DllMain ( - HANDLE hModule, - DWORD dwFunction, - LPVOID lpNot) -{ - switch (dwFunction) - { - case DLL_PROCESS_ATTACH: - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - - return TRUE; -} - - -void __declspec(dllexport) TestFunc() -{ - ::MessageBox(NULL,_T("Inside the DLL!"),_T("Nix"),0); -} -#endif - -//old versions just to keep compatible -/* //drop old version support -LPCTSTR __declspec(dllexport) DLPCheckModstring(LPCTSTR modversion, LPCTSTR clientversion) -{ - if(modversion==NULL || clientversion==NULL) - return NULL; - - if (StrStrI(modversion,_T("Freeza"))|| - StrStrI(modversion,_T("d-unit"))|| - //StrStrI(modversion,_T("NOS"))|| //removed for the moment - StrStrI(modversion,_T("imperator"))|| - StrStrI(modversion,_T("SpeedLoad"))|| - StrStrI(modversion,_T("gt mod"))|| - StrStrI(modversion,_T("egomule"))|| - StrStrI(modversion,_T("aldo"))|| - StrStrI(modversion,_T("darkmule"))|| - StrStrI(modversion,_T("LegoLas"))|| - StrStrI(modversion,_T("dodgethis"))|| //Updated - StrStrI(modversion,_T("DM-"))|| - StrStrI(modversion,_T("|X|"))|| - StrStrI(modversion,_T("eVorte"))|| - StrStrI(modversion,_T("Mison"))|| - StrStrI(modversion,_T("father"))|| - StrStrI(modversion,_T("Dragon"))|| - StrStrI(modversion,_T("booster"))|| //Temporaly added, must check the tag - StrStrI(modversion,_T("$motty"))|| - StrStrI(modversion,_T("Thunder"))|| - StrStrI(modversion,_T("BuzzFuzz"))|| - StrStrI(modversion,_T("Speed-Unit"))|| - StrStrI(modversion,_T("Killians"))|| - StrStrI(modversion,_T("Element"))|| - StrStrI(modversion,_T("§¯Å]"))|| - StrStrI(modversion,_T("Rappi"))|| - StrStrI(modversion,_T("EastShare")) && StrStrI(clientversion,_T("0.29"))|| - StrStrI(modversion,_T("eChanblard v7.0")) || - //StrStrI(modversion,_T("ACAT")) || - StrStrI(modversion,_T("!FREEANGEL!")) || - StrStrI(modversion,_T(" ")) || - StrStrI(modversion,_T("Stonehenge")) || - StrStrI(modversion,_T("@RAPTOR")) || - StrStrI(modversion,_T("pwNd muLe")) || - StrStrI(modversion,_T("HARDPAW")) || - StrStrI(modversion,_T("XXL")) || - StrStrI(modversion,_T("LSD")) || - StrStrI(modversion,_T("Rockesel")) || //WiZaRd - StrStrI(modversion,_T("Bad Donkey")) || //WiZaRd - StrStrI(modversion,_T("DSL-Light-Client")) || //WiZaRd - StrStrI(modversion,_T("Elben")) || //WiZaRd - StrStrI(modversion,_T("PROeMule")) || //WiZaRd - StrStrI(modversion,_T("OO.de")) || //WiZaRd - StrStrI(modversion,_T("00.de")) || //WiZaRd - StrStrI(modversion,_T("OOde")) || //WiZaRd - StrStrI(modversion,_T("00de")) || - StrStrI(modversion,_T("Devil")) || - StrStrI(modversion,_T("Elfen")) || - StrStrI(modversion,_T("Ef-mod ")) || //Xman this mod can be abused as a full leecher - StrStrI(modversion,_T("HARDMULE")) || - StrStrI(modversion,_T("Xtreme Xtended")) || //Xman 15.08.05 - StrStrI(modversion, _T("MirageMod"))|| // " - StrStrI(modversion, _T("SpeedX"))|| - StrStrI(modversion, _T("AIDEADSL"))|| - StrStrI(modversion, _T("Hypnotix"))|| - StrStrI(modversion, _T("blackviper"))|| - StrStrI(modversion, _T("BlackAngel"))|| - StrStrI(modversion, _T("Community"))|| - StrStrI(modversion, _T("rabbit"))|| - StrStrI(modversion, _T("rabb_it"))|| - StrStrI(modversion, _T("Speedmule"))|| - StrStrI(modversion, _T("Raptor"))|| - StrStrI(modversion, _T("Hawkstar"))|| - StrStrI(modversion, _T("ServerClient"))|| - StrStrI(modversion, _T("Love-Angel"))|| - StrStrI(modversion, _T("SuperKiller"))|| - StrStrI(modversion, _T("Ultimativ"))|| - StrStrI(modversion, _T("uptempo"))|| - StrStrI(modversion, _T("ZamBoR"))|| - StrStrI(modversion, _T("Arabella"))|| - StrStrI(modversion,_T("Morph")) && (StrStrI(modversion,_T("Max")) || StrStrI(modversion,_T("+")) || StrStrI(modversion,_T("×"))) || - StrStrI(modversion, _T("Morph XT"))|| //very bad mod (MPAA ?) - StrStrI(modversion, _T("BlueHex"))|| - StrStrI(modversion, _T("FlowerPower"))|| - StrStrI(modversion, _T("Fincan"))|| - StrStrI(modversion, _T("Heartbreaker"))|| - StrStrI(modversion, _T("Administrator"))|| - StrStrI(modversion, _T("B@d-D3vi7"))|| - StrStrI(modversion, _T("CryptedSpeed"))|| - StrStrI(modversion, _T("DarkDragon"))|| - StrStrI(modversion, _T("OS_"))|| //Xman most are found via other checks, but not all - _tcslen(modversion) > 0 && (StrStrI(clientversion,_T("edonkey")) || modversion[0]==_T('[')) || //1. donkey user with modstring, 2. modstring begins with [ this is a known leecher - (StrStrI(modversion, _T("Xtreme")) && StrStrI(modversion, _T("]"))) //bad Xtreme mod - ) - return _T("Bad MODSTRING"); - - return NULL; -} - -LPCTSTR __declspec(dllexport) DLPCheckUsername(LPCTSTR username) -{ - if(username==NULL) - return NULL; - - if (StrStrI(username,_T("$GAM3R$"))|| - StrStrI(username,_T("G@m3r"))|| - StrStrI(username,_T("$WAREZ$"))|| - //StrStrI(username,_T("RAMMSTEIN"))||// //Xman 21.06.05 SNAFU should filter the right ones out - //StrStr(username,_T("toXic"))|| //Xman 19.10.05 too old - StrStrI(username,_T("Leecha"))|| - StrStr(username,_T("eDevil"))|| - StrStrI(username,_T("darkmule"))|| - //StrStrI(username,_T("phArAo"))|| //Xman 19.10.05 too old - //StrStrI(username,_T("dodgethis"))|| //Xman 21.06.05 not seen for a long time - StrStrI(username,_T("Reverse"))|| - //StrStrI(username,_T("eVortex"))|| //Xman didn't see it for a long time - //StrStrI(username,_T("|eVorte|X|"))|| //" - //StrStrI(username,_T("Chief"))|| //Xman 17.5.08 old and no more needed - StrStrI(username,_T("$motty"))|| - StrStrI(username,_T("emule-speed"))|| - StrStrI(username,_T("celinesexy"))|| - StrStrI(username,_T("Gate-eMule"))|| - StrStrI(username,_T("energyfaker"))|| - StrStrI(username,_T("BuzzFuzz"))|| - StrStrI(username,_T("Speed-Unit"))|| - StrStrI(username,_T("Killians"))|| - StrStrI(username,_T("pubsman"))|| - StrStrI(username,_T("emule-element"))|| - StrStrI(username,_T("00de.de"))|| - StrStrI(username,_T("00de")) || - StrStrI(username,_T("OO.de"))|| - StrStrI(username,_T("OOde")) || - StrStrI(username,_T("emule")) && StrStrI(username,_T("booster")) || - StrStrI(username,_T("Rappi")) || - StrStrI(username,_T("Ketamine")) || - StrStrI(username,_T("HARDMULE")) || - StrStrI(username,_T("emuleech")) || - //Xman 15.08.05 - StrStrI(username, _T("SchlumpMule"))|| //" - StrStrI(username, _T("Safty´s"))|| - StrStrI(username, _T("UnKnOwN pOiSoN"))|| - StrStrI(username, _T("ElfenPower"))|| - StrStrI(username, _T("eMule Cow"))|| - StrStrI(username, _T("Freezamule"))|| - StrStr(username, _T("EGOmule"))|| - StrStrI(username, _T("-=EGOist=-"))|| - StrStrI(username, _T("FreezaVamp"))|| - StrStrI(username, _T("Muli_Checka"))|| - StrStr(username, _T("PrOjEcT-SaNdStOrM"))|| - StrStr(username, _T("NotHer eDitiOn"))|| - StrStrI(username, _T("eSl@d3vil"))|| - StrStrI(username, _T(" AgentSmith"))|| - StrStrI(username, _T("rabb_it"))|| - StrStrI(username, _T("ServerClient"))|| - StrStrI(username, _T(">>Power-Mod"))|| - StrStr(username, _T("DM_X"))|| //darkmule - StrCmpI(username, _T("Muse"))==0 || //ketamine mod - StrStr(username, _T("ZamBoR"))|| - StrStr(username, _T("emule.razorback3.com"))|| - - StrStrI(username,_T("[LSD.19")) //Xman 21.06.2005 definitive not a good mod, with protocol bugs - ) - return _T("Bad USERNAME"); - - //bad mods, where every second sign is - //enough to check two places - - if(_tcslen(username) >=4 - && username[3]<=0x1F - && username[1]<=0x1F - ) - return _T("Leecher-Username"); - - return NULL; -} - -LPCTSTR __declspec(dllexport) DLPCheckNameAndHash(CString username, CString& userhash) -{ - if(username.IsEmpty() || userhash.IsEmpty()) - return NULL; - - //community check - if(username.GetLength()>=7 && username.Right(1)==_T("]")) - { - //check for gamer - //two checks should be enough. - if(username.Right(6).Left(1)==userhash.Mid(5,1) - && username.Right(3).Left(1)==userhash.Mid(7,1) - ) - return _T("Gamers"); - //check for snake - int find=username.ReverseFind(_T('[')); - if(find>=0) - { - CString addon=username.Mid(find+1); - int endpos=addon.GetLength()-1; - for(int i=0; i=_T('0') && addon.GetAt(i)<=_T('9')) ) - { - i=endpos+1; - } - } - if(i==endpos) - return _T("Snake"); - } - } - - return NULL; -} -*/ -//end old version ------------------------------------------ - -bool CantiLeech::IsTypicalHex(const CString& addon) -{ - if(addon.GetLength()>25 || addon.GetLength()<5) - return false; - short bigalpha=0; - short smallalpha=0; - short numeric=0; - - int endpos=addon.GetLength(); - int i = 0; - for(i=0;i=_T('0') && addon.GetAt(i)<=_T('9')) ) - numeric++; - else if( (addon.GetAt(i)>=_T('A') && addon.GetAt(i)<=_T('F')) ) - bigalpha++; - else if( (addon.GetAt(i)>=_T('a') && addon.GetAt(i)<=_T('f')) ) - smallalpha++; - else - break; - } - if(i==endpos) - { - if(numeric>0 && - (smallalpha>0 && bigalpha==0 || smallalpha==0 && bigalpha>0) - ) - return true; - } - return false; -} - -LPCTSTR __declspec(dllexport) DLPCheckUserhash(const PBYTE userhash) -{ - // No more AJ check - return NULL; -} - -//new versions -LPCTSTR __declspec(dllexport) DLPCheckModstring_Hard(LPCTSTR modversion, LPCTSTR clientversion) -{ - if(modversion==NULL || clientversion==NULL) - return NULL; - - if(_tcsstr(clientversion, L"eMule Compat v0.26.2")) - return L"Flashget"; - - if ( -//Chinese Leecher - https://forum.emule-project.net/index.php?showtopic=134097&hl= - _tcsstr(modversion,L"TM0910") || -//Chinese Leecher - https://forum.emule-project.net/index.php?showtopic=134097&hl= - //StrStrI(modversion,_T("Freeza"))|| - StrStrI(modversion,_T("FXeMule"))|| - StrStrI(modversion,_T("FX eMule"))|| - StrStrI(modversion,_T("RIAA"))|| - //StrStrI(modversion,_T("d-unit"))|| - //StrStrI(modversion,_T("NOS"))|| //removed for the moment - //StrStrI(modversion,_T("imperator"))|| - StrStrI(modversion,_T("SpeedLoad"))|| - //StrStrI(modversion,_T("gt mod"))|| //outdated - //StrStrI(modversion,_T("egomule"))|| //outdated - //StrStrI(modversion,_T("aldo"))|| //outdated - //StrStrI(modversion,_T("darkmule"))|| //outdated - //StrStrI(modversion,_T("LegoLas"))|| - //StrStrI(modversion,_T("dodgethis"))|| //Updated - //StrStrI(modversion,_T("DM-"))|| - //StrStrI(modversion,_T("|X|"))|| - //StrStrI(modversion,_T("eVorte"))|| - //StrStrI(modversion,_T("Mison"))|| - //StrStrI(modversion,_T("father"))|| - //StrStrI(modversion,_T("Dragon"))|| - //StrStrI(modversion,_T("$motty"))|| - //StrStrI(modversion,_T("Thunder"))|| - //StrStrI(modversion,_T("BuzzFuzz"))|| - //StrStrI(modversion,_T("Speed-Unit"))|| - //StrStrI(modversion,_T("Killians"))|| - StrStrI(modversion,_T("Element"))|| - //StrStrI(modversion,_T("§¯Å]"))|| //outdated - StrStrI(modversion,_T("Rappi"))|| - StrStrI(modversion,_T("EastShare")) && StrStrI(clientversion,_T("0.29"))|| - StrStrI(modversion,_T("eChanblard v7.0")) || - //StrStrI(modversion,_T("ACAT")) || - //StrStrI(modversion,_T("!FREEANGEL!")) || - StrStrI(modversion,_T(" ")) || - //StrStrI(modversion,_T("Stonehenge")) || - StrStrI(modversion,_T("@RAPTOR")) || - StrStr(modversion,_T("pwNd muLe")) || - StrStrI(modversion,_T("HARDPAW")) || - //StrStrI(modversion,_T("XXL")) || - StrStrI(modversion,_T("LSD")) || - StrStrI(modversion,_T("Bad Donkey")) || //WiZaRd - StrStrI(modversion,_T("DSL-Light-Client")) || //WiZaRd - StrStrI(modversion,_T("Elben")) || //WiZaRd - StrStr(modversion,_T("PROeMule")) || //WiZaRd - StrStrI(modversion,_T("Devil")) || - StrStrI(modversion,_T("Elfen")) || - StrStrI(modversion,_T("Ef-mod 2.0 ")) || //Xman this mod can be abused as a full leecher - StrStrI(modversion,_T("Xtreme Xtended")) || //Xman 15.08.05 - StrStrI(modversion, _T("MirageMod"))|| // " - StrStrI(modversion, _T("SpeedX"))|| - StrStrI(modversion, _T("AIDEADSL"))|| - StrStrI(modversion, _T("Hypnotix"))|| - StrStrI(modversion, _T("BLACKMULE"))|| - StrStrI(modversion, _T("blackviper"))|| - StrStrI(modversion, _T("BlackAngel"))|| - StrStrI(modversion, _T("rabbit"))|| - StrStrI(modversion, _T("rabb_it"))|| - StrStrI(modversion, _T("Raptor"))|| - StrStrI(modversion, _T("Hawkstar"))|| - StrStrI(modversion, _T("ServerClient"))|| - StrStrI(modversion, _T("Love-Angel"))|| - StrStrI(modversion, _T("SuperKiller"))|| - StrStrI(modversion, _T("ZamBoR"))|| - StrStrI(modversion,_T("Morph")) && (StrStrI(modversion,_T("Max")) || StrStrI(modversion,_T("+")) || StrStrI(modversion,_T("×"))) || - StrStrI(modversion, _T("Morph XT"))|| //very bad mod (MPAA ?) - StrStrI(modversion, _T("Mørph"))|| - StrStrI(modversion, _T("BlueHex"))|| - StrStrI(modversion, _T("FlowerPower"))|| - StrStrI(modversion, _T("Fincan"))|| - StrStrI(modversion,_T("OO.de")) || //WiZaRd - StrStrI(modversion,_T("00.de")) || //WiZaRd - StrStrI(modversion,_T("OOde")) || //WiZaRd - StrStrI(modversion,_T("00de")) || - StrStrI(modversion, _T("OS_")) || //Xman most are found via other checks, but not all - StrStrI(modversion, _T("Heartbreaker"))|| - StrStrI(modversion, _T("Arabella"))|| - StrStrI(modversion, _T("Administrator"))|| - StrStrI(modversion, _T("B@d-D3vi7"))|| - StrStrI(modversion, _T("Dying Angel"))|| - StrStrI(modversion, _T("FREAK MOD VENOM"))|| - StrStrI(modversion, _T("CryptedSpeed"))|| - StrStrI(modversion, _T("h34r7b34k3r"))|| - StrStrI(modversion, _T("Exorzist"))|| - StrStrI(modversion, _T("A.i.d.e-A.D.S.L"))|| - StrStrI(modversion, _T("albaR"))|| - StrStrI(modversion, _T("AngelDr"))|| //5/2006 - StrStrI(modversion, _T("Tombstone Reloaded"))|| //5/2006 - StrStrI(modversion, _T("Tombstone Next"))|| //10/2006 - StrStrI(modversion, _T("pP.r8b"))|| //5/2006 - StrStrI(modversion, _T("x0Rz!$T"))|| //E/€xorzist - StrStrI(modversion, _T("€xORz!§T"))|| - _tcsstr(clientversion,_T("eMule Compat v0.40")) || //7/2006 - _tcsstr(clientversion,_T("eMule Compat v127.")) || //8/2006 - StrStrI(modversion, _T("No Ratio"))|| //based on scarangel 7/2006 - StrStrI(modversion, _T("DeathAngel"))|| //based on Xtreme 8/2006 - StrStrI(modversion, _T("PROemule"))|| //9/2006 - StrStrI(modversion, _T("Simple Leecher"))|| //9/2006 - StrStrI(modversion, _T("oFF *+*"))|| //10/2006 - StrStrI(modversion, _T("0FF "))|| //6/2007 - StrStrI(modversion, _T("SmartMuli"))|| //12/2006 - StrStrI(modversion, _T("D10T"))|| //12/2006 - StrStrI(modversion, _T("the fonz"))|| //12/2006 - StrStrI(modversion, _T("TurkMule"))|| //1/2007 - StrStrI(modversion, _T("Hyperdrive"))|| //1/2007 - StrStrI(modversion, _T("NextEvolution"))|| //1/2007 - StrStrI(modversion, _T("Pimp"))|| //3/2007 - StrStrI(modversion, _T("XDP "))|| //6/2007 - StrStrI(modversion, _T("AeOnFlux"))|| //8/2007 - //8/2007 from dlarge: - StrStrI(modversion, _T("Final Fight"))|| //added dlarge - StrStrI(modversion, _T("Fireball"))|| //added dlarge "standart String" - StrStrI(modversion, _T("SunPower"))|| //added dlarge "standart String" - StrStrI(modversion, _T("SuperKiller"))|| //added dlarge - StrStrI(modversion, _T("X-Cite"))|| //added dlarge - StrStrI(modversion, _T("waZZa"))|| //added dlarge - StrStrI(modversion, _T("Merza"))|| //added dlarge - StrStrI(modversion, _T("K.O.T."))|| //added dlarge - StrStrI(modversion, _T("Licokine"))|| //added dlarge - StrStrI(modversion, _T("BlackStar"))|| //added dlarge - StrStrI(modversion, _T("nEwLoGic"))|| //added dlarge - //end - StrStrI(modversion, _T("Applejuice"))|| //6/2007 now ban instead score reduce -//more AJ modstrings - StrStrI(modversion, L"Wikinger") || - StrStrI(modversion, L"ROCKFORCE") || - StrStrI(modversion, L"RC-ATLANTIS") || -//more AJ modstrings -//zz_fly Start - //modstring of XL - _tcsstr(modversion, _T("20071122")) || _tcsstr(modversion, _T("20080228")) || - _tcsstr(modversion, _T("080620")) || _tcsstr(modversion, _T("080307")) || - _tcsstr(modversion, _T("080509")) || _tcsstr(modversion, _T("20080505")) || - _tcsstr(modversion, _T("v 080828")) || _tcsstr(modversion, _T("XL8828")) || - _tcsstr(modversion, _T("build 11230")) || _tcsstr(modversion, _T("20080923")) || - _tcsstr(modversion, _T("ZZULL")) || _tcsstr(modversion, _T("XunaLei")) || - _tcsstr(modversion, _T("XunL")) || _tcsstr(modversion, _T("Xthunder")) || - _tcsstr(modversion, _T("xl build")) || - //end - _tcsstr(modversion, _T("FreeCD")) || //BitComet, changed to hardban - _tcsstr(modversion, _T("PlayMule")) || //PlayMule - ( !CString(modversion).IsEmpty() && CString(modversion).Trim().IsEmpty() ) || //pruma, korean leecher, modversion is a space - _tcsstr(modversion,_T("VMULE")) || //israel - StrStrI(modversion,_T("Goop.co.il")) || - StrStrI(modversion,_T("Razorback")) || - StrStrI(modversion,_T("UlTiMaTiC ")) || //based on MA 3.5 - StrStrI(modversion,_T("Peizheng")) || //gpl-breaker - _tcsstr(modversion,_T("amule")) || //fake version, amule never write a modstring here - _tcsstr(modversion,_T("Amule")) || - //2010/5/29 - _tcsstr(modversion,_T("miniMule")) || //a compatible client, but without share file option. - StrStrI(modversion,_T("EYE888")) || //compatible client in china, but no src - StrStrI(modversion,_T("WebeSo")) || //compatible client in china, but no src //Chengr28 - (_tcsstr(modversion,_T(" 091113")) && !_tcsstr(modversion,_T("VeryCD"))) || //compatible client in china, but no src //tetris - StrStrI(modversion,_T("Unbuyi")) || //a client announced that it is based on a its framework, but in fact it just copy VeryCD's code //Chengr28 - //2010/12/11 - _tcsstr(modversion, _T("easyMule2")) || //protocol bug, lack maintaince, ban -//zz_fly End - _tcsstr(modversion, _T("Neo-R")) || - _tcsstr(modversion, _T("Neo-RS")) || - StrStrI(modversion, _T("Apace")) || - StrStrI(modversion, _T("L!()Netw0rk")) || - StrStrI(modversion, _T("L!ONetwork")) || - StrStrI(modversion, _T("l!onet"))|| - StrStrI(modversion, _T("l!0net"))|| - StrStrI(modversion, _T("lionet"))|| - StrStrI(modversion, _T("li0net"))|| - StrStrI(modversion, _T("li()net"))|| - StrStrI(modversion, _T("L!()Net"))|| - StrStrI(modversion, _T("800STER")) || - StrStrI(modversion, _T("8OOSTER")) || - StrStrI(modversion, _T("BOO$T")) || - StrStrI(modversion, _T("B00ST")) || - StrStrI(modversion, _T("T-L-N BO0ST")) || //by briandgwx - StrStrI(modversion, _T("T L N B O O S T")) || //by taz-me - StrStrI(modversion, _T("iberica")) || //by briandgwx -//from **Riso64Bit** - _tcsstr(modversion, _T("Thor ")) || - _tcsstr(modversion, _T("DeSfAlko")) || - _tcsstr(modversion, _T("The Killer Bean")) || - _tcsstr(modversion, _T("ZZ-R ")) || - _tcsstr(modversion, _T("ZZ-RS ")) || - _tcsstr(modversion, _T("Reptil-Crew-3")) || - _tcsstr(modversion, _T("Anonymous Mod")) || - StrStrI(modversion, _T("NFO.Co.iL")) || - _tcsstr(modversion, _T("Down.co.il")) || - _tcsstr(modversion, _T("Red Projekt")) || - _tcsstr(modversion, _T("centraldivx.com")) || //no source - StrStrI(modversion, _T("emule.co.il")) || - StrStrI(modversion, _T("Fire eMule")) || - StrStrI(modversion, _T("PirateMule")) || - StrStrI(modversion, _T("HighTime")) || - StrStrI(modversion, _T("GPS2Crew")) || - StrStrI(modversion, _T("TLN eMule")) || - StrStrI(modversion, _T("DVD-RS")) || - _tcsstr(modversion, _T("ZZULtimativ-R")) || - _tcsstr(modversion, _T("Div eMule")) || - _tcsstr(modversion, _T("Pwr eMule")) || - //_tcsstr(modversion, _T("VipeR")) || //it become good - _tcsstr(modversion, _T("Methadone")) || - _tcsstr(modversion, _T("Titandonkey")) || - _tcsstr(modversion, _T("SpeedShare")) || - _tcsstr(modversion, _T("Wodan")) || - _tcsstr(modversion, _T("Sikombious")) || - _tcsstr(modversion, _T("HyperTraxx")) || - _tcsstr(modversion, _T("Div pro")) || - _tcsstr(modversion, _T("GangBang")) || - _tcsstr(modversion, _T("WarezFaw")) || - _tcsstr(modversion, _T("Rastak")) || - _tcsstr(modversion, _T("Okinawa")) || - _tcsstr(modversion, _T("Hiroshima")) || - _tcsstr(modversion, _T("Kamikaze")) || - _tcsstr(modversion, _T("Yotoruma")) || - _tcsstr(modversion, _T("Nagasaki")) || - _tcsstr(modversion, _T("Addiction")) || - _tcsstr(modversion, _T("Bondage")) || - _tcsstr(modversion, _T("eMuleLife")) || - StrStrI(modversion, _T("PP-edition")) || - StrStrI(modversion, _T("ZZULtra")) || - _tcsstr(modversion, _T("eMulix")) || - _tcsstr(modversion, _T("BigBang")) || - _tcsstr(modversion, _T("PR0 ")) || //0(zero) - _tcsstr(modversion, _T("PRO ")) || //o - _tcsstr(modversion, _T("LoCMuLe")) || - _tcsstr(modversion, _T("Flux ")) || - //_tcsstr(modversion, _T("Aurora")) || - //_tcsstr(modversion, _T("Alias")) || //although it is the base-version of leechermods, but it has no leecher function, unban it - //_tcsstr(modversion, _T("R-Mod"))|| //same as Alias - _tcsstr(modversion, _T("UniATeam")) || - StrStrI(modversion, _T("Torenkey")) || - StrStrI(modversion, _T("RSVCD")) || - _tcsstr(modversion, _T("BlueEarth")) || - _tcsstr(modversion, _T("RocketMule")) || - _tcsstr(modversion, _T("eMule 0.4")) || //some bad mods write clientversion in modstring - _tcsstr(modversion, _T("Emule")) || - _tcsstr(modversion, _T("eMule v")) || - _tcsstr(modversion, _T("OrAnGe")) || - StrStrI(modversion, _T("Evil Mod")) || - StrStrI(modversion, _T("StulleMule v")) || //real modstring is "StulleMule #.#", no 'v' - StrStrI(modversion, _T("X-Ray v")) || - StrStrI(modversion, _T("Ulti F"))|| - StrStrI(modversion, _T("ChímÊrÂ"))|| - StrStrI(modversion, _T("ÇhïmerÀ"))|| - StrStrI(modversion, _T("Plus Plus"))|| //some of them did not banned in bin - _tcsstr(modversion, _T("UMatic"))|| - _tcsstr(modversion, _T("BRAZILINJAPAN"))|| //no source - StrStrI(modversion, _T("Pigpen"))|| - _tcsstr(modversion, _T("TCMod"))|| - StrStrI(modversion, _T("UltiMatiX"))|| - _tcsstr(modversion, _T("Perestroika"))|| - _tcsstr(modversion, _T("Ebola")) || - StrStrI(modversion, _T("StulleMule Plus")) || - _tcsstr(modversion, _T("DVD-START.COM")) || - (_tcsicmp(clientversion, _T("eMule"))==0) || //the client did not send client version - _tcsstr(modversion, _T("Penthotal")) || - _tcsstr(clientversion,_T("eMule Compat v2.1")) || //+Ultra - //_tcsstr(modversion, _T("TSmod")) || - _tcsstr(modversion, _T("Okaemule")) || - _tcsstr(modversion, _T("Okamula")) || - _tcsstr(modversion, _T("Potenza")) || - _tcsstr(modversion, _T("AntraX MoD")) || - //_tcsstr(modversion, _T("Picapica")) || - //_tcsstr(modversion, _T("PeaceMule")) || - _tcsstr(modversion, _T("0.49b")) || - _tcsstr(modversion, _T("0.49c")) || - _tcsstr(modversion, _T("Metha")) || - //_tcsstr(modversion, _T("XTreme")) || move to fake area - //newlines 2009/11/8 - _tcsstr(modversion, _T("UMatiX-45a")) || - StrStrI(modversion, _T("maultierpower")) || // maultier-power.com sponsorize applejuice - StrStrI(modversion, _T("PoWeR MoD")) || - StrStrI(modversion, _T("UltiAnalyzer")) || - StrStrI(modversion, _T("UBR-Mod")) || - //2009/11/29 - StrStrI(modversion, _T("UltraFast")) || //thl - //2010/4/4 - _tcsstr(modversion, _T("Devils Mod")) || - StrStrI(modversion, _T("-XDP-")) || - //2010/6/6 - _tcsstr(modversion, _T("Sharinghooligan")) || -//end -//from XRAY antileecher start - StrStrI(modversion, L"SPEED EMULE") || //MyTh - StrStrI(modversion, L"SPIKE2 +") || //MyTh hard leecher - //StrStrI(modversion, L"Adunanza") || //MyTh italian ISP-spec com user - StrStrI(modversion, L"Asiklar") || //MyTh apple-com - StrStrI(modversion, L"Shadow") || //MyTh - StrStrI(modversion, L"EPB") || //MyTh - StrStrI(modversion, L"Tyrantmule") || //MyTh - StrStrI(modversion, L"APRC") || //MyTh - StrStrI(modversion, L"Hardstyle") || //MyTh - StrStrI(modversion, L"pP.r12b") || //MyTh - StrStrI(modversion, L"Simple Life") || //MyTh - StrStrI(modversion, L"TYRANUS") || //MyTh - StrStrI(modversion, _T("[OO.de-L33CH4")) || //Stulle - ( StrStrI(modversion, _T("sivka v12e8")) && StrStrI(clientversion, L"0.42e") ) || //m_nClientVersion != MAKE_CLIENT_VERSION(0, 42, 4) // added - Stulle - StrStrI(modversion, L"RapCom") || //added dlarge - StrStrI(modversion, L"SBI leecher") || //added dlarge - StrStrI(modversion, L"TS Next Lite") || //added dlarge -//from XRAY antileecher end - StrStrI(modversion, L"Dein Modstring") || // JvA: moved up from soft because also used by Applejuice - StrStrI(modversion, L"Angelmule") || // JvA: no sources, no changelog, community username,... - StrStrI(modversion, L"TR-P2P-MoD") || // JvA: bad client - StrStrI(modversion, L"Esekci") || // JvA: no sources, no changelog, ... - StrStrI(modversion, L"MaGiX") || // default modstring if activated and unchanged - StrStrI(modversion, L"MorphJC") || // bad 'Justice CS' and PBF for incomplete files - _tcslen(modversion) > 0 && (StrStrI(clientversion,_T("edonkey")) || modversion[0]==_T('[')) || //1. donkey user with modstring, 2. modstring begins with [ this is a known leecher - (StrStrI(modversion, _T("Xtreme")) && StrStrI(modversion, _T("]"))) //bad Xtreme mod - ) - return _T("Bad MODSTRING"); - if(_tcsstr(modversion, _T("xtreme")) || _tcsstr(modversion, _T("XTreme"))) //case sensitive! - return _T("Fake Xtreme"); - -//zz_fly :: fake modstring area -//move some entries from above - if(((_tcsstr(modversion, _T("MorphXT v9.6")) || _tcsstr(modversion, _T("Xtreme 7")) || _tcsstr(modversion, _T("ZZUL Plus 1"))) && _tcsstr(clientversion, _T("0.48a"))) || //should not 0.48a - _tcsstr(modversion, _T("NetF WARP 9")) || //should be NetF WARP 0.3a.9 - _tcsstr(modversion, _T("VeryCD 080126")) || //Fake VeryCD - _tcsstr(modversion, _T("VeryCD 080730")) || //Fake VeryCD - _tcsstr(modversion, _T("VeryCD 080509")) || //Fake VeryCD - _tcsstr(modversion, _T("VeryCD 080606")) || //Fake VeryCD - _tcsstr(modversion, _T("VeryCD 080624")) || //Fake VeryCD - _tcsstr(modversion, _T("VeryCD 080630")) || //Fake VeryCD - (_tcsstr(modversion, _T("easyMule 10")) && _tcsstr(clientversion,_T("0.48a"))) || //easymule 10#### are not based on .48a - (_tcsstr(modversion, _T("VeryCD 080919")) && _tcsstr(clientversion,_T("0.49b"))) //fake clientversion, should be 0.48a - ) - return _T("Fake MODSTRING"); -//zz_fly :: end - - //WiZaRd Bad Modstring Scheme - CString strMod = CString(modversion); - if( strMod.IsEmpty() || - (strMod.Find(_T("CHN "))==0 && strMod.GetLength() > 8) || - (strMod.Find(_T("Apollo"))==0) || //Apollo is a Portugal Mod - (strMod.Find(_T("sivka"))==0) || - (strMod.Find(_T("aMule CVS"))==0) - ) - { - ;//do nothing - } - else - { - if(_tcsstr(clientversion, _T("eMule v")) && (strMod.GetLength() <= 4)) //most of them are fincan - return L"Bad Modstring Scheme"; - int iNumberFound = -1; - _TINT ch; - bool bBad = false; - bool bNotEnd = false; - for(int i = 0; i < strMod.GetLength() && bBad == false; ++i) - { - ch = strMod.GetAt(i); - if( ch == L'.' || ch == L' ' ) - { - bNotEnd = true; //these chars should not be the end of modstring - iNumberFound = -1; //this is a simple hack to not punish mods like TK4 or Spike2 :) - continue; //skip "legal" chars - } - if( ch == L'-' /*|| ch == L'+'*/ ) //connector characters, connect two string or two numbers - { - bNotEnd = true; //these chars should not be the end of modstring - if(iNumberFound != -1) - iNumberFound++; //exclude some modstring like v#.#-a1 - continue; - } - if( _istpunct(ch) || _istspace(ch)) - bBad = true; //illegal punctuation or whitespace character - else if(_istcntrl(ch)) - bBad = true; //control character in modstring!? - else - { - bNotEnd = false; - if( _istdigit(ch) ) - iNumberFound = i; - else if ( (iNumberFound == i-1) && _istxdigit(ch) ) //abcdef is legal in the end of version number, also exclude bowlfish tk4 and so on - { - ;//do nothing - } - else if(iNumberFound != -1) - bBad = true; //that is: number out of row, e.g. not MorphXT v11.9 but Morph11XT.9 - } - } - if(bBad || bNotEnd) - return L"Bad Modstring Scheme"; - } - //WiZaRd - - -//Add by SDC team. -#if defined(SPECIAL_DLP_VERSION) -//Some Bad MODSTRING check - if (wcsstr(modversion, L"eMule-GIFC") || //GPL-Breaker [DragonD] - (wcsstr(clientversion, L"0.49c") && wcsstr(modversion, L"X-Ray 2.")) || //Fake X-Ray Mod [**Riso64Bit**] - (wcsstr(clientversion, L"0.48a") && wcsstr(modversion, L"MorphCA")) || //Fake MorphCA [DargonD] - wcsstr(modversion, L"0.50a") || //It should be a ClientVersion, not a ModString [DargonD] - wcsstr(clientversion, L"4.0h") || //New SpeedyP2P client - wcsstr(modversion, L"OS") || //GPL-Breaker [ieD2k] - wcsstr(modversion, L"THC") || //Fake queues client [Bill Lee] - wcsstr(modversion, L"EggAche") || //Custom ModString - wcsstr(modversion, L"DarkSky") || //Custom ModString - wcsstr(clientversion, L"eMule v5.6a") || //Fake official version [冰靈曦曉] - wcsstr(modversion, L"eMuleTorrent")) //GPL-Breaker [冰靈曦曉] - return L"[SDC]Bad ModString"; -#endif - - return NULL; -} - -LPCTSTR __declspec(dllexport) DLPCheckModstring_Soft(LPCTSTR modversion, LPCTSTR clientversion) -{ - if(modversion==NULL || clientversion==NULL) - return NULL; - - if ( - StrStrI(modversion,_T("Rockesel")) || - StrStrI(modversion,_T("HARDMULE")) || - StrStrI(modversion, _T("Community"))|| - StrStrI(modversion,_T("IcE-MoD"))|| - StrStrI(modversion,_T("a-eDit"))|| - StrStrI(modversion, _T("Ultimativ"))|| - StrStrI(modversion, _T("Ultimate"))|| - //StrStrI(modversion, _T("Ulti F"))|| //move to hard ban - StrStrI(modversion, _T("Enter MoD Name"))|| -// StrStrI(modversion, _T("Dein Modstring"))|| // 3/2007 - //StrStrI(modversion, _T("choose your modstring"))|| // 3/2007 - StrStrI(modversion, _T("La tua Modstring"))|| //italian - //8/2007 from dlarge: - //StrStrI(modversion, _T("Enter Your Modstring"))|| //added dlarge - StrStrI(modversion, _T("Your Modstring")) || - StrStrI(modversion, _T("C-E-R-E-B-R-O")) || //added dlarge - //end - StrStrI(modversion, _T("NewMule"))|| - StrStrI(modversion, _T("smart- muli"))|| - StrStrI(modversion, _T("TCMatic 3"))|| //1/2007 //version 3 is the public version and used as leecher - //StrStrI(clientversion, _T("eMule v2.0")) || //6/2007 fake Xtreme / GPL-breaker - StrStrI(modversion, _T("uptempo")) -//zz_fly Start - ||_tcsstr(clientversion, _T("eMule v0.95g")) //korea - ||_tcsstr(clientversion, _T("eMule v0.47f")) - ||_tcsstr(modversion, _T("Bowlfish")) //international filter, change to softban. - ||StrStrI(modversion, _T("BLACKMULE")) //no completely source, but it seems it do not have leecher functions. - ||_tcsstr(clientversion, _T("eMule v1.")) //ban all version number >= 1.0 - ||_tcsstr(clientversion, _T("eMule v2.")) - //||_tcsstr(clientversion, _T("eMule v3.")) - ||_tcsstr(clientversion, _T("Shareaza v6.")) //Shareaza's current version is 2.5.2 - ||_tcsstr(clientversion, _T("Shareaza v5.")) - ||_tcsstr(clientversion, _T("Shareaza v4.")) - ||_tcsstr(clientversion, _T("Shareaza v3.")) - ||StrStrI(modversion, _T(".COM")) //no domain name in modstring - ||StrStrI(modversion, _T(".ORG")) - ||StrStrI(modversion, _T(".NET")) - ||StrStrI(modversion, _T(".BIZ")) - ||StrStrI(modversion, _T(".INFO")) -//zz_fly End - ||(_tcsstr(clientversion, _T("lphant v2.01")) && _tcsstr(modversion, _T("Plus"))) //www.lphantplus.com, no src - ) - return _T("Bad MODSTRING"); - - -//SDC Main -#if defined(SPECIAL_DLP_VERSION) -#if (defined(ALL_VERYCD_MOD) || defined(VERYCD_TAG)) - if (!wcsstr(modversion, L"VeryCD 090304") && wcsstr(modversion, L"VeryCD")) //It will be checked in DLPCheckNameAndHashAndMod function. - return L"[SDC]All-VeryCD-Mod"; -#elif defined(VERYCD_EASYMULE_MOD) - if (wcsstr(modversion, L"easyMule") || //New versions - (wcsstr(modversion, L"VeryCD") && - //Old versions released in 2007 and 2008 - ((wcsstr(modversion, L" 07") && - (wcsstr(modversion, L"1109") || wcsstr(modversion, L"1207") || wcsstr(modversion, L"1229"))) || - (wcsstr(modversion, L" 08") && - (wcsstr(modversion, L"0125") || wcsstr(modversion, L"0202") || wcsstr(modversion, L"0227") || - wcsstr(modversion, L"0320") || wcsstr(modversion, L"0401") || wcsstr(modversion, L"0506") || - wcsstr(modversion, L"0514") || wcsstr(modversion, L"0701") || wcsstr(modversion, L"0701") || - wcsstr(modversion, L"0722") || wcsstr(modversion, L"0815") || wcsstr(modversion, L"0905") || - wcsstr(modversion, L"0905") || wcsstr(modversion, L"0928") || wcsstr(modversion, L"1015") || - wcsstr(modversion, L"1023") || wcsstr(modversion, L"1023") || wcsstr(modversion, L"1113") || - wcsstr(modversion, L"1121") || wcsstr(modversion, L"1122") || wcsstr(modversion, L"1205") || - wcsstr(modversion, L"1218")))))) - return L"[SDC]VeryCD-EasyMule-Mod"; -#endif -#endif - - return NULL; -} - -LPCTSTR __declspec(dllexport) DLPCheckUsername_Hard(LPCTSTR username) -{ - if(username==NULL) - return NULL; - - if ( -//Chinese Leecher - https://forum.emule-project.net/index.php?showtopic=134097&hl= - _tcsstr(username,L"dianlei.com") || - _tcsstr(username,L"[eMuleBT]") || - _tcsstr(username,L"[PPMule]") || - StrStrI(username,L"TUOTU") || - _tcsstr(username,L"kaggo.com") || - _tcsstr(username,L"[Chinfo]") || - _tcsstr(username,L"vgo.21cn") || -//Chinese Leecher - https://forum.emule-project.net/index.php?showtopic=134097&hl= - //StrStrI(username,_T("$WAREZ$"))|| - //StrStrI(username,_T("Leecha"))|| - //StrStrI(username,_T("Reverse"))|| - //StrStrI(username,_T("$motty"))|| - StrStrI(username,_T("emule-speed"))|| - StrStrI(username,_T("Intuition"))|| - //StrStrI(username,_T("W.I.P."))|| //outdated - //StrStrI(username,_T("celinesexy"))|| - //StrStrI(username,_T("Gate-eMule"))|| - //StrStrI(username,_T("energyfaker"))|| - //StrStrI(username,_T("BuzzFuzz"))|| - //StrStrI(username,_T("Speed-Unit"))|| - //StrStrI(username,_T("Killians"))|| - //StrStrI(username,_T("pubsman"))|| - StrStrI(username,_T("emule-element"))|| - //StrStrI(username,_T("emule")) && StrStrI(username,_T("booster")) || - //StrStrI(username,_T("Rappi")) || - StrStrI(username,_T("Ketamine")) || - StrStrI(username,_T("emuleech.com")) || - //StrStrI(username, _T("SchlumpMule"))|| //" - //StrStrI(username, _T("Safty´s"))|| - StrStr(username, _T("UnKnOwN pOiSoN"))|| - //StrStrI(username, _T("ElfenPower"))|| - //StrStrI(username, _T("eMule Cow"))|| - //StrStrI(username, _T("Freezamule"))|| - StrStrI(username, _T("EGOmule"))|| - StrStrI(username, _T("-=EGOist=-"))|| - //StrStrI(username, _T("FreezaVamp"))|| - StrStrI(username, _T("Muli_Checka"))|| - StrStrI(username,_T("00de.de"))|| - //StrStrI(username,_T("00de")) || - //StrStrI(username,_T("OO.de"))|| - //StrStrI(username,_T("OOde")) || - //StrStrI(username, _T("PrOjEcT-SaNdStOrM"))|| - //StrStrI(username, _T("NotHer eDitiOn"))|| - //StrStrI(username, _T("eSl@d3vil"))|| - //StrStrI(username, _T(" AgentSmith"))|| - //StrStrI(username, _T("rabb_it"))|| - //StrStrI(username, _T("ServerClient"))|| - StrCmpIW(username, _T("Muse"))==0 || //ketamine mod - //StrStr(username, _T("ZamBoR"))|| - //StrStrI(username,_T("HARDMULE")) || - StrStrI(username,_T("futurezone-reloaded")) || - StrStrI(username,_T("Gate-To-Darkness.com")) || - StrStrI(username,_T("Razorback")) || - StrStrI(username,_T("Titanesel.tk")) || - StrStrI(username,_T("bigbang.to")) || - StrStrI(username,_T("leecherclients.org")) || //Xman 10/06 - StrStrI(username,_T("futuremods.de")) || //Xman 10/06 - StrStrI(username,_T(".::Stenoco-Zone::.")) || - StrStrI(username,_T("emule-mods.cc")) || //Xman 01/07 - StrStrI(username,_T("leecher-mod.net")) || //Xman 02/07 - //08/2007 from dlarge: - StrStrI(username,_T("leecher-world.com")) || //added dlarge - StrStrI(username,_T("leecher.biz")) || //added dlarge - //end - //Xman 6/2007: -//more AJ modstrings - //( StrStrI(username, L"[") && StrStrI(username, L"]") - //&& ( - StrStrI(username, L"Applejuice") || - StrStrI(username, L"Wikinger") || - StrStrI(username, L"ROCKFORCE") || - StrStrI(username, L"RC-ATLANTIS") || - StrStrI(username, L"Fireball") || - StrStrI(username, L"SunPower") || - // ) - //) || -// StrStrI(username,_T("AppleJuice")) && StrStrI(username,_T("[")) && StrStrI(username,_T("]")) || - StrStrI(username, L"futuremod.de") || // JvA: apple-com adress -//more AJ modstrings - StrStrI(username, L"@ Raptor") || //added dlarge - StrStrI(username, L"FUCKLW") || //added dlarge -//zz_fly Start - _tcsstr(username,_T("a1[VeryCD]xthame")) || //XL - StrStrI(username,_T("Flashget")) || //FlashGet - _tcsstr(username,_T("http://www.net-xfer.com")) || //netxfer - _tcsstr(username,_T("emuIe-project.net")) || //phishing site - _tcsstr(username,_T("QQDownload")) || //tencent - _tcsstr(username,_T("[Devils][")) || //2009/12/25 - _tcsstr(username,_T("sharing-devils")) || // leecher community - //2010/5/29 - //_tcsstr(username,_T("btbbt.com")) || //community username - //_tcsstr(username,_T("Greendown.Cn")) || //community username //these two sites provide some modified versions. they only hacked the title and changed the default username. i think the users are innocent. unban. - _tcsstr(username,_T("MTVP2P")) || //community username from Chengr28 - _tcsstr(username,_T("qobfxb")) || //community username - _tcsstr(username,_T("[CHN][VeryCD]QQ"))|| //QQDownload -//zz_fly End - StrStrI(username, _T("lionetwork"))|| - StrStrI(username, _T("[lionheart"))|| - StrStrI(username, _T("li@network"))|| - StrStrI(username, _T("l!onetwork"))|| - StrStrI(username, _T("li()net"))|| - StrStrI(username, _T("l!0net"))|| - StrStrI(username, _T("L!()Network")) || - StrStrI(username, _T("Li()Network")) || - StrStrI(username, _T("L!0Network")) || - StrStrI(username, _T("Li@Network")) || -//from **Riso64Bit** - _tcsstr(username, _T("FincanMod")) || //fincan - _tcsstr(username, _T("Finc@nMod")) || - StrStrI(username, _T("titanmule")) || - StrStrI(username, _T(".c0.il")) || //0, zero - StrStrI(username, _T("Goop.Co.il")) || //israel community - StrStrI(username, _T("Div.Co.il")) || - StrStrI(username, _T("emule.co.il")) || - StrStrI(username, _T("pwr.co.il")) || - StrStrI(username, _T("nFo.Co.il")) || - StrStrI(username, _T("lhnet.co.il")) || - StrStrI(username, _T("ynet.co.il")) || - StrStrI(username, _T("wnet.co.il")) || - StrStrI(username, _T("Paf.co.il")) || - StrStrI(username, _T("finder.co.il")) || - StrStrI(username, _T("joop.Co.il")) || - StrStrI(username, _T("Www.NFOil.com")) || - StrStrI(username, _T("TLN eMule")) || - StrStrI(username, _T("LHeMule")) || - StrStrI(username, _T("VMULE 2007")) || - StrStrI(username, _T("TLNGuest")) || - StrStrI(username, _T("Div eMule 2007")) || - StrStrI(username, _T("eMulePro.de.vu")) || - StrStrI(username, _T("emuIe-co.net")) || - StrStrI(username, _T("AE CoM UseR")) || - StrStrI(username, _T("BTFaw.Com")) || - StrStrI(username, _T("warezfaw")) || - StrStrI(username, _T("lh.2y.net")) || - //StrStrI(username, _T("viper-istraeL.Org")) || - StrStrI(username, _T("[Pwr Mule]Usuario")) || - StrStrI(username, _T("Www.D-iL.Net")) || - StrStrI(username, _T("www.aideadsl.com")) || - StrStrI(username, _T("tangot.com")) || - StrStrI(username, _T("r3wlx.com")) || - StrStrI(username, _T("http://yo.com")) || - StrStrI(username, _T("Angel eMule")) || - StrStrI(username, _T("AngelMule")) || - //MyTh NOT to ban! - /* //they are some release groups, although some of them use bad mods, but rest of them is good one. - _tcsstr(username, _T("Ultimativ"))|| - StrStrI(username, _T("gps2c.6x.to")) || - StrStrI(username, _T("maultier-power")) || - _tcsstr(username, _T("RSVCD-Forum")) || - StrStrI(username, _T("rsvcd-crew")) || - StrStrI(username, _T("Ulti-Board")) || - _tcsstr(username, _T("R-Mod"))|| - StrStrI(username, _T("gps2crew")) || - */ - //StrStrI(username, _T("www.eChanblardNext.org")) || - //StrStrI(username, _T("www.e-sipa.de")) || - StrStrI(username, _T("[TEC]")) || //fincan - StrStrI(username, _T("e-Sipa")) || - StrStrI(username, _T("emuleech")) || - StrStrI(username, _T("mkp2p")) || - _tcsstr(username, _T("[ CHN]")) || //a space after bracket - StrStrI(username, _T("PlayMule")) || - StrStrI(username, _T("eDonkey2008")) || - StrStrI(username, _T("Torenkey")) || - //StrStrI(username, _T("sdjtuning")) || - StrStrI(username, _T("RAPCOM")) || - _tcsstr(username, _T("ZZULtimativ-R")) || - _tcsstr(username, _T("ZZ-R ")) || - StrStrI(username, _T("OFF +")) || - StrStrI(username, _T("OFF+")) || - StrStrI(username, _T("Ultim@tiv")) || - StrStrI(username, _T("[CHN][VeryCD][Your")) || - _tcsstr(username, _T("eMuleUniATeam")) || - StrStrI(username, _T("mods.sub.cc")) || - _tcsstr(username, _T("ExtrEMule")) || - _tcsstr(username, _T("Titandonkey")) || - _tcsstr(username, _T("xtmhtl [ePlus]"))|| //same name, same userhash - _tcsstr(username, _T("eMule Accelerator")) || - //2010/4/4 - StrStrI(username, _T("eMule Pro Ultra")) || - StrStrI(username, _T("[CHN][VeryCD][username]")) || //[CHN][VeryCD][username] eMule v0.48a [xl build58] - //2010/5/29 - StrStrI(username, _T("Fireb@ll")) || - //2010/6/6 - StrStrI(username, _T("monster-mod.com")) || - StrStrI(username, _T("Reptil-Crew-3")) || //Reptil mod - StrStrI(username, _T("!Lou-Nissart!")) || //no src only BIN (kick from upload) - - //all sites below are phishing sites - StrStrI(username, _T("www.extremule.com")) || - StrStrI(username, _T("www.emuleproject.com")) || - StrStrI(username, _T("bigbang-emule.de.vu")) || - StrStrI(username, _T("emulenet.de.vu")) || - _tcsstr(username, _T("http://emule.net")) || - StrStrI(username, _T("http://emulo.net")) || - StrStrI(username, _T("http://projekt.org")) || - StrStrI(username, _T("CryptMule.de.vu")) || - StrStrI(username, _T("titanload.to")) || - StrStrI(username, _T("http://emule-projekt.net")) || - StrStrI(username, _T("emuleitalianogratis.com")) || - StrStrI(username, _T("http://www.official-emule.com")) || - StrStrI(username, _T("emulepro.6x.to")) || - //StrStrI(username, _T("power-portal")) || //MyTh NOT to ban! - StrStrI(username, _T("e-mule.nu")) || - StrStrI(username, _T("emulesoftware.com")) || - StrStrI(username, _T("emuleitaliano.com")) || - StrStrI(username, _T("scaricareemule.com")) || - StrStrI(username, _T("emule--it.com")) || - StrStrI(username, _T("italian.eazel.com")) || - StrStrI(username, _T("speed-downloading.com")) || - StrStrI(username, _T("nuovaversione.com")) || - StrStrI(username, _T("emuleplus.com")) || - StrStrI(username, _T("emuleultra.com")) || - StrStrI(username, _T("emule.org")) || - StrStrI(username, _T("[emule.de v")) || //default name: [emule.de v ##] - StrStrI(username, _T("emule.fr")) || - StrStrI(username, _T("emule.ru")) || - StrStrI(username, _T("emule.com")) || - StrStrI(username, _T("emule-mods.biz")) || - StrStrI(username, _T("emule-projet")) || - StrStrI(username, _T("maomao.eu")) || - StrStrI(username, _T("donkey.com")) || - StrStrI(username, _T("super4.com")) || - StrStrI(username, _T("emule.cc")) || - StrStrI(username, _T("emule.net")) || - StrStrI(username, _T("emulegratis.net")) || - //new lines 2009/11/8 - StrStrI(username, _T("emulespeedup.de.vu")) || - StrStrI(username, _T("superemule.6x.to")) || - StrStrI(username, _T("emulea.com")) || - StrStrI(username, _T("emule24horas.com")) || - StrStrI(username, _T("emule.es")) || - StrStrI(username, _T("emulext.net")) || - StrStrI(username, _T("netemule.com")) || - StrStrI(username, _T("gratis-emule.com")) || - StrStrI(username, _T("emuleproject.com")) || - StrStrI(username, _T("emuleplusplus.de")) || - StrStrI(username, _T("wikingergilde")) || - StrStrI(username, _T("emuleclassic.com")) || - StrStrI(username, _T("mega-emule.com")) || - StrStrI(username, _T("speedyp2p.com")) || - StrStrI(username, _T("anubisp2p.com")) || - StrStrI(username, _T("cruxp2p.com")) || - StrStrI(username, _T("downloademulegratis.com")) || - StrStrI(username, _T("emulegold.com")) || - StrStrI(username, _T("pro-sharing.com")) || - StrStrI(username, _T("turbomule ")) || - StrStrI(username, _T("devhancer.com")) || - StrStrI(username, _T("emulefileswap.com")) || - StrStrI(username, _T("p2psharing.biz")) || - StrStrI(username, _T("fastsearchbooster.biz")) || - StrStrI(username, _T("emule-features.6x.to")) || - StrStrI(username, _T("emule-pro.blogspot.com")) || - StrStrI(username, _T("emule-ng.com")) || - StrStrI(username, _T("version049c-official.com")) || - StrStrI(username, _T("emule.to")) || - StrStrI(username, _T("adunanza.italiazip.com")) || - StrStrI(username, _T("emulesoftware.com")) || - StrStrI(username, _T("phpnuke.org")) || - //new lines 2009/11/29 - StrStrI(username, _T("gratis.emule49-info.com")) || - StrStrI(username, _T("emuleds.com")) || - StrStrI(username, _T("scarica-emule-gratis.com")) || - StrStrI(username, _T("mp3edonkeysearch.com")) || - StrStrI(username, _T("mp3rocket.com")) || - StrStrI(username, _T("emule-rocket.com")) || - StrStrI(username, _T("MonkeyP2P")) || - //new lines 2010/01/17 - StrStrI(username, _T("http://alpha-gaming.net")) || - //new lines 2010/4/4 - StrStrI(username, _T("piolet.com")) || - StrStrI(username, _T("hermesp2p.com")) || - StrStrI(username, _T("shareghost.com")) || - StrStrI(username, _T("zultrax.com")) || - StrStrI(username, _T("getfasterp2p.com")) || - StrStrI(username, _T("pro-sharing.com")) || - StrStrI(username, _T("truxshare.com")) || - StrStrI(username, _T("meteorshare.com")) || - StrStrI(username, _T("manolito.com")) || - StrStrI(username, _T("blubster.com")) || - StrStrI(username, _T("fastsearchbooster.biz")) || - StrStrI(username, _T("e-mule-")) || // detect any mirror simil to "e-mule-it.com" - StrStrI(username, _T("download-gratis-emule.com")) || - StrStrI(username, _T("emule-italy.it")) || - StrStrI(username, _T("e-mule.be")) || - StrStrI(username, _T("official-emule")) || - StrStrI(username, _T("emule-gratis.it")) || - StrStrI(username, _T("devhancer")) || - //2010/5/29 - StrStrI(username, _T("dbgo.com")) || - StrStrI(username, _T("net2search.com")) || - //2010/6/6 - StrStrI(username, _T("p2phood.com")) || - StrStrI(username, _T("intelpeers.com")) || -//End - StrStrI(username,_T("[LSD.19")) //Xman 21.06.2005 definitive not a good mod, with protocol bugs - ) - return _T("Bad USERNAME"); - - - //new ketamine - //if(StrStrI(username, _T("[ePlus]")) != StrRStrI(username,NULL, _T("[ePlus]"))) //old version - if(_tcslen(username) >=14) - { - LPCTSTR tempstr=StrStr(username, _T("[ePlus]")); - if(tempstr && _tcslen(tempstr)>=7) - if(StrStr(tempstr + 7, _T("[ePlus]"))) - return _T("new Ketamine"); - } - -//Add by SDC team. -#if defined(SPECIAL_DLP_VERSION) -//Some Bad USERNAME check - if (wcsstr(username, L"VgroupTeam") || //Random ModString [doompower] -// wcsstr(username, L"ED2000") || //GPL-Breaker - wcsstr(username, L"[CHN]X_jIQ") || //P2PSearcher, old version - wcsstr(username, L"[CHN]sf") || //P2PSearcher, new version - wcsstr(username, L"[CHN]__VRom") || //P2PSearcher, new version [dark] - wcsstr(username, L".net «Xtreme") || //eMule -LPE-, Fake ModString - wcsstr(username, L"[CHN]yourname") || //Some old chinese leecher and default nickname in some QQDownload client - wcsstr(username, L"28881.com") || //MTVP2P(2013) [雁蝎] - wcsstr(username, L"[CHN]shaohan") || //Xunlei Offline Download Server and Moblie System Apps [Glasses 王子] - wcsstr(username, L"HubbleKadTracker")) //GPL-Breaker [冰靈曦曉] - return L"[SDC]Bad UserName"; -#endif - - return NULL; -} - -LPCTSTR __declspec(dllexport) DLPCheckUsername_Soft(LPCTSTR username) -{ - if(username==NULL) - return NULL; - - if ( - - //Xman 15.08.05 - StrStrI(username, _T(">>Power-Mod")) - //Xman 1/2007 - /* - StrStrI(username,_T("AppleJuice [")) && StrStrI(username,_T("]")) || - StrStrI(username,_T("AppleJuice Mod [")) && StrStrI(username,_T("]")) || - StrStrI(username,_T("AppleJuice eMule [")) && StrStrI(username,_T("]")) //5/2007 - */ -//zz_fly Start korea - ||_tcsstr(username, _T("DONKEY2007")) //korea - ||_tcsstr(username, _T("www.Freang.com")) - ||_tcsstr(username, _T("www.pruna.com")) - ||_tcsstr(username, _T("[KOREA]")) - ||_tcsstr(username, _T("superemule")) - ||_tcsstr(username, _T("PRUNA 2008")) - ||_tcsstr(username, _T("MOYAM")) - ||_tcsstr(username, _T("eDonkey2009")) -//zz_fly End - ) - return _T("Bad USERNAME"); - - //bad mods, where every second sign is - //enough to check two places - - if(_tcslen(username) >=4 - && username[3]<=0x1F - && username[1]<=0x1F - ) - return _T("Community-Username"); //community (based on LSD or it's smasher) - - if(_tcslen(username) >=4 - && username[0]==_T('v') - && StrStr(username, _T(":com ")) - ) - return _T("X-Treme"); - -//Add by SDC team. -#if defined(VERYCD_TAG) - if (StrStrIW(username, L"[VeryCD]") && - //It will be checked in DLPCheckUsername_Hard function. - !(wcsstr(username, L"a1[VeryCD]xthame") || - (StrStrIW(username, L"[CHN][VeryCD]") && (StrStrIW(username, L"[Your") || StrStrIW(username, L"[username]"))) || - wcsstr(username, L"[CHN][VeryCD]QQ"))) - return L"[SDC]VeryCD-Tag"; -#endif - - return NULL; -} - -LPCTSTR __declspec(dllexport) DLPCheckNameAndHashAndMod(const CString& username, const CString& userhash, const CString& modversion) -{ - if(username.IsEmpty() || userhash.IsEmpty()) - return NULL; -//zz_fly Start - //Fake VeryCD - if((_tcsstr(modversion,_T("VeryCD 071107")) || _tcsstr(modversion,_T("VeryCD 080307")) ) - && _tcsstr(username, _T("[CHN][VeryCD]yourname")) ) //all fake VeryCD have a default username - return _T("Fake VeryCD"); - - //community userhash check - static const TCHAR refuserhash0[] = _T("154CE646120E96CC798C439A20D26F8D"); // (windows ue) - static const TCHAR refuserhash1[] = _T("455361F9D95C3CD7E6BF2192D1CB3D02"); // (windows ue) - static const TCHAR refuserhash2[] = _T("C8B5F41441C615FBABAD9A7E55294D01"); - static const TCHAR refuserhash6[] = _T("A2221641460E961C8B7FF21A53FB6F6C"); //**Riso64Bit** - static const TCHAR refuserhash7[] = _T("888F4742450EF75F9DD8B7E53FA06FF0"); //**Riso64Bit** - static const TCHAR refuserhash8[] = _T("0B76CC42CB0E81B0DC6120D2BCB36FF9"); //**Riso64Bit** - static const TCHAR refuserhash9[] = _T("EAA383FD9E0E68538C7AC8AD15526F7A"); //**Riso64Bit** - static const TCHAR refuserhash10[]= _T("65C3B2E8940E582630A7F58AF9F26F9E"); //from TaiWan - static const TCHAR refuserhash11[]= _T("9BA09B83DC0EE78BE20280C387936F00"); //from SS1900 - static const TCHAR refuserhash12[]= _T("C92859E4860EA0F15F7837750C886FB6"); //from SS1900 - static const TCHAR refuserhash13[]= _T("CB42F563EE0EA7907395420CAC146FF5"); //From "qobfxb" multi user [DargonD] - - -//SDC fixed -#if defined(SPECIAL_DLP_VERSION) - if (_wcsicmp(userhash, refuserhash0) == 0 || _wcsicmp(userhash, refuserhash1) == 0 || _wcsicmp(userhash, refuserhash2) == 0 || - _wcsicmp(userhash, refuserhash6) == 0 || _wcsicmp(userhash, refuserhash7) == 0 || _wcsicmp(userhash, refuserhash8) == 0 || - _wcsicmp(userhash, refuserhash9) == 0 || _wcsicmp(userhash, refuserhash10) == 0 || _wcsicmp(userhash, refuserhash11) == 0 || - _wcsicmp(userhash, refuserhash12) == 0 || - //The official refuserhash13 with NickName "qobfxb" will be checked in DLPCheckUsername_Hard function. - (!wcsstr(username, L"qobfxb") && _wcsicmp(userhash, refuserhash13) == 0)) - return L"[SDC]Community UserHash"; -#else //Official - if(_tcsicmp(userhash,refuserhash0)==0 || _tcsicmp(userhash,refuserhash1)==0 || _tcsicmp(userhash,refuserhash2)==0 - || _tcsicmp(userhash,refuserhash6)==0 || _tcsicmp(userhash,refuserhash7)==0 || _tcsicmp(userhash,refuserhash8)==0 - || _tcsicmp(userhash,refuserhash9)==0 || _tcsicmp(userhash,refuserhash10)==0 - || _tcsicmp(userhash,refuserhash11)==0 || _tcsicmp(userhash,refuserhash12)==0 || _tcsicmp(userhash,refuserhash13)==0) - return _T("Community Userhash"); -#endif - - - //corrupt userhash check - static const TCHAR refuserhash3[] = _T("00000000000E00000000000000006F00"); - static const TCHAR refuserhash4[] = _T("FE000000000E00000000000000006F00"); - if(_tcsicmp(userhash,refuserhash3)==0 || _tcsicmp(userhash,refuserhash4)==0) - return _T("Corrupt UserHash"); - - -//SDC fixed -//Community Userhash check, thanks SquallATF. -#if defined(SPECIAL_DLP_VERSION) - static const wchar_t RefUserHash_5[] = L"DA1CEEE05B0E5319B3B48CAED24C6F4A"; -// static const auto RefUserHash_5(L"DA1CEEE05B0E5319B3B48CAED24C6F4A"); - if (!wcsstr(username, L"QQDownload") && _wcsicmp(userhash, RefUserHash_5) == 0) //The official refuserhash5 with NickName "QQDownload" will be checked in DLPCheckUsername_Hard function. - return L"[SDC]Bad UserHash"; -#else //Official - static const TCHAR refuserhash5[] = _T("DA1CEEE05B0E5319B3B48CAED24C6F4A"); - if (_tcsicmp(userhash, refuserhash5) == 0) - return _T("Bad Userhash"); -#endif - - -//zz_fly End - - //Check for aedit - //remark: a unmodded emule can't send a space at last sign - if(modversion.IsEmpty() && username.Right(1)==_T(" ")) - return _T("AEdit"); - - //Check for Hex-Modstring - if(IsTypicalHex(modversion)) - return _T("Hex-Modstring"); - - //community check - if(username.GetLength()>=7 && username.Right(1)==_T("]")) - { - /* no more needed - //check for gamer - //two checks should be enough. - if(username.Right(6).Left(1)==userhash.Mid(5,1) - && username.Right(3).Left(1)==userhash.Mid(7,1) - ) - return _T("old united"); - */ - - //check for special nickaddon - int find=username.ReverseFind(_T('[')); - if(find >= 0) - { - CString addon=username.Mid(find+1); -// int endpos=addon.GetLength()-1; - if(addon.GetLength()>2) - { - //check for snake //12/2006 - /* no more needed, better detection inside Xtreme - for(int i=0; i=_T('0') && addon.GetAt(i)<=_T('9')) ) - { - i=endpos+1; - } - } - if(i==endpos) - return _T("Snake"); - */ - - //Chek for Hex (e.g. X-Treme) - if(IsTypicalHex(addon.Left(addon.GetLength()-1))) - return _T("Hex-Code-Addon"); - } - //zz_fly :: start - if(find == username.GetLength()-6){ - bool bFoundRandomPadding = false; - _TINT ch; - for(int i=1;i<5;i++){ - ch = username.GetAt(find+i); - if( _istpunct(ch) || /*_istspace(ch) ||*/ _istcntrl(ch)){ - bFoundRandomPadding = true; - break; - } - } - if(bFoundRandomPadding && !modversion.IsEmpty() && (username.Find(_T("http://emule-project.net ["))==0) && (find==25)) - return _T("TLH Community"); //username like "http://emule-project.net [random]" - if(bFoundRandomPadding && modversion.IsEmpty() && (find==username.Find(_T('[')))) - return _T("GhostMod"); //username has a random padding [random], it should be a mod function, but there is no modstring - if(bFoundRandomPadding && (username.Find(_T("Silver Surfer User"))==0) && (modversion.Find(_T("Silver"))==-1)) - return _T("Fake Silver Surfer"); //**Riso64Bit** :: fake silver surfer - } - //zz_fly :: end - } - } - - //thx cyrex - if(modversion.GetLength() == 10 && username.GetLength()>4 && StrStr(username.Right(4),_T("/]")) && StrStr(username,_T("[SE]"))) - return _T("Mystery ModString"); - - -//Add by SDC team. -#if defined(SPECIAL_DLP_VERSION) -//Some Community UserHash check - static const wchar_t SDC_RefUserHash_1[] = L"66B002DADE0E6DBEDF4FCCAA380E6FD4"; //From multi user (TW&CN) [DargonD] - static const wchar_t SDC_RefUserHash_2[] = L"AAEE84C0C30E247CBB99B459255D6F99"; //From NAS_01G multi user [DargonD] - static const wchar_t SDC_RefUserHash_3[] = L"5E02F74DBA0E8A19DBF6733F0AE66F4A"; //Community UserHash [FzH/DargonD] - static const wchar_t SDC_RefUserHash_4[] = L"B6491292AE0E07AC8C6045CAC2DD6F9F"; //Community UserHash [FzH/DargonD] - static const wchar_t SDC_RefUserHash_5[] = L"596B305E050EA842CE38DF3811216F3F"; //Community UserHash [FzH/DargonD] - static const wchar_t SDC_RefUserHash_6[] = L"B1798B2F620E0B676452C6E2EF706F13"; //Invalid UserHash [DargonD] - static const wchar_t SDC_RefUserHash_7[] = L"C1533316C00E3E0D0218843A05E46FAC"; //Invalid UserHash [DargonD] - static const wchar_t SDC_RefUserHash_8[] = L"FE10F3C0610E0A925B85204CE8456F42"; //Invalid UserHash [DargonD] - static const wchar_t SDC_RefUserHash_9[] = L"C9E61DEEF30E0360E2741C9CF1396F94"; //Invalid UserHash [DargonD] - static const wchar_t SDC_RefUserHash_10[] = L"559ACC89D80E90C50A7A0CD3224F6F57"; //Invalid UserHash [DargonD] - static const wchar_t SDC_RefUserHash_11[] = L"6AE1D2DF4B0E8707B6F6BC29E8746F0F"; //Invalid UserHash [DargonD] - static const wchar_t SDC_RefUserHash_12[] = L"8A537F20B80EF9AF02E59E6C087C6F6B"; //Invalid UserHash [DargonD] - static const wchar_t SDC_RefUserHash_13[] = L"3F44A7996F0E17D1F4B319EB58B26F64"; //Invalid UserHash [DargonD] - static const wchar_t SDC_RefUserHash_14[] = L"D0D897BD360EEFF329903E04990B6F86"; //Xunlei - static const wchar_t SDC_RefUserHash_15[] = L"36725093E00E9350F7680C871E946FD1"; //Tencent Offline Download Server UserHash [DargonD] - static const wchar_t SDC_RefUserHash_16[] = L"769D36987E0E313A1501967D0F146F7A"; //UserHash of Xunlei Offline Download Server and Moblie System Apps [pandaleo] -// static const auto SDC_RefUserHash_1(L"66B002DADE0E6DBEDF4FCCAA380E6FD4"); //From multi user (TW&CN) [DargonD] -// static const auto SDC_RefUserHash_2(L"AAEE84C0C30E247CBB99B459255D6F99"); //From NAS_01G multi user [DargonD] -// static const auto SDC_RefUserHash_3(L"5E02F74DBA0E8A19DBF6733F0AE66F4A"); //Community UserHash [FzH/DargonD] -// static const auto SDC_RefUserHash_4(L"B6491292AE0E07AC8C6045CAC2DD6F9F"); //Community UserHash [FzH/DargonD] -// static const auto SDC_RefUserHash_5(L"596B305E050EA842CE38DF3811216F3F"); //Community UserHash [FzH/DargonD] -// static const auto SDC_RefUserHash_6(L"B1798B2F620E0B676452C6E2EF706F13"); //Invalid UserHash [DargonD] -// static const auto SDC_RefUserHash_7(L"C1533316C00E3E0D0218843A05E46FAC"); //Invalid UserHash [DargonD] -// static const auto SDC_RefUserHash_8(L"FE10F3C0610E0A925B85204CE8456F42"); //Invalid UserHash [DargonD] -// static const auto SDC_RefUserHash_9(L"C9E61DEEF30E0360E2741C9CF1396F94"); //Invalid UserHash [DargonD] -// static const auto SDC_RefUserHash_10(L"559ACC89D80E90C50A7A0CD3224F6F57"); //Invalid UserHash [DargonD] -// static const auto SDC_RefUserHash_11(L"6AE1D2DF4B0E8707B6F6BC29E8746F0F"); //Invalid UserHash [DargonD] -// static const auto SDC_RefUserHash_12(L"8A537F20B80EF9AF02E59E6C087C6F6B"); //Invalid UserHash [DargonD] -// static const auto SDC_RefUserHash_13(L"3F44A7996F0E17D1F4B319EB58B26F64"); //Invalid UserHash [DargonD] -// static const auto SDC_RefUserHash_14(L"D0D897BD360EEFF329903E04990B6F86"); //Xunlei -// static const auto SDC_RefUserHash_15(L"36725093E00E9350F7680C871E946FD1"); //Tencent Offline Download Server UserHash [DargonD] -// static const auto SDC_RefUserHash_16(L"769D36987E0E313A1501967D0F146F7A"); //UserHash of Xunlei Offline Download Server and Moblie System Apps [pandaleo] - if (_wcsicmp(userhash, SDC_RefUserHash_1) == 0 || _wcsicmp(userhash, SDC_RefUserHash_2) == 0 || _wcsicmp(userhash, SDC_RefUserHash_3) == 0 || - _wcsicmp(userhash, SDC_RefUserHash_4) == 0 || _wcsicmp(userhash, SDC_RefUserHash_5) == 0 || _wcsicmp(userhash, SDC_RefUserHash_6) == 0 || - _wcsicmp(userhash, SDC_RefUserHash_7) == 0 || _wcsicmp(userhash, SDC_RefUserHash_8) == 0 || _wcsicmp(userhash, SDC_RefUserHash_9) == 0 || - _wcsicmp(userhash, SDC_RefUserHash_10) == 0 || _wcsicmp(userhash, SDC_RefUserHash_11) == 0 || _wcsicmp(userhash, SDC_RefUserHash_12) == 0 || - _wcsicmp(userhash, SDC_RefUserHash_13) == 0 || - (!wcsstr(modversion, L"xl build") && _wcsicmp(userhash, SDC_RefUserHash_14) == 0) || //The SDC_RefUserHash_14 with modstring "xl build" will be checked in DLPCheckModstring_Hard function. - (!wcsstr(username, L"[CHN][VeryCD]QQ") && _wcsicmp(userhash, SDC_RefUserHash_15) == 0) || //The SDC_RefUserHash_15 with NickName "[CHN][VeryCD]QQ" will be checked in DLPCheckUsername_Hard function. - (!wcsstr(username, L"[CHN]shaohan") && _wcsicmp(userhash, SDC_RefUserHash_16) == 0)) //The SDC_RefUserHash_16 with NickName "[CHN]shaohan" will be checked in DLPCheckUsername_Hard function. - return L"[SDC]Community UserHash"; -#endif - - if(modversion.IsEmpty()) - return NULL; - -#define NUMBERSOFSTRING 9 - static const CString testModString[] = {_T("Xtreme"), _T("ScarAngel"), _T("Mephisto"), _T("MorphXT"), _T("EastShare"), _T("StulleMule"), /*_T("Magic Angel"),*/ _T("DreaMule"), _T("X-Mod"), _T("RaJiL")}; - static const float testMinVer[] = {4.4f, 2.5f, 1.5f, 10.0f, 13.0f, 6.0f, /*3.0f,*/ 3.0f, 0.0f, 2.2f}; - for(int i=0; i= testMinVer[i]))) - return _T("ModString Thief"); - } - else if(tag1) - return _T("ModString Thief"); - } - - //doubled «...» in the username, like "username «Xtreme #.#» «abcd»" - int posr1 = username.Find(_T('»')); - int posr2 = username.ReverseFind(_T('»')); - if((posr1 > 5) && (posr2 - posr1 > 5) && ((username.GetAt(posr1 - 5) == _T('«')) || (username.GetAt(posr2 - 5) == _T('«')))) - return _T("Bad Username Paddings"); - //zz_fly :: end - - -//SDC Main -#if defined(SPECIAL_DLP_VERSION) -#if (defined(ALL_VERYCD_MOD) || defined(VERYCD_TAG)) - if (wcsstr(modversion, L"VeryCD 090304") && !wcsstr(username, L"[CHN]shaohan")) //This version has been checked before DLPCheckModstring_Soft function. - return L"[SDC]All-VeryCD-Mod"; -#elif defined(VERYCD_DEFAULT_NICKNAMES) - if (wcsstr(modversion, L"VeryCD") && - //They will be checked in DLPCheckModstring_Hard function. - !(wcsstr(modversion, L" 08") && - (wcsstr(modversion, L"0126") || wcsstr(modversion, L"0730") || wcsstr(modversion, L"0509") || - wcsstr(modversion, L"0606") || wcsstr(modversion, L"0624") || wcsstr(modversion, L"0630"))) && - //Default NickName in a VeryCD-EasyMule-Mod version - (wcsstr(username, L"easyMule.com") || - //VeryCD-Mod and old VeryCD-EasyMule-Mod versions - ((wcsstr(username, L"[CHN]") || wcsstr(username, L"[VeryCD]")) && - (wcsstr(username, L"yourname") || - //New VeryCD-EasyMule-Mod versions - //2009-07 Updated (GB2312) - wcsstr(username, L"我爱电驴") || - wcsstr(username, L"爱分享") || - wcsstr(username, L"分享快乐") || - wcsstr(username, L"上传Happy") || - wcsstr(username, L"爱电驴爱生活") || - wcsstr(username, L"dianlv") || - wcsstr(username, L"自由电驴") || - //2009-07 Updated (Big5, GB2312 to Big5 codepage garbled) - wcsstr(username, L"扂乾萇聶") || - wcsstr(username, L"乾煦砅") || - wcsstr(username, L"煦砅辦氈") || - wcsstr(username, L"奻換Happy") || - wcsstr(username, L"乾萇聶乾汜魂") || - wcsstr(username, L"赻蚕萇聶") || - //2009-08 Updated (GB2312) - wcsstr(username, L"感谢驴友") || - wcsstr(username, L"感谢分享") || - wcsstr(username, L"大家一起来加速") || - wcsstr(username, L"分享越多 下载越快") || - wcsstr(username, L"挂机王") || - wcsstr(username, L"通宵上传") || - wcsstr(username, L"分享互联网") || - //2009-08 Updated (Big5, GB2312 to Big5 codepage garbled) - wcsstr(username, L"覜郅聶衭") || - wcsstr(username, L"覜郅煦砅") || - wcsstr(username, L"湮模珨懂樓厒") || - wcsstr(username, L"煦砅埣嗣 狟婥埣辦") || - wcsstr(username, L"境儂卼") || - wcsstr(username, L"籵秖奻換") || - wcsstr(username, L"煦砅誑薊厙") || - //2013-01 Updated - wcsstr(username, L"[easyMule]"))))) - return L"[SDC]VeryCD-Default-NickNames"; -#endif -#endif - - return NULL; -} - -LPCTSTR __declspec(dllexport) DLPCheckMessageSpam(LPCTSTR messagetext) -{ - if(messagetext==NULL) - return NULL; - - if( - _tcsstr(messagetext, _T("ZamBoR")) || - _tcsstr(messagetext, _T("DI-Emule")) || - _tcsstr(messagetext, _T("Join the L33cher")) || - _tcsstr(messagetext, _T("eMule FX")) || - _tcsstr(messagetext, _T("---> ed2k://|file|Ketamine")) || - _tcsstr(messagetext, _T("robot from RIAA, you can't fight")) || - _tcsstr(messagetext, _T("agent from PeerFactor, she advises you to stop")) || - _tcsstr(messagetext, _T("bot from MPAA, you can't do anything against her")) || - _tcsstr(messagetext, _T("[Sangue-Suga]")) || //3 /2007 - _tcsstr(messagetext, _T("[te@m projekt")) || //5 /2007 - _tcsstr(messagetext, _T("eMule PRO Ultra")) || //8/2007 //include ultra 1 2 3 - _tcsstr(messagetext, _T("HyperMule")) || //8/2007 - _tcsstr(messagetext, _T("FXeMule")) || - _tcsstr(messagetext, _T("angelmule.com")) || //**Riso64Bit** - _tcsstr(messagetext, _T("RocketMule")) //**Riso64Bit** - ) - return (_T("Spam-Message")); - - if(CString(messagetext).Trim().IsEmpty()) - return (_T("Spam-Message")); - - return NULL; -} - -LPCTSTR __declspec(dllexport) DLPCheckHelloTag(UINT tagnumber) -{ - LPCTSTR strSnafuTag=NULL; - switch(tagnumber) - { - case CT_UNKNOWNx12: - case CT_UNKNOWNx13: - case CT_UNKNOWNx14: - case CT_UNKNOWNx16: - case CT_UNKNOWNx17: - case CT_UNKNOWNxE6: strSnafuTag=apszSnafuTag[0];break;//buffer=_T("DodgeBoards");break; - case CT_UNKNOWNx15: strSnafuTag=apszSnafuTag[1];break;//buffer=_T("DodgeBoards & DarkMule |eVorte|X|");break; - case CT_UNKNOWNx22: strSnafuTag=apszSnafuTag[2];break;//buffer=_T("DarkMule v6 |eVorte|X|");break; - case CT_UNKNOWNx5D: - case CT_UNKNOWNx6B: - case CT_UNKNOWNx6C: strSnafuTag=apszSnafuTag[17];break; - case CT_UNKNOWNx74: - case CT_UNKNOWNx87: strSnafuTag=apszSnafuTag[17];break; - case CT_UNKNOWNxF0: - case CT_UNKNOWNxF4: strSnafuTag=apszSnafuTag[17];break; - //case CT_UNKNOWNx69: strSnafuTag=apszSnafuTag[3];break;//buffer=_T("eMuleReactor");break; - case CT_UNKNOWNx79: strSnafuTag=apszSnafuTag[4];break;//buffer=_T("Bionic");break; - case CT_UNKNOWNx83: strSnafuTag=apszSnafuTag[15];break;//buffer=_T("Fusspi");break; - case CT_UNKNOWNx76: - case CT_UNKNOWNxCD: strSnafuTag=apszSnafuTag[16];break;//buffer=_T("www.donkey2002.to");break; - case CT_UNKNOWNx88: - strSnafuTag=apszSnafuTag[5];//[LSD7c] - break; - case CT_UNKNOWNx8c: strSnafuTag=apszSnafuTag[5];break;//buffer=_T("[LSD7c]");break; - case CT_UNKNOWNx8d: strSnafuTag=apszSnafuTag[6];break;//buffer=_T("[0x8d] unknown Leecher - (client version:60)");break; - case CT_UNKNOWNx99: strSnafuTag=apszSnafuTag[7];break;//buffer=_T("[RAMMSTEIN]");break; //STRIKE BACK - case CT_UNKNOWNx97: - case CT_UNKNOWNx98: - case CT_UNKNOWNx9C: - case CT_UNKNOWNxDA: strSnafuTag=apszSnafuTag[3];break;//buffer=_T("eMuleReactor");break; - case CT_UNKNOWNxC8: //Xman x4 - case CT_UNKNOWNxCE: //Xman 20.08.05 - case CT_UNKNOWNxCF: //Xman 20.08.05 - case CT_UNKNOWNx94: //Xman 20.08.05 - case CT_UNKNOWNxc4: strSnafuTag=apszSnafuTag[8];break;//buffer=_T("[MD5 Community]");break; //USED BY NEW BIONIC => 0x12 Sender - case CT_UNKNOWNxEC: strSnafuTag=apszSnafuTag[18];break; //Xman x4 Speedmule - //case CT_FRIENDSHARING: //STRIKE BACK - //break; - case CT_DARK: //STRIKE BACK - case CT_UNKNOWNx7A: - case CT_UNKNOWNxCA: - strSnafuTag=apszSnafuTag[9];break;//buffer=_T("new DarkMule"); - case CT_UNKNOWNx4D: - strSnafuTag=apszSnafuTag[19];break;// pimp my mule misuse an official tag in hello - case CT_UNKNOWNxD2: - strSnafuTag=apszSnafuTag[20];break;//SquallATF - //case CT_UNKNOWNx85: - // strSnafuTag=apszSnafuTag[21];break;//zz_fly - } - - return strSnafuTag; -} - -LPCTSTR __declspec(dllexport) DLPCheckInfoTag(UINT tagnumber) -{ - LPCTSTR strSnafuTag=NULL; - - switch(tagnumber) - { - case ET_MOD_UNKNOWNx12: - case ET_MOD_UNKNOWNx13: - case ET_MOD_UNKNOWNx14: - case ET_MOD_UNKNOWNx17: strSnafuTag=apszSnafuTag[0];break;//("[DodgeBoards]") - case ET_MOD_UNKNOWNx2F: strSnafuTag=apszSnafuTag[10];break;//buffer=_T("[OMEGA v.07 Heiko]");break; - case ET_MOD_UNKNOWNx36: - case ET_MOD_UNKNOWNx5B: - case ET_MOD_UNKNOWNxA6: strSnafuTag=apszSnafuTag[11];break;//buffer=_T("eMule v0.26 Leecher");break; - case ET_MOD_UNKNOWNx60: strSnafuTag=apszSnafuTag[12];break;//buffer=_T("[Hunter]");break; //STRIKE BACK - case ET_MOD_UNKNOWNx76: strSnafuTag=apszSnafuTag[0];break;//buffer=_T("[DodgeBoards]");break; - case ET_MOD_UNKNOWNx50: - case ET_MOD_UNKNOWNxB1: - case ET_MOD_UNKNOWNxB4: - case ET_MOD_UNKNOWNxC8: - case ET_MOD_UNKNOWNxC9: strSnafuTag=apszSnafuTag[13];break;//buffer=_T("[Bionic 0.20 Beta]");break; - case ET_MOD_UNKNOWNxDA: strSnafuTag=apszSnafuTag[14];break;//buffer=_T("[Rumata (rus)(Plus v1f)]");break; - } - - return strSnafuTag; -} diff --git a/package/lean/antileech/src/antiLeech.h b/package/lean/antileech/src/antiLeech.h deleted file mode 100644 index ae333f1a3..000000000 --- a/package/lean/antileech/src/antiLeech.h +++ /dev/null @@ -1,161 +0,0 @@ -#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 diff --git a/package/lean/antileech/src/antiLeech_wx.cpp b/package/lean/antileech/src/antiLeech_wx.cpp deleted file mode 100644 index 887f11e50..000000000 --- a/package/lean/antileech/src/antiLeech_wx.cpp +++ /dev/null @@ -1,25 +0,0 @@ -//Author: greensea -#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; -} diff --git a/package/lean/antileech/src/antiLeech_wx.h b/package/lean/antileech/src/antiLeech_wx.h deleted file mode 100644 index 8ebbd28e3..000000000 --- a/package/lean/antileech/src/antiLeech_wx.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef ANTILEECH_WX_H -#define ANTILEECH_WX_H - -#include -#include -#include // 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 diff --git a/package/lean/antileech/src/autogen.sh b/package/lean/antileech/src/autogen.sh deleted file mode 100644 index ddd3277f3..000000000 --- a/package/lean/antileech/src/autogen.sh +++ /dev/null @@ -1,8 +0,0 @@ -mkdir -pv m4 -libtoolize -aclocal -aclocal -I m4 -automake --add-missing --copy -autoconf - - diff --git a/package/lean/antileech/src/configure.ac b/package/lean/antileech/src/configure.ac deleted file mode 100644 index 389e19446..000000000 --- a/package/lean/antileech/src/configure.ac +++ /dev/null @@ -1,44 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. -# Copyright (C) 2011 Bill Lee -# 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 diff --git a/package/lean/antileech/src/sdc2amule.diff b/package/lean/antileech/src/sdc2amule.diff deleted file mode 100644 index e08a3a75d..000000000 --- a/package/lean/antileech/src/sdc2amule.diff +++ /dev/null @@ -1,61 +0,0 @@ ---- 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 -+#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 diff --git a/package/lean/baidupcs-web/Makefile b/package/lean/baidupcs-web/Makefile deleted file mode 100644 index 7ba4fe87f..000000000 --- a/package/lean/baidupcs-web/Makefile +++ /dev/null @@ -1,86 +0,0 @@ -# -# Copyright (C) 2019 OpenWrt.org -# -# KFERMercer -# -# This is free software, licensed under the GNU General Public License v3. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=baidupcs-web -PKG_VERSION:=3.7.4-nnew -PKG_RELEASE:=$(AUTORELEASE) - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/Erope/BaiduPCS-Go.git -PKG_SOURCE_VERSION:=cffd49d0709f9c7d3dd6ae5c9625f68bfd446166 -PKG_MIRROR_HASH:=2cb9c9e27613cf4126234c969f1928e392108ad4f1580b3eac92339c42a2ab0a - -PKG_LICENSE:=Apache-2.0 -PKG_LICENSE_FILES:=LICENSE - -PKG_CONFIG_DEPENDS:= \ - CONFIG_BAIDUPCS_WEB_COMPRESS_GOPROXY \ - CONFIG_BAIDUPCS_WEB_COMPRESS_UPX - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 -PKG_USE_MIPS16:=0 - -GO_PKG:=github.com/Erope/BaiduPCS-Go -GO_PKG_LDFLAGS:=-s -w -GO_PKG_LDFLAGS_X:=main.Version=v$(PKG_VERSION) - -include $(INCLUDE_DIR)/package.mk -include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk - -define Package/baidupcs-web - TITLE:=BaiduPCS-Web is a web controller for BaiduPCS-Go - SECTION:=net - CATEGORY:=Network - SUBMENU:=Web Servers/Proxies - URL:=https://github.com/Erope/BaiduPCS-Go - DEPENDS:=$(GO_ARCH_DEPENDS) -endef - -define Package/baidupcs-web/description -BaiduPCS-Web is a web controller for BaiduPCS-Go -endef - -define Package/baidupcs-web/config -config BAIDUPCS_WEB_COMPRESS_GOPROXY - bool "Compiling with GOPROXY proxy" - default n - -config BAIDUPCS_WEB_COMPRESS_UPX - bool "Compress executable files with UPX" - depends on !mips64 - default n -endef - -ifeq ($(CONFIG_BAIDUPCS_WEB_COMPRESS_GOPROXY),y) - export GO111MODULE=on - export GOPROXY=https://goproxy.baidu.com -endif - -define Build/Compile -( \ - GOOS=$$$$(go env GOOS) GOARCH=$$$$(go env GOARCH) go get -v github.com/GeertJohan/go.rice/rice/... ; \ - cd $(PKG_BUILD_DIR)/internal/pcsweb ; \ - "$$$$(go env GOPATH)/bin/rice" embed-go ; \ -) - $(call GoPackage/Build/Compile) -ifeq ($(CONFIG_BAIDUPCS_WEB_COMPRESS_UPX),y) - $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/BaiduPCS-Go -endif -endef - -define Package/baidupcs-web/install - $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR)) - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/BaiduPCS-Go $(1)/usr/bin/baidupcs-web -endef - -$(eval $(call GoBinPackage,baidupcs-web)) -$(eval $(call BuildPackage,baidupcs-web)) diff --git a/package/lean/dns2socks/Makefile b/package/lean/dns2socks/Makefile deleted file mode 100644 index 47662fa09..000000000 --- a/package/lean/dns2socks/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-only -# -# Copyright (C) 2021 ImmortalWrt.org - -include $(TOPDIR)/rules.mk - -PKG_NAME:=dns2socks -PKG_VERSION:=2.1 -PKG_RELEASE:=2 - -PKG_SOURCE:=SourceCode.zip -PKG_SOURCE_URL:=@SF/dns2socks -PKG_SOURCE_DATE:=2020-02-18 -PKG_HASH:=406b5003523577d39da66767adfe54f7af9b701374363729386f32f6a3a995f4 - -PKG_MAINTAINER:=ghostmaker -PKG_LICENSE:=BSD-3-Clause -PKG_LICENSE_FILE:=LICENSE - -include $(INCLUDE_DIR)/package.mk - -UNZIP_CMD:=unzip -q -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE) - -define Package/dns2socks - SECTION:=net - CATEGORY:=Network - SUBMENU:=IP Addresses and Names - TITLE:=DNS to SOCKS or HTTP proxy - URL:=http://dns2socks.sourceforge.net/ - DEPENDS:=+libpthread -endef - -define Package/dns2socks/description - This is a command line utility to resolve DNS requests via - a SOCKS tunnel like Tor or a HTTP proxy. -endef - -define Build/Compile - $(TARGET_CC) \ - $(TARGET_CFLAGS) \ - $(TARGET_CPPFLAGS) \ - $(FPIC) \ - -o $(PKG_BUILD_DIR)/DNS2SOCKS/dns2socks \ - $(PKG_BUILD_DIR)/DNS2SOCKS/DNS2SOCKS.c \ - $(TARGET_LDFLAGS) -pthread -endef - -define Package/dns2socks/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/DNS2SOCKS/dns2socks $(1)/usr/bin/dns2socks -endef - -$(eval $(call BuildPackage,dns2socks)) diff --git a/package/lean/dnsforwarder/Makefile b/package/lean/dnsforwarder/Makefile deleted file mode 100644 index 05e7370a0..000000000 --- a/package/lean/dnsforwarder/Makefile +++ /dev/null @@ -1,61 +0,0 @@ -# -# Copyright (C) 2021 ImmortalWrt -# -# -# This is free software, licensed under the GNU General Public License v3. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=dnsforwarder -PKG_VERSION:=6.1.15 -PKG_RELEASE:=11 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/1715173329/dnsforwarder.git -PKG_SOURCE_DATE:=2018-06-26 -PKG_SOURCE_VERSION:=587e61ae4d75dc976f538088b715a3c8ee26c144 -PKG_MIRROR_HASH:=7c141040ae384d254d90b3c3ee502d87330c9fdcd201ff29a669336a27b176d4 - -PKG_LICENSE:=GPL-3.0 -PKG_LICENSE_FILE:=LICENSE -PKG_MAINTAINER:=Dennis - -PKG_FIXUP:=autoreconf -PKG_BUILD_PARALLEL:=1 -PKG_INSTALL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/dnsforwarder - SECTION:=net - CATEGORY:=Network - TITLE:=A simple DNS forwarder - URL:=https://github.com/holmium/dnsforwarder - DEPENDS:=+coreutils +coreutils-base64 +dnsmasq-full +libpthread +wget-ssl -endef - -define Package/dnsforwarder/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/dnsforwarder/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dnsforwarder $(1)/usr/bin/dnsforwarder - - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_CONF) files/etc/config/dnsforwarder $(1)/etc/config/dnsforwarder - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) files/etc/init.d/dnsforwarder $(1)/etc/init.d/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,dnsforwarder)) diff --git a/package/lean/dnsforwarder/files/etc/config/dnsforwarder b/package/lean/dnsforwarder/files/etc/config/dnsforwarder deleted file mode 100644 index da025f7a8..000000000 --- a/package/lean/dnsforwarder/files/etc/config/dnsforwarder +++ /dev/null @@ -1,79 +0,0 @@ - -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' - diff --git a/package/lean/dnsforwarder/files/etc/dnsforwarder/gfw.txt b/package/lean/dnsforwarder/files/etc/dnsforwarder/gfw.txt deleted file mode 100644 index 0bd285173..000000000 --- a/package/lean/dnsforwarder/files/etc/dnsforwarder/gfw.txt +++ /dev/null @@ -1,5605 +0,0 @@ -# GenerationAt 2018-12-09 23:29:36 -protocol tcp -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 -proxy no - - -030buy.com -0rz.tw -1-apple.com.tw -10.tt -1000giri.net -100ke.org -10conditionsoflove.com -10musume.com -123rf.com -12bet.com -12vpn.com -12vpn.net -138.com -141hongkong.com -141jj.com -141tube.com -1688.com.au -173ng.com -177pic.info -17t17p.com -18board.com -18board.info -18onlygirls.com -18p2p.com -18virginsex.com -1949er.org -1984bbs.com -1984bbs.org -1989report.hkja.org.hk -1991way.com -1998cdp.org -1bao.org -1dumb.com -1e100.net -1eew.com -1mobile.com -1mobile.tw -1pondo.tv -2-hand.info -2000fun.com -2008xianzhang.info -2017.hk -21andy.com -21pron.com -21sextury.com -228.net.tw -233abc.com -24hrs.ca -24smile.org -25u.com -2lipstube.com -2shared.com -2waky.com -3-a.net -30boxes.com -315lz.com -32red.com -36rain.com -3a5a.com -3arabtv.com -3boys2girls.com -3d-game.com -3proxy.ru -3ren.ca -3tui.net -466453.com -4bluestones.biz -4chan.com -4dq.com -4everproxy.com -4irc.com -4mydomain.com -4pu.com -4rbtv.com -4shared.com -4sqi.net -51.ca -51jav.org -51luoben.com -5278.cc -56cun04.jigsy.com -5aimiku.com -5i01.com -5isotoi5.org -5maodang.com -63i.com -64museum.org -64tianwang.com -64wiki.com -66.ca -666kb.com -6park.com -6parker.com -7capture.com -7cow.com -8-d.com -85cc.net -85cc.us -85st.com -881903.com -888.com -888poker.com -89-64.org -89.64.charter.constitutionalism.solutions -8news.com.tw -8z1.net -9001700.com -908taiwan.org -91porn.com -91vps.club -92ccav.com -991.com -99btgc01.com -99cn.info -9bis.com -9bis.net -a-normal-day.com -a248.e.akamai.net -a5.com.ru -aamacau.com -abc.com -abc.net.au -abc.pp.ru -abc.xyz -abchinese.com -abclite.net -abematv.akamaized.net -abitno.linpie.com -ablwang.com -aboluowang.com -aboutgfw.com -abs.edu -ac.jiruan.net -accim.org -aceros-de-hispania.com -acevpn.com -acg18.me -acgkj.com -acmedia365.com -acmetoy.com -acnw.com.au -actfortibet.org -actimes.com.au -activpn.com -aculo.us -adcex.com -addictedtocoffee.de -adelaidebbs.com -admin.recaptcha.net -admob.com -adpl.org.hk -ads-twitter.com -adsense.com -adult-sex-games.com -adult.friendfinder.com -adultfriendfinder.com -adultkeep.net -advanscene.com -advertfan.com -ae.hao123.com -ae.org -aenhancers.com -af.mil -afantibbs.com -agnesb.fr -agoogleaday.com -agro.hk -ai-kan.net -ai-wen.net -ai.binwang.me -ai.google -aiph.net -airasia.com -airconsole.com -airvpn.org -aisex.com -aiss.anws.gov.tw -ait.org.tw -aiweiwei.com -aiweiweiblog.com -akademiye.org -akamaihd.net -akiba-online.com -akiba-web.com -akow.org -al-islam.com -al-qimmah.net -alabout.com -alanhou.com -alarab.qa -alasbarricadas.org -alexlur.org -alforattv.net -alhayat.com -alicejapan.co.jp -aliengu.com -alkasir.com -allcoin.com -allconnected.co -alldrawnsex.com -allervpn.com -allfinegirls.com -allgirlmassage.com -allgirlsallowed.org -allgravure.com -alliance.org.hk -allinfa.com -alljackpotscasino.com -allmovie.com -allowed.org -almasdarnews.com -almostmy.com -alphaporno.com -alternate-tools.com -alternativeto.net -altrec.com -alvinalexander.com -alwaysdata.com -alwaysdata.net -alwaysvpn.com -am730.com.hk -amazon.co.jp -amazon.com -ameblo.jp -americangreencard.com -americanunfinished.com -amiblockedornot.com -amigobbs.net -amitabhafoundation.us -amnesty.org -amnesty.org.hk -amnesty.tw -amnestyusa.org -amnyemachen.org -amoiist.com -ampproject.org -amtb-taipei.org -anchorfree.com -ancsconf.org -andfaraway.net -android-x86.org -android.com -androidify.com -androidplus.co -andygod.com -angelfire.com -angularjs.org -animecrazy.net -animeshippuuden.com -aniscartujo.com -annatam.com -anobii.com -anontext.com -anonymise.us -anonymitynetwork.com -anonymizer.com -anpopo.com -answering-islam.org -anthonycalzadilla.com -anti1984.com -antichristendom.com -antiwave.net -anyporn.com -anysex.com -aobo.com.au -aofriend.com -aofriend.com.au -aojiao.org -aolchannels.aol.com -aomiwang.com -apartmentratings.com -apartments.com -apetube.com -api-secure.recaptcha.net -api-verify.recaptcha.net -api.ai -api.dropboxapi.com -api.linksalpha.com -api.proxlet.com -api.pureapk.com -api.recaptcha.net -apiary.io -apidocs.linksalpha.com -apigee.com -apk-dl.com -apkdler.com -apkmirror.com -apkmonk.com -apkplz.com -apkpure.com -aplusvpn.com -app.box.com -app.heywire.com -app.smartmailcloud.com -app.tutanota.com -appdownloader.net -appledaily.com -appledaily.com.hk -appledaily.com.tw -appshopper.com -appsocks.net -appspot.com -appsto.re -aptoide.com -ar.hao123.com -archive.fo -archive.is -archive.li -archive.org -archive.today -archives.gov -archives.gov.tw -arctosia.com -areca-backup.org -arena.taipei -arethusa.su -arlingtoncemetery.mil -army.mil -art4tibet1998.org -artofpeacefoundation.org -artsy.net -asacp.org -asahichinese.com -asdfg.jp -asg.to -asia-gaming.com -asiaharvest.org -asianews.it -asiansexdiary.com -asianspiss.com -asianwomensfilm.de -asiatgp.com -asiatoday.us -askstudent.com -askynz.net -assembla.com -assimp.org -astrill.com -atc.org.au -atchinese.com -atdmt.com -atgfw.org -athenaeizou.com -atlanta168.com -atlaspost.com -atnext.com -authorizeddns.net -authorizeddns.org -authorizeddns.us -autodraw.com -av-e-body.com -av.com -av.movie -av.nightlife141.com -avaaz.org -avbody.tv -avcity.tv -avcool.com -avdb.in -avdb.tv -avfantasy.com -avgle.com -avidemux.org -avmo.pw -avmoo.com -avmoo.net -avmoo.pw -avoision.com -avyahoo.com -axureformac.com -azerbaycan.tv -azerimix.com -azubu.tv -azurewebsites.net -b0ne.com -babynet.com.hk -backchina.com -backpackers.com.tw -backtotiananmen.com -badiucao.com -badjojo.com -badoo.com -bahamut.com.tw -baidu.jp -baijie.org -bailandaily.com -baixing.me -bakgeekhome.tk -banana-vpn.com -bandwagonhost.com -bangbrosnetwork.com -bangchen.net -bangyoulater.com -bankmobilevibe.com -bannedbook.org -bannednews.org -banorte.com -baramangaonline.com -barenakedislam.com -barnabu.co.uk -bartvpn.com -bash-hackers.org -bastillepost.com -bayvoice.net -bb-chat.tv -bb.ttv.com.tw -bbc.co.uk -bbc.com -bbc.in -bbcchinese.com -bbchat.tv -bbci.co.uk -bbg.gov -bbkz.com -bbnradio.org -bbs-tw.com -bbs.brockbbs.com -bbs.cantonese.asia -bbs.ecstart.com -bbs.hanminzu.org -bbs.hasi.wang -bbs.huasing.org -bbs.junglobal.net -bbs.kimy.com.tw -bbs.morbell.com -bbs.mychat.to -bbs.netbig.com -bbs.ozchinese.com -bbs.qmzdd.com -bbs.sina.com -bbs.skykiwi.com -bbs.sou-tong.org -bbs.tuitui.info -bbsdigest.com -bbsfeed.com -bbsland.com -bbsmo.com -bbsone.com -bbtoystore.com -bcast.co.nz -bcc.com.tw -bcchinese.net -bcex.ca -bcmorning.com -bdsmvideos.net -beaconevents.com -bebo.com -beeg.com -beevpn.com -behance.net -behindkink.com -beijing1989.com -beijingspring.com -beijingzx.org -belamionline.com -bell.wiki -bemywife.cc -beric.me -berlintwitterwall.com -berm.co.nz -bestforchina.org -bestgore.com -bestpornstardb.com -bestvpn.com -bestvpnanalysis.com -bestvpnserver.com -bestvpnservice.com -bestvpnusa.com -bet365.com -betfair.com -betternet.co -bettervpn.com -bettween.com -betvictor.com -bewww.net -beyondfirewall.com -bfnn.org -bfsh.hk -bgvpn.com -bianlei.com -biantailajiao.com -biantailajiao.in -biblesforamerica.org -bibox.com -bic2011.org -big.one -bigfools.com -bigjapanesesex.com -bigmoney.biz -bignews.org -bigsound.org -biliworld.com -billypan.com -binance.com -binux.me -bipic.net -bird.so -bit-z.com -bit.do -bit.ly -bitc.bme.emory.edu -bitcointalk.org -bitcoinworld.com -bitfinex.com -bitinka.com.ar -bitmex.com -bitshare.com -bitsnoop.com -bitvise.com -bizhat.com -bjnewlife.org -bjs.org -bjzc.org -bl-doujinsouko.com -blacklogic.com -blackvpn.com -blewpass.com -blinkx.com -blinw.com -blip.tv -blockcn.com -blockless.com -blog.calibre-ebook.com -blog.cnyes.com -blog.daum.net -blog.de -blog.exblog.co.jp -blog.excite.co.jp -blog.expofutures.com -blog.fizzik.com -blog.foolsmountain.com -blog.fuckgfw233.org -blog.goo.ne.jp -blog.google -blog.inoreader.com -blog.istef.info -blog.jackjia.com -blog.jp -blog.kangye.org -blog.lester850.info -blog.martinoei.com -blog.pathtosharepoint.com -blog.pentalogic.net -blog.qooza.hk -blog.ranxiang.com -blog.sina.com.tw -blog.sogoo.org -blog.soylent.com -blog.syx86.cn -blog.syx86.com -blog.taragana.com -blog.tiney.com -blog.xuite.net -blog.youthwant.com.tw -blog.youxu.info -blogblog.com -blogcatalog.com -blogcity.me -blogdns.org -blogger.com -blogimg.jp -bloglines.com -bloglovin.com -blogs.icerocket.com -blogs.libraryinformationtechnology.com -blogs.tampabay.com -blogs.yahoo.co.jp -blogspot.ae -blogspot.al -blogspot.am -blogspot.ba -blogspot.be -blogspot.bg -blogspot.ca -blogspot.cat -blogspot.ch -blogspot.cl -blogspot.co.uk -blogspot.com -blogspot.com.ar -blogspot.com.au -blogspot.com.br -blogspot.com.by -blogspot.com.co -blogspot.com.cy -blogspot.com.ee -blogspot.com.eg -blogspot.com.es -blogspot.com.mt -blogspot.com.ng -blogspot.com.tr -blogspot.com.uy -blogspot.cz -blogspot.de -blogspot.dk -blogspot.fi -blogspot.fr -blogspot.gr -blogspot.hk -blogspot.hr -blogspot.hu -blogspot.ie -blogspot.in -blogspot.is -blogspot.it -blogspot.jp -blogspot.kr -blogspot.li -blogspot.lt -blogspot.lu -blogspot.md -blogspot.mk -blogspot.mx -blogspot.my -blogspot.nl -blogspot.no -blogspot.pe -blogspot.pt -blogspot.qa -blogspot.ro -blogspot.ru -blogspot.se -blogspot.sg -blogspot.si -blogspot.sk -blogspot.sn -blogspot.tw -blogspot.ug -blogtd.net -blogtd.org -bloodshed.net -bloomberg.cn -bloomberg.com -bloomberg.de -bloombergview.com -bloomfortune.com -blueangellive.com -bmfinn.com -bnews.co -bnrmetal.com -boardreader.com -bod.asia -bodog88.com -bolehvpn.net -bolin.netfirms.com -bonbonme.com -bonbonsex.com -bonfoundation.org -bongacams.com -boobstagram.com -book.com.tw -book.zi5.me -bookepub.com -books.com.tw -booktopia.com.au -boomssr.com -bot.nu -botanwang.com -bowenpress.com -boxpn.com -boxun.com -boxun.tv -boxunblog.com -boxunclub.com -boyangu.com -boyfriendtv.com -boysfood.com -boysmaster.com -br.hao123.com -br.st -brainyquote.com -brandonhutchinson.com -braumeister.org -bravotube.net -brazzers.com -break.com -breakgfw.com -breaking911.com -breakingtweets.com -breakwall.net -briefdream.com -briian.com -brizzly.com -brkmd.com -broadbook.com -broadpressinc.com -brucewang.net -brutaltgp.com -bt2mag.com -bt95.com -btaia.com -btbtav.com -btcbank.bank -btctrade.im -btdigg.org -btku.me -btku.org -btspread.com -btsynckeys.com -budaedu.org -buddhanet.com.tw -buddhistchannel.tv -buffered.com -bullog.org -bullogger.com -bunbunhk.com -busayari.com -businessinsider.com -businessweek.com -busu.org -busytrade.com -buugaa.com -buy.yahoo.com.tw -buzzhand.com -buzzhand.net -buzzorange.com -bvpn.com -bwh1.net -bwsj.hk -bx.in.th -bx.tl -bynet.co.il -c-est-simple.com -c-spanvideo.org -c100tibet.org -c1522.mooo.com -c2cx.com -cablegatesearch.net -cachinese.com -cacnw.com -cactusvpn.com -cafepress.com -cahr.org.tw -calameo.com -calebelston.com -calgarychinese.ca -calgarychinese.com -calgarychinese.net -cam4.com -cam4.jp -cam4.sg -camfrog.com -cams.com -cams.org.sg -canadameet.com -canalporno.com -canyu.org -cao.im -caobian.info -caochangqing.com -cap.org.hk -carabinasypistolas.com -cardinalkungfoundation.org -carfax.com -cari.com.my -caribbeancom.com -carmotorshow.com -cartoonmovement.com -casadeltibetbcn.org -casatibet.org.mx -casino.williamhill.com -casinobellini.com -casinoking.com -casinoriva.com -castbox.fm -catch22.net -catchgod.com -catfightpayperview.xxx -catholic.org.hk -catholic.org.tw -cathvoice.org.tw -cattt.com -cbc.ca -cbs.ntu.edu.tw -cbsnews.com -cbtc.org.hk -cccat.cc -cccat.co -ccdtr.org -cchere.com -ccim.org -cclife.ca -cclife.org -cclifefl.org -ccthere.com -cctmweb.net -cctongbao.com -ccue.ca -ccue.com -ccvoice.ca -ccw.org.tw -cdbook.org -cdcparty.com -cdef.org -cdig.info -cdjp.org -cdn-apple.com -cdn-images.mailchimp.com -cdn.assets.lfpcontent.com -cdn.helixstudios.net -cdn.printfriendly.com -cdn.seatguru.com -cdn.softlayer.net -cdn1.lp.saboom.com -cdnews.com.tw -cdninstagram.com -cdp1989.org -cdp1998.org -cdp2006.org -cdpa.url.tw -cdpeu.org -cdpusa.org -cdpweb.org -cdpwu.org -cdw.com -cecc.gov -cellulo.info -cenews.eu -centauro.com.br -centerforhumanreprod.com -centralnation.com -centurys.net -certificate-transparency.org -certificate.revocationcheck.com -cfhks.org.hk -cfos.de -cftfc.com -cgdepot.org -cgst.edu -ch.shvoong.com -change.org -changeip.name -changeip.net -changeip.org -changp.com -changsa.net -channel8news.sg -chaoex.com -chapm25.com -chatnook.com -chaturbate.com -chengmingmag.com -chenguangcheng.com -chenpokong.com -chenpokong.net -chenshan20042005.wordpress.com -cherrysave.com -chhongbi.org -chicagoncmtv.com -china-mmm.jp.net -china-mmm.net -china-mmm.sa.com -china-review.com.ua -china-week.com -china.hket.com -china.ucanews.com -china101.com -china18.org -china21.com -china21.org -china5000.us -chinaaffairs.org -chinaaid.me -chinaaid.net -chinaaid.org -chinaaid.us -chinachange.org -chinachannel.hk -chinacitynews.be -chinacomments.org -chinadialogue.net -chinadigitaltimes.net -chinaelections.org -chinaeweekly.com -chinafreepress.org -chinagate.com -chinageeks.org -chinagfw.org -chinagonet.com -chinagreenparty.org -chinahorizon.org -chinahush.com -chinainperspective.com -chinainterimgov.org -chinalaborwatch.org -chinalawandpolicy.com -chinalawtranslate.com -chinamule.com -chinamz.org -chinapost.com.tw -chinapress.com.my -chinarightsia.org -chinasmile.net -chinasocialdemocraticparty.com -chinasoul.org -chinasucks.net -chinatimes.com -chinatopsex.com -chinatown.com.au -chinatweeps.com -chinaview.wordpress.com -chinaway.org -chinaworker.info -chinaxchina.com -chinayouth.org.hk -chinayuanmin.org -chinese-hermit.net -chinese-leaders.org -chinese-memorial.org -chinese.donga.com -chinese.engadget.com -chinese.irib.ir -chinese.soifind.com -chinesedaily.com -chinesedailynews.com -chinesedemocracy.com -chinesegay.org -chinesen.de -chinesenews.net.au -chinesepen.org -chinesetalks.net -chineseupress.com -chingcheong.com -chinman.net -chithu.org -chn.chosun.com -chobit.cc -chrdnet.com -christianfreedom.org -christianstudy.com -christiantimes.org.hk -christusrex.org -chrlawyers.hk -chrome.com -chromecast.com -chromeexperiments.com -chromercise.com -chromestatus.com -chromium.org -chuang-yen.org -chubold.com -chubun.com -chuizi.net -churchinhongkong.org -chushigangdrug.ch -cienen.com -cineastentreff.de -cipfg.org -circlethebayfortibet.org -cirosantilli.com -citizencn.com -citizenlab.org -citizenscommission.hk -citizensradio.org -city365.ca -city9x.com -citypopulation.de -citytalk.tw -civicparty.hk -civildisobediencemovement.org -civilhrfront.org -civiliangunner.com -civilmedia.tw -ck101.com -cl.d0z.net -clarionproject.org -classicalguitarblog.net -clb.org.hk -cldr.unicode.org -cleansite.biz -cleansite.info -cleansite.us -clearharmony.net -clearsurance.com -clearwisdom.net -clementine-player.org -cling.omy.sg -clinica-tibet.ru -clipfish.de -cloakpoint.com -cloud.mail.ru -club1069.com -cmcn.org -cmi.org.tw -cmp.hku.hk -cms.gov -cmule.com -cmule.org -cmx.im -cn-proxy.com -cn.calameo.com -cn.dayabook.com -cn.fmnnow.com -cn.freeones.com -cn.giganews.com -cn.ibtimes.com -cn.nytstyle.com -cn.sandscotaicentral.com -cn.shafaqna.com -cn.streetvoice.com -cn.thegay.com -cn.uncyclopedia.wikia.com -cn.uptodown.com -cn.voa.mobi -cn2.streetvoice.com -cn6.eu -cna.com.tw -cnabc.com -cnbbnews.wordpress.com -cnd.org -cnex.org.cn -cnineu.com -cnn.com -cnnews.chosun.com -cnpolitics.org -cnproxy.com -co.ng.mil -coat.co.jp -cochina.co -cochina.org -code1984.com -codeshare.io -codeskulptor.org -coin2co.in -coinegg.com -coinex.com -coingi.com -coinrail.co.kr -cointobe.com -coinut.com -collateralmurder.com -collateralmurder.org -com.google -comefromchina.com -comic-mega.me -commandarms.com -commentshk.com -communistcrimes.org -community.windy.com -communitychoicecu.com -compileheart.com -compress.to -connect.facebook.net -conoha.jp -contactmagazine.net -contests.twilio.com -convio.net -coobay.com -coolaler.com -coolder.com -coolloud.org.tw -coolncute.com -coolstuffinc.com -corumcollege.com -cos-moe.com -cosmic.monar.ch -cosplayjav.pl -costco.com -cotweet.com -coursehero.com -cpj.org -cq99.us -crackle.com -crazys.cc -crazyshit.com -crbug.com -crchina.org -crd-net.org -creaders.net -creadersnet.com -creativelab5.com -crisisresponse.google -cristyli.com -crocotube.com -crossfire.co.kr -crossthewall.net -crossvpn.net -crrev.com -crucial.com -csdparty.com -css.pixnet.in -csuchen.de -csw.org.uk -ct.org.tw -ctao.org -ctfriend.net -cthlo.github.io -ctitv.com.tw -cts.com.tw -cuhkacs.org -cuihua.org -cuiweiping.net -culture.tw -cumlouder.com -curvefish.com -cusu.hk -cutscenes.net -cw.com.tw -cyberghost.natado.com -cyberghostvpn.com -cynscribe.com -cytode.us -d-fukyu.com -d100.net -d1b183sg0nvnuh.cloudfront.net -d1c37gjwa26taa.cloudfront.net -d2bay.com -d2pass.com -d3c33hcgiwev3.cloudfront.net -d3rhr7kgmtrq1v.cloudfront.net -dabr.co.uk -dabr.eu -dabr.me -dabr.mobi -dadazim.com -dadi360.com -dafabet.com -dafagood.com -dafahao.com -dafoh.org -daftporn.com -dagelijksestandaard.nl -daidostup.ru -dailidaili.com -dailymotion.com -dailynews.sina.com -daiphapinfo.net -dajiyuan.com -dajiyuan.de -dajiyuan.eu -dajusha.baywords.com -dalailama-archives.org -dalailama.com -dalailama.mn -dalailama.ru -dalailama.usc.edu -dalailama80.org -dalailamacenter.org -dalailamafellows.org -dalailamafilm.com -dalailamafoundation.org -dalailamahindi.com -dalailamainaustralia.org -dalailamajapanese.com -dalailamaprotesters.info -dalailamaquotes.org -dalailamatrust.org -dalailamavisit.org.nz -dalailamaworld.com -dalianmeng.org -daliulian.org -danbooru.donmai.us -danke4china.net -danwei.org -daodu14.jigsy.com -daolan.net -daozhongxing.org -darktech.org -darktoy.net -darpa.mil -dastrassi.org -data-vocabulary.org -data.flurry.com -data.gov.tw -david-kilgour.com -dawangidc.com -daxa.cn -daylife.com -db.tt -dbc.hk -dcard.tw -dcmilitary.com -ddc.com.tw -ddhw.info -ddns.info -ddns.me.uk -ddns.mobi -ddns.ms -ddns.name -ddns.net -ddns.us -de-sci.org -deaftone.com -debug.com -deck.ly -decodet.co -deepmind.com -deezer.com -definebabe.com -deja.com -delcamp.net -delicious.com -demo.opera-mini.net -democrats.org -depositphotos.com -derekhsu.homeip.net -desc.se -design.google -desipro.de -dessci.com -destiny.xfiles.to -destroy-china.jp -deutsche-welle.de -developers.box.net -devio.us -devpn.com -dfas.mil -dfn.org -dharamsalanet.com -dharmakara.net -dhcp.biz -diaoyuislands.org -dictionary.goo.ne.jp -difangwenge.org -digiland.tw -digisfera.com -digitalnomadsproject.org -diigo.com -dilber.se -dingchin.com.tw -dipity.com -directcreative.com -discoins.com -discordapp.com -discordapp.net -discuss.com.hk -discuss4u.com -dish.com -disp.cc -disqus.com -dit-inc.us -dizhidizhi.com -dizhuzhishang.com -djangosnippets.org -djorz.com -dl-laby.jp -dl.box.net -dlsite.com -dlyoutube.com -dm530.net -dmcdn.net -dmm.co.jp -dns-dns.com -dns-stuff.com -dns04.com -dns05.com -dns1.us -dns2.us -dns2go.com -dnscrypt.org -dnset.com -dnsrd.com -dnssec.net -dnvod.tv -doctorvoice.org -dogfartnetwork.com -dojin.com -dok-forum.net -dolc.de -dolf.org.hk -dollf.com -domain.club.tw -domainhelp.search.com -domains.google -domaintoday.com.au -dongtaiwang.com -dongtaiwang.net -dongyangjing.com -dontfilter.us -dontmovetochina.com -dorjeshugden.com -dotplane.com -dotsub.com -dotvpn.com -doub.io -dougscripts.com -douhokanko.net -doujincafe.com -dowei.org -download.aircrack-ng.org -download.cnet.com -download.ithome.com.tw -dphk.org -dpp.org.tw -dpr.info -dragonex.io -dragonsprings.org -dreamamateurs.com -drepung.org -drgan.net -drmingxia.org -dropbooks.tv -dropbox.com -dropboxusercontent.com -drsunacademy.com -drtuber.com -dscn.info -dsmtp.com -dstk.dk -dtdns.net -dtiblog.com -dtic.mil -dtwang.org -duanzhihu.com -duck.com -duckdns.org -duckduckgo-owned-server.yahoo.net -duckduckgo.com -duckload.com -duckmylife.com -duga.jp -duihua.org -duihuahrjournal.org -dumb1.com -dunyabulteni.net -duoweitimes.com -duping.net -duplicati.com -dupola.com -dupola.net -dushi.ca -dvdpac.com -dvorak.org -dw-world.com -dw-world.de -dw.com -dw.de -dwnews.com -dwnews.net -dynamic-dns.net -dynamicdns.biz -dynamicdns.co.uk -dynamicdns.me.uk -dynamicdns.org.uk -dynawebinc.com -dyndns-ip.com -dyndns-pics.com -dyndns.org -dyndns.pro -dynssl.com -dynu.com -dynu.net -dynupdate.no-ip.com -dzze.com -e-classical.com.tw -e-gold.com -e-hentai.org -e-hentaidb.com -e-info.org.tw -e-traderland.net -e-zone.com.hk -e123.hk -earlytibet.com -earthcam.com -earthvpn.com -eastern-ark.com -easternlightning.org -eastturkestan.com -eastturkistan-gov.org -eastturkistancc.org -eastturkistangovernmentinexile.us -easyca.ca -easypic.com -ebony-beauty.com -ebook.hyread.com.tw -ebookbrowse.com -ebookee.com -ebtcbank.com -ecfa.org.tw -echofon.com -ecimg.tw -ecministry.net -economist.com -ecsm.vs.com -edgecastcdn.net -edicypages.com -edmontonchina.cn -edmontonservice.com -edns.biz -edoors.com -edubridge.com -edupro.org -eeas.europa.eu -eesti.ee -eevpn.com -efcc.org.hk -effers.com -efksoft.com -efukt.com -eic-av.com -eireinikotaerukai.com -eisbb.com -eksisozluk.com -electionsmeter.com -elgoog.im -elpais.com -eltondisney.com -emaga.com -emanna.com -embr.in -emilylau.org.hk -empfil.com -emule-ed2k.com -emulefans.com -emuparadise.me -en.favotter.net -en.hao123.com -enanyang.my -enewstree.com -enfal.de -engagedaily.org -englishforeveryone.org -englishfromengland.co.uk -englishpen.org -enlighten.org.tw -entermap.com -entnt.com -environment.google -epa.gov.tw -epac.to -episcopalchurch.org -epochhk.com -epochtimes-bg.com -epochtimes-romania.com -epochtimes.co.il -epochtimes.co.kr -epochtimes.com -epochtimes.cz -epochtimes.de -epochtimes.fr -epochtimes.ie -epochtimes.it -epochtimes.jp -epochtimes.ru -epochtimes.se -epochtimestr.com -epochweek.com -epochweekly.com -eporner.com -equinenow.com -erabaru.net -eracom.com.tw -eraysoft.com.tr -erepublik.com -erights.net -eriversoft.com -erktv.com -ernestmandel.org -erodaizensyu.com -erodoujinlog.com -erodoujinworld.com -eromanga-kingdom.com -eromangadouzin.com -eromon.net -eroprofile.com -eroticsaloon.net -eslite.com -esmtp.biz -esurance.com -etaa.org.au -etadult.com -etaiwannews.com -etcd.io -etherdelta.com -etizer.org -etokki.com -etools.ncol.com -etowns.net -etowns.org -ettoday.net -etvonline.hk -eu.org -eucasino.com -eulam.com -eurekavpt.com -evchk.wikia.com -evschool.net -exblog.jp -exchristian.hk -exmo.com -exmormon.org -expatshield.com -expecthim.com -expekt.com -experts-univers.com -exploader.net -expressvpn.com -exrates.me -extmatrix.com -extremetube.com -exx.com -eyevio.jp -eyny.com -ezpc.tk -ezpeer.com -ezua.com -fa.gov.tw -facebook.br -facebook.com -facebook.design -facebook.hu -facebook.in -facebook.nl -facebook.se -facebookquotes4u.com -faceless.me -facesofnyfw.com -facesoftibetanselfimmolators.info -fail.hk -faith100.org -faithfuleye.com -faiththedog.info -fakku.net -falsefire.com -falun-co.org -falun-ny.net -falun.caltech.edu -falunart.org -falunasia.info -falunau.org -falunaz.net -falundafa-dc.org -falundafa-florida.org -falundafa-nc.org -falundafa-pa.net -falundafa-sacramento.org -falundafa.org -falundafaindia.org -falundafamuseum.org -falungong.club -falungong.de -falungong.org.uk -falunhr.org -faluninfo.de -faluninfo.net -falunpilipinas.net -falunworld.net -familyfed.org -famunion.com -fan-qiang.com -fangbinxing.com -fangeming.com -fangeqiang.com -fanglizhi.info -fangmincn.org -fangong.forums-free.com -fangong.org -fangongheike.com -fanhaodang.com -fanqiang.tk -fanqianghou.com -fanqiangyakexi.net -fanqiangzhe.com -fanswong.com -fanyue.info -fapdu.com -faproxy.com -faqserv.com -fartit.com -farwestchina.com -fast.wistia.com -fastpic.ru -fastssh.com -faststone.org -fatbtc.com -favstar.fm -fawanghuihui.org -faydao.com -fb.com -fb.me -fbaddins.com -fbcdn.net -fbsbx.com -fbworkmail.com -fc2.com -fc2blog.net -fc2china.com -fc2cn.com -fda.gov.tw -fdc64.de -fdc64.org -fdc89.jp -feedburner.com -feeds.fileforum.com -feelssh.com -feer.com -feifeiss.com -feitian-california.org -feitianacademy.org -feministteacher.com -fengzhenghu.com -fengzhenghu.net -fevernet.com -ff.im -fffff.at -fflick.com -ffvpn.com -fgmtv.net -fgmtv.org -fhreports.net -figprayer.com -fileflyer.com -files2me.com -fileserve.com -filesor.com -fillthesquare.org -filmingfortibet.org -filmy.olabloga.pl -filthdump.com -financetwitter.com -finchvpn.com -findmespot.com -findyoutube.com -findyoutube.net -fingerdaily.com -finler.net -firearmsworld.net -firebaseio.com -fireofliberty.org -firetweet.io -firstfivefollowers.com -flagsonline.it -flecheinthepeche.fr -fleshbot.com -fleursdeslettres.com -flgg.us -flgjustice.org -flickr.com -flickrhivemind.net -flickriver.com -fling.com -flipboard.com -flipkart.com -flitto.com -flnet.org -flog.tw -flyvpn.com -flyzy2005.com -fnac.be -fnac.com -fochk.org -focustaiwan.tw -focusvpn.com -fofg-europe.net -fofg.org -fofldfradio.org -fooooo.com -footwiball.com -foreignpolicy.com -forum.baby-kingdom.com -forum.cyberctm.com -forum.idsam.com -forum.my903.com -forum.mymaji.com -forum.omy.sg -forum.palmislife.com -forum.setty.com.tw -forum.sina.com.hk -forum.slime.com.tw -forum.tvb.com -forum.xinbao.de -forum4hk.com -fotile.me -fourface.nodesnoop.com -fourthinternational.org -foxdie.us -foxgay.com -foxsub.com -foxtang.com -fpmt-osel.org -fpmt.org -fpmt.tw -fpmtmexico.org -fq.wikia.com -fqok.org -fqrouter.com -franklc.com -freakshare.com -free-gate.org -free-hada-now.org -free-proxy.cz -free-ss.site -free-ssh.com -free.fr -free4u.com.ar -freealim.com -freebrowser.org -freechal.com -freechina.net -freechina.news -freechinaforum.org -freechinaweibo.com -freeddns.com -freeddns.org -freedomchina.info -freedomcollection.org -freedomhouse.org -freedominfonetweb.wordpress.com -freedomsherald.org -freeforums.org -freefq.com -freefuckvids.com -freegao.com -freeilhamtohti.org -freekwonpyong.org -freelotto.com -freeman2.com -freemoren.com -freemorenews.com -freemuse.org -freenet-china.org -freenetproject.org -freenewscn.com -freeopenvpn.com -freeoz.org -freessh.us -freetcp.com -freetibet.net -freetibet.org -freetibetanheroes.org -freeviewmovies.com -freevpn.me -freevpn.nl -freewallpaper4.me -freewebs.com -freewechat.com -freeweibo.com -freewww.biz -freewww.info -freexinwen.com -freeyellow.com -freeyoutubeproxy.net -friendfeed-media.com -friendfeed.com -friends-of-tibet.org -friendsoftibet.org -fring.com -fringenetwork.com -from-pr.com -from-sd.com -fromchinatousa.net -frommel.net -frontlinedefenders.org -frootvpn.com -fscked.org -fsurf.com -ftchinese.com -ftp1.biz -ftpserver.biz -ftv.com.tw -fucd.com -fuckcnnic.net -fuckgfw.org -fullerconsideration.com -fulue.com -funf.tw -funkyimg.com -funp.com -fuq.com -furbo.org -furhhdl.org -furinkan.com -furl.net -futurechinaforum.org -futuremessage.org -fux.com -fuyin.net -fuyindiantai.org -fuyu.org.tw -fw.cm -fxcm-chinese.com -fxnetworks.com -fzh999.com -fzh999.net -fzlm.com -g-area.org -g-queen.com -g.co -g6hentai.com -gabocorp.com -gaeproxy.com -gaforum.org -galaxymacau.com -galenwu.com -galstars.net -game735.com -gamebase.com.tw -gamejolt.com -gamer.com.tw -gamez.com.tw -gamousa.com -ganges.com -gaoming.net -gaopi.net -gaozhisheng.net -gaozhisheng.org -gardennetworks.com -gardennetworks.org -gartlive.com -gate-project.com -gate.io -gatecoin.com -gather.com -gatherproxy.com -gati.org.tw -gaybubble.com -gaycn.net -gayhub.com -gaymap.cc -gaymenring.com -gaytube.com -gaywatch.com -gazotube.com -gcc.org.hk -gclooney.com -gcmasia.com -gcpnews.com -gcr.io -gdbt.net -gdzf.org -geek-art.net -geekerhome.com -geekheart.info -gekikame.com -gelbooru.com -geocities.co.jp -geocities.com -geocities.jp -gerefoundation.org -get.app -get.how -get.page -getastrill.com -getchu.com -getcloak.com -getfoxyproxy.org -getfreedur.com -getgom.com -geti2p.net -getiton.com -getjetso.com -getlantern.org -getmdl.io -getoutline.org -getsocialscope.com -getsync.com -gettrials.com -gettyimages.com -getuploader.com -gfbv.de -gfgold.com.hk -gfsale.com -gfw.org.ua -gfw.press -ggpht.com -ggssl.com -ghostpath.com -ghut.org -giantessnight.com -gifree.com -giga-web.jp -gigporno.ru -girlbanker.com -gist.github.com -git.io -github.com -githubusercontent.com -gizlen.net -gjczz.com -glass8.eu -global.bing.com -globaljihad.net -globalmediaoutreach.com -globalmuseumoncommunism.org -globalrescue.net -globaltm.org -globalvoices.org -globalvoicesonline.org -globalvpn.net -glock.com -gloryhole.com -glorystar.me -gluckman.com -glype.com -gmail.com -gmbd.cn -gmhz.org -gmll.org -gmodules.com -gmozomg.izihost.org -gnci.org.hk -go-pki.com -go.nesnode.com -go141.com -goagent.biz -goagent.codeplex.com -goagentplus.com -gobet.cc -godfootsteps.org -godns.work -godoc.org -godsdirectcontact.co.uk -godsdirectcontact.org -godsdirectcontact.org.tw -godsimmediatecontact.com -gogotunnel.com -gohappy.com.tw -gojet.krtco.com.tw -gokbayrak.com -golang.org -goldbet.com -goldbetsports.com -goldeneyevault.com -goldenfrog.com -goldjizz.com -goldstep.net -goldwave.com -gongm.in -gongmeng.info -gongminliliang.com -gongwt.com -goo.gl -gooday.xyz -gooddns.info -goodreaders.com -goodreads.com -goodtv.com.tw -goodtv.tv -goofind.com -google.ad -google.ae -google.al -google.am -google.as -google.at -google.az -google.ba -google.be -google.bf -google.bg -google.bi -google.bj -google.bs -google.bt -google.by -google.ca -google.calstate.edu -google.cat -google.cd -google.cf -google.cg -google.ch -google.ci -google.cl -google.cm -google.cn -google.co.ao -google.co.bw -google.co.ck -google.co.cr -google.co.id -google.co.il -google.co.in -google.co.jp -google.co.ke -google.co.kr -google.co.ls -google.co.ma -google.co.mz -google.co.nz -google.co.th -google.co.tz -google.co.ug -google.co.uk -google.co.uz -google.co.ve -google.co.vi -google.co.za -google.co.zm -google.co.zw -google.com -google.com.af -google.com.ag -google.com.ai -google.com.ar -google.com.au -google.com.bd -google.com.bh -google.com.bn -google.com.bo -google.com.br -google.com.bz -google.com.co -google.com.cu -google.com.cy -google.com.do -google.com.ec -google.com.eg -google.com.et -google.com.fj -google.com.gh -google.com.gi -google.com.gt -google.com.hk -google.com.jm -google.com.kh -google.com.kw -google.com.lb -google.com.ly -google.com.mm -google.com.mt -google.com.mx -google.com.my -google.com.na -google.com.nf -google.com.ng -google.com.ni -google.com.np -google.com.om -google.com.pa -google.com.pe -google.com.pg -google.com.ph -google.com.pk -google.com.pr -google.com.py -google.com.qa -google.com.sa -google.com.sb -google.com.sg -google.com.sl -google.com.sv -google.com.tj -google.com.tr -google.com.tw -google.com.ua -google.com.uy -google.com.vc -google.com.vn -google.cv -google.cz -google.de -google.dj -google.dk -google.dm -google.dz -google.ee -google.es -google.fi -google.fm -google.fr -google.ga -google.ge -google.gg -google.gl -google.gm -google.gp -google.gr -google.gy -google.hn -google.hr -google.ht -google.hu -google.ie -google.im -google.iq -google.is -google.it -google.je -google.jo -google.kg -google.ki -google.kz -google.la -google.li -google.lk -google.lt -google.lu -google.lv -google.md -google.me -google.mg -google.mk -google.ml -google.mn -google.ms -google.mu -google.mv -google.mw -google.ne -google.nl -google.no -google.nr -google.nu -google.pl -google.pn -google.ps -google.pt -google.ro -google.rs -google.ru -google.rw -google.sc -google.se -google.sh -google.si -google.sk -google.sm -google.sn -google.so -google.sr -google.st -google.td -google.tg -google.tk -google.tl -google.tm -google.tn -google.to -google.tt -google.vg -google.vu -google.ws -googleapis.cn -googleapis.com -googleapps.com -googlearth.com -googleartproject.com -googleblog.com -googlebot.com -googlechinawebmaster.com -googlecode.com -googlecommerce.com -googledomains.com -googledrive.com -googleearth.com -googlegroups.com -googlehosted.com -googleideas.com -googleinsidesearch.com -googlelabs.com -googlemail.com -googlemashups.com -googlepagecreator.com -googleplay.com -googleplus.com -googlescholar.com -googlesile.com -googlesource.com -googleusercontent.com -googlevideo.com -googleweblight.com -googlezip.net -gopetition.com -goproxing.net -goregrish.com -gospelherald.com -got-game.org -gotdns.ch -gotgeeks.com -gotrusted.com -gotw.ca -gov.taipei -gov.tw -gr8domain.biz -gr8name.biz -grammaly.com -grandtrial.org -grangorz.org -graphis.ne.jp -graphql.org -greasespot.net -great-firewall.com -great-roc.org -greatfire.org -greatfire.us7.list-manage.com -greatfirewall.biz -greatfirewallofchina.net -greatfirewallofchina.org -greatroc.org -greatroc.tw -greatzhonghua.org -greenfieldbookstore.com.hk -greenparty.org.tw -greenpeace.com.tw -greenpeace.org -greenreadings.com -greenvpn.net -greenvpn.org -grotty-monday.com -groups.google.cn -grow.google -gs-discuss.com -gsp.target.com -gstatic.com -gtricks.com -gts-vpn.com -gu-chu-sum.org -guaguass.com -guaguass.org -guancha.org -guaneryu.com -guangming.com.my -guardster.com -guishan.org -gumroad.com -gun-world.net -gunsamerica.com -gunsandammo.com -guo.media -guruonline.hk -gutteruncensored.com -gvlib.com -gvm.com.tw -gvt0.com -gvt1.com -gvt3.com -gwtproject.org -gyalwarinpoche.com -gyatsostudio.com -gzm.tv -gzone-anime.info -h-china.org -h-moe.com -h1n1china.org -h528.com -h5dm.com -h5galgame.me -hacg.club -hacg.in -hacg.li -hacg.me -hacg.red -hacken.cc -hacker.org -hackthatphone.net -hahaxixi.github.io -hahlo.com -hakkatv.org.tw -handcraftedsoftware.org -hanunyi.com -hao.news -haoel.github.io -happy-vpn.com -haproxy.org -hardsextube.com -harunyahya.com -hautelook.com -hautelookcdn.com -have8.com -hbo.com -hclips.com -hd.stheadline.com -hdlt.me -hdtvb.net -hdzog.com -heartyit.com -heavy-r.com -hec.su -hecaitou.net -hechaji.com -heeact.edu.tw -hegre-art.com -heix.pp.ru -helloandroid.com -helloqueer.com -helloss.pw -hellotxt.com -hellouk.org -help.linksalpha.com -helpeachpeople.com -helplinfen.com -helpster.de -helpzhuling.org -hentai.to -hentaitube.tv -hentaivideoworld.com -heqinglian.net -heungkongdiscuss.com -hexieshe.com -hexieshe.xyz -hexxeh.net -heyzo.com -hgseav.com -hhdcb3office.org -hhthesakyatrizin.org -hi-on.org.tw -hidden-advent.org -hide.me -hidecloud.com -hidein.net -hideipvpn.com -hideman.net -hideme.nl -hidemy.name -hidemyass.com -hidemycomp.com -higfw.com -highpeakspureearth.com -highrockmedia.com -hihiforum.com -hihistory.net -hiitch.com -hikinggfw.org -hilive.tv -himalayan-foundation.org -himalayanglacier.com -himemix.com -himemix.net -hitbtc.com -hitomi.la -hiwifi.com -hizb-ut-tahrir.info -hizb-ut-tahrir.org -hizbuttahrir.org -hjclub.info -hk-pub.com -hk.frienddy.com -hk.geocities.com -hk.gradconnection.com -hk.hao123img.com -hk.jiepang.com -hk.knowledge.yahoo.com -hk.myblog.yahoo.com -hk.news.yahoo.com -hk.rd.yahoo.com -hk.search.yahoo.com -hk.video.news.yahoo.com -hk.yahoo.com -hk01.com -hk32168.com -hka8964.wordpress.com -hkacg.com -hkacg.net -hkanews.wordpress.com -hkatvnews.com -hkbc.net -hkbf.org -hkbookcity.com -hkchurch.org -hkci.org.hk -hkcmi.edu -hkcnews.com -hkcoc.com -hkcoc.weather.com.hk -hkdailynews.com.hk -hkday.net -hkdf.org -hkej.com -hkepc.com -hkfaa.com -hkfreezone.com -hkfront.org -hkgolden.com -hkgreenradio.org -hkheadline.com -hkheadline.comblog -hkhkhk.com -hkhrc.org.hk -hkhrm.org.hk -hkip.org.uk -hkjc.com -hkjp.org -hklft.com -hklts.org.hk -hkptu.org -hkreporter.com -hkreporter.loved.hk -hkupop.hku.hk -hkusu.net -hkvwet.com -hkwcc.org.hk -hkzone.org -hmonghot.com -hmv.co.jp -hmvdigital.ca -hmvdigital.com -hnjhj.com -hnntube.com -hola.com -hola.org -holymountaincn.com -holyspiritspeaks.org -home.sina.com -home.so-net.net.tw -homedepot.com -homeperversion.com -homeservershow.com -hongkongfp.com -hongmeimei.com -hongzhi.li -hootsuite.com -hoovers.com -hopedialogue.org -hopto.org -hornygamer.com -hornytrip.com -hotav.tv -hotels.cn -hotfrog.com.tw -hotgoo.com -hotpornshow.com -hotpot.hk -hotshame.com -hotspotshield.com -hotvpn.com -hougaige.com -howtoforge.com -hoxx.com -hpa.gov.tw -hqcdp.org -hqjapanesesex.com -hqmovies.com -hqsbnet.wordpress.com -hqsbonline.wordpress.com -hrcchina.org -hrcir.com -hrea.org -hrichina.org -hrtsea.com -hrw.org -hrweb.org -hsjp.net -hsselite.com -hst.net.tw -hstern.net -hstt.net -ht.ly -htkou.net -htl.li -html5rocks.com -https443.net -https443.org -hua-yue.net -huaglad.com -huanghuagang.org -huangyiyu.com -huaren.us -huaren4us.com -huashangnews.com -huaxia-news.com -huaxiabao.org -huaxin.ph -huayuworld.org -hudatoriq.web.id -hudson.org -huffingtonpost.com -hugoroy.eu -huhaitai.com -huhamhire.com -huiyi.in -hulkshare.com -hulu.com -huluim.com -humanrightsbriefing.org -hung-ya.com -hungerstrikeforaids.org -huobi.com -huobi.pro -huobipro.com -huping.net -hurgokbayrak.com -hurriyet.com.tr -hustlercash.com -hut2.ru -hutianyi.net -hutong9.net -huyandex.com -hwadzan.tw -hwayue.org.tw -hwinfo.com -hxwk.org -hxwq.org -hybrid-analysis.com -hyperrate.com -i-cable.com -i-part.com.tw -i-scmp.com -i.lithium.com -i1.hk -i2p2.de -i2runner.com -i818hk.com -iam.soy -iamtopone.com -iask.bz -iask.ca -iav19.com -ibiblio.org -iblist.com -iblogserv-f.net -ibros.org -ibvpn.com -icams.com -ice.audionow.com -icij.org -icl-fi.org -icoco.com -iconpaper.org -icu-project.org -id.hao123.com -id.heroku.com -iddddg.com -idemocracy.asia -identi.ca -idiomconnection.com -idouga.com -idreamx.com -idv.tw -ieasy5.com -ied2k.net -ienergy1.com -if.ttt -ifan.cz.cc -ifanqiang.com -ifcss.org -ifjc.org -ifreewares.com -ift.tt -igcd.net -igfw.net -igfw.tech -igmg.de -ignitedetroit.net -igoogle.com -igotmail.com.tw -igvita.com -ihakka.net -ihao.org -iicns.com -iipdigital.usembassy.gov -ikstar.com -ikwb.com -illusionfactory.com -ilove80.be -ilovelongtoes.com -im.tv -im88.tw -imageab.com -imagefap.com -imageflea.com -images-gaytube.com -images.comico.tw -imageshack.us -imagevenue.com -imagezilla.net -imb.org -imdb.com -img.dlsite.jp -img.ly -imgchili.net -imgmega.com -imgur.com -imkev.com -imlive.com -immigration.gov.tw -immoral.jp -impact.org.au -impp.mn -in-disguise.com -in99.org -incapdns.net -incloak.com -incredibox.fr -indiandefensenews.in -indiemerch.com -info-graf.fr -initiativesforchina.org -inkui.com -inmediahk.net -innermongolia.org -inote.tw -insecam.org -insidevoa.com -instagram.com -instanthq.com -institut-tibetain.org -international-news.newsmagazine.asia -internet.org -internetdefenseleague.org -internetfreedom.org -internetpopculture.com -inthenameofconfuciusmovie.com -investigating.wordpress.com -inxian.com -iownyour.biz -iownyour.org -ipalter.com -ipfire.org -ipfs.io -iphone4hongkong.com -iphonehacks.com -iphonetaiwan.org -iphonix.fr -ipicture.ru -ipjetable.net -ipobar.com -ipoock.com -iportal.me -ippotv.com -ipredator.se -iptv.com.tw -iptvbin.com -ipvanish.com -iredmail.org -ironbigfools.compython.net -ironpython.net -ironsocket.com -is-a-hunter.com -is.gd -isaacmao.com -isasecret.com -isgreat.org -islahhaber.net -islam.org.hk -islamawareness.net -islamhouse.com -islamicity.com -islamicpluralism.org -islamtoday.net -ismaelan.com -ismalltits.com -ismprofessional.net -isohunt.com -israbox.com -issuu.com -istars.co.nz -istiqlalhewer.com -istockphoto.com -isunaffairs.com -isuntv.com -itaboo.info -itaiwan.gov.tw -italiatibet.org -itasoftware.com -itemdb.com -ithelp.ithome.com.tw -its.caltech.edu -itsaol.com -itshidden.com -itsky.it -itweet.net -iu45.com -iuhrdf.org -iuksky.com -ivacy.com -iverycd.com -ivpn.net -ixquick.com -ixxx.com -iyouport.com -izaobao.us -izles.net -izlesem.org -j.mp -ja.wikipedia.org -jamaat.org -jamyangnorbu.com -jandyx.com -janwongphoto.com -japan-whores.com -japanfirst.asianfreeforum.com -japantimes.co.jp -jav.com -jav101.com -jav2be.com -jav68.tv -javakiba.org -javbus.com -javfor.me -javhd.com -javhip.com -javhub.net -javhuge.com -javlibrary.com -javmobile.net -javmoo.com -javmoo.xyz -javseen.com -javtag.com -javzoo.com -jbtalks.cc -jbtalks.com -jbtalks.my -jcpenney.com -jdwsy.com -jeanyim.com -jetos.com -jex.com -jfqu36.club -jfqu37.xyz -jgoodies.com -jiangweiping.com -jiaoyou8.com -jiehua.cz -jieshibaobao.com -jigglegifs.com -jigong1024.com -jihadintel.meforum.org -jihadology.net -jiji.com -jims.net -jinbushe.org -jingpin.org -jingsim.org -jinpianwang.com -jinroukong.com -jinx.com -jitouch.com -jizzthis.com -jjgirls.com -jkb.cc -jkforum.net -jkub.com -jma.go.jp -jmscult.com -joachims.org -jobnewera.wordpress.com -jobso.tv -journalchretien.net -journalofdemocracy.org -joymiihub.com -joyourself.com -jp.hao123.com -jpl.nasa.gov -jpopforum.net -jtvnw.net -jubushoushen.com -juhuaren.com -jukujo-club.com -juliepost.com -juliereyc.com -junauza.com -june4commemoration.org -junefourth-20.net -jungleheart.com -juoaa.com -justdied.com -justfreevpn.com -justicefortenzin.org -justpaste.it -justtristan.com -juyuange.org -juziyue.com -jwmusic.org -jyxf.net -k-doujin.net -ka-wai.com -kagyu.org -kagyu.org.za -kagyumonlam.org -kagyunews.com.hk -kagyuoffice.org -kagyuoffice.org.tw -kaiyuan.de -kakao.com -kalachakralugano.org -kankan.today -kannewyork.com -kanshifang.com -kantie.org -kanzhongguo.com -kanzhongguo.eu -kaotic.com -karayou.com -karkhung.com -karmapa-teachings.org -karmapa.org -kawaiikawaii.jp -kawase.com -kb.monitorware.com -kba-tx.org -kcoolonline.com -kebrum.com -kechara.com -keepandshare.com -keezmovies.com -kendatire.com -kendincos.net -kenengba.com -keontech.net -kepard.com -kex.com -keycdn.com -khabdha.org -khatrimaza.org -khmusic.com.tw -kichiku-doujinko.com -kik.com -killwall.com -kindleren.com -kineox.free.fr -kingdomsalvation.org -kinghost.com -kingstone.com.tw -kink.com -kinmen.org.tw -kinmen.travel -kir.jp -kissbbao.cn -kiwi.kz -kk-whys.co.jp -kkbox.com -kknews.cc -kmuh.org.tw -knowledgerush.com -kobo.com -kobobooks.com -kodingen.com -kompozer.net -konachan.com -kone.com -koolsolutions.com -koornk.com -koranmandarin.com -korenan2.com -ksdl.org -ksnews.com.tw -kspcoin.com -ktzhk.com -kucoin.com -kui.name -kun.im -kurashsultan.com -kurtmunger.com -kusocity.com -kwcg.ca -kwongwah.com.my -kxsw.life -kyofun.com -kyohk.net -kyoyue.com -kyzyhello.com -kzeng.info -la-forum.org -labiennale.org -ladbrokes.com -lagranepoca.com -lalulalu.com -lama.com.tw -lamayeshe.com -lamnia.co.uk -lamrim.com -lanterncn.cn -lantosfoundation.org -laod.cn -laogai.org -laomiu.com -laoyang.info -laptoplockdown.com -laqingdan.net -larsgeorge.com -lastcombat.com -lastfm.es -latelinenews.com -latibet.org -lbank.info -ld.hao123img.com -le-vpn.com -leafyvpn.net -lecloud.net -leeao.com.cn -lefora.com -left21.hk -legalporno.com -legaltech.law.com -legsjapan.com -leirentv.ca -leisurecafe.ca -leisurepro.com -lematin.ch -lemonde.fr -lenwhite.com -lerosua.org -lers.google -lesoir.be -letou.com -letscorp.net -lflink.com -lflinkup.com -lflinkup.net -lflinkup.org -lhakar.org -lhasocialwork.org -liangyou.net -liangzhichuanmei.com -lianyue.net -liaowangxizang.net -liberal.org.hk -libertytimes.com.tw -library.usc.cuhk.edu.hk -lidecheng.com -lifemiles.com -lighten.org.tw -lightnovel.cn -like.com -limiao.net -line-apps.com -line-scdn.net -line.me -line.naver.jp -linear-abematv.akamaized.net -linglingfa.com -lingvodics.com -link-o-rama.com -linkideo.com -linkuswell.com -linux.org.hk -linuxtoy.org -lionsroar.com -lipuman.com -liquidvpn.com -listentoyoutube.com -listorious.com -lists.w3.org -liu-xiaobo.org -liudejun.com -liuhanyu.com -liujianshu.com -liuxiaobo.net -liuxiaotong.com -livecoin.net -livedoor.jp -liveleak.com -livestation.com -livestream.com -livevideo.com -livingonline.us -livingstream.com -liwangyang.com -lizhizhuangbi.com -lkcn.net -llss.me -load.to -lobsangwangyal.com -localdomain.ws -localpresshk.com -lockestek.com -logbot.net -login.target.com -logiqx.com -londonchinese.ca -longhair.hk -longmusic.com -longtermly.net -longtoes.com -lookpic.com -looktoronto.com -lotsawahouse.org -lotuslight.org.hk -lotuslight.org.tw -lovetvshow.com -lpsg.com -lrfz.com -lrip.org -lsd.org.hk -lsforum.net -lsm.org -lsmchinese.org -lsmkorean.org -lsmradio.com -lsmwebcast.com -lsxszzg.com -ltn.com.tw -luke54.com -luke54.org -lupm.org -lushstories.com -luxebc.com -lvhai.org -lvv2.com -lyfhk.net -lzmtnews.org -m-team.cc -m.hkgalden.com -m.me -m.plixi.com -m.slandr.net -ma.hao123.com -macgamestore.com -macrovpn.com -macts.com.tw -mad-ar.ch -madewithcode.com -madonna-av.com -madrau.com -madthumbs.com -magazines.sina.com.tw -magic-net.info -mahabodhi.org -maiio.net -mail-archive.com -maildns.xyz -maiplus.com -maizhong.org -makemymood.com -makkahnewspaper.com -makzhou.warehouse333.com -malaysiakini.com -mamingzhe.com -manchukuo.net -mangafox.com -mangafox.me -maniash.com -manicur4ik.ru -mansion.com -mansionpoker.com -manta.com -maplew.com -marc.info -marguerite.su -martau.com -martincartoons.com -martsangkagyuofficial.org -maruta.be -marxist.com -marxist.net -marxists.org -mash.to -maskedip.com -mastodon.host -matainja.com -material.io -mathable.io -mathiew-badimon.com -matome-plus.com -matome-plus.net -matsushimakaede.com -mattwilcox.net -maturejp.com -maxing.jp -mayimayi.com -mcadforums.com -mcaf.ee -mcfog.com -mcreasite.com -md-t.org -me.youthwant.com.tw -meansys.com -media.nu.nl -media.org.hk -mediachinese.com -mediafire.com -mediafreakcity.com -medium.com -meetav.com -meetup.com -mefeedia.com -mefound.com -mega.nz -megaproxy.com -megarotic.com -megavideo.com -megurineluka.com -meirixiaochao.com -meltoday.com -meme.yahoo.com -memehk.com -memorybbs.com -memri.org -memrijttm.org -mercyprophet.org -meridian-trust.org -meripet.biz -meripet.com -merit-times.com.tw -meshrep.com -mesotw.com -messenger.com -metacafe.com -metarthunter.com -meteorshowersonline.com -metrohk.com.hk -metrolife.ca -metroradio.com.hk -meyou.jp -meyul.com -mfxmedia.com -mgoon.com -mgstage.com -mh4u.org -mhradio.org -michaelanti.com -michaelmarketl.com -microvpn.com -middle-way.net -mihk.hk -mihr.com -mihua.org -mike.cz.cc -mikesoltys.com -milph.net -milsurps.com -mimiai.net -mimivip.com -mimivv.com -mindrolling.org -minghui-a.org -minghui-b.org -minghui-school.org -minghui.or.kr -minghui.org -minghuiyw.wordpress.com -mingjinglishi.com -mingjingnews.com -mingjingtimes.com -mingpao.com -mingpaocanada.com -mingpaomonthly.com -mingpaonews.com -mingpaony.com -mingpaosf.com -mingpaotor.com -mingpaovan.com -mingshengbao.com -minhhue.net -miniforum.org -ministrybooks.org -minzhuhua.net -minzhuzhanxian.com -minzhuzhongguo.org -miroguide.com -mirrorbooks.com -mist.vip -mitao.com.tw -mitbbs.com -mitbbsau.com -mixero.com -mixpod.com -mixx.com -mizzmona.com -mjib.gov.tw -mjlsh.usc.cuhk.edu.hk -mk5000.com -mlcool.com -mlzs.work -mm-cg.com -mmaaxx.com -mmmca.com -mnewstv.com -mo.nightlife141.com -mobatek.net -mobile01.com -mobileways.de -moby.to -mobypicture.com -moeaic.gov.tw -moeerolibrary.com -mofa.gov.tw -mofaxiehui.com -mofos.com -mog.com -mohu.club -mohu.ml -mol.gov.tw -molihua.org -mondex.org -money-link.com.tw -moneyhome.biz -monitorchina.org -monster.com -moodyz.com -moonbbs.com -moonbingo.com -morningsun.org -moroneta.com -mos.ru -motherless.com -motiyun.com -motor4ik.ru -mousebreaker.com -movements.org -moviefap.com -mp3buscador.com -mp3ye.eu -mpettis.com -mpfinance.com -mpinews.com -mponline.hk -mqxd.org -mrbasic.com -mrbonus.com -mrface.com -mrslove.com -mrtweet.com -msa-it.org -msguancha.com -msha.gov -mswe1.org -mthruf.com -mtw.tl -muchosucko.com -mullvad.net -multiply.com -multiproxy.org -multiupload.com -mummysgold.com -murmur.tw -musicade.net -muslimvideo.com -muzi.com -muzi.net -muzu.tv -mvdis.gov.tw -mvg.jp -mx.hao123.com -mx981.com -my-formosa.com -my-private-network.co.uk -my-proxy.com -my.mail.ru -my.opera.com -my.pcloud.com -my03.com -myactimes.com -myanniu.com -myaudiocast.com -myav.com.tw -mybbs.us -mybet.com -myca168.com -mycanadanow.com -mychinamyhome.com -mychinanet.com -mychinanews.com -mychinese.news -mycnnews.com -mycould.com -mydad.info -myddns.com -myeasytv.com -myeclipseide.com -myforum.com.hk -myforum.com.uk -myfreecams.com -myfreepaysite.com -myfreshnet.com -myftp.info -myftp.name -myiphide.com -mykomica.org -mylftv.com -mymediarom.com -mymoe.moe -mymom.info -mymusic.net.tw -mynetav.net -mynetav.org -mynumber.org -myparagliding.com -mypicture.info -mypop3.net -mypop3.org -mypopescu.com -myradio.hk -myreadingmanga.info -mysecondarydns.com -myshare.url.com.tw -mysinablog.com -mysite.verizon.net -myspace.com -myspacecdn.com -mytalkbox.com -mytizi.com -mywww.biz -myz.info -naacoalition.org -naitik.net -nakido.com -nakuz.com -nalandabodhi.org -nalandawest.org -namgyal.org -namgyalmonastery.org -namsisi.com -nanyang.com -nanyangpost.com -nanzao.com -naol.ca -naol.cc -nat.gov.tw -nat.moe -national-lottery.co.uk -nationsonline.org -nationwide.com -naughtyamerica.com -navyfamily.navy.mil -navyreserve.navy.mil -naweeklytimes.com -nbtvpn.com -nccwatch.org.tw -nch.com.tw -ncn.org -nde.de -ndr.de -ned.org -nekoslovakia.net -nemesis2.qx.net -neo-miracle.com -nepusoku.com -net-fits.pro -netbirds.com -netcolony.com -netflix.com -netme.cc -netsneak.com -network54.com -networkedblogs.com -networktunnel.net -neverforget8964.org -new-3lunch.net -new-akiba.com -new96.ca -newcenturymc.com -newcenturynews.com -newchen.com -newgrounds.com -newipnow.com -newlandmagazine.com.au -newnews.ca -news.cnyes.com -news.hk.msn.com -news.hkpeanut.com -news.msn.com.tw -news.nationalgeographic.com -news.now.com -news.omy.sg -news.seehua.com -news.sina.com.hk -news.sina.com.tw -news.sinchew.com.my -news.singtao.ca -news.tvb.com -news.tvbs.com.tw -news.yahoo.com -news100.com.tw -newsancai.com -newschinacomment.org -newscn.org -newsdetox.ca -newsdh.com -newspeak.cc -newstamago.com -newstapa.org -newstarnet.com -newtaiwan.com.tw -newtalk.tw -newyorktimes.com -nexon.com -next11.co.jp -nextmag.com.tw -nextmedia.com -nexton-net.jp -nexttv.com.tw -nf.id.au -nfjtyd.com -nflxext.com -nflximg.com -nflximg.net -nflxso.net -nflxvideo.net -nga.mil -ngensis.com -nhentai.net -nhi.gov.tw -nhk-ondemand.jp -nic.cz.cc -nic.google -nic.gov -nicovideo.jp -nighost.org -nikkei.com -ninecommentaries.com -ninjacloak.com -ninjaproxy.ninja -nintendium.com -ninth.biz -niusnews.com -njactb.org -njuice.com -nko.navy.mil -nlfreevpn.com -no-ip.org -nobel.se -nobelprize.org -nobodycanstop.us -nofile.io -nokogiri.org -nokola.com -noodlevpn.com -norbulingka.org -nordstrom.com -nordstromimage.com -nordstromrack.com -nordvpn.com -notify.dropboxapi.com -nottinghampost.com -novelasia.com -now.com -now.im -nownews.com -nowtorrents.com -noypf.com -npa.go.jp -npa.gov.tw -npnt.me -nps.gov -nradio.me -nrk.no -ns01.biz -ns01.info -ns01.us -ns02.biz -ns02.info -ns02.us -ns1.name -ns2.name -ns3.name -nsc.gov.tw -ntbk.gov.tw -ntbna.gov.tw -ntbt.gov.tw -ntd.tv -ntdtv.ca -ntdtv.co.kr -ntdtv.com -ntdtv.cz -ntdtv.org -ntdtv.ru -ntdtvla.com -ntrfun.com -ntsna.gov.tw -nubiles.net -nuexpo.com -nukistream.com -nurgo-software.com -nusatrip.com -nutaku.net -nuuvem.com -nuvid.com -nuzcom.com -nvdst.com -nvquan.org -nvtongzhisheng.org -nwtca.org -ny.stgloballink.com -ny.visiontimes.com -nyaa.eu -nydus.ca -nylon-angel.com -nylonstockingsonline.com -nyt.com -nytchina.com -nytcn.me -nytco.com -nyti.ms -nytimes.com -nytimes.map.fastly.net -nytimg.com -nytstyle.com -nzchinese.com -nzchinese.net.nz -observechina.net -obutu.com -ocaspro.com -occupytiananmen.com -oclp.hk -ocreampies.com -ocry.com -october-review.org -oculus.com -oculuscdn.com -oex.com -offbeatchina.com -officeoftibet.com -ofile.org -ogaoga.org -ogate.org -oikos.com.tw -oiktv.com -oizoblog.com -ok.ru -okayfreedom.com -okex.com -okk.tw -old-cat.net -old.honeynet.org -old.nabble.com -olumpo.com -olympicwatch.org -omgili.com -omni7.jp -omnitalk.com -omnitalk.org -on.cc -on2.com -onapp.com -onedrive.live.com -onedumb.com -onejav.com -onion.city -online.recoveryversion.org -onlinecha.com -onlineyoutube.com -onlytweets.com -onmoon.com -onmoon.net -onmypc.biz -onmypc.info -onmypc.net -onmypc.org -onmypc.us -onthehunt.com -ontrac.com -oopsforum.com -open.com.hk -openallweb.com -opendemocracy.net -opendn.xyz -openervpn.in -openid.net -openleaks.org -openvpn.net -openwebster.com -openwrt.org.cn -opml.radiotime.com -opus-gaming.com -organcare.org.tw -organharvestinvestigation.net -organiccrap.com -orgasm.com -orgfree.com -orient-doll.com -orientaldaily.com.my -orn.jp -orzistic.org -osfoora.com -otcbtc.com -otnd.org -otto.de -otzo.com -ourdearamy.com -ourhobby.com -oursogo.com -oursteps.com.au -oursweb.net -ourtv.hk -overplay.net -oversea.istarshine.com -ow.ly -owl.li -oyax.com -oyghan.com -ozchinese.com -ozvoice.org -ozxw.com -ozyoyo.com -pachosting.com -pacificpoker.com -packages.debian.org -packetix.net -pacopacomama.com -padmanet.com -page.bid.yahoo.com -page2rss.com -pagodabox.com -palacemoon.com -paldengyal.com -paljorpublications.com -paltalk.com -panamapapers.sueddeutsche.de -pandapow.co -pandapow.net -pandavpn-jp.com -pandora.com -pandora.tv -panluan.net -panoramio.com -pao-pao.net -paper.li -paperb.us -paradisehill.cc -paradisepoker.com -parkansky.com -partycasino.com -partypoker.com -passion.com -passiontimes.hk -paste.ee -pastebin.com -pastie.org -pbs.org -pbwiki.com -pbworks.com -pbxes.com -pbxes.org -pcanywhere.net -pcc.gov.tw -pcdvd.com.tw -pchome.com.tw -pcij.org -pcstore.com.tw -pct.org.tw -pdetails.com -pdproxy.com -pds.nasa.gov -peace.ca -peacefire.org -peacehall.com -pearlher.org -peeasian.com -pekingduck.org -pemulihan.or.id -pen.io -penchinese.com -penchinese.net -pengyulong.com -penisbot.com -penthouse.com -pentoy.hk -peoplebookcafe.com -peoplenews.tw -peopo.org -percy.in -perfectgirls.net -perfectvpn.net -periscope.tv -persecutionblog.com -persiankitty.com -pfd.org.hk -phapluan.org -phayul.com -philborges.com -philly.com -phmsociety.org -phncdn.com -phobos.apple.com -phosphation13.rssing.com -photodharma.net -photofocus.com -phuquocservices.com -picacomic.com -picacomiccn.com -picasaweb.com -picidae.net -picturedip.com -pictures.playboy.com -picturesocial.com -pimg.tw -pin-cong.com -pin6.com -ping.fm -pinimg.com -pinkrod.com -pinoy-n.com -pinterest.at -pinterest.co.kr -pinterest.co.uk -pinterest.com -pinterest.de -pinterest.dk -pinterest.fr -pinterest.jp -pinterest.nl -pinterest.se -pioneer-worker.forums-free.com -pipii.tv -piposay.com -piraattilahti.org -piring.com -pixelqi.com -pixiv.net -pixnet.net -pk.com -pki.goog -placemix.com -playboy.com -playboyplus.com -player.fm -playno1.com -playpcesor.com -plays.com.tw -plm.org.hk -plunder.com -plurk.com -plus28.com -plusbb.com -pmatehunter.com -pmates.com -po2b.com -pobieramy.top -podictionary.com -pokerstars.com -pokerstars.net -politicalchina.org -politicalconsultation.org -politiscales.net -poloniex.com -polymer-project.org -polymerhk.com -popo.tw -popvote.hk -popyard.com -popyard.org -porn.com -porn2.com -porn5.com -pornbase.org -pornerbros.com -pornhd.com -pornhost.com -pornhub.com -pornhubdeutsch.net -pornmm.net -pornoxo.com -pornrapidshare.com -pornsharing.com -pornsocket.com -pornstarclub.com -porntube.com -porntubenews.com -porntvblog.com -pornvisit.com -port25.biz -portablevpn.nl -poskotanews.com -post01.com -post76.com -post852.com -postadult.com -postimg.org -potvpn.com -power.com -powerapple.com -powercx.com -powerphoto.org -prayforchina.net -premeforwindows7.com -premproxy.com -presentationzen.com -presidentlee.tw -prestige-av.com -pride.google -prisoneralert.com -pritunl.com -privacybox.de -private.com -privateinternetaccess.com -privatepaste.com -privatetunnel.com -privatevpn.com -procopytips.com -prosiben.de -protonvpn.com -provideocoalition.com -provpnaccounts.com -proxfree.com -proxifier.com -proxomitron.info -proxpn.com -proxyanonimo.es -proxydns.com -proxylist.org.uk -proxynetwork.org.uk -proxypy.net -proxyroad.com -proxytunnel.net -proyectoclubes.com -prozz.net -psblog.name -pscp.tv -psiphon.ca -psiphon.civisec.org -psiphon3.com -psiphontoday.com -pts.org.tw -ptt.cc -pttvan.org -pubu.com.tw -puffinbrowser.com -puffstore.com -pullfolio.com -pulse.yahoo.com -punyu.com -pure18.com -pureconcepts.net -pureinsight.org -purepdf.com -purevpn.com -purplelotus.org -pursuestar.com -pushchinawall.com -pussyspace.com -putihome.org -putlocker.com -putty.org -puuko.com -pwned.com -python.com -python.com.tw -pythonhackers.com -pytorch.org -qanote.com -qgirl.com.tw -qhigh.com -qi-gong.me -qiandao.today -qiangyou.org -qidian.ca -qienkuen.org -qiwen.lu -qixianglu.cn -qkshare.com -qoos.com -qpoe.com -qq.co.za -qstatus.com -qtrac.eu -qtweeter.com -quannengshen.org -quantumbooter.net -questvisual.com -quitccp.net -quitccp.org -quora.com -quran.com -quranexplorer.com -qusi8.net -qvodzy.org -qxbbs.org -r18.com -ra.gg -radicalparty.org -radiko.jp -radioaustralia.net.au -radiohilight.net -radiovaticana.org -radiovncr.com -rael.org -raggedbanner.com -raidcall.com.tw -raidtalk.com.tw -rainbowplan.org -raindrop.io -raizoji.or.jp -ramcity.com.au -rangwang.biz -rangzen.com -rangzen.net -rangzen.org -ranyunfei.com -rapbull.net -rapidgator.net -rapidmoviez.com -rapidvpn.com -raremovie.cc -raremovie.net -raw.githubusercontent.com -rawgit.com -rawgithub.com -razyboard.com -rcam.target.com -rcinet.ca -rconversation.blogs.com -rd.com -rdio.com -read01.com -read100.com -readingtimes.com.tw -readmoo.com -readydown.com -realcourage.org -realforum.zkiz.com -realitykings.com -realraptalk.com -realsexpass.com -rebatesrule.net -recordhistory.org -recovery.org.tw -recoveryversion.com.tw -red-lang.org -redballoonsolidarity.org -redchinacn.net -redchinacn.org -redd.it -reddit.com -redditmedia.com -redditstatic.com -redhotlabs.com -redtube.com -referer.us -reflectivecode.com -registry.google -relaxbbs.com -relay.com.tw -releaseinternational.org -religioustolerance.org -renminbao.com -renyurenquan.org -research.jmsc.hku.hk -resilio.com -retweeteffect.com -retweetist.com -retweetrank.com -reuters.com -reutersmedia.net -revleft.com -revver.com -rfa.org -rfachina.com -rfalive1.akacast.akamaistream.net -rfamobile.org -rfaweb.org -rferl.org -rfi.fr -rfi.my -rightbtc.com -rigpa.org -riku.me -rileyguide.com -riseup.net -ritouki.jp -ritter.vg -rixcloud.com -rixcloud.us -rlwlw.com -rmjdw.com -rmjdw132.info -roadshow.hk -roboforex.com -robustnessiskey.com -rocket-inc.net -rocksdb.org -rojo.com -rolia.net -ronjoneswriter.com -roodo.com -rosechina.net -rotten.com -rsdlmonitor.com -rsf-chinese.org -rsf.org -rsgamen.org -rssmeme.com -rtalabel.org -rthk.hk -rthk.org.hk -rthklive2-lh.akamaihd.net -rti.org.tw -rtycminnesota.org -ruanyifeng.com -rukor.org -runbtx.com -rushbee.com -ruten.com.tw -rutube.ru -ruyiseek.com -rxhj.net -s-cute.com -s-dragon.org -s1.nudezz.com -s1heng.com -s1s1s1.com -s3-ap-northeast-1.amazonaws.com -s3-ap-southeast-2.amazonaws.com -s3.amazonaws.com -s8forum.com -sa.hao123.com -sacks.com -sacom.hk -sadistic-v.com -sadpanda.us -safervpn.com -safety.google -saintyculture.com -saiq.me -sakuralive.com -sakya.org -salvation.org.hk -samair.ru -sambhota.org -sanmin.com.tw -sapikachu.net -saveliuxiaobo.com -savemedia.com -savethedate.foo -savetibet.de -savetibet.fr -savetibet.nl -savetibet.org -savetibet.ru -savetibetstore.org -savevid.com -say2.info -sbme.me -sbs.com.au -scache.vzw.com -scache1.vzw.com -scache2.vzw.com -scasino.com -schema.org -sciencenets.com -scieron.com -scmp.com -scmpchinese.com -scramble.io -scribd.com -scriptspot.com -seapuff.com -search.aol.com -search.disconnect.me -search.xxx -search.yahoo.co.jp -searchtruth.com -secretchina.com -secretgarden.no -secretsline.biz -secure.hustler.com -secure.logmein.com -secure.raxcdn.com -securetunnel.com -securityinabox.org -securitykiss.com -seed4.me -seesmic.com -seevpn.com -seezone.net -sejie.com -sellclassics.com -sendsmtp.com -sendspace.com -servehttp.com -serveuser.com -serveusers.com -services.googleapis.cn -services.googleapis.com -sesawe.net -sesawe.org -sethwklein.net -setn.com -settv.com.tw -sevenload.com -sex-11.com -sex.com -sex3.com -sex8.cc -sexandsubmission.com -sexbot.com -sexhu.com -sexhuang.com -sexidude.com -sexinsex.net -sextvx.com -sexxxy.biz -sf.net -sfileydy.com -sfshibao.com -sftindia.org -sftuk.org -shadeyouvpn.com -shadow.ma -shadowsky.xyz -shadowsocks-r.com -shadowsocks.asia -shadowsocks.be -shadowsocks.com -shadowsocks.com.hk -shadowsocks.org -shadowsocks9.com -shambalapost.com -shambhalasun.com -shangfang.org -shapeservices.com -share.dmhy.org -share.ovi.com -share.youthwant.com.tw -sharebee.com -sharecool.org -sharpdaily.com.hk -sharpdaily.hk -sharpdaily.tw -shat-tibet.com -shattered.io -sheikyermami.com -shellfire.de -shenshou.org -shenyun.com -shenyunperformingarts.org -shenzhoufilm.com -sherabgyaltsen.com -shiatv.net -shicheng.org -shiksha.com -shinychan.com -shipcamouflage.com -shireyishunjian.com -shitaotv.org -shixiao.org -shizhao.org -shkspr.mobi -shodanhq.com -shooshtime.com -shop2000.com.tw -shopping.com -showbiz.omy.sg -showhaotu.com -showtime.jp -shutterstock.com -shwchurch.org -shwchurch3.com -siddharthasintent.org -sidelinesnews.com -sidelinessportseatery.com -sierrafriendsoftibet.org -sijihuisuo.club -sijihuisuo.com -sikaozhe1997.github.io -silkbook.com -simbolostwitter.com -simplecd.org -simpleproductivityblog.com -sinchew.com.my -singaporepools.com.sg -singfortibet.com -singpao.com.hk -singtao.com -singtaousa.com -sino-monthly.com -sinoants.com -sinocast.com -sinocism.com -sinomontreal.ca -sinonet.ca -sinopitt.info -sinoquebec.com -sipml5.org -sis.xxx -sis001.com -sis001.us -site2unblock.com -site90.net -sitebro.tw -sitekreator.com -siteks.uk.to -sitemaps.org -sixth.biz -sjrt.org -sjum.cn -sketchappsources.com -skimtube.com -skybet.com -skyking.com.tw -skyvegas.com -skyxvpn.com -slacker.com -slaytizle.com -sleazydream.com -slheng.com -slickvpn.com -slideshare.net -slinkset.com -slutload.com -slutmoonbeam.com -slyip.com -slyip.net -sm-miracle.com -smartdnsproxy.com -smarthide.com -smchbooks.com -smh.com.au -smhric.org -smith.edu -smyxy.org -snapchat.com -snaptu.com -sndcdn.com -sneakme.net -snowlionpub.com -sobees.com -soc.mil -socialwhale.com -socks-proxy.net -sockscap64.com -sockslist.net -socrec.org -sod.co.jp -sodatea.github.io -softether-download.com -softether.co.jp -softether.org -softwarebychuck.com -softwaredownload.gitbooks.io -sogclub.com -sogrady.me -soh.tw -sohcradio.com -sohfrance.org -sokamonline.com -sokmil.com -solarsystem.nasa.gov -solidaritetibet.org -solidfiles.com -somee.com -songjianjun.com -sonicbbs.cc -sonidodelaesperanza.org -sopcast.com -sopcast.org -sorazone.net -sorting-algorithms.com -sos.org -sosreader.com -sostibet.org -soubory.com -soul-plus.net -soulcaliburhentai.net -soumo.info -soundcloud.com -soundofhope.kr -soundofhope.org -soup.io -soupofmedia.com -sourceforge.net -sourcewadio.com -southnews.com.tw -sowers.org.hk -soylentnews.org -spankbang.com -spankingtube.com -spankwire.com -spb.com -speakerdeck.com -specxinzl.jigsy.com -speedify.com -spem.at -spencertipping.com -spendee.com -spicevpn.com -spideroak.com -spike.com -sports.williamhill.com -spotflux.com -spotify.com -spreadshirt.es -spring4u.info -springboardplatform.com -sprite.org -sproutcore.com -sproxy.info -squirly.info -srcf.ucam.org -srocket.us -ss-link.com -ss.carryzhou.com -ss.levyhsu.com -ss.pythonic.life -ss7.vzw.com -ssglobal.co -ssglobal.me -ssh91.com -ssl.webpack.de -ssl443.org -sspanel.net -sspro.ml -ssr.tools -ssrshare.com -sss.camp -sstmlt.moe -sstmlt.net -stackoverflow.com -stage64.hk -standupfortibet.org -stanford.edu -starfishfx.com -starp2p.com -startpage.com -startuplivingchina.com -stat.gov.tw -static-economist.com -static.comico.tw -static.shemalez.com -static01.nyt.com -staticflickr.com -statueofdemocracy.org -stc.com.sa -steamcommunity.com -steel-storm.com -steganos.com -steganos.net -stepchina.com -stephaniered.com -sthoo.com -stickam.com -stickeraction.com -stileproject.com -sto.cc -stoporganharvesting.org -stoptibetcrisis.net -storagenewsletter.com -store.steampowered.com -stories.google -storify.com -storm.mg -stormmediagroup.com -stoweboyd.com -stranabg.com -straplessdildo.com -streamingthe.net -streema.com -strikingly.com -strongvpn.com -strongwindpress.com -student.tw -studentsforafreetibet.org -stumbleupon.com -stupidvideos.com -subacme.rerouted.org -successfn.com -sugarsync.com -sugobbs.com -sugumiru18.com -suissl.com -sujiatun.wordpress.com -sukebei.nyaa.si -sulian.me -summify.com -sumrando.com -sun1911.com -sunmedia.ca -sunporno.com -sunskyforum.com -sunta.com.tw -sunvpn.net -sunwinism.joinbbs.net -suoluo.org -supchina.com -superfreevpn.com -superokayama.com -superpages.com -supervpn.net -superzooi.com -suppig.net -suprememastertv.com -surfeasy.com -surfeasy.com.au -suroot.com -surrenderat20.net -sustainability.google -suyangg.com -svsfx.com -swagbucks.com -swissvpn.net -switch1.jp -switchvpn.net -sydneytoday.com -sylfoundation.org -syncback.com -synergyse.com -sysresccd.org -sytes.net -szbbs.net -szetowah.org.hk -t-g.com -t.co -t.me -t.orzdream.com -t35.com -t66y.com -taa-usa.org -taaze.tw -tabtter.jp -tacc.cwb.gov.tw -tacem.org -taconet.com.tw -taedp.org.tw -tafm.org -tagwa.org.au -tagwalk.com -tahr.org.tw -taipei.gov.tw -taipeisociety.org -taiwan-sex.com -taiwanbible.com -taiwancon.com -taiwandaily.net -taiwandc.org -taiwanjobs.gov.tw -taiwanjustice.com -taiwanjustice.net -taiwankiss.com -taiwannation.50webs.com -taiwannation.com -taiwannation.com.tw -taiwanncf.org.tw -taiwannews.com.tw -taiwantp.net -taiwantt.org.tw -taiwanus.net -taiwanyes.com -taiwanyes.ning.com -talk853.com -talkboxapp.com -talkonly.net -tamiaode.tk -tanc.org -tangben.com -tangren.us -taoism.net -taolun.info -tapanwap.com -tapatalk.com -tarr.uspto.gov -tascn.com.au -taup.net -taweet.com -tbcollege.org -tbi.org.hk -tbicn.org -tbjyt.org -tbpic.info -tbrc.org -tbs-rainbow.org -tbsec.org -tbskkinabalu.page.tl -tbsmalaysia.org -tbsn.org -tbsseattle.org -tbssqh.org -tbswd.org -tbtemple.org.uk -tbthouston.org -tccwonline.org -tcewf.org -tchrd.org -tcnynj.org -tcpspeed.co -tcpspeed.com -tcsofbc.org -tcsovi.org -tdm.com.mo -teachparentstech.org -teamamericany.com -tech2.in.com -techviz.net -teck.in -teco-hk.org -teco-mo.org -teddysun.com -teeniefuck.net -teensinasia.com -telecomspace.com -telegram.dog -telegram.me -telegram.org -telegramdownload.com -telegraph.co.uk -telesco.pe -tellme.pw -tenacy.com -tensorflow.org -tenzinpalmo.com -terminus2049.github.io -tew.org -textnow.me -th.hao123.com -thaicn.com -thb.gov.tw -theatrum-belli.com -thebcomplex.com -theblemish.com -thebobs.com -thebodyshop-usa.com -thecenter.mit.edu -thechinabeat.org -thedalailamamovie.com -thedw.us -thefacebook.com -thefrontier.hk -thegioitinhoc.vn -thegly.com -thehots.info -thehousenews.com -thehun.net -theinitium.com -thenewslens.com -thepiratebay.org -theportalwiki.com -thereallove.kr -therock.net.nz -thespeeder.com -thestandnews.com -thetibetcenter.org -thetibetconnection.org -thetibetmuseum.org -thetibetpost.com -thetinhat.com -thetrotskymovie.com -thevivekspot.com -thewgo.org -theync.com -thinkingtaiwan.com -thinkwithgoogle.com -thisav.com -thlib.org -thomasbernhard.org -thongdreams.com -threatchaos.com -throughnightsfire.com -thumbzilla.com -thywords.com -thywords.com.tw -tiananmenduizhi.com -tiananmenmother.org -tiananmenuniv.com -tiananmenuniv.net -tiandixing.org -tianhuayuan.com -tianlawoffice.com -tianti.io -tiantibooks.org -tianyantong.org.cn -tianzhu.org -tibet-envoy.eu -tibet-foundation.org -tibet-house-trust.co.uk -tibet-info.net -tibet-initiative.de -tibet-munich.de -tibet.a.se -tibet.at -tibet.ca -tibet.com -tibet.fr -tibet.net -tibet.nu -tibet.org -tibet.org.tw -tibet.sk -tibet.to -tibet3rdpole.org -tibetaction.net -tibetaid.org -tibetalk.com -tibetan-alliance.org -tibetan.fr -tibetanaidproject.org -tibetanarts.org -tibetanbuddhistinstitute.org -tibetancommunity.org -tibetancommunityuk.net -tibetanculture.org -tibetanfeministcollective.org -tibetanjournal.com -tibetanlanguage.org -tibetanliberation.org -tibetanpaintings.com -tibetanphotoproject.com -tibetanpoliticalreview.org -tibetanreview.net -tibetansports.org -tibetanwomen.org -tibetanyouth.org -tibetanyouthcongress.org -tibetcharity.dk -tibetcharity.in -tibetchild.org -tibetcity.com -tibetcollection.com -tibetcorps.org -tibetexpress.net -tibetfocus.com -tibetfund.org -tibetgermany.com -tibetgermany.de -tibethaus.com -tibetheritagefund.org -tibethouse.jp -tibethouse.org -tibethouse.us -tibetinfonet.net -tibetjustice.org -tibetkomite.dk -tibetlibre.free.fr -tibetmuseum.org -tibetnetwork.org -tibetoffice.ch -tibetoffice.com.au -tibetoffice.eu -tibetoffice.org -tibetonline.com -tibetonline.tv -tibetoralhistory.org -tibetpolicy.eu -tibetrelieffund.co.uk -tibetsites.com -tibetsociety.com -tibetsun.com -tibetsupportgroup.org -tibetswiss.ch -tibettelegraph.com -tibettimes.net -tibetwrites.org -ticket.com.tw -tigervpn.com -tiltbrush.com -timdir.com -time.com -times.hinet.net -timesofindia.indiatimes.com -timsah.com -tineye.com -tintuc101.com -tiny.cc -tinychat.com -tinypaste.com -tipo.gov.tw -tistory.com -tkcs-collins.com -tl.gd -tma.co.jp -tmagazine.com -tmdfish.com -tmi.me -tmpp.org -tn1.shemalez.com -tn2.shemalez.com -tn3.shemalez.com -tnaflix.com -tngrnow.com -tngrnow.net -tnp.org -to-porno.com -togetter.com -toh.info -tokyo-247.com -tokyo-hot.com -tokyo-porn-tube.com -tokyocn.com -tongil.or.kr -tono-oka.jp -tonyyan.net -toodoc.com -toonel.net -top.tv -top81.ws -topbtc.com -topic.youthwant.com.tw -topnews.in -toppornsites.com -topshareware.com -topsy.com -toptip.ca -tor.blingblingsquad.net -tor.cn.uptodown.com -tor.updatestar.com -tora.to -torcn.com -torguard.net -torproject.org -torrentprivacy.com -torrentproject.se -torrenty.org -torrentz.eu -torvpn.com -tosh.comedycentral.com -totalvpn.com -toutiaoabc.com -towngain.com -toypark.in -toythieves.com -toytractorshow.com -tparents.org -tpi.org.tw -tracfone.com -traffichaus.com -trans.wenweipo.com -transparency.org -treemall.com.tw -trendsmap.com -trialofccp.org -trickip.net -trickip.org -trimondi.de -trouw.nl -trt.net.tr -trtc.com.tw -truebuddha-md.org -trulyergonomic.com -truth101.co.tv -truthontour.org -truveo.com -tryheart.jp -tsctv.net -tsdr.uspto.gov -tsemtulku.com -tsquare.tv -tsu.org.tw -tsunagarumon.com -tt-rss.org -tt1069.com -tttan.com -ttvnw.net -tu8964.com -tubaholic.com -tube.com -tube8.com -tube911.com -tubecup.com -tubegals.com -tubeislam.com -tubepornclassic.com -tubestack.com -tubewolf.com -tui.orzdream.com -tuibeitu.net -tuidang.net -tuidang.org -tuidang.se -tuitwit.com -tumblr.com -tumutanzi.com -tumview.com -tunein.com -tunnelbear.com -tunnelr.com -tuo8.blue -tuo8.cc -tuo8.club -tuo8.fit -tuo8.hk -tuo8.in -tuo8.ninja -tuo8.org -tuo8.pw -tuo8.red -tuo8.space -turansam.org -turbobit.net -turbohide.com -turbotwitter.com -turntable.fm -tushycash.com -tuvpn.com -tuzaijidi.com -tv.com -tvants.com -tvboxnow.com -tvider.com -tvmost.com.hk -tvplayvideos.com -tvunetworks.com -tw-blog.com -tw-npo.org -tw.answers.yahoo.com -tw.bid.yahoo.com -tw.gigacircle.com -tw.hao123.com -tw.jiepang.com -tw.knowledge.yahoo.com -tw.mall.yahoo.com -tw.mobi.yahoo.com -tw.money.yahoo.com -tw.myblog.yahoo.com -tw.news.yahoo.com -tw.streetvoice.com -tw.tomonews.net -tw.voa.mobi -tw.yahoo.com -tw01.org -twaitter.com -twapperkeeper.com -twaud.io -twavi.com -twbbs.net.tw -twbbs.org -twbbs.tw -twblogger.com -tweepguide.com -tweeplike.me -tweepmag.com -tweepml.org -tweetbackup.com -tweetboard.com -tweetboner.biz -tweetcs.com -tweetdeck.com -tweetedtimes.com -tweetmylast.fm -tweetphoto.com -tweetrans.com -tweetree.com -tweets.seraph.me -tweettunnel.com -tweetwally.com -tweetymail.com -tweez.net -twelve.today -twerkingbutt.com -twftp.org -twgreatdaily.com -twibase.com -twibble.de -twibbon.com -twibs.com -twicountry.org -twicsy.com -twiends.com -twifan.com -twiffo.com -twiggit.org -twilightsex.com -twilog.org -twimbow.com -twimg.com -twimg.edgesuite.net -twindexx.com -twip.me -twipple.jp -twishort.com -twistar.cc -twister.net.co -twisterio.com -twisternow.com -twistory.net -twit2d.com -twitbrowser.net -twitcause.com -twitch.tv -twitchcdn.net -twitgether.com -twitgoo.com -twitiq.com -twitlonger.com -twitmania.com -twitoaster.com -twitonmsn.com -twitpic.com -twitstat.com -twittbot.net -twitter.com -twitter.jp -twitter4j.org -twittercounter.com -twitterfeed.com -twittergadget.com -twitterkr.com -twittermail.com -twitterrific.com -twittertim.es -twitthat.com -twitturk.com -twitturly.com -twitvid.com -twitzap.com -twiyia.com -twnorth.org.tw -twskype.com -twstar.net -twt.tl -twtkr.com -twtr2src.ogaoga.org -twtrland.com -twttr.com -twurl.nl -twyac.org -txxx.com -tycool.com -typepad.com -u9un.com -ub0.cc -ubddns.org -uberproxy.net -uc-japan.org -ucdc1998.org -uchicago.edu -uderzo.it -udn.com -udn.com.tw -udnbkk.com -uforadio.com.tw -ufreevpn.com -ug.m.wikipedia.org -ugo.com -uhdwallpapers.org -uhrp.org -uighur.narod.ru -uighur.nl -uighurbiz.net -ukcdp.co.uk -ukliferadio.co.uk -uku.im -ulike.net -ulop.net -ultravpn.fr -ultraxs.com -umich.edu -unblock-us.com -unblock.cn.com -unblockdmm.com -unblocker.yt -unblocksit.es -uncyclomedia.org -uncyclopedia.hk -uncyclopedia.tw -underwoodammo.com -unholyknight.com -uni.cc -unification.net -unification.org.tw -unirule.cloud -unitedsocialpress.com -unix100.com -unknownspace.org -unodedos.com -unpo.org -unseen.is -untraceable.us -uocn.org -upcoming.yahoo.com -updates.tdesktop.com -upholdjustice.org -upload4u.info -uploaded.net -uploaded.to -uploadstation.com -upmedia.mg -upornia.com -uproxy.org -upwill.org -ur7s.com -uraban.me -urbansurvival.com -urchin.com -urlborg.com -urlparser.com -us.to -usacn.com -usaip.eu -userapi.nytlog.com -users.skynet.be -usfk.mil -ushuarencity.echainhost.com -usinfo.state.gov -usma.edu -usmc.mil -usmgtcg.ning.com -usno.navy.mil -usocctn.com -ustream.tv -usunitednews.com -usus.cc -utopianpal.com -uu-gg.com -uvwxyz.xyz -uwants.com -uwants.net -uyghur-j.org -uyghur.co.uk -uyghuramerican.org -uyghurcanadiansociety.org -uyghurcongress.org -uyghurensemble.co.uk -uyghurpen.org -uyghurpress.com -uyghurstudies.org -uygur.fc2web.com -uygur.org -uymaarip.com -v2ex.com -v2ray.com -van001.com -van698.com -vanemu.cn -vanilla-jp.com -vanpeople.com -vansky.com -vatn.org -vcf-online.org -vcfbuilder.org -vds.rightster.com -vegas.williamhill.com -vegasred.com -velkaepocha.sk -venbbs.com -venchina.com -venetianmacao.com -ventureswell.com -veoh.com -vermonttibet.org -versavpn.com -verybs.com -vevo.com -vft.com.tw -viber.com -vica.info -victimsofcommunism.org -vid.me -vidble.com -video.aol.ca -video.aol.co.uk -video.aol.com -video.ap.org -video.fdbox.com -video.foxbusiness.com -video.pbs.org -video.yahoo.com -videobam.com -videodetective.com -videomega.tv -videomo.com -videopediaworld.com -videopress.com -vidinfo.org -vietdaikynguyen.com -vijayatemple.org -vimeo.com -vimperator.org -vincnd.com -vine.co -vinniev.com -vip-enterprise.com -virtualrealporn.com -visibletweets.com -vital247.org -viu.com -viu.tv -vivahentai4u.net -vivatube.com -vivthomas.com -vizvaz.com -vjav.com -vjmedia.com.hk -vllcs.org -vlog.xuite.net -vmixcore.com -vmpsoft.com -vn.hao123.com -vnet.link -voa-11.akacast.akamaistream.net -voacantonese.com -voachinese.com -voachineseblog.com -voagd.com -voanews.com -voatibetan.com -voatibetanenglish.com -vocativ.com -vocn.tv -vod-abematv.akamaized.net -vod.wwe.com -vot.org -vovo2000.com -voxer.com -voy.com -vpn.ac -vpn.cjb.net -vpn.cmu.edu -vpn.sv.cmu.edu -vpn4all.com -vpnaccount.org -vpnaccounts.com -vpnbook.com -vpncomparison.org -vpncoupons.com -vpncup.com -vpndada.com -vpnfan.com -vpnfire.com -vpnfires.biz -vpnforgame.net -vpngate.jp -vpngate.net -vpngratis.net -vpnhq.com -vpninja.net -vpnintouch.com -vpnintouch.net -vpnjack.com -vpnmaster.com -vpnmentor.com -vpnpick.com -vpnpop.com -vpnpronet.com -vpnreactor.com -vpnreviewz.com -vpnsecure.me -vpnshazam.com -vpnshieldapp.com -vpnsp.com -vpntraffic.com -vpntunnel.com -vpnuk.info -vpnunlimitedapp.com -vpnvip.com -vpnworldwide.com -vporn.com -vpser.net -vraiesagesse.net -vrmtr.com -vrsmash.com -vtunnel.com -vuku.cc -w.idaiwan.com -w3schools.com -waffle1999.com -wahas.com -waigaobu.com -waikeung.org -wailaike.net -waiwaier.com -wallmama.com -wallornot.org -wallpapercasa.com -wallproxy.com -waltermartin.com -waltermartin.org -wanderinghorse.net -wangafu.net -wangjinbo.org -wanglixiong.com -wango.org -wangruoshui.net -want-daily.com -wanz-factory.com -wapedia.mobi -warbler.iconfactory.net -waselpro.com -washeng.net -watch8x.com -watchinese.com -watchmygf.net -wattpad.com -wav.tv -waveprotocol.org -waymo.com -wda.gov.tw -wdf5.com -wearehairy.com -wearn.com -web.dev -web2project.net -webbang.net -webevader.org -webfreer.com -webjb.org -weblagu.com -webmproject.org -webrtc.org -webrush.net -webs-tv.net -website.informer.com -websitepulse.com -webwarper.net -webworkerdaily.com -weekmag.info -wefightcensorship.org -wefong.com -wego.here.com -weiboleak.com -weiboscope.jmsc.hku.hk -weihuo.org -weijingsheng.org -weiming.info -weiquanwang.org -weisuo.ws -welovecock.com -wemigrate.org -wengewang.com -wengewang.org -wenhui.ch -wenxuecity.com -wenyunchao.com -wenzhao.ca -westca.com -westernshugdensociety.org -westernwolves.com -westkit.net -westpoint.edu -wetplace.com -wetpussygames.com -wexiaobo.org -wezhiyong.org -wezone.net -wforum.com -wha.la -whatblocked.com -whatbrowser.org -whatsapp.com -whatsapp.net -whatsonweibo.com -wheatseeds.org -wheelockslatin.com -whereiswerner.com -wheretowatch.com -whippedass.com -whitebear.freebearblog.org -whodns.xyz -whoer.net -whotalking.com -whylover.com -whyx.org -widevine.com -wikaba.com -wiki.cnitter.com -wiki.esu.im -wiki.gamerp.jp -wiki.jqueryui.com -wiki.keso.cn -wiki.moegirl.org -wiki.oauth.net -wiki.phonegap.com -wikileaks-forum.com -wikileaks.ch -wikileaks.com -wikileaks.de -wikileaks.eu -wikileaks.lu -wikileaks.org -wikileaks.pl -wikilivres.info -wikimapia.org -wikiwiki.jp -wildammo.com -williamhill.com -willw.net -windowsphoneme.com -windscribe.com -wingamestore.com -wingy.site -winning11.com -winwhispers.info -wire.com -wiredbytes.com -wiredpen.com -wisdompubs.org -wisevid.com -withgoogle.com -withyoutube.com -witnessleeteaching.com -witopia.net -wizcrafts.net -wjbk.org -wlcnew.jigsy.com -wlx.sowiki.net -wn.com -wnacg.com -wnacg.org -wo.tc -wo3ttt.wordpress.com -woeser.com -woesermiddle-way.net -wokar.org -wolfax.com -woolyss.com -woopie.jp -woopie.tv -wordpress.com -workatruna.com -workerdemo.org.hk -workerempowerment.org -workersthebig.net -worldcat.org -worldjournal.com -worldvpn.net -wow-life.net -wow.com -wowgirls.com -wowlegacy.ml -wowporn.com -wowrk.com -woxinghuiguo.com -woyaolian.org -wozy.in -wp.com -wpoforum.com -wqyd.org -wrchina.org -wretch.cc -writer.zoho.com -wsgzao.github.io -wsj.com -wsj.net -wsjhk.com -wtbn.org -wtfpeople.com -wuerkaixi.com -wufafangwen.com -wufi.org.tw -wuguoguang.com -wujie.net -wujieliulan.com -wukangrui.net -wuu.wikipedia.org -wuw.red -wuyanblog.com -wwitv.com -www.abclite.net -www.ajsands.com -www.americorps.gov -www.antd.org -www.aolnews.com -www.businessinsider.com.au -www.citizenlab.org -www.cmoinc.org -www.cool18.com -www.dmm.com -www.dwheeler.com -www.eastturkistan.net -www.ftchinese.com -www.gmiddle.com -www.gmiddle.net -www.hustlercash.com -www.idlcoyote.com -www.imdb.com -www.kindleren.com -www.klip.me -www.lamenhu.com -www.lib.virginia.edu -www.linksalpha.com -www.m-sport.co.uk -www.metro.taipei -www.monlamit.org -www.moztw.org -www.nbc.com -www.orchidbbs.com -www.owind.com -www.oxid.it -www.powerpointninja.com -www.s4miniarchive.com -www.sciencemag.org -www.shadowsocks.com -www.shwchurch.org -www.skype.com -www.tablesgenerator.com -www.taiwanonline.cc -www.taup.org.tw -www.thechinastory.org -www.wan-press.org -www.wangruowang.org -www.websnapr.com -www.zensur.freerk.com -www1.american.edu -www1.biz -www2.ohchr.org -www2.rocketbbs.com -wwwhost.biz -wzyboy.im -x-art.com -x-berry.com -x-wall.org -x.company -x1949x.com -x24hr.com -x365x.com -xa.yimg.com -xanga.com -xbabe.com -xbookcn.com -xbtce.com -xcafe.in -xcity.jp -xcritic.com -xda-developers.com -xerotica.com -xfinity.com -xfm.pp.ru -xgmyd.com -xhamster.com -xianba.net -xianchawang.net -xianjian.tw -xianqiao.net -xiaobaiwu.com -xiaochuncnjp.com -xiaod.in -xiaohexie.com -xiaolan.me -xiaoma.org -xiezhua.com -xihua.es -xijie.wordpress.com -xing.com -xinhuanet.org -xinmiao.com.hk -xinqimeng.over-blog.com -xinsheng.net -xinshijue.com -xinyubbs.net -xiongpian.com -xiuren.org -xizang-zhiye.org -xjp.cc -xjtravelguide.com -xkiwi.tk -xlfmtalk.com -xlfmwz.info -xm.com -xml-training-guide.com -xmovies.com -xn--4gq171p.com -xn--czq75pvv1aj5c.org -xn--i2ru8q2qg.com -xn--ngstr-lra8j.com -xn--oiq.cc -xn--p8j9a0d9c9a.xn--q9jyb4c -xnxx.com -xpdo.net -xpenology.com -xpud.org -xrentdvd.com -xskywalker.com -xskywalker.net -xtube.com -xuchao.net -xuchao.org -xuehua.us -xuzhiyong.net -xvideo.cc -xvideos.com -xvideos.es -xxbbx.com -xxlmovies.com -xxuz.com -xxx.com -xxx.xxx -xxxfuckmom.com -xxxx.com.au -xxxy.biz -xxxy.info -xxxymovies.com -xys.dxiong.com -xys.org -xysblogs.org -xyy69.com -xyy69.info -yahoo.com.hk -yakbutterblues.com -yam.com -yam.org.tw -yanghengjun.com -yangjianli.com -yasni.co.uk -yayabay.com -ydy.com -yeahteentube.com -yecl.net -yeelou.com -yeeyi.com -yegle.net -yes-news.com -yes.xxx -yes123.com.tw -yesasia.com -yesasia.com.hk -yespornplease.com -yeyeclub.com -ygto.com -yhcw.net -yibada.com -yibaochina.com -yidio.com -yilubbs.com -yingsuoss.com -yinlei.org -yipub.com -yizhihongxing.com -yobit.net -yobt.com -yobt.tv -yogichen.org -yolasite.com -yomiuri.co.jp -yong.hu -yorkbbs.ca -youdontcare.com -youjizz.com -youmaker.com -youngpornvideos.com -youngspiration.hk -youpai.org -youporn.com -youporngay.com -your-freedom.net -yourepeat.com -yourlisten.com -yourlust.com -yourprivatevpn.com -yourtrap.com -yousendit.com -youshun12.com -youthnetradio.org -youtu.be -youtube-nocookie.com -youtube.com -youtubecn.com -youtubeeducation.com -youtubegaming.com -youversion.com -youwin.com -youxu.info -yt.be -ytht.net -ytimg.com -ytn.co.kr -yuanming.net -yuanzhengtang.org -yulghun.com -yunchao.net -yuntipub.com -yuvutu.com -yvesgeleyn.com -ywpw.com -yx51.net -yyii.org -yzzk.com -zacebook.com -zalmos.com -zannel.com -zaobao.com -zaobao.com.sg -zaozon.com -zapto.org -zattoo.com -zb.com -zdnet.com.tw -zello.com -zengjinyan.org -zenmate.com -zenmate.com.ru -zeronet.io -zeutch.com -zfreet.com -zgsddh.com -zgzcjj.net -zh-yue.wikipedia.org -zh.bitterwinter.org -zh.ecdm.wikia.com -zh.m.wikipedia.org -zh.pokerstrategy.com -zh.pttpedia.wikia.com -zh.uncyclopedia.wikia.com -zh.wikinews.org -zh.wikipedia.org -zh.wikisource.org -zhanbin.net -zhangboli.net -zhangtianliang.com -zhanlve.org -zhao.1984.city -zhao.jinhai.de -zhenghui.org -zhengjian.org -zhengwunet.org -zhenlibu.info -zhenlibu1984.com -zhenxiang.biz -zhinengluyou.com -zhongguo.ca -zhongguorenquan.org -zhongguotese.net -zhongmeng.org -zhoushuguang.com -zhreader.com -zhuangbi.me -zhuanxing.cn -zhuatieba.com -zhuichaguoji.org -ziddu.com -zillionk.com -zim.vn -zinio.com -ziporn.com -zippyshare.com -zkaip.com -zmw.cn -zodgame.us -zomobo.net -zonaeuropa.com -zonghexinwen.com -zonghexinwen.net -zoogvpn.com -zootool.com -zoozle.net -zorrovpn.com -zozotown.com -zpn.im -zspeeder.me -zsrhao.com -zuo.la -zuobiao.me -zuola.com -zvereff.com -zynaima.com -zynamics.com -zyns.com -zyzc9.com -zzcartoon.com -zzcloud.me -zzux.com diff --git a/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder b/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder deleted file mode 100755 index 5cfceb8d4..000000000 --- a/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder +++ /dev/null @@ -1,260 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=60 - -EXTRA_COMMANDS="makeconfig makegfwlist health" - -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 -} - -fixturboacc(){ - dns=$(uci get turboacc.config.dns_caching 2>/dev/null) - if [ $dns -eq 1 ]; then - uci set turboacc.config.dns_caching=0 && uci commit turboacc - /etc/init.d/turboacc 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='' - 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 - fixturboacc - 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 - local dnsmasq_server_addr=$(uci get dhcp.@dnsmasq[0].server 2>/dev/null) - if [ -n "${dnsmasq_server_addr}" ]; then - uci set dhcp.@dnsmasq[0].noresolv=1 - 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) - local dnsmasq=$(uci get dnsforwarder.@arguments[0].dnsmasq 2>/dev/null) - addr=${addr/:/#} - if [ "${dnsmasq}" = "1" ]; then - uci del_list dhcp.@dnsmasq[0].server=$addr 2>/dev/null - fi - uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.d/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 -} diff --git a/package/lean/dnsforwarder/files/usr/share/dnsforwarder/gfwlist.sh b/package/lean/dnsforwarder/files/usr/share/dnsforwarder/gfwlist.sh deleted file mode 100755 index 7bcbaec7d..000000000 --- a/package/lean/dnsforwarder/files/usr/share/dnsforwarder/gfwlist.sh +++ /dev/null @@ -1,313 +0,0 @@ -#/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 address for the GfwList Domains (Default: 127.0.0.1) - -p, --port - DNS Port for the GfwList Domains (Default: 5353) - -s, --ipset - Ipset name for the GfwList domains - (If not given, ipset rules will not be generated.) - -o, --output - /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 - Delete specific domains in the result from a domain list text file - Please put one domain per line - --extra-domain-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 "$@" diff --git a/package/lean/frp/Makefile b/package/lean/frp/Makefile deleted file mode 100644 index 6d875c893..000000000 --- a/package/lean/frp/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -# -# Copyright (C) 2019 Xingwang Liao -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=frp -PKG_VERSION:=0.38.0 -PKG_RELEASE:=$(AUTORELEASE) - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/fatedier/frp/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=8a5e1af0455916ee17e1ad8d8bad32b637e50226d4bc991c0052fef88efc4745 - -PKG_LICENSE:=Apache-2.0 -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Xingwang Liao - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 -PKG_USE_MIPS16:=0 - -GO_PKG:=github.com/fatedier/frp -GO_PKG_BUILD_PKG:=github.com/fatedier/frp/cmd/... - -GO_PKG_LDFLAGS:=-s -w - -include $(INCLUDE_DIR)/package.mk -include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk - -define frp/templates - define Package/$(1) - TITLE:=A fast reverse proxy ($(1)) - URL:=https://github.com/fatedier/frp - SECTION:=net - CATEGORY:=Network - SUBMENU:=Web Servers/Proxies - DEPENDS:=$$(GO_ARCH_DEPENDS) - endef - - define Package/$(1)/description - frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall - to the internet. As of now, it supports tcp & udp, as well as http and https protocols, - where requests can be forwarded to internal services by domain name. - - This package contains the $(1). - endef - - define Package/$(1)/install - $$(call GoPackage/Package/Install/Bin,$$(PKG_INSTALL_DIR)) - - $$(INSTALL_DIR) $$(1)/usr/bin - $$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/usr/bin/$(1) $$(1)/usr/bin/ - - $(STAGING_DIR_HOST)/bin/upx --lzma --best $$(1)/usr/bin/$(1) || true - endef -endef - -FRP_COMPONENTS:=frpc frps - -$(foreach component,$(FRP_COMPONENTS), \ - $(eval $(call frp/templates,$(component))) \ - $(eval $(call GoBinPackage,$(component))) \ - $(eval $(call BuildPackage,$(component))) \ -) diff --git a/package/lean/gmediarender/Makefile b/package/lean/gmediarender/Makefile deleted file mode 100644 index 1373ac6bb..000000000 --- a/package/lean/gmediarender/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# Copyright (C) 2020 coolsnowwolf@gmail.com -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=gmediarender -PKG_VERSION:=2021-03-15 -PKG_RELEASE=$(PKG_SOURCE_VERSION) - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/hzeller/gmrender-resurrect.git -PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) -PKG_SOURCE_VERSION:=4ac7d8914dc089651ae9d6c421ecda8f4d0ab5e3 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz -PKG_MIRROR_HASH:=08e8e60b8734131acd5d667c40a9a7e9d8bc7e86f59b4972d177e653608a1215 - -PKG_FIXUP:=autoreconf -PKG_INSTALL=1 -PKG_REMOVE_FILES:=autogen.sh aclocal.m4 - -include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/nls.mk - -define Package/gmediarender - SECTION:=multimedia - CATEGORY:=Multimedia - DEPENDS:= +gstreamer1 +libgstreamer1 +gstreamer1-libs +glib2 +libupnp - TITLE:=A Headless UPnP Renderer -endef - -define Package/gmediarender/description - gmediarender implements the server component that provides UPnP - controllers a means to render media content (audio, video and images) - from a UPnP media server. -endef - -CONFIGURE_ARGS+= \ - CFLAGS="$(TARGET_CFLAGS) -std=gnu99" --with-build-cc="$(HOSTCC)" \ - --prefix="\usr" - -define Package/gmediarender/install - $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(1)/usr/sbin/ -endef - -$(eval $(call BuildPackage,gmediarender)) - diff --git a/package/lean/go-aliyundrive-webdav/Makefile b/package/lean/go-aliyundrive-webdav/Makefile deleted file mode 100644 index 008911938..000000000 --- a/package/lean/go-aliyundrive-webdav/Makefile +++ /dev/null @@ -1,81 +0,0 @@ -# SPDX-Identifier-License: GPL-3.0-only -# -# Copyright (C) 2021 ImmortalWrt.org - -include $(TOPDIR)/rules.mk - -PKG_NAME:=go-aliyundrive-webdav -PKG_VERSION:=1.1.1 -PKG_RELEASE:=$(AUTORELEASE) - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/LinkLeong/go-aliyundrive-webdav/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=967472971586bc9c62d1579a780e52431eaf37e54f2fe1b180c9a52db2304874 - -PKG_LICENSE:=Apache-2.0 -PKG_LICENSE_FILE:=LICENSE -PKG_MAINTAINER:=Tianling Shen - -PKG_CONFIG_DEPENDS:= \ - CONFIG_GO_ALIYUNDRIVE_WEBDAV_COMPRESS_GOPROXY \ - CONFIG_GO_ALIYUNDRIVE_WEBDAV_COMPRESS_UPX - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 -PKG_USE_MIPS16:=0 - -GO_PKG:=go-aliyun-webdav -GO_PKG_LDFLAGS:=-s -w -GO_PKG_LDFLAGS_X:=main.Version=v$(PKG_VERSION) - -include $(INCLUDE_DIR)/package.mk -include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk - -define Package/go-aliyundrive-webdav - SECTION:=net - CATEGORY:=Network - SUBMENU:=File Transfer - TITLE:=A WebDav server for AliyunDrive - URL:=https://github.com/LinkLeong/go-aliyundrive-webdav - DEPENDS:=$(GO_ARCH_DEPENDS) -endef - -define Package/go-aliyundrive-webdav/config -config GO_ALIYUNDRIVE_WEBDAV_COMPRESS_GOPROXY - bool "Compiling with GOPROXY proxy" - default n - -config GO_ALIYUNDRIVE_WEBDAV_COMPRESS_UPX - bool "Compress executable files with UPX" - default y -endef - -ifeq ($(CONFIG_GO_ALIYUNDRIVE_WEBDAV_COMPRESS_GOPROXY),y) - export GO111MODULE=on - export GOPROXY=https://goproxy.baidu.com -endif - -define Package/go-aliyundrive-webdav/conffiles -/etc/config/go-aliyundrive-webdav -endef - -define Build/Compile - $(call GoPackage/Build/Compile) -ifeq ($(CONFIG_GO_ALIYUNDRIVE_WEBDAV_COMPRESS_UPX),y) - $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/go-aliyun-webdav -endif -endef - -define Package/go-aliyundrive-webdav/install - $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR)) - $(INSTALL_DIR) $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/go-aliyun-webdav $(1)/usr/bin/go-aliyundrive-webdav - - $(INSTALL_DIR) $(1)/etc/config/ - $(INSTALL_CONF) $(CURDIR)/files/go-aliyundrive-webdav.config $(1)/etc/config/go-aliyundrive-webdav - $(INSTALL_DIR) $(1)/etc/init.d/ - $(INSTALL_BIN) $(CURDIR)/files/go-aliyundrive-webdav.init $(1)/etc/init.d/go-aliyundrive-webdav -endef - -$(eval $(call GoBinPackage,go-aliyundrive-webdav)) -$(eval $(call BuildPackage,go-aliyundrive-webdav)) diff --git a/package/lean/go-aliyundrive-webdav/files/go-aliyundrive-webdav.config b/package/lean/go-aliyundrive-webdav/files/go-aliyundrive-webdav.config deleted file mode 100644 index d6ed4edde..000000000 --- a/package/lean/go-aliyundrive-webdav/files/go-aliyundrive-webdav.config +++ /dev/null @@ -1,23 +0,0 @@ - - -config go-aliyundrive-webdav 'config' - option enabled '0' - - # Listening port - option port '8085' - - # Refresh token - option rt '' - - # Mounting directory - option path '/' - - # Webdav auth username, default: admin - option user 'admin' - - # Webdav auth password, default: 123456 - option pwd '123456' - - # Enable detailed logging - option verbose '0' - diff --git a/package/lean/go-aliyundrive-webdav/files/go-aliyundrive-webdav.init b/package/lean/go-aliyundrive-webdav/files/go-aliyundrive-webdav.init deleted file mode 100755 index 9eff96e2e..000000000 --- a/package/lean/go-aliyundrive-webdav/files/go-aliyundrive-webdav.init +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2021 Tianling Shen - -USE_PROCD=1 -START=99 - -CONF="go-aliyundrive-webdav" -PROG="/usr/bin/go-aliyundrive-webdav" - -start_service() { - config_load "$CONF" - - local enabled - config_get_bool enabled "config" "enabled" - [ "$enabled" -eq "1" ] || return 1 - - local port rt path user pwd verbose - config_get port "config" "port" - config_get rt "config" "rt" - config_get path "config" "path" - config_get user "config" "user" - config_get pwd "config" "pwd" - config_get_bool verbose "config" "verbose" - - procd_open_instance "$CONF" - - procd_set_param command "$PROG" - - procd_append_param command "-rt" "$rt" - procd_append_param command "-port" "$port" - procd_append_param command "-path" "$path" - procd_append_param command "-user" "$user" - procd_append_param command "-pwd" "$pwd" - [ "$verbose" -eq "0" ] || procd_append_param command "-v" - - procd_set_param stdout 1 - procd_set_param stderr 1 - procd_set_param respawn - - procd_close_instance -} - -reload_service() { - stop - start -} - -service_triggers() { - procd_add_reload_trigger "go-aliyundrive-webdav" -} diff --git a/package/lean/ipt2socks/Makefile b/package/lean/ipt2socks/Makefile deleted file mode 100644 index 75ee85640..000000000 --- a/package/lean/ipt2socks/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-only -# -# Copyright (C) 2021 ImmortalWrt.org - -include $(TOPDIR)/rules.mk - -PKG_NAME:=ipt2socks -PKG_VERSION:=1.1.3 -PKG_RELEASE:=2 - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/zfl9/ipt2socks/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=73a2498dc95934c225d358707e7f7d060b5ce81aa45260ada09cbd15207d27d1 - -PKG_BUILD_PARALLEL:=1 -PKG_INSTALL:=1 - -PKG_LICENSE:=AGPL-3.0 -PKG_LICENSE_FILE:=LICENSE - -include $(INCLUDE_DIR)/package.mk - -define Package/ipt2socks - SECTION:=net - CATEGORY:=Network - TITLE:=Convert iptables to socks5 - URL:=https://github.com/zfl9/ipt2socks - DEPENDS:=+libpthread +libuv -endef - -define Package/ipt2socks/description - Utility for converting iptables (redirect/tproxy) to socks5. -endef - -TARGET_CFLAGS += $(FPIC) -flto -TARGET_LDFLAGS += -flto - -define Package/ipt2socks/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/ipt2socks $(1)/usr/bin -endef - -$(eval $(call BuildPackage,ipt2socks)) diff --git a/package/lean/microsocks/Makefile b/package/lean/microsocks/Makefile deleted file mode 100644 index 9a56e4f94..000000000 --- a/package/lean/microsocks/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-only -# -# Copyright (C) 2021 ImmortalWrt.org - -include $(TOPDIR)/rules.mk - -PKG_NAME:=microsocks -PKG_VERSION=1.0.2 -PKG_RELEASE:=2 - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/rofl0r/microsocks/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=5ece77c283e71f73b9530da46302fdb4f72a0ae139aa734c07fe532407a6211a - -PKG_LICENSE:=MIT -PKG_LICENSE_FILES:=COPYING -PKG_MAINTAINER:=lean - -PKG_BUILD_PARALLEL:=1 -PKG_INSTALL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/microsocks - SECTION:=net - CATEGORY:=Network - SUBMENU:=Web Servers/Proxies - TITLE:=Tiny, portable SOCKS5 server - URL:=https://github.com/rofl0r/microsocks - DEPENDS:=+libpthread -endef - -define Package/microsocks/description - A SOCKS5 service that you can run on your remote boxes to tunnel connections - through them, if for some reason SSH doesn't cut it for you. -endef - -define Package/microsocks/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/local/bin/microsocks $(1)/usr/bin/microsocks -endef - -$(eval $(call BuildPackage,microsocks)) diff --git a/package/lean/nps/Makefile b/package/lean/nps/Makefile deleted file mode 100644 index addd53f65..000000000 --- a/package/lean/nps/Makefile +++ /dev/null @@ -1,87 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-only -# -# Copyright (C) 2021 ImmortalWrt.org - -include $(TOPDIR)/rules.mk - -PKG_NAME:=nps -PKG_VERSION:=0.26.10 -PKG_RELEASE:=$(AUTORELEASE) - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/ehang-io/nps/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=1b2fe9d251f55105d65027a1cee464f65d2f6ab3bd4a20e4655e5135db68aee7 - -PKG_LICENSE:=Apache-2.0 -PKG_LICENSE_FILE:=LICENSE -PKG_MAINTAINTER:=Tianling Shen - -PKG_CONFIG_DEPENDS:= \ - CONFIG_NPC_COMPRESS_UPX \ - CONFIG_NPS_COMPRESS_UPX - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 -PKG_USE_MIPS16:=0 - -GO_PKG:=ehang.io/nps -GO_PKG_BUILD_PKG:=ehang.io/nps/cmd/... -GO_PKG_LDFLAGS:=-s -w - -include $(INCLUDE_DIR)/package.mk -include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk - -define Package/nps/template - SECTION:=net - CATEGORY:=Network - TITLE:=A intranet penetration proxy server ($(1)) - DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle - URL:=https://ehang-io.github.io/nps -endef - -Package/npc = $(call Package/nps/template,client) -Package/nps = $(call Package/nps/template,server) - -define Package/nps/description/template - NPS is a lightweight, high-performance, powerful intranet penetration proxy server, - with a powerful web management terminal. -endef - -Package/npc/description = $(Package/nps/description/template) -Package/nps/description = $(Package/nps/description/template) - -define Package/npc/config - config NPC_COMPRESS_UPX - bool "Compress executable files with UPX" - default y -endef - -define Package/nps/config - config NPS_COMPRESS_UPX - bool "Compress executable files with UPX" - default y -endef - -define Build/Compile - $(call GoPackage/Build/Compile) -ifeq ($(CONFIG_NPC_COMPRESS_UPX),y) - $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/npc -endif -ifeq ($(CONFIG_NPS_COMPRESS_UPX),y) - $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/nps -endif -endef - -define Package/nps/install/template - $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR)) - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(2) $(1)/usr/bin/$(2) -endef - -Package/npc/install = $(call Package/nps/install/template,$(1),npc) -Package/nps/install = $(call Package/nps/install/template,$(1),nps) - -$(eval $(call GoBinPackage,npc)) -$(eval $(call GoBinPackage,nps)) -$(eval $(call BuildPackage,npc)) -$(eval $(call BuildPackage,nps)) diff --git a/package/lean/nps/patches/100-remove-useless-sdk-in-npc.patch b/package/lean/nps/patches/100-remove-useless-sdk-in-npc.patch deleted file mode 100644 index b96542fc4..000000000 --- a/package/lean/nps/patches/100-remove-useless-sdk-in-npc.patch +++ /dev/null @@ -1,4 +0,0 @@ -diff --git a/cmd/npc/sdk.go b/cmd/npc/sdk.go.bak -similarity index 100% -rename from cmd/npc/sdk.go -rename to cmd/npc/sdk.go.bak diff --git a/package/lean/pdnsd-alt/Makefile b/package/lean/pdnsd-alt/Makefile deleted file mode 100644 index e2c1aacc3..000000000 --- a/package/lean/pdnsd-alt/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-only -# -# Copyright (C) 2021 ImmortalWrt.org - -include $(TOPDIR)/rules.mk - -PKG_NAME:=pdnsd -PKG_VERSION:=1.2.9b-par -PKG_RELEASE:=3 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/shadowsocks/pdnsd.git -PKG_SOURCE_DATE:=2012-04-26 -PKG_SOURCE_VERSION:=a8e46ccba7b0fa2230d6c42ab6dcd92926f6c21d -PKG_MIRROR_HASH:=e3e9c56cf91b12d8db73def2c247be2f726a052bed012f7a1e48946375f8e478 - -PKG_BUILD_PARALLEL:=1 -PKG_INSTALL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/pdnsd-alt - SECTION:=net - CATEGORY:=Network - SUBMENU:=IP Addresses and Names - TITLE:=Proxy DNS Server - DEPENDS:=+libpthread -endef - -define Package/pdnsd-alt/description - pdnsd, is an IPv6 capable proxy DNS server with permanent caching (the cache - contents are written to hard disk on exit) that is designed to cope with - unreachable or down DNS servers (for example in dial-in networking). - - pdnsd can be used with applications that do dns lookups, eg on startup, and - can't be configured to change that behaviour, to prevent the often - minute-long hangs (or even crashes) that result from stalled dns queries. -endef - -TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include - -CONFIGURE_ARGS += \ - --with-cachedir=/var/pdnsd \ - --with-target=Linux - -define Package/pdnsd-alt/install - $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/pdnsd $(1)/usr/sbin/pdnsd - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/pdnsd-ctl $(1)/usr/sbin/pdnsd-ctl - - #$(INSTALL_DIR) $(1)/etc - #$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/pdnsd.conf.sample $(1)/etc/pdnsd.conf - #$(INSTALL_DIR) $(1)/etc/init.d - #$(INSTALL_BIN) ./files/pdnsd.init $(1)/etc/init.d/pdnsd -endef - -$(eval $(call BuildPackage,pdnsd-alt)) diff --git a/package/lean/pdnsd-alt/files/pdnsd.init b/package/lean/pdnsd-alt/files/pdnsd.init deleted file mode 100755 index e678d8d6a..000000000 --- a/package/lean/pdnsd-alt/files/pdnsd.init +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=65 -NAME=pdnsd -DESC="proxy DNS server" - -DAEMON=/usr/sbin/pdnsd -PID_FILE=/var/run/$NAME.pid -CACHEDIR=/var/pdnsd -CACHE=$CACHEDIR/pdnsd.cache - -USER=nobody -GROUP=nogroup - -start() { - echo -n "Starting $DESC: $NAME" - - gen_cache - - $DAEMON --daemon -p $PID_FILE - echo " ." -} - -stop() { - echo -n "Stopping $DESC: $NAME" - kill `cat $PID_FILE` > /dev/null 2>&1 - rm -rf $PID_FILE - echo " ." -} - -restart() { - echo "Restarting $DESC: $NAME... " - stop - sleep 2 - start -} - -gen_cache() -{ - if ! test -f "$CACHE"; then - mkdir -p `dirname $CACHE` - dd if=/dev/zero of="$CACHE" bs=1 count=4 2> /dev/null - chown -R $USER.$GROUP $CACHEDIR - fi -} - diff --git a/package/lean/pdnsd-alt/patches/002-fix-pdnsd-alt-build-error-within-kernel_5.15.patch b/package/lean/pdnsd-alt/patches/002-fix-pdnsd-alt-build-error-within-kernel_5.15.patch deleted file mode 100644 index d24521c43..000000000 --- a/package/lean/pdnsd-alt/patches/002-fix-pdnsd-alt-build-error-within-kernel_5.15.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 09171eef574503a82342a8b23d4a55b8a5286724 Mon Sep 17 00:00:00 2001 -From: W_Y_CPP <383152993@qq.com> -Date: Sat, 1 Jan 2022 13:05:37 +0900 -Subject: [PATCH] fix pdnsd alt build error with kernel_5.15 - ---- - src/conff.h | 2 +- - src/dns.h | 2 +- - src/netdev.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/conff.h b/src/conff.h -index a07b1561b..c66d210aa 100644 ---- a/src/conff.h -+++ b/src/conff.h -@@ -32,7 +32,7 @@ - #include - #include - #include --#include -+#include - #include "ipvers.h" - #include "list.h" - -diff --git a/src/dns.h b/src/dns.h -index 0f6a4ac1e..ecc9680b2 100644 ---- a/src/dns.h -+++ b/src/dns.h -@@ -27,7 +27,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include "rr_types.h" -diff --git a/src/netdev.c b/src/netdev.c -index bd5f8c451..bfd5046df 100644 ---- a/src/netdev.c -+++ b/src/netdev.c -@@ -59,7 +59,7 @@ - #include "ipvers.h" - #include - #include --#include -+#include - #include - #include - #include --- -2.17.1 diff --git a/package/lean/pdnsd-alt/patches/01-musl-compat.patch b/package/lean/pdnsd-alt/patches/01-musl-compat.patch deleted file mode 100644 index c83332bc1..000000000 --- a/package/lean/pdnsd-alt/patches/01-musl-compat.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- a/src/main.c -+++ b/src/main.c -@@ -219,6 +219,16 @@ static int check_ipv6() - */ - int main(int argc,char *argv[]) - { -+#if DEBUG>0 -+ { -+ int err; -+ /* Generate a key for storing our thread id's */ -+ if ((err=pthread_key_create(&thrid_key, NULL)) != 0) { -+ log_error("pthread_key_create failed: %s",strerror(err)); -+ _exit(1); -+ } -+ } -+#endif - int i,sig,pfd=-1; /* Initialized to inhibit compiler warning */ - - main_thrid=pthread_self(); -@@ -626,17 +636,6 @@ int main(int argc,char *argv[]) - pthread_sigmask(SIG_BLOCK,&sigs_msk,NULL); - #endif - --#if DEBUG>0 -- { -- int err; -- /* Generate a key for storing our thread id's */ -- if ((err=pthread_key_create(&thrid_key, NULL)) != 0) { -- log_error("pthread_key_create failed: %s",strerror(err)); -- _exit(1); -- } -- } --#endif -- - { - #if DEBUG>0 - int thrdsucc=1; diff --git a/package/lean/qBittorrent-static/Makefile b/package/lean/qBittorrent-static/Makefile deleted file mode 100644 index ecd39b4a1..000000000 --- a/package/lean/qBittorrent-static/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -# -# Copyright (C) 2017-2020 -# -# This is free software, licensed under the GNU General Public License v2. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=qBittorrent-static -PKG_VERSION:=4.4.0_v1.2.15 -PKG_RELEASE=1 - -STRIP:=true - -ifeq ($(ARCH),x86_64) - PKG_ARCH:=x86_64 -endif - -ifeq ($(ARCH),arm64) - PKG_ARCH:=aarch64 -endif - -ifeq ($(ARCH),aarch64) - PKG_ARCH:=aarch64 -endif - -ifeq ($(ARCH),arm) - PKG_ARCH:=armv7 -endif - -include $(INCLUDE_DIR)/package.mk - -define Package/qBittorrent-static - SECTION:=net - CATEGORY:=Network - DEPENDS:=@(arm||aarch64||x86_64) - SUBMENU:=BitTorrent - TITLE:=bittorrent client programmed in C++ / Qt - URL:=https://www.qbittorrent.org/ -endef - -define Package/qBittorrent-static/description - qBittorrent is a bittorrent client programmed in C++ / Qt that uses - libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg. - It aims to be a good alternative to all other bittorrent clients out - there. qBittorrent is fast, stable and provides unicode support as - well as many features. -endef - -define Download/qbittorrent - URL:=https://github.com/userdocs/qbittorrent-nox-static/releases/download/release-$(PKG_VERSION) - URL_FILE:=$(PKG_ARCH)-qbittorrent-nox - FILE:=qbittorrent-nox - HASH:=skip -endef - -define Build/Compile -endef - -define Package/qBittorrent-static/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(DL_DIR)/qbittorrent-nox $(1)/usr/bin -endef - -$(eval $(call Download,qbittorrent)) -$(eval $(call BuildPackage,qBittorrent-static)) diff --git a/package/lean/qBittorrent/Makefile b/package/lean/qBittorrent/Makefile deleted file mode 100644 index 12662df82..000000000 --- a/package/lean/qBittorrent/Makefile +++ /dev/null @@ -1,76 +0,0 @@ -# -# Copyright (C) 2017-2020 -# -# This is free software, licensed under the GNU General Public License v2. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=qbittorrent -PKG_VERSION:=4.4.0 -PKG_RELEASE=1 - -PKG_SOURCE:=qBittorrent-release-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/qbittorrent/qBittorrent/tar.gz/release-$(PKG_VERSION)? -PKG_HASH:=da240744c6cc5953d7c4d298a02a0cf36d2c8897931819f1e6459bd5270a7c5c - -PKG_BUILD_DIR:=$(BUILD_DIR)/qBittorrent-release-$(PKG_VERSION) - -PKG_LICENSE:=GPL-2.0+ -PKG_LICENSE_FILES:=COPYING -PKG_CPE_ID:=cpe:/a:qbittorrent:qbittorrent - -PKG_BUILD_DEPENDS:=qttools - -PKG_BUILD_PARALLEL:=1 -PKG_INSTALL:=1 -PKG_USE_MIPS16:=0 - -include $(INCLUDE_DIR)/package.mk - -define Package/qbittorrent - SECTION:=net - CATEGORY:=Network - SUBMENU:=BitTorrent - DEPENDS:=+libgcc +libstdcpp \ - +rblibtorrent \ - +libopenssl \ - +qt5-core \ - +qt5-network \ - +qt5-sql \ - +qt5-xml \ - +zlib - TITLE:=bittorrent client programmed in C++ / Qt - URL:=https://www.qbittorrent.org/ - PROVIDES:=qBittorrent -endef - -define Package/qbittorrent/description - qBittorrent is a bittorrent client programmed in C++ / Qt that uses - libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg. - It aims to be a good alternative to all other bittorrent clients out - there. qBittorrent is fast, stable and provides unicode support as - well as many features. -endef - -CONFIGURE_ARGS += \ - --disable-gui \ - --enable-stacktrace=no \ - --with-boost=$(STAGING_DIR)/usr - -MAKE_VARS += \ - INSTALL_ROOT="$(PKG_INSTALL_DIR)" - - -TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed - -define Package/qbittorrent/conffiles -/etc/config/qbittorrent -endef - -define Package/qbittorrent/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qbittorrent-nox $(1)/usr/bin -endef - -$(eval $(call BuildPackage,qbittorrent)) diff --git a/package/lean/qtbase/Makefile b/package/lean/qtbase/Makefile deleted file mode 100644 index dea0c41bf..000000000 --- a/package/lean/qtbase/Makefile +++ /dev/null @@ -1,201 +0,0 @@ -# -# Copyright (C) 2020 Openwrt.org -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=qtbase -PKG_BASE:=5.15 -PKG_BUGFIX:=2 -PKG_VERSION:=$(PKG_BASE).$(PKG_BUGFIX) -PKG_RELEASE:=1 - -PKG_SOURCE:=$(PKG_NAME)-everywhere-src-$(PKG_VERSION).tar.xz -PKG_SOURCE_URL:= \ - http://download.qt.io/official_releases/qt/$(PKG_BASE)/$(PKG_VERSION)/submodules \ - http://master.qt.io/archive/qt/$(PKG_BASE)/$(PKG_VERSION)/submodules \ - http://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/$(PKG_BASE)/$(PKG_VERSION)/submodules \ - http://qt.mirror.constant.com/archive/qt/$(PKG_BASE)/$(PKG_VERSION)/submodules -PKG_HASH:=909fad2591ee367993a75d7e2ea50ad4db332f05e1c38dd7a5a274e156a4e0f8 - -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-everywhere-src-$(PKG_VERSION) - -PKG_BUILD_PARALLEL:=1 -PKG_USE_MIPS16:=0 -PKG_CPE_ID:=cpe:/a:qt:qt - -include $(INCLUDE_DIR)/package.mk - -define Package/qtbase/Default - SECTION:=libs - CATEGORY:=Libraries - SUBMENU:=Qt5 - TITLE:=qtbase - URL:=http://qt-project.org - DEPENDS:=+libgcc +libstdcpp @!LINUX_2_6_36 -endef - -define Package/qtbase/description - This package provides the Qt5 libraries. - - Qt is a cross-platform application development framework for desktop, embedded and mobile. - Supported Platforms include Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, - Sailfish OS and others. - - Qt is not a programming language on its own. It is a framework written in C++. - - This package provides the following run-time libraries: - - core - - network - - xml -endef - -define Package/qtbase - $(call Package/qtbase/Default) - TITLE+=all libs - DEPENDS+=$(QTBASE_DEPENDS) -endef - -define Package/qtbase/install - true -endef - -define Package/qtbase/config - config QT5_INCLUDE_ATOMIC - bool "Depends on libatomic" - default y if !(arm_v7 || ARCH_64BIT || TARGET_x86) - default n - help - Check this options to add the libatomic to the dependences. - - You'd better to confirm whether your compiler need the external libatomic. - Otherwise, it is not recommended to modify this option mannually. - - menu "Select Qtbase Libraries" - comment "Qtbase Libraries" - - $(foreach lib,$(QTBASE_LIBS), - config PACKAGE_qt5-$(lib) - prompt "Qtbase $(lib) library." - default m if ALL - ) - endmenu -endef - -PKG_CONFIG_DEPENDS = CONFIG_QT5_INCLUDE_ATOMIC - -EXTRA_CFLAGS += $(FPIC) -ffunction-sections -fdata-sections -flto -EXTRA_LDFLAGS += -Wl,--gc-sections,--as-needed - -CONFIGURE_ARGS = \ - -sysroot $(STAGING_DIR) \ - -hostprefix $(STAGING_DIR_HOSTPKG) \ - -extprefix $(STAGING_DIR)/usr \ - -prefix /usr \ - -archdatadir /usr/share/Qt \ - -datadir /usr/share/Qt \ - -device linux-generic-g++ \ - -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ - -device-option COMPILER_FLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \ - -device-option LINKER_FLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \ - -confirm-license \ - -opensource \ - -release \ - -shared \ - -strip \ - -no-rpath \ - -no-use-gold-linker \ - -ltcg \ - -mimetype-database \ - -openssl-linked \ - -qt-doubleconversion \ - -system-pcre \ - -system-zlib \ - $(if $(findstring i386,$(ARCH)),-no-sse2 -no-sse4.1) \ - -no-angle \ - -no-cups \ - -no-dbus \ - -no-directfb \ - -no-dtls\ - -no-egl \ - -no-eglfs \ - -no-freetype \ - -no-gbm \ - -no-glib \ - -no-gtk \ - -no-gui \ - -no-harfbuzz \ - -no-iconv \ - -no-icu \ - -no-kms \ - -no-libjpeg \ - -no-libmd4c \ - -no-libpng \ - -no-libudev \ - -no-mtdev \ - -no-opengl \ - -no-opengles3 \ - -no-openvg \ - -no-pch \ - -no-slog2 \ - -sql-sqlite \ - -no-trace \ - -no-tslib \ - -no-vulkan \ - -no-widgets \ - -no-xcb \ - -no-xkbcommon \ - -no-zstd \ - -no-compile-examples \ - -no-feature-concurrent \ - -no-feature-gssapi \ - -no-feature-testlib \ - -make libs \ - -nomake examples \ - -nomake tests \ - -nomake tools \ - -v - - -define Build/Compile - +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) -endef - -define Build/InstallDev - $(MAKE) -C $(PKG_BUILD_DIR) install -endef - -define Package/qtbase/Default/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_BUILD_DIR)/lib/libQt5$(shell echo $(2) | sed -e 's/\b[[:alpha:]]/\u&/g').so* $(1)/usr/lib -endef - -define DefineQtbaseLibrary - QTBASE_DEPENDS+=+qt5-$(1) - - QTBASE_LIBS+=$(1) - - define Package/qt5-$(1) - $(call Package/qtbase/Default) - TITLE+=$(1) - DEPENDS+=$(foreach lib,$(2),+qt5-$(lib)) $(3) - HIDDEN:=1 - endef - - define Package/qt5-$(1)/description - This package contains the qt5 $(1) library. - endef - - define Package/qt5-$(1)/install - $(call Package/qtbase/Default/install,$$(1),$(1)) - endef -endef - -$(eval $(call DefineQtbaseLibrary,core,,+QT5_INCLUDE_ATOMIC:libatomic +libpcre2-16 +zlib)) -$(eval $(call DefineQtbaseLibrary,network,core,+libopenssl +zlib)) -$(eval $(call DefineQtbaseLibrary,xml,core,)) -$(eval $(call DefineQtbaseLibrary,sql,core)) - -$(foreach lib,$(QTBASE_LIBS),$(eval $(call BuildPackage,qt5-$(lib)))) -$(eval $(call BuildPackage,qtbase)) diff --git a/package/lean/qtbase/patches/010-gcc11.patch b/package/lean/qtbase/patches/010-gcc11.patch deleted file mode 100644 index 97d277e03..000000000 --- a/package/lean/qtbase/patches/010-gcc11.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --color -uNr a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h ---- a/src/corelib/global/qendian.h 2020-10-27 16:02:11.000000000 +0800 -+++ b/src/corelib/global/qendian.h 2021-07-19 06:21:23.185297425 +0800 -@@ -43,7 +43,7 @@ - - #include - #include -- -+#include - // include stdlib.h and hope that it defines __GLIBC__ for glibc-based systems - #include - #include -diff --color -uNr a/src/corelib/global/qfloat16.h b/src/corelib/global/qfloat16.h ---- a/src/corelib/global/qfloat16.h 2020-10-27 16:02:11.000000000 +0800 -+++ b/src/corelib/global/qfloat16.h 2021-07-19 06:22:10.387349829 +0800 -@@ -44,7 +44,7 @@ - #include - #include - #include -- -+#include - #if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__) - // All processors that support AVX2 do support F16C too. That doesn't mean - // we're allowed to use the intrinsics directly, so we'll do it only for -diff --color -uNr a/src/corelib/text/qbytearraymatcher.h b/src/corelib/text/qbytearraymatcher.h ---- a/src/corelib/text/qbytearraymatcher.h 2020-10-27 16:02:11.000000000 +0800 -+++ b/src/corelib/text/qbytearraymatcher.h 2021-07-19 06:22:30.139372013 +0800 -@@ -41,7 +41,7 @@ - #define QBYTEARRAYMATCHER_H - - #include -- -+#include - QT_BEGIN_NAMESPACE - - diff --git a/package/lean/qttools/Makefile b/package/lean/qttools/Makefile deleted file mode 100644 index 40d726cf3..000000000 --- a/package/lean/qttools/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# Copyright (C) 2019 Openwrt.org -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=qttools -PKG_BASE:=5.15 -PKG_BUGFIX:=2 -PKG_VERSION:=$(PKG_BASE).$(PKG_BUGFIX) -PKG_RELEASE:=1 - -PKG_SOURCE:=$(PKG_NAME)-everywhere-src-$(PKG_VERSION).tar.xz -PKG_SOURCE_URL:= \ - http://download.qt.io/official_releases/qt/$(PKG_BASE)/$(PKG_VERSION)/submodules \ - http://master.qt.io/archive/qt/$(PKG_BASE)/$(PKG_VERSION)/submodules \ - http://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/$(PKG_BASE)/$(PKG_VERSION)/submodules \ - http://qt.mirror.constant.com/archive/qt/$(PKG_BASE)/$(PKG_VERSION)/submodules -PKG_HASH:=c189d0ce1ff7c739db9a3ace52ac3e24cb8fd6dbf234e49f075249b38f43c1cc - -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-everywhere-src-$(PKG_VERSION) - -PKG_BUILD_PARALLEL:=1 -PKG_BUILD_DEPENDS:=qtbase - -include $(INCLUDE_DIR)/package.mk - -define Package/qttools - SECTION:=libs - CATEGORY:=Libraries - SUBMENU:=Qt5 - TITLE:=qttools - URL:=http://qt-project.org - BUILDONLY:=1 -endef - -define Build/Configure - cd $(PKG_BUILD_DIR) && qmake -o Makefile qttools.pro -endef - -define Build/Compile - +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) -endef - -define Build/InstallDev - $(MAKE) -C $(PKG_BUILD_DIR) install -endef - -$(eval $(call BuildPackage,qttools)) diff --git a/package/lean/rblibtorrent/Makefile b/package/lean/rblibtorrent/Makefile deleted file mode 100644 index fc4a38840..000000000 --- a/package/lean/rblibtorrent/Makefile +++ /dev/null @@ -1,75 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=rblibtorrent -PKG_VERSION:=1.2.15 -PKG_RELEASE=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/arvidn/libtorrent.git -PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) -PKG_SOURCE_VERSION:=9c5b26b8d9bdb168256566a2986c563187638e5a -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_MIRROR_HASH:=15c9d37a56cf09b22b9d1eeec8a0c21eff7c9fb6b30b04c4cba9a61d5201d57a - -PKG_LICENSE:=BSD -PKG_LICENSE_FILES:=COPYING - -PKG_USE_MIPS16:=0 -PKG_BUILD_PARALLEL:=1 -PKG_INSTALL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/rblibtorrent - SECTION:=libs - CATEGORY:=Libraries - TITLE:=Rasterbar BitTorrent library - URL:=https://www.libtorrent.org/ - DEPENDS:=+libgcc +libstdcpp +libopenssl +boost +boost-system +boost-chrono +boost-random - MAINTAINER:=Arvid Norberg -endef - -define Package/rblibtorrent/description -Rasterbar libtorrent is a C++ library that aims to be a good alternative to -all the other bittorrent implementations around. It is a library and not a -full featured client, although it comes with a working example client. -endef - -TARGET_CFLAGS += $(if $(CONFIG_SOFT_FLOAT),-DBOOST_NO_FENV_H) -fPIC - -EXTRA_CXXFLAGS += $(if $(CONFIG_GCC_VERSION_4_8),-std=gnu++11,-std=gnu++14) - -TARGET_LDFLAGS += -lstdc++ - -CONFIGURE_ARGS += \ - --disable-debug \ - --disable-rpath \ - --enable-encryption \ - --enable-deprecated-functions \ - --with-gnu-ld \ - --with-openssl=$(STAGING_DIR)/usr \ - --with-boost=$(STAGING_DIR)/usr \ - --with-libiconv \ - --with-libiconv-prefix=$(ICONV_PREFIX) - -define Build/Configure - cd $(PKG_BUILD_DIR) ; \ - sh autotool.sh - $(call Build/Configure/Default) -endef - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/include - $(CP) $(PKG_INSTALL_DIR)/usr/include/libtorrent $(1)/usr/include/ - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtorrent-rasterbar.{a,so*} $(1)/usr/lib/ - $(INSTALL_DIR) $(1)/usr/lib/pkgconfig - $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libtorrent-rasterbar.pc $(1)/usr/lib/pkgconfig/ -endef - -define Package/rblibtorrent/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib -endef - -$(eval $(call BuildPackage,rblibtorrent)) diff --git a/package/lean/rclone-ng/Makefile b/package/lean/rclone-ng/Makefile deleted file mode 100644 index 184fbf495..000000000 --- a/package/lean/rclone-ng/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# -# Copyright (C) 2020 Elon Huang -# Copyright (C) 2021 ImmortalWrt.org - -include $(TOPDIR)/rules.mk - -PKG_NAME:=rclone-ng -PKG_VERSION:=0.5.0 -PKG_RELEASE:=$(AUTORELEASE) - -PKG_SOURCE:=RcloneNg-v$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://github.com/ElonH/RcloneNg/releases/download/v$(PKG_VERSION)/ -PKG_HASH:=0b4916ddd0bacb5b358dc8d36b64c30f4182c0ace3eb06cda94b6578c419dcd9 - -PKG_LICENSE:=MIT -PKG_LICENSE_FILE:=LICENSE -PKG_MAINTAINER:=Elon Huang \ - Tianling Shen - -include $(INCLUDE_DIR)/package.mk - -TAR_CMD:=$(HOST_TAR) -C $(PKG_BUILD_DIR) $(TAR_OPTIONS) - -define Package/rclone-ng - SECTION:=net - CATEGORY:=Network - SUBMENU:=Cloud Manager - TITLE:=An angular web application for rclone - URL:=https://github.com/ElonH/RcloneNg - DEPENDS:=+rclone-config - PKGARCH:=all -endef - -define Build/Compile -endef - -define Package/rclone-ng/install - $(INSTALL_DIR) $(1)/www - $(CP) $(PKG_BUILD_DIR)/RcloneNg $(1)/www -endef - -$(eval $(call BuildPackage,rclone-ng)) diff --git a/package/lean/rclone-webui-react/Makefile b/package/lean/rclone-webui-react/Makefile deleted file mode 100644 index d2adee888..000000000 --- a/package/lean/rclone-webui-react/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# SPDX-Identifier-License: GPL-3.0-or-later -# -# Copyright (C) 2019 Elon Huang -# Copyright (C) 2021 ImmortalWrt.org - -include $(TOPDIR)/rules.mk - -PKG_NAME:=rclone-webui-react -PKG_VERSION:=2.0.5 -PKG_RELEASE:=$(AUTORELEASE) - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip -PKG_SOURCE_URL:=https://github.com/rclone/rclone-webui-react/releases/download/v$(PKG_VERSION)/currentbuild.zip? -PKG_HASH:=afd6836ecc5c5a1161e25cb0633c1167eb5933bb5069545680d69fcba635f011 - -PKG_LICENSE:=MIT -PKG_LICENSE_FILE:=LICENSE -PKG_MAINTAINER:=Elon Huang \ - Tianling Shen - -include $(INCLUDE_DIR)/package.mk - -UNZIP_CMD:=unzip -q -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE) - -define Package/rclone-webui-react - SECTION:=net - CATEGORY:=Network - SUBMENU:=Cloud Manager - TITLE:=A reactjs based web UI for rclone - URL:=https://github.com/rclone/rclone-webui-react - DEPENDS:=+rclone-config - PKGARCH:=all -endef - -define Package/rclone-webui-react/description - A full fledged UI for the rclone cloud sync tool. -endef - -define Build/Compile -endef - -define Package/rclone-webui-react/install - $(INSTALL_DIR) $(1)/www/rclone-webui-react - $(CP) $(PKG_BUILD_DIR)/build/* $(1)/www/rclone-webui-react -endef - -$(eval $(call BuildPackage,rclone-webui-react)) diff --git a/package/lean/rclone/Makefile b/package/lean/rclone/Makefile deleted file mode 100644 index 7e33805a8..000000000 --- a/package/lean/rclone/Makefile +++ /dev/null @@ -1,107 +0,0 @@ -# SPDX-Identifier-License: GPL-3.0-or-later -# -# Copyright (C) 2019 Elon Huang -# Copyright (C) 2021 ImmortalWrt.org - -include $(TOPDIR)/rules.mk - -PKG_NAME:=rclone -PKG_VERSION:=1.57.0 -PKG_RELEASE:=$(AUTORELEASE) - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/rclone/rclone/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=294f7a6b0874509997d3a9ffae7c74f0c45b687df0ac7d7742f284ad3814fe55 - -PKG_LICENSE:=MIT -PKG_LICENSE_FILE:=LICENSE -PKG_MAINTAINER:=Elon Huang \ - Tianling Shen - -PKG_CONFIG_DEPENDS:= \ - CONFIG_RCLONE_COMPRESS_GOPROXY \ - CONFIG_RCLONE_COMPRESS_UPX - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 -PKG_USE_MIPS16:=0 - -GO_PKG:=github.com/rclone/rclone -GO_PKG_EXCLUDES:=test -GO_PKG_LDFLAGS:=-s -w -GO_PKG_LDFLAGS_X:= \ - github.com/rclone/rclone/fs.Version=v$(PKG_VERSION) \ - main.Version=v$(PKG_VERSION) \ - main.BuildUser=openwrt \ - main.BuildHost=openwrt - -include $(INCLUDE_DIR)/package.mk -include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk - -define Package/rclone/Default - SECTION:=net - CATEGORY:=Network - SUBMENU:=File Transfer - TITLE:=rsync for cloud storage - URL:=https://rclone.org -endef - -define Package/rclone - $(call Package/rclone/Default) - DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle +fuse-utils - USERID:=rclone:rclone -endef - -define Package/rclone-config - $(call Package/rclone/Default) - TITLE+= (Config Scripts) - DEPENDS:=+rclone -endef - -define Package/rclone/description - Rclone ("rsync for cloud storage") is a command line program to sync - files and directories to and from different cloud storage providers. -endef - -define Package/rclone/config -config RCLONE_COMPRESS_GOPROXY - bool "Compiling with GOPROXY proxy" - default n - -config RCLONE_COMPRESS_UPX - bool "Compress executable files with UPX" - default n -endef - -ifeq ($(CONFIG_RCLONE_COMPRESS_GOPROXY),y) - export GO111MODULE=on - export GOPROXY=https://goproxy.baidu.com -endif - -define Package/rclone-config/conffiles -/etc/config/rclone -endef - -define Build/Compile - $(call GoPackage/Build/Compile) -ifeq ($(CONFIG_RCLONE_COMPRESS_UPX),y) - $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/rclone -endif -endef - -define Package/rclone/install - $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR)) - $(INSTALL_DIR) $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rclone $(1)/usr/bin/ -endef - -define Package/rclone-config/install - $(INSTALL_DIR) $(1)/etc/config/ - $(INSTALL_CONF) $(CURDIR)/files/rclone.config $(1)/etc/config/rclone - $(INSTALL_DIR) $(1)/etc/init.d/ - $(INSTALL_BIN) $(CURDIR)/files/rclone.init $(1)/etc/init.d/rclone -endef - -$(eval $(call GoBinPackage,rclone)) -$(eval $(call BuildPackage,rclone)) -$(eval $(call BuildPackage,rclone-config)) diff --git a/package/lean/rclone/files/rclone.config b/package/lean/rclone/files/rclone.config deleted file mode 100644 index 655eb5b79..000000000 --- a/package/lean/rclone/files/rclone.config +++ /dev/null @@ -1,18 +0,0 @@ - -config global 'global' - option enabled '0' - -config conf 'config' - option config_path '/etc/rclone/rclone.conf' - option port '5572' - option username 'admin' - option password 'admin' - option addr_type 'lan' - -config proxy 'proxy' - option enabled '0' - option proxy_addr 'socks5://127.0.0.1:1080' - -config log 'log' - option path '/var/log/rclone/output' - diff --git a/package/lean/rclone/files/rclone.init b/package/lean/rclone/files/rclone.init deleted file mode 100755 index 51c0060f7..000000000 --- a/package/lean/rclone/files/rclone.init +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2019 Elon Huang - -USE_PROCD=1 - -START=95 -STOP=10 - -APP="rclone" -CONFIGURATION="rclone" - -_info() { - logger -p daemon.info -t "$APP" "$*" -} - -_err() { - logger -p daemon.err -t "$APP" "$*" -} - -start_service() { - config_load "${CONFIGURATION}" - - local enabled - config_get_bool enabled global enabled - if [ "$enabled" -ne "1" ]; then - _info 'Instance "rclone" is disabled.' - return 1 - else - _info 'Instance "rclone" is starting.' - fi - - local config_path log_path - local addr addr_type port - local username password - local proxy_enable proxy_addr - - config_get config_path config config_path - config_get log_path log path - - config_get addr_type config addr_type - config_get port config port - - config_get username config username - config_get password config password - - config_get_bool proxy_enable proxy enabled - config_get proxy_addr proxy proxy_addr - - if [ "${addr_type}" = "local" ]; then - addr="$(uci get network.loopback.ipaddr)" - elif [ "${addr_type}" = "lan" ]; then - addr="$(uci get network.lan.ipaddr)" - else - addr="" - fi - - local config_dir="${config_path%/*}" - [ -d "$config_dir" ] || mkdir -p "$config_dir" - touch "${config_path}" - chown rclone "${config_path}" - - [ -d "/lib/upgrade/keep.d" ] || mkdir -p "/lib/upgrade/keep.d/" - echo "$config_path" > "/lib/upgrade/keep.d/luci-app-rclone" - - local log_dir="${log_path%/*}" - [ -d "$log_dir" ] || mkdir -p "$log_dir" - chown -R rclone:rclone "$log_dir" - - procd_open_instance - - procd_set_param command /usr/bin/$APP rcd -vv - procd_append_param command "--rc-addr=$addr:$port" - procd_append_param command "--rc-user=$username" "--rc-pass=$password" - procd_append_param command "--config=$config_path" - procd_append_param command "--rc-allow-origin=*" - procd_append_param command "--log-file=${log_path}" - if [ "${proxy_enable}" -eq "1" ]; then - procd_set_param env all_proxy="$proxy_addr" https_proxy="$proxy_addr" http_proxy="$proxy_addr" - procd_append_param env ALL_PROXY="$proxy_addr" HTTPS_PROXY="$proxy_addr" HTTP_PROXY="$proxy_addr" - fi - - procd_set_param stdout 1 - procd_set_param stderr 1 - # procd_set_param pidfile /var/run/rclone.pid - procd_set_param respawn - - procd_set_param user rclone - procd_set_param group rclone - - procd_close_instance -} - -reload_service() { - stop - start -} - -service_triggers() { - procd_add_reload_trigger "rclone" -} diff --git a/package/lean/rclone/patches/010-disable-plugins.patch b/package/lean/rclone/patches/010-disable-plugins.patch deleted file mode 100644 index dc84f0567..000000000 --- a/package/lean/rclone/patches/010-disable-plugins.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/librclone/librclone.go -+++ b/librclone/librclone.go -@@ -37,7 +37,7 @@ import ( - _ "github.com/rclone/rclone/backend/all" // import all backends - _ "github.com/rclone/rclone/fs/operations" // import operations/* rc commands - _ "github.com/rclone/rclone/fs/sync" // import sync/* -- _ "github.com/rclone/rclone/lib/plugin" // import plugins -+ // _ "github.com/rclone/rclone/lib/plugin" // import plugins - ) - - // RcloneInitialize initializes rclone as a library ---- a/rclone.go -+++ b/rclone.go -@@ -7,7 +7,7 @@ import ( - _ "github.com/rclone/rclone/backend/all" // import all backends - "github.com/rclone/rclone/cmd" - _ "github.com/rclone/rclone/cmd/all" // import all commands -- _ "github.com/rclone/rclone/lib/plugin" // import plugins -+ // _ "github.com/rclone/rclone/lib/plugin" // import plugins - ) - - func main() { diff --git a/package/lean/redsocks2/Makefile b/package/lean/redsocks2/Makefile deleted file mode 100644 index d46a61b45..000000000 --- a/package/lean/redsocks2/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -# Copyright (C) 2014 OpenWrt-dist -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - - -PKG_NAME:=redsocks2 -PKG_VERSION:=0.67 -PKG_RELEASE:=4 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/semigodking/redsocks.git -PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) -PKG_SOURCE_VERSION:=d94c245ea47859cda5b4b7373308589206b97bdc -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz -PKG_MAINTAINER:=semigodking -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) - -include $(INCLUDE_DIR)/package.mk - -define Package/redsocks2 - SECTION:=net - CATEGORY:=Network - SUBMENU:=Web Servers/Proxies - TITLE:=Redirect any TCP connection to a SOCKS or HTTPS proxy server - URL:=https://github.com/semigodking/redsocks - DEPENDS:=+libevent2 +libopenssl -endef - -define Package/redsocks2/description -This is a modified version of original redsocks. \ -The name is changed to be REDSOCKS2 since this release to distinguish with original redsocks. \ -This variant is useful for anti-GFW (Great Fire Wall). -endef - -define Package/redsocks2/conffiles -/etc/config/redsocks2 -endef - -define Build/Compile - $(call Build/Compile/Default,DISABLE_SHADOWSOCKS=true) -endef - -define Package/redsocks2/install - $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/redsocks2 $(1)/usr/sbin -endef - -$(eval $(call BuildPackage,redsocks2)) diff --git a/package/lean/tcpping/Makefile b/package/lean/tcpping/Makefile deleted file mode 100644 index 77cfc864e..000000000 --- a/package/lean/tcpping/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=tcpping -PKG_VERSION:=0.2 -PKG_RELEASE=$(PKG_SOURCE_VERSION) - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/coolsnowwolf/tcping -PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) -PKG_SOURCE_VERSION:=d890cc1bd8e3951390ceeff1ccb092a5d802850c -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz - -include $(INCLUDE_DIR)/package.mk - -define Package/tcpping - SECTION:=net - CATEGORY:=Network - DEPENDS:=+libnet-1.2.x - TITLE:=Ping look-alike that uses TCP SYN packets to get around firewalls and ICMP blackholes -endef - -define Package/tcpping/description -Ping look-alike that uses TCP SYN packets to get around firewalls and ICMP blackholes -endef - -define Build/Compile - $(MAKE) -C $(PKG_BUILD_DIR) \ - $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/lib/libnet-1.2.x/include -L$(STAGING_DIR)/usr/lib/libnet-1.2.x/lib" \ - INSTALL_PROG=":" -endef - -define Package/tcpping/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/tcpping $(1)/usr/bin/tcpping -endef - -$(eval $(call BuildPackage,tcpping)) diff --git a/package/lean/uugamebooster/Makefile b/package/lean/uugamebooster/Makefile deleted file mode 100644 index d374252b0..000000000 --- a/package/lean/uugamebooster/Makefile +++ /dev/null @@ -1,85 +0,0 @@ -# -# Copyright (C) 2021 KFERMercer -# -# This is free software, licensed under the GNU General Public License v3. -# - -# -# to get the latest version & md5 checksum: -# curl -L -s -k -H "Accept:text/plain" "http://router.uu.163.com/api/plugin?type=openwrt-$(UU_ARCH)" -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=uugamebooster -PKG_VERSION:=v2.18.2 -PKG_RELEASE:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/uugamebooster - SECTION:=net - CATEGORY:=Network - DEPENDS:=@(aarch64||arm||mipsel||x86_64) +kmod-tun - TITLE:=NetEase UU Game Booster - URL:=https://uu.163.com -endef - -define Package/uugamebooster/description - NetEase's UU Game Booster Accelerates Triple-A Gameplay and Market -endef - -ifeq ($(ARCH),arm) - UU_ARCH:=arm - PKG_MD5SUM:=c5b71d076a0901ab9a81496c916480f2 -endif - -ifeq ($(ARCH),aarch64) - UU_ARCH:=aarch64 - PKG_MD5SUM:=36a66e4e33d7d1fa729c731e31d8219a -endif - -ifeq ($(ARCH),mipsel) - UU_ARCH:=mipsel - PKG_MD5SUM:=06abb6adbabd87a264fae6ce9ec1875c -endif - -ifeq ($(ARCH),x86_64) - UU_ARCH:=x86_64 - PKG_MD5SUM:=a0cbc202f512034b3162244398a2ddc7 -endif - -PKG_SOURCE_URL:=https://uu.gdl.netease.com/uuplugin/openwrt-$(UU_ARCH)/$(PKG_VERSION)/uu.tar.gz? -PKG_SOURCE:=$(PKG_NAME)-$(UU_ARCH)-$(PKG_VERSION).tar.gz - -STRIP:=true - -UNTAR_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/$(PKG_NAME)-$(UU_ARCH)-bin - -define Build/Prepare - mkdir -vp $(UNTAR_DIR) - tar -zxvf $(DL_DIR)/$(PKG_SOURCE) -C $(UNTAR_DIR) -endef - -define Build/Compile -endef - -define Package/uugamebooster/conffiles -/root/.uuplugin_uuid -endef - -define Package/uugamebooster/install - # $(INSTALL_DIR) $(1)/etc/init.d - # $(INSTALL_BIN) ./files/uugamebooster.init $(1)/etc/init.d/uuplugin - - $(INSTALL_DIR) $(1)/usr/share/uugamebooster - $(INSTALL_BIN) $(UNTAR_DIR)/uuplugin $(1)/usr/share/uugamebooster/uuplugin - $(INSTALL_CONF) $(UNTAR_DIR)/uu.conf $(1)/usr/share/uugamebooster/uu.conf - - # not finish yet: - # $(INSTALL_DIR) $(1)/usr/bin - # $(INSTALL_BIN) ./files/uugamebooster-update $(1)/usr/bin/uugamebooster - # $(LN) $(1)/usr/bin/uugamebooster/uugamebooster-update $(1)/usr/bin/uugamebooster-update -endef - -$(eval $(call BuildPackage,uugamebooster)) diff --git a/package/lean/uugamebooster/files/uugamebooster-update b/package/lean/uugamebooster/files/uugamebooster-update deleted file mode 100755 index 8e0780588..000000000 --- a/package/lean/uugamebooster/files/uugamebooster-update +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -# Return: 0 means update flag is set. -check_update() { - if [ -f "/usr/bin/uugamebooster/uu.update" ];then - return 0 - else - return 1 - fi -} - -check_update -if [ "$?" != "0" ];then - exit 0 - return -fi - -exit 0 diff --git a/package/lean/verysync/Makefile b/package/lean/verysync/Makefile deleted file mode 100644 index 779d59440..000000000 --- a/package/lean/verysync/Makefile +++ /dev/null @@ -1,76 +0,0 @@ -# -# Copyright (C) 2015-2016 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v3. -# - -include $(TOPDIR)/rules.mk - -ifeq ($(ARCH),x86_64) - PKG_ARCH_VERYSYNC:=amd64 -endif -ifeq ($(ARCH),mipsel) - PKG_ARCH_VERYSYNC:=mipsle -endif -ifeq ($(ARCH),mips) - PKG_ARCH_VERYSYNC:=mips -endif -ifeq ($(ARCH),i386) - PKG_ARCH_VERYSYNC:=386 -endif -ifeq ($(ARCH),arm) - PKG_ARCH_VERYSYNC:=arm -endif -ifeq ($(ARCH),aarch64) - PKG_ARCH_VERYSYNC:=arm64 -endif -ifeq ($(ARCH),powerpc64) - PKG_ARCH_VERYSYNC:=ppc64 -endif - -LATEST_VERSION:=$(shell curl http://www.verysync.com/shell/latest) - -PKG_NAME:=verysync - -ifneq ($(LATEST_VERSION),) - PKG_VERSION:=$(LATEST_VERSION) -else - PKG_VERSION:=v1.5.5 -endif - -PKG_RELEASE:=1 -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) -PKG_SOURCE:=$(PKG_NAME)-linux-$(PKG_ARCH_VERYSYNC)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=http://dl.verysync.com/releases/$(PKG_VERSION)/ -PKG_HASH:=skip - -include $(INCLUDE_DIR)/package.mk - -define Package/verysync - SECTION:=net - CATEGORY:=Network - TITLE:=A efficient data transmission tool - DEPENDS:= - URL:=http://www.verysync.com -endef - -define Package/verysync/description - Verysync is a efficient data transmission tool. -endef - -define Build/Prepare - tar -xzvf $(DL_DIR)/$(PKG_SOURCE) -C $(PKG_BUILD_DIR) -endef - -define Build/Configure -endef - -define Build/Compile -endef - -define Package/verysync/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME)-linux-$(PKG_ARCH_VERYSYNC)-$(PKG_VERSION)/verysync $(1)/usr/bin/verysync -endef - -$(eval $(call BuildPackage,verysync)) diff --git a/package/lean/vlmcsd/Makefile b/package/lean/vlmcsd/Makefile deleted file mode 100644 index 5659c8090..000000000 --- a/package/lean/vlmcsd/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=vlmcsd -PKG_VERSION:=svn1113 -PKG_RELEASE:=3 - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/Wind4/vlmcsd/tar.gz/$(PKG_VERSION)? -PKG_HASH:=62f55c48f5de1249c2348ab6b96dabbe7e38899230954b0c8774efb01d9c42cc - -PKG_LICENSE:=MIT -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=fuyumi <280604399@qq.com> - -PKG_BUILD_PARALLEL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/vlmcsd - SECTION:=net - CATEGORY:=Network - TITLE:=vlmcsd for OpenWRT - URL:=http://forums.mydigitallife.info/threads/50234 - DEPENDS:=+libpthread -endef - -define Package/vlmcsd/description - vlmcsd is a KMS Emulator in C. -endef - -MAKE_FLAGS += \ - -C $(PKG_BUILD_DIR) - -define Package/vlmcsd/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/vlmcsd $(1)/usr/bin/vlmcsd - $(INSTALL_DIR) $(1)/etc/vlmcsd - $(INSTALL_BIN) ./files/vlmcsd.ini $(1)/etc/vlmcsd/vlmcsd.ini -endef - -$(eval $(call BuildPackage,vlmcsd)) diff --git a/package/lean/vlmcsd/files/vlmcsd.ini b/package/lean/vlmcsd/files/vlmcsd.ini deleted file mode 100644 index fe1e52cf0..000000000 --- a/package/lean/vlmcsd/files/vlmcsd.ini +++ /dev/null @@ -1,74 +0,0 @@ -#ePID/HwId设置为Windows显式 -;Windows = 06401-00206-471-111111-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08 - -#ePID设置为Office2010(包含Visio和Project)显式 -;Office2010 = 06401-00096-199-222222-03-1033-17763.0000-2822018 - -#ePID/HwId设置为Office2013(包含Visio和Project)显式 -;Office2013 = 06401-00206-234-333333-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08 - -#ePID/HwId设置为Office2016(包含Visio和Project)显式 -;Office2016 = 06401-00206-437-444444-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08 - -#ePID/HwId设置为Office2019(包含Visio和Project)显式 -;Office2019 = 06401-00206-666-666666-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08 - -#ePID/HwId设置为Windows中国政府版 (Enterprise G/GN) 显式 -;WinChinaGov = 06401-03858-000-555555-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08 - -#使用自定义TCP端口 -;Port = 1688 - -#监听所有IPv4地址(默认端口1688) -;Listen = 0.0.0.0:1688 - -#监听所有IPv6地址(默认端口1688) -;Listen = [::]:1688 - -#程序启动时随机ePIDs(只有那些未显式指定的) -;RandomizationLevel = 1 - -#在ePIDs中使用特定区域 (1033 = 美国英语),即使ePID是随机的 -;LCID = 1033 - -#设置最多4个同时工作(分叉进程或线程) -;MaxWorkers = 4 - -#闲置30秒后断开用户 -;ConnectionTimeout = 30 - -#每次请求后立即断开客户端 -;DisconnectClientsImmediately = yes - -#写一个pid文件(包含vlmcsd的进程ID的文件) -;PidFile = /var/run/vlmcsd.pid - -#写日志到/var/log/vlmcsd.log -;LogFile = /var/log/vlmcsd.log - -#创建详细日志 -;LogVerbose = true - -#设置激活间隔2小时 -;ActivationInterval = 2h - -#设置更新间隔7天 -;RenewalInterval = 7d - -#运行程序的用户为vlmcsduser -;user = vlmcsduser - -#运行程序的组为vlmcsdgroup -;group = vlmcsdgroup - -#禁用或启用RPC的NDR64传输语法(默认启用) -;UseNDR64 = true - -#禁用或启用RPC的绑定时间特性协商(默认启用) -;UseBTFN = true - -#Windows 10/ Windows 11 KMS 安装激活密钥 -#Windows 10/11 Pro:W269N-WFGWX-YVC9B-4J6C9-T83GX -#Windows 10/11 Enterprise:NPPR9-FWDCX-D2C8J-H872K-2YT43 -#Windows 10/11 Pro for Workstations:NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J - diff --git a/package/lean/vlmcsd/files/vlmcsd.init b/package/lean/vlmcsd/files/vlmcsd.init deleted file mode 100755 index d65db5671..000000000 --- a/package/lean/vlmcsd/files/vlmcsd.init +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (c) 2011-2015 OpenWrt.org - -START=90 - -start(){ - if [ ! -f "/tmp/vlmcsd.pid" ]; then - /usr/bin/vlmcsd -i /etc/vlmcsd/vlmcsd.ini -p /tmp/vlmcsd.pid -L 0.0.0.0:1688 - iptables -D input_rule -p tcp --dport 1688 -j ACCEPT - iptables -A input_rule -p tcp --dport 1688 -j ACCEPT - sed -i '/## luci-app-vlmcsd/d' /etc/firewall.user - echo "iptables -A input_rule -p tcp --dport 1688 -j ACCEPT ## luci-app-vlmcsd" >> /etc/firewall.user - echo "KMS Server has started." - else - echo "KMS Server has already started." - fi -} - -stop(){ - if [ ! -f "/tmp/vlmcsd.pid" ]; then - echo "KMS Server is not running." - else - pid=`cat /tmp/vlmcsd.pid` - kill $pid - rm -f /tmp/vlmcsd.pid - iptables -D input_rule -p tcp --dport 1688 -j ACCEPT - sed -i '/## luci-app-vlmcsd/d' /etc/firewall.user - echo "KMS Server has stopped." - fi -} - -restart(){ - stop - sleep 2 - start - echo "KMS Server has restarted." -} diff --git a/package/lean/wxbase/Makefile b/package/lean/wxbase/Makefile deleted file mode 100644 index 97f6e7015..000000000 --- a/package/lean/wxbase/Makefile +++ /dev/null @@ -1,136 +0,0 @@ -# -# 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:=wxbase -PKG_VERSION:=2.8.12 -PKG_RELEASE:=1 - -PKG_SOURCE:=wxGTK-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=@SF/wxwindows -PKG_MD5SUM:=08f81ab60647308058f6ce99712b14f8 - -PKG_BUILD_DIR:=$(BUILD_DIR)/wxGTK-$(PKG_VERSION) - -PKG_INSTALL:=1 - -PKG_CHECK_FORMAT_SECURITY:=0 - -include $(INCLUDE_DIR)/package.mk - -define Package/libwxbase - SECTION:=libs - CATEGORY:=Libraries - TITLE:=Cross-platform C++ framework - URL:=http://www.wxwidgets.org/ - DEPENDS:=+libexpat +libstdcpp +zlib +libpthread -endef - -define Package/libwxbase/description - wxBase contains most of the non-GUI classes from the wxWindows cross- - -platform C++ framework. There are 2 categories: generally useful portable - code (date/time handling, command line parsing, regular expression support) - and wrappers for the OS objects (files, directories, sockets, threads, - etc.) allowing you to write portable programs easily. -endef - -TARGET_CFLAGS += $(FPIC) - -# XXX: aMule *needs* the following configure options to be enabled: -# --enable-intl -# --enable-largefile -# --disable-no_rtti -# --with-regex -# --enable-unicode -CONFIGURE_ARGS+= \ - --enable-shared \ - --disable-rpath \ - --with-gnu-ld \ - --disable-gui \ - --disable-monolithic \ - --enable-plugins \ - --disable-universal \ - --disable-nanox \ - --disable-gtk2 \ - --disable-gpe \ - --disable-optimise \ - --disable-debug \ - --disable-stl \ - --disable-omf \ - --disable-debug_flag \ - --disable-debug_info \ - --disable-debug_gdb \ - --disable-debug_cntxt \ - --disable-mem_tracing \ - --disable-profile \ - --disable-no_rtti \ - --disable-no_exceptions \ - --disable-compat22 \ - --disable-compat24 \ - --enable-intl \ - --disable-backtrace \ - --enable-exceptions \ - --disable-sound \ - --enable-largefile \ - \ - --without-gtk \ - --without-motif \ - --without-mac \ - --without-cocoa \ - --without-wine \ - --without-msw \ - --without-pm \ - --without-mgl \ - --without-microwin \ - --without-x11 \ - --without-libpng \ - --without-libjpeg \ - --without-libtiff \ - --without-libxpm \ - --without-libmspack \ - --without-sdl \ - --without-gnomeprint \ - --without-opengl \ - --without-dmalloc \ - --with-regex="sys" \ - --with-zlib="sys" \ - --without-odbc \ - --with-expat="sys" \ - --without-gtk-prefix \ - --without-x \ - --without-libiconv-prefix \ - --without-sdl-prefix \ - --without-cppunit-prefix \ - --disable-precomp-headers - -UNICODE=yes - -ifeq ($(UNICODE),yes) - CONFIGURE_ARGS+= --enable-unicode - LIB_PFX:=u -else - CONFIGURE_ARGS+= --disable-unicode - LIB_PFX:= -endif - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/include $(1)/usr/lib - $(CP) -L $(PKG_BUILD_DIR)/wx-config $(1)/usr/bin/ - $(CP) $(PKG_INSTALL_DIR)/usr/include/wx-2.8 $(1)/usr/include/ - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwx_base$(LIB_PFX){,_net,_xml}-*.so* $(1)/usr/lib/ - $(CP) $(PKG_INSTALL_DIR)/usr/lib/wx $(1)/usr/lib/ - $(SED) 's,-I$$$${includedir}/wx-2.8,-I$(STAGING_DIR)/usr/include/wx-2.8,g' $(1)/usr/bin/wx-config - $(SED) 's,-I$$$${libdir}/wx/include,-I$(STAGING_DIR)/usr/lib/wx/include,g' $(1)/usr/bin/wx-config -endef - -define Package/libwxbase/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwx_base$(LIB_PFX){,_net,_xml}-*.so.* $(1)/usr/lib/ -endef - -$(eval $(call BuildPackage,libwxbase)) diff --git a/package/lean/wxbase/patches/wxGTK-2.8.12-abicheck.patch b/package/lean/wxbase/patches/wxGTK-2.8.12-abicheck.patch deleted file mode 100644 index 97055ba46..000000000 --- a/package/lean/wxbase/patches/wxGTK-2.8.12-abicheck.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -up wxGTK-2.8.12/src/common/appbase.cpp.abicheck wxGTK-2.8.12/src/common/appbase.cpp ---- wxGTK-2.8.12/src/common/appbase.cpp.abicheck 2015-03-12 17:15:18.000000000 +0100 -+++ wxGTK-2.8.12/src/common/appbase.cpp 2015-03-12 17:15:57.000000000 +0100 -@@ -424,10 +424,7 @@ bool wxAppConsole::CheckBuildOptions(con - msg.Printf(_T("Mismatch between the program and library build versions detected.\nThe library used %s,\nand %s used %s."), - lib.c_str(), progName.c_str(), prog.c_str()); - -- wxLogFatalError(msg.c_str()); -- -- // normally wxLogFatalError doesn't return -- return false; -+ wxLogWarning(msg.c_str()); - } - #undef wxCMP -