Merge pull request #2413 from KurdyMalloy/poco
authorYousong Zhou <yszhou4tech@gmail.com>
Fri, 11 Mar 2016 17:05:11 +0000 (01:05 +0800)
committerYousong Zhou <yszhou4tech@gmail.com>
Fri, 11 Mar 2016 17:05:11 +0000 (01:05 +0800)
poco: add package for the Poco C++ library

95 files changed:
admin/debootstrap/Makefile
devel/pkg-config/Makefile
lang/perl-cgi/Makefile
lang/python-cffi/Makefile
lang/python-cryptography/Makefile
lang/python-pip/Makefile
lang/python-ply/Makefile
lang/python-pycparser/Makefile
lang/python-setuptools/Makefile
lang/python/Makefile
lang/python/files/python-host.mk
lang/python/files/python-package.mk
lang/python3-pip/Makefile
lang/python3-setuptools/Makefile
lang/ruby/Makefile
lang/ruby/patches/001-acinclude.m4_rename_aclocal.m4.patch [new file with mode: 0644]
lang/ruby/patches/001-rdoc-remove_gems_dep.patch [deleted file]
lang/tcl/Makefile
libs/c-ares/Makefile
libs/flac/Makefile
libs/flac/patches/020-fix-musl-sigemptyset-x86.patch [new file with mode: 0644]
libs/glpk/Makefile
libs/gnutls/Config.in
libs/gnutls/Makefile
libs/libesmtp/Makefile
libs/libev/Makefile
libs/libinput/Makefile
libs/libv4l/Makefile
libs/libv4l/patches/001-no-shm_open-fix.patch [deleted file]
libs/libv4l/patches/005-test_for_posix_ioctl.patch [deleted file]
libs/libv4l/patches/030-dont-call-getsubopt.patch [new file with mode: 0644]
libs/libv4l/patches/030-musl_compatibility.patch [deleted file]
libs/libwebsockets/Makefile
mail/postfix/Makefile
mail/postfix/files/main.cf.default
mail/postfix/patches/100-fsstat.patch
mail/postfix/patches/200-manpages.patch
mail/postfix/patches/400-cdb.patch
mail/postfix/patches/500-crosscompile.patch
mail/postfix/patches/600-nopostconf.patch
mail/postfix/patches/800-fmt.patch
net/adblock/Makefile
net/adblock/files/README.md
net/adblock/files/adblock-helper.sh
net/adblock/files/adblock-update.sh
net/adblock/files/adblock.conf
net/adblock/files/adblock.hotplug
net/adblock/files/adblock.init
net/adblock/files/www/adblock/adblock.html [deleted file]
net/arp-scan/Makefile [new file with mode: 0644]
net/arp-scan/patches/001-cross_compile.patch [new file with mode: 0644]
net/bind/Makefile
net/ddns-scripts/Makefile
net/ddns-scripts/files/dynamic_dns_functions.sh
net/ddns-scripts/files/dynamic_dns_updater.sh
net/ddns-scripts/files/services
net/ddns-scripts/files/services_ipv6
net/gnunet/Makefile
net/mosquitto/Makefile
net/mosquitto/files/etc/config/mosquitto [new file with mode: 0644]
net/mosquitto/files/etc/init.d/mosquitto [new file with mode: 0755]
net/mosquitto/files/mosquitto.init [deleted file]
net/mosquitto/files/mosquitto.uci.convert [deleted file]
net/net-snmp/files/snmpd.init
net/ola/Makefile
net/openssh/Makefile
net/openvswitch/Makefile
net/openvswitch/patches/0010-lib-ovs-thread-Ensure-that-thread-stacks-are-always-.patch [new file with mode: 0644]
net/shadowsocks-client/Makefile
net/shadowsocks-client/patches/100-fortify-source-compat.patch [deleted file]
net/squid/Makefile
sound/shairplay/Makefile
sound/shairplay/patches/001-key_file_dir.patch
sound/shairport-sync/Makefile
sound/squeezelite/Makefile
sound/squeezelite/files/squeezelite.conf
sound/squeezelite/files/squeezelite.init
sound/squeezelite/patches/010-select_broadcast_interface.patch [new file with mode: 0644]
sound/squeezelite/patches/010-wait_for_nonzero_mac.patch [deleted file]
utils/cryptodev-linux/Makefile
utils/cryptsetup/Makefile
utils/dump1090/Makefile
utils/dump1090/files/dump1090.config
utils/dump1090/files/dump1090.init
utils/lvm2/Makefile
utils/lvm2/patches/002-const-stdio.patch
utils/mmc-utils/Makefile
utils/nano/Makefile
utils/pciutils/Makefile
utils/qemu/Makefile [new file with mode: 0644]
utils/qemu/files/qemu-ga.init [new file with mode: 0755]
utils/qemu/files/virtio-ports.hotplug [new file with mode: 0755]
utils/tracertools/Makefile
utils/unrar/Makefile
utils/zip/Makefile

index 5aab0c680df8192d6b2cfc64f06fc6b3375d795b..d76bf65f9e18feb3c01fba5380d00b3d7b939136 100644 (file)
@@ -9,13 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=debootstrap
-PKG_VERSION:=1.0.78
+PKG_VERSION:=1.0.79
 PKG_RELEASE:=1
 PKG_MAINTAINER=Daniel Golle <daniel@makrotopia.org>
 
 PKG_SOURCE:=$(PKG_NAME)-udeb_$(PKG_VERSION)_all.udeb
 PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/d/debootstrap
-PKG_MD5SUM:=687d56b8ebde6f35a2ad322be9731723
+PKG_MD5SUM:=48dae2747db960f5484fe5355678c249
 PKG_LICENSE:=Unique
 PKG_LICENSE_FILES:=debian/copyright
 
index 36abc5dc188e458a2aaf91663792f495afc2ed0d..7fa007622739f4fd9a1839be43030470103b5339 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pkg-config
-PKG_VERSION:=0.29
-PKG_RELEASE:=2
+PKG_VERSION:=0.29.1
+PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=http://pkgconfig.freedesktop.org/releases/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=77f27dce7ef88d0634d0d6f90e03a77f
+PKG_MD5SUM:=f739a28cae4e0ca291f82d1d41ef107d
 PKG_MAINTAINER:=Heinrich Schuchardt <xypron.glpk@gmx.de>
 PKG_LICENSE:=GPL-2+
 
index 9d2eac3309a8887df3d0fa559aa8af477f387f55..5900361fccd1bf692a0a0f62f011ef30d1d8c2a1 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=perl-cgi
-PKG_VERSION:=4.25
+PKG_VERSION:=4.26
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=http://www.cpan.org/authors/id/L/LE/LEEJO
 PKG_SOURCE:=CGI-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=e047bec455105cdfa413b9c776f95bb9
+PKG_MD5SUM:=bf606eda81c9dc5347c1f3483732b2d2
 
 PKG_LICENSE:=GPL Artistic-2.0
 PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
index 27ac3ee206d78305f7740608b3266d1e7f8a3e1c..f3bcabfc4c5a9a8bc8876a92f94f47a86fce0eb3 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cffi
 PKG_VERSION:=1.5.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://pypi.python.org/packages/source/c/cffi
@@ -45,7 +45,7 @@ define Build/Compile
 endef
 
 define Host/Compile
-       $(call Build/Compile/HostPyMod,,install --prefix="/usr" --root="$(STAGING_DIR)/host")
+       $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR)/host")
 endef
 
 define Host/Install
index 317c4bf8032fd63f4d3fd68869d22feecf7367c4..27eef8590f865b3435fd36b8e71926452c7229db 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cryptography
-PKG_VERSION:=1.2.2
+PKG_VERSION:=1.2.3
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://pypi.python.org/packages/source/c/cryptography
-PKG_MD5SUM:=2b25eebd1d3c6bae52b46f0dcec74dfb
+PKG_MD5SUM:=5474d2b3e8c7555a60852e48d2743f85
 
 PKG_BUILD_DEPENDS:=python-cffi/host
 
index f260e7ffee1da6c5bff80015d278087dc2e4ede9..789f41e2d91cece51c194617ed0978e6c8635855 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-pip
-PKG_VERSION:=7.1.2
-PKG_RELEASE:=3
+PKG_VERSION:=8.1.0
+PKG_RELEASE:=1
 
 PKG_SOURCE:=pip-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pip/
-PKG_MD5SUM:=3823d2343d9f3aaab21cf9c917710196
+PKG_MD5SUM:=e9c3844db343f47d16040b32ad9072be
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/pip-$(PKG_VERSION)
 PKG_USE_MIPS16:=0
index 5f1a95dd3cdfb00ad1ecb7d65b20374378811a4a..c92de2edfc1a5e02dcf83ff14f2c13499e403c8c 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ply
 PKG_VERSION:=3.8
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.dabeaz.com/ply
@@ -45,15 +45,8 @@ define Build/Compile
        $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
 endef
 
-define Build/InstallDev
-       $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
-       $(CP) \
-               $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
-               $(1)$(PYTHON_PKG_DIR)
-endef
-
 define Host/Compile
-       $(call Build/Compile/HostPyMod,,install --prefix="/usr" --root="$(STAGING_DIR)/host")
+       $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR)/host")
 endef
 
 define Host/Install
index b657cd81940824b14f88f52f65a9af0abf770c92..8acab48f009b021af72ed5ef52c9dd6103db7fb1 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pycparser
 PKG_VERSION:=2.14
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pycparser
@@ -47,7 +47,7 @@ define Build/Compile
 endef
 
 define Host/Compile
-       $(call Build/Compile/HostPyMod,,install --prefix="/usr" --root="$(STAGING_DIR)/host")
+       $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR)/host")
 endef
 
 define Host/Install
index 880dd0ba8423a9613f4495f63dfdeaedce47aa53..e569ac9c1d27827ec4d9c29402a826659da9749d 100644 (file)
@@ -1,19 +1,19 @@
 #
-# Copyright (C) 2014 OpenWrt.org
+# Copyright (C) 2014-2016 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:=python-setuptools
-PKG_VERSION:=19.4
+PKG_VERSION:=20.2.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=setuptools-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/setuptools/
-PKG_MD5SUM:=c5a7d90c1e0acf8c4ec5c2bf31bc25b5
+PKG_MD5SUM:=bf37191cb4c1472fb61e6f933d2006b1
 
 HOST_BUILD_DEPENDS:=python/host
 
@@ -60,7 +60,7 @@ endef
 
 define Host/Compile
        $(call Build/Compile/HostPyMod,,\
-               install --root="$(STAGING_DIR)/host" --prefix="/usr" \
+               install --root="$(STAGING_DIR)/host" --prefix="" \
                --single-version-externally-managed \
        )
 endef
index 6631cc04f1cba0297f9817eb2ae1638dcf9280c5..20442b3991884e4447d2bc53c2b5de0ccadc93ca 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -12,7 +12,7 @@ include ./files/python-package.mk
 
 PKG_NAME:=python
 PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
-PKG_RELEASE:=4
+PKG_RELEASE:=5
 
 PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
@@ -29,7 +29,7 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
 HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
 
 PKG_BUILD_DEPENDS:=python/host
-HOST_BUILD_DEPENDS:=bzip2/host expat/host
+HOST_BUILD_DEPENDS:=bzip2/host expat/host libffi/host
 
 include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
@@ -144,7 +144,7 @@ define Build/InstallDev
                $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
                $(1)/usr/include/
        $(CP) \
-               $(STAGING_DIR)/host/usr/lib/python$(PYTHON_VERSION) \
+               $(STAGING_DIR)/host/lib/python$(PYTHON_VERSION) \
                $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* \
                $(1)/usr/lib/
        $(CP) \
@@ -221,8 +221,8 @@ HOST_CONFIGURE_ARGS+= \
        --without-cxx-main \
        --without-pymalloc \
        --with-threads \
-       --prefix=$(STAGING_DIR)/host/usr \
        --with-system-expat=$(STAGING_DIR)/host \
+       --with-system-ffi="$(STAGING_DIR)/host" \
        --with-ensurepip=upgrade \
        CONFIG_SITE= \
        CFLAGS="$(HOST_CFLAGS)"
index 7831eb6834fa4e24047465ed10d9d72ddecdfd9b..0327f3ad23ff6281fc0a9d9b21f28e1964d44846 100644 (file)
@@ -1,38 +1,36 @@
 #
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
 #
 
-HOST_PYTHON_INC_DIR:=$(STAGING_DIR)/host/usr/include/python$(PYTHON_VERSION)
+HOST_PYTHON_DIR:=$(STAGING_DIR)/host
+HOST_PYTHON_INC_DIR:=$(HOST_PYTHON_DIR)/include/python$(PYTHON_VERSION)
+HOST_PYTHON_LIB_DIR:=$(HOST_PYTHON_DIR)/lib/python$(PYTHON_VERSION)
 
-HOST_PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages
+HOST_PYTHON_PKG_DIR:=/lib/python$(PYTHON_VERSION)/site-packages
+
+HOST_PYTHON_BIN:=$(HOST_PYTHON_DIR)/bin/python$(PYTHON_VERSION)
 
 HOST_PYTHONPATH:=$(HOST_PYTHON_LIB_DIR):$(STAGING_DIR)/host/$(HOST_PYTHON_PKG_DIR)
+
 define HostPython
        if [ "$(strip $(3))" == "HOST" ]; then \
                export PYTHONPATH="$(HOST_PYTHONPATH)"; \
-               export _python_sysroot="$(STAGING_DIR)/host"; \
+               export PYTHONDONTWRITEBYTECODE=0; \
        else \
                export PYTHONPATH="$(PYTHONPATH)"; \
+               export PYTHONDONTWRITEBYTECODE=1; \
                export _python_sysroot="$(STAGING_DIR)"; \
+               export _python_prefix="/usr"; \
+               export _python_exec_prefix="/usr"; \
        fi; \
        export PYTHONOPTIMIZE=""; \
-       export PYTHONDONTWRITEBYTECODE=1; \
-       export _python_prefix="/usr"; \
-       export _python_exec_prefix="/usr"; \
        $(1) \
        $(HOST_PYTHON_BIN) $(2);
 endef
 
-# These configure args are needed in detection of path to Python header files
-# using autotools.
-HOST_CONFIGURE_ARGS += \
-       _python_sysroot="$(STAGING_DIR)/host" \
-       _python_prefix="/usr" \
-       _python_exec_prefix="/usr"
-
 # $(1) => build subdir
 # $(2) => additional arguments to setup.py
 # $(3) => additional variables
@@ -48,7 +46,6 @@ define Build/Compile/HostPyMod
                CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON_INC_DIR)" \
                LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON_VERSION)" \
                _PYTHON_HOST_PLATFORM=linux2 \
-               __PYVENV_LAUNCHER__="/usr/bin/$(PYTHON)" \
                $(3) \
                , \
                ./setup.py $(2) \
index e8c049224b8ca3beeb893a68df4601917e293a09..1f67718455feb2ba258050e9f422933904083a03 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -17,9 +17,6 @@ PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages
 
 PYTHON:=python$(PYTHON_VERSION)
 
-HOST_PYTHON_LIB_DIR:=$(STAGING_DIR)/host/usr/lib/python$(PYTHON_VERSION)
-HOST_PYTHON_BIN:=$(STAGING_DIR)/host/bin/python2
-
 PYTHONPATH:=$(PYTHON_LIB_DIR):$(STAGING_DIR)/$(PYTHON_PKG_DIR):$(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR)
 
 # These configure args are needed in detection of path to Python header files
index 2383520627dd2c9f572f46f685b0a8a4b46f6452..08b2651421863c1d408d30c79fab010cec957151 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python3-pip
-PKG_VERSION:=7.1.2
+PKG_VERSION:=8.1.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=pip-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pip/
-PKG_MD5SUM:=3823d2343d9f3aaab21cf9c917710196
+PKG_MD5SUM:=e9c3844db343f47d16040b32ad9072be
 
 PKG_LICENSE:=MIT
 
index ea299ea02f34ef7f5e68d1e2384be967f6083ecc..a11788648a8beeb0f13730a069db126d9bdadd71 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python3-setuptools
-PKG_VERSION:=19.4
+PKG_VERSION:=20.2.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=setuptools-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/setuptools/
-PKG_MD5SUM:=c5a7d90c1e0acf8c4ec5c2bf31bc25b5
+PKG_MD5SUM:=bf37191cb4c1472fb61e6f933d2006b1
 
 PKG_LICENSE:=PSF
 
index e28bc0aa63a2ad58391f92f6d8ad026be821ddd2..943fbd06722ec1d1567f38a97ab19268b0039d7c 100644 (file)
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ruby
-PKG_VERSION:=2.2.4
-PKG_RELEASE:=2
+PKG_VERSION:=2.3.0
+PKG_RELEASE:=1
 
-PKG_LIBVER:=2.2
+PKG_LIBVER:=2.3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://cache.ruby-lang.org/pub/ruby/$(PKG_LIBVER)/
-PKG_MD5SUM:=c3d65f6d2ebe90dda81a37885ea244f5
+PKG_MD5SUM:=f0d9f9bbdc87372ca98988a571875819
 PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
 PKG_LICENSE:=BSD-2-Clause
 PKG_LICENSE_FILES:=COPYING
@@ -35,9 +35,13 @@ HOST_CONFIGURE_ARGS += \
        --disable-install-doc \
        --disable-install-rdoc \
        --disable-install-capi \
-       --with-static-linked-ext \
+       --without-gmp \
        --with-out-ext=tk,tk/tkutil,win32,win32ole,dbm,gdbm,readline \
 
+# Does not compile with this. Workaround is --without-gmp
+# https://bugs.ruby-lang.org/issues/11940
+       #--with-static-linked-ext \
+
 # even not used, host build with restricted exts results in gems not being
 # compiled for target (probably some cross compiling problem like checking
 # host for selecting target features)
@@ -83,6 +87,13 @@ define Build/InstallDev
        ) | ( cd $(1); $(TAR) -xf - )
 endef
 
+define Host/Install
+       # When ruby version is updated, make install asks in some cases before replace
+       # an existing different file. Remove them before install and avoid the interaction
+       rm -f $(HOST_BUILD_PREFIX)/bin/rake
+       $(call Host/Install/Default)
+endef
+
 define Package/ruby/Default
   SUBMENU:=Ruby
   SECTION:=lang
@@ -196,6 +207,7 @@ endef
 define Package/ruby-cgi/files
 /usr/lib/ruby/$(PKG_LIBVER)/cgi
 /usr/lib/ruby/$(PKG_LIBVER)/cgi.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/cgi/escape.so
 endef
 
 define Package/ruby-csv/files
@@ -226,6 +238,18 @@ define Package/ruby-debuglib/files
 /usr/lib/ruby/$(PKG_LIBVER)/*/objspace.so
 endef
 
+define Package/ruby-did-you-mean/files
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/did_you_mean-*.gemspec
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/
+endef
+define Package/ruby-did-you-mean/files-excluded
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/benchmark
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/doc
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/evaluation
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/test
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/*.md
+endef
+
 define Package/ruby-digest/description
  Provides digest* files. Can be configured to use OpenSSL or
  bundled hash functions.
@@ -363,6 +387,7 @@ define Package/ruby-minitest/files
 endef
 define Package/ruby-minitest/files-excluded
 /usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*/test
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*/*.rdoc
 /usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*/*.txt
 endef
 
@@ -413,6 +438,15 @@ define Package/ruby-net/files
 /usr/lib/ruby/$(PKG_LIBVER)/net/*
 endef
 
+define Package/ruby-net-telnet/files
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/net-telnet-*.gemspec
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/net-telnet-*/
+endef
+define Package/ruby-net-telnet/files-excluded
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/net-telnet-*/*.md
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/net-telnet-*/*.txt
+endef
+
 define Package/ruby-nkf/files
 /usr/lib/ruby/$(PKG_LIBVER)/kconv.rb
 /usr/lib/ruby/$(PKG_LIBVER)/*/nkf.so
@@ -456,6 +490,7 @@ endef
 define Package/ruby-psych/files
 /usr/lib/ruby/$(PKG_LIBVER)/psych
 /usr/lib/ruby/$(PKG_LIBVER)/psych.rb
+/usr/lib/ruby/$(PKG_LIBVER)/psych_jars.rb
 /usr/lib/ruby/$(PKG_LIBVER)/*/psych.so
 /usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/psych-*.gemspec
 endef
@@ -466,19 +501,21 @@ define Package/ruby-racc/files
 endef
 
 define Package/ruby-rake/files
-/usr/lib/ruby/$(PKG_LIBVER)/rake/
-/usr/lib/ruby/$(PKG_LIBVER)/rake.rb
-/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/rake-*.gemspec
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/rake-*.gemspec
 /usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/
 endef
+define Package/ruby-rake/files-excluded
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/doc
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/test
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/*.rdoc
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/*.txt
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-10.4.2/lib/rake/runtest.rb
+endef
 define Package/ruby-rake/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rake $(1)/usr/bin/;
        $(call RubyBuildPackage/install,rake,$(1))
 endef
-define Package/ruby-rake/files-excluded
-/usr/lib/ruby/$(PKG_LIBVER)/rake/runtest.rb
-endef
 
 define Package/ruby-rbconfig/files
 /usr/lib/ruby/$(PKG_LIBVER)/*/rbconfig.rb
@@ -660,6 +697,7 @@ $(eval $(call RubyBuildPackage,csv,CSV library,+ruby-patterns +ruby-datetime +ru
 $(eval $(call RubyBuildPackage,datetime,date library))
 $(eval $(call RubyBuildPackage,dbm,support for dbm,+libdb47))
 $(eval $(call RubyBuildPackage,debuglib,debug library,+ruby-multithread +ruby-prettyprint))
+$(eval $(call RubyBuildPackage,did-you-mean,did you mean? experience,+ruby-misc))
 $(eval $(call RubyBuildPackage,digest,Digest Library,+RUBY_DIGEST_USE_OPENSSL:libopenssl))
 $(eval $(call RubyBuildPackage,drb,distributed object system,+ruby-filelib +ruby-patterns +ruby-socket))
 $(eval $(call RubyBuildPackage,enc,character re-coding library charset (small subset),))
@@ -679,8 +717,9 @@ $(eval $(call RubyBuildPackage,misc,standard libraries subset (miscelaneous file
 $(eval $(call RubyBuildPackage,mkmf,makefile library,+ruby-filelib +ruby-optparse +ruby-rbconfig))
 $(eval $(call RubyBuildPackage,multithread,multithread library,+ruby-misc))
 $(eval $(call RubyBuildPackage,net,Network Protocols Library,+ruby-datetime +ruby-digest +ruby-filelib +ruby-uri))
+$(eval $(call RubyBuildPackage,net-telnet,telnet client,+ruby-net))
 $(eval $(call RubyBuildPackage,nkf,Network Kanji Filter,+ruby-enc))
-$(eval $(call RubyBuildPackage,openssl,support for openssl,+ruby-enc +ruby-misc +libopenssl))
+$(eval $(call RubyBuildPackage,openssl,support for openssl,+ruby-enc +ruby-multithread +libopenssl))
 $(eval $(call RubyBuildPackage,optparse,command-line option analysis,+ruby-misc))
 $(eval $(call RubyBuildPackage,patterns,design patterns implementation,+ruby-multithread))
 $(eval $(call RubyBuildPackage,powerassert,Gem power_assert,+ruby-ripper))
diff --git a/lang/ruby/patches/001-acinclude.m4_rename_aclocal.m4.patch b/lang/ruby/patches/001-acinclude.m4_rename_aclocal.m4.patch
new file mode 100644 (file)
index 0000000..271bd71
--- /dev/null
@@ -0,0 +1,152 @@
+https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/53414
+
+Fixes:
+
+https://bugs.ruby-lang.org/issues/11941
+
+It might be incorporated in the following release
+
+Index: aclocal.m4
+===================================================================
+--- a/aclocal.m4       (revision 53413)
++++ b/aclocal.m4       (revision 53414)
+@@ -1,46 +0,0 @@
+-# -*- autoconf -*-
+-
+-AC_DEFUN([_COLORIZE_RESULT_PREPARE], [
+-    msg_checking= msg_result_yes= msg_result_no= msg_result_other= msg_reset=
+-    AS_IF([test "x${CONFIGURE_TTY}" = xyes -o -t 1], [
+-      msg_begin="`tput smso 2>/dev/null`"
+-      AS_CASE(["$msg_begin"], ['\e@<:@'*m],
+-          [msg_begin="`echo "$msg_begin" | sed ['s/[0-9]*m$//']`"
+-          msg_checking="${msg_begin}33m"
+-          AS_IF([test ${TEST_COLORS:+set}], [
+-              msg_result_yes=[`expr ":$TEST_COLORS:" : ".*:pass=\([^:]*\):"`]
+-              msg_result_no=[`expr ":$TEST_COLORS:" : ".*:fail=\([^:]*\):"`]
+-              msg_result_other=[`expr ":$TEST_COLORS:" : ".*:skip=\([^:]*\):"`]
+-          ])
+-          msg_result_yes="${msg_begin}${msg_result_yes:-32;1}m"
+-          msg_result_no="${msg_begin}${msg_result_no:-31;1}m"
+-          msg_result_other="${msg_begin}${msg_result_other:-33;1}m"
+-          msg_reset="${msg_begin}m"
+-          ])
+-      AS_UNSET(msg_begin)
+-      ])
+-    AS_REQUIRE_SHELL_FN([colorize_result],
+-      [AS_FUNCTION_DESCRIBE([colorize_result], [MSG], [Colorize result])],
+-        [AS_CASE(["$[]1"],
+-            [yes], [AS_ECHO(["${msg_result_yes}$[]1${msg_reset}]")],
+-            [no], [AS_ECHO(["${msg_result_no}$[]1${msg_reset}]")],
+-            [AS_ECHO(["${msg_result_other}$[]1${msg_reset}]")])])
+-])
+-
+-AC_DEFUN([COLORIZE_RESULT], [AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
+-    AS_LITERAL_IF([$1],
+-      [m4_case([$1],
+-              [yes], [AS_ECHO(["${msg_result_yes}$1${msg_reset}"])],
+-              [no], [AS_ECHO(["${msg_result_no}$1${msg_reset}"])],
+-              [AS_ECHO(["${msg_result_other}$1${msg_reset}"])])],
+-      [colorize_result "$1"]) dnl
+-])
+-
+-AC_DEFUN([AC_CHECKING],[dnl
+-AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
+-AS_MESSAGE([checking ${msg_checking}$1${msg_reset}...])])
+-
+-AC_DEFUN([AC_MSG_RESULT], [dnl
+-{ _AS_ECHO_LOG([result: $1])
+-COLORIZE_RESULT([$1]); dnl
+-}])
+Index: acinclude.m4
+===================================================================
+--- a/acinclude.m4     (revision 0)
++++ b/acinclude.m4     (revision 53414)
+@@ -0,0 +1,46 @@
++# -*- autoconf -*-
++
++AC_DEFUN([_COLORIZE_RESULT_PREPARE], [
++    msg_checking= msg_result_yes= msg_result_no= msg_result_other= msg_reset=
++    AS_IF([test "x${CONFIGURE_TTY}" = xyes -o -t 1], [
++      msg_begin="`tput smso 2>/dev/null`"
++      AS_CASE(["$msg_begin"], ['\e@<:@'*m],
++          [msg_begin="`echo "$msg_begin" | sed ['s/[0-9]*m$//']`"
++          msg_checking="${msg_begin}33m"
++          AS_IF([test ${TEST_COLORS:+set}], [
++              msg_result_yes=[`expr ":$TEST_COLORS:" : ".*:pass=\([^:]*\):"`]
++              msg_result_no=[`expr ":$TEST_COLORS:" : ".*:fail=\([^:]*\):"`]
++              msg_result_other=[`expr ":$TEST_COLORS:" : ".*:skip=\([^:]*\):"`]
++          ])
++          msg_result_yes="${msg_begin}${msg_result_yes:-32;1}m"
++          msg_result_no="${msg_begin}${msg_result_no:-31;1}m"
++          msg_result_other="${msg_begin}${msg_result_other:-33;1}m"
++          msg_reset="${msg_begin}m"
++          ])
++      AS_UNSET(msg_begin)
++      ])
++    AS_REQUIRE_SHELL_FN([colorize_result],
++      [AS_FUNCTION_DESCRIBE([colorize_result], [MSG], [Colorize result])],
++        [AS_CASE(["$[]1"],
++            [yes], [AS_ECHO(["${msg_result_yes}$[]1${msg_reset}]")],
++            [no], [AS_ECHO(["${msg_result_no}$[]1${msg_reset}]")],
++            [AS_ECHO(["${msg_result_other}$[]1${msg_reset}]")])])
++])
++
++AC_DEFUN([COLORIZE_RESULT], [AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
++    AS_LITERAL_IF([$1],
++      [m4_case([$1],
++              [yes], [AS_ECHO(["${msg_result_yes}$1${msg_reset}"])],
++              [no], [AS_ECHO(["${msg_result_no}$1${msg_reset}"])],
++              [AS_ECHO(["${msg_result_other}$1${msg_reset}"])])],
++      [colorize_result "$1"]) dnl
++])
++
++AC_DEFUN([AC_CHECKING],[dnl
++AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
++AS_MESSAGE([checking ${msg_checking}$1${msg_reset}...])])
++
++AC_DEFUN([AC_MSG_RESULT], [dnl
++{ _AS_ECHO_LOG([result: $1])
++COLORIZE_RESULT([$1]); dnl
++}])
+
+Property changes on: acinclude.m4
+___________________________________________________________________
+Added: svn:eol-style
+## -0,0 +1 ##
++LF
+\ No newline at end of property
+Index: common.mk
+===================================================================
+--- a/common.mk        (revision 53413)
++++ b/common.mk        (revision 53414)
+@@ -518,7 +518,7 @@
+       $(Q)$(RM) id.c id.h probes.dmyh
+       $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) parse.c parse.h lex.c enc/trans/newline.c $(PRELUDES) revision.h
+       $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) id.c id.h probes.dmyh
+-      $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) configure tool/config.guess tool/config.sub gems/*.gem
++      $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) configure aclocal.m4 tool/config.guess tool/config.sub gems/*.gem
+ realclean-ext:: PHONY
+ realclean-golf: distclean-golf
+       $(Q)$(RM) $(GOLFPRELUDES)
+Index: Makefile.in
+===================================================================
+--- a/Makefile.in      (revision 53413)
++++ b/Makefile.in      (revision 53414)
+@@ -22,6 +22,7 @@
+ YACC = bison
+ PURIFY =
+ AUTOCONF = autoconf
++ACLOCAL = aclocal
+ CONFIGURE = @CONFIGURE@
+ @SET_MAKE@
+ MKFILES = @MAKEFILES@
+@@ -310,6 +311,9 @@
+ $(srcdir)/$(CONFIGURE): $(srcdir)/configure.in $(srcdir)/aclocal.m4
+       $(CHDIR) $(srcdir) && exec $(AUTOCONF) -o $(@F)
++$(srcdir)/aclocal.m4: $(srcdir)/acinclude.m4
++      $(CHDIR) $(srcdir) && exec $(ACLOCAL)
++
+ incs: id.h
+ all-incs: probes.h
diff --git a/lang/ruby/patches/001-rdoc-remove_gems_dep.patch b/lang/ruby/patches/001-rdoc-remove_gems_dep.patch
deleted file mode 100644 (file)
index 9630de5..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-References:
-
-https://github.com/rdoc/rdoc/pull/340
-
---- ruby-2.1.2.orig/lib/rdoc.rb        2014-09-02 17:14:28.719224215 -0300
-+++ ruby-2.1.2/lib/rdoc.rb     2014-09-02 17:14:28.762223911 -0300
-@@ -109,6 +109,8 @@
-   def self.load_yaml
-     begin
-       gem 'psych'
-+    rescue NameError => e # --disable-gems
-+       raise unless e.name == :gem
-     rescue Gem::LoadError
-     end
---- ruby-2.1.2.orig/lib/rdoc/markdown.rb       2014-09-02 17:14:28.761223918 -0300
-+++ ruby-2.1.2/lib/rdoc/markdown.rb    2014-09-02 17:14:28.805223607 -0300
-@@ -525,7 +525,6 @@
--  require 'rubygems'
-   require 'rdoc'
-   require 'rdoc/markup/to_joined_paragraph'
-   require 'rdoc/markdown/entities'
---- ruby-2.1.2.orig/lib/rdoc/text.rb   2014-09-02 17:14:28.721224201 -0300
-+++ ruby-2.1.2/lib/rdoc/text.rb        2014-09-02 17:14:28.764223897 -0300
-@@ -10,6 +10,8 @@
- begin
-   gem 'json'
-+rescue NameError => e # --disable-gems
-+  raise unless e.name == :gem
- rescue Gem::LoadError
- end
index 8ed5e0ba2d3cd1eaa44d1af59e860b8c1f4a7fdf..743670456a67231897a502f4c719e71b3d9b79d0 100644 (file)
@@ -30,7 +30,7 @@ define Package/tcl
   SUBMENU:=Tcl
   SECTION:=lang
   CATEGORY:=Languages
-  DEPENDS:=+libpthread
+  DEPENDS:=+libpthread @BROKEN
   TITLE:=The Tcl language
   URL:=http://www.tcl.tk/
 endef
index c5b2269975a8a5a50fcea42c5a3acd480b0935fb..ec822f5e0cc4e1e090c4f0c0bc47b83744fc9b9d 100644 (file)
@@ -9,13 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=c-ares
-PKG_VERSION:=1.10.0
+PKG_VERSION:=1.11.0
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://c-ares.haxx.se/download
-PKG_MD5SUM:=1196067641411a75d3cbebe074fd36d8
+PKG_MD5SUM:=d5c6d522cfc54bb6f215a0b7912d46be
 
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
index 7d94cb63ed28654d441078b048250812f17d0eb4..0454f98f7fecd40416b6a47c2f9ea05c8c9e90c4 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=flac
 PKG_VERSION:=1.3.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://downloads.xiph.org/releases/flac/
diff --git a/libs/flac/patches/020-fix-musl-sigemptyset-x86.patch b/libs/flac/patches/020-fix-musl-sigemptyset-x86.patch
new file mode 100644 (file)
index 0000000..0ee3ce5
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/src/libFLAC/cpu.c
++++ b/src/libFLAC/cpu.c
+@@ -243,7 +243,7 @@ void FLAC__cpu_info(FLAC__CPUInfo *info)
+               struct sigaction sigill_save;
+               struct sigaction sigill_sse;
+               sigill_sse.sa_sigaction = sigill_handler_sse_os;
+-              __sigemptyset(&sigill_sse.sa_mask);
++              sigemptyset(&sigill_sse.sa_mask);
+               sigill_sse.sa_flags = SA_SIGINFO | SA_RESETHAND; /* SA_RESETHAND just in case our SIGILL return jump breaks, so we don't get stuck in a loop */
+               if(0 == sigaction(SIGILL, &sigill_sse, &sigill_save))
+               {
index 9d3cfd39162e32aff54bc097f19c4de6a4666f3d..e84a9a750b45fd8346a098a0ac71ea9ecbbb2fcf 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=glpk
-PKG_VERSION:=4.57
+PKG_VERSION:=4.58
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_MD5SUM:=237531a54f73155842f8defe51aedb0f
+PKG_MD5SUM:=924ff878278d07a52f2e06240f2fe30a
 
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=COPYING
index 59ca00f8f4cd66e328d1095f5e7105e04e128011..fc3b31758ebedd1905195f4d350e6fe8ab576bf7 100644 (file)
@@ -17,7 +17,6 @@ config GNUTLS_OCSP
 
 config GNUTLS_CRYPTODEV
        bool "enable /dev/crypto support"
-       select PACKAGE_kmod-cryptodev
        default n
 
 config GNUTLS_HEARTBEAT
index 362a90e081441b13cc1c15277cae772944aada6d..97f29666c2287a11663ecd56961baa44c8cf196c 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gnutls
-PKG_VERSION:=3.4.9
+PKG_VERSION:=3.4.10
 PKG_RELEASE:=1
 PKG_USE_MIPS16:=0
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=ftp://ftp.gnutls.org/gcrypt/gnutls/v3.4
-PKG_MD5SUM:=1b3b6d55d0e2b6d01a54f53129f1da9b
+PKG_MD5SUM:=fe9a0dc5adf205122f01a3e7dac5f8dd
 #PKG_FIXUP:=autoreconf gettext-version
 PKG_MAINTAINER:=Nikos Mavrogiannopoulos <nmav@gnutls.org>
 PKG_LICENSE:=LGPLv2.1+
@@ -93,7 +93,7 @@ endef
 define Package/libgnutls
 $(call Package/gnutls/Default)
   TITLE+= (library)
-  DEPENDS+= +libnettle +!LIBNETTLE_MINI:libgmp +GNUTLS_EXT_LIBTASN1:libtasn1 +GNUTLS_PKCS11:p11-kit
+  DEPENDS+= +libnettle +!LIBNETTLE_MINI:libgmp +GNUTLS_EXT_LIBTASN1:libtasn1 +GNUTLS_PKCS11:p11-kit +GNUTLS_CRYPTODEV:kmod-cryptodev
 endef
 
 define Package/libgnutls/description
index fa402c66088600e7b340a7bb063ef4b200d3cbfc..256d96399ccc30e1202c63a7b29db0539aac8ef0 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2008-2015 OpenWrt.org
+# Copyright (C) 2008-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,14 +9,16 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libesmtp
 PKG_VERSION:=1.0.6
-PKG_RELEASE:=2
-PKG_MD5SUM:=c4fedc999b6c3820296b0eb92cc2e252
+PKG_RELEASE:=3
 
 PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
 PKG_LICENSE:=LGPL-2.0+
 PKG_LICENSE_FILES:=COPYING
 
-PKG_SOURCE_URL:=http://www.stafford.uklinux.net/libesmtp
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/tru7/libesmtp.git
+PKG_SOURCE_VERSION=10e9a6df9f76da610941addf71b9a3cbf94f2e9f
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 
 PKG_BUILD_PARALLEL:=1
@@ -28,13 +30,10 @@ define Package/libesmtp
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=A Library for Posting Electronic Mail
-  URL:=http://www.stafford.uklinux.net/libesmtp/
-  DEPENDS:=+libpthread
+  URL:=https://github.com/tru7/libesmtp.git
+  DEPENDS:=+libpthread +libopenssl
 endef
 
-CONFIGURE_ARGS += \
-       --without-openssl
-
 define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libesmtp-config $(1)/usr/bin/
index 1cd08e49c06642a5d1f79a0f312c8020ca688759..24b04643698e4018358f5e9f3d891b9b06333e9e 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libev
-PKG_VERSION:=4.20
-PKG_RELEASE:=2
+PKG_VERSION:=4.22
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://dist.schmorp.de/libev/Attic/
-PKG_MD5SUM:=1cac539cfc560f381a490c9fba940de9
+PKG_MD5SUM:=bf0007e37240103d3c2be80ca9bee3f9
 PKG_LICENSE:=BSD-2-Clause
 PKG_MAINTAINER:=Karl Palsson <karlp@tweak.net.au>
 
index dce59f2cd708d490d31a0eda979b1c85a41a9ecf..98f021fda3828b9ca4ab4f2e815e60bd6a4c0050 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libinput
-PKG_VERSION:=1.1.7
+PKG_VERSION:=1.2.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://www.freedesktop.org/software/libinput/
-PKG_MD5SUM:=a501715a6135ac1f772bb5f3e3183481
+PKG_MD5SUM:=2b36d32362111c3e99f19c83bc535332
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=COPYING
@@ -26,6 +26,8 @@ include $(INCLUDE_DIR)/package.mk
 
 TARGET_CFLAGS+= -std=gnu99
 
+CONFIGURE_ARGS += --disable-libwacom
+
 define Package/libinput
   SECTION:=libs
   CATEGORY:=Libraries
index 841ffa50e6f871f11820dc72c59888bf91d73d07..b6fda69bbcc5f2f3e08d8bf07f1c4d37a08a0f1e 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=v4l-utils
-PKG_VERSION:=1.6.3
+PKG_VERSION:=1.10.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://www.linuxtv.org/downloads/v4l-utils
-PKG_MD5SUM:=307858616be6374f63bf946307f15a7f
+PKG_MD5SUM:=945a38979138997e805828a4a53e53ec
 
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 
@@ -76,7 +76,7 @@ define Package/v4l-utils/description
   This package contains the video4linux utilities.
 endef
 
-TARGET_CFLAGS += $(FPIC) -std=gnu99
+TARGET_CFLAGS += $(FPIC)
 TARGET_LDFLAGS += -largp
 
 CONFIGURE_ARGS+= \
diff --git a/libs/libv4l/patches/001-no-shm_open-fix.patch b/libs/libv4l/patches/001-no-shm_open-fix.patch
deleted file mode 100644 (file)
index 382f5c7..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
---- a/lib/libv4lconvert/control/libv4lcontrol.c
-+++ b/lib/libv4lconvert/control/libv4lcontrol.c
-@@ -570,7 +570,7 @@ static void v4lcontrol_get_flags_from_db
- struct v4lcontrol_data *v4lcontrol_create(int fd, void *dev_ops_priv,
-       const struct libv4l_dev_ops *dev_ops, int always_needs_conversion)
- {
--      int shm_fd;
-+      int shm_fd, fdflags;
-       int i, rc, got_usb_info, speed, init = 0;
-       char *s, shm_name[256], pwd_buf[1024];
-       struct v4l2_capability cap;
-@@ -695,33 +695,38 @@ struct v4lcontrol_data *v4lcontrol_creat
-       if (getpwuid_r(geteuid(), &pwd, pwd_buf, sizeof(pwd_buf), &pwd_p) == 0) {
-               if (got_usb_info)
--                      snprintf(shm_name, 256, "/libv4l-%s:%s:%04x:%04x:%s", pwd.pw_name,
-+                      snprintf(shm_name, 256, "/dev/shm/libv4l-%s:%s:%04x:%04x:%s", pwd.pw_name,
-                                       cap.bus_info, (int)vendor_id, (int)product_id, cap.card);
-               else
--                      snprintf(shm_name, 256, "/libv4l-%s:%s:%s", pwd.pw_name,
-+                      snprintf(shm_name, 256, "/dev/shm/libv4l-%s:%s:%s", pwd.pw_name,
-                                       cap.bus_info, cap.card);
-       } else {
-               perror("libv4lcontrol: error getting username using uid instead");
-               if (got_usb_info)
--                      snprintf(shm_name, 256, "/libv4l-%lu:%s:%04x:%04x:%s",
-+                      snprintf(shm_name, 256, "/dev/shm/libv4l-%lu:%s:%04x:%04x:%s",
-                                       (unsigned long)geteuid(), cap.bus_info,
-                                       (int)vendor_id, (int)product_id, cap.card);
-               else
--                      snprintf(shm_name, 256, "/libv4l-%lu:%s:%s", (unsigned long)geteuid(),
-+                      snprintf(shm_name, 256, "/dev/shm/libv4l-%lu:%s:%s", (unsigned long)geteuid(),
-                                       cap.bus_info, cap.card);
-       }
-       /* / is not allowed inside shm names */
--      for (i = 1; shm_name[i]; i++)
-+      for (i = 9; shm_name[i]; i++) /* start after "/dev/shm", i = 9 */
-               if (shm_name[i] == '/')
-                       shm_name[i] = '-';
-       /* Open the shared memory object identified by shm_name */
--      shm_fd = shm_open(shm_name, (O_CREAT | O_EXCL | O_RDWR), (S_IREAD | S_IWRITE));
-+      shm_fd = open(shm_name, (O_CREAT | O_EXCL | O_RDWR), (S_IREAD | S_IWRITE));
-       if (shm_fd >= 0)
-               init = 1;
-       else
--              shm_fd = shm_open(shm_name, O_RDWR, (S_IREAD | S_IWRITE));
-+              shm_fd = open(shm_name, O_RDWR, (S_IREAD | S_IWRITE));
-+
-+      /* This is all uClibc > 0.9.30 seems to do for shm_open() in librt/shm.c */
-+      fdflags = fcntl(shm_fd, F_GETFD, 0);
-+      if (fdflags >= 0)
-+              fdflags = fcntl(fd, F_SETFD, fdflags | FD_CLOEXEC);
-       if (shm_fd >= 0) {
-               /* Set the shared memory size */
diff --git a/libs/libv4l/patches/005-test_for_posix_ioctl.patch b/libs/libv4l/patches/005-test_for_posix_ioctl.patch
deleted file mode 100644 (file)
index e945bbf..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
---- a/configure.ac
-+++ b/configure.ac
-@@ -80,6 +80,20 @@ gl_VISIBILITY
- AC_CHECK_HEADERS([sys/klog.h])
- AC_CHECK_FUNCS([klogctl])
-+AC_CACHE_CHECK([for ioctl with POSIX signature],
-+  [gl_cv_func_ioctl_posix_signature],
-+  [AC_COMPILE_IFELSE(
-+     [AC_LANG_PROGRAM(
-+        [[#include <sys/ioctl.h>]],
-+        [[int ioctl (int, int, ...);]])
-+     ],
-+     [gl_cv_func_ioctl_posix_signature=yes],
-+     [gl_cv_func_ioctl_posix_signature=no])
-+  ])
-+if test "x$gl_cv_func_ioctl_posix_signature" = xyes; then
-+  AC_DEFINE([HAVE_POSIX_IOCTL], [1], [Have ioctl with POSIX signature])
-+fi
-+
- # Check host os
- case "$host_os" in
-   linux*)
diff --git a/libs/libv4l/patches/030-dont-call-getsubopt.patch b/libs/libv4l/patches/030-dont-call-getsubopt.patch
new file mode 100644 (file)
index 0000000..5824c70
--- /dev/null
@@ -0,0 +1,28 @@
+--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
++++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
+@@ -671,15 +671,18 @@ static bool parse_subset(char *optarg)
+ static bool parse_next_subopt(char **subs, char **value)
+ {
+-      static char *const subopts[] = {
+-          NULL
+-      };
+-      int opt = getsubopt(subs, subopts, value);
++      char *stmp = *subs;
++      *value = NULL;
+-      if (opt < 0 || *value)
++      if (*subs) {
++              *subs = strchr(stmp, ',');
++              if (*subs)
++                      *(*subs)++ = 0;
++              else *subs = stmp + strlen(stmp);
++
++              *value = stmp;
+               return false;
+-      fprintf(stderr, "No value given to suboption <%s>\n",
+-                      subopts[opt]);
++      }
+       return true;
+ }
diff --git a/libs/libv4l/patches/030-musl_compatibility.patch b/libs/libv4l/patches/030-musl_compatibility.patch
deleted file mode 100644 (file)
index 758be2b..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
---- a/lib/libv4lconvert/libv4lsyscall-priv.h
-+++ b/lib/libv4lconvert/libv4lsyscall-priv.h
-@@ -35,18 +35,23 @@
-    which is broken on some systems and doesn't include them itself :( */
- #ifdef linux
-+#define __NEED_off_t
- #include <sys/time.h>
- #include <syscall.h>
- #include <linux/types.h>
- #include <linux/ioctl.h>
- /* On 32 bits archs we always use mmap2, on 64 bits archs there is no mmap2 */
- #ifdef __NR_mmap2
-+#undef SYS_mmap2
- #define       SYS_mmap2 __NR_mmap2
- #define       MMAP2_PAGE_SHIFT 12
- #else
- #define       SYS_mmap2 SYS_mmap
- #define       MMAP2_PAGE_SHIFT 0
- #endif
-+#if !(defined(__UCLIBC__) || defined(__GLIBC__))
-+typedef off_t __off_t;
-+#endif
- #endif
- #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
---- a/lib/libv4l1/v4l1compat.c
-+++ b/lib/libv4l1/v4l1compat.c
-@@ -62,7 +62,7 @@ LIBV4L_PUBLIC int open(const char *file,
-       return fd;
- }
--#ifdef linux
-+#if defined(linux) && (defined(__GLIBC__) || defined(__UCLIBC__))
- LIBV4L_PUBLIC int open64(const char *file, int oflag, ...)
- {
-       int fd;
-@@ -94,7 +94,11 @@ LIBV4L_PUBLIC int dup(int fd)
-       return v4l1_dup(fd);
- }
-+#ifdef HAVE_POSIX_IOCTL
-+LIBV4L_PUBLIC int ioctl(int fd, int request, ...)
-+#else
- LIBV4L_PUBLIC int ioctl(int fd, unsigned long int request, ...)
-+#endif
- {
-       void *arg;
-       va_list ap;
-@@ -112,12 +116,12 @@ LIBV4L_PUBLIC ssize_t read(int fd, void
- }
- LIBV4L_PUBLIC void *mmap(void *start, size_t length, int prot, int flags, int fd,
--              __off_t offset)
-+              off_t offset)
- {
-       return v4l1_mmap(start, length, prot, flags, fd, offset);
- }
--#ifdef linux
-+#if defined(linux) && (defined(__GLIBC__) || defined(__UCLIBC__))
- LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
-               __off64_t offset)
- {
---- a/lib/libv4l2/v4l2convert.c
-+++ b/lib/libv4l2/v4l2convert.c
-@@ -86,7 +86,7 @@ LIBV4L_PUBLIC int open(const char *file,
-       return fd;
- }
--#ifdef linux
-+#if defined(linux) && (defined(__GLIBC__) || defined(__UCLIBC__))
- LIBV4L_PUBLIC int open64(const char *file, int oflag, ...)
- {
-       int fd;
-@@ -121,7 +121,11 @@ LIBV4L_PUBLIC int dup(int fd)
-       return v4l2_dup(fd);
- }
-+#ifdef HAVE_POSIX_IOCTL
-+LIBV4L_PUBLIC int ioctl(int fd, int request, ...)
-+#else
- LIBV4L_PUBLIC int ioctl(int fd, unsigned long int request, ...)
-+#endif
- {
-       void *arg;
-       va_list ap;
-@@ -144,7 +148,7 @@ LIBV4L_PUBLIC void *mmap(void *start, si
-       return v4l2_mmap(start, length, prot, flags, fd, offset);
- }
--#ifdef linux
-+#if defined(linux) && (defined(__GLIBC__) || defined(__UCLIBC__))
- LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
-               __off64_t offset)
- {
index 71acda3618d1685518aa060d2358db8d6dae0b93..ca377d3fa8592ceb346ae1a98dba12c840695dbd 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libwebsockets
-PKG_VERSION:=1.6.2
+PKG_VERSION:=1.7.3
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
index 9d25265bdcdb74578150d7443f7413b3ddd68a95..137a45b1c0d04eb3134311c12eda329f05cc0bcb 100644 (file)
@@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=postfix
 PKG_RELEASE:=1
 PKG_SOURCE_URL:=ftp://ftp.porcupine.org/mirrors/postfix-release/official/
-PKG_VERSION:=3.0.3
-PKG_MD5SUM:=61caffae689c11d09b4c972a394ae3b1
+PKG_VERSION:=3.1.0
+PKG_MD5SUM:=b4a506fa74c69c6fb1875c0971268344
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_MAINTAINER:=Denis Shulyaka <Shulyaka@gmail.com>
 PKG_LICENSE:=IPL-1.0
@@ -159,7 +159,7 @@ endef
 #      postconf -d > /tmp/main.cf.new
 # 3. Transfer /tmp/main.cf.new file to the build system
 # 4. Execute the following command:
-#      cat /tmp/main.cf.new | ( echo '# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE'; echo '# TEXT HERE JUST SHOWS DEFAULT SETTINGS BUILT INTO POSTFIX.'; echo '#'; grep -v ^alias_maps\ = |grep -v ^alias_database\ = |grep -v ^command_directory\ = |grep -v ^config_directory\ = |grep -v ^daemon_directory\ = |grep -v ^data_directory\ = |grep -v ^default_database_type\ = |grep -v ^html_directory\ = |grep -v ^mail_spool_directory\ = |grep -v ^mailq_path\ = |grep -v ^manpage_directory\ = |grep -v ^meta_directory\ = |grep -v ^mydomain\ = |grep -v ^myhostname\ = |grep -v ^mynetworks\ = |grep -v ^mynetworks_style\ = |grep -v ^newaliases_path\ = |grep -v ^queue_directory\ = |grep -v ^readme_directory\ = |grep -v ^sample_directory\ = |grep -v ^sendmail_path\ = |grep -v ^shlib_directory\ = |grep -v ^smtputf8_enable\ = |grep -v ^virtual_maps\ = ) > files/main.cf.default
+#      cat /tmp/main.cf.new | ( echo '# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE'; echo '# TEXT HERE JUST SHOWS DEFAULT SETTINGS BUILT INTO POSTFIX.'; echo '#'; grep -v ^alias_maps\ = |grep -v ^alias_database\ = |grep -v ^command_directory\ = |grep -v ^config_directory\ = |grep -v ^daemon_directory\ = |grep -v ^data_directory\ = |grep -v ^default_database_type\ = |grep -v ^html_directory\ = |grep -v ^mail_spool_directory\ = |grep -v ^mailq_path\ = |grep -v ^manpage_directory\ = |grep -v ^meta_directory\ = |grep -v ^mydomain\ = |grep -v ^myhostname\ = |grep -v ^mynetworks\ = |grep -v ^mynetworks_style\ = |grep -v ^newaliases_path\ = |grep -v ^queue_directory\ = |grep -v ^readme_directory\ = |grep -v ^sample_directory\ = |grep -v ^sendmail_path\ = |grep -v ^shlib_directory\ = |grep -v ^smtputf8_enable\ = |grep -v ^virtual_maps\ = |grep -v ^process_id\ = ) > files/main.cf.default
 # 5. Done. Now you can rebuild the package with new main.cf.default.
 #
 
index 944f2799d3a3518ab0c0878183d56ddf1b6764f1..9075498a938f315681d6b430dbb43173ecc32870 100644 (file)
@@ -11,6 +11,7 @@ address_verify_map = btree:$data_directory/verify_cache
 address_verify_negative_cache = yes
 address_verify_negative_expire_time = 3d
 address_verify_negative_refresh_time = 3h
+address_verify_pending_request_limit = 5000
 address_verify_poll_count = ${stress?{1}:{3}}
 address_verify_poll_delay = 3s
 address_verify_positive_expire_time = 31d
@@ -92,6 +93,7 @@ default_recipient_limit = 20000
 default_recipient_refill_delay = 5s
 default_recipient_refill_limit = 100
 default_transport = smtp
+default_transport_rate_delay = 0s
 default_verp_delimiters = +=
 defer_code = 450
 defer_service_name = defer
@@ -108,6 +110,7 @@ disable_mime_input_processing = no
 disable_mime_output_conversion = no
 disable_verp_bounces = no
 disable_vrfy_command = no
+dns_ncache_ttl_fix_enable = no
 dnsblog_reply_delay = 0s
 dnsblog_service_name = dnsblog
 dont_remove = 0
@@ -135,6 +138,7 @@ error_recipient_limit = $default_recipient_limit
 error_recipient_refill_delay = $default_recipient_refill_delay
 error_recipient_refill_limit = $default_recipient_refill_limit
 error_service_name = error
+error_transport_rate_delay = $default_transport_rate_delay
 execution_directory_expansion_filter = 1234567890!@%-_=+:,./abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
 expand_owner_alias = no
 export_environment = TZ MAIL_CONFIG LANG
@@ -205,6 +209,7 @@ lmtp_dns_resolver_options =
 lmtp_dns_support_level =
 lmtp_enforce_tls = no
 lmtp_extra_recipient_limit = $default_extra_recipient_limit
+lmtp_fallback_relay =
 lmtp_generic_maps =
 lmtp_header_checks =
 lmtp_host_lookup = dns
@@ -281,6 +286,7 @@ lmtp_tls_session_cache_timeout = 3600s
 lmtp_tls_trust_anchor_file =
 lmtp_tls_verify_cert_match = hostname
 lmtp_tls_wrappermode = no
+lmtp_transport_rate_delay = $default_transport_rate_delay
 lmtp_use_tls = no
 lmtp_xforward_timeout = 300s
 local_command_shell =
@@ -303,11 +309,12 @@ local_recipient_maps = proxy:unix:passwd.byname $alias_maps
 local_recipient_refill_delay = $default_recipient_refill_delay
 local_recipient_refill_limit = $default_recipient_refill_limit
 local_transport = local:$myhostname
+local_transport_rate_delay = $default_transport_rate_delay
 luser_relay =
 mail_name = Postfix
 mail_owner = postfix
-mail_release_date = 20151010
-mail_version = 3.0.3
+mail_release_date = 20160224
+mail_version = 3.1.0
 mailbox_command =
 mailbox_command_maps =
 mailbox_delivery_lock = fcntl, dotlock
@@ -339,6 +346,7 @@ milter_end_of_header_macros = i
 milter_header_checks =
 milter_helo_macros = {tls_version} {cipher} {cipher_bits} {cert_subject} {cert_issuer}
 milter_macro_daemon_name = $myhostname
+milter_macro_defaults =
 milter_macro_v = $mail_name $mail_version
 milter_mail_macros = i {auth_type} {auth_authen} {auth_author} {mail_addr} {mail_host} {mail_mailer}
 milter_protocol = 6
@@ -360,6 +368,7 @@ nested_header_checks = $header_checks
 non_fqdn_reject_code = 504
 non_smtpd_milters =
 notify_classes = resource, software
+openssl_path = openssl
 owner_request_special = yes
 parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
 permit_mx_backup_networks =
@@ -385,11 +394,12 @@ postscreen_disable_vrfy_command = $disable_vrfy_command
 postscreen_discard_ehlo_keyword_address_maps = $smtpd_discard_ehlo_keyword_address_maps
 postscreen_discard_ehlo_keywords = $smtpd_discard_ehlo_keywords
 postscreen_dnsbl_action = ignore
+postscreen_dnsbl_max_ttl = ${postscreen_dnsbl_ttl?{$postscreen_dnsbl_ttl}:{1}}h
+postscreen_dnsbl_min_ttl = 60s
 postscreen_dnsbl_reply_map =
 postscreen_dnsbl_sites =
 postscreen_dnsbl_threshold = 1
 postscreen_dnsbl_timeout = 10s
-postscreen_dnsbl_ttl = 1h
 postscreen_dnsbl_whitelist_threshold = 0
 postscreen_enforce_tls = $smtpd_enforce_tls
 postscreen_expansion_filter = $smtpd_expansion_filter
@@ -415,7 +425,6 @@ postscreen_use_tls = $smtpd_use_tls
 postscreen_watchdog_timeout = 10s
 postscreen_whitelist_interfaces = static:all
 prepend_delivered_header = command, file, forward
-process_id = 13574
 process_id_directory = pid
 process_name = postconf
 propagate_unmatched_extensions = canonical, virtual
@@ -467,6 +476,7 @@ relay_recipient_maps =
 relay_recipient_refill_delay = $default_recipient_refill_delay
 relay_recipient_refill_limit = $default_recipient_refill_limit
 relay_transport = relay
+relay_transport_rate_delay = $default_transport_rate_delay
 relayhost =
 relocated_maps =
 remote_header_rewrite_domain =
@@ -490,6 +500,7 @@ retry_minimum_delivery_slots = $default_minimum_delivery_slots
 retry_recipient_limit = $default_recipient_limit
 retry_recipient_refill_delay = $default_recipient_refill_delay
 retry_recipient_refill_limit = $default_recipient_refill_limit
+retry_transport_rate_delay = $default_transport_rate_delay
 rewrite_service_name = rewrite
 send_cyrus_sasl_authzid = no
 sender_bcc_maps =
@@ -587,6 +598,7 @@ smtp_tls_CApath =
 smtp_tls_block_early_mail_reply = no
 smtp_tls_cert_file =
 smtp_tls_ciphers = medium
+smtp_tls_dane_insecure_mx_policy = dane
 smtp_tls_dcert_file =
 smtp_tls_dkey_file = $smtp_tls_dcert_file
 smtp_tls_eccert_file =
@@ -613,12 +625,14 @@ smtp_tls_session_cache_timeout = 3600s
 smtp_tls_trust_anchor_file =
 smtp_tls_verify_cert_match = hostname
 smtp_tls_wrappermode = no
+smtp_transport_rate_delay = $default_transport_rate_delay
 smtp_use_tls = no
 smtp_xforward_timeout = 300s
 smtpd_authorized_verp_clients = $authorized_verp_clients
 smtpd_authorized_xclient_hosts =
 smtpd_authorized_xforward_hosts =
 smtpd_banner = $myhostname ESMTP $mail_name
+smtpd_client_auth_rate_limit = 0
 smtpd_client_connection_count_limit = 50
 smtpd_client_connection_rate_limit = 0
 smtpd_client_event_limit_exceptions = ${smtpd_client_connection_limit_exceptions:$mynetworks}
@@ -654,6 +668,7 @@ smtpd_per_record_deadline = ${stress?{yes}:{no}}
 smtpd_policy_service_default_action = 451 4.3.5 Server configuration problem
 smtpd_policy_service_max_idle = 300s
 smtpd_policy_service_max_ttl = 1000s
+smtpd_policy_service_policy_context =
 smtpd_policy_service_request_limit = 0
 smtpd_policy_service_retry_delay = 1s
 smtpd_policy_service_timeout = 100s
@@ -741,11 +756,11 @@ tls_dane_trust_anchor_digest_enable = yes
 tls_disable_workarounds =
 tls_eecdh_strong_curve = prime256v1
 tls_eecdh_ultra_curve = secp384r1
-tls_export_cipherlist = aNULL:-aNULL:ALL:+RC4:@STRENGTH
-tls_high_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH
+tls_export_cipherlist = aNULL:-aNULL:HIGH:MEDIUM:LOW:EXPORT:+RC4:@STRENGTH
+tls_high_cipherlist = aNULL:-aNULL:HIGH:@STRENGTH
 tls_legacy_public_key_fingerprints = no
-tls_low_cipherlist = aNULL:-aNULL:ALL:!EXPORT:+RC4:@STRENGTH
-tls_medium_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH
+tls_low_cipherlist = aNULL:-aNULL:HIGH:MEDIUM:LOW:+RC4:@STRENGTH
+tls_medium_cipherlist = aNULL:-aNULL:HIGH:MEDIUM:+RC4:@STRENGTH
 tls_null_cipherlist = eNULL:!aNULL
 tls_preempt_cipherlist = no
 tls_random_bytes = 32
@@ -837,4 +852,5 @@ virtual_recipient_limit = $default_recipient_limit
 virtual_recipient_refill_delay = $default_recipient_refill_delay
 virtual_recipient_refill_limit = $default_recipient_refill_limit
 virtual_transport = virtual
+virtual_transport_rate_delay = $default_transport_rate_delay
 virtual_uid_maps =
index ca43025c14330a34fcf55f18c7723d8e8af2bff1..50581446c88a136d4659f0c90389af4cfb7ea987 100644 (file)
@@ -1,7 +1,7 @@
 diff -rupN postfix-2.8.1/src/smtpd/smtpd_check.c postfix-2.8.1_patched/src/smtpd/smtpd_check.c
 --- postfix-2.8.1/src/smtpd/smtpd_check.c      2011-01-04 22:03:50.000000000 +0300
 +++ postfix-2.8.1_patched/src/smtpd/smtpd_check.c      2011-03-06 19:35:39.000000000 +0300
-@@ -5277,7 +5277,7 @@ char   *smtpd_check_queue(SMTPD_STATE *s
+@@ -5296,7 +5296,7 @@ char   *smtpd_check_queue(SMTPD_STATE *s
       */
  #define BLOCKS(x)     ((x) / fsbuf.block_size)
  
index 6344e93ba3a5644eb855931c5992dfb9753f7ff6..75d6411003881e31a9b30f21a80fbebe760e0e01 100644 (file)
@@ -1,7 +1,7 @@
 diff -Naur postfix-2.10.2/conf/post-install postfix-2.10.2_patched/conf/post-install
 --- postfix-2.10.2/conf/post-install   2013-06-13 18:07:46.000000000 +0400
 +++ postfix-2.10.2_patched/conf/post-install   2013-11-19 21:17:49.572820573 +0400
-@@ -359,10 +359,10 @@
+@@ -361,10 +361,10 @@
  
  # Sanity checks
  
@@ -16,7 +16,7 @@ diff -Naur postfix-2.10.2/conf/post-install postfix-2.10.2_patched/conf/post-ins
  
  case $setgid_group in
   no) echo $0: Error: setgid_group no longer accepts \"no\" values. 1>&2
-@@ -370,7 +370,7 @@
+@@ -372,7 +372,7 @@
  esac
  
  for path in "$daemon_directory" "$command_directory" "$queue_directory" \
@@ -25,7 +25,7 @@ diff -Naur postfix-2.10.2/conf/post-install postfix-2.10.2_patched/conf/post-ins
      "$meta_directory"
  do
     case "$path" in
-@@ -379,7 +379,7 @@
+@@ -381,7 +381,7 @@
     esac
  done
  
@@ -37,7 +37,7 @@ diff -Naur postfix-2.10.2/conf/post-install postfix-2.10.2_patched/conf/post-ins
 diff -Naur postfix-2.10.2/postfix-install postfix-2.10.2_patched/postfix-install
 --- postfix-2.10.2/postfix-install     2012-05-22 23:40:29.000000000 +0400
 +++ postfix-2.10.2_patched/postfix-install     2013-11-19 21:12:20.694160734 +0400
-@@ -543,13 +543,13 @@
+@@ -554,13 +554,13 @@
       exit 1;;
  esac
  
@@ -58,7 +58,7 @@ diff -Naur postfix-2.10.2/postfix-install postfix-2.10.2_patched/postfix-install
  
  for path in "$html_directory" "$readme_directory" "$shlib_directory"
  do
-@@ -562,7 +562,7 @@
+@@ -573,7 +573,7 @@
  done
  
  for path in "$daemon_directory" "$data_directory" "$command_directory" "$queue_directory" \
@@ -67,7 +67,7 @@ diff -Naur postfix-2.10.2/postfix-install postfix-2.10.2_patched/postfix-install
      "$meta_directory"
  do
     case "$path" in
-@@ -758,8 +758,8 @@
+@@ -780,8 +780,8 @@
                compare_or_replace $mode "$owner" "$group" html/$file \
                    $HTML_DIRECTORY/$file || exit 1;;
        '$manpage_directory')
index 8aeaea5e48671175fbf429d1f034ae15e3780220..7abff3b900129b07f840a450476ae350f0983eb0 100644 (file)
@@ -1,7 +1,7 @@
 diff -Naur postfix-2.11.1/src/util/sys_defs.h postfix-2.11.1.patched/src/util/sys_defs.h
 --- postfix-2.11.1/src/util/sys_defs.h 2013-09-30 00:51:55.000000000 +0400
 +++ postfix-2.11.1.patched/src/util/sys_defs.h 2014-09-29 03:11:48.962277971 +0400
-@@ -768,9 +768,8 @@
+@@ -769,9 +769,8 @@
  #define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
  #define DEF_MAILBOX_LOCK "fcntl, dotlock"     /* RedHat >= 4.x */
  #define HAS_FSYNC
index 7f1a9707efbdfb9a13a0d5bfe69449d507e874d4..076d875df0bb584eb189be59e48f8e45fc3fe970 100644 (file)
@@ -1,6 +1,6 @@
 --- a/makedefs 2016-01-28 12:30:14.444082390 -0500
 +++ b/makedefs 2016-01-28 13:44:02.092006512 -0500
-@@ -193,7 +193,7 @@ error() {
+@@ -198,7 +198,7 @@ error() {
  
  case $# in
   # Officially supported usage.
@@ -9,7 +9,7 @@
      RELEASE=`(uname -r) 2>/dev/null`
      # No ${x%%y} support in Solaris 11 /bin/sh
      RELEASE_MAJOR=`expr "$RELEASE" : '\([0-9]*\)'` || exit 1
-@@ -207,6 +207,15 @@ case $# in
+@@ -212,6 +212,15 @@ case $# in
  esac
  
  case "$SYSTEM.$RELEASE" in
index 6140e23faf62c4bcc8c056221e144360d66b239a..0dce776fae8531172baf9e151fb6ae2f7462ecc9 100644 (file)
@@ -1,7 +1,7 @@
 diff -Naur postfix-2.11.1/postfix-install postfix-2.11.1.patched/postfix-install
 --- postfix-2.11.1/postfix-install     2014-10-05 20:43:58.598876904 +0400
 +++ postfix-2.11.1.patched/postfix-install     2014-10-05 20:47:36.076700082 +0400
-@@ -830,23 +830,23 @@
+@@ -852,23 +852,23 @@
      esac
  done
  
index 97a165c3d43cd76d6bfaa48a4edb8ad05ee328d8..334efdd788f16af76adaf39773496602ef4bcd5f 100644 (file)
@@ -1,12 +1,12 @@
 diff -Naur postfix-2.11.1/conf/post-install postfix-2.11.1.patched/conf/post-install
 --- postfix-2.11.1/conf/post-install   2014-10-05 20:43:58.597876946 +0400
 +++ postfix-2.11.1.patched/conf/post-install   2014-10-11 16:28:01.258874097 +0400
-@@ -319,7 +319,7 @@
+@@ -321,7 +321,7 @@
  case `uname -s` in
  HP-UX*) FMT=cat;;
  SunOS*) FMT=fake_fmt;;
 -     *) FMT=fmt;;
-+     *) FMT="xargs echo";;
++     *) FMT=cat;;
  esac
  
  # If a parameter is not set via the command line or environment,
index 84b775179846cd3c0f7e71baf896912492459a5d..b11a62ceecbb0b8d40da2d5a66f8f2a260b39453 100644 (file)
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=adblock
-PKG_VERSION:=0.80.1
+PKG_VERSION:=1.0.0
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Dirk Brenken <openwrt@brenken.org>
@@ -24,8 +24,8 @@ endef
 
 define Package/$(PKG_NAME)/description
 Powerful adblock script to block ad/abuse domains.
-Currently the script supports 15 domain blacklist sites plus manual black- and whitelist overrides.
-Please see README.md in /etc/adblock for further information.
+Currently the script supports 16 domain blacklist sites plus manual black- and whitelist overrides.
+Please see https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md for further information.
 
 endef
 
@@ -62,7 +62,6 @@ define Package/$(PKG_NAME)/install
        $(INSTALL_CONF) ./files/adblock.conf $(1)/etc/adblock/adblock.conf.default
        $(INSTALL_CONF) ./files/adblock.blacklist $(1)/etc/adblock/
        $(INSTALL_CONF) ./files/adblock.whitelist $(1)/etc/adblock/
-       $(INSTALL_CONF) ./files/README.md $(1)/etc/adblock/
 
        $(INSTALL_DIR) $(1)/www/adblock
        $(INSTALL_DATA) ./files/www/adblock/* $(1)/www/adblock/
index 88a58ef2b53e70ea7de59f5e380332f9a7773be9..3c90e1ca5e53cddb63143d18b4dea4a9e8a6443b 100644 (file)
@@ -1,10 +1,7 @@
 # adblock script for openwrt
 
 ## Description
-A lot of people already use adblocker plugins within their desktop browsers,  
-but what if you are using your (smart) phone, tablet, watch or any other wlan gadget...getting rid of annoying ads, trackers and other abuse sites (like facebook ;-) is simple: block them with your router.  
-
-When the dns server on your router receives dns requests, you will sort out queries that ask for the resource records of ad servers and return the local ip address of your router and the internal web server delivers a transparent pixel instead.
+A lot of people already use adblocker plugins within their desktop browsers, but what if you are using your (smart) phone, tablet, watch or any other wlan gadget...getting rid of annoying ads, trackers and other abuse sites (like facebook ;-) is simple: block them with your router. When the dns server on your router receives dns requests, you will sort out queries that ask for the resource records of ad servers and return the local ip address of your router and the internal web server delivers a transparent pixel instead.  
 
 ## Main Features
 * support of the following domain blocklist sources (free for private usage, for commercial use please check their individual licenses):
@@ -24,12 +21,14 @@ When the dns server on your router receives dns requests, you will sort out quer
     * => numerous updates on the same day, approx. 1.800 entries
     * [palevotracker](https://palevotracker.abuse.ch)
     * => daily updates, approx. 15 entries
-    * [ruadlist+easylist](https://code.google.com/p/ruadlist)
+    * [ruadlist/easylist](https://code.google.com/p/ruadlist)
     * => weekly updates, approx. 2.000 entries
     * [shallalist](http://www.shallalist.de) (categories "adv" "costtraps" "spyware" "tracker" "warez" enabled by default)
     * => daily updates, approx. 32.000 entries (a short description of all shallalist categories can be found [online](http://www.shallalist.de/categories.html))
     * [spam404](http://www.spam404.com)
     * => infrequent updates, approx. 5.000 entries
+    * [sysctl/cameleon](http://sysctl.org/cameleon)
+    * => weekly updates, approx. 21.000 entries
     * [whocares](http://someonewhocares.org)
     * => weekly updates, approx. 12.000 entries
     * [winhelp](http://winhelp2002.mvps.org)
@@ -46,15 +45,13 @@ When the dns server on your router receives dns requests, you will sort out quer
 * adblock source list parsing by fast & flexible regex rulesets
 * additional white- and blacklist support for manual overrides
 * quality checks during & after update of adblock lists to ensure a reliable dnsmasq service
-* wan update check, to wait for an active wan uplink before update
 * basic adblock statistics via iptables packet counters for each chain
 * status & error logging to stdout and syslog
-* use of dynamic uhttpd instance as adblock pixel server
+* use a dynamic uhttpd instance as an adblock pixel server
+* use dynamic iptables rulesets for adblock related redirects/rejects
 * openwrt init system support (start/stop/restart/reload)
-* hotplug support, adblock start will be triggered by wan 'ifup' event
-* optional features (disabled by default):
-    * adblock list backup/restore
-    * debug logging to separate file
+* hotplug support, the adblock start will be triggered by wan 'ifup' event
+* optional: adblock list backup/restore (disabled by default)
 
 ## Prerequisites
 * [openwrt](https://openwrt.org), tested with latest stable release (Chaos Calmer 15.05) and with current trunk (Designated Driver > r47025)
@@ -63,49 +60,51 @@ When the dns server on your router receives dns requests, you will sort out quer
     * optional: 'kmod-ipt-nat6' for IPv6 support
 * the above dependencies and requirements will be checked during package installation & script runtime
 
-## Installation & Usage
-* install the adblock package (*opkg update & opkg install adblock*)
+## Designated Driver Installation & Usage
+* install the adblock package (*opkg install adblock*)
 * start the adblock service with */etc/init.d/adblock start* and check *logread -e "adblock"* for adblock related information
 * optional: enable/disable your required adblock list sources in */etc/config/adblock* - 'adaway', 'disconnect' and 'yoyo' are enabled by default
 * optional: maintain the adblock service in luci under 'System => Startup'
 
 ## LuCI adblock companion package
 For easy management of the various blocklist sources and and the adblock options there is also a nice & efficient LuCI frontend available.  
-Please install the package 'luci-app-adblock'. Then you will find the application in LuCI located under 'Services' menu.  
+Please install the package 'luci-app-adblock' (*opkg install luci-app-adblock*). Then you will find the application in LuCI located under 'Services' menu.  
 Thanks to Hannu Nyman for this great adblock LuCI frontend!  
 
-## CC installation notes
+## Chaos Calmer installation notes
 * currently the adblock package is *not* part of the CC package repository
-* download the latest adblock package *adblock_x.xx.x-1_all.ipk* from a DD snapshot [package directory](https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/packages/packages)
+* download the latest adblock package *adblock_x.xx.x-1_all.ipk* from a development snapshot [package directory](https://downloads.openwrt.org/snapshots/trunk/ar71xx/nand/packages/packages)
+* due to server hardware troubles the package directory link above may not work, if so please check the [main openwrt download area](https://downloads.openwrt.org) manually
 * manual transfer the package to your router and install the opkg package as usual
 
 ## Tweaks
 * there is no need to enable all blacklist sites at once, for normal use one to three adblock list sources should be sufficient
-* if you really need to handle all blacklists at once add an usb stick or any other storage device to supersize your temp directory with a swap partition => see [openwrt wiki](https://wiki.openwrt.org/doc/uci/fstab) for further details
-* add static, personal domain white- or blacklist entries, one domain per line (wildcards & regex are not allowed!), by default both lists are located in */etc/adblock*
-* enable the backup/restore feature, to restore automatically the latest, stable backup of your adblock lists in case of any processing error
-* enable the logging feature for continuous logfile writing to monitor the adblock runs over a longer period
+* if you really need to handle all blacklists at once add an usb stick or any other storage device to enlarge your temp directory with a swap partition => see [openwrt wiki](https://wiki.openwrt.org/doc/uci/fstab) for further details
+* add personal domain white- or blacklist entries as an additional blocklist source, one domain per line (wildcards & regex are not allowed!), by default both empty lists are located in */etc/adblock*
+* enable the backup/restore feature, to restore automatically the latest stable backup of your adblock lists in case of any (partial) processing error (i.e. a single blocklist source server is down). Please use an (external) solid partition and *not* your volatile router temp directory for this
 * for a scheduled call of the adblock service via */etc/init.d/adblock start* add an appropriate crontab entry
+* in case of any script runtime errors, you should enable script debugging: for this please change the value of the main 'DEBUG' switch, you'll find it in the header of */usr/bin/adblock-update.sh*
 
 ## Further adblock config options
 * usually the adblock autodetection works quite well and no manual config overrides are needed, all options apply to 'global' adblock config section:
-    * adb\_enabled => main switch to enable/disable adblock service (default: '1' (enabled))
+    * adb\_enabled => main switch to enable/disable adblock service (default: '1', enabled)
     * adb\_cfgver => config version string (do not change!) - adblock checks this entry and automatically applies the current config, if none or an older revision was found.
     * adb\_wanif => name of the logical wan interface (default: 'wan')
     * adb\_lanif => name of the logical lan interface (default: 'lan')
     * adb\_port => port of the adblock uhttpd instance (default: '65535')
     * adb\_nullipv4 => IPv4 blackhole ip address (default: '192.0.2.1')
     * adb\_nullipv6 => IPv6 blackhole ip address (default: '::ffff:c000:0201')
+    * adb\_forcedns => redirect all DNS queries to local dnsmasq resolver (default: '1', enabled)
 
 ## Background
 This adblock package is a dns/dnsmasq based adblock solution for openwrt.  
 Queries to ad/abuse domains are never forwarded and always replied with a local IP address which may be IPv4 or IPv6.  
 For that purpose adblock uses an ip address from the private 'TEST-NET-1' subnet (192.0.2.1 / ::ffff:c000:0201) by default.  
 Furthermore all ad/abuse queries will be filtered by ip(6)tables and redirected to internal adblock pixel server (in PREROUTING chain) or rejected (in FORWARD or OUTPUT chain).  
-All iptables and uhttpd related adblock additions are non-destructive, no hard-coded changes in 'firewall.user', 'uhttpd' config or any other openwrt related config files. There is *no* adblock background daemon running, the (scheduled) start of the adblock service keeps only the adblock lists up-to-date.
+All iptables and uhttpd related adblock additions are non-destructive, no hard-coded changes in 'firewall.user', 'uhttpd' config or any other openwrt related config files. There is *no* adblock background daemon running, the (scheduled) start of the adblock service keeps only the adblock lists up-to-date.  
 
 ## Support
-Please join the adblock discussion in this [openwrt forum thread](https://forum.openwrt.org/viewtopic.php?id=59803) or contact me by mail <openwrt@brenken.org>
+Please join the adblock discussion in this [openwrt forum thread](https://forum.openwrt.org/viewtopic.php?id=59803) or contact me by mail <openwrt@brenken.org>  
 
 ## Removal
 * stop all adblock related services with */etc/init.d/adblock stop*
index faccc9640d277b0031af0d90cc426e1529409203..5bcb81ad87270451d92c3bfb0fce68dea7973d5d 100644 (file)
@@ -1,8 +1,6 @@
 #!/bin/sh
-#################################################
-# function library used by adblock-update.sh    #
-# written by Dirk Brenken (openwrt@brenken.org) #
-#################################################
+# function library used by adblock-update.sh
+# written by Dirk Brenken (openwrt@brenken.org)
 
 #####################################
 # f_envload: load adblock environment
@@ -13,12 +11,12 @@ f_envload()
 
     # get version string from default adblock configuration file
     #
-    cfg_version="$(/sbin/uci -q get adblock.global.adb_cfgver 2>/dev/null)"
-    cfg_enabled="$(/sbin/uci -q get adblock.global.adb_enabled 2>/dev/null)"
+    cfg_version="$(/sbin/uci -q get adblock.global.adb_cfgver)"
+    cfg_enabled="$(/sbin/uci -q get adblock.global.adb_enabled)"
     rc=$?
     if [ $((rc)) -ne 0 ] || [ "${cfg_version}" != "${adb_scriptver%.*}" ]
     then
-        cp -pf "/etc/adblock/adblock.conf.default" "/etc/config/adblock" >/dev/null 2>&1
+        cp -pf "/etc/adblock/adblock.conf.default" "/etc/config/adblock"
         rc=$?
         if [ $((rc)) -eq 0 ]
         then
@@ -38,7 +36,7 @@ f_envload()
     #
     if [ -r "/lib/functions.sh" ]
     then
-        . "/lib/functions.sh" 2>/dev/null
+        . "/lib/functions.sh"
     else
         rc=110
         f_log "openwrt function library not found" "${rc}"
@@ -49,7 +47,7 @@ f_envload()
     #
     if [ -r "/lib/functions/network.sh" ]
     then
-        . "/lib/functions/network.sh" 2>/dev/null
+        . "/lib/functions/network.sh"
     else
         rc=115
         f_log "openwrt network library not found" "${rc}"
@@ -64,7 +62,7 @@ f_envload()
         f_log "adblock installation finished, 'opkg' currently locked by package installer"
         f_exit
     fi
-    pkg_list="$(opkg list-installed 2>/dev/null)"
+    pkg_list="$(opkg list-installed)"
     if [ -z "${pkg_list}" ]
     then
         rc=120
@@ -88,6 +86,7 @@ f_envparse()
     adb_nullipv6="::ffff:c000:0201"
     adb_blacklist="/etc/adblock/adblock.blacklist"
     adb_whitelist="/etc/adblock/adblock.whitelist"
+    adb_forcedns=1
 
     # function to read global options by callback
     #
@@ -110,7 +109,7 @@ f_envparse()
 
     # function to iterate through config list, read only options in "enabled" sections
     #
-    adb_cfglist="adb_backupdir adb_logfile adb_src"
+    adb_cfglist="adb_backupdir adb_src"
     unset adb_sources
     parse_config()
     {
@@ -153,11 +152,10 @@ f_envparse()
 
     # set more script defaults (can't be overwritten by adblock config options)
     #
-    adb_cnt=0
-    adb_minspace=20000
-    adb_unique=1
-    adb_tmpfile="$(mktemp -tu 2>/dev/null)"
-    adb_tmpdir="$(mktemp -p /tmp -d 2>/dev/null)"
+    adb_count=0
+    adb_minspace=12000
+    adb_tmpfile="$(mktemp -tu)"
+    adb_tmpdir="$(mktemp -p /tmp -d)"
     adb_dnsdir="/tmp/dnsmasq.d"
     adb_dnsprefix="adb_list"
     adb_prechain_ipv4="prerouting_rule"
@@ -167,35 +165,33 @@ f_envparse()
     adb_fwdchain_ipv6="forwarding_rule"
     adb_outchain_ipv6="output_rule"
     adb_fetch="/usr/bin/wget"
-    unset adb_srclist
-    unset adb_revsrclist
-    unset adb_errsrclist
+    unset adb_srclist adb_revsrclist adb_errsrclist
 
     # set adblock source ruleset definitions
     #
-    rset_start="sed -r 's/[[:space:]]|[\[!#/:;_].*|[0-9\.]*localhost.*//g; s/[\^#/:;_\.\t ]*$//g'"
-    rset_end="tr -cd '[0-9a-z\.\-]\n' | sed -r 's/^[ \.\-].*$|^[a-z0-9]*[ \.\-]*$//g; /^[#/:;_\s]*$/d'"
-    rset_adaway="${rset_start} | sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-1]\{1,1\}//g' | ${rset_end}"
-    rset_blacklist="${rset_start} | ${rset_end}"
-    rset_disconnect="${rset_start} | ${rset_end}"
-    rset_dshield="${rset_start} | ${rset_end}"
-    rset_feodo="${rset_start} | ${rset_end}"
-    rset_malware="${rset_start} | ${rset_end}"
-    rset_malwarelist="${rset_start} | sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-1]\{1,1\}//g' | ${rset_end}"
-    rset_openphish="sed -e 's|^[^/]*//||' -e 's|/.*$||'"
-    rset_palevo="${rset_start} | ${rset_end}"
-    rset_ruadlist="sed -e '/^\|\|/! s/.*//; /\^$/! s/.*//; s/\^$//g; /[\.]/! s/.*//; s/^[\|]\{1,2\}//g' | ${rset_end}"
-    rset_shalla="${rset_start} | sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}$//g' | ${rset_end}"
-    rset_spam404="${rset_start} | sed 's/^\|\|//g' | ${rset_end}"
-    rset_whocares="${rset_start} | sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-1]\{1,1\}//g' | ${rset_end}"
-    rset_winhelp="${rset_start} | sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-1]\{1,1\}//g' | ${rset_end}"
-    rset_yoyo="${rset_start} | sed 's/,/\n/g' | ${rset_end}"
-    rset_zeus="${rset_start} | ${rset_end}"
+    rset_core="([A-Za-z0-9_-]+\.){1,}[A-Za-z]+"
+    rset_adaway="awk '\$0 ~/^127\.0\.0\.1[ \t]+${rset_core}/{print tolower(\$2)}'"
+    rset_blacklist="awk '\$1 ~/^${rset_core}/{print tolower(\$1)}'"
+    rset_disconnect="awk '\$1 ~/^${rset_core}/{print tolower(\$1)}'"
+    rset_dshield="awk '\$1 ~/^${rset_core}/{print tolower(\$1)}'"
+    rset_feodo="awk '\$1 ~/^${rset_core}/{print tolower(\$1)}'"
+    rset_malware="awk '\$1 ~/^${rset_core}/{print tolower(\$1)}'"
+    rset_malwarelist="awk '\$0 ~/^127\.0\.0\.1[ \t]+${rset_core}/{print tolower(\$2)}'"
+    rset_openphish="awk -F '/' '\$3 ~/^${rset_core}/{print tolower(\$3)}'"
+    rset_palevo="awk '\$1 ~/^${rset_core}/{print tolower(\$1)}'"
+    rset_ruadlist="awk -F '[|^]' '\$0 ~/^\|\|${rset_core}\^$/{print tolower(\$3)}'"
+    rset_shalla="awk -F '/' '\$1 ~/^${rset_core}/{print tolower(\$1)}'"
+    rset_spam404="awk '\$1 ~/^${rset_core}/{print tolower(\$1)}'"
+    rset_sysctl="awk '\$0 ~/^127\.0\.0\.1[ \t]+${rset_core}/{print tolower(\$2)}'"
+    rset_whocares="awk '\$0 ~/^127\.0\.0\.1[ \t]+${rset_core}/{print tolower(\$2)}'"
+    rset_winhelp="awk '\$0 ~/^0\.0\.0\.0[ \t]+${rset_core}/{print tolower(\$2)}'"
+    rset_yoyo="awk '\$1 ~/^${rset_core}/{print tolower(\$1)}'"
+    rset_zeus="awk '\$1 ~/^${rset_core}/{print tolower(\$1)}'"
 
     # get logical wan update interfaces (with default route) and their device names
     #
-    network_find_wan adb_wanif4 2>/dev/null
-    network_find_wan6 adb_wanif6 2>/dev/null
+    network_find_wan adb_wanif4
+    network_find_wan6 adb_wanif6
     if [ -z "${adb_wanif4}" ] && [ -z "${adb_wanif6}" ]
     then
         rc=125
@@ -207,15 +203,15 @@ f_envparse()
         f_log "LAN only (${adb_lanif}) network, no valid IPv4/IPv6 wan update interface found" "${rc}"
         f_exit
     else
-        network_get_device adb_wandev4 "${adb_wanif4}" 2>/dev/null
-        network_get_device adb_wandev6 "${adb_wanif6}" 2>/dev/null
+        network_get_device adb_wandev4 "${adb_wanif4}"
+        network_get_device adb_wandev6 "${adb_wanif6}"
         break
     fi
 
     # get lan ip addresses
     #
-    network_get_ipaddr adb_ipv4 "${adb_lanif}" 2>/dev/null
-    network_get_ipaddr6 adb_ipv6 "${adb_lanif}" 2>/dev/null
+    network_get_ipaddr adb_ipv4 "${adb_lanif}"
+    network_get_ipaddr6 adb_ipv6 "${adb_lanif}"
     if [ -z "${adb_ipv4}" ] && [ -z "${adb_ipv6}" ]
     then
         rc=130
@@ -242,16 +238,16 @@ f_envcheck()
     #
     if [ -n "${adb_wanif6}" ]
     then
-        check="$(printf "${pkg_list}" | grep "^ip6tables -" 2>/dev/null)"
+        check="$(printf "${pkg_list}" | grep "^ip6tables -")"
         if [ -z "${check}" ]
         then
-            f_log "package 'ip6tables' not found, IPv6 support wíll be disabled"
+            f_log "package 'ip6tables' not found, IPv6 support will be disabled"
             unset adb_wanif6
         else
-            check="$(printf "${pkg_list}" | grep "^kmod-ipt-nat6 -" 2>/dev/null)"
+            check="$(printf "${pkg_list}" | grep "^kmod-ipt-nat6 -")"
             if [ -z "${check}" ]
             then
-                f_log "package 'kmod-ipt-nat6' not found, IPv6 support wíll be disabled"
+                f_log "package 'kmod-ipt-nat6' not found, IPv6 support will be disabled"
                 unset adb_wanif6
             fi
         fi
@@ -260,7 +256,7 @@ f_envcheck()
     # check ca-certificates package and set wget parms accordingly
     #
     wget_parm="--no-config --quiet --tries=1 --no-cache --no-cookies --max-redirect=0 --dns-timeout=5 --connect-timeout=5 --read-timeout=5"
-    check="$(printf "${pkg_list}" | grep "^ca-certificates -" 2>/dev/null)"
+    check="$(printf "${pkg_list}" | grep "^ca-certificates -")"
     if [ -z "${check}" ]
     then
         wget_parm="${wget_parm} --no-check-certificate"
@@ -270,14 +266,11 @@ f_envcheck()
     #
     if [ ! -r "${adb_blacklist}" ]
     then
-        rc=135
-        f_log "adblock blacklist not found (${adb_blacklist})" "${rc}"
-        f_exit
-    elif [ ! -r "${adb_whitelist}" ]
+        f_log "adblock blacklist not found, source will be disabled"
+    fi
+    if [ ! -r "${adb_whitelist}" ]
     then
-        rc=135
-        f_log "adblock whitelist not found (${adb_whitelist})" "${rc}"
-        f_exit
+        f_log "adblock whitelist not found, source will be disabled"
     fi
 
     # check adblock temp directory
@@ -287,25 +280,30 @@ f_envcheck()
         f_space "${adb_tmpdir}"
         if [ "${space_ok}" = "false" ]
         then
-            rc=140
-            f_log "not enough space in '${adb_tmpdir}', please supersize your temp directory" "${rc}"
-            f_exit
+            if [ $((av_space)) -le 2000 ]
+            then
+                rc=135
+                f_log "not enough free space in '${adb_tmpdir}' (avail. ${av_space} kb)" "${rc}"
+                f_exit
+            else
+                f_log "not enough free space to handle all adblock list sources at once in '${adb_tmpdir}' (avail. ${av_space} kb)"
+            fi
         fi
     else
-        rc=140
+        rc=135
         f_log "temp directory not found" "${rc}"
         f_exit
     fi
 
     # memory check
     #
-    mem_total="$(awk '$1 ~ /^MemTotal/ {print $2}' "/proc/meminfo" 2>/dev/null)"
-    mem_free="$(awk '$1 ~ /^MemFree/ {print $2}' "/proc/meminfo" 2>/dev/null)"
-    mem_swap="$(awk '$1 ~ /^SwapTotal/ {print $2}' "/proc/meminfo" 2>/dev/null)"
+    mem_total="$(awk '$1 ~ /^MemTotal/ {printf $2}' "/proc/meminfo")"
+    mem_free="$(awk '$1 ~ /^MemFree/ {printf $2}' "/proc/meminfo")"
+    mem_swap="$(awk '$1 ~ /^SwapTotal/ {printf $2}' "/proc/meminfo")"
     if [ $((mem_total)) -le 64000 ] && [ $((mem_swap)) -eq 0 ]
     then
-        adb_unique=0
-        f_log "not enough memory, overall sort processing will be disabled (total: ${mem_total}, free: ${mem_free}, swap: ${mem_swap})"
+        mem_ok="false"
+        f_log "not enough free memory, overall sort processing will be disabled (total: ${mem_total}, free: ${mem_free}, swap: ${mem_swap})"
     fi
 
     # check backup configuration
@@ -315,7 +313,7 @@ f_envcheck()
         f_space "${adb_backupdir}"
         if [ "${space_ok}" = "false" ]
         then
-            f_log "not enough space in '${adb_backupdir}', backup/restore will be disabled"
+            f_log "not enough free space in '${adb_backupdir}'(avail. ${av_space} kb), backup/restore will be disabled"
             backup_ok="false"
         else
             f_log "backup/restore will be enabled"
@@ -326,34 +324,18 @@ f_envcheck()
         f_log "backup/restore will be disabled"
     fi
 
-    # check log configuration
-    #
-    adb_logdir="${adb_logfile%/*}"
-    if [ -n "${adb_logdir}" ] && [ -d "${adb_logdir}" ]
-    then
-        f_space "${adb_logdir}"
-        if [ "${space_ok}" = "false" ]
-        then
-            f_log "not enough space in '${adb_logdir}', logging will be disabled"
-            log_ok="false"
-        else
-            f_log "logging will be enabled"
-            log_ok="true"
-        fi
-    else
-        log_ok="false"
-        f_log "logging will be disabled"
-    fi
-
     # check ipv4/iptables configuration
     #
     if [ -n "${adb_wanif4}" ] && [ -n "${adb_wandev4}" ]
     then
         f_firewall "IPv4" "nat" "A" "${adb_prechain_ipv4}" "adb-prerouting" "! -i ${adb_wandev4} -p tcp -d ${adb_nullipv4} -m multiport --dports 80,443 -j REDIRECT --to-ports ${adb_port}"
-        f_firewall "IPv4" "nat" "A" "${adb_prechain_ipv4}" "adb-dns" "! -i ${adb_wandev4} -p udp --dport 53 -j REDIRECT"
-        f_firewall "IPv4" "nat" "A" "${adb_prechain_ipv4}" "adb-dns" "! -i ${adb_wandev4} -p tcp --dport 53 -j REDIRECT"
         f_firewall "IPv4" "filter" "A" "${adb_fwdchain_ipv4}" "adb-forward" "! -i ${adb_wandev4} -d ${adb_nullipv4} -j REJECT --reject-with icmp-host-unreachable"
         f_firewall "IPv4" "filter" "A" "${adb_outchain_ipv4}" "adb-output" "! -i ${adb_wandev4} -d ${adb_nullipv4} -j REJECT --reject-with icmp-host-unreachable"
+        if [ $((adb_forcedns)) -eq 1 ]
+        then
+            f_firewall "IPv4" "nat" "A" "${adb_prechain_ipv4}" "adb-dns" "! -i ${adb_wandev4} -p udp --dport 53 -j REDIRECT"
+            f_firewall "IPv4" "nat" "A" "${adb_prechain_ipv4}" "adb-dns" "! -i ${adb_wandev4} -p tcp --dport 53 -j REDIRECT"
+        fi
         if [ "${fw_done}" = "true" ]
         then
             f_log "created volatile IPv4 firewall ruleset"
@@ -366,10 +348,13 @@ f_envcheck()
     if [ -n "${adb_wanif6}" ] && [ -n "${adb_wandev6}" ]
     then
         f_firewall "IPv6" "nat" "A" "${adb_prechain_ipv6}" "adb-prerouting" "! -i ${adb_wandev6} -p tcp -d ${adb_nullipv6} -m multiport --dports 80,443 -j REDIRECT --to-ports ${adb_port}"
-        f_firewall "IPv6" "nat" "A" "${adb_prechain_ipv6}" "adb-dns" "! -i ${adb_wandev6} -p udp --dport 53 -j REDIRECT"
-        f_firewall "IPv6" "nat" "A" "${adb_prechain_ipv6}" "adb-dns" "! -i ${adb_wandev6} -p tcp --dport 53 -j REDIRECT"
         f_firewall "IPv6" "filter" "A" "${adb_fwdchain_ipv6}" "adb-forward" "! -i ${adb_wandev6} -d ${adb_nullipv6} -j REJECT --reject-with icmp6-addr-unreachable"
         f_firewall "IPv6" "filter" "A" "${adb_outchain_ipv6}" "adb-output" "! -i ${adb_wandev6} -d ${adb_nullipv6} -j REJECT --reject-with icmp6-addr-unreachable"
+        if [ $((adb_forcedns)) -eq 1 ]
+        then
+            f_firewall "IPv6" "nat" "A" "${adb_prechain_ipv6}" "adb-dns" "! -i ${adb_wandev6} -p udp --dport 53 -j REDIRECT"
+            f_firewall "IPv6" "nat" "A" "${adb_prechain_ipv6}" "adb-dns" "! -i ${adb_wandev6} -p tcp --dport 53 -j REDIRECT"
+        fi
         if [ "${fw_done}" = "true" ]
         then
             f_log "created volatile IPv6 firewall ruleset"
@@ -379,42 +364,28 @@ f_envcheck()
 
     # check volatile adblock uhttpd instance configuration
     #
-    rc="$(ps | grep "[u]httpd.*\-h /www/adblock" >/dev/null 2>&1; printf ${?})"
+    rc="$(ps | grep -q "[u]httpd.*\-h /www/adblock"; printf ${?})"
     if [ $((rc)) -ne 0 ]
     then
         if [ -n "${adb_wanif4}" ] && [ -n "${adb_wanif6}" ]
         then
-            uhttpd -h "/www/adblock" -k 5 -N 200 -t 0 -T 1 -D -S -E "/adblock.html" -p "${adb_ipv4}:${adb_port}" -p "[${adb_ipv6}]:${adb_port}">/dev/null 2>&1
+            uhttpd -h "/www/adblock" -k 5 -N 200 -t 0 -T 1 -D -S -E "/index.html" -p "${adb_ipv4}:${adb_port}" -p "[${adb_ipv6}]:${adb_port}"
             rc=${?}
-            if [ $((rc)) -eq 0 ]
-            then
-                f_log "created volatile uhttpd instance (${adb_ipv4}:${adb_port}, [${adb_ipv6}]:${adb_port})"
-            else
-                f_log "failed to initialize volatile uhttpd instance (${adb_ipv4}:${adb_port}, [${adb_ipv6}]:${adb_port})" "${rc}"
-                f_restore
-            fi
         elif [ -n "${adb_wanif4}" ]
         then
-            uhttpd -h "/www/adblock" -k 5 -N 200 -t 0 -T 1 -D -S -E "/adblock.html" -p "${adb_ipv4}:${adb_port}" >/dev/null 2>&1
+            uhttpd -h "/www/adblock" -k 5 -N 200 -t 0 -T 1 -D -S -E "/index.html" -p "${adb_ipv4}:${adb_port}"
             rc=${?}
-            if [ $((rc)) -eq 0 ]
-            then
-                f_log "created volatile uhttpd instance (${adb_ipv4}:${adb_port})"
-            else
-                f_log "failed to initialize volatile uhttpd instance (${adb_ipv4}:${adb_port})" "${rc}"
-                f_restore
-            fi
         elif [ -n "${adb_wanif6}" ]
         then
-            uhttpd -h "/www/adblock" -k 5 -N 200 -t 0 -T 1 -D -S -E "/adblock.html" -p "[${adb_ipv6}]:${adb_port}" >/dev/null 2>&1
+            uhttpd -h "/www/adblock" -k 5 -N 200 -t 0 -T 1 -D -S -E "/index.html" -p "[${adb_ipv6}]:${adb_port}"
             rc=${?}
-            if [ $((rc)) -eq 0 ]
-            then
-                f_log "created volatile uhttpd instance ([${adb_ipv6}]:${adb_port})"
-            else
-                f_log "failed to initialize volatile uhttpd instance ([${adb_ipv6}]:${adb_port})" "${rc}"
-                f_restore
-            fi
+        fi
+        if [ $((rc)) -eq 0 ]
+        then
+            f_log "created volatile uhttpd instance"
+        else
+            f_log "failed to initialize volatile uhttpd instance" "${rc}"
+            f_restore
         fi
     fi
 
@@ -444,10 +415,10 @@ f_depend()
     local check
     local package="${1}"
 
-    check="$(printf "${pkg_list}" | grep "^${package} -" 2>/dev/null)"
+    check="$(printf "${pkg_list}" | grep "^${package} -")"
     if [ -z "${check}" ]
     then
-        rc=150
+        rc=140
         f_log "package '${package}' not found" "${rc}"
         f_exit
     fi
@@ -479,10 +450,10 @@ f_firewall()
 
     # check whether iptables rule already applied and proceed accordingly
     #
-    rc="$("${ipt}" -w -t "${table}" -C "${chain}" -m comment --comment "${notes}" ${rules}  >/dev/null 2>&1; printf ${?})"
+    rc="$("${ipt}" -w -t "${table}" -C "${chain}" -m comment --comment "${notes}" ${rules}; printf ${?})"
     if [ $((rc)) -ne 0 ]
     then
-        "${ipt}" -w -t "${table}" -"${ctype}" "${chain}" -m comment --comment "${notes}" ${rules} >/dev/null 2>&1
+        "${ipt}" -w -t "${table}" -"${ctype}" "${chain}" -m comment --comment "${notes}" ${rules}
         rc=${?}
         if [ $((rc)) -eq 0 ]
         then
@@ -494,8 +465,8 @@ f_firewall()
     fi
 }
 
-###################################################
-# f_log: log messages to stdout, syslog and logfile
+##########################################
+# f_log: log messages to stdout and syslog
 #
 f_log()
 {
@@ -511,7 +482,7 @@ f_log()
         log_parm="-s"
     fi
 
-    # log to different output devices, set log class accordingly
+    # log to different output devices and set log class accordingly
     #
     if [ -n "${log_msg}" ]
     then
@@ -521,11 +492,7 @@ f_log()
             log_rc=", rc: ${log_rc}"
             log_msg="${log_msg}${log_rc}"
         fi
-        /usr/bin/logger ${log_parm} -t "adblock[${adb_pid}] ${class}" "${log_msg}"
-        if [ "${log_ok}" = "true" ]
-        then
-            printf "%s\n" "$(/bin/date "+%d.%m.%Y %H:%M:%S") adblock[${adb_pid}] ${class}: ${log_msg}" >> "${adb_logfile}"
-        fi
+        /usr/bin/logger ${log_parm} -t "adblock[${adb_pid}] ${class}" "${log_msg}" 2>&1
     fi
 }
 
@@ -540,7 +507,7 @@ f_space()
     #
     if [ -d "${mp}" ]
     then
-        av_space="$(df "${mp}" 2>/dev/null | tail -n1 2>/dev/null | awk '{print $4}')"
+        av_space="$(df "${mp}" | tail -n1 | awk '{printf $4}')"
         if [ $((av_space)) -lt $((adb_minspace)) ]
         then
             space_ok="false"
@@ -560,7 +527,7 @@ f_restore()
     #
     if [ -n "${adb_revsrclist}" ]
     then
-        rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f \( ${adb_revsrclist} \) -print -exec rm -f "{}" \; 2>/dev/null)"
+        rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f \( ${adb_revsrclist} \) -print -exec rm -f "{}" \;)"
         rc=${?}
         if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ]
         then
@@ -576,7 +543,7 @@ f_restore()
     #
     if [ "${backup_ok}" = "true" ] && [ "$(printf "${adb_backupdir}/${adb_dnsprefix}."*)" != "${adb_backupdir}/${adb_dnsprefix}.*" ]
     then
-        restore_done="$(find "${adb_backupdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -print -exec cp -pf "{}" "${adb_dnsdir}" \; 2>/dev/null)"
+        restore_done="$(find "${adb_backupdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -print -exec cp -pf "{}" "${adb_dnsdir}" \;)"
         rc=${?}
         if [ $((rc)) -eq 0 ] && [ -n "${restore_done}" ]
         then
@@ -594,21 +561,20 @@ f_restore()
     #
     if [ -n "${restore_done}" ] || [ -n "${rm_done}" ]
     then
-        /etc/init.d/dnsmasq restart >/dev/null 2>&1
-        sleep 2
-        dns_status="$(ps 2>/dev/null | grep "[d]nsmasq" 2>/dev/null)"
-        if [ -n "${dns_status}" ]
+        /etc/init.d/dnsmasq restart
+        sleep 1
+        rc="$(ps | grep -q "[d]nsmasq"; printf ${?})"
+        if [ $((rc)) -eq 0 ]
         then
             rc=0
+            adb_count="$(head -qn -3 "${adb_dnsdir}/${adb_dnsprefix}."* | wc -l)"
             if [ -n "${adb_wanif4}" ] && [ -n "${adb_wanif6}" ]
             then
-                adb_count="$(($(head -qn -4 "${adb_dnsdir}/${adb_dnsprefix}."* 2>/dev/null | wc -l) / 2))"
-            else
-                adb_count="$(head -qn -4 "${adb_dnsdir}/${adb_dnsprefix}."* 2>/dev/null | wc -l)"
+                adb_count="$((adb_count / 2))"
             fi
             f_log "adblock lists with overall ${adb_count} domains loaded"
         else
-            rc=160
+            rc=145
             f_log "dnsmasq restart failed, please check 'logread' output" "${rc}"
         fi
     fi
@@ -621,12 +587,12 @@ f_restore()
 #
 f_exit()
 {
-    local ipv4_prerouting
-    local ipv4_forward
-    local ipv4_output
-    local ipv6_prerouting
-    local ipv6_forward
-    local ipv6_output
+    local ipv4_prerouting=0
+    local ipv4_forward=0
+    local ipv4_output=0
+    local ipv6_prerouting=0
+    local ipv6_forward=0
+    local ipv6_output=0
     local iptv4="/usr/sbin/iptables"
     local iptv6="/usr/sbin/ip6tables"
 
@@ -634,11 +600,11 @@ f_exit()
     #
     if [ -f "${adb_tmpfile}" ]
     then
-       rm -f "${adb_tmpfile}" >/dev/null 2>&1
+       rm -f "${adb_tmpfile}"
     fi
     if [ -d "${adb_tmpdir}" ]
     then
-       rm -rf "${adb_tmpdir}" >/dev/null 2>&1
+       rm -rf "${adb_tmpdir}"
     fi
 
     # final log message and iptables statistics
@@ -647,34 +613,20 @@ f_exit()
     then
         if [ -n "${adb_wanif4}" ]
         then
-            ipv4_prerouting="$(${iptv4} -t nat -vnL | awk '$11 ~ /^adb-prerouting$/ {sum += $1} END {print sum}')"
-            ipv4_forward="$(${iptv4} -vnL | awk '$11 ~ /^adb-forward$/ {sum += $1} END {print sum}')"
-            ipv4_output="$(${iptv4} -vnL | awk '$11 ~ /^adb-output$/ {sum += $1} END {print sum}')"
+            ipv4_prerouting="$(${iptv4} -t nat -vnL | awk '$11 ~ /^adb-prerouting$/ {sum += $1} END {printf sum}')"
+            ipv4_forward="$(${iptv4} -vnL | awk '$11 ~ /^adb-forward$/ {sum += $1} END {printf sum}')"
+            ipv4_output="$(${iptv4} -vnL | awk '$11 ~ /^adb-output$/ {sum += $1} END {printf sum}')"
         fi
         if [ -n "${adb_wanif6}" ]
         then
-            ipv6_prerouting="$(${iptv6} -t nat -vnL | awk '$10 ~ /^adb-prerouting$/ {sum += $1} END {print sum}')"
-            ipv6_forward="$(${iptv6} -vnL | awk '$10 ~ /^adb-forward$/ {sum += $1} END {print sum}')"
-            ipv6_output="$(${iptv6} -vnL | awk '$10 ~ /^adb-output$/ {sum += $1} END {print sum}')"
-        fi
-        if [ -n "${adb_wanif4}" ] && [ -n "${adb_wanif6}" ]
-        then
-            f_log "adblock firewall statistics (IPv4/IPv6):"
-            f_log "${ipv4_prerouting}/${ipv6_prerouting} packets redirected in PREROUTING chain"
-            f_log "${ipv4_forward}/${ipv6_forward} packets rejected in FORWARD chain"
-            f_log "${ipv4_output}/${ipv6_output} packets rejected in OUTPUT chain"
-        elif [ -n "${adb_wanif4}" ]
-        then
-            f_log "adblock firewall statistics (IPv4):"
-            f_log "${ipv4_prerouting} packets redirected in PREROUTING chain"
-            f_log "${ipv4_forward} packets rejected in FORWARD chain"
-            f_log "${ipv4_output} packets rejected in OUTPUT chain"
-        elif [ -n "${adb_wanif6}" ]
-        then
-            f_log "${ipv6_prerouting} packets redirected in PREROUTING chain"
-            f_log "${ipv6_forward} packets rejected in FORWARD chain"
-            f_log "${ipv6_output} packets rejected in OUTPUT chain"
+            ipv6_prerouting="$(${iptv6} -t nat -vnL | awk '$10 ~ /^adb-prerouting$/ {sum += $1} END {printf sum}')"
+            ipv6_forward="$(${iptv6} -vnL | awk '$10 ~ /^adb-forward$/ {sum += $1} END {printf sum}')"
+            ipv6_output="$(${iptv6} -vnL | awk '$10 ~ /^adb-output$/ {sum += $1} END {printf sum}')"
         fi
+        f_log "adblock firewall statistics (IPv4/IPv6):"
+        f_log "${ipv4_prerouting}/${ipv6_prerouting} packets redirected in PREROUTING chain"
+        f_log "${ipv4_forward}/${ipv6_forward} packets rejected in FORWARD chain"
+        f_log "${ipv4_output}/${ipv6_output} packets rejected in OUTPUT chain"
         f_log "domain adblock processing finished successfully (${adb_scriptver}, ${openwrt_version}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
     elif [ $((rc)) -gt 0 ]
     then
@@ -682,6 +634,6 @@ f_exit()
     else
         rc=0
     fi
-    rm -f "${adb_pidfile}" >/dev/null 2>&1
+    rm -f "${adb_pidfile}"
     exit ${rc}
 }
index 2fec96d746a8e072eefa97856a6c3d3d713c06a8..71878e87b8e5321e8d3446506c99df3d3bb705a1 100755 (executable)
@@ -1,33 +1,24 @@
 #!/bin/sh
-#######################################################
-# ad/abuse domain blocking script for dnsmasq/openwrt #
-# written by Dirk Brenken (openwrt@brenken.org)       #
-#######################################################
-
-# LICENSE
-# ========
-# 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 3 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.
-#
+# ad/abuse domain blocking script for dnsmasq/openwrt
+# written by Dirk Brenken (openwrt@brenken.org)
+
+# This is free software, licensed under the GNU General Public License v3.
 # You should have received a copy of the GNU General Public License
 # along with this program. If not, see <http://www.gnu.org/licenses/>.
 
-###############
-# environment #
-###############
-
-# set the C locale, characters are single bytes, the charset is ASCII
-# speeds up things like sort, grep etc.
+# set the C locale
 #
 LC_ALL=C
 
+# script debug switch (disabled by default)
+# set 'DEBUG=1' to enable script debugging
+#
+DEBUG=0
+if [ $((DEBUG)) -eq 0 ]
+then
+    exec 2>/dev/null
+fi
+
 # pid handling
 #
 adb_pid="${$}"
@@ -36,7 +27,7 @@ adb_pidfile="/var/run/adblock.pid"
 if [ -r "${adb_pidfile}" ]
 then
     rc=255
-    /usr/bin/logger -t "adblock[${adb_pid}] error" "adblock service already running ($(cat ${adb_pidfile} 2>/dev/null))"
+    /usr/bin/logger -s -t "adblock[${adb_pid}] error" "adblock service already running ($(cat ${adb_pidfile}))"
     exit ${rc}
 else
     printf "${adb_pid}" > "${adb_pidfile}"
@@ -45,27 +36,24 @@ fi
 # get current directory, script- and openwrt version
 #
 adb_scriptdir="${0%/*}"
-adb_scriptver="0.80.1"
-openwrt_version="$(cat /etc/openwrt_version 2>/dev/null)"
+adb_scriptver="1.0.0"
+openwrt_version="$(cat /etc/openwrt_version)"
 
 # source in adblock function library
 #
 if [ -r "${adb_scriptdir}/adblock-helper.sh" ]
 then
-    . "${adb_scriptdir}/adblock-helper.sh" 2>/dev/null
+    . "${adb_scriptdir}/adblock-helper.sh"
 else
     rc=254
-    /usr/bin/logger -t "adblock[${adb_pid}] error" "adblock function library not found"
+    /usr/bin/logger -s -t "adblock[${adb_pid}] error" "adblock function library not found"
+    rm -f "${adb_pidfile}"
     exit ${rc}
 fi
 
-################
-# main program #
-################
-
 # call trap function on error signals (HUP, INT, QUIT, BUS, SEGV, TERM)
 #
-trap "rc=253; f_log 'error signal received/trapped' '${rc}'; f_exit" 1 2 3 10 11 15
+trap "rc=250; f_log 'error signal received/trapped' '${rc}'; f_exit" 1 2 3 10 11 15
 
 # load environment
 #
@@ -93,15 +81,16 @@ then
     shalla_file="${adb_tmpdir}/shallalist.txt"
     src_name="shalla"
     adb_dnsfile="${adb_dnsdir}/${adb_dnsprefix}.${src_name}"
-    list_time="$(grep -F "# last modified: " "${adb_dnsfile}" 2>/dev/null)"
-    list_time="${list_time/*: /}"
+    if [ -r "${adb_dnsfile}" ]
+    then
+        list_time="$(awk '$0 ~ /^# last modified/ {printf substr($0,18)}' "${adb_dnsfile}")"
+    fi
     f_log "=> (pre-)processing adblock source '${src_name}'"
 
     # only process shallalist archive with updated timestamp,
     # extract and merge only domains of selected shallalist categories
     #
-    shalla_time="$(${adb_fetch} ${wget_parm} --server-response --spider "${adb_arc_shalla}" 2>&1 | grep -F "Last-Modified: " 2>/dev/null | tr -d '\r' 2>/dev/null)"
-    shalla_time="${shalla_time/*: /}"
+    shalla_time="$(${adb_fetch} ${wget_parm} --server-response --spider "${adb_arc_shalla}" 2>&1 | awk '$0 ~ /Last-Modified/ {printf substr($0,18)}')"
     if [ -z "${shalla_time}" ]
     then
         shalla_time="$(date)"
@@ -109,14 +98,14 @@ then
     fi
     if [ -z "${list_time}" ] || [ "${list_time}" != "${shalla_time}" ]
     then
-        ${adb_fetch} ${wget_parm} --output-document="${shalla_archive}" "${adb_arc_shalla}" 2>/dev/null
+        ${adb_fetch} ${wget_parm} --output-document="${shalla_archive}" "${adb_arc_shalla}"
         rc=${?}
         if [ $((rc)) -eq 0 ]
         then
             > "${shalla_file}"
             for category in ${adb_cat_shalla}
             do
-                tar -xOzf "${shalla_archive}" BL/${category}/domains 2>/dev/null >> "${shalla_file}"
+                tar -xOzf "${shalla_archive}" BL/${category}/domains >> "${shalla_file}"
                 rc=${?}
                 if [ $((rc)) -ne 0 ]
                 then
@@ -127,8 +116,8 @@ then
 
             # remove temporary files
             #
-            rm -f "${shalla_archive}" >/dev/null 2>&1
-            rm -rf "${adb_tmpdir}/BL" >/dev/null 2>&1 
+            rm -f "${shalla_archive}"
+            rm -rf "${adb_tmpdir}/BL"
             if [ $((rc)) -eq 0 ]
             then
                 adb_sources="${adb_sources} ${shalla_file}&ruleset=rset_shalla"
@@ -162,8 +151,10 @@ do
     url="${src/\&ruleset=*/}"
     src_name="${src/*\&ruleset=rset_/}"
     adb_dnsfile="${adb_dnsdir}/${adb_dnsprefix}.${src_name}"
-    list_time="$(grep -F "# last modified: " "${adb_dnsfile}" 2>/dev/null)"
-    list_time="${list_time/*: /}"
+    if [ -r "${adb_dnsfile}" ]
+    then
+        list_time="$(awk '$0 ~ /^# last modified/ {printf substr($0,18)}' "${adb_dnsfile}")"
+    fi
     f_log "=> processing adblock source '${src_name}'"
 
     # prepare find statement with active adblock list sources
@@ -179,13 +170,12 @@ do
     #
     if [ "${src_name}" = "blacklist" ]
     then
-        url_time="$(date -r "${adb_blacklist}" 2>/dev/null)"
+        url_time="$(date -r "${adb_blacklist}")"
     elif [ "${src_name}" = "shalla" ]
     then
         url_time="${shalla_time}"
     else
-        url_time="$(${adb_fetch} ${wget_parm} --server-response --spider "${url}" 2>&1 | grep -F "Last-Modified: " 2>/dev/null | tr -d '\r' 2>/dev/null)"
-        url_time="${url_time/*: /}"
+        url_time="$(${adb_fetch} ${wget_parm} --server-response --spider "${url}" 2>&1 | awk '$0 ~ /Last-Modified/ {printf substr($0,18)}')"
     fi
     if [ -z "${url_time}" ]
     then
@@ -196,14 +186,14 @@ do
     then
         if [ "${src_name}" = "blacklist" ]
         then
-            tmp_domains="$(cat "${adb_blacklist}" 2>/dev/null)"
+            tmp_domains="$(cat "${adb_blacklist}")"
             rc=${?}
         elif [ "${src_name}" = "shalla" ]
         then
-            tmp_domains="$(cat "${shalla_file}" 2>/dev/null)"
+            tmp_domains="$(cat "${shalla_file}")"
             rc=${?}
         else
-            tmp_domains="$(${adb_fetch} ${wget_parm} --output-document=- "${url}" 2>/dev/null)"
+            tmp_domains="$(${adb_fetch} ${wget_parm} --output-document=- "${url}")"
             rc=${?}
         fi
     else
@@ -215,12 +205,12 @@ do
     #
     if [ $((rc)) -eq 0 ] && [ -n "${tmp_domains}" ]
     then
-        eval "$(printf "${src}" | sed 's/\(.*\&ruleset=\)/ruleset=\$/g')"
-        count="$(printf "%s\n" "${tmp_domains}" | tr '[A-Z]' '[a-z]' | eval "${ruleset}" | tee "${adb_tmpfile}" | wc -l)"
+        eval "src_rset=\${rset_${src_name}}"
+        count="$(printf "%s\n" "${tmp_domains}" | eval "${src_rset}" | tee "${adb_tmpfile}" | wc -l)"
         f_log "   source download finished (${count} entries)"
         if [ "${src_name}" = "shalla" ]
         then
-            rm -f "${shalla_file}" >/dev/null 2>&1
+            rm -f "${shalla_file}"
         fi
         unset tmp_domains
     elif [ $((rc)) -eq 0 ] && [ -z "${tmp_domains}" ]
@@ -246,10 +236,10 @@ do
     then
         if [ -s "${adb_whitelist}" ]
         then
-            grep -Fvxf "${adb_whitelist}" "${adb_tmpfile}" 2>/dev/null | sort 2>/dev/null | uniq -u 2>/dev/null | eval "${adb_dnsformat}" 2>/dev/null > "${adb_dnsfile}"
+            grep -Fvxf "${adb_whitelist}" "${adb_tmpfile}" | sort -u | eval "${adb_dnsformat}" > "${adb_dnsfile}"
             rc=${?}
         else
-            sort "${adb_tmpfile}" 2>/dev/null | uniq -u 2>/dev/null | eval "${adb_dnsformat}" 2>/dev/null > "${adb_dnsfile}"
+            sort -u "${adb_tmpfile}" | eval "${adb_dnsformat}" > "${adb_dnsfile}"
             rc=${?}
         fi
 
@@ -262,20 +252,13 @@ do
             adb_revsrclist="${adb_revsrclist} -o -name ${adb_dnsprefix}.${src_name}"
         fi
 
-        # write preliminary adblock list footer
+        # write preliminary footer
         #
         if [ $((rc)) -eq 0 ]
         then
-            if [ -n "${adb_wanif4}" ] && [ -n "${adb_wanif6}" ]
-            then
-                count="$(($(wc -l < "${adb_dnsdir}/${adb_dnsprefix}.${src_name}") / 2))"
-            else
-                count="$(wc -l < "${adb_dnsdir}/${adb_dnsprefix}.${src_name}")"
-            fi
-            printf "%s\n" "#------------------------------------------------------------------" >> "${adb_dnsfile}"
-            printf "%s\n" "# ${0##*/} (${adb_scriptver}) - ${count} ad/abuse domains blocked" >> "${adb_dnsfile}"
-            printf "%s\n" "# source: ${url}" >> "${adb_dnsfile}"
+            printf "%s\n" "#---------------------------------------------" >> "${adb_dnsfile}"
             printf "%s\n" "# last modified: ${url_time}" >> "${adb_dnsfile}"
+            printf "%s\n" "##" >> "${adb_dnsfile}"
             f_log "   domain merging finished"
         else
             f_log "   domain merging failed" "${rc}"
@@ -291,14 +274,14 @@ done
 #
 if [ -n "${adb_srclist}" ]
 then
-    rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" \( ${adb_srclist} \) -print -exec rm -f "{}" \; 2>/dev/null)"
+    rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" \( ${adb_srclist} \) -print -exec rm -f "{}" \;)"
     rc=${?}
     if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ]
     then
         f_log "disabled adblock lists removed"
         if [ "${backup_ok}" = "true" ]
         then
-            rm_done="$(find "${adb_backupdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" \( ${adb_srclist} \) -print -exec rm -f "{}" \; 2>/dev/null)"
+            rm_done="$(find "${adb_backupdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" \( ${adb_srclist} \) -print -exec rm -f "{}" \;)"
             rc=${?}
             if  [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ]
             then
@@ -315,14 +298,14 @@ then
         f_exit
     fi
 else
-    rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -print -exec rm -f "{}" \; 2>/dev/null)"
+    rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -print -exec rm -f "{}" \;)"
     rc=${?}
     if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ]
     then
         f_log "all adblock lists removed"
         if [ "${backup_ok}" = "true" ]
         then
-            rm_done="$(find "${adb_backupdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -print -exec rm -f "{}" \; 2>/dev/null)"
+            rm_done="$(find "${adb_backupdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -print -exec rm -f "{}" \;)"
             rc=${?}
             if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ]
             then
@@ -344,7 +327,7 @@ fi
 #
 if [ "${backup_ok}" = "true" ] && [ -n "${adb_errsrclist}" ]
 then
-    restore_done="$(find "${adb_backupdir}" -maxdepth 1 -type f \( ${adb_errsrclist} \) -print -exec cp -pf "{}" "${adb_dnsdir}" \; 2>/dev/null)"
+    restore_done="$(find "${adb_backupdir}" -maxdepth 1 -type f \( ${adb_errsrclist} \) -print -exec cp -pf "{}" "${adb_dnsdir}" \;)"
     rc=${?}
     if [ $((rc)) -eq 0 ] && [ -n "${restore_done}" ]
     then
@@ -356,73 +339,73 @@ then
     fi
 fi
 
-# make separate adblock lists unique
+# make separate adblock lists entries unique
 #
-if [ $((adb_unique)) -eq 1 ]
+if [ "${mem_ok}" != "false" ]
 then
     if [ -n "${adb_revsrclist}" ]
     then
         f_log "remove duplicates in separate adblock lists"
 
-        # generate a temporary, unique overall list
+        # generate a temporary unique overall list
         #
-        head -qn -4 "${adb_dnsdir}/${adb_dnsprefix}."* 2>/dev/null | sort -u 2>/dev/null > "${adb_dnsdir}/tmp.overall"
+        head -qn -3 "${adb_dnsdir}/${adb_dnsprefix}."* | sort -u > "${adb_dnsdir}/tmp.overall"
 
         # loop through all separate lists, ordered by size (ascending)
         #
-        for list in $(ls -Sr "${adb_dnsdir}/${adb_dnsprefix}."* 2>/dev/null)
+        for list in $(ls -Sr "${adb_dnsdir}/${adb_dnsprefix}."*)
         do
-            # check separate lists vs. overall list,
-            # rewrite only duplicate entries back to separate lists
+            # check original separate list vs. temporary overall list,
+            # rewrite only duplicate entries back to temporary separate list
             #
             list="${list/*./}"
-            sort "${adb_dnsdir}/tmp.overall" "${adb_dnsdir}/${adb_dnsprefix}.${list}" 2>/dev/null | uniq -d 2>/dev/null > "${adb_dnsdir}/tmp.${list}"
+            sort "${adb_dnsdir}/tmp.overall" "${adb_dnsdir}/${adb_dnsprefix}.${list}" | uniq -d > "${adb_dnsdir}/tmp.${list}"
 
-            # remove these entries from overall list,
-            # rewrite only unique entries back to overall list
+            # rewrite only unique entries back to temporary overall list
             #
-            tmp_unique="$(sort "${adb_dnsdir}/tmp.overall" "${adb_dnsdir}/tmp.${list}" 2>/dev/null | uniq -u 2>/dev/null)"
+            tmp_unique="$(sort "${adb_dnsdir}/tmp.overall" "${adb_dnsdir}/tmp.${list}" | uniq -u)"
             printf "%s\n" "${tmp_unique}" > "${adb_dnsdir}/tmp.overall"
 
-            # write final adblocklist footer
+            # write unique result back to original separate list (with list footer)
             #
-            if [ -n "${adb_wanif4}" ] && [ -n "${adb_wanif6}" ]
-            then
-                count="$(($(wc -l < "${adb_dnsdir}/tmp.${list}") / 2))"
-            else
-                count="$(wc -l < "${adb_dnsdir}/tmp.${list}")"
-            fi
-            printf "%s\n" "#------------------------------------------------------------------" >> "${adb_dnsdir}/tmp.${list}"
-            printf "%s\n" "# ${0##*/} (${adb_scriptver}) - ${count} ad/abuse domains blocked" >> "${adb_dnsdir}/tmp.${list}"
-            tail -qn -2 "${adb_dnsdir}/$adb_dnsprefix.${list}" 2>/dev/null >> "${adb_dnsdir}/tmp.${list}"
-            mv -f "${adb_dnsdir}/tmp.${list}" "${adb_dnsdir}/${adb_dnsprefix}.${list}" >/dev/null 2>&1
+            tail -qn 3 "${adb_dnsdir}/$adb_dnsprefix.${list}" >> "${adb_dnsdir}/tmp.${list}"
+            mv -f "${adb_dnsdir}/tmp.${list}" "${adb_dnsdir}/${adb_dnsprefix}.${list}"
         done
-        rm -f "${adb_dnsdir}/tmp.overall" >/dev/null 2>&1
+        rm -f "${adb_dnsdir}/tmp.overall"
     fi
 fi
 
-# get overall count
+# set separate list count & get overall count
 #
-if [ -n "${adb_wanif4}" ] && [ -n "${adb_wanif6}" ]
-then
-    adb_count="$(($(head -qn -4 "${adb_dnsdir}/${adb_dnsprefix}."* 2>/dev/null | wc -l) / 2))"
-else
-    adb_count="$(head -qn -4 "${adb_dnsdir}/${adb_dnsprefix}."* 2>/dev/null | wc -l)"
-fi
+for list in $(ls -Sr "${adb_dnsdir}/${adb_dnsprefix}."*)
+do
+    list="${list/*./}"
+    count="$(head -qn -3 "${adb_dnsdir}/${adb_dnsprefix}.${list}" | wc -l)"
+    if [ -n "${adb_wanif4}" ] && [ -n "${adb_wanif6}" ]
+    then
+        count=$((count / 2))
+    fi
+    if [ "$(tail -qn 1 "${adb_dnsdir}/${adb_dnsprefix}.${list}")" = "##" ]
+    then
+        last_line="# ${0##*/} (${adb_scriptver}) - ${count} ad\/abuse domains blocked"
+        sed -i "s/^##$/${last_line}/" "${adb_dnsdir}/${adb_dnsprefix}.${list}"
+    fi
+    adb_count=$((adb_count + count))
+done
 
 # restart dnsmasq with newly generated or deleted adblock lists,
 # check dnsmasq startup afterwards
 #
 if [ -n "${adb_revsrclist}" ] || [ -n "${rm_done}" ] || [ -n "${restore_done}" ]
 then
-    /etc/init.d/dnsmasq restart >/dev/null 2>&1
-    sleep 2
-    dns_status="$(ps 2>/dev/null | grep "[d]nsmasq" 2>/dev/null)"
-    if [ -n "${dns_status}" ]
+    /etc/init.d/dnsmasq restart
+    sleep 1
+    rc="$(ps | grep -q "[d]nsmasq"; printf ${?})"
+    if [ $((rc)) -eq 0 ]
     then
         f_log "adblock lists with overall ${adb_count} domains loaded"
     else
-        rc=105
+        rc=100
         f_log "dnsmasq restart failed, please check 'logread' output" "${rc}"
         f_restore
     fi
@@ -434,7 +417,7 @@ fi
 #
 if [ "${backup_ok}" = "true" ] && [ -n "${adb_revsrclist}" ] && [ "$(printf "${adb_dnsdir}/${adb_dnsprefix}."*)" != "${adb_dnsdir}/${adb_dnsprefix}.*" ]
 then
-    backup_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f \( ${adb_revsrclist} \) -print -exec cp -pf "{}" "${adb_backupdir}" \; 2>/dev/null)"
+    backup_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f \( ${adb_revsrclist} \) -print -exec cp -pf "{}" "${adb_backupdir}" \;)"
     rc=${?}
     if [ $((rc)) -eq 0 ] && [ -n "${backup_done}" ]
     then
index 3c446d1145706cfd205122c865df885679930cdc..cb18787dccc9b24d48a0e153b89dc3269d34e28b 100644 (file)
@@ -1,19 +1,16 @@
 # adblock configuration, for further information
-# see '/etc/adblock/README.md'
+# see 'https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md'
 
 config adblock 'global'
        option adb_enabled '1'
-       option adb_cfgver '0.80'
+       option adb_cfgver '1.0'
        option adb_blacklist '/etc/adblock/adblock.blacklist'
        option adb_whitelist '/etc/adblock/adblock.whitelist'
+       option adb_forcedns '1'
 
 config service 'backup'
        option enabled '0'
-       option adb_backupdir '/tmp'
-
-config service 'log'
-       option enabled '0'
-       option adb_logfile '/tmp/adb_debug.log'
+       option adb_backupdir '/mnt'
 
 config source 'adaway'
        option enabled '1'
@@ -72,9 +69,14 @@ config source 'shalla'
 
 config source 'spam404'
        option enabled '0'
-       option adb_src 'http://spam404bl.com/spam404scamlist.txt&ruleset=rset_spam404'
+       option adb_src 'https://raw.githubusercontent.com/Dawsey21/Lists/master/main-blacklist.txt&ruleset=rset_spam404'
        option adb_srcdesc 'generic blocklist for suspicious domains, infrequent updates, approx. 5.000 entries'
 
+config source 'sysctl' 
+       option enabled '0'
+       option adb_src 'http://sysctl.org/cameleon/hosts&ruleset=rset_sysctl'
+       option adb_srcdesc 'generic blocklist for ad related domains, weekly updates, approx. 21.000 entries'
+
 config source 'whocares'
        option enabled '0'
        option adb_src 'http://someonewhocares.org/hosts/hosts&ruleset=rset_whocares'
@@ -87,7 +89,7 @@ config source 'winhelp'
 
 config source 'yoyo'
        option enabled '1'
-       option adb_src 'https://pgl.yoyo.org/adservers/serverlist.php?hostformat=one-line&showintro=0&mimetype=plaintext&ruleset=rset_yoyo'
+       option adb_src 'https://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=0&mimetype=plaintext&ruleset=rset_yoyo'
        option adb_srcdesc 'focus on ad related domains, weekly updates, approx. 2.500 entries'
 
 config source 'zeus'
index 050701b1e3b109a03ce96bd6fc803667d5374735..0aa6196878c7d4f298f48c85d04a1b77ad67503a 100644 (file)
@@ -1,14 +1,16 @@
 #!/bin/sh
 #
 
-if [ -f "/var/run/adblock.pid" ] || [ "${ACTION}" != "ifup" ]
+adb_pid="${$}"
+adb_pidfile="/var/run/adblock.pid"
+adb_logger="/usr/bin/logger"
+
+if [ -f "${adb_pidfile}" ] || [ "${ACTION}" != "ifup" ]
 then
     exit 0
 fi
 
 . /lib/functions/network.sh
-adb_pid="${$}"
-adb_logger="/usr/bin/logger"
 network_find_wan adb_wanif4
 network_find_wan6 adb_wanif6
 
index 2174fea6031a646be7b43023256507ed78a196e9..47b11dd72912f3d2a6b119e644f2095b5e7bbbf2 100755 (executable)
@@ -3,6 +3,7 @@
 
 START=99
 
+exec 2>/dev/null
 adb_pid="${$}"
 adb_script="/usr/bin/adblock-update.sh"
 adb_pidfile="/var/run/adblock.pid"
@@ -19,7 +20,7 @@ fi
 
 if [ -r "${adb_pidfile}" ]
 then
-    "${adb_logger}" ${log_parm} -t "adblock[${adb_pid}] error" "adblock service already running ($(cat ${adb_pidfile} 2>/dev/null))"
+    "${adb_logger}" ${log_parm} -t "adblock[${adb_pid}] error" "adblock service already running ($(cat ${adb_pidfile})" 2>&1
     exit 255
 fi
 
@@ -36,6 +37,7 @@ start()
 
 restart()
 {
+    stop
     start
 }
 
@@ -47,23 +49,23 @@ reload()
 
 stop()
 {
-    rm_done="$(find "/tmp/dnsmasq.d" -maxdepth 1 -type f -name "adb_list.*" -print -exec rm -f "{}" \; 2>/dev/null)"
+    rm_done="$(find "/tmp/dnsmasq.d" -maxdepth 1 -type f -name "adb_list.*" -print -exec rm -f "{}" \;)"
     rc=${?}
     if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ]
     then
-        /etc/init.d/dnsmasq restart >/dev/null 2>&1
-        /etc/init.d/firewall restart >/dev/null 2>&1
+        /etc/init.d/dnsmasq restart
+        /etc/init.d/firewall restart
     fi
 
-    uhttpd_pid="$(ps 2>/dev/null | grep "[u]httpd.*\-h /www/adblock" 2>/dev/null | awk '{print $1}' 2>/dev/null)"
+    uhttpd_pid="$(ps | grep "[u]httpd.*\-h /www/adblock" | awk '{print $1}')"
     if [ -n "${uhttpd_pid}" ]
     then
-        kill -9 "${uhttpd_pid}" >/dev/null 2>&1
+        kill -9 "${uhttpd_pid}"
     fi
 
     if [ -n "${rm_done}" ] || [ -n "${uhttpd_pid}" ]
     then
-        "${adb_logger}" ${log_parm} -t "adblock[${adb_pid}] info " "all adblock related services stopped"
+        "${adb_logger}" ${log_parm} -t "adblock[${adb_pid}] info " "all adblock related services stopped" 2>&1
     fi
     return 0
 }
diff --git a/net/adblock/files/www/adblock/adblock.html b/net/adblock/files/www/adblock/adblock.html
deleted file mode 100644 (file)
index 29cdf58..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>
-    <head><meta charset="utf-8"></head>
-    <body>
-        <img src="/adblock.png" border="0" alt=""></img>
-    </body>
-</html>
diff --git a/net/arp-scan/Makefile b/net/arp-scan/Makefile
new file mode 100644 (file)
index 0000000..78e8412
--- /dev/null
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2016 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:=arp-scan
+PKG_VERSION:=1.9-40-g69b2f70
+PKG_RELEASE:=1
+PKG_LICENSE:=GPL-3.0
+PKG_MAINTAINER:=Sergey Urushkin <urusha.v1.0@gmail.com>
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/royhills/arp-scan.git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=69b2f70588565385f3a61d9b1f100f01747cd5e1
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+
+PKG_FIXUP:=autoreconf
+
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/arp-scan
+  SECTION:=net
+  CATEGORY:=Network
+  TITLE:=ARP scanner
+  DEPENDS:=+libpcap
+  URL:=https://github.com/royhills/arp-scan
+  PKG_MAINTAINER:=Sergey Urushkin <urusha.v1.0@gmail.com>
+endef
+
+define Package/arp-scan/description
+    ARP scanner
+endef
+
+define Package/arp-scan/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/arp-scan $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,arp-scan))
diff --git a/net/arp-scan/patches/001-cross_compile.patch b/net/arp-scan/patches/001-cross_compile.patch
new file mode 100644 (file)
index 0000000..aa7f53e
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/acinclude.m4     2016-02-19 15:21:01.000000000 +0300
++++ b/acinclude.m4     2016-02-19 17:18:50.480874343 +0300
+@@ -211,7 +211,6 @@
+ LONG_LONG_INT_FORMAT=''
+ case $pgac_cv_snprintf_long_long_int_format in
+-  cross) AC_MSG_RESULT([cannot test (not on host machine)]);;
+   ?*)    AC_MSG_RESULT([$pgac_cv_snprintf_long_long_int_format])
+          LONG_LONG_INT_FORMAT=$pgac_cv_snprintf_long_long_int_format;;
+   *)     AC_MSG_RESULT(none);;
index 6b3601e0b734bc5d5ff6989b38106ea45f0ecc6f..f375690719921a17e93ab3b2dc7375f0b389dc12 100644 (file)
@@ -9,7 +9,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=bind
-PKG_VERSION:=9.9.8-P3
+PKG_VERSION:=9.9.8-P4
 PKG_RELEASE:=2
 USERID:=bind=57:bind=57
 
@@ -20,7 +20,7 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:= \
        ftp://ftp.isc.org/isc/bind9/$(PKG_VERSION) \
        http://www.mirrorservice.org/sites/ftp.isc.org/isc/bind9/$(PKG_VERSION)
-PKG_MD5SUM:=30b9bf88a78eee783d3fef5257445788
+PKG_MD5SUM:=5e401f6cf024f596044d733ceb0d6415
 
 PKG_FIXUP:=autoreconf
 PKG_REMOVE_FILES:=aclocal.m4 libtool.m4
index b72c55957c593cc597faeff05ba5b39389c9da52..1805450f96fa1abacea16eb849f7c705edce148f 100755 (executable)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=ddns-scripts
 # Version == major.minor.patch
 # increase on new functionality (minor) or patches (patch)
-PKG_VERSION:=2.6.2
+PKG_VERSION:=2.6.4
 # Release == build
 # increase on changes of services files or tld_names.dat
 PKG_RELEASE:=1
index ca605dfbe1d0823daac3fb23d6344f1198253e63..525719b59328e9157711d6ede207a4fef4553a69 100755 (executable)
@@ -21,7 +21,7 @@
 . /lib/functions/network.sh
 
 # GLOBAL VARIABLES #
-VERSION="2.6.1-1"
+VERSION="2.6.4-1"
 SECTION_ID=""          # hold config's section name
 VERBOSE_MODE=1         # default mode is log to console, but easily changed with parameter
 
@@ -721,9 +721,10 @@ do_transfer() {
                # force network/ip not supported
                [ -n "$__BINDIP" ] && \
                        write_log 14 "uclient-fetch: FORCE binding to specific address not supported"
-               # force ip version not supported
-               [ $force_ipversion -eq 1 ] && \
-                       write_log 14 "uclient-fetch: Force connecting to IPv4 or IPv6 addresses not supported"
+               # force ip version to use
+               if [ $force_ipversion -eq 1 ]; then
+                       [ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4" || __PROG="$__PROG -6"       # force IPv4/IPv6
+               fi
                # https possibly not supported
                [ $use_https -eq 1 -a ! -f /lib/libustream-ssl.so ] && \
                        write_log 14 "uclient-fetch: no HTTPS support! Additional install one of ustream-ssl packages"
index 78b3df74d9b837d22daa446fc40fa08512b66fc5..02a61dfe90205a900c9bddb6050337c19aaff1be 100755 (executable)
@@ -265,18 +265,15 @@ get_registered_ip REGISTERED_IP "NO_RETRY"
 ERR_LAST=$?
 #     No error    or     No IP set      otherwise retry
 [ $ERR_LAST -eq 0 -o $ERR_LAST -eq 127 ] || get_registered_ip REGISTERED_IP
+# on IPv6 we use expanded version to be shure when comparing
+[ $use_ipv6 -eq 1 ] && expand_ipv6 "$REGISTERED_IP" REGISTERED_IP
 
 # loop endlessly, checking ip every check_interval and forcing an updating once every force_interval
 write_log 6 "Starting main loop at $(eval $DATE_PROG)"
 while : ; do
 
        get_local_ip LOCAL_IP           # read local IP
-
-       # on IPv6 we use expanded version to be shure when comparing
-       [ $use_ipv6 -eq 1 ] && {
-               expand_ipv6 "$LOCAL_IP" LOCAL_IP
-               expand_ipv6 "$REGISTERED_IP" REGISTERED_IP
-       }
+       [ $use_ipv6 -eq 1 ] && expand_ipv6 "$LOCAL_IP" LOCAL_IP # on IPv6 we use expanded version
 
        # prepare update
        # never updated or forced immediate then NEXT_TIME = 0
@@ -332,6 +329,7 @@ while : ; do
 
        REGISTERED_IP=""                # clear variable
        get_registered_ip REGISTERED_IP # get registered/public IP
+       [ $use_ipv6 -eq 1 ] && expand_ipv6 "$REGISTERED_IP" REGISTERED_IP       # on IPv6 we use expanded version
 
        # IP's are still different
        if [ "$LOCAL_IP" != "$REGISTERED_IP" ]; then
index 71f9d3a10e44fffff8cfe0c07125e70371f156ea..d62032d6c00defc7a7bbb0d00c44e53529266c14 100644 (file)
 
 # zzzz.io Free Dynamic DNS
 "zzzz.io"      "https://zzzz.io/api/v1/update/[DOMAIN]/?token=[PASSWORD]&ip=[IP]"      "Updated|No change"
+
+# dynu.com
+"dynu.com"  "http://api.dynu.com/nic/update?hostname=[DOMAIN]&myip=[IP]&username=[USERNAME]&password=[PASSWORD]"
+
+# nubem.com
+"nubem.com"    "http://[USERNAME]:[PASSWORD]@nubem.com/nic/update?hostname=[DOMAIN]&myip=[IP]"
+
+# nettica.com
+"nettica.com"  "http://www.nettica.com/Domain/Update.aspx?U=[USERNAME]&PC=[PASSWORD]&FQDN=[DOMAIN]&N=[IP]"
+
+# zerigo.com
+"zerigo.com"   "http://update.zerigo.com/dynamic?host=[DOMAIN]&ip=[IP]&user=[USERNAME]&password=[PASSWORD]"
+
+# regfish.de
+"regfish.de"   "http://dyndns.regfish.de/?fqdn=[DOMAIN]&forcehost=1&authtype=secure&token=[PASSWORD]&ipv4=[IP]"        "success|100|101"
index 941f0c08c7f9f24413470dd5224d879a093331e4..b6e5997f93c55cfcfefd203d1dc47edf7b9a2300 100644 (file)
 # IPv6 @ Dyn.com
 "dyndns.org"           "http://[USERNAME]:[PASSWORD]@members.dyndns.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
 
-# zzzz.io Free Dynamic DNS
+# IPv6 @ zzzz.io Free Dynamic DNS
 "zzzz.io"      "https://zzzz.io/api/v1/update/[DOMAIN]/?token=[PASSWORD]&type=aaaa&ip=[IP]"    "Updated|No change"
+
+# IPv6 @ zerigo.com
+"zerigo.com"   "http://update.zerigo.com/dynamic?host=[DOMAIN]&ip=[IP]&user=[USERNAME]&password=[PASSWORD]"
+
+# IPv6 @ regfish.de
+"regfish.de"   "http://dyndns.regfish.de/?fqdn=[DOMAIN]&forcehost=1&authtype=secure&token=[PASSWORD]&ipv6=[IP]"        "success|100|101"
+
index cfb1949c3288c6bb1dbfe8e48dfaa6ad258ed0c0..45e99361d9aefe2e77148df87c368864ce034bc8 100644 (file)
@@ -8,9 +8,9 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gnunet
-PKG_SOURCE_VERSION:=36713
+PKG_SOURCE_VERSION:=36918
 PKG_VERSION:=0.10.1-svn$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=3
+PKG_RELEASE:=2
 
 # ToDo:
 #  - break-out {peer,name,data}store for each backend
@@ -39,7 +39,7 @@ CONFIGURE_ARGS+= \
        $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mysql),--with-mysql="$(STAGING_DIR)/usr",--without-mysql) \
        $(if $(CONFIG_PACKAGE_$(PKG_NAME)-pgsql),--with-postgresql="$(STAGING_DIR)/usr/bin/pg_config",--without-postgresql) \
        $(if $(CONFIG_PACKAGE_$(PKG_NAME)-sqlite),--with-sqlite="$(STAGING_DIR)/usr",--without-sqlite) \
-       $(if $(CONFIG_PACKAGE_$(PKG_NAME)-experiments),--enable-experimental,--disable-experimental) \
+       --enable-experimental \
        --with-extractor=$(STAGING_DIR)/usr \
        --with-gnutls=$(STAGING_DIR)/usr \
        --with-libgnurl=$(STAGING_DIR)/usr \
@@ -198,12 +198,15 @@ PLUGIN_transport-http_server:=transport_http_server transport_https_server
 PLUGIN_transport-wlan:=transport_wlan
 LIBEXEC_transport-wlan:=helper-transport-wlan
 
-DEPENDS_experiments:=+libglpk +gnunet-sqlite
-BIN_experiments:=multicast rps
-LIB_experiments:=consensus dv env multicast psyc psycstore psycutil rps secretsharing social
-PLUGIN_experiments:=ats_mlp ats_ril namecache_flat namestore_flat psycstore_sqlite transport_dv
-LIBEXEC_experiments:=service-consensus service-dv service-evil-consensus service-multicast service-psyc service-psycstore service-rps service-secretsharing service-social
-CONF_experiments:=consensus dv multicast psyc psycstore rps secretsharing social
+DEPENDS_experiments:=+libglpk
+PLUGIN_experiments:=ats_mlp ats_ril
+LIBEXEC_experiments:=service-dht-whanau service-dht-xvine
+
+# BIN_dv:=dv
+LIB_dv:=dv
+PLUGIN_dv:=transport_dv
+LIBEXEC_dv:=service-dv
+CONF_dv:=dv
 
 DEPENDS_fs:=+gnunet-datastore +libextractor
 BIN_fs:=auto-share directory download download-manager.scm fs publish unindex search
@@ -227,14 +230,35 @@ PLUGIN_datastore:=datastore_heap
 LIBEXEC_datastore:=daemon-latency-logger service-datastore
 CONF_datastore:=datastore
 
+DEPENDS_flat:=+gnunet-gns
+PLUGIN_flat:=namecache_flat namestore_flat
+
 DEPENDS_mysql:=+gnunet-gns +gnunet-datastore +libmysqlclient
 LIB_mysql:=mysql
 PLUGIN_mysql:=datastore_mysql
 
 DEPENDS_pgsql:=+gnunet-gns +gnunet-datastore +libpq
-LIB_pgsql:=postgres
+LIB_pgsql:=postgres pq
 PLUGIN_pgsql:=datacache_postgres datastore_postgres namecache_postgres namestore_postgres
 
+DEPENDS_rest:=+gnunet-gns +jansson
+LIB_rest:=rest
+PLUGIN_rest:=rest_gns rest_identity rest_namestore
+LIBEXEC_rest:=rest-server
+CONF_rest:=rest
+
+BIN_rps:=rps
+LIB_rps:=rps
+LIBEXEC_rps:=service-rps
+CONF_rps:=rps
+
+DEPENDS_social:=+gnunet-sqlite
+BIN_social:=multicast
+LIB_social:=consensus multicast psyc psycstore psycutil secretsharing social
+PLUGIN_social:=psycstore_sqlite
+LIBEXEC_social:=service-consensus service-evil-consensus service-multicast service-psyc service-psycstore service-secretsharing service-social
+CONF_social:=consensus multicast psyc psycstore secretsharing social
+
 DEPENDS_sqlite:=+gnunet-gns +gnunet-datastore +libsqlite3
 PLUGIN_sqlite:=datacache_sqlite datastore_sqlite namecache_sqlite namestore_sqlite peerstore_sqlite
 
@@ -253,16 +277,21 @@ CONF_vpn:=exit pt vpn
 
 $(eval $(call BuildPackage,gnunet))
 $(eval $(call BuildComponent,conversation,conversation component,))
+$(eval $(call BuildComponent,datastore,data storage components,))
+$(eval $(call BuildComponent,dv,distance-vector routing component,))
 $(eval $(call BuildComponent,experiments,experimental components,))
+$(eval $(call BuildComponent,flat,flat storage backends,))
 $(eval $(call BuildComponent,fs,file-sharing components,))
 $(eval $(call BuildComponent,gns,name resolution components,y))
-$(eval $(call BuildComponent,datastore,storage components,))
+$(eval $(call BuildComponent,mysql,mySQL datastore backend,))
+$(eval $(call BuildComponent,pgsql,PostgreSQL storage backends,))
+$(eval $(call BuildComponent,rest,REST interface,))
+$(eval $(call BuildComponent,rps,RPS routing component,))
+$(eval $(call BuildComponent,social,social components,))
+$(eval $(call BuildComponent,sqlite,libsqlite3 storage backends,y))
 $(eval $(call BuildComponent,transport-bluetooth,bluetooth transport,))
 $(eval $(call BuildComponent,transport-http_client,HTTP/HTTPS client transport,y))
 $(eval $(call BuildComponent,transport-http_server,HTTP/HTTPS server transport,))
 $(eval $(call BuildComponent,transport-wlan,WLAN transport,))
 $(eval $(call BuildComponent,utils,administration utililties,))
 $(eval $(call BuildComponent,vpn,vpn components,y))
-$(eval $(call BuildComponent,mysql,mySQL datastore backend,))
-$(eval $(call BuildComponent,pgsql,PostgreSQL backends,))
-$(eval $(call BuildComponent,sqlite,libsqlite3 backends,y))
index ec588d184e3df32c2bedcd8b0f15b95e7097129d..b4c0ae747dcd4154bbb4b6007ba3f7e3afb4cbf2 100644 (file)
@@ -9,14 +9,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mosquitto
-PKG_VERSION:=1.4.7
+PKG_VERSION:=1.4.8
 PKG_RELEASE:=1
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=LICENSE.txt
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://mosquitto.org/files/source/
-PKG_MD5SUM:=4cb978502312bff2dcdaab6a433b1bf2
+PKG_MD5SUM:=d859cd474ffa61a6197bdabe007b9027
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
 
 include $(INCLUDE_DIR)/package.mk
@@ -137,6 +137,16 @@ define Package/libmosquitto-nossl/description
     This package is built without SSL support
 endef
 
+define Package/libmosquittopp
+    SECTION:=libs
+    CATEGORY:=Libraries
+    DEPENDS:=+libmosquitto +libstdcpp
+    TITLE:= mosquitto - client c++ library
+endef
+
+define Package/libmosquittopp/description
+ C++ Library wrapper for libmosquitto.
+endef
 
 define Package/$(PKG_NAME)/conffiles
 /etc/mosquitto/mosquitto.conf
@@ -150,10 +160,7 @@ define Package/mosquitto/install/default
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mosquitto $(1)/usr/sbin/mosquitto
        $(INSTALL_DIR) $(1)/etc/mosquitto
        $(INSTALL_CONF) $(PKG_BUILD_DIR)/mosquitto.conf $(1)/etc/mosquitto/mosquitto.conf
-       $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/mosquitto.init $(1)/etc/init.d/mosquitto
-       $(INSTALL_DIR) $(1)/usr/bin
-       $(INSTALL_BIN) ./files/mosquitto.uci.convert $(1)/usr/bin
+       $(CP) ./files/* $(1)/
 endef
 
 define Package/mosquitto-nossl/install
@@ -179,9 +186,12 @@ Package/mosquitto-client-nossl/install = $(Package/mosquitto-client/install)
 define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/include
        $(CP) $(PKG_BUILD_DIR)/lib/mosquitto.h $(1)/usr/include
+       $(CP) $(PKG_BUILD_DIR)/lib/cpp/mosquittopp.h $(1)/usr/include
        $(INSTALL_DIR) $(1)/usr/lib
        $(CP) $(PKG_BUILD_DIR)/lib/libmosquitto.so.1 $(1)/usr/lib/
+       $(CP) $(PKG_BUILD_DIR)/lib/cpp/libmosquittopp.so.1 $(1)/usr/lib/
        $(LN) libmosquitto.so.1 $(1)/usr/lib/libmosquitto.so
+       $(LN) libmosquittopp.so.1 $(1)/usr/lib/libmosquittopp.so
 endef
 
 # This installs files on the target.  Compare with Build/InstallDev
@@ -192,6 +202,12 @@ define Package/libmosquitto/install
 endef
 Package/libmosquitto-nossl/install = $(Package/libmosquitto/install)
 
+define Package/libmosquittopp/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/lib/cpp/libmosquittopp.so.1 $(1)/usr/lib/
+       $(LN) libmosquittopp.so.1 $(1)/usr/lib/libmosquittopp.so
+endef
+
 # Applies to all...
 MAKE_FLAGS += WITH_DOCS=no
 ifeq ($(BUILD_VARIANT),nossl)
@@ -204,5 +220,6 @@ $(eval $(call BuildPackage,$(PKG_NAME)))
 $(eval $(call BuildPackage,$(PKG_NAME)-nossl))
 $(eval $(call BuildPackage,libmosquitto))
 $(eval $(call BuildPackage,libmosquitto-nossl))
+$(eval $(call BuildPackage,libmosquittopp))
 $(eval $(call BuildPackage,mosquitto-client))
 $(eval $(call BuildPackage,mosquitto-client-nossl))
diff --git a/net/mosquitto/files/etc/config/mosquitto b/net/mosquitto/files/etc/config/mosquitto
new file mode 100644 (file)
index 0000000..fc7544c
--- /dev/null
@@ -0,0 +1,4 @@
+config owrt owrt
+    option use_uci 0
+
+config mosquitto mosquitto
diff --git a/net/mosquitto/files/etc/init.d/mosquitto b/net/mosquitto/files/etc/init.d/mosquitto
new file mode 100755 (executable)
index 0000000..6551c47
--- /dev/null
@@ -0,0 +1,168 @@
+#!/bin/sh /etc/rc.common
+# Basic init script for mosquitto
+# April 2012, OpenWrt.org
+# Provides support for the luci-app-mosquitto package, if installed
+
+START=80
+USE_PROCD=1
+TCONF=/tmp/mosquitto.generated.conf
+
+# Usage: append_if cfg uci_name output_name
+# add a config line of the form "output_name <value>"
+# if the "uci_name" was found.
+# output_name defaults to uci_name if not specified.
+append_if() {
+    local cfg="$1"
+    local uci_name="$2"
+    local out_name="$3"
+    if [ -z "$out_name" ]; then
+        out_name=$uci_name
+    fi
+    config_get val $cfg $uci_name
+    if [ -n "$val" ]; then
+        echo "$out_name $val" >> $TCONF
+    fi
+}
+
+# mosquitto uses true/false, uci uses 1/0
+# note that this is not shell truthy, but equality with 1!
+append_bool() {
+    if [ $2 -eq 1 ]; then
+        echo "$1 true" >> $TCONF
+    else
+        echo "$1 false" >> $TCONF
+    fi
+}
+
+# as per append_if, but gets the value as a uci bool, not raw
+append_optional_bool() {
+    local cfg="$1"
+    local uci_name="$2"
+    local out_name="$3"
+    config_get val $cfg $uci_name
+    if [ -n "$val" ]; then
+        config_get_bool real $cfg $uci_name
+        append_bool $out_name $real
+    fi
+}
+
+
+convert_mosq_general() {
+       local cfg="$1"
+       config_get destinations "$1" log_dest
+       for dest in $destinations; do
+               echo "log_dest $dest" >> $TCONF
+       done
+
+       config_get_bool no_remote "$1" no_remote_access 0
+       if [ "$no_remote" -eq 1 ]; then
+               echo "bind_address 127.0.0.1" >> $TCONF
+       fi
+
+       config_get port "$1" port 1883
+       echo "port $port" >> $TCONF
+       append_if "$1" protocol
+       append_if "$1" max_inflight_messages
+       append_if "$1" max_queued_messages
+}
+
+convert_persistence() {
+       local cfg="$1"
+
+       append_if "$cfg" client_expiration persistent_client_expiration
+       append_if "$cfg" autosave_interval
+       append_optional_bool "$cfg" autosave_on_changes autosave_on_changes
+       append_optional_bool "$cfg" persistence persistence
+       append_if "$cfg" file persistence_file
+       config_get loc "$cfg" location
+       if [ -n "$loc" ]; then
+               [ -d "$loc" ] || mkdir -p "$loc";
+               echo "persistence_location $loc" >> $TCONF
+       fi
+}
+
+add_listener() {
+    echo "" >> $TCONF
+    config_get port "$1" port
+    if [ -z "$port" ]; then
+        echo "Ignoring listener section without port"
+        return
+    fi
+    config_get_bool no_remote "$1" no_remote_access 0
+    if [ "$no_remote" -eq 1 ]; then
+        echo "listener $port 127.0.0.1" >> $TCONF
+    else
+        echo "listener $port" >> $TCONF
+    fi
+
+    append_if "$1" protocol
+}
+
+add_topic() {
+    echo "topic $1" >> $TCONF
+}
+
+add_bridge() {
+    config_get conn "$1" connection
+    config_get addr "$1" address
+    if [ -z "$conn" -o -z "$addr" ]; then
+        echo "Ignoring bridge section, misisng connection/address"
+        return
+    fi
+    echo "" >> $TCONF
+    echo "# Bridge connection from UCI section" >> $TCONF
+    append_if "$1" connection
+    append_if "$1" address
+
+    config_list_foreach "$1" topic add_topic
+    append_optional_bool "$1" cleansession cleansession
+    append_optional_bool "$1" try_private try_private
+
+    append_if "$1" clientid
+    append_if "$1" identity bridge_identity
+    append_if "$1" psk bridge_psk
+    append_if "$1" tls_version bridge_tls_version
+}
+
+
+convert_uci() {
+       rm -rf $TCONF
+       echo "Generating mosquitto config file in $TCONF"
+       echo "# mosquitto.conf file generated from UCI config." >>$TCONF
+       # Don't include a timestamp, it makes md5sum compares fail
+
+       config_load mosquitto
+       config_foreach convert_mosq_general "mosquitto"
+       config_foreach convert_persistence "persistence"
+       config_foreach add_listener "listener"
+       config_foreach add_bridge "bridge"
+}
+
+start_service_real() {
+       local cfg="$1"
+       local use_uci
+       config_get use_uci "$cfg" use_uci
+       if [ "$use_uci" -eq 1 ]; then
+               CONF=$TCONF
+               convert_uci
+       else
+               CONF=/etc/mosquitto/mosquitto.conf
+        fi
+
+       procd_open_instance
+       procd_set_param command mosquitto
+       procd_append_param command -c $CONF
+       # Makes /etc/init.d/mosquitto reload work if you edit the final file.
+       procd_set_param file $CONF
+       procd_close_instance
+}
+
+start_service() {
+       config_load mosquitto
+       config_foreach start_service_real owrt
+}
+
+service_triggers() {
+       # Makes "reload_config" work
+       procd_add_reload_trigger "mosquitto"
+}
diff --git a/net/mosquitto/files/mosquitto.init b/net/mosquitto/files/mosquitto.init
deleted file mode 100755 (executable)
index 2b3a93a..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh /etc/rc.common
-# Basic init script for mosquitto
-# April 2012, OpenWrt.org
-# Provides support for the luci-app-mosquitto package, if installed
-
-START=80
-APP=`which mosquitto`
-USE_UCI_CONFIG=$(uci -q get mosquitto.owrt.use_uci)
-if [ $? -eq 1 ]; then
-    USE_UCI_CONFIG=0
-fi
-
-SERVICE_DAEMONIZE=1
-SERVICE_WRITE_PID=1
-
-start() {
-        if [ "$USE_UCI_CONFIG" -eq 1 ]; then
-            CONF=/tmp/mosquitto.converted.$$.conf
-            mosquitto.uci.convert -f $CONF
-        else
-            CONF=/etc/mosquitto/mosquitto.conf
-        fi
-        service_start $APP -c $CONF
-}
-
-stop() {
-        service_stop $APP
-}
diff --git a/net/mosquitto/files/mosquitto.uci.convert b/net/mosquitto/files/mosquitto.uci.convert
deleted file mode 100644 (file)
index 1a03d97..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/bin/sh
-# Converts a uci config file into an appropriate mosquitto.conf snippet
-# expected to be used in an init file to generate a config file to run from
-# Karl Palsson <karlp@remake.is> 2012.
-# Considered to be released into the public domain
-
-[ -f $IPKG_INSTROOT/lib/functions.sh ] && . $IPKG_INSTROOT/lib/functions.sh
-
-TCONF=/tmp/mosquitto.generated.$$.conf
-while getopts "f:" o; do
-    case $o in
-    f)
-        TCONF=$OPTARG
-        ;;
-    esac
-done
-
-if [ -e $TCONF ]; then
-    echo "Odd, same temporary generated config file already existed: $TCONF"
-    exit 1
-fi
-
-echo "Generating mosquitto config file in $TCONF"
-NOW=$(date)
-echo "# mosquitto.conf file generated from UCI config." >>$TCONF
-echo "# Config snippet generated by $0 on $NOW" >>$TCONF
-echo "#" >> $TCONF
-
-# Usage: append_if cfg uci_name output_name
-# add a config line of the form "output_name <value>"
-# if the "uci_name" was found.
-# output_name defaults to uci_name if not specified.
-append_if() {
-    local cfg="$1"
-    local uci_name="$2"
-    local out_name="$3"
-    if [ -z "$out_name" ]; then
-        out_name=$uci_name
-    fi
-    config_get val $cfg $uci_name
-    if [ -n "$val" ]; then
-        echo "$out_name $val" >> $TCONF
-    fi
-}
-
-# mosquitto uses true/false, uci uses 1/0
-# note that this is not shell truthy, but equality with 1!
-append_bool() {
-    if [ $2 -eq 1 ]; then
-        echo "$1 true" >> $TCONF
-    else
-        echo "$1 false" >> $TCONF
-    fi
-}
-
-# as per append_if, but gets the value as a uci bool, not raw
-append_optional_bool() {
-    local cfg="$1"
-    local uci_name="$2"
-    local out_name="$3"
-    config_get val $cfg $uci_name
-    if [ -n "$val" ]; then
-        config_get_bool real $cfg $uci_name
-        append_bool $out_name $real
-    fi
-}
-
-mosq_general() {
-    config_get destinations "$1" log_dest
-    for dest in $destinations; do
-        echo "log_dest $dest" >> $TCONF
-    done
-
-    config_get_bool no_remote "$1" no_remote_access 0
-    if [ "$no_remote" -eq 1 ]; then
-        echo "bind_address 127.0.0.1" >> $TCONF
-    fi
-
-    config_get port "$1" port 1883
-    echo "port $port" >> $TCONF
-    append_if "$1" protocol
-    append_if "$1" max_inflight_messages
-    append_if "$1" max_queued_messages
-
-}
-
-add_listener() {
-    echo "" >> $TCONF
-    config_get port "$1" port
-    if [ -z "$port" ]; then
-        echo "Ignoring listener section without port"
-        return
-    fi
-    config_get_bool no_remote "$1" no_remote_access 0
-    if [ "$no_remote" -eq 1 ]; then
-        echo "listener $port 127.0.0.1" >> $TCONF
-    else
-        echo "listener $port" >> $TCONF
-    fi
-
-    append_if "$1" protocol
-}
-
-add_topic() {
-    echo "topic $1" >> $TCONF
-}
-
-add_bridge() {
-    config_get conn "$1" connection
-    config_get addr "$1" address
-    if [ -z "$conn" -o -z "$addr" ]; then
-        echo "Ignoring bridge section, misisng connection/address"
-        return
-    fi
-    echo "" >> $TCONF
-    echo "# Bridge connection from UCI section" >> $TCONF
-    append_if "$1" connection
-    append_if "$1" address
-
-    config_list_foreach "$1" topic add_topic
-    append_optional_bool "$1" cleansession cleansession
-    append_optional_bool "$1" try_private try_private
-
-    append_if "$1" clientid
-    append_if "$1" identity bridge_identity
-    append_if "$1" psk bridge_psk
-    append_if "$1" tls_version bridge_tls_version
-}
-
-
-config_load "mosquitto"
-config_foreach mosq_general "mosquitto"
-config_foreach add_listener "listener"
-config_foreach add_bridge "bridge"
index 000a992d48f5263097a2c3777d512bf028e0b49f..ff780975de8ed62994e4acba13b6afd21ec848ec 100644 (file)
@@ -230,5 +230,12 @@ stop_service() {
 }
 
 service_triggers(){
+       local script=$(readlink "$initscript")
+       local name=$(basename ${script:-$initscript})
+
+       procd_open_trigger
+       procd_add_raw_trigger "interface.*" 2000 /etc/init.d/$name reload
+       procd_close_trigger
+
        procd_add_reload_trigger 'snmpd'
 }
index c2284aab1bd9ddfee804fcd48e81eb1b6dd5faa6..cf49c41c394cdd30db2cac17ff84168f65af8026 100644 (file)
@@ -9,13 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ola
-PKG_VERSION:=0.9.7
+PKG_VERSION:=0.10.1
 PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/OpenLightingProject/ola.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=2a306e4f0221fea9f4833ba04b042e72c6f10cd3
+PKG_SOURCE_VERSION:=5b86f5802e2e5b23c6a010dc8d10788e6dc57614
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 PKG_LICENSE:=LGPL-2.1+
 
index 7b0502903801f5e78f0934aa02ef8405998c29b3..66c949c821e5000961b9845ef4c7a28bc0381b7c 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=openssh
-PKG_VERSION:=7.1p2
+PKG_VERSION:=7.2p2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/ \
                http://ftp.belnet.be/pub/OpenBSD/OpenSSH/portable/
-PKG_MD5SUM:=4d8547670e2a220d5ef805ad9e47acf2
+PKG_MD5SUM:=13009a9156510d8f27e752659075cced
 
 PKG_LICENSE:=BSD ISC
 PKG_LICENSE_FILES:=LICENCE
index fbefbdc25a7566b8fb341b2d2d88be38b29170b3..636166b8b22567237b156b4e728630b1f946a999 100644 (file)
@@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=openvswitch
 
-PKG_RELEASE:=4
+PKG_RELEASE:=5
 PKG_VERSION:=2.5.0
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 PKG_LICENSE:=Apache-2.0
@@ -22,7 +22,7 @@ PKG_USE_MIPS16:=0
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/openvswitch/ovs
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=98b94d1e7002063ce2ea3c3221fe9234cac4e124
+PKG_SOURCE_VERSION:=22d4614ddf83988a3771fb379ea029e663b4455a
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 
 PKG_BUILD_PARALLEL:=1
diff --git a/net/openvswitch/patches/0010-lib-ovs-thread-Ensure-that-thread-stacks-are-always-.patch b/net/openvswitch/patches/0010-lib-ovs-thread-Ensure-that-thread-stacks-are-always-.patch
new file mode 100644 (file)
index 0000000..4cd87fb
--- /dev/null
@@ -0,0 +1,74 @@
+From 8147cec9ee8feea9440cf79365709ddc32ff57d5 Mon Sep 17 00:00:00 2001
+From: Alexandru Ardelean <ardeleanalex@gmail.com>
+Date: Thu, 4 Feb 2016 09:20:34 +0200
+Subject: [PATCH] lib/ovs-thread: Ensure that thread stacks are always at least
+ 512 kB.
+
+This makes a difference for libc implementations (such as musl libc) that
+have a really small default pthread stack size.
+
+Will reference this discussion:
+http://patchwork.ozlabs.org/patch/572340/
+
+Reported-by: Robert McKay <robert@mckay.com>
+Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
+[blp@ovn.org made style changes]
+Signed-off-by: Ben Pfaff <blp@ovn.org>
+---
+ lib/ovs-thread.c | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+diff --git a/lib/ovs-thread.c b/lib/ovs-thread.c
+index 6ebda07..b0e10ee 100644
+--- a/lib/ovs-thread.c
++++ b/lib/ovs-thread.c
+@@ -340,6 +340,25 @@ ovsthread_wrapper(void *aux_)
+     return aux.start(aux.arg);
+ }
++static void
++set_min_stack_size(pthread_attr_t *attr, size_t min_stacksize)
++{
++    size_t stacksize;
++    int error;
++
++    error = pthread_attr_getstacksize(attr, &stacksize);
++    if (error) {
++        ovs_abort(error, "pthread_attr_getstacksize failed");
++    }
++
++    if (stacksize < min_stacksize) {
++        error = pthread_attr_setstacksize(attr, min_stacksize);
++        if (error) {
++            ovs_abort(error, "pthread_attr_setstacksize failed");
++        }
++    }
++}
++
+ /* Starts a thread that calls 'start(arg)'.  Sets the thread's name to 'name'
+  * (suffixed by its ovsthread_id()).  Returns the new thread's pthread_t. */
+ pthread_t
+@@ -358,10 +377,20 @@ ovs_thread_create(const char *name, void *(*start)(void *), void *arg)
+     aux->arg = arg;
+     ovs_strlcpy(aux->name, name, sizeof aux->name);
++    /* Some small systems use a default stack size as small as 80 kB, but OVS
++     * requires approximately 384 kB according to the following analysis:
++     * http://openvswitch.org/pipermail/dev/2016-January/065049.html
++     *
++     * We use 512 kB to give us some margin of error. */
++    pthread_attr_t attr;
++    pthread_attr_init(&attr);
++    set_min_stack_size(&attr, 512 * 1024);
++
+     error = pthread_create(&thread, NULL, ovsthread_wrapper, aux);
+     if (error) {
+         ovs_abort(error, "pthread_create failed");
+     }
++    pthread_attr_destroy(&attr);
+     return thread;
+ }
\f
+-- 
+2.1.4
+
index e4344d6e6d935f9971e8c0edf86cf0ce791a151f..3e8c9be243bf2d6f3b562149f2c9e5152a6c6197 100644 (file)
@@ -1,13 +1,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=shadowsocks-client
-PKG_VERSION:=0.5
+PKG_VERSION:=0.6
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=http://github.com/zhao-gang/shadowsocks-tiny.git
+PKG_SOURCE_URL:=https://github.com/zhao-gang/shadowsocks-tiny.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=d8ef02715f40de0fb7ba0f7267d3f8260f38ba80
+PKG_SOURCE_VERSION:=b59d754f838213d60b908aed0b7d4d5a81f273e2
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 PKG_MAINTAINER:=Zhao, Gang <gang.zhao.42@gmail.com>
 
diff --git a/net/shadowsocks-client/patches/100-fortify-source-compat.patch b/net/shadowsocks-client/patches/100-fortify-source-compat.patch
deleted file mode 100644 (file)
index e4e1538..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
---- a/client.c
-+++ b/client.c
-@@ -111,7 +111,7 @@ int client_do_local_read(int sockfd, str
-                       goto out;
-       }
--      if (encrypt(sockfd, ln) == -1)
-+      if (crypto_encrypt(sockfd, ln) == -1)
-               goto out;
-       ret = do_send(ln->server_sockfd, ln, "cipher", 0);
-@@ -172,7 +172,7 @@ int client_do_server_read(int sockfd, st
-               }
-       }
--      if (decrypt(sockfd, ln) == -1)
-+      if (crypto_decrypt(sockfd, ln) == -1)
-               goto out;
-       if (ln->state & SS_UDP) {
---- a/crypto.c
-+++ b/crypto.c
-@@ -185,7 +185,7 @@ err:
-       return -1;
- }
--int encrypt(int sockfd, struct link *ln)
-+int crypto_encrypt(int sockfd, struct link *ln)
- {
-       int len, cipher_len;
-       EVP_CIPHER_CTX *ctx_p;
-@@ -223,7 +223,7 @@ err:
-       return -1;
- }
--int decrypt(int sockfd, struct link *ln)
-+int crypto_decrypt(int sockfd, struct link *ln)
- {
-       int len, text_len;
-       EVP_CIPHER_CTX *ctx_p;
---- a/crypto.h
-+++ b/crypto.h
-@@ -15,7 +15,7 @@ extern int iv_len;
- int crypto_init(char *key, char *method);
- void crypto_exit(void);
--int encrypt(int sockfd, struct link *ln);
--int decrypt(int sockfd, struct link *ln);
-+int crypto_encrypt(int sockfd, struct link *ln);
-+int crypto_decrypt(int sockfd, struct link *ln);
- #endif
---- a/server.c
-+++ b/server.c
-@@ -36,7 +36,7 @@ int server_do_remote_read(int sockfd, st
-                       goto out;
-       }
--      if (encrypt(sockfd, ln) == -1)
-+      if (crypto_encrypt(sockfd, ln) == -1)
-               goto out;
-       ret = do_send(ln->local_sockfd, ln, "cipher", 0);
-@@ -91,7 +91,7 @@ int server_do_local_read(int sockfd, str
-               }
-       }
--      if (decrypt(sockfd, ln) == -1)
-+      if (crypto_decrypt(sockfd, ln) == -1)
-               goto out;
-       if (ln->state & SS_UDP) {
index 9796b46e7c5cd41e9359e6a6d2a5b6fce2526e31..dcf138aaee8d5c7183134994bf073e9b17ec231f 100644 (file)
@@ -21,9 +21,6 @@ PKG_MD5SUM:=50016bf6e2d3a3a186a6c7236d251f63
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
 
-# uses libcom_err.la
-PKG_BUILD_DEP:=libext2fs
-
 include $(INCLUDE_DIR)/package.mk
 
 define Package/squid/Default
@@ -88,6 +85,7 @@ CONFIGURE_ARGS += \
        --disable-auth-basic \
        --disable-arch-native \
        --with-krb5-config=no \
+       --without-mit-krb5 \
        --without-libcap \
        --without-netfilter-conntrack
 
index 81ba7b6984a859b19ced34fbfbb979d8d9bfc339..191647c51e17a54aabc82153f880654b9247a3ab 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2014-2015 OpenWrt.org
+# Copyright (C) 2014-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=shairplay
-PKG_VERSION:=2015-09-29
+PKG_VERSION:=2016-01-01
 PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=git://github.com/juhovh/shairplay.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=498bc5bcdd305e04721f94a04b9f26a7da72673f
+PKG_SOURCE_VERSION:=ce80e005908f41d0e6fde1c4a21e9cb8ee54007b
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
 
index 3c5e3a595557fc24173b0e9c3ee465c2dd528c64..af9bd8448c06e5e90b15fdca9d553f87147ea599 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/shairplay.c
 +++ b/src/shairplay.c
-@@ -346,7 +346,7 @@ main(int argc, char *argv[])
+@@ -350,7 +350,7 @@ main(int argc, char *argv[])
        raop_cbs.audio_destroy = audio_destroy;
        raop_cbs.audio_set_volume = audio_set_volume;
  
index 8f60ec0e540c9c1ddff1d53c84f148d1eeac822b..a5fea30e83c29aa62355e635e68b08c2723b93b5 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,8 +9,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=shairport-sync
-PKG_VERSION:=2.6
-PKG_RELEASE:=2
+PKG_VERSION:=2.8.0
+PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=git://github.com/mikebrady/shairport-sync.git
@@ -35,20 +35,21 @@ define Package/shairport-sync/default
   CATEGORY:=Sound
   TITLE:=AirPlay compatible audio player
   DEPENDS:=@AUDIO_SUPPORT +libpthread +alsa-lib +libconfig +libdaemon +libpopt
+  PROVIDES:=shairport-sync
   URL:=http://github.com/mikebrady/shairport-sync
 endef
 
 define Package/shairport-sync-openssl
   $(Package/shairport-sync/default)
   TITLE+= (openssl)
-  DEPENDS+= +PACKAGE_shairport-sync-openssl:libopenssl +libavahi-client +libsoxr
+  DEPENDS+= +libopenssl +libavahi-client +libsoxr
   VARIANT:=openssl
 endef
 
 define Package/shairport-sync-polarssl
   $(Package/shairport-sync/default)
   TITLE+= (polarssl)
-  DEPENDS+= +PACKAGE_shairport-sync-polarssl:libpolarssl +libavahi-client +libsoxr
+  DEPENDS+= +libpolarssl +libavahi-client +libsoxr
   VARIANT:=polarssl
   DEFAULT_VARIANT:=1
 endef
index 8a1274ccfe63da384062447b0370fbc381e4efe8..086bea8682eab2ceee414fad22871022a596210a 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=squeezelite
 PKG_VERSION:=1.8
-PKG_RELEASE=1
+PKG_RELEASE=2
 
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=LICENSE.txt
index 57d1b73dd420e4edab5cc6dcaf721376cb6a583f..6bfcaab3aa77e51e9edc86d6f0ef4e45c0106662 100644 (file)
@@ -9,4 +9,5 @@ config options 'options'
        option decoder_auto_conf '1'
        option dsd_over_pcm '0'
        option ircontrol '0'
+       option interface ''
        option enabled '1'
index 3fa008f63ee589f1212eb43e444ef6c03defdb98..d5746254d035e89d0d5d65d45628eb0736ecb3aa 100644 (file)
@@ -51,8 +51,11 @@ make_cmdline() {
        config_get model_name options model_name "SqueezeLite"
        cmdline="$cmdline -M $model_name"
 
+       config_get interface options interface ""
+       [ -n "$interface" ] && cmdline="$cmdline -I $interface"
+
        config_get device options device ""
-       [ -n $device ] && cmdline="$cmdline -o $device"
+       [ -n "$device" ] && cmdline="$cmdline -o $device"
 
        config_get alsa_buffer options alsa_buffer 200
        [ $alsa_buffer -eq 0 ] && alsa_buffer="200"
@@ -96,10 +99,15 @@ make_cmdline() {
        # ***NOTE: codec lib names are in squeezelite.h (set decode_auto_conf to 0 to ignore)
        #
        local excl_codecs=""
+       local vorbis_lib="libvorbisidec.so.1"
+
        excl_codecs=`checkcodec decode_flac "libFLAC.so.8" flac "$excl_codecs"`
        excl_codecs=`checkcodec decode_mp3 "libmad.so.0" mp3 "$excl_codecs"`
        excl_codecs=`checkcodec decode_aac "libfaad.so.2" aac "$excl_codecs"`
-       excl_codecs=`checkcodec decode_ogg "libvorbisfile.so.3" ogg "$excl_codecs"`
+
+       [ -e "/usr/lib/$vorbis_lib" ] || vorbis_lib="libvorbisfile.so.3"
+
+       excl_codecs=`checkcodec decode_ogg "$vorbis_lib" ogg "$excl_codecs"`
        excl_codecs=`checkcodec decode_wma_alac "libavcodec.so.56" wma,alac "$excl_codecs"`
        cmdline="$cmdline $excl_codecs"
 
diff --git a/sound/squeezelite/patches/010-select_broadcast_interface.patch b/sound/squeezelite/patches/010-select_broadcast_interface.patch
new file mode 100644 (file)
index 0000000..17d083e
--- /dev/null
@@ -0,0 +1,338 @@
+--- a/main.c
++++ b/main.c
+@@ -69,6 +69,7 @@ static void usage(const char *argv0) {
+ #if IR
+                  "  -i [<filename>]\tEnable lirc remote control support (lirc config file ~/.lircrc used if filename not specified)\n"
+ #endif
++                 "  -I <interface>\t\tNetwork interface used to send discovery\n"
+                  "  -m <mac addr>\t\tSet mac address, format: ab:cd:ef:12:34:56\n"
+                  "  -M <modelname>\tSet the squeezelite player model name sent to the server (default: " MODEL_NAME_STRING ")\n"
+                  "  -n <name>\t\tSet the player name\n"
+@@ -197,6 +198,8 @@ int main(int argc, char **argv) {
+       char *modelname = NULL;
+       char *logfile = NULL;
+       u8_t mac[6];
++      char *iface = NULL;
++      in_addr_t bcast_addr = 0;
+       unsigned stream_buf_size = STREAMBUF_SIZE;
+       unsigned output_buf_size = 0; // set later
+       unsigned rates[MAX_SUPPORTED_SAMPLERATES] = { 0 };
+@@ -233,6 +236,7 @@ int main(int argc, char **argv) {
+       log_level log_ir     = lWARN;
+ #endif
++      memset(mac, 0, sizeof(mac));
+       char *optarg = NULL;
+       int optind = 1;
+       int i;
+@@ -240,8 +244,6 @@ int main(int argc, char **argv) {
+ #define MAXCMDLINE 512
+       char cmdline[MAXCMDLINE] = "";
+-      get_mac(mac);
+-
+       for (i = 0; i < argc && (strlen(argv[i]) + strlen(cmdline) + 2 < MAXCMDLINE); i++) {
+               strcat(cmdline, argv[i]);
+               strcat(cmdline, " ");
+@@ -249,7 +251,7 @@ int main(int argc, char **argv) {
+       while (optind < argc && strlen(argv[optind]) >= 2 && argv[optind][0] == '-') {
+               char *opt = argv[optind] + 1;
+-              if (strstr("oabcCdefmMnNpPrs"
++              if (strstr("oabcCdefImMnNpPrs"
+ #if ALSA
+                                  "UV"
+ #endif
+@@ -334,6 +336,9 @@ int main(int argc, char **argv) {
+               case 'f':
+                       logfile = optarg;
+                       break;
++              case 'I':
++                      iface = optarg;
++                      break;
+               case 'm':
+                       {
+                               int byte = 0;
+@@ -556,6 +561,11 @@ int main(int argc, char **argv) {
+       winsock_init();
+ #endif
++      if (!(bcast_addr = get_iface_info(log_slimproto, iface, mac))) {
++              fprintf(stderr, "Error binding to network or none given\n");
++              exit(1);
++      }
++
+       stream_init(log_stream, stream_buf_size);
+       if (!strcmp(output_device, "-")) {
+@@ -599,7 +609,7 @@ int main(int argc, char **argv) {
+               exit(1);
+       }
+-      slimproto(log_slimproto, server, mac, name, namefile, modelname);
++      slimproto(log_slimproto, server, bcast_addr, mac, name, namefile, modelname);
+       decode_close();
+       stream_close();
+--- a/squeezelite.h
++++ b/squeezelite.h
+@@ -374,7 +374,7 @@ typedef enum { EVENT_TIMEOUT = 0, EVENT_
+ char *next_param(char *src, char c);
+ u32_t gettime_ms(void);
+-void get_mac(u8_t *mac);
++in_addr_t get_iface_info(log_level level, char *iface, u8_t *mac);
+ void set_nonblock(sockfd s);
+ int connect_timeout(sockfd sock, const struct sockaddr *addr, socklen_t addrlen, int timeout);
+ void server_addr(char *server, in_addr_t *ip_ptr, unsigned *port_ptr);
+@@ -426,7 +426,7 @@ void buf_init(struct buffer *buf, size_t
+ void buf_destroy(struct buffer *buf);
+ // slimproto.c
+-void slimproto(log_level level, char *server, u8_t mac[6], const char *name, const char *namefile, const char *modelname);
++void slimproto(log_level level, char *server, in_addr_t bcast_addr, u8_t *mac, const char *name, const char *namefile, const char *modelname);
+ void slimproto_stop(void);
+ void wake_controller(void);
+--- a/slimproto.c
++++ b/slimproto.c
+@@ -107,7 +107,7 @@ void send_packet(u8_t *packet, size_t le
+       }
+ }
+-static void sendHELO(bool reconnect, const char *fixed_cap, const char *var_cap, u8_t mac[6]) {
++static void sendHELO(bool reconnect, const char *fixed_cap, const char *var_cap, u8_t *mac) {
+       const char *base_cap = "Model=squeezelite,AccuratePlayPoints=1,HasDigitalOut=1,HasPolarityInversion=1,Firmware=" VERSION;
+       struct HELO_packet pkt;
+@@ -730,7 +730,7 @@ void wake_controller(void) {
+       wake_signal(wake_e);
+ }
+-in_addr_t discover_server(void) {
++in_addr_t discover_server(in_addr_t bcast_addr) {
+       struct sockaddr_in d;
+       struct sockaddr_in s;
+       char *buf;
+@@ -746,7 +746,7 @@ in_addr_t discover_server(void) {
+       memset(&d, 0, sizeof(d));
+       d.sin_family = AF_INET;
+       d.sin_port = htons(PORT);
+-      d.sin_addr.s_addr = htonl(INADDR_BROADCAST);
++      d.sin_addr.s_addr = bcast_addr;
+       pollinfo.fd = disc_sock;
+       pollinfo.events = POLLIN;
+@@ -777,7 +777,7 @@ in_addr_t discover_server(void) {
+ #define FIXED_CAP_LEN 256
+ #define VAR_CAP_LEN   128
+-void slimproto(log_level level, char *server, u8_t mac[6], const char *name, const char *namefile, const char *modelname) {
++void slimproto(log_level level, char *server, in_addr_t bcast_addr, u8_t *mac, const char *name, const char *namefile, const char *modelname) {
+       struct sockaddr_in serv_addr;
+       static char fixed_cap[FIXED_CAP_LEN], var_cap[VAR_CAP_LEN] = "";
+       bool reconnect = false;
+@@ -795,7 +795,7 @@ void slimproto(log_level level, char *se
+       }
+       if (!slimproto_ip) {
+-              slimproto_ip = discover_server();
++              slimproto_ip = discover_server(bcast_addr);
+       }
+       if (!slimproto_port) {
+@@ -870,7 +870,7 @@ void slimproto(log_level level, char *se
+                       // rediscover server if it was not set at startup
+                       if (!server && ++failed_connect > 5) {
+-                              slimproto_ip = serv_addr.sin_addr.s_addr = discover_server();
++                              slimproto_ip = serv_addr.sin_addr.s_addr = discover_server(bcast_addr);
+                       }
+               } else {
+--- a/utils.c
++++ b/utils.c
+@@ -21,11 +21,11 @@
+ #include "squeezelite.h"
+ #if LINUX || OSX || FREEBSD
+-#include <sys/ioctl.h>
++#include <sys/types.h>
+ #include <net/if.h>
+-#include <netdb.h>
+-#if FREEBSD
+ #include <ifaddrs.h>
++#include <netdb.h>
++#if FREEBSD || OSX
+ #include <net/if_dl.h>
+ #include <net/if_types.h>
+ #endif
+@@ -33,15 +33,11 @@
+ #if WIN
+ #include <iphlpapi.h>
+ #endif
+-#if OSX
+-#include <net/if_dl.h>
+-#include <net/if_types.h>
+-#include <ifaddrs.h>
+-#include <netdb.h>
+-#endif
+ #include <fcntl.h>
++static log_level loglevel;
++
+ // logging functions
+ const char *logtime(void) {
+       static char buf[100];
+@@ -99,67 +95,101 @@ u32_t gettime_ms(void) {
+ #endif
+ }
+-// mac address
+-#if LINUX
+-// search first 4 interfaces returned by IFCONF
+-void get_mac(u8_t mac[]) {
+-      struct ifconf ifc;
+-      struct ifreq *ifr, *ifend;
+-      struct ifreq ifreq;
+-      struct ifreq ifs[4];
+-
+-      mac[0] = mac[1] = mac[2] = mac[3] = mac[4] = mac[5] = 0;
+-
+-      int s = socket(AF_INET, SOCK_DGRAM, 0);
+-
+-      ifc.ifc_len = sizeof(ifs);
+-      ifc.ifc_req = ifs;
+-
+-      if (ioctl(s, SIOCGIFCONF, &ifc) == 0) {
+-              ifend = ifs + (ifc.ifc_len / sizeof(struct ifreq));
+-
+-              for (ifr = ifc.ifc_req; ifr < ifend; ifr++) {
+-                      if (ifr->ifr_addr.sa_family == AF_INET) {
+-
+-                              strncpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
+-                              if (ioctl (s, SIOCGIFHWADDR, &ifreq) == 0) {
+-                                      memcpy(mac, ifreq.ifr_hwaddr.sa_data, 6);
+-                                      if (mac[0]+mac[1]+mac[2] != 0) {
+-                                              break;
+-                                      }
++// Get broadcast address for interface (given or first available)
++// Return MAC address if none given
++#if LINUX || OSX || FREEBSD
++
++in_addr_t get_iface_info(log_level level, char *iface, u8_t *mac) {
++      struct ifaddrs *addrs, *ifa;
++      struct sockaddr *sdl;
++      char ifname[16];
++      unsigned char *ptr;
++      in_addr_t bcast_addr = 0;
++      int have_mac = 0, have_ifname = 0;
++
++      loglevel = level;
++
++      // Check for non-zero MAC
++      if ((mac[0] | mac[1] | mac[2]) != 0)
++              have_mac = 1;
++
++        // Copy interface name, if it was provided.
++        if (iface != NULL)
++        {
++                if( strlen(iface) > sizeof(ifname) )
++                        return -1;
++
++                strncpy(ifname, iface, sizeof(ifname));
++                have_ifname = 1;
++      }
++
++      if (getifaddrs(&addrs) == 0) {
++              //iterate to find corresponding ethernet address
++              for (ifa = addrs; ifa; ifa = ifa->ifa_next) {
++                      // Skip LOOPBACK interfaces, DOWN interfaces and interfaces that
++                      // don't support BROADCAST.
++                      if ((ifa->ifa_flags & IFF_LOOPBACK)
++                                || !(ifa->ifa_flags & IFF_UP)
++                                || !(ifa->ifa_flags & IFF_BROADCAST))
++                      {
++                              continue;
++                      }
++
++                      if (!have_ifname)
++                      {
++                              // We have found a valid interface name. Keep it.
++                              strncpy(ifname, ifa->ifa_name, sizeof(ifname));
++                              have_ifname = 1;
++                      } else {
++                              if (strncmp(ifname, ifa->ifa_name, sizeof(ifname)) != 0)
++                              {
++                                      // This is not the interface we're looking for.
++                                      continue;
+                               }
+                       }
+-              }
+-      }
+-      close(s);
+-}
+-#endif
+-#if OSX || FREEBSD
+-void get_mac(u8_t mac[]) {
+-      struct ifaddrs *addrs, *ptr;
+-      const struct sockaddr_dl *dlAddr;
+-      const unsigned char *base;
+-      
+-      mac[0] = mac[1] = mac[2] = mac[3] = mac[4] = mac[5] = 0;
+-      
+-      if (getifaddrs(&addrs) == 0) {
+-              ptr = addrs;
+-              while (ptr) {
+-                      if (ptr->ifa_addr->sa_family == AF_LINK && ((const struct sockaddr_dl *) ptr->ifa_addr)->sdl_type == IFT_ETHER) {
+-                              dlAddr = (const struct sockaddr_dl *)ptr->ifa_addr;
+-                              base = (const unsigned char*) &dlAddr->sdl_data[dlAddr->sdl_nlen];
+-                              memcpy(mac, base, min(dlAddr->sdl_alen, 6));
++                      // Check address family.
++                      if ((ifa->ifa_addr->sa_family == AF_INET) &&
++                          (((struct sockaddr_in *)ifa->ifa_broadaddr)->sin_addr.s_addr != 0))
++                      {
++                              // Get broadcast address and MAC address
++                              bcast_addr = ((struct sockaddr_in *)ifa->ifa_broadaddr)->sin_addr.s_addr;
+                               break;
+                       }
+-                      ptr = ptr->ifa_next;
++                      else
++                      {
++                              // Address is not IPv4
++                              if (iface == NULL)
++                                      have_ifname = 0;
++                      }
++
+               }
++
++              // Find MAC address matching interface
++              if (!have_mac && (bcast_addr != 0)) {
++                      for (ifa = addrs; ifa; ifa = ifa->ifa_next) {
++                              if ((ifa->ifa_addr->sa_family == PF_PACKET) &&
++                                  (strncmp(ifname, ifa->ifa_name, sizeof(ifname)) == 0)) {
++                                      sdl = (struct sockaddr *)(ifa->ifa_addr);
++                                      ptr = (unsigned char *)sdl->sa_data;
++                                      memcpy(mac, ptr + 10, 6);
++                                      have_mac = 1;
++                              }
++                      }
++              }
++
+               freeifaddrs(addrs);
+       }
++
++      LOG_INFO("Interface: %s, broadcast: %08X, macaddr = %02x:%02x:%02x:%02x:%02x:%02x",
++               ifname, bcast_addr, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
++
++      return bcast_addr;
+ }
+ #endif
++
+ #if WIN
+ #pragma comment(lib, "IPHLPAPI.lib")
+ void get_mac(u8_t mac[]) {
diff --git a/sound/squeezelite/patches/010-wait_for_nonzero_mac.patch b/sound/squeezelite/patches/010-wait_for_nonzero_mac.patch
deleted file mode 100644 (file)
index 69d4f34..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
---- a/main.c
-+++ b/main.c
-@@ -187,6 +187,17 @@ static void sighandler(int signum) {
-       signal(signum, SIG_DFL);
- }
-+// Waits for nonzero MAC
-+static void get_nonzero_mac(u8_t mac[], u32_t timeout_ms) {
-+      u32_t wait_timeout = gettime_ms() + timeout_ms;
-+      do{
-+              get_mac(mac);
-+              if ((mac[0]+mac[1]+mac[2]+mac[3]+mac[4]+mac[5]) != 0) {
-+                      break;
-+              }
-+      }while(wait_timeout > gettime_ms());
-+}
-+
- int main(int argc, char **argv) {
-       char *server = NULL;
-       char *output_device = "default";
-@@ -240,7 +251,8 @@ int main(int argc, char **argv) {
- #define MAXCMDLINE 512
-       char cmdline[MAXCMDLINE] = "";
--      get_mac(mac);
-+      // Waits for nonzero MAC
-+      get_nonzero_mac(mac,10000);
-       for (i = 0; i < argc && (strlen(argv[i]) + strlen(cmdline) + 2 < MAXCMDLINE); i++) {
-               strcat(cmdline, argv[i]);
index a304472d20be8ecddf776786f66f6d4afaf10075..4f187c84c648a38f7ef46f8e02f2186759529d17 100644 (file)
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=cryptodev-linux
 PKG_VERSION:=1.8
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://download.gna.org/cryptodev-linux/
@@ -31,7 +31,7 @@ define KernelPackage/cryptodev
   URL:=http://cryptodev-linux.org/
   MAINTAINER:=Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
   VERSION:=$(LINUX_VERSION)+$(PKG_VERSION)-$(BOARD)-$(PKG_RELEASE)
-  DEPENDS:=+kmod-crypto-core +kmod-crypto-authenc +kmod-crypto-hash
+  DEPENDS:=+kmod-crypto-authenc +kmod-crypto-hash
   FILES:= \
                $(PKG_BUILD_DIR)/cryptodev.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,$(CRYPTODEV_AUTOLOAD))
index 459d53da87ffbbae8682a193dd4aabac7e26b246..10db45164ffd7c9a327995f92981c31805869d26 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cryptsetup
-PKG_VERSION:=1.7.0
-PKG_RELEASE:=1
+PKG_VERSION:=1.7.1
+PKG_RELEASE:=2
 PKG_LICENSE:=GPL-2.0+ LGPL-2.1+
 PKG_LICENSE_FILES:=COPYING COPYING.LGPL
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/linux/utils/cryptsetup/v1.7
-PKG_MD5SUM:=56c385fe87fc2b6873df4b7f89202d0f
+PKG_MD5SUM:=e38da1c80088cbaaccf931ef61e726dc
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
index adf8d19ea1cf8ceaf6d645f1e7b9c44ef137fc64..4f174ae3d475923ff50836d63c4650b34e850453 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2013-2015 OpenWrt.org
+# Copyright (C) 2013-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dump1090
-PKG_VERSION:=2015-11-22
+PKG_VERSION:=2016-02-25
 PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=git://github.com/mutability/dump1090.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=497f88fe1c597652aca23c1035ddb55a9f6c274d
+PKG_SOURCE_VERSION:=214bc0e587fa70b7206c094e10e62c88bf387322
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
 
@@ -53,7 +53,8 @@ define Package/view1090/description
 endef
 
 MAKE_FLAGS += \
-       CFLAGS="$(TARGET_CFLAGS)"
+       CFLAGS="$(TARGET_CFLAGS)" \
+       UNAME=Linux
 
 define Package/dump1090/install
        $(INSTALL_DIR) $(1)/etc/init.d
index b9c433eea0995a9532789fc26d04e87a7e64e8e2..5854cb456973337d0e3556ee5f25b54c2382ba80 100644 (file)
@@ -11,7 +11,6 @@ config dump1090 main
        option raw '0'
        option net '1'
        option modeac '0'
-       option net_beast '0'
        option net_only '0'
        option net_bind_address ''
        option net_http_port '8080'
@@ -20,7 +19,6 @@ config dump1090 main
        option net_sbs_port ''
        option net_bi_port ''
        option net_bo_port ''
-       option net_fatsv_port ''
        option net_ro_size ''
        option net_ro_interval ''
        option net_heartbeat ''
@@ -34,13 +32,13 @@ config dump1090 main
        option no_fix '0'
        option no_crc_check '0'
        option phase_enhance '0'
-       option aggressive '0'
        option mlat '0'
        option stats '0'
        option stats_range '0'
        option stats_every ''
        option onlyaddr '0'
        option metric '0'
+       option hae '0'
        option snip ''
        option debug ''
        option ppm ''
index 23519dbc2f8f46bb32dd0f0689824fc6e1b306ea..fead29edb1573ad3571cbdb7700cb21db86cbaa0 100644 (file)
@@ -49,7 +49,6 @@ start_instance() {
        append_bool "$cfg" raw "--raw"
        append_bool "$cfg" net "--net"
        append_bool "$cfg" modeac "--modeac"
-       append_bool "$cfg" net_beast "--net-beast"
        append_bool "$cfg" net_only "--net-only"
        append_arg "$cfg" net_bind_address "--net-bind-address"
        append_arg "$cfg" net_http_port "--net-http-port"
@@ -58,7 +57,6 @@ start_instance() {
        append_arg "$cfg" net_sbs_port "--net-sbs-port"
        append_arg "$cfg" net_bi_port "--net-bi-port"
        append_arg "$cfg" net_bo_port "--net-bo-port"
-       append_arg "$cfg" net_fatsv_port "net-fatsv-port"
        append_arg "$cfg" net_ro_size "--net-ro-size"
        append_arg "$cfg" net_ro_interval "--net-ro-interval"
        append_arg "$cfg" net_heartbeat "--net-heartbeat"
@@ -72,13 +70,13 @@ start_instance() {
        append_bool "$cfg" no_fix "--no-fix"
        append_bool "$cfg" no_crc_check "--no-crc-check"
        append_bool "$cfg" phase_enhance "--phase-enhance"
-       append_bool "$cfg" aggressive "--aggressive"
        append_bool "$cfg" mlat "--mlat"
        append_bool "$cfg" stats "--stats"
        append_bool "$cfg" stats_range "--stats-range"
        append_arg "$cfg" stats_every "--stats-every"
        append_bool "$cfg" onlyaddr "--onlyaddr"
        append_bool "$cfg" metric "--metric"
+       append_bool "$cfg" hae "--hae"
        append_arg "$cfg" snip "--snip"
        append_arg "$cfg" debug "--debug"
        append_arg "$cfg" ppm "--ppm"
index 7b6e953284bf8008bf9d0c2f8f094c6a85ec9aed..82942dfe80b526b0b199930db035268632507e58 100644 (file)
@@ -9,13 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=LVM2
-PKG_VERSION:=2.02.141
+PKG_VERSION:=2.02.145
 PKG_RELEASE:=2
 PKG_LICENSE:=GPL-2.0 LGPL-2.1
 
 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
 PKG_SOURCE_URL:=ftp://sources.redhat.com/pub/lvm2/releases
-PKG_MD5SUM:=0bb6261f7ecb9ef70fd773c6a952de67
+PKG_MD5SUM:=fd952ba7d640f0bedcec0085e358b318
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
 
index 13da6b63f978388923a7947297ba2032817f4004..fff37964729eedbc6a7de35d2fa1cc7e5cb09c2f 100644 (file)
@@ -1,6 +1,6 @@
 --- a/lib/commands/toolcontext.c
 +++ b/lib/commands/toolcontext.c
-@@ -1741,8 +1741,10 @@ struct cmd_context *create_toolcontext(u
+@@ -1747,8 +1747,10 @@ struct cmd_context *create_toolcontext(u
                                       unsigned set_filters)
  {
        struct cmd_context *cmd;
@@ -11,7 +11,7 @@
  
  #ifdef M_MMAP_MAX
        mallopt(M_MMAP_MAX, 0);
-@@ -1778,7 +1780,7 @@ struct cmd_context *create_toolcontext(u
+@@ -1784,7 +1786,7 @@ struct cmd_context *create_toolcontext(u
        /* FIXME Make this configurable? */
        reset_lvm_errno(1);
  
@@ -20,7 +20,7 @@
        /* Set in/out stream buffering before glibc */
        if (set_buffering) {
                /* Allocate 2 buffers */
-@@ -2161,7 +2163,7 @@ void destroy_toolcontext(struct cmd_cont
+@@ -2167,7 +2169,7 @@ void destroy_toolcontext(struct cmd_cont
        if (cmd->libmem)
                dm_pool_destroy(cmd->libmem);
  
@@ -31,7 +31,7 @@
                if (is_valid_fd(STDIN_FILENO) &&
 --- a/tools/lvmcmdline.c
 +++ b/tools/lvmcmdline.c
-@@ -1741,6 +1741,7 @@ int lvm_split(char *str, int *argc, char
+@@ -1744,6 +1744,7 @@ int lvm_split(char *str, int *argc, char
  /* Make sure we have always valid filedescriptors 0,1,2 */
  static int _check_standard_fds(void)
  {
@@ -39,7 +39,7 @@
        int err = is_valid_fd(STDERR_FILENO);
  
        if (!is_valid_fd(STDIN_FILENO) &&
-@@ -1767,6 +1768,12 @@ static int _check_standard_fds(void)
+@@ -1770,6 +1771,12 @@ static int _check_standard_fds(void)
                       strerror(errno));
                return 0;
        }
index 00a0531eca4d427d02a316157a50960ab50d2cb8..145e7408f8c108abfa8593f185cc593faf72084b 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mmc-utils
-PKG_VERSION=2015-05-01-$(PKG_SOURCE_VERSION)
+PKG_VERSION=2016-02-23-$(PKG_SOURCE_VERSION)
 PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
-PKG_SOURCE_VERSION:=d0b46442b50794217e53b2455c1344c548d9d088
+PKG_SOURCE_VERSION:=4af1749d23503c25f692a60f23d295d16ddcfb61
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
 
index 8ae5c3cb6a5f1f59a8aa40638a1a7d8d43101e5a..8e27ed1ad3bfdddc657c8c734c0ba94f80d48106 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2015 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nano
-PKG_VERSION:=2.5.0
+PKG_VERSION:=2.5.3
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.nano-editor.org/dist/v2.5
-PKG_MD5SUM:=751ed96457017572bab15be18cb873ba
+PKG_SOURCE_URL:=@GNU/nano
+PKG_MD5SUM:=a04d77611422ab4b6a7b489650c7a793
 
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
index 3cfc1252b89b6bb13b77260c7ba7fc9ff73443bd..b46244b80acf69b5eec9d9db008c14e2b86aad6d 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2015 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pciutils
-PKG_VERSION:=3.4.0
+PKG_VERSION:=3.4.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@KERNEL/software/utils/pciutils
-PKG_MD5SUM:=46674cdbf2f72e4cfef75fea1b1ec5c8
+PKG_MD5SUM:=e901d17fcc6850747f43efde4de3452b
 PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
 
 PKG_LICENSE:=GPL-2.0
diff --git a/utils/qemu/Makefile b/utils/qemu/Makefile
new file mode 100644 (file)
index 0000000..a7806d1
--- /dev/null
@@ -0,0 +1,62 @@
+#
+# Copyright (C) 2016 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:=qemu
+PKG_VERSION:=2.4.1
+PKG_RELEASE:=1
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=http://wiki.qemu-project.org/download/
+PKG_SOURCE_MD5SUM:=a895e93ec1dafc34bc64ed676f0d55a6
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=LICENSE tcg/LICENSE
+PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/qemu-ga
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=QEMU Guest Agent
+  URL:=http://www.qemu.org
+  DEPENDS:=+glib2 +libpthread +libstdcpp +librt
+endef
+
+define Package/qemu-ga/description
+This package contains the QEMU Guest Agent daemon
+endef
+
+# QEMU configure script does not recognize these options
+CONFIGURE_ARGS:=$(filter-out   \
+       --target=%              \
+       --host=%                \
+       --build=%               \
+       --program-prefix=%      \
+       --program-suffix=%      \
+       --exec-prefix=%         \
+       --disable-nls           \
+       , $(CONFIGURE_ARGS))
+
+# Building qemu-ga alone does not require zlib
+CONFIGURE_ARGS+=                       \
+       --cross-prefix=$(TARGET_CROSS)  \
+       --host-cc=$(HOSTCC)             \
+       --target-list=''                \
+       --disable-zlib-test             \
+       --enable-guest-agent
+
+define Package/qemu-ga/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/qemu-ga $(1)/usr/bin
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/qemu-ga.init $(1)/etc/init.d/qemu-ga
+       $(INSTALL_DIR) $(1)/etc/hotplug.d/virtio-ports
+       $(INSTALL_BIN) ./files/virtio-ports.hotplug $(1)/etc/hotplug.d/virtio-ports/qemu-ga
+endef
+
+$(eval $(call BuildPackage,qemu-ga))
diff --git a/utils/qemu/files/qemu-ga.init b/utils/qemu/files/qemu-ga.init
new file mode 100755 (executable)
index 0000000..86c2b7e
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2016 OpenWrt.org
+
+START=99
+USE_PROCD=1
+
+BIN=/usr/bin/qemu-ga
+
+start_service() {
+       procd_open_instance
+       procd_set_param command $BIN
+       procd_set_param respawn
+       procd_set_param stderr 1
+       procd_close_instance
+}
diff --git a/utils/qemu/files/virtio-ports.hotplug b/utils/qemu/files/virtio-ports.hotplug
new file mode 100755 (executable)
index 0000000..35919a5
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Copyright (C) 2016 OpenWrt.org
+
+[ "$SUBSYSTEM" = "virtio-ports" ] || exit 0
+
+syspath="/sys/$DEVPATH"
+name="$(cat "$syspath/name" 2>/dev/null)"
+[ -n "$name" ] || exit 0
+
+case "$ACTION" in
+       "add")
+               mkdir -p /dev/virtio-ports
+               ln -s "/dev/$DEVNAME" "/dev/virtio-ports/$name"
+               /etc/init.d/qemu-ga start
+               ;;
+       "del")
+               rm -f "/dev/virtio-ports/$name"
+               ;;
+esac
index fd139700f638501620e2e7faa3ac8bbc072ead67..9a0bc7a3d288cf48864d8c1aaccc1ca52c5a4d26 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tracertools
-PKG_VERSION:=20160118
+PKG_VERSION:=20160308
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 
@@ -16,7 +16,7 @@ PKG_LICENSE:=GPL-3.0
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/dangowrt/tracertools.git
-PKG_SOURCE_VERSION:=253e73fd379714239b51d5b0fd719b7c2d65f379
+PKG_SOURCE_VERSION:=28d0bb9a10a0b56b4964e3256135cfd152075a59
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 
index 713ca8ead109f471a28416211d65cea484d5f86b..1b526746bc1c7671cbb89f12dca8f321abccb5b1 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=unrar
-PKG_VERSION:=5.3.8
+PKG_VERSION:=5.3.11
 PKG_RELEASE:=1
 
 PKG_SOURCE:=unrarsrc-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.rarlab.com/rar
-PKG_MD5SUM:=9aa9643e817187519e358be292185f6f
+PKG_MD5SUM:=4a29cc1b47ced82db11e06090a95ed51
 PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
 
 PKG_LICENSE:=UnRAR
index dcbc7037c150924c087703a7e89648dba7327170..e1ed0687dee5c2bf3cec20c8885a9b431db54a95 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2014 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=zip
 PKG_REV:=30
 PKG_VERSION:=3.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)$(PKG_REV).tar.gz
 PKG_SOURCE_URL:=@SF/infozip
@@ -48,8 +48,7 @@ define Build/Compile
        $(MAKE) -C $(PKG_BUILD_DIR) -f unix/Makefile generic \
                prefix="$(PKG_INSTALL_DIR)/usr" \
                CFLAGS="$(TARGET_CFLAGS)" \
-               CC="$(TARGET_CC) $(TARGET_CFLAGS) -O $(TARGET_CPPFLAGS) -I. -DUNIX" \
-               LD="$(TARGET_CC) $(TARGET_LDFLAGS)" \
+               CC="$(TARGET_CC) $(TARGET_CFLAGS) -O $(TARGET_CPPFLAGS) -I. -DUNIX $(TARGET_LDFLAGS)" \
                IZ_BZIP2="no" \
                install
 endef