echo_blue "=== $pkg_name: Starting quick tests"
exec_status '^ERROR' make "package/$pkg_name/download" V=s || RET=1
- exec_status '^ERROR' make "package/$pkg_name/check" V=s || RET=1
+ badhash_msg_regex="HASH does not match "
+ badhash_msg_regex="$badhash_msg_regex|HASH uses deprecated hash,"
+ badhash_msg_regex="$badhash_msg_regex|HASH is missing,"
+ exec_status '^ERROR'"|$badhash_msg_regex" make "package/$pkg_name/check" V=s || RET=1
echo_blue "=== $pkg_name: quick tests done"
done
include $(TOPDIR)/rules.mk
PKG_NAME:=syslog-ng
-PKG_VERSION:=3.9.1
-PKG_RELEASE:=3
+PKG_VERSION:=3.16.1
+PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/balabit/syslog-ng/releases/download/$(PKG_NAME)-$(PKG_VERSION)/
-PKG_HASH:=5678856a550ae790618fabde9d1447f932ce7a9080d55dca8fc5df1202c70a17
+PKG_HASH:=c7ee6f1d5e98d86f191964e580111bfa71081ecbb3275cea035bbba177b73a29
PKG_INSTALL:=1
define Package/syslog-ng
SECTION:=admin
CATEGORY:=Administration
- DEPENDS:=+libpcre +glib2 +libeventlog +libopenssl +libuuid +libcurl
+ DEPENDS:=+libpcre +glib2 +libopenssl +libuuid +libcurl
TITLE:=A powerful syslog daemon
URL:=http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/
endef
--- /dev/null
+diff -u --recursive syslog-ng-3.16.1-vanilla/configure.ac syslog-ng-3.16.1/configure.ac
+--- syslog-ng-3.16.1-vanilla/configure.ac 2018-06-01 06:02:07.000000000 -0400
++++ syslog-ng-3.16.1/configure.ac 2018-07-15 19:31:30.307354198 -0400
+@@ -793,6 +793,14 @@
+ AC_CHECK_FUNCS([inotify_init])
+
+ dnl ***************************************************************************
++dnl secret-storage headers/libraries
++dnl ***************************************************************************
++
++SECRET_STORAGE_LIBS="\$(top_builddir)/lib/secret-storage/libsecret-storage.la"
++SECRET_STORAGE_NO_LIBTOOL_LIBS="\$(top_builddir)/lib/eventlog/src/.libs/libsecret-storage.so"
++SECRET_STORAGE_CFLAGS="-I\$(top_srcdir)/lib/secret-storage"
++
++dnl ***************************************************************************
+ dnl libevtlog headers/libraries (remove after relicensing libevtlog)
+ dnl ***************************************************************************
+
+@@ -1592,7 +1600,7 @@
+ java_module_path="$moduledir"/java-modules
+ fi
+
+-CPPFLAGS="$CPPFLAGS $GLIB_CFLAGS $EVTLOG_CFLAGS $PCRE_CFLAGS $OPENSSL_CFLAGS $LIBNET_CFLAGS $LIBDBI_CFLAGS $IVYKIS_CFLAGS -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
++CPPFLAGS="$CPPFLAGS $GLIB_CFLAGS $EVTLOG_CFLAGS $SECRET_STORAGE_CFLAGS $PCRE_CFLAGS $OPENSSL_CFLAGS $LIBNET_CFLAGS $LIBDBI_CFLAGS $IVYKIS_CFLAGS -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+
+ ########################################################
+ ## NOTES: on how syslog-ng is linked
+@@ -1640,7 +1648,7 @@
+ MODULE_DEPS_LIBS="\$(top_builddir)/lib/libsyslog-ng.la"
+
+ if test "x$linking_mode" = "xdynamic"; then
+- SYSLOGNG_DEPS_LIBS="$LIBS $BASE_LIBS $GLIB_LIBS $EVTLOG_LIBS $RESOLV_LIBS $LIBCAP_LIBS $PCRE_LIBS $REGEX_LIBS $DL_LIBS"
++ SYSLOGNG_DEPS_LIBS="$LIBS $BASE_LIBS $GLIB_LIBS $EVTLOG_LIBS $SECRET_STORAGE_LIBS $RESOLV_LIBS $LIBCAP_LIBS $PCRE_LIBS $REGEX_LIBS $DL_LIBS"
+
+ if test "x$with_ivykis" = "xinternal"; then
+ # when using the internal ivykis, we're linking it statically into libsyslog-ng.so
+@@ -1659,8 +1667,8 @@
+ # syslog-ng binary is linked with the default link command (e.g. libtool)
+ SYSLOGNG_LINK='$(LINK)'
+ else
+- SYSLOGNG_DEPS_LIBS="$LIBS $BASE_LIBS $RESOLV_LIBS $EVTLOG_NO_LIBTOOL_LIBS $LD_START_STATIC -Wl,${WHOLE_ARCHIVE_OPT} $GLIB_LIBS $PCRE_LIBS $REGEX_LIBS -Wl,${NO_WHOLE_ARCHIVE_OPT} $IVYKIS_NO_LIBTOOL_LIBS $LD_END_STATIC $LIBCAP_LIBS $DL_LIBS"
+- TOOL_DEPS_LIBS="$LIBS $BASE_LIBS $GLIB_LIBS $EVTLOG_LIBS $RESOLV_LIBS $LIBCAP_LIBS $PCRE_LIBS $REGEX_LIBS $IVYKIS_LIBS $DL_LIBS"
++ SYSLOGNG_DEPS_LIBS="$LIBS $BASE_LIBS $RESOLV_LIBS $EVTLOG_NO_LIBTOOL_LIBS $SECRET_STORAGE_NO_LIBTOOL_LIBS $LD_START_STATIC -Wl,${WHOLE_ARCHIVE_OPT} $GLIB_LIBS $PCRE_LIBS $REGEX_LIBS -Wl,${NO_WHOLE_ARCHIVE_OPT} $IVYKIS_NO_LIBTOOL_LIBS $LD_END_STATIC $LIBCAP_LIBS $DL_LIBS"
++ TOOL_DEPS_LIBS="$LIBS $BASE_LIBS $GLIB_LIBS $EVTLOG_LIBS $SECRET_STORAGE_LIBS $RESOLV_LIBS $LIBCAP_LIBS $PCRE_LIBS $REGEX_LIBS $IVYKIS_LIBS $DL_LIBS"
+ CORE_DEPS_LIBS=""
+
+ # bypass libtool in case we want to do mixed linking because it
+Only in syslog-ng-3.16.1-vanilla/: syslog-ng-3.16.1
+++ /dev/null
---- a/lib/crypto.c 2016-12-21 07:57:44.000000000 -0700
-+++ b/lib/crypto.c 2017-03-24 13:19:34.188259018 -0600
-@@ -51,11 +51,20 @@
- }
- }
-
-+#if OPENSSL_VERSION_NUMBER < 0x10000000
- static unsigned long
- ssl_thread_id(void)
- {
- return (unsigned long) get_thread_id();
- }
-+
-+#else
-+static void
-+ssl_thread_id2(CRYPTO_THREADID *id)
-+{
-+ CRYPTO_THREADID_set_numeric(id, get_thread_id());
-+}
-+#endif
-
- static void
- crypto_init_threading(void)
-@@ -68,7 +76,11 @@
- {
- g_static_mutex_init(&ssl_locks[i]);
- }
-+#if OPENSSL_VERSION_NUMBER < 0x10000000
- CRYPTO_set_id_callback(ssl_thread_id);
-+#else
-+ CRYPTO_THREADID_set_callback(ssl_thread_id2);
-+#endif
- CRYPTO_set_locking_callback(ssl_locking_callback);
- }
-
include $(TOPDIR)/rules.mk
PKG_NAME:=php
-PKG_VERSION:=7.2.7
-PKG_RELEASE:=2
+PKG_VERSION:=7.2.8
+PKG_RELEASE:=1
PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.php.net/distributions/
-PKG_HASH:=eb01c0153b3baf1f64b8b044013ce414b52fede222df3f509e8ff209478f31f0
+PKG_HASH:=53ba0708be8a7db44256e3ae9fcecc91b811e5b5119e6080c951ffe7910ffb0f
PKG_FIXUP:=libtool autoreconf
PKG_BUILD_PARALLEL:=1
PKG_NAME:=python-mysql
PKG_VERSION:=1.3.12
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=GPL-2.0
PKG_SOURCE:=mysqlclient-$(PKG_VERSION).tar.gz
include $(INCLUDE_DIR)/package.mk
include ../python-package.mk
include ../python3-package.mk
+# python-mysql needs iconv
+include $(INCLUDE_DIR)/nls.mk
PKG_UNPACK:=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
-# Help python-mysql find libiconv.so when using uClibc.
-ifneq ($(CONFIG_USE_UCLIBC),)
-TARGET_CPPFLAGS+= \
- -I$(STAGING_DIR)/usr/lib/libiconv-full/include
-TARGET_LDFLAGS += \
- -L$(STAGING_DIR)/usr/lib/libiconv-full/lib
-endif
-
define Package/python-mysql/Default
SUBMENU:=Python
SECTION:=lang
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Device Tree Compiler
- URL:=http://devicetree.org/Device_Tree_Compiler
+ URL:=https://git.kernel.org/pub/scm/utils/dtc/dtc.git
endef
define Package/dtc/description
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Flat Device Tree Utilities
- URL:=http://devicetree.org/Device_Tree_Compiler
+ URL:=https://git.kernel.org/pub/scm/utils/dtc/dtc.git
endef
define Package/fdt-utils/install
SECTION:=libs
CATEGORY:=Libraries
TITLE:=a utility library for reading and manipulating dtb files
- URL:=http://devicetree.org/Device_Tree_Compiler
+ URL:=https://git.kernel.org/pub/scm/utils/dtc/dtc.git
endef
define Package/libfdt/description
include $(TOPDIR)/rules.mk
PKG_NAME:=libgcrypt
-PKG_VERSION:=1.6.6
-PKG_RELEASE:=2
+PKG_VERSION:=1.8.3
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://www.gnupg.org/ftp/gcrypt/libgcrypt/
-PKG_HASH:=f9461b4619bb78b273a88d468915750d418e89a3ea3b641bab0563a9af4b04d0
+PKG_HASH:=66ec90be036747602f2b48f98312361a9180c97c68a690a5f376fa0f67d0af7c
PKG_LICENSE:=LGPL-2.1+ GPL-2.0+
PKG_LICENSE_FILES:=COPYING
--enable-shared \
--enable-static \
--disable-asm \
+ --disable-doc \
--with-gpg-error-prefix="$(STAGING_DIR)/usr"
TARGET_CFLAGS += $(FPIC)
+++ /dev/null
-diff -u --recursive libgcrypt-1.6.1-vanilla/Makefile.am libgcrypt-1.6.1/Makefile.am
---- libgcrypt-1.6.1-vanilla/Makefile.am 2014-07-18 00:31:21.020329371 -0400
-+++ libgcrypt-1.6.1/Makefile.am 2014-07-18 00:31:49.076314616 -0400
-@@ -25,8 +25,8 @@
- # (A suitable gitlog-to-changelog script can be found in GnuPG master.)
- GITLOG_TO_CHANGELOG=gitlog-to-changelog
-
--DIST_SUBDIRS = m4 compat mpi cipher random src doc tests
--SUBDIRS = compat mpi cipher random src doc tests
-+DIST_SUBDIRS = m4 compat mpi cipher random src
-+SUBDIRS = compat mpi cipher random src
-
- EXTRA_DIST = autogen.sh autogen.rc README.GIT LICENSES \
- ChangeLog-2011 build-aux/ChangeLog-2011 doc/ChangeLog-2011 \
-diff -u --recursive libgcrypt-1.6.1-vanilla/Makefile.in libgcrypt-1.6.1/Makefile.in
---- libgcrypt-1.6.1-vanilla/Makefile.in 2014-07-18 00:31:21.020329371 -0400
-+++ libgcrypt-1.6.1/Makefile.in 2014-07-18 00:31:54.974311498 -0400
-@@ -331,8 +331,8 @@
-
- # (A suitable gitlog-to-changelog script can be found in GnuPG master.)
- GITLOG_TO_CHANGELOG = gitlog-to-changelog
--DIST_SUBDIRS = m4 compat mpi cipher random src doc tests
--SUBDIRS = compat mpi cipher random src doc tests
-+DIST_SUBDIRS = m4 compat mpi cipher random src
-+SUBDIRS = compat mpi cipher random src
- EXTRA_DIST = autogen.sh autogen.rc README.GIT LICENSES \
- ChangeLog-2011 build-aux/ChangeLog-2011 doc/ChangeLog-2011 \
- m4/ChangeLog-2011 cipher/ChangeLog-2011 src/ChangeLog-2011 \
+++ /dev/null
-From a785cc3db0c4e8eb8ebbf784b833a40d2c42ec3e Mon Sep 17 00:00:00 2001
-From: Werner Koch <wk@gnupg.org>
-Date: Tue, 25 Aug 2015 21:11:05 +0200
-Subject: [PATCH] Add configure option --enable-build-timestamp.
-
-* configure.ac (BUILD_TIMESTAMP): Set to "<none>" by default.
---
-
-This is based on
-libgpg-error commit d620005fd1a655d591fccb44639e22ea445e4554
-but changed to be disabled by default. Check there for some
-background.
-
-Signed-off-by: Werner Koch <wk@gnupg.org>
----
- configure.ac | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 48e217947287..2acfa3630cac 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2272,7 +2272,16 @@ changequote([,])dnl
- BUILD_FILEVERSION="${BUILD_FILEVERSION}mym4_revision_dec"
- AC_SUBST(BUILD_FILEVERSION)
-
--BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
-+AC_ARG_ENABLE([build-timestamp],
-+ AC_HELP_STRING([--enable-build-timestamp],
-+ [set an explicit build timestamp for reproducibility.
-+ (default is the current time in ISO-8601 format)]),
-+ [if test "$enableval" = "yes"; then
-+ BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
-+ else
-+ BUILD_TIMESTAMP="$enableval"
-+ fi],
-+ [BUILD_TIMESTAMP="<none>"])
- AC_SUBST(BUILD_TIMESTAMP)
- AC_DEFINE_UNQUOTED(BUILD_TIMESTAMP, "$BUILD_TIMESTAMP",
- [The time this package was configured for a build])
---
-2.15.1
-
include $(TOPDIR)/rules.mk
PKG_NAME:=libgpg-error
-PKG_VERSION:=1.12
+PKG_VERSION:=1.32
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=ftp://ftp.gnupg.org/gcrypt/libgpg-error
-PKG_HASH:=cafc9ed6a87c53a35175d5a1220a96ca386696eef2fa059cc0306211f246e55f
+PKG_SOURCE_URL:=https://www.gnupg.org/ftp/gcrypt/libgpg-error/
+PKG_HASH:=c345c5e73cc2332f8d50db84a2280abfb1d8f6d4f1858b9daa30404db44540ca
PKG_LICENSE:=LGPL-2.1+
PKG_LICENSE_FILES:=COPYING
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
+PKG_FIXUP:=autoreconf
+
include $(INCLUDE_DIR)/package.mk
define Package/libgpg-error
--- /dev/null
+diff -u --recursive libgpg-error-1.32-vanilla/configure.ac libgpg-error-1.32/configure.ac
+--- libgpg-error-1.32-vanilla/configure.ac 2018-07-15 01:23:30.028462129 -0400
++++ libgpg-error-1.32/configure.ac 2018-07-15 01:25:32.214267179 -0400
+@@ -74,6 +74,18 @@
+ AC_CANONICAL_HOST
+ AB_INIT
+
++case "${host}" in
++ x86_64-openwrt-linux-gnu|i?86-openwrt-linux-gnu)
++ host=$(echo $host | sed 's/openwrt/pc/g')
++ ;;
++ arm-openwrt-linux-gnu)
++ host=arm-unknown-linux-gnueabi
++ ;;
++ *)
++ host=$(echo $host | sed 's/openwrt/unknown/g')
++ ;;
++esac
++
+ # Checks for programs.
+ AC_PROG_CC
+ AM_PROG_CC_C_O
+++ /dev/null
-From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-Date: Mon, 16 Mar 2015 17:40:12 +0000 (-0400)
-Subject: Avoid breakage with gcc 5
-X-Git-Tag: libgpg-error-1.19~7
-X-Git-Url: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgpg-error.git;a=commitdiff_plain;h=c01c8f0c4f55d76b037c7f6aa44ad25ede18d38a
-
-Avoid breakage with gcc 5
-
-* src/Makefile.am: Add -P to the C preprocessor when building
-mkerrcodes.h, to avoid a noisy intermediate pipeline.
-
---
-
-With gcc 5 without this patch, we see many errors like the following:
-
-gcc -I. -I. -o mkerrcodes ./mkerrcodes.c
-In file included from ./mkerrcodes.c:26:0:
-./mkerrcodes.h:9:5: error: expected expression before ‘,’ token
- { , "GPG_ERR_E2BIG" },
- ^
-./mkerrcodes.h:10:5: error: expected expression before ‘,’ token
- { , "GPG_ERR_EACCES" },
- ^
-
-This patch cleans up the generated mkerrcodes.h by making the
-intermediate stage clean for all the versions of gcc i tested (4.x and
-5).
-
-Debian-Bug-Id: 777374
-Signed-Off-By: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
----
-
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -140,7 +140,7 @@ code-to-errno.h: Makefile mkerrnos.awk e
- # It is correct to use $(CPP). We want the host's idea of the error codes.
- mkerrcodes.h: Makefile mkerrcodes.awk $(gpg_extra_headers)
- $(AWK) -f $(srcdir)/mkerrcodes1.awk $(srcdir)/errnos.in >_$@
-- $(CPP) $(CPPFLAGS) $(extra_cppflags) _$@ | grep GPG_ERR_ | \
-+ $(CPP) $(CPPFLAGS) $(extra_cppflags) -P _$@ | grep GPG_ERR_ | \
- $(AWK) -f $(srcdir)/mkerrcodes.awk >$@
- -rm _$@
-
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -979,7 +979,7 @@ code-to-errno.h: Makefile mkerrnos.awk e
- # It is correct to use $(CPP). We want the host's idea of the error codes.
- mkerrcodes.h: Makefile mkerrcodes.awk $(gpg_extra_headers)
- $(AWK) -f $(srcdir)/mkerrcodes1.awk $(srcdir)/errnos.in >_$@
-- $(CPP) $(CPPFLAGS) $(extra_cppflags) _$@ | grep GPG_ERR_ | \
-+ $(CPP) $(CPPFLAGS) $(extra_cppflags) -P _$@ | grep GPG_ERR_ | \
- $(AWK) -f $(srcdir)/mkerrcodes.awk >$@
- -rm _$@
-
include $(TOPDIR)/rules.mk
PKG_NAME:=libhttp-parser
-PKG_VERSION:=2.8.0
-PKG_RELEASE=1
+PKG_VERSION:=2.8.1
+PKG_RELEASE:=1
PKG_MAINTAINER:=Ramanathan Sivagurunathan <ramzthecoder@gmail.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE-MIT
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=cf154fc12666dfa404f2537bb54e32196841e0f9d32312bf1e4daaf43f97f9a5
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_URL:=git://github.com/nodejs/http-parser.git
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=v$(PKG_VERSION)
-
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/nodejs/http-parser/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=51615f68b8d67eadfd2482decc63b3e55d749ce0055502bbb5b0032726d22d96
+PKG_BUILD_DIR:=$(BUILD_DIR)/http-parser-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
define Package/libhttp-parser/description
A parser for HTTP messages written in C. It parses both requests and responses.
- The parser is designed to be used in performance HTTP applications.
- It does not make any syscalls nor allocations, it does not buffer data,
- it can be interrupted at anytime. Depending on your architecture,
- it only requires about 40 bytes of data per message stream
+ The parser is designed to be used in performance HTTP applications.
+ It does not make any syscalls nor allocations, it does not buffer data,
+ it can be interrupted at anytime. Depending on your architecture,
+ it only requires about 40 bytes of data per message stream
(in a web server that is per connection).
endef
define Build/Compile
- $(call Build/Compile/Default, library)
+ $(call Build/Compile/Default, library)
endef
define Build/InstallDev
--- /dev/null
+#
+# Copyright (C) 2007-2018 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:=libpsl
+PKG_VERSION:=0.20.2
+PKG_RELEASE:=1
+
+PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/rockdaboot/libpsl/releases/download/$(PKG_NAME)-$(PKG_VERSION)/
+PKG_HASH:=f8fd0aeb66252dfcc638f14d9be1e2362fdaf2ca86bde0444ff4d5cc961b560f
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libpsl
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=C library to handle the Public Suffix List
+ URL:=https://github.com/rockdaboot/libpsl
+ DEPENDS:=+libidn2 +libunistring
+endef
+
+define Package/libpsl/description
+ C library to handle the Public Suffix List
+endef
+
+CONFIGURE_ARGS += --disable-rpath
+
+define Build/InstallDev
+ $(INSTALL_DIR) \
+ $(1)/usr/lib \
+ $(1)/usr/include
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/include/* \
+ $(1)/usr/include/
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/* \
+ $(1)/usr/lib/
+endef
+
+define Package/libpsl/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/*.so* \
+ $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libpsl))
include $(TOPDIR)/rules.mk
PKG_NAME:=libsoup
-PKG_VERSION:=2.60.3
+PKG_VERSION:=2.63.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@GNOME/$(PKG_NAME)/2.60
-PKG_HASH:=1b0dc762f23abe4e0d29b77370e539fd35f31d8e8e0318d6ddccff395be68a22
+PKG_SOURCE_URL:=@GNOME/$(PKG_NAME)/2.63
+PKG_HASH:=3931f8ae282f010fa0d6c31841751d7c4bff72f116d13f34a5bf98a96550a4f9
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
TITLE:=libsoup
URL:=http://live.gnome.org/LibSoup
MAINTAINER:=W. Michael Petullo <mike@flyn.org>
- DEPENDS:=+glib2 +libxml2 +libgnutls +libsqlite3 $(ICONV_DEPENDS) $(INTL_DEPENDS)
+ DEPENDS:=+glib2 +libxml2 +libgnutls +libsqlite3 +libpsl $(ICONV_DEPENDS) $(INTL_DEPENDS)
endef
define Build/Configure
include $(TOPDIR)/rules.mk
PKG_NAME:=talloc
-PKG_VERSION:=2.1.13
+PKG_VERSION:=2.1.14
MAJOR_VERSION:=2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.samba.org/ftp/talloc
-PKG_HASH:=84f399dbf0ad97006a2b4953ea99452d033faac15aabfddd4ba61734764c6047
+PKG_HASH:=b185602756a628bac507fa8af8b9df92ace69d27c0add5dab93190ad7c3367ce
PKG_MAINTAINER:=Lucile Quirion <lucile.quirion@savoirfairelinux.com>
PKG_LICENSE:=LGPL-3.0+
include $(TOPDIR)/rules.mk
PKG_NAME:=libtorrent
-PKG_VERSION:=0.13.6-git-1
-PKG_RELEASE=$(PKG_SOURCE_VERSION).1
+PKG_VERSION:=0.13.7
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/rakshasa/libtorrent.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=14e793b75dac95c51ad64ff9cd2dc6772b68c625
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=0971c21d0e6b7028bc319e97c82bdb213c17dfc503fc0f89b809e5ed7ce98142
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/rakshasa/libtorrent/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=86b4b1753385aaddf9e59ad94f1292eee5102139eb57520e84d1af2f04693708
PKG_FIXUP:=autoreconf
PKG_BUILD_PARALLEL:=1
SECTION:=libs
CATEGORY:=Libraries
TITLE:=Rakshasa's BitTorrent library
- URL:=http://libtorrent.rakshasa.no/
+ URL:=https://rakshasa.github.io/rtorrent/
DEPENDS:=+libopenssl +libsigcxx +zlib
- MAINTAINER:=Peter Wagner <tripolar@gmx.at>
+ MAINTAINER:=Rosen Penev <rosenp@gmail.com>
endef
define Package/libtorrent/description
---- a/configure.ac
-+++ b/configure.ac
-@@ -19,7 +19,6 @@ AC_SUBST(LIBTORRENT_INTERFACE_VERSION_NO
-
- AM_INIT_AUTOMAKE
- AC_CONFIG_HEADERS(config.h)
--AM_PATH_CPPUNIT(1.9.6)
-
- AC_PROG_CXX
-
--- a/scripts/checks.m4
+++ b/scripts/checks.m4
@@ -96,7 +96,7 @@ AC_DEFUN([TORRENT_CHECK_KQUEUE], [
index 65e34872..27e33570 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -69,12 +69,15 @@ AC_ARG_ENABLE(openssl,
+@@ -71,12 +71,15 @@ AC_ARG_ENABLE(openssl,
[ --disable-openssl Don't use OpenSSL's SHA1 implementation.],
[
if test "$enableval" = "yes"; then
else
AC_DEFINE(USE_NSS_SHA, 1, Using Mozilla's SHA1 implementation.)
fi
-@@ -85,6 +88,7 @@ AC_ARG_ENABLE(openssl,
+@@ -87,6 +90,7 @@ AC_ARG_ENABLE(openssl,
AC_DEFINE(USE_OPENSSL, 1, Using OpenSSL.)
AC_DEFINE(USE_OPENSSL_SHA, 1, Using OpenSSL's SHA1 implementation.)
include $(TOPDIR)/rules.mk
PKG_NAME:=libuhttpd
-PKG_VERSION:=2.0.3
-PKG_RELEASE:=1
+PKG_VERSION:=2.1.2
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_SOURCE_URL=https://github.com/zhaojh329/libuhttpd.git
-PKG_MIRROR_HASH:=f20e4081ba1bbea277a3c86f28fa451d54546817a58814fff91470550a5b8e5d
+PKG_MIRROR_HASH:=0f80b643ca4fa652df1a4510384e941e045b1ad8124fa4c8128a56861189b325
CMAKE_INSTALL:=1
PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR)
$(Package/libuhttpd/default)
TITLE += (NO SSL)
VARIANT:=nossl
+ CONFLICTS:=libuhttpd-openssl libuhttpd-wolfssl libuhttpd-mbedtls
endef
define Package/libuhttpd-openssl
TITLE += (openssl)
DEPENDS += +libustream-openssl
VARIANT:=openssl
+ CONFLICTS:=libuhttpd-wolfssl libuhttpd-mbedtls
endef
define Package/libuhttpd-wolfssl
TITLE += (wolfssl)
DEPENDS += +libustream-wolfssl
VARIANT:=wolfssl
+ CONFLICTS:=libuhttpd-mbedtls
endef
define Package/libuhttpd-mbedtls
endif
define Package/libuhttpd/default/install
- $(INSTALL_DIR) $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/ $(1)/usr/lib/lua/
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libuhttpd.so* $(1)/usr/lib/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/lua/uhttpd.so* $(1)/usr/lib/lua/
endef
Package/libuhttpd-nossl/install = $(Package/libuhttpd/default/install)
--- /dev/null
+Index: libuhttpd-2.1.0/src/CMakeLists.txt
+===================================================================
+--- libuhttpd-2.1.0.orig/src/CMakeLists.txt
++++ libuhttpd-2.1.0/src/CMakeLists.txt
+@@ -8,7 +8,7 @@ set(UHTTPD_VERSION_PATCH 0)
+
+ # Check the third party Libraries
+ find_package(Libubox REQUIRED)
+-find_package(Lua)
++find_package(Lua51)
+
+ include_directories(${CMAKE_CURRENT_BINARY_DIR} ${LIBUBOX_INCLUDE_DIR})
+
+@@ -20,9 +20,9 @@ option(UHTTPD_SSL_SUPPORT "SSL support"
+
+
+ set(LUA_SUPPORT_DEFAULT "ON")
+-if (NOT LUA_FOUND)
++if (NOT LUA51_FOUND)
+ set(LUA_SUPPORT_DEFAULT "OFF")
+-endif (NOT LUA_FOUND)
++endif (NOT LUA51_FOUND)
+
+ set(UHTTPD_LUA_SUPPORT_CONFIG 1)
+ option(UHTTPD_LUA_SUPPORT "LUA support" ${LUA_SUPPORT_DEFAULT})
+@@ -34,9 +34,9 @@ else ()
+ endif ()
+
+ if (UHTTPD_LUA_SUPPORT)
+- if (NOT LUA_FOUND)
++ if (NOT LUA51_FOUND)
+ message(FATAL_ERROR "Lua was not found on your system")
+- endif (NOT LUA_FOUND)
++ endif (NOT LUA51_FOUND)
+
+ include_directories(${LUA_INCLUDE_DIR})
+ list(APPEND EXTRA_LIBS ${LUA_LIBRARY})
PKG_NAME:=xerces-c
PKG_MAIN_VER:=3.2
-PKG_VERSION:=3.2.0
+PKG_VERSION:=3.2.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@APACHE/xerces/c/3/sources
-PKG_HASH:=35d8db18ebe6db353850903981cd07cca64abeba071602e7e32596714352de08
+PKG_HASH:=02deac7c863027381910a8371f634f8bd14b39232a387efedd27c18f24f989cb
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE:=Apache-2.0
PKG_NAME:=libzdb
PKG_VERSION:=3.1
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_LICENSE:=GPL-3.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_BUILD_DEPENDS:=libzdb/host
include $(INCLUDE_DIR)/package.mk
-
-# Help libzdb find libiconv.so when using uClibc.
-ifneq ($(CONFIG_USE_UCLIBC),)
-TARGET_CPPFLAGS+= \
- -I$(STAGING_DIR)/usr/lib/libiconv-full/include
-TARGET_LDFLAGS += \
- -L$(STAGING_DIR)/usr/lib/libiconv-full/lib
-endif
+# libzdb needs to find iconv when linking to libmariadb
+include $(INCLUDE_DIR)/nls.mk
define Package/libzdb
SECTION:=libs
include $(TOPDIR)/rules.mk
PKG_NAME:=tdb
-PKG_VERSION:=1.3.15
-PKG_RELEASE:=2
+PKG_VERSION:=1.3.16
+PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.samba.org/ftp/tdb/
-PKG_HASH:=b4a1bf3833601bd9f10aff363cb750860aef9ce5b4617989239923192f946728
+PKG_HASH:=6a3fc2616567f23993984ada3cea97d953a27669ffd1bfbbe961f26e0cf96cc5
PKG_INSTALL:=1
include $(INCLUDE_DIR)/kernel.mk
# for $(VERSION_DIST)
include $(INCLUDE_DIR)/version.mk
-#include $(INCLUDE_DIR)/version.mk
define Package/tdb
SUBMENU:=database
SECTION:=libs
CATEGORY:=Libraries
TITLE:=Trivial Database
+ DEPNEDS:=+libattr
URL:=http://sourceforge.net/projects/tdb/
MAINTAINER:=Dmitry V. Zimin <pfzim@mail.ru>
endef
PKG_NAME:=xmlrpc-c
PKG_VERSION:=1.39.13
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=@SF/xmlrpc-c/Xmlrpc-c%20Super%20Stable/$(PKG_VERSION)
--disable-wininet-client \
--disable-libwww-client \
--disable-abyss-server \
+ --disable-cgi-server \
--disable-cplusplus \
--disable-abyss-threads \
- --disable-cgi-server
+ --without-libwww-ssl
ifeq ($(BUILD_VARIANT),libxml2)
CONFIGURE_ARGS += \
#
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2018 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:=dovecot
-PKG_VERSION:=2.3.2
+PKG_VERSION:=2.3.2.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.dovecot.org/releases/2.3
-PKG_HASH:=6e48f0fa60768427f03035b0a3e93d1ae29b972bb2bd9ca998ccc6a0f6dae393
+PKG_HASH:=4a65118508dc7a562e5f90dd7c3f56219fff22367c496f17d77cd0c7e2724e34
PKG_LICENSE:=LGPL-2.1 MIT BSD-3-Clause Unique
PKG_LICENSE_FILES:=COPYING COPYING.LGPL COPYING.MIT
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
+# iconv is needed when compiling with MySQL support. iconv will also be used by
+# dovecot itself.
+include $(INCLUDE_DIR)/nls.mk
define Package/dovecot
SECTION:=mail
CATEGORY:=Mail
- DEPENDS:=+DOVECOT_GSSAPI:krb5-libs +DOVECOT_LDAP:libopenldap +DOVECOT_MYSQL:libmysqlclient +DOVECOT_PGSQL:libpq +DOVECOT_SQLITE:libsqlite3 +libopenssl +librt +zlib +libbz2 +libcap +DOVECOT_ICU:icu
+ DEPENDS:=+DOVECOT_GSSAPI:krb5-libs +DOVECOT_LDAP:libopenldap +DOVECOT_MYSQL:libmysqlclient +DOVECOT_PGSQL:libpq +DOVECOT_SQLITE:libsqlite3 +libopenssl +librt +zlib +libbz2 +libcap +DOVECOT_ICU:icu $(ICONV_DEPENDS)
TITLE:=An IMAP and POP3 daemon
URL:=https://www.dovecot.org/
USERID:=dovecot=59:dovecot=59
include $(TOPDIR)/rules.mk
PKG_NAME:=adblock
-PKG_VERSION:=3.5.3
-PKG_RELEASE:=1
+PKG_VERSION:=3.5.4
+PKG_RELEASE:=2
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
return 0
fi
fi
+ local nice="$(uci_get adblock extra adb_nice)"
procd_open_instance "adblock"
procd_set_param command "${adb_script}" "${@}"
procd_set_param pidfile "${adb_pidfile}"
+ procd_set_param nice ${nice:-0}
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-adb_ver="3.5.3"
+adb_ver="3.5.4-2"
adb_sysver="unknown"
adb_enabled=0
adb_debug=0
f_log "info" "start adblock processing (${adb_action})"
}
-# create temporay files and directories
+# create temporary files and directories
#
f_temp()
{
fi
}
-# remove temporay files and directories
+# remove temporary files and directories
#
f_rmtemp()
{
#
f_extconf()
{
- local uci_config
+ local uci_config port port_list="53 853 5353"
case "${adb_dns}" in
dnsmasq)
uci_config="firewall"
if [ ${adb_enabled} -eq 1 ] && [ ${adb_forcedns} -eq 1 ] && \
- [ -z "$(uci -q get firewall.adblock_dns)" ] && [ $(/etc/init.d/firewall enabled; printf '%u' ${?}) -eq 0 ]
+ [ -z "$(uci -q get firewall.adblock_dns_53)" ] && [ $(/etc/init.d/firewall enabled; printf '%u' ${?}) -eq 0 ]
then
- uci -q batch <<-EOF
- set firewall.adblock_dns="redirect"
- set firewall.adblock_dns.name="Adblock DNS"
- set firewall.adblock_dns.src="lan"
- set firewall.adblock_dns.proto="tcp udp"
- set firewall.adblock_dns.src_dport="53"
- set firewall.adblock_dns.dest_port="53"
- set firewall.adblock_dns.target="DNAT"
- EOF
- elif [ -n "$(uci -q get firewall.adblock_dns)" ] && ([ ${adb_enabled} -eq 0 ] || [ ${adb_forcedns} -eq 0 ])
+ for port in ${port_list}
+ do
+ uci_add firewall "redirect" "adblock_dns_${port}"
+ uci_set firewall "adblock_dns_${port}" "name" "Adblock DNS, port ${port}"
+ uci_set firewall "adblock_dns_${port}" "src" "lan"
+ uci_set firewall "adblock_dns_${port}" "proto" "tcp udp"
+ uci_set firewall "adblock_dns_${port}" "src_dport" "${port}"
+ uci_set firewall "adblock_dns_${port}" "dest_port" "${port}"
+ uci_set firewall "adblock_dns_${port}" "target" "DNAT"
+ done
+ elif [ -n "$(uci -q get firewall.adblock_dns_53)" ] && ([ ${adb_enabled} -eq 0 ] || [ ${adb_forcedns} -eq 0 ])
then
- uci -q delete firewall.adblock_dns
+ for port in ${port_list}
+ do
+ uci_remove firewall "adblock_dns_${port}"
+ done
fi
f_uci "${uci_config}"
}
--- /dev/null
+#
+# Copyright (C) 2018 TDT AG <development@tdt.de>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See https://www.gnu.org/licenses/gpl-2.0.txt for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=proto-bonding
+PKG_VERSION:=2018-06-11
+PKG_RELEASE:=1
+
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=
+
+PKG_MAINTAINER:=Helge Mader <ma@dev.tdt.de>
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/proto-bonding
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=Link Aggregation (Channel Bonding) proto handler
+ DEPENDS:=+kmod-bonding
+endef
+
+define Package/proto-bonding/description
+ This package contains the channel bonding proto handler for netifd
+endef
+
+define Build/Compile
+endef
+
+define Package/proto-bonding/install
+ $(INSTALL_DIR) $(1)/lib/netifd/proto/
+ $(INSTALL_BIN) ./files/lib/netifd/proto/bonding.sh \
+ $(1)/lib/netifd/proto/
+endef
+
+$(eval $(call BuildPackage,proto-bonding))
--- /dev/null
+#!/bin/sh
+#
+# Copyright (C) 2018 TDT AG <development@tdt.de>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See https://www.gnu.org/licenses/gpl-2.0.txt for more information.
+#
+
+. /lib/functions.sh
+. ../netifd-proto.sh
+
+init_proto "$@"
+
+INCLUDE_ONLY=1
+
+BONDING_MASTERS="/sys/class/net/bonding_masters"
+
+set_driver_values() {
+ local varname
+
+ for varname in "$@"; do
+ local value
+ json_get_var value "$varname"
+
+ [ -n "$value" ] && echo "$value" > /sys/class/net/"$link"/bonding/"$varname"
+ done
+}
+
+proto_bonding_init_config() {
+ no_device=1
+ available=1
+
+ proto_config_add_string "ifname"
+
+ proto_config_add_string "ipaddr"
+ proto_config_add_string "netmask"
+
+ proto_config_add_string "bonding_policy"
+ proto_config_add_string "link_monitoring"
+ proto_config_add_string "slaves"
+ proto_config_add_string "all_slaves_active"
+
+ proto_config_add_string "min_links"
+ proto_config_add_string "ad_actor_sys_prio"
+ proto_config_add_string "ad_actor_system"
+ proto_config_add_string "ad_select"
+ proto_config_add_string "lacp_rate"
+ proto_config_add_string "packets_per_slave"
+ proto_config_add_string "xmit_hash_policy"
+ proto_config_add_string "primary"
+ proto_config_add_string "primary_reselect"
+ proto_config_add_string "lp_interval"
+ proto_config_add_string "tlb_dynamic_lb"
+ proto_config_add_string "resend_igmp"
+ proto_config_add_string "fail_over_mac"
+ proto_config_add_string "num_grat_arp__num_unsol_na"
+
+ proto_config_add_string "arp_interval"
+ proto_config_add_string "arp_ip_target"
+ proto_config_add_string "arp_all_targets"
+ proto_config_add_string "arp_validate"
+
+ proto_config_add_string "miimon"
+ proto_config_add_string "downdelay"
+ proto_config_add_string "updelay"
+ proto_config_add_string "use_carrier"
+}
+
+proto_bonding_setup() {
+ local cfg="$1"
+ local link="bonding-$cfg"
+
+ # Check for loaded kernel bonding driver (/sys/class/net/bonding_masters exists)
+ [ -f "$BONDING_MASTERS" ] || {
+ echo "$cfg" "setup: bonding_masters does not exist in sysfs (kernel module not loaded?)"
+ proto_notify_error "$cfg" "setup: bonding_masters does not exist in sysfs (kernel module not loaded?)"
+ proto_block_restart "$cfg"
+ return
+ }
+
+ # Add bonding interface to system
+ echo "+$link" > "$BONDING_MASTERS"
+
+ # Set bonding policy (with corresponding parameters)
+ local bonding_policy
+ json_get_vars bonding_policy
+
+ case "$bonding_policy" in
+
+ 802.3ad)
+ echo "$bonding_policy" > /sys/class/net/"$link"/bonding/mode
+ set_driver_values min_links ad_actor_sys_prio ad_actor_system ad_select lacp_rate
+ ;;
+
+ balance-rr)
+ echo "$bonding_policy" > /sys/class/net/"$link"/bonding/mode
+ set_driver_values packets_per_slave xmit_hash_policy
+ ;;
+
+ balance-tlb)
+ echo "$bonding_policy" > /sys/class/net/"$link"/bonding/mode
+ set_driver_values primary primary_reselect lp_interval tlb_dynamic_lb resend_igmp xmit_hash_policy
+ ;;
+
+ balance-alb)
+ echo "$bonding_policy" > /sys/class/net/"$link"/bonding/mode
+ set_driver_values primary primary_reselect lp_interval tlb_dynamic_lb resend_igmp xmit_hash_policy
+ ;;
+
+ active-backup)
+ echo "$bonding_policy" > /sys/class/net/"$link"/bonding/mode
+ set_driver_values primary primary_reselect fail_over_mac num_grat_arp__num_unsol_na xmit_hash_policy
+ ;;
+ esac
+
+ # Set link monitoring (with corresponding parameters)
+ local link_monitoring
+ json_get_vars link_monitoring
+
+ case "$link_monitoring" in
+
+ arp)
+ local arp_interval arp_ip_target arp_all_targets arp_validate
+ json_get_vars arp_interval arp_ip_target arp_all_targets arp_validate
+
+ [ -n "$arp_interval" -a "$arp_interval" != 0 ] && echo "$arp_interval" > /sys/class/net/"$link"/bonding/arp_interval
+
+ IFS=' '
+ for target in $arp_ip_target; do
+ echo "+$target" > /sys/class/net/"$link"/bonding/arp_ip_target
+ done
+
+ [ -n "$arp_all_targets" ] && echo "$arp_all_targets" > /sys/class/net/"$link"/bonding/arp_all_targets
+ [ -n "$arp_validate" ] && echo "$arp_validate" > /sys/class/net/"$link"/bonding/arp_validate
+ ;;
+
+ mii)
+ local miimon downdelay updelay use_carrier
+ json_get_vars miimon downdelay updelay use_carrier
+
+ [ -n "$miimon" -a "$miimon" != 0 ] && echo "$miimon" > /sys/class/net/"$link"/bonding/miimon
+ [ -n "$downdelay" ] && echo "$downdelay" > /sys/class/net/"$link"/bonding/downdelay
+ [ -n "$updelay" ] && echo "$updelay" > /sys/class/net/"$link"/bonding/updelay
+ [ -n "$use_carrier" ] && echo "$use_carrier" > /sys/class/net/"$link"/bonding/use_carrier
+ ;;
+ esac
+
+ # Add slaves to bonding interface
+ local slaves
+ json_get_vars slaves
+
+ for slave in $slaves; do
+
+ if [ "$(cat /proc/net/dev |grep "$slave")" == "" ]; then
+ echo "$cfg" "ERROR IN CONFIGURATION - $slave: No such device"
+ proto_notify_error "$cfg" "ERROR IN CONFIGURATION - $slave: No such device"
+ proto_block_restart "$cfg"
+ return
+ fi
+
+ ifconfig "$slave" down
+
+ sleep 1
+
+ echo "+$slave" > /sys/class/net/"$link"/bonding/slaves
+
+ ifconfig "$slave" up
+ done
+
+ [ -n "$all_slaves_active" ] && echo "$all_slaves_active" > /sys/class/net/"$link"/bonding/all_slaves_active
+
+ local ipaddr netmask
+ json_get_vars ipaddr netmask
+
+ # ATTENTION
+ #All json vars have to be read before the line below, as the
+ # json object will be overwritten by proto_init_update
+ # ATTENTION
+
+ proto_init_update "$link" 1
+
+ # For static configuration we _MUST_ have an IP address
+ [ -z "$ipaddr" ] && {
+ echo "$cfg" "INVALID LOCAL ADDRESS"
+ proto_notify_error "$cfg" "INVALID_LOCAL_ADDRESS"
+ proto_block_restart "$cfg"
+ return
+ }
+
+ proto_add_ipv4_address "$ipaddr" "$netmask"
+
+ proto_send_update "$cfg"
+}
+
+proto_bonding_teardown() {
+ local cfg="$1"
+ local link="bonding-$cfg"
+
+ # Check for loaded kernel bonding driver (/sys/class/net/bonding_masters exists)
+ [ -f "$BONDING_MASTERS" ] || {
+ echo "$cfg" "teardown: bonding_masters does not exist in sysfs (kernel module not loaded?)"
+ proto_notify_error "$cfg" "teardown: bonding_masters does not exist in sysfs (kernel module not loaded?)"
+ proto_block_restart "$cfg"
+ return
+ }
+
+ echo "-$link" > /sys/class/net/bonding_masters
+ logger "bonding_teardown($1): $2"
+}
+
+add_protocol bonding
include $(TOPDIR)/rules.mk
PKG_NAME:=clamav
-PKG_VERSION:=0.100.0
+PKG_VERSION:=0.100.1
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.clamav.net/downloads/production/
-PKG_HASH:=c5c5edaf75a3c53ac0f271148fd6447310bce53f448ec7e6205124a25918f65c
+PKG_HASH:=84e026655152247de7237184ee13003701c40be030dd68e0316111049f58a59f
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
PKG_NAME:=ipsec-tools
PKG_VERSION:=0.8.2
-PKG_RELEASE:=7
+PKG_RELEASE:=8
PKG_MAINTAINER:=Noah Meyerhans <frodo@morgul.net>, \
Vitaly Protsko <villy@sft.ru>
PKG_LICENSE := BSD-3-Clause
--- /dev/null
+--- a/src/racoon/isakmp_xauth.c
++++ b/src/racoon/isakmp_xauth.c
+@@ -376,6 +376,7 @@ xauth_reply(iph1, port, id, res)
+ struct ph1handle *iph1;
+ int port;
+ int id;
++ int res;
+ {
+ struct xauth_state *xst = &iph1->mode_cfg->xauth;
+ char *usr = xst->authdata.generic.usr;
+
--- /dev/null
+From 071fec7181255b9234add44865a435dfdefee520 Mon Sep 17 00:00:00 2001
+In-Reply-To: <20180528120513.560-1-cote2004-github@yahoo.com>
+References: <20180528120513.560-1-cote2004-github@yahoo.com>
+From: Eneas U de Queiroz <cote2004-github@yahoo.com>
+Date: Wed, 30 May 2018 15:42:20 -0300
+Subject: [PATCH v2 1/1] ipsec-tools: add openssl 1.1 support
+To: equeiroz@troianet.com.br
+
+This patch updates the calls to openssl 1.1 API, and adds a
+compatibility layer so it compiles with (at least) openssl 1.0.2, I
+haven't tested it with lower versions, but all that's needed is to edit
+the openssl_compat.* files and add the missing functions there--they're
+usually trivial.
+
+Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
+---
+ src/racoon/Makefile.am | 10 +--
+ src/racoon/algorithm.c | 6 +-
+ src/racoon/cfparse.y | 2 +-
+ src/racoon/crypto_openssl.c | 197 +++++++++++++++++++++-------------------
+ src/racoon/crypto_openssl.h | 2 +-
+ src/racoon/eaytest.c | 7 +-
+ src/racoon/ipsec_doi.c | 2 +-
+ src/racoon/openssl_compat.c | 213 ++++++++++++++++++++++++++++++++++++++++++++
+ src/racoon/openssl_compat.h | 45 ++++++++++
+ src/racoon/plainrsa-gen.c | 41 +++++----
+ src/racoon/prsa_par.y | 28 ++++--
+ src/racoon/rsalist.c | 5 +-
+ 12 files changed, 431 insertions(+), 127 deletions(-)
+ create mode 100644 src/racoon/openssl_compat.c
+ create mode 100644 src/racoon/openssl_compat.h
+
+diff --git a/src/racoon/Makefile.am b/src/racoon/Makefile.am
+index dbaded9..4c585f3 100644
+--- a/src/racoon/Makefile.am
++++ b/src/racoon/Makefile.am
+@@ -4,7 +4,7 @@ sbin_PROGRAMS = racoon racoonctl plainrsa-gen
+ noinst_PROGRAMS = eaytest
+ include_racoon_HEADERS = racoonctl.h var.h vmbuf.h misc.h gcmalloc.h admin.h \
+ schedule.h sockmisc.h isakmp_var.h isakmp.h isakmp_xauth.h \
+- isakmp_cfg.h isakmp_unity.h ipsec_doi.h evt.h
++ isakmp_cfg.h isakmp_unity.h ipsec_doi.h evt.h openssl_compat.h
+ lib_LTLIBRARIES = libracoon.la
+
+ adminsockdir=${localstatedir}/racoon
+@@ -32,7 +32,7 @@ racoon_SOURCES = \
+ gssapi.c dnssec.c getcertsbyname.c privsep.c \
+ pfkey.c admin.c evt.c ipsec_doi.c oakley.c grabmyaddr.c vendorid.c \
+ policy.c localconf.c remoteconf.c crypto_openssl.c algorithm.c \
+- proposal.c sainfo.c strnames.c \
++ openssl_compat.c proposal.c sainfo.c strnames.c \
+ plog.c logger.c schedule.c str2val.c \
+ safefile.c backupsa.c genlist.c rsalist.c \
+ cftoken.l cfparse.y prsa_tok.l prsa_par.y
+@@ -51,12 +51,12 @@ libracoon_la_SOURCES = kmpstat.c vmbuf.c sockmisc.c misc.c
+ libracoon_la_CFLAGS = -DNOUSE_PRIVSEP $(AM_CFLAGS)
+
+ plainrsa_gen_SOURCES = plainrsa-gen.c plog.c \
+- crypto_openssl.c logger.c
++ crypto_openssl.c logger.c openssl_compat.c
+ EXTRA_plainrsa_gen_SOURCES = $(MISSING_ALGOS)
+ plainrsa_gen_LDADD = $(CRYPTOBJS) vmbuf.o misc.o
+ plainrsa_gen_DEPENDENCIES = $(CRYPTOBJS) vmbuf.o misc.o
+
+-eaytest_SOURCES = eaytest.c plog.c logger.c
++eaytest_SOURCES = eaytest.c plog.c logger.c openssl_compat.c
+ EXTRA_eaytest_SOURCES = missing/crypto/sha2/sha2.c
+ eaytest_LDADD = crypto_openssl_test.o vmbuf.o str2val.o misc_noplog.o \
+ $(CRYPTOBJS)
+@@ -75,7 +75,7 @@ noinst_HEADERS = \
+ debugrm.h isakmp.h misc.h sainfo.h \
+ dhgroup.h isakmp_agg.h netdb_dnssec.h schedule.h \
+ isakmp_cfg.h isakmp_xauth.h isakmp_unity.h isakmp_frag.h \
+- throttle.h privsep.h \
++ throttle.h privsep.h openssl_compat.h \
+ cfparse_proto.h cftoken_proto.h genlist.h rsalist.h \
+ missing/crypto/sha2/sha2.h missing/crypto/rijndael/rijndael_local.h \
+ missing/crypto/rijndael/rijndael-api-fst.h \
+diff --git a/src/racoon/algorithm.c b/src/racoon/algorithm.c
+index 3fd50f6..66c874b 100644
+--- a/src/racoon/algorithm.c
++++ b/src/racoon/algorithm.c
+@@ -128,7 +128,7 @@ static struct enc_algorithm oakley_encdef[] = {
+ { "aes", algtype_aes, OAKLEY_ATTR_ENC_ALG_AES, 16,
+ eay_aes_encrypt, eay_aes_decrypt,
+ eay_aes_weakkey, eay_aes_keylen, },
+-#ifdef HAVE_OPENSSL_CAMELLIA_H
++#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA)
+ { "camellia", algtype_camellia, OAKLEY_ATTR_ENC_ALG_CAMELLIA, 16,
+ eay_camellia_encrypt, eay_camellia_decrypt,
+ eay_camellia_weakkey, eay_camellia_keylen, },
+@@ -168,7 +168,7 @@ static struct enc_algorithm ipsec_encdef[] = {
+ { "twofish", algtype_twofish, IPSECDOI_ESP_TWOFISH, 16,
+ NULL, NULL,
+ NULL, eay_twofish_keylen, },
+-#ifdef HAVE_OPENSSL_IDEA_H
++#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA)
+ { "3idea", algtype_3idea, IPSECDOI_ESP_3IDEA, 8,
+ NULL, NULL,
+ NULL, NULL, },
+@@ -179,7 +179,7 @@ static struct enc_algorithm ipsec_encdef[] = {
+ { "rc4", algtype_rc4, IPSECDOI_ESP_RC4, 8,
+ NULL, NULL,
+ NULL, NULL, },
+-#ifdef HAVE_OPENSSL_CAMELLIA_H
++#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA)
+ { "camellia", algtype_camellia, IPSECDOI_ESP_CAMELLIA, 16,
+ NULL, NULL,
+ NULL, eay_camellia_keylen, },
+diff --git a/src/racoon/cfparse.y b/src/racoon/cfparse.y
+index 0d9bd67..8415752 100644
+--- a/src/racoon/cfparse.y
++++ b/src/racoon/cfparse.y
+@@ -2564,7 +2564,7 @@ set_isakmp_proposal(rmconf)
+ plog(LLV_DEBUG2, LOCATION, NULL,
+ "encklen=%d\n", s->encklen);
+
+- memset(types, 0, ARRAYLEN(types));
++ memset(types, 0, sizeof types);
+ types[algclass_isakmp_enc] = s->algclass[algclass_isakmp_enc];
+ types[algclass_isakmp_hash] = s->algclass[algclass_isakmp_hash];
+ types[algclass_isakmp_dh] = s->algclass[algclass_isakmp_dh];
+diff --git a/src/racoon/crypto_openssl.c b/src/racoon/crypto_openssl.c
+index 55b076a..8fb358f 100644
+--- a/src/racoon/crypto_openssl.c
++++ b/src/racoon/crypto_openssl.c
+@@ -90,6 +90,7 @@
+ #endif
+ #endif
+ #include "plog.h"
++#include "openssl_compat.h"
+
+ #define USE_NEW_DES_API
+
+@@ -316,9 +317,12 @@ eay_cmp_asn1dn(n1, n2)
+ i = idx+1;
+ goto end;
+ }
+- if ((ea->value->length == 1 && ea->value->data[0] == '*') ||
+- (eb->value->length == 1 && eb->value->data[0] == '*')) {
+- if (OBJ_cmp(ea->object,eb->object)) {
++ ASN1_STRING *sa = X509_NAME_ENTRY_get_data(ea);
++ ASN1_STRING *sb = X509_NAME_ENTRY_get_data(eb);
++ if ((ASN1_STRING_length(sa) == 1 && ASN1_STRING_get0_data(sa)[0] == '*') ||
++ (ASN1_STRING_length(sb) == 1 && ASN1_STRING_get0_data(sb)[0] == '*')) {
++ if (OBJ_cmp(X509_NAME_ENTRY_get_object(ea),
++ X509_NAME_ENTRY_get_object(eb))) {
+ i = idx+1;
+ goto end;
+ }
+@@ -430,7 +434,7 @@ cb_check_cert_local(ok, ctx)
+
+ if (!ok) {
+ X509_NAME_oneline(
+- X509_get_subject_name(ctx->current_cert),
++ X509_get_subject_name(X509_STORE_CTX_get_current_cert(ctx)),
+ buf,
+ 256);
+ /*
+@@ -438,7 +442,8 @@ cb_check_cert_local(ok, ctx)
+ * ok if they are self signed. But we should still warn
+ * the user.
+ */
+- switch (ctx->error) {
++ int ctx_error = X509_STORE_CTX_get_error(ctx);
++ switch (ctx_error) {
+ case X509_V_ERR_CERT_HAS_EXPIRED:
+ case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
+ case X509_V_ERR_INVALID_CA:
+@@ -453,9 +458,9 @@ cb_check_cert_local(ok, ctx)
+ }
+ plog(log_tag, LOCATION, NULL,
+ "%s(%d) at depth:%d SubjectName:%s\n",
+- X509_verify_cert_error_string(ctx->error),
+- ctx->error,
+- ctx->error_depth,
++ X509_verify_cert_error_string(ctx_error),
++ ctx_error,
++ X509_STORE_CTX_get_error_depth(ctx),
+ buf);
+ }
+ ERR_clear_error();
+@@ -477,10 +482,11 @@ cb_check_cert_remote(ok, ctx)
+
+ if (!ok) {
+ X509_NAME_oneline(
+- X509_get_subject_name(ctx->current_cert),
++ X509_get_subject_name(X509_STORE_CTX_get_current_cert(ctx)),
+ buf,
+ 256);
+- switch (ctx->error) {
++ int ctx_error=X509_STORE_CTX_get_error(ctx);
++ switch (ctx_error) {
+ case X509_V_ERR_UNABLE_TO_GET_CRL:
+ ok = 1;
+ log_tag = LLV_WARNING;
+@@ -490,9 +496,9 @@ cb_check_cert_remote(ok, ctx)
+ }
+ plog(log_tag, LOCATION, NULL,
+ "%s(%d) at depth:%d SubjectName:%s\n",
+- X509_verify_cert_error_string(ctx->error),
+- ctx->error,
+- ctx->error_depth,
++ X509_verify_cert_error_string(ctx_error),
++ ctx_error,
++ X509_STORE_CTX_get_error_depth(ctx),
+ buf);
+ }
+ ERR_clear_error();
+@@ -516,14 +522,15 @@ eay_get_x509asn1subjectname(cert)
+ if (x509 == NULL)
+ goto error;
+
++ X509_NAME *subject_name = X509_get_subject_name(x509);
+ /* get the length of the name */
+- len = i2d_X509_NAME(x509->cert_info->subject, NULL);
++ len = i2d_X509_NAME(subject_name, NULL);
+ name = vmalloc(len);
+ if (!name)
+ goto error;
+ /* get the name */
+ bp = (unsigned char *) name->v;
+- len = i2d_X509_NAME(x509->cert_info->subject, &bp);
++ len = i2d_X509_NAME(subject_name, &bp);
+
+ X509_free(x509);
+
+@@ -661,15 +668,16 @@ eay_get_x509asn1issuername(cert)
+ if (x509 == NULL)
+ goto error;
+
++ X509_NAME *issuer_name = X509_get_issuer_name(x509);
+ /* get the length of the name */
+- len = i2d_X509_NAME(x509->cert_info->issuer, NULL);
++ len = i2d_X509_NAME(issuer_name, NULL);
+ name = vmalloc(len);
+ if (name == NULL)
+ goto error;
+
+ /* get the name */
+ bp = (unsigned char *) name->v;
+- len = i2d_X509_NAME(x509->cert_info->issuer, &bp);
++ len = i2d_X509_NAME(issuer_name, &bp);
+
+ X509_free(x509);
+
+@@ -850,7 +858,7 @@ eay_check_x509sign(source, sig, cert)
+ return -1;
+ }
+
+- res = eay_rsa_verify(source, sig, evp->pkey.rsa);
++ res = eay_rsa_verify(source, sig, EVP_PKEY_get0_RSA(evp));
+
+ EVP_PKEY_free(evp);
+ X509_free(x509);
+@@ -992,7 +1000,7 @@ eay_get_x509sign(src, privkey)
+ if (evp == NULL)
+ return NULL;
+
+- sig = eay_rsa_sign(src, evp->pkey.rsa);
++ sig = eay_rsa_sign(src, EVP_PKEY_get0_RSA(evp));
+
+ EVP_PKEY_free(evp);
+
+@@ -1079,7 +1087,11 @@ eay_strerror()
+ int line, flags;
+ unsigned long es;
+
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++ es = 0; /* even when allowed by OPENSSL_API_COMPAT, it is defined as 0 */
++#else
+ es = CRYPTO_thread_id();
++#endif
+
+ while ((l = ERR_get_error_line_data(&file, &line, &data, &flags)) != 0){
+ n = snprintf(ebuf + len, sizeof(ebuf) - len,
+@@ -1100,7 +1112,7 @@ vchar_t *
+ evp_crypt(vchar_t *data, vchar_t *key, vchar_t *iv, const EVP_CIPHER *e, int enc)
+ {
+ vchar_t *res;
+- EVP_CIPHER_CTX ctx;
++ EVP_CIPHER_CTX *ctx;
+
+ if (!e)
+ return NULL;
+@@ -1111,7 +1123,7 @@ evp_crypt(vchar_t *data, vchar_t *key, vchar_t *iv, const EVP_CIPHER *e, int enc
+ if ((res = vmalloc(data->l)) == NULL)
+ return NULL;
+
+- EVP_CIPHER_CTX_init(&ctx);
++ ctx = EVP_CIPHER_CTX_new();
+
+ switch(EVP_CIPHER_nid(e)){
+ case NID_bf_cbc:
+@@ -1125,54 +1137,41 @@ evp_crypt(vchar_t *data, vchar_t *key, vchar_t *iv, const EVP_CIPHER *e, int enc
+ /* XXX: can we do that also for algos with a fixed key size ?
+ */
+ /* init context without key/iv
+- */
+- if (!EVP_CipherInit(&ctx, e, NULL, NULL, enc))
+- {
+- OpenSSL_BUG();
+- vfree(res);
+- return NULL;
+- }
++ */
++ if (!EVP_CipherInit(ctx, e, NULL, NULL, enc))
++ goto out;
+
+- /* update key size
+- */
+- if (!EVP_CIPHER_CTX_set_key_length(&ctx, key->l))
+- {
+- OpenSSL_BUG();
+- vfree(res);
+- return NULL;
+- }
+-
+- /* finalize context init with desired key size
+- */
+- if (!EVP_CipherInit(&ctx, NULL, (u_char *) key->v,
++ /* update key size
++ */
++ if (!EVP_CIPHER_CTX_set_key_length(ctx, key->l))
++ goto out;
++
++ /* finalize context init with desired key size
++ */
++ if (!EVP_CipherInit(ctx, NULL, (u_char *) key->v,
+ (u_char *) iv->v, enc))
+- {
+- OpenSSL_BUG();
+- vfree(res);
+- return NULL;
+- }
++ goto out;
+ break;
+ default:
+- if (!EVP_CipherInit(&ctx, e, (u_char *) key->v,
+- (u_char *) iv->v, enc)) {
+- OpenSSL_BUG();
+- vfree(res);
+- return NULL;
+- }
++ if (!EVP_CipherInit(ctx, e, (u_char *) key->v,
++ (u_char *) iv->v, enc))
++ goto out;
+ }
+
+ /* disable openssl padding */
+- EVP_CIPHER_CTX_set_padding(&ctx, 0);
++ EVP_CIPHER_CTX_set_padding(ctx, 0);
+
+- if (!EVP_Cipher(&ctx, (u_char *) res->v, (u_char *) data->v, data->l)) {
+- OpenSSL_BUG();
+- vfree(res);
+- return NULL;
+- }
++ if (!EVP_Cipher(ctx, (u_char *) res->v, (u_char *) data->v, data->l))
++ goto out;
+
+- EVP_CIPHER_CTX_cleanup(&ctx);
++ EVP_CIPHER_CTX_free(ctx);
+
+ return res;
++out:
++ EVP_CIPHER_CTX_free(ctx);
++ OpenSSL_BUG();
++ vfree(res);
++ return NULL;
+ }
+
+ int
+@@ -1230,7 +1229,7 @@ eay_des_keylen(len)
+ return evp_keylen(len, EVP_des_cbc());
+ }
+
+-#ifdef HAVE_OPENSSL_IDEA_H
++#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA)
+ /*
+ * IDEA-CBC
+ */
+@@ -1587,7 +1586,7 @@ eay_aes_keylen(len)
+ return len;
+ }
+
+-#if defined(HAVE_OPENSSL_CAMELLIA_H)
++#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA)
+ /*
+ * CAMELLIA-CBC
+ */
+@@ -1680,9 +1679,9 @@ eay_hmac_init(key, md)
+ vchar_t *key;
+ const EVP_MD *md;
+ {
+- HMAC_CTX *c = racoon_malloc(sizeof(*c));
++ HMAC_CTX *c = HMAC_CTX_new();
+
+- HMAC_Init(c, key->v, key->l, md);
++ HMAC_Init_ex(c, key->v, key->l, md, NULL);
+
+ return (caddr_t)c;
+ }
+@@ -1761,8 +1760,7 @@ eay_hmacsha2_512_final(c)
+
+ HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
+ res->l = l;
+- HMAC_cleanup((HMAC_CTX *)c);
+- (void)racoon_free(c);
++ HMAC_CTX_free((HMAC_CTX *)c);
+
+ if (SHA512_DIGEST_LENGTH != res->l) {
+ plog(LLV_ERROR, LOCATION, NULL,
+@@ -1811,8 +1809,7 @@ eay_hmacsha2_384_final(c)
+
+ HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
+ res->l = l;
+- HMAC_cleanup((HMAC_CTX *)c);
+- (void)racoon_free(c);
++ HMAC_CTX_free((HMAC_CTX *)c);
+
+ if (SHA384_DIGEST_LENGTH != res->l) {
+ plog(LLV_ERROR, LOCATION, NULL,
+@@ -1861,8 +1858,7 @@ eay_hmacsha2_256_final(c)
+
+ HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
+ res->l = l;
+- HMAC_cleanup((HMAC_CTX *)c);
+- (void)racoon_free(c);
++ HMAC_CTX_free((HMAC_CTX *)c);
+
+ if (SHA256_DIGEST_LENGTH != res->l) {
+ plog(LLV_ERROR, LOCATION, NULL,
+@@ -1912,8 +1908,7 @@ eay_hmacsha1_final(c)
+
+ HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
+ res->l = l;
+- HMAC_cleanup((HMAC_CTX *)c);
+- (void)racoon_free(c);
++ HMAC_CTX_free((HMAC_CTX *)c);
+
+ if (SHA_DIGEST_LENGTH != res->l) {
+ plog(LLV_ERROR, LOCATION, NULL,
+@@ -1962,8 +1957,7 @@ eay_hmacmd5_final(c)
+
+ HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
+ res->l = l;
+- HMAC_cleanup((HMAC_CTX *)c);
+- (void)racoon_free(c);
++ HMAC_CTX_free((HMAC_CTX *)c);
+
+ if (MD5_DIGEST_LENGTH != res->l) {
+ plog(LLV_ERROR, LOCATION, NULL,
+@@ -2266,6 +2260,7 @@ eay_dh_generate(prime, g, publen, pub, priv)
+ u_int32_t g;
+ {
+ BIGNUM *p = NULL;
++ BIGNUM *BNg = NULL;
+ DH *dh = NULL;
+ int error = -1;
+
+@@ -2276,25 +2271,28 @@ eay_dh_generate(prime, g, publen, pub, priv)
+
+ if ((dh = DH_new()) == NULL)
+ goto end;
+- dh->p = p;
+- p = NULL; /* p is now part of dh structure */
+- dh->g = NULL;
+- if ((dh->g = BN_new()) == NULL)
++ if ((BNg = BN_new()) == NULL)
+ goto end;
+- if (!BN_set_word(dh->g, g))
++ if (!BN_set_word(BNg, g))
+ goto end;
++ if (! DH_set0_pqg(dh, p, NULL, BNg))
++ goto end;
++ BNg = NULL;
++ p = NULL; /* p is now part of dh structure */
+
+ if (publen != 0)
+- dh->length = publen;
++ DH_set_length(dh, publen);
+
+ /* generate public and private number */
+ if (!DH_generate_key(dh))
+ goto end;
+
+ /* copy results to buffers */
+- if (eay_bn2v(pub, dh->pub_key) < 0)
++ BIGNUM *pub_key, *priv_key;
++ DH_get0_key(dh, (const BIGNUM**) &pub_key, (const BIGNUM**) &priv_key);
++ if (eay_bn2v(pub, pub_key) < 0)
+ goto end;
+- if (eay_bn2v(priv, dh->priv_key) < 0) {
++ if (eay_bn2v(priv, priv_key) < 0) {
+ vfree(*pub);
+ goto end;
+ }
+@@ -2306,6 +2304,8 @@ end:
+ DH_free(dh);
+ if (p != 0)
+ BN_free(p);
++ if (BNg != 0)
++ BN_free(BNg);
+ return(error);
+ }
+
+@@ -2319,6 +2319,10 @@ eay_dh_compute(prime, g, pub, priv, pub2, key)
+ int l;
+ unsigned char *v = NULL;
+ int error = -1;
++ BIGNUM *p = BN_new();
++ BIGNUM *BNg = BN_new();
++ BIGNUM *pub_key = BN_new();
++ BIGNUM *priv_key = BN_new();
+
+ /* make public number to compute */
+ if (eay_v2bn(&dh_pub, pub2) < 0)
+@@ -2327,19 +2331,21 @@ eay_dh_compute(prime, g, pub, priv, pub2, key)
+ /* make DH structure */
+ if ((dh = DH_new()) == NULL)
+ goto end;
+- if (eay_v2bn(&dh->p, prime) < 0)
++ if (p == NULL || BNg == NULL || pub_key == NULL || priv_key == NULL)
+ goto end;
+- if (eay_v2bn(&dh->pub_key, pub) < 0)
++
++ if (eay_v2bn(&p, prime) < 0)
+ goto end;
+- if (eay_v2bn(&dh->priv_key, priv) < 0)
++ if (eay_v2bn(&pub_key, pub) < 0)
+ goto end;
+- dh->length = pub2->l * 8;
+-
+- dh->g = NULL;
+- if ((dh->g = BN_new()) == NULL)
++ if (eay_v2bn(&priv_key, priv) < 0)
+ goto end;
+- if (!BN_set_word(dh->g, g))
++ if (!BN_set_word(BNg, g))
+ goto end;
++ DH_set0_key(dh, pub_key, priv_key);
++ DH_set_length(dh, pub2->l * 8);
++ DH_set0_pqg(dh, p, NULL, BNg);
++ pub_key = priv_key = p = BNg = NULL;
+
+ if ((v = racoon_calloc(prime->l, sizeof(u_char))) == NULL)
+ goto end;
+@@ -2350,6 +2356,14 @@ eay_dh_compute(prime, g, pub, priv, pub2, key)
+ error = 0;
+
+ end:
++ if (p != NULL)
++ BN_free(p);
++ if (BNg != NULL)
++ BN_free(BNg);
++ if (pub_key != NULL)
++ BN_free(pub_key);
++ if (priv_key != NULL)
++ BN_free(priv_key);
+ if (dh_pub != NULL)
+ BN_free(dh_pub);
+ if (dh != NULL)
+@@ -2400,12 +2414,14 @@ eay_bn2v(var, bn)
+ void
+ eay_init()
+ {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ OpenSSL_add_all_algorithms();
+ ERR_load_crypto_strings();
+ #ifdef HAVE_OPENSSL_ENGINE_H
+ ENGINE_load_builtin_engines();
+ ENGINE_register_all_complete();
+ #endif
++#endif
+ }
+
+ vchar_t *
+@@ -2504,8 +2520,7 @@ binbuf_pubkey2rsa(vchar_t *binbuf)
+ goto out;
+ }
+
+- rsa_pub->n = mod;
+- rsa_pub->e = exp;
++ RSA_set0_key(rsa_pub, mod, exp, NULL);
+
+ out:
+ return rsa_pub;
+@@ -2582,5 +2597,5 @@ eay_random()
+ const char *
+ eay_version()
+ {
+- return SSLeay_version(SSLEAY_VERSION);
++ return OpenSSL_version(OPENSSL_VERSION);
+ }
+diff --git a/src/racoon/crypto_openssl.h b/src/racoon/crypto_openssl.h
+index 66fac73..ee5b765 100644
+--- a/src/racoon/crypto_openssl.h
++++ b/src/racoon/crypto_openssl.h
+@@ -124,7 +124,7 @@ extern vchar_t *eay_aes_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
+ extern int eay_aes_weakkey __P((vchar_t *));
+ extern int eay_aes_keylen __P((int));
+
+-#if defined(HAVE_OPENSSL_CAMELLIA_H)
++#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA)
+ /* Camellia */
+ extern vchar_t *eay_camellia_encrypt __P((vchar_t *, vchar_t *, vchar_t *));
+ extern vchar_t *eay_camellia_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
+diff --git a/src/racoon/eaytest.c b/src/racoon/eaytest.c
+index 1474bdc..ae09db3 100644
+--- a/src/racoon/eaytest.c
++++ b/src/racoon/eaytest.c
+@@ -62,6 +62,7 @@
+ #include "dhgroup.h"
+ #include "crypto_openssl.h"
+ #include "gnuc.h"
++#include "openssl_compat.h"
+
+ #include "package_version.h"
+
+@@ -103,7 +104,7 @@ rsa_verify_with_pubkey(src, sig, pubkey_txt)
+ printf ("PEM_read_PUBKEY(): %s\n", eay_strerror());
+ return -1;
+ }
+- error = eay_check_rsasign(src, sig, evp->pkey.rsa);
++ error = eay_check_rsasign(src, sig, EVP_PKEY_get0_RSA(evp));
+
+ return error;
+ }
+@@ -698,7 +699,7 @@ ciphertest(ac, av)
+ eay_cast_encrypt, eay_cast_decrypt) < 0)
+ return -1;
+
+-#ifdef HAVE_OPENSSL_IDEA_H
++#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA)
+ if (ciphertest_1 ("IDEA",
+ &data, 8,
+ &key, key.l,
+@@ -715,7 +716,7 @@ ciphertest(ac, av)
+ eay_rc5_encrypt, eay_rc5_decrypt) < 0)
+ return -1;
+ #endif
+-#if defined(HAVE_OPENSSL_CAMELLIA_H)
++#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA)
+ if (ciphertest_1 ("CAMELLIA",
+ &data, 16,
+ &key, key.l,
+diff --git a/src/racoon/ipsec_doi.c b/src/racoon/ipsec_doi.c
+index 84a4c71..b52469f 100644
+--- a/src/racoon/ipsec_doi.c
++++ b/src/racoon/ipsec_doi.c
+@@ -715,7 +715,7 @@ out:
+ /* key length must not be specified on some algorithms */
+ if (keylen) {
+ if (sa->enctype == OAKLEY_ATTR_ENC_ALG_DES
+-#ifdef HAVE_OPENSSL_IDEA_H
++#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA)
+ || sa->enctype == OAKLEY_ATTR_ENC_ALG_IDEA
+ #endif
+ || sa->enctype == OAKLEY_ATTR_ENC_ALG_3DES) {
+diff --git a/src/racoon/openssl_compat.c b/src/racoon/openssl_compat.c
+new file mode 100644
+index 0000000..864b5fb
+--- /dev/null
++++ b/src/racoon/openssl_compat.c
+@@ -0,0 +1,213 @@
++/*
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
++ *
++ * Licensed under the OpenSSL license (the "License"). You may not use
++ * this file except in compliance with the License. You can obtain a copy
++ * in the file LICENSE in the source distribution or at
++ * https://www.openssl.org/source/license.html
++ */
++
++#include "openssl_compat.h"
++
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++
++#include <string.h>
++
++static void *OPENSSL_zalloc(size_t num)
++{
++ void *ret = OPENSSL_malloc(num);
++
++ if (ret != NULL)
++ memset(ret, 0, num);
++ return ret;
++}
++
++int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
++{
++ /* If the fields n and e in r are NULL, the corresponding input
++ * parameters MUST be non-NULL for n and e. d may be
++ * left NULL (in case only the public key is used).
++ */
++ if ((r->n == NULL && n == NULL)
++ || (r->e == NULL && e == NULL))
++ return 0;
++
++ if (n != NULL) {
++ BN_free(r->n);
++ r->n = n;
++ }
++ if (e != NULL) {
++ BN_free(r->e);
++ r->e = e;
++ }
++ if (d != NULL) {
++ BN_free(r->d);
++ r->d = d;
++ }
++
++ return 1;
++}
++
++int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q)
++{
++ /* If the fields p and q in r are NULL, the corresponding input
++ * parameters MUST be non-NULL.
++ */
++ if ((r->p == NULL && p == NULL)
++ || (r->q == NULL && q == NULL))
++ return 0;
++
++ if (p != NULL) {
++ BN_free(r->p);
++ r->p = p;
++ }
++ if (q != NULL) {
++ BN_free(r->q);
++ r->q = q;
++ }
++
++ return 1;
++}
++
++int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
++{
++ /* If the fields dmp1, dmq1 and iqmp in r are NULL, the corresponding input
++ * parameters MUST be non-NULL.
++ */
++ if ((r->dmp1 == NULL && dmp1 == NULL)
++ || (r->dmq1 == NULL && dmq1 == NULL)
++ || (r->iqmp == NULL && iqmp == NULL))
++ return 0;
++
++ if (dmp1 != NULL) {
++ BN_free(r->dmp1);
++ r->dmp1 = dmp1;
++ }
++ if (dmq1 != NULL) {
++ BN_free(r->dmq1);
++ r->dmq1 = dmq1;
++ }
++ if (iqmp != NULL) {
++ BN_free(r->iqmp);
++ r->iqmp = iqmp;
++ }
++
++ return 1;
++}
++
++void RSA_get0_key(const RSA *r,
++ const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
++{
++ if (n != NULL)
++ *n = r->n;
++ if (e != NULL)
++ *e = r->e;
++ if (d != NULL)
++ *d = r->d;
++}
++
++void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q)
++{
++ if (p != NULL)
++ *p = r->p;
++ if (q != NULL)
++ *q = r->q;
++}
++
++void RSA_get0_crt_params(const RSA *r,
++ const BIGNUM **dmp1, const BIGNUM **dmq1,
++ const BIGNUM **iqmp)
++{
++ if (dmp1 != NULL)
++ *dmp1 = r->dmp1;
++ if (dmq1 != NULL)
++ *dmq1 = r->dmq1;
++ if (iqmp != NULL)
++ *iqmp = r->iqmp;
++}
++
++int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
++{
++ /* If the fields p and g in d are NULL, the corresponding input
++ * parameters MUST be non-NULL. q may remain NULL.
++ */
++ if ((dh->p == NULL && p == NULL)
++ || (dh->g == NULL && g == NULL))
++ return 0;
++
++ if (p != NULL) {
++ BN_free(dh->p);
++ dh->p = p;
++ }
++ if (q != NULL) {
++ BN_free(dh->q);
++ dh->q = q;
++ }
++ if (g != NULL) {
++ BN_free(dh->g);
++ dh->g = g;
++ }
++
++ if (q != NULL) {
++ dh->length = BN_num_bits(q);
++ }
++
++ return 1;
++}
++
++void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key)
++{
++ if (pub_key != NULL)
++ *pub_key = dh->pub_key;
++ if (priv_key != NULL)
++ *priv_key = dh->priv_key;
++}
++
++int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key)
++{
++ /* If the field pub_key in dh is NULL, the corresponding input
++ * parameters MUST be non-NULL. The priv_key field may
++ * be left NULL.
++ */
++ if (dh->pub_key == NULL && pub_key == NULL)
++ return 0;
++
++ if (pub_key != NULL) {
++ BN_free(dh->pub_key);
++ dh->pub_key = pub_key;
++ }
++ if (priv_key != NULL) {
++ BN_free(dh->priv_key);
++ dh->priv_key = priv_key;
++ }
++
++ return 1;
++}
++
++int DH_set_length(DH *dh, long length)
++{
++ dh->length = length;
++ return 1;
++}
++
++HMAC_CTX *HMAC_CTX_new(void)
++{
++ return OPENSSL_zalloc(sizeof(HMAC_CTX));
++}
++
++void HMAC_CTX_free(HMAC_CTX *ctx)
++{
++ HMAC_CTX_cleanup(ctx);
++ OPENSSL_free(ctx);
++}
++
++RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey)
++{
++ if (pkey->type != EVP_PKEY_RSA) {
++ return NULL;
++ }
++ return pkey->pkey.rsa;
++}
++
++
++#endif /* OPENSSL_VERSION_NUMBER */
+diff --git a/src/racoon/openssl_compat.h b/src/racoon/openssl_compat.h
+new file mode 100644
+index 0000000..9e152c2
+--- /dev/null
++++ b/src/racoon/openssl_compat.h
+@@ -0,0 +1,45 @@
++#ifndef OPENSSL_COMPAT_H
++#define OPENSSL_COMPAT_H
++
++#include <openssl/opensslv.h>
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++
++#include <openssl/rsa.h>
++#include <openssl/dh.h>
++#include <openssl/evp.h>
++#include <openssl/hmac.h>
++
++int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d);
++int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q);
++int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp);
++void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d);
++void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q);
++void RSA_get0_crt_params(const RSA *r, const BIGNUM **dmp1, const BIGNUM **dmq1, const BIGNUM **iqmp);
++
++int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
++void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key);
++int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key);
++int DH_set_length(DH *dh, long length);
++
++HMAC_CTX *HMAC_CTX_new(void);
++void HMAC_CTX_free(HMAC_CTX* ctx);
++
++RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey);
++
++#define ASN1_STRING_length(s) s->length
++#define ASN1_STRING_get0_data(s) s->data
++
++#define X509_get_subject_name(x) x->cert_info->subject
++#define X509_get_issuer_name(x) x->cert_info->issuer
++#define X509_NAME_ENTRY_get_data(n) n->value
++#define X509_NAME_ENTRY_get_object(n) n->object
++#define X509_STORE_CTX_get_current_cert(ctx) ctx->current_cert
++#define X509_STORE_CTX_get_error(ctx) ctx->error
++#define X509_STORE_CTX_get_error_depth(ctx) ctx->error_depth
++
++#define OPENSSL_VERSION SSLEAY_VERSION
++#define OpenSSL_version SSLeay_version
++
++#endif /* OPENSSL_VERSION_NUMBER */
++
++#endif /* OPENSSL_COMPAT_H */
+diff --git a/src/racoon/plainrsa-gen.c b/src/racoon/plainrsa-gen.c
+index cad1861..b949b08 100644
+--- a/src/racoon/plainrsa-gen.c
++++ b/src/racoon/plainrsa-gen.c
+@@ -60,6 +60,7 @@
+ #include "vmbuf.h"
+ #include "plog.h"
+ #include "crypto_openssl.h"
++#include "openssl_compat.h"
+
+ #include "package_version.h"
+
+@@ -90,12 +91,14 @@ mix_b64_pubkey(const RSA *key)
+ char *binbuf;
+ long binlen, ret;
+ vchar_t *res;
+-
+- binlen = 1 + BN_num_bytes(key->e) + BN_num_bytes(key->n);
++ const BIGNUM *e, *n;
++
++ RSA_get0_key(key, &n, &e, NULL);
++ binlen = 1 + BN_num_bytes(e) + BN_num_bytes(n);
+ binbuf = malloc(binlen);
+ memset(binbuf, 0, binlen);
+- binbuf[0] = BN_bn2bin(key->e, (unsigned char *) &binbuf[1]);
+- ret = BN_bn2bin(key->n, (unsigned char *) (&binbuf[binbuf[0] + 1]));
++ binbuf[0] = BN_bn2bin(e, (unsigned char *) &binbuf[1]);
++ ret = BN_bn2bin(n, (unsigned char *) (&binbuf[binbuf[0] + 1]));
+ if (1 + binbuf[0] + ret != binlen) {
+ plog(LLV_ERROR, LOCATION, NULL,
+ "Pubkey generation failed. This is really strange...\n");
+@@ -131,16 +134,20 @@ print_rsa_key(FILE *fp, const RSA *key)
+
+ fprintf(fp, "# : PUB 0s%s\n", pubkey64->v);
+ fprintf(fp, ": RSA\t{\n");
+- fprintf(fp, "\t# RSA %d bits\n", BN_num_bits(key->n));
++ const BIGNUM *n, *e, *d, *p, *q, *dmp1, *dmq1, *iqmp;
++ RSA_get0_key(key, &n, &e, &d);
++ RSA_get0_factors(key, &p, &q);
++ RSA_get0_crt_params(key, &dmp1, &dmq1, &iqmp);
++ fprintf(fp, "\t# RSA %d bits\n", BN_num_bits(n));
+ fprintf(fp, "\t# pubkey=0s%s\n", pubkey64->v);
+- fprintf(fp, "\tModulus: 0x%s\n", lowercase(BN_bn2hex(key->n)));
+- fprintf(fp, "\tPublicExponent: 0x%s\n", lowercase(BN_bn2hex(key->e)));
+- fprintf(fp, "\tPrivateExponent: 0x%s\n", lowercase(BN_bn2hex(key->d)));
+- fprintf(fp, "\tPrime1: 0x%s\n", lowercase(BN_bn2hex(key->p)));
+- fprintf(fp, "\tPrime2: 0x%s\n", lowercase(BN_bn2hex(key->q)));
+- fprintf(fp, "\tExponent1: 0x%s\n", lowercase(BN_bn2hex(key->dmp1)));
+- fprintf(fp, "\tExponent2: 0x%s\n", lowercase(BN_bn2hex(key->dmq1)));
+- fprintf(fp, "\tCoefficient: 0x%s\n", lowercase(BN_bn2hex(key->iqmp)));
++ fprintf(fp, "\tModulus: 0x%s\n", lowercase(BN_bn2hex(n)));
++ fprintf(fp, "\tPublicExponent: 0x%s\n", lowercase(BN_bn2hex(e)));
++ fprintf(fp, "\tPrivateExponent: 0x%s\n", lowercase(BN_bn2hex(d)));
++ fprintf(fp, "\tPrime1: 0x%s\n", lowercase(BN_bn2hex(p)));
++ fprintf(fp, "\tPrime2: 0x%s\n", lowercase(BN_bn2hex(q)));
++ fprintf(fp, "\tExponent1: 0x%s\n", lowercase(BN_bn2hex(dmp1)));
++ fprintf(fp, "\tExponent2: 0x%s\n", lowercase(BN_bn2hex(dmq1)));
++ fprintf(fp, "\tCoefficient: 0x%s\n", lowercase(BN_bn2hex(iqmp)));
+ fprintf(fp, " }\n");
+
+ vfree(pubkey64);
+@@ -203,11 +210,13 @@ int
+ gen_rsa_key(FILE *fp, size_t bits, unsigned long exp)
+ {
+ int ret;
+- RSA *key;
++ RSA *key = RSA_new();
++ BIGNUM *e = BN_new();
+
+- key = RSA_generate_key(bits, exp, NULL, NULL);
+- if (!key) {
++ BN_set_word(e, exp);
++ if (! RSA_generate_key_ex(key, bits, e, NULL)) {
+ fprintf(stderr, "RSA_generate_key(): %s\n", eay_strerror());
++ RSA_free(key);
+ return -1;
+ }
+
+diff --git a/src/racoon/prsa_par.y b/src/racoon/prsa_par.y
+index 1987e4d..27ce4c6 100644
+--- a/src/racoon/prsa_par.y
++++ b/src/racoon/prsa_par.y
+@@ -68,6 +68,7 @@
+ #include "isakmp_var.h"
+ #include "handler.h"
+ #include "crypto_openssl.h"
++#include "openssl_compat.h"
+ #include "sockmisc.h"
+ #include "rsalist.h"
+
+@@ -85,7 +86,18 @@ char *prsa_cur_fname = NULL;
+ struct genlist *prsa_cur_list = NULL;
+ enum rsa_key_type prsa_cur_type = RSA_TYPE_ANY;
+
+-static RSA *rsa_cur;
++struct my_rsa_st {
++ BIGNUM *n;
++ BIGNUM *e;
++ BIGNUM *d;
++ BIGNUM *p;
++ BIGNUM *q;
++ BIGNUM *dmp1;
++ BIGNUM *dmq1;
++ BIGNUM *iqmp;
++};
++
++static struct my_rsa_st *rsa_cur;
+
+ void
+ prsaerror(const char *s, ...)
+@@ -201,8 +213,12 @@ rsa_statement:
+ rsa_cur->iqmp = NULL;
+ }
+ }
+- $$ = rsa_cur;
+- rsa_cur = RSA_new();
++ RSA * rsa_tmp = RSA_new();
++ RSA_set0_key(rsa_tmp, rsa_cur->n, rsa_cur->e, rsa_cur->d);
++ RSA_set0_factors(rsa_tmp, rsa_cur->p, rsa_cur->q);
++ RSA_set0_crt_params(rsa_tmp, rsa_cur->dmp1, rsa_cur->dmq1, rsa_cur->iqmp);
++ $$ = rsa_tmp;
++ memset(rsa_cur, 0, sizeof(struct my_rsa_st));
+ }
+ | TAG_PUB BASE64
+ {
+@@ -351,10 +367,12 @@ prsa_parse_file(struct genlist *list, char *fname, enum rsa_key_type type)
+ prsa_cur_fname = fname;
+ prsa_cur_list = list;
+ prsa_cur_type = type;
+- rsa_cur = RSA_new();
++ rsa_cur = malloc(sizeof(struct my_rsa_st));
++ memset(rsa_cur, 0, sizeof(struct my_rsa_st));
+ ret = prsaparse();
+ if (rsa_cur) {
+- RSA_free(rsa_cur);
++ memset(rsa_cur, 0, sizeof(struct my_rsa_st));
++ free(rsa_cur);
+ rsa_cur = NULL;
+ }
+ fclose (fp);
+diff --git a/src/racoon/rsalist.c b/src/racoon/rsalist.c
+index f152c82..96e8363 100644
+--- a/src/racoon/rsalist.c
++++ b/src/racoon/rsalist.c
+@@ -52,6 +52,7 @@
+ #include "genlist.h"
+ #include "remoteconf.h"
+ #include "crypto_openssl.h"
++#include "openssl_compat.h"
+
+ #ifndef LIST_FIRST
+ #define LIST_FIRST(head) ((head)->lh_first)
+@@ -98,7 +99,9 @@ rsa_key_dup(struct rsa_key *key)
+ return NULL;
+
+ if (key->rsa) {
+- new->rsa = key->rsa->d != NULL ? RSAPrivateKey_dup(key->rsa) : RSAPublicKey_dup(key->rsa);
++ const BIGNUM *d;
++ RSA_get0_key(key->rsa, NULL, NULL, &d);
++ new->rsa = (d != NULL ? RSAPrivateKey_dup(key->rsa) : RSAPublicKey_dup(key->rsa));
+ if (new->rsa == NULL)
+ goto dup_error;
+ }
+--
+2.16.1
+
include $(TOPDIR)/rules.mk
PKG_NAME:=mtr
-PKG_REV:=dd2b75080bc5406ba0b438953b36b72204ba114b
-PKG_VERSION:=0.85+newdns-$(PKG_REV)
-PKG_RELEASE:=2
+PKG_VERSION:=0.92
+PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/traviscross/mtr.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=4911c96ee4b3c31692664a845dccddabdfef107646d4861b21fd4053bd2b76e8
+PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/traviscross/mtr/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=568a52911a8933496e60c88ac6fea12379469d7943feb9223f4337903e4bc164
PKG_LICENSE:=GPL-2.0+
PKG_LICENSE_FILES:=COPYING
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
PKG_FIXUP:=autoreconf
DEPENDS:=+libncurses
TITLE:=Full screen ncurses traceroute tool
URL:=http://www.bitwizard.nl/mtr/
- PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
endef
define Package/mtr/description
+++ /dev/null
---- a/net.c
-+++ b/net.c
-@@ -307,9 +307,11 @@ void net_send_tcp(int index)
- struct sockaddr_storage local;
- struct sockaddr_storage remote;
- struct sockaddr_in *local4 = (struct sockaddr_in *) &local;
-- struct sockaddr_in6 *local6 = (struct sockaddr_in6 *) &local;
- struct sockaddr_in *remote4 = (struct sockaddr_in *) &remote;
-+#ifdef ENABLE_IPV6
-+ struct sockaddr_in6 *local6 = (struct sockaddr_in6 *) &local;
- struct sockaddr_in6 *remote6 = (struct sockaddr_in6 *) &remote;
-+#endif
- socklen_t len;
-
- ttl = index + 1;
-@@ -566,8 +568,10 @@ void net_send_query(int index)
-
- /* sendto() assumes packet length includes the IPv4 header but not the
- IPv6 header. */
-- spacketsize = abs(packetsize) -
-- ( ( af == AF_INET ) ? 0 : sizeof (struct ip6_hdr) );
-+ spacketsize = abs(packetsize);
-+#ifdef ENABLE_IPV6
-+ spacketsize -= ( ( af == AF_INET ) ? 0 : sizeof (struct ip6_hdr) );
-+#endif
- rv = sendto(sendsock, packet, spacketsize, 0, remotesockaddr, salen);
- if (first && (rv < 0) && ((errno == EINVAL) || (errno == EMSGSIZE))) {
- /* Try the first packet again using host byte order. */
---- a/dns.c
-+++ b/dns.c
-@@ -49,7 +49,7 @@
- #include <unistd.h>
- #include <fcntl.h>
- //#include <ctype.h>
--//#include <string.h>
-+#include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <signal.h>
---- a/net.h
-+++ b/net.h
-@@ -20,6 +20,7 @@
- #include <netdb.h>
- #include <arpa/inet.h>
- #include <netinet/in.h>
-+#include <sys/select.h>
- #include <sys/socket.h>
- #ifdef ENABLE_IPV6
- #include <netinet/ip6.h>
prompt "Enable HTTP secure link module"
default n
+config NGINX_HTTP_SUB
+ bool
+ prompt "Enable HTTP sub module"
+ default n
+
config NGINX_HEADERS_MORE
bool
prompt "Enable Headers_more module"
bool
prompt "Enable HTTP secure link module"
default n
+
+config NGINX_HTTP_SUB
+ bool
+ prompt "Enable HTTP sub module"
+ default n
config NGINX_HEADERS_MORE
bool
PKG_NAME:=nginx
PKG_VERSION:=1.15.1
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE:=nginx-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://nginx.org/download/
TITLE += with SSL support
DEPENDS +=+libopenssl
VARIANT:=ssl
+ PROVIDES:=nginx
endef
Package/nginx-ssl/description = $(Package/nginx/description) \
TITLE += with ALL module selected
DEPENDS:=+libpcre +libopenssl +zlib +liblua +libpthread
VARIANT:=all-module
+ PROVIDES:=nginx
endef
Package/nginx-all-module/description = $(Package/nginx/description) \
ifeq ($(CONFIG_NGINX_HTTP_SECURE_LINK),y)
ADDITIONAL_MODULES += --with-http_secure_link_module
endif
+ ifeq ($(CONFIG_NGINX_HTTP_SUB),y)
+ ADDITIONAL_MODULES += --with-http_sub_module
+ endif
ifeq ($(CONFIG_NGINX_HEADERS_MORE),y)
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-headers-more
endif
ADDITIONAL_MODULES += --with-http_ssl_module --add-module=$(PKG_BUILD_DIR)/nginx-naxsi/naxsi_src \
--add-module=$(PKG_BUILD_DIR)/lua-nginx --with-ipv6 --with-http_stub_status_module --with-http_flv_module \
--with-http_dav_module --with-http_auth_request_module --with-http_v2_module --with-http_realip_module \
- --with-http_secure_link_module --add-module=$(PKG_BUILD_DIR)/nginx-headers-more \
+ --with-http_secure_link_module --with-http_sub_module --add-module=$(PKG_BUILD_DIR)/nginx-headers-more \
--add-module=$(PKG_BUILD_DIR)/nginx-brotli --add-module=$(PKG_BUILD_DIR)/nginx-rtmp \
--add-module=$(PKG_BUILD_DIR)/nginx-ts
config_files += koi-utf koi-win win-utf fastcgi_params
#!/bin/sh
if [ -f "/etc/nginx/luci_nginx.conf" ] && [ -f "/etc/nginx/nginx.conf" ]; then
- if [ ! "$(cat '/etc/nginx/nginx.conf' | grep -q 'luci_uwsgi.conf')" ]; then
+ if [ ! "$(cat '/etc/nginx/nginx.conf' | grep 'luci_uwsgi.conf')" ]; then
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf_old
mv /etc/nginx/luci_nginx.conf /etc/nginx/nginx.conf
core_number=$(grep -c ^processor /proc/cpuinfo)
else
/etc/init.d/uwsgi start
fi
+ else
+ rm /etc/nginx/luci_nginx.conf
fi
fi
if [ -f "/etc/nginx/luci_nginx_ssl.conf" ] && [ -f "/etc/nginx/nginx.conf" ]; then
- if [ ! "$(cat '/etc/nginx/nginx.conf' | grep -q 'return 301 https://$host$request_uri;')" ]; then
+ if [ ! "$(cat '/etc/nginx/nginx.conf' | grep 'return 301 https://$host$request_uri;')" ]; then
if [ -f "/etc/nginx/nginx.conf_old" ]; then
rm /etc/nginx/nginx.conf
else
else
/etc/init.d/nginx start
fi
+ else
+ rm /etc/nginx/luci_nginx_ssl.conf
fi
fi
-user root;
+user nobody nogroup;
worker_processes 1;
#error_log logs/error.log;
include $(TOPDIR)/rules.mk
PKG_NAME:=rtorrent
-PKG_VERSION:=0.9.6-git-1
-PKG_RELEASE=$(PKG_SOURCE_VERSION)
+PKG_VERSION:=0.9.7
+PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/rakshasa/rtorrent.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=62cb5a4605c0664bc522e0e0da9c72f09cf643a9
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=3c6834b12ebfa8d62618f6e9dbc06dfa593861fa0b435d2fd1bddb0e886fc77b
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/rakshasa/rtorrent/releases/download/v$(PKG_VERSION)
+PKG_HASH:=5d9842fe48c9582fbea2c7bf9f51412c1ccbba07d059b257039ad53b863fe8bb
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
TITLE:=BitTorrent client for ncurses
URL:=http://libtorrent.rakshasa.no/
DEPENDS:=+libcurl +libtorrent +libncursesw +libsigcxx +libpthread
- MAINTAINER:=Peter Wagner <tripolar@gmx.at>
+ MAINTAINER:=Rosen Penev <rosenp@gmail.com>
endef
define Package/rtorrent/Default/description
---- a/configure.ac
-+++ b/configure.ac
-@@ -4,7 +4,6 @@ AC_DEFINE(API_VERSION, 9, api version)
-
- AM_INIT_AUTOMAKE
- AC_CONFIG_HEADERS(config.h)
--AM_PATH_CPPUNIT(1.9.6)
-
- AC_PROG_CXX
- AC_PROG_LIBTOOL
--- a/scripts/common.m4
+++ b/scripts/common.m4
@@ -153,7 +153,7 @@ dnl Need to fix this so that it uses t
- Canvas(int x = 0, int y = 0, int width = 0, int height = 0);
+ Canvas(int x = 0, int y = 0, int width = 1, int height = 1);
- ~Canvas() { delwin(m_window); }
+ ~Canvas() { if (!m_isDaemon) { delwin(m_window); } }
- void refresh() { wnoutrefresh(m_window); }
+ void refresh() { if (!m_isDaemon) { wnoutrefresh(m_window); } }
-# Copyright (c) 2017 Stan Grishin (stangri@melmac.net)
+# Copyright 2017-2018 Stan Grishin (stangri@melmac.net)
+# TLD optimization written by Dirk Brenken (dev@brenken.org)
# This is free software, licensed under the GNU General Public License v3.
include $(TOPDIR)/rules.mk
PKG_NAME:=simple-adblock
-PKG_VERSION:=1.5.8
-PKG_RELEASE:=1
+PKG_VERSION:=1.6.3
+PKG_RELEASE:=5
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
include $(INCLUDE_DIR)/package.mk
-define Package/$(PKG_NAME)
+define Package/simple-adblock
SECTION:=net
CATEGORY:=Network
TITLE:=Simple AdBlock Service
PKGARCH:=all
endef
-define Package/$(PKG_NAME)/description
+define Package/simple-adblock/description
This service provides dnsmasq-based ad blocking.
Please see the README for further information.
endef
-define Package/$(PKG_NAME)/conffiles
+define Package/simple-adblock/conffiles
/etc/config/simple-adblock
endef
define Build/Compile
endef
-define Package/$(PKG_NAME)/install
+define Package/simple-adblock/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/simple-adblock.init $(1)/etc/init.d/simple-adblock
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/simple-adblock.conf $(1)/etc/config/simple-adblock
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
+ $(INSTALL_BIN) ./files/simple-adblock.hotplug $(1)/etc/hotplug.d/iface/80-simple-adblock
endef
-define Package/$(PKG_NAME)/prerm
+define Package/simple-adblock/postinst
#!/bin/sh
# check if we are on real system
if [ -z "$${IPKG_INSTROOT}" ]; then
+ /etc/init.d/simple-adblock enable
+ while uci -q del ucitrack.@simple-adblock[-1]; do :; done
+ uci -q batch <<-EOF >/dev/null
+ add ucitrack simple-adblock
+ set ucitrack.@simple-adblock[0].init='simple-adblock'
+ commit ucitrack
+ EOF
+ fi
+ exit 0
+endef
+
+define Package/simple-adblock/prerm
+ #!/bin/sh
+ # check if we are on real system
+ if [ -z "$${IPKG_INSTROOT}" ]; then
+ while uci -q del ucitrack.@simple-adblock[-1]; do :; done
echo "Stopping service and removing rc.d symlink for simple-adblock"
/etc/init.d/simple-adblock stop || true
/etc/init.d/simple-adblock killcache || true
- /etc/init.d/simple-adblock disable
+ /etc/init.d/simple-adblock disable || true
fi
exit 0
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,simple-adblock))
## Screenshot (luci-app-simple-adblock)
-![screenshot](https://raw.githubusercontent.com/stangri/screenshots/master/simple-adblock/screenshot04.png "screenshot")
+![screenshot](https://raw.githubusercontent.com/stangri/openwrt_packages/master/screenshots/simple-adblock/screenshot06.png "screenshot")
## Requirements
## How to install
-Install ```simple-adblock``` and ```luci-app-simple-adblock``` packages from Web UI or run the following in the command line:
+Install ```simple-adblock``` and ```luci-app-simple-adblock``` packages from Web UI or run the following in the command line:
```sh
opkg update; opkg install simple-adblock luci-app-simple-adblock
```
-If ```simple-adblock``` and ```luci-app-simple-adblock``` packages are not found in the official feed/repo for your version of OpenWrt/LEDE Project, you will need to [add a custom repo to your router](#add-custom-repo-to-your-router) first.
+If ```simple-adblock``` and ```luci-app-simple-adblock``` packages are not found in the official feed/repo for your version of OpenWrt/LEDE Project, you will need to [add a custom repo to your router](#add-custom-repo-to-your-router) first.
#### Add custom repo to your router
###### OpenWrt 15.05.1
```sh
opkg update; opkg install ca-certificates wget libopenssl
-echo -e -n 'untrusted comment: public key 7ffc7517c4cc0c56\nRWR//HUXxMwMVnx7fESOKO7x8XoW4/dRidJPjt91hAAU2L59mYvHy0Fa\n' > /tmp/stangri-repo.pub && opkg-key add /tmp/stangri-repo.pub
+echo -e -n 'untrusted comment: LEDE usign key of Stan Grishin\nRWR//HUXxMwMVnx7fESOKO7x8XoW4/dRidJPjt91hAAU2L59mYvHy0Fa\n' > /tmp/stangri-repo.pub && opkg-key add /tmp/stangri-repo.pub
! grep -q 'stangri_repo' /etc/opkg/customfeeds.conf && echo 'src/gz stangri_repo https://raw.githubusercontent.com/stangri/openwrt-repo/master' >> /etc/opkg/customfeeds.conf
opkg update
```
###### LEDE Project and OpenWrt 18.xx or later
```sh
-opkg update; opkg install uclient-fetch libustream-mbedtls
-echo -e -n 'untrusted comment: public key 7ffc7517c4cc0c56\nRWR//HUXxMwMVnx7fESOKO7x8XoW4/dRidJPjt91hAAU2L59mYvHy0Fa\n' > /tmp/stangri-repo.pub && opkg-key add /tmp/stangri-repo.pub
+opkg update
+opkg list-installed | grep -q uclient-fetch || opkg install uclient-fetch
+opkg list-installed | grep -q libustream || opkg install libustream-mbedtls
+echo -e -n 'untrusted comment: LEDE usign key of Stan Grishin\nRWR//HUXxMwMVnx7fESOKO7x8XoW4/dRidJPjt91hAAU2L59mYvHy0Fa\n' > /tmp/stangri-repo.pub && opkg-key add /tmp/stangri-repo.pub
! grep -q 'stangri_repo' /etc/opkg/customfeeds.conf && echo 'src/gz stangri_repo https://raw.githubusercontent.com/stangri/openwrt-repo/master' >> /etc/opkg/customfeeds.conf
opkg update
```
In general, whatever domain is specified to be whitelisted; it, along with with its subdomains will be whitelisted, but not any fake domains containing it.
## Documentation / Discussion
-Please head to [OpenWrt Forum](https://forum.openwrt.org/viewtopic.php?pid=307950) or [LEDE Project Forum](https://forum.lede-project.org/t/simple-adblock-fast-lean-and-fully-uci-luci-configurable-adblocking/1327/) for discussion of this package.
+Please head [LEDE Project Forum](https://forum.lede-project.org/t/simple-adblock-fast-lean-and-fully-uci-luci-configurable-adblocking/1327/) for discussion of this package.
## What's New
1.5.8:
list blacklist_hosts_url 'http://www.malwaredomainlist.com/hostslist/hosts.txt'
list blacklist_hosts_url 'https://adaway.org/hosts.txt'
list blacklist_hosts_url 'http://someonewhocares.org/hosts/hosts'
+ list blacklist_hosts_url 'https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/hosts.txt'
list blacklist_hosts_url 'https://zeustracker.abuse.ch/blocklist.php?download=hostfile'
list blacklist_domains_url 'http://mirror1.malwaredomains.com/files/justdomains'
list blacklist_domains_url 'https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt'
--- /dev/null
+#!/bin/sh
+
+if [[ "$ACTION" == "ifup" ]]; then
+ sleep 10 && /etc/init.d/simple-adblock start &
+fi
#!/bin/sh /etc/rc.common
+# TLD optimization written by Dirk Brenken (dev@brenken.org)
PKG_VERSION=
export START=94
export USE_PROCD=1
-readonly A_TMP='/var/hosts.allowed.tmp'
-readonly B_TMP='/var/hosts.blocked.tmp'
-readonly T_TMP='/var/simple-adblock.hosts'
-readonly dl='wget --no-check-certificate -qO-'
+readonly packageName='simple-adblock'
+readonly serviceName="$packageName $PKG_VERSION"
+readonly PID="/var/run/${packageName}.pid"
+readonly dnsmasqFile="/var/dnsmasq.d/${packageName}"
+export EXTRA_COMMANDS="check killcache"
+export EXTRA_HELP=" check Checks if specified domain is found in current blacklist"
+
+readonly A_TMP='/var/simple-adblock.hosts.a.tmp'
+readonly B_TMP='/var/simple-adblock.hosts.b.tmp'
+readonly CACHE_TMP='/var/simple-adblock.cache'
readonly h_filter='/localhost/d;/^#/d;/^[^0-9]/d;s/^0\.0\.0\.0.//;s/^127\.0\.0\.1.//;s/[[:space:]]*#.*$//;s/[[:cntrl:]]$//;s/[[:space:]]//g;/[`~!@#\$%\^&\*()=+;:"'\'',<>?/\|[{}]/d;/]/d;/\./!d;/^$/d;'
readonly d_filter='/^#/d;s/[[:space:]]*#.*$//;s/[[:space:]]*$//;s/[[:cntrl:]]$//;/[[:space:]]/d;/[`~!@#\$%\^&\*()=+;:"'\'',<>?/\|[{}]/d;/]/d;/\./!d;/^$/d;'
readonly f_filter='s|^|local=/|;s|$|/|'
+readonly checkmark='\xe2\x9c\x93'
+readonly xmark='\xe2\x9c\x97'
readonly _OK_='\033[0;32m\xe2\x9c\x93\033[0m'
readonly _FAIL_='\033[0;31m\xe2\x9c\x97\033[0m'
readonly __OK__='\033[0;32m[\xe2\x9c\x93]\033[0m'
readonly __FAIL__='\033[0;31m[\xe2\x9c\x97]\033[0m'
readonly _ERROR_='\033[0;31mERROR\033[0m'
-export EXTRA_COMMANDS="check killcache"
-export EXTRA_HELP=" check Checks if specified <string> is found in current blacklist"
-
-readonly packageName='simple-adblock'
-readonly serviceName="$packageName $PKG_VERSION"
-ok() { case $verbosity in 1) output "$_OK_";; 2) output "$__OK__\n";; esac; }
-okn() { case $verbosity in 1) output "$_OK_\n";; 2) output "$__OK__\n";; esac; }
-fail() { case $verbosity in 1) output "$_FAIL_";; 2) output "$__FAIL__\n";; esac; }
-failn() { case $verbosity in 1) output "$_FAIL_\n";; 2) output "$__FAIL__\n";; esac; }
-output() { [[ $# -ne 1 ]] && { [[ ! $((verbosity & $1)) -gt 0 ]] && return 0 || shift; }; local msg; msg=$(echo -n "${1/$serviceName /service }" | sed 's|\\033\[[0-9]\?;\?[0-9]\?[0-9]\?m||g'); [[ -t 1 ]] && echo -e -n "$1"; [[ $(echo -e -n "$msg" | wc -l) -gt 0 ]] && logger -t "${packageName:-service} [$$]" "$(echo -e -n ${logmsg}${msg})" && logmsg='' || logmsg=${logmsg}${msg}; }
-led_on(){ [[ -n "$led" && -e "$led/trigger" ]] && echo "default-on" > "$led/trigger"; }
-led_off(){ [[ -n "$led" && -e "$led/trigger" ]] && echo "none" > "$led/trigger"; }
-export serviceEnabled verbosity force_dns debug led wan_if wan_gw wanphysdev hosts_file
+create_lock() { [ -e "$PID" ] && return 1; touch "$PID"; }
+remove_lock() { [ -e "$PID" ] && rm -f "$PID"; rm -f /var/simple-adblock_tmp_* >/dev/null 2>&1; }
+trap remove_lock EXIT
+output_ok() { case $verbosity in 1) output 1 "$_OK_";; 2) output 2 "$__OK__\n";; esac; }
+output_okn() { case $verbosity in 1) output 1 "$_OK_\n";; 2) output 2 "$__OK__\n";; esac; }
+output_fail() { case $verbosity in 1) output 1 "$_FAIL_";; 2) output 2 "$__FAIL__\n";; esac; }
+output_failn() { case $verbosity in 1) output 1 "$_FAIL_\n";; 2) output 2 "$__FAIL__\n";; esac; }
+export logmsg
+output() {
+# Can take a single parameter (text) to be output at any verbosity
+# Or target verbosity level and text to be output at specifc verbosity
+ if [[ $# -ne 1 ]]; then
+ [[ ! $((verbosity & $1)) -gt 0 ]] && return 0 || shift
+ fi
+ [[ -t 1 ]] && echo -e -n "$1" # if we're running in console, echo text
+ # strip text of ASCII control characters and send completed lines to log
+ local msg=$(echo -n "${1/$serviceName /service }" | sed 's|\\033\[[0-9]\?;\?[0-9]\?[0-9]\?m||g');
+ if [[ $(echo -e -n "$msg" | wc -l) -gt 0 ]]; then
+ logger -t "${packageName:-service} [$$]" "$(echo -e -n ${logmsg}${msg})"
+ logmsg=''
+ else
+ logmsg=${logmsg}${msg}
+ fi
+}
+led_on(){ [[ -n "${1}" && -e "${1}/trigger" ]] && echo "default-on" > "${1}/trigger" 2>&1; }
+led_off(){ [[ -n "${1}" && -e "${1}/trigger" ]] && echo "none" > "${1}/trigger" 2>&1; }
+boot() { load_package_config; ( sleep $bootDelay && rc_procd start_service && rc_procd service_triggers | cat & ); }
-boot() { ( sleep 120 && rc_procd start_service && rc_procd service_triggers | cat &); }
+export serviceEnabled verbosity forceDNS debug led wan_if wan_gw wanphysdev bootDelay dl_command serviceStatus
load_package_config() {
config_load "$packageName"
config_get_bool serviceEnabled 'config' 'enabled' 1
- config_get_bool force_dns 'config' 'force_dns' 1
+ config_get_bool forceDNS 'config' 'force_dns' 1
config_get_bool debug 'config' 'debug' 0
+ config_get bootDelay 'config' 'boot_delay' '120'
+ config_get dlTimeout 'config' 'download_timeout' '20'
config_get verbosity 'config' 'verbosity' '2'
- config_get hosts_file 'config' 'hosts_file' "/var/dnsmasq.d/${packageName}"
config_get led 'config' 'led'
- source /lib/functions/network.sh
+ if [ -z "${verbosity##*[!0-9]*}" ] || [ $verbosity -lt 0 ] || [ $verbosity -gt 2 ]; then
+ verbosity=1
+ fi
+ source /lib/functions/network.sh
+ dl_command="wget --no-check-certificate --timeout $dlTimeout -qO-"
+ led="${led:+/sys/class/leds/$led}"
}
is_enabled() {
- local sleepCount=1
- load_package_config
+ local sleepCount=1
+ load_package_config
- if [ "$debug" -ne 0 ]; then
- exec 1>>/tmp/simple-adblock.log
- exec 2>&1
- set -x
+ if [ "$debug" -ne 0 ]; then
+ exec 1>>/tmp/simple-adblock.log
+ exec 2>&1
+ set -x
+ fi
+
+ if [ $serviceEnabled -eq 0 ]; then
+ if [ "$1" == "on_start" ]; then
+ output "$packageName is currently disabled.\n"
+ output "Run the following commands before starting service again:\n"
+ output "uci set $packageName.config.enabled='1'; uci commit;\n"
fi
+ return 1
+ fi
+ network_flush_cache; network_find_wan wan_if; network_get_gateway wan_gw $wan_if;
+ [ -n "$wan_gw" ] && return 0
+ output "$_ERROR_: $serviceName failed to discover WAN gateway.\n"; return 1;
+}
- led="${led:+/sys/class/leds/$led}"
- [ $serviceEnabled -gt 0 ] || return 1
- while : ; do
- network_flush_cache; network_find_wan wan_if; network_get_gateway wan_gw $wan_if;
- [[ $sleepCount -ge 25 || -n "$wan_gw" ]] && break
- output "$serviceName waiting for wan gateway...\n"; sleep 2; let "sleepCount+=1";
- done
- [ -n "$wan_gw" ] && return 0
- output "$_ERROR_: $serviceName failed to discover WAN gateway.\n"; return 1;
+dnsmasq_kill() { killall -q -HUP dnsmasq; }
+dnsmasq_restart() { /etc/init.d/dnsmasq restart >/dev/null 2>&1; }
+reload_dnsmasq() {
+ case $1 in
+ on_start)
+ if [ -s $dnsmasqFile ]; then
+ output 3 'Restarting dnsmasq '
+ if dnsmasq_restart; then
+ led_on "$led"
+ output_okn
+ else
+ output_failn
+ output "$_ERROR_: $serviceName failed to restart dnsmasq!\n"
+ serviceStatus="${serviceStatus:-'DNSMASQ restart error'}"
+ return 1
+ fi
+ else
+ output "$_ERROR_: $serviceName failed to create its data file!\n"
+ serviceStatus="${serviceStatus:-'Failed to create data file'}"
+ return 1
+ fi
+ ;;
+ on_stop)
+ [ -f $dnsmasqFile ] && mv $dnsmasqFile $CACHE_TMP
+ output 3 'Restarting dnsmasq '
+ if dnsmasq_restart; then
+ led_off "$led"
+ output_okn
+ output "$serviceName stopped.\n"
+ return 0
+ else
+ output_failn;
+ output "$_ERROR_: $serviceName failed to restart dnsmasq!\n"
+ return 1
+ fi
+ ;;
+ quiet | *)
+ dnsmasq_restart && return 0 || return 1
+ ;;
+ esac
}
-iptables_destroy() {
- [ $force_dns -eq 0 ] && return 0
- [ -z "$packageName" ] && return 1
- iptables-save | grep -Fv -- "$packageName" | iptables-restore
- lsmod | grep -q ip6table_nat && ip6tables-save | grep -Fv -- "$packageName" | ip6tables-restore
- [ -z "$1" ] && output 'No longer forcing local DNS server.\n'
+ubus_status(){
+ case "$1" in
+ add)
+ ubus_status set "$(ubus_status get)${2}"
+ ;;
+ del | set)
+ ubus call service set "{ \"name\": \"${packageName}\", \"instances\": { \"status\": { \"command\": [ \"\" ], \"data\": { \"status\": \"${2}\" }}}}"
+ # ubus call service set "{ \"name\": \"${packageName}\", \"instances\": { \"status\": { \"data\": { \"status\": \"${2}\" }}}}"
+ ;;
+ get)
+ echo "$(ubus call service list "{\"name\": \"${packageName}\"}" | jsonfilter -l1 -e "@['${packageName}']['instances']['status']['data']['status']")"
+ ;;
+ esac
}
-iptables_create() {
- local ip ipv6 label ipv6wan brname
- network_get_ipaddr ip lan; network_get_ipaddr6 ipv6 lan; network_get_device brname lan; network_get_physdev wanphysdev wan;
- ipv6wan=$(ifconfig $wanphysdev | grep inet6 | awk '{print $3}')
-
- iptables_destroy 'quiet'
- if [ $force_dns -ne 0 ]; then
- [ -n "$ip" ] && iptables -t nat -A prerouting_rule -i $brname -p tcp --dport 53 -j DNAT --to $ip -m comment --comment "$packageName"
- [ -n "$ip" ] && iptables -t nat -A prerouting_rule -i $brname -p udp --dport 53 -j DNAT --to $ip -m comment --comment "$packageName"
- if [[ -n "$ipv6" && -n "$ipv6wan" ]] && lsmod | grep -q ip6table_nat; then
- ip6tables -t nat -A PREROUTING -i $brname -p tcp --dport 53 -j DNAT --to-destination [$ipv6] -m comment --comment "$packageName"
- ip6tables -t nat -A PREROUTING -i $brname -p udp --dport 53 -j DNAT --to-destination [$ipv6] -m comment --comment "$packageName"
- label="$ip/$ipv6"
- else
- label="$ip"
- fi
- if [ -z "$1" ]; then
- if [ -n "$label" ]; then
- output "Forcing local DNS server: $label.\n"
- else
- output "$_ERROR_: $serviceName failed to obtain LAN IP address for DNS forcing!\n"
- fi
- fi
+is_chaos_calmer() { ubus -S call system board | grep -q 'Chaos Calmer'; }
+
+remove_fw3_redirect() {
+ config_get name "$1" 'name'
+ if [[ -n "$name" && "$name" != "${name//simple_adblock}" ]]; then
+ uci -q del "firewall.$1"
fi
}
-stop_adblocking() {
- load_package_config
- [ -f $hosts_file ] && mv $hosts_file $T_TMP
- output 3 "Restarting dnsmasq "
- led_off
- /etc/init.d/dnsmasq restart >/dev/null 2>&1
- if [[ $? -eq 0 ]]; then
- okn; output "$serviceName stopped.\n";
- else
- failn; output "$_ERROR_: $serviceName failed to reload dnsmasq!\n";
+fw3_setup() {
+ config_load 'firewall'
+ config_foreach remove_fw3_redirect 'redirect'
+ if [ "$1" == "start" ]; then
+ uci -q add firewall redirect >/dev/null 2>&1
+ uci -q set firewall.@redirect[-1].name='simple_adblock_dns_hijack'
+ uci -q set firewall.@redirect[-1].target='DNAT'
+ uci -q set firewall.@redirect[-1].src='lan'
+ uci -q set firewall.@redirect[-1].proto='tcpudp'
+ uci -q set firewall.@redirect[-1].src_dport='53'
+ uci -q set firewall.@redirect[-1].dest_port='53'
+ uci -q set firewall.@redirect[-1].dest_ip="$ip"
+ uci -q set firewall.@redirect[-1].reflection='0'
+ fi
+
+ if [ -n "$(uci changes firewall)" ]; then
+ uci -q commit firewall
+ /etc/init.d/firewall restart >/dev/null 2>&1
fi
}
process_url() {
local label type D_TMP R_TMP
[[ -n "$1" && -n "$2" && -n "$3" ]] || return 1
- local url=$1
- [ "$2" == "hosts" ] && label="Hosts: $(echo $1 | cut -d'/' -f3)" filter="$h_filter" || label="Domains: $(echo $1 | cut -d'/' -f3)" filter="$d_filter"
- [ "$3" == "blocked" ] && { type='Blocked'; D_TMP="$B_TMP"; } || { type='Allowed'; D_TMP="$A_TMP"; }
- R_TMP="/var/simple-adblock_$(head -c40 /dev/urandom 2>/dev/null | tr -dc 'A-Za-z0-9' 2>/dev/null)"
- while [ -e "$R_TMP" ]; do R_TMP="/var/simple-adblock_$(head -c40 /dev/urandom 2>/dev/null | tr -dc 'A-Za-z0-9' 2>/dev/null)"; done
+# ping -W5 -c1 "$(echo $1 | awk -F '/' '{print $3}')" 1>/dev/null 2>/dev/null || { output_fail; return 1; }
+ if [ "$2" == "hosts" ]; then
+ label="Hosts: $(echo $1 | cut -d'/' -f3)" filter="$h_filter"
+ else
+ label="Domains: $(echo $1 | cut -d'/' -f3)" filter="$d_filter"
+ fi
+ if [ "$3" == "blocked" ]; then
+ type='Blocked'; D_TMP="$B_TMP";
+ else
+ type='Allowed'; D_TMP="$A_TMP";
+ fi
+ while [[ -z "$R_TMP" || -e "$R_TMP" ]]; do
+ R_TMP="/var/${packageName}_tmp_$(head -c40 /dev/urandom 2>/dev/null | tr -dc 'A-Za-z0-9' 2>/dev/null)"
+ done
touch "$R_TMP"
- output 2 "[DL] $type $label "
- $dl "${url}" > "$R_TMP" 2>/dev/null && ok || fail
- { sed -i "$filter" "$R_TMP"; cat "$R_TMP" >> "$D_TMP"; rm -f "$R_TMP"; } &
+ if ! $dl_command "$1" > "$R_TMP" 2>/dev/null; then
+ output 2 "[DL] $type $label $__FAIL__\n"
+ output 1 "$_FAIL_"
+ ubus_status add '-'
+ return 1
+ fi
+ sed -i "$filter" "$R_TMP"
+ cat "$R_TMP" >> "$D_TMP"
+ rm -f "$R_TMP" >/dev/null 2>/dev/null
+ output 2 "[DL] $type $label $__OK__\n"
+ output 1 "$_OK_"
+ ubus_status add '+'
+ return 0
}
-start_adblocking() {
- local whitelist_domains blacklist_domains whitelist_domains_urls blacklist_domains_urls blacklist_hosts_urls
- config_get whitelist_domains 'config' 'whitelist_domain'
- config_get blacklist_domains 'config' 'blacklist_domain'
- config_get whitelist_domains_urls 'config' 'whitelist_domains_url'
- config_get blacklist_domains_urls 'config' 'blacklist_domains_url'
- config_get blacklist_hosts_urls 'config' 'blacklist_hosts_url'
-
- local hf w_filter
-
- [ ! -d ${hosts_file%/*} ] && mkdir -p ${hosts_file%/*}
- [ ! -f "$hosts_file" ] && touch "$hosts_file"
- if [[ -s $T_TMP && ! "$1" == "reload" ]]; then
- output 3 'Found existing data file, reusing it '
- mv $T_TMP $hosts_file && okn || failn
- else
- [ -f $A_TMP ] && rm -f $A_TMP; [ -f $B_TMP ] && rm -f $B_TMP; [ -f $T_TMP ] && rm -f $T_TMP; [ -f $hosts_file ] && rm -f $hosts_file;
- if [ "$(awk '/^MemFree/ {print int($2/1000)}' "/proc/meminfo")" -lt 32 ]; then
- output 1 'Low free memory, restarting dnsmasq...'
- /etc/init.d/dnsmasq restart >/dev/null 2>&1 && okn || failn
- fi
- touch $A_TMP; touch $B_TMP; touch $T_TMP;
- if [ -n "$blacklist_hosts_urls" ]; then
- output 1 '[DL] Blocked Hosts '
- for hf in ${blacklist_hosts_urls}; do process_url "$hf" 'hosts' 'blocked'; done
- output 1 '\n'
- fi
- if [ -n "$blacklist_domains_urls" ]; then
- output 1 '[DL] Blocked Domains '
- for hf in ${blacklist_domains_urls}; do process_url "$hf" 'domains' 'blocked'; done
+download_lists() {
+ local i hf w_filter whitelist_domains blacklist_domains whitelist_domains_urls blacklist_domains_urls blacklist_hosts_urls j=0
+ config_get whitelist_domains 'config' 'whitelist_domain'
+ config_get blacklist_domains 'config' 'blacklist_domain'
+ config_get whitelist_domains_urls 'config' 'whitelist_domains_url'
+ config_get blacklist_domains_urls 'config' 'blacklist_domains_url'
+ config_get blacklist_hosts_urls 'config' 'blacklist_hosts_url'
+
+ ubus_status set 'Reloading '
+ [ ! -d ${dnsmasqFile%/*} ] && mkdir -p ${dnsmasqFile%/*}
+ for i in $A_TMP $B_TMP $CACHE_TMP $dnsmasqFile; do [ -f $i ] && rm -f $i; done
+ if [ "$(awk '/^MemFree/ {print int($2/1000)}' "/proc/meminfo")" -lt 32 ]; then
+ output 3 'Low free memory, restarting dnsmasq...'
+ reload_dnsmasq 'quiet' && output_okn || output_failn
+ fi
+ touch $A_TMP; touch $B_TMP;
+ output 1 'Downloading lists '
+ if [ -n "$blacklist_hosts_urls" ]; then
+ for hf in ${blacklist_hosts_urls}; do
+ process_url "$hf" 'hosts' 'blocked' &
+ done
+ fi
+ if [ -n "$blacklist_domains_urls" ]; then
+ for hf in ${blacklist_domains_urls}; do
+ process_url "$hf" 'domains' 'blocked' &
+ done
+ fi
+ if [ -n "$whitelist_domains_urls" ]; then
+ for hf in ${whitelist_domains_urls}; do
+ process_url "$hf" 'domains' 'allowed' &
+ done
+ fi
+ wait
+ i="$(ubus_status get)"
+ [ "${i//-}" != "$i" ] && serviceStatus="${serviceStatus:-'Download error'}" || unset serviceStatus
+ i="${i//Reloading }"
+ i="${i//-/$xmark}"
+ i="${i//+/$checkmark}"
+ [ "$verbosity" == "1" ] && logmsg="${logmsg}${i}"
+ output 1 '\n'
+
+ [ -n "$blacklist_domains" ] && for hf in ${blacklist_domains}; do echo "$hf" | sed "$d_filter" >> $B_TMP; done
+ whitelist_domains="${whitelist_domains}"$'\n'"$(cat $A_TMP)"
+ [ -n "$whitelist_domains" ] && for hf in ${whitelist_domains}; do hf=$(echo $hf | sed 's/\./\\./g'); w_filter="$w_filter/^${hf}$/d;/\\.${hf}$/d;"; done
+ if [ -s $B_TMP ]; then
+ output 1 'Processing downloads '
+ output 2 'Sorting combined list '
+ if sort $B_TMP | uniq > $A_TMP; then
+ output_ok
+ else
+ output_fail
+ serviceStatus="${serviceStatus:-'Sorting error'}"
+ fi
+ output 2 'Optimizing combined list '
+ if awk -F "." '{for(f=NF;f>1;f--)printf "%s.",$f;print $1}' "$A_TMP" > "$B_TMP"; then
+ if sort "$B_TMP" > "$A_TMP"; then
+ if awk '{if(NR==1){tld=$NF};while(getline){if($NF!~tld"\\."){print tld;tld=$NF}}print tld}' "$A_TMP" > "$B_TMP"; then
+ if awk -F "." '{for(f=NF;f>1;f--)printf "%s.",$f;print $1}' "$B_TMP" > "$A_TMP"; then
+ if sort "$A_TMP" | uniq > "$B_TMP"; then
+ output_ok
+ else
+ output_fail
+ serviceStatus="${serviceStatus:-'Data file optimization error'}"
+ mv $A_TMP $B_TMP
+ fi
+ else
+ output_fail
+ serviceStatus="${serviceStatus:-'Data file optimization error'}"
+ fi
+ else
+ output_fail
+ serviceStatus="${serviceStatus:-'Data file optimization error'}"
+ mv $A_TMP $B_TMP
+ fi
+ else
+ output_fail
+ serviceStatus="${serviceStatus:-'Data file optimization error'}"
+ fi
+ else
+ output_fail
+ serviceStatus="${serviceStatus:-'Data file optimization error'}"
+ mv $A_TMP $B_TMP
+ fi
+ output 2 'Whitelisting domains '
+ if sed -i "$w_filter" $B_TMP; then
+ output_ok
+ else
+ output_fail
+ serviceStatus="${serviceStatus:-'Whitelist processing error'}"
+ fi
+ output 2 'Formatting merged file '
+ if sed "$f_filter" $B_TMP > $A_TMP; then
+ output_ok
+ else
+ output_fail
+ serviceStatus="${serviceStatus:-'Data file formatting error'}"
+ fi
+ output 2 'Creating dnsmasq config '
+ if mv $A_TMP $dnsmasqFile; then
+ output_ok
+ else
+ output_fail
+ serviceStatus="${serviceStatus:-'Error moving data file'}"
+ fi
+ output 2 'Removing temporary files '
+ rm -f /var/simple-adblock_tmp_* >/dev/null 2>&1;
+ for i in $A_TMP $B_TMP $CACHE_TMP; do if [ -s $i ]; then rm -f $i || j=1; fi; done
+ if [ $j -eq 0 ]; then
+ output_ok
+ else
+ output_fail
+ serviceStatus="${serviceStatus:-'Error removing temporary files'}"
+ fi
output 1 '\n'
+ fi
+}
+
+start_service() {
+ local ip status
+ if create_lock; then
+ is_enabled 'on_start' || return 1
+ procd_open_instance
+ procd_set_param command /bin/true
+ procd_set_param stdout 1
+ procd_set_param stderr 1
+ network_get_ipaddr ip 'lan'
+ if [[ $forceDNS -ne 0 && -n "$ip" ]]; then
+ if is_chaos_calmer; then
+ fw3_setup 'start'
+ else
+ procd_open_data
+ json_add_array firewall
+ json_add_object ""
+ json_add_string type redirect
+ json_add_string target 'DNAT'
+ json_add_string src 'lan'
+ json_add_string proto 'tcpudp'
+ json_add_string src_dport '53'
+ json_add_string dest_port '53'
+ json_add_string dest_ip "$ip"
+ json_add_string name 'simple_adblock_dns_hijack'
+ json_add_string reflection '0'
+ json_close_object
+ json_close_array
+ procd_close_data
+ fi
fi
- if [ -n "$whitelist_domains_urls" ]; then
- output 1 '[DL] Allowed Domains '
- for hf in ${whitelist_domains_urls}; do process_url "$hf" 'domains' 'allowed'; done
- output 1 '\n'
+ procd_close_instance
+ status="$(ubus_status get)"
+ if [ -s "$CACHE_TMP" ] && [ "$1" != "reload" ]; then
+ output "Starting $serviceName...\n"
+ output 3 'Found existing data file, reusing it '
+ mv $CACHE_TMP $dnsmasqFile && output_okn || output_failn
+ reload_dnsmasq 'on_start' || serviceStatus="${serviceStatus:-'DNSMASQ restart error'}"
+ elif [ "$1" == "reload" ] || [ "$status" == "${status//Success}" ]; then
+ output "Reloading $serviceName...\n"
+ download_lists
+ reload_dnsmasq 'on_start' || serviceStatus="${serviceStatus:-'DNSMASQ restart error'}"
+ elif [ ! -s "$dnsmasqFile" ]; then
+ output "Starting $serviceName...\n"
+ download_lists
+ reload_dnsmasq 'on_start' || serviceStatus="${serviceStatus:-'DNSMASQ restart error'}"
fi
- output 3 'Waiting for background processes '
- wait && okn
- [ -n "$blacklist_domains" ] && for hf in ${blacklist_domains}; do echo "$hf" | sed "$d_filter" >> $B_TMP; done
- whitelist_domains="${whitelist_domains}"$'\n'"$(cat $A_TMP)"
- [ -n "$whitelist_domains" ] && for hf in ${whitelist_domains}; do hf=$(echo $hf | sed 's/\./\\./g'); w_filter="$w_filter/^${hf}$/d;/\\.${hf}$/d;"; done
- if [ -s $B_TMP ]; then
- output 1 'Processing downloads '
- output 2 'Sorting merged file '; sort $B_TMP | uniq > $T_TMP && ok || fail
- output 2 'Whitelisting domains '; sed -i "$w_filter" $T_TMP && ok || fail
- output 2 'Formatting merged file '; sed "$f_filter" $T_TMP > $B_TMP && mv $B_TMP $hosts_file && ok || fail
- output 1 '\n'
- output 3 'Removing temporary files '
- [ -f $A_TMP ] && rm -f $A_TMP; [ -f $B_TMP ] && rm -f $B_TMP; [ -f $T_TMP ] && rm -f $T_TMP;
- okn
+ if [ -s "$dnsmasqFile" ]; then
+ if [ -z "$serviceStatus" ]; then
+ output "$serviceName is blocking $(wc -l < $dnsmasqFile) domains "; output_okn;
+ serviceStatus="Success: $(wc -l < $dnsmasqFile) domains blocked"
+ else
+ output "$serviceName is blocking $(wc -l < $dnsmasqFile) domains with error: $serviceStatus "; output_failn;
+ serviceStatus="$(wc -l < $dnsmasqFile) domains blocked with error: $serviceStatus"
+ fi
fi
+ [ -n "$serviceStatus" ] && ubus_status set "$serviceStatus"
+ remove_lock
+ else
+ output "$serviceName: another instance is starting up "; output_failn;
+ return 1
fi
+}
- if [ -s $hosts_file ]; then
- output 3 'Restarting dnsmasq '
- /etc/init.d/dnsmasq restart >/dev/null 2>&1
- if [[ $? -eq 0 ]]; then
- led_on; okn;
- output "$serviceName blocking $(wc -l < $hosts_file) domains $_OK_\n"
- else
- failn; output "$_ERROR_: $serviceName failed to reload dnsmasq!\n";
- exit 1
- fi
+service_started() { procd_set_config_changed firewall; }
+reload_service() { start_service 'reload'; }
+killcache() { [ -s $CACHE_TMP ] && rm -f $CACHE_TMP >/dev/null 2>/dev/null; }
+
+stop_service() {
+ load_package_config
+ if [ $serviceEnabled -gt 0 ]; then
+ output "Stopping $serviceName...\n"
+ reload_dnsmasq 'on_stop'
else
- output "$_ERROR_: $serviceName failed to create its data file!\n"
- exit 1
+ reload_dnsmasq 'quiet'
fi
+ ubus_status set 'Stopped'
+ procd_set_config_changed firewall
}
check() {
load_package_config
local string="$1"
- if [ ! -f $hosts_file ]; then
- echo "No local blacklist ($hosts_file) found."
+ if [ ! -f $dnsmasqFile ]; then
+ echo "No local blacklist ($dnsmasqFile) found."
elif [ -z "$string" ]; then
- echo "Usage: /etc/init.d/${serviceName} check <string>"
- elif grep -m1 -q $string $hosts_file; then
- echo "Found $(grep $string $hosts_file | wc -l) matches for $string in $hosts_file:"
- grep $string $hosts_file | sed 's|local=/||;s|/$||;'
+ echo "Usage: /etc/init.d/${packageName} check 'domain'"
+ elif grep -m1 -q $string $dnsmasqFile; then
+ echo "Found $(grep $string $dnsmasqFile | wc -l) matches for $string in $dnsmasqFile:"
+ grep $string $dnsmasqFile | sed 's|local=/||;s|/$||;'
else
echo "The $string is not found in current blacklist."
fi
}
-
-start_service() {
- is_enabled || return 1
- if [ -f "$hosts_file" ]; then
- output "Reloading $serviceName...\n"
- iptables_create 'quiet'
- start_adblocking 'reload'
- else
- output "Starting $serviceName...\n"
- iptables_create
- start_adblocking
- fi
-}
-
-stop_service() {
- load_package_config
- output "Stopping $serviceName...\n"
- iptables_destroy
- stop_adblocking
-}
-
-killcache() { [ -s $T_TMP ] && rm -f $T_TMP; }
include $(TOPDIR)/rules.mk
PKG_NAME:=tor
-PKG_VERSION:=0.3.3.7
+PKG_VERSION:=0.3.3.9
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://dist.torproject.org/ \
https://archive.torproject.org/tor-package-archive
-PKG_HASH:=ea6bb512c4adfbc4e05b22e4c2d06bddff5b358a53de982273fec846b75bde0c
+PKG_HASH:=85346b4d026e6a041c8e326d2cc64b5f5361b032075c89c5854f16dbc02fce6f
PKG_MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de> \
Peter Wagner <tripolar@gmx.at>
PKG_LICENSE_FILES:=LICENSE
PKG_NAME:=transmission
PKG_VERSION:=2.94
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GITHUB/transmission/transmission-releases/master
option group 'transmission'
option mem_percentage 50
option nice 10
+ option web_home ''
option alt_speed_down 50
option alt_speed_enabled false
option alt_speed_time_begin 540
local mem_percentage
local nice
local cmdline
+ local web_home
section_enabled "$section" || return 1
config_get mem_percentage "$cfg" 'mem_percentage' '50'
config_get config_overwrite "$cfg" config_overwrite 1
config_get nice "$cfg" nice 0
+ config_get web_home "$cfg" 'web_home'
local MEM=$(sed -ne 's!^MemTotal:[[:space:]]*\([0-9]*\) kB$!\1!p' /proc/meminfo)
if test "$MEM" -gt 1;then
logger -t transmission "Starting with $USE virt mem"
fi
+ if test -d "$web_home"; then
+ procd_set_param env TRANSMISSION_WEB_HOME="$web_home"
+ fi
+
procd_add_jail transmission log
procd_add_jail_mount $config_file
procd_add_jail_mount_rw $download_dir
+++ /dev/null
-----------------------------------------------------------------------
-
-LINKING EXCEPTION
-
- In addition to the permissions in the GNU General Public License,
- the authors give you unlimited permission to link the compiled
- version of this library into combinations with other programs,
- and to distribute those combinations without any restriction
- coming from the use of this file. (The General Public License
- restrictions do apply in other respects; for example, they cover
- modification of the file, and distribution when not linked into
- a combined executable.)
-
-----------------------------------------------------------------------
-
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
PKG_NAME:=uwsgi-cgi
PKG_VERSION:=2.0.17.1
-PKG_RELEASE:=1
+PKG_RELEASE:=4
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/unbit/uwsgi
-PKG_SOURCE_DATE:=2018-07-08
-PKG_SOURCE_VERSION:=4b3e9621c0a3eb2aacf937b8e84e67b23b20490b
-PKG_MIRROR_HASH:=a843909ad5e8c36b86392d99c8bd411a84c14ad51993ba63638180212c7819e2
+PKG_SOURCE_URL=https://codeload.github.com/unbit/uwsgi/tar.gz/$(PKG_VERSION)?
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=d2318235c74665a60021a4fc7770e9c2756f9fc07de7b8c22805efe85b5ab277
+PKG_BUILD_DIR:=$(BUILD_DIR)/uwsgi-$(PKG_VERSION)
-PKG_LICENSE:=GPL2 + linking exception
+PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Ansuel Smith <ansuelsmth@gmail.com>
SUBMENU:=Web Servers/Proxies
TITLE:=The uWSGI server
URL:=http://unbit.com/
- DEPENDS:=+libcap +libopenssl +libpcre +jansson +libuuid +libxml2
+ DEPENDS:=+libcap +jansson +libuuid
endef
define Package/uwsgi-cgi-luci-support
define Package/uwsgi-cgi-luci-support/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files-luci-support/uwsgi.init $(1)/etc/init.d/uwsgi
- $(INSTALL_DIR) $(1)/etc/uwsgi
- $(INSTALL_BIN) ./files-luci-support/uwsgi.conf $(1)/etc/uwsgi/uwsgi.conf
- $(INSTALL_DIR) $(1)/etc/nginx
+ $(INSTALL_BIN) ./files-luci-support/uwsgi.conf $(1)/etc/uwsgi.conf
endef
$(eval $(call BuildPackage,uwsgi-cgi))
[uwsgi]
-stric = True
-uwsgi_modifier1 = 9
-socket = /var/run/uwsgi.sock
-cgi-mode = true
-cgi = /www/cgi-bin/luci
-chdir = /usr/lib/lua/luci/
-master = True
-buffer-size = 10000
-reload-mercy=8
-max-requests=2000
-limit-as=200
-reload-on-as=256
-reload-on-rss=192
-no-orphans=True
-vacuum=True
-enable-threads=True
-post-buffering=8192
-socket-timeout=120
-thunder-lock = True
-logger = syslog:uwsgi
-daemonize = True
-disable-logging = True
-log-format = %(addr) %(method) %(uri) => generated %(rsize) bytes in %(msecs) msecs
-pidfile=/var/run/uwsgi.pid
-die-on-term=True
-fork-socket=True
-pcre-jit=True
\ No newline at end of file
+strict = true
+socket = /var/run/uwsgi.sock
+cgi-mode = true
+cgi = /www/cgi-bin/luci
+chdir = /usr/lib/lua/luci/
+master = true
+buffer-size = 10000
+reload-mercy = 8
+max-requests = 2000
+limit-as = 200
+reload-on-as = 256
+reload-on-rss = 192
+no-orphans = true
+vacuum = true
+enable-threads = true
+post-buffering = 8192
+socket-timeout = 120
+thunder-lock = true
+logger = syslog:uwsgi
+disable-logging = true
+log-format = %(addr) %(method) %(uri) => generated %(rsize) bytes in %(msecs) msecs
+pidfile = /var/run/uwsgi.pid
+die-on-term = true
+threads = 3
+processes = 3
+chmod-socket = 666
-#!/bin/sh /etc/rc.common
+#!/bin/sh /etc/rc.common
START=79
-
-start() {
- core_number=$(grep -c ^processor /proc/cpuinfo)
- /usr/sbin/uwsgi --ini /etc/uwsgi/uwsgi.conf --threads $core_number --processes $(($core_number * 2))
- logger -ts "Uwsgi" "Starting Uwsgi process"
-}
-
-stop() {
- pidfile="/var/run/uwsgi.pid"
- if [ -n "$(pgrep uwsgi)" ]; then
- if [ -f $pidfile ]; then
- logger -t "Uwsgi" "Stopping Uwsgi process"
- kill $( cat $pidfile )
- else
- for pid in $(pgrep uwsgi); do
- if [ -n "$(pgrep uwsgi)" ]; then
- #Keep trying to kill until the master process is found
- kill -KILL $pid
- fi
- done
- fi
- else
- logger -t "Uwsgi" "Uwsgi not running!"
- fi
-}
-
-reload() {
- /usr/sbin/uwsgi --reload /var/run/uwsgi.pid
-}
-
+USE_PROCD=1
+
+start_service() {
+ procd_open_instance
+ procd_set_param command /usr/sbin/uwsgi --ini /etc/uwsgi.conf
+ procd_set_param file /etc/uwsgi.conf
+ procd_set_param respawn
+ procd_close_instance
+ }
--- /dev/null
+--- a/buildconf/base.ini
++++ b/buildconf/base.ini
+@@ -1,9 +1,9 @@
+ [uwsgi]
+-xml = auto
+-yaml = true
+-json = auto
+-ssl = auto
+-pcre = auto
++xml = false
++yaml = embedded
++json = jansson
++ssl = false
++pcre = false
+ routing = auto
+ debug = false
+ unbit = false
--- /dev/null
+--- a/uwsgiconfig.py
++++ b/uwsgiconfig.py
+@@ -851,11 +851,11 @@ class uConf(object):
+ self.cflags.append('-DUWSGI_HAS_EXECINFO')
+ report['execinfo'] = True
+
+- if self.has_include('zlib.h'):
+- self.cflags.append('-DUWSGI_ZLIB')
+- self.libs.append('-lz')
+- self.gcc_list.append('core/zlib')
+- report['zlib'] = True
++# if self.has_include('zlib.h'):
++# self.cflags.append('-DUWSGI_ZLIB')
++# self.libs.append('-lz')
++# self.gcc_list.append('core/zlib')
++ report['zlib'] = False
+
+ if uwsgi_os == 'OpenBSD':
+ try:
--- /dev/null
+--- a/uwsgiconfig.py
++++ b/uwsgiconfig.py
+@@ -680,7 +680,7 @@ class uConf(object):
+ self.include_path += os.environ['UWSGI_INCLUDES'].split(',')
+
+
+- self.cflags = ['-O2', '-I.', '-Wall', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64'] + os.environ.get("CFLAGS", "").split() + self.get('cflags','').split()
++ self.cflags = ['-I.', '-Wall', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64'] + os.environ.get("CFLAGS", "").split() + self.get('cflags','').split()
+
+ report['kernel'] = uwsgi_os
+
--- /dev/null
+--- a/uwsgiconfig.py
++++ b/uwsgiconfig.py
+@@ -5,9 +5,9 @@
+ import os
+ import re
+ import time
+-uwsgi_os = os.uname()[0]
+-uwsgi_os_k = re.split('[-+_]', os.uname()[2])[0]
+-uwsgi_os_v = os.uname()[3]
++uwsgi_os = "Linux"
++uwsgi_os_k = "4.4.0"
++uwsgi_os_v = "Linux"
+ uwsgi_cpu = os.uname()[4]
+
+ import sys
PKG_NAME:=wget
PKG_VERSION:=1.19.5
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
--disable-rpath \
--disable-iri \
--with-included-libunistring \
- --without-libuuid
+ --without-libuuid \
+ --without-libpsl
CONFIGURE_VARS += \
ac_cv_header_uuid_uuid_h=no
include $(TOPDIR)/rules.mk
PKG_NAME:=znc
-PKG_VERSION:=1.6.6
-PKG_RELEASE:=1
+PKG_VERSION:=1.7.1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://znc.in/releases \
https://znc.in/releases/archive
-PKG_HASH:=7fb841bc71dc1749b1dc081e9eaf22ceb56ebb03c6b1d8804a4f9eb8bbd59525
+PKG_HASH:=44cfea7158ea05dc2547c7c6bc22371e66c869def90351de0ab90a9c200d39c4
-PKG_MAINTAINER:=Jonas Gorski <jogo@openwrt.org>
+PKG_MAINTAINER:=Jonas Gorski <jonas.gorski@gmail.com>
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
CONFIGURE_VARS += \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti" \
+ CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin" \
CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
LDFLAGS="-nodefaultlibs -lc -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
LIBS="-lstdc++ -lm -lssl -lcrypto $(LIBGCC_S) -lc"
+++ /dev/null
-From adf42357c9043c38d9a9b47544a1b46445bdae19 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jonas.gorski+openwrt@gmail.com>
-Date: Wed, 6 Apr 2011 04:10:23 +0200
-Subject: [PATCH] Move the root check to after config parsing
-
----
- src/main.cpp | 27 ++++++++++++++-------------
- 1 file changed, 14 insertions(+), 13 deletions(-)
-
---- a/src/main.cpp
-+++ b/src/main.cpp
-@@ -312,19 +312,6 @@ int main(int argc, char** argv) {
- CUtils::PrintStatus(true, "");
- }
-
-- if (isRoot()) {
-- CUtils::PrintError("You are running ZNC as root! Don't do that! There are not many valid");
-- CUtils::PrintError("reasons for this and it can, in theory, cause great damage!");
-- if (!bAllowRoot) {
-- CZNC::DestroyInstance();
-- return 1;
-- }
-- CUtils::PrintError("You have been warned.");
-- CUtils::PrintError("Hit CTRL+C now if you don't want to run ZNC as root.");
-- CUtils::PrintError("ZNC will start in 30 seconds.");
-- sleep(30);
-- }
--
- if (bMakeConf) {
- if (!pZNC->WriteNewConfig(sConfig)) {
- CZNC::DestroyInstance();
-@@ -346,6 +333,20 @@ int main(int argc, char** argv) {
- return 1;
- }
-
-+ if (isRoot()) {
-+ CUtils::PrintError("You are running ZNC as root! Don't do that! There are not many valid");
-+ CUtils::PrintError("reasons for this and it can, in theory, cause great damage!");
-+ if (!bAllowRoot) {
-+ CZNC::DestroyInstance();
-+ return 1;
-+ }
-+ CUtils::PrintError("You have been warned.");
-+ CUtils::PrintError("Hit CTRL+C now if you don't want to run ZNC as root.");
-+ CUtils::PrintError("ZNC will start in 30 seconds.");
-+ sleep(30);
-+ }
-+
-+
- if (bForeground) {
- int iPid = getpid();
- CUtils::PrintMessage("Staying open for debugging [pid: " + CString(iPid) + "]");
--- a/Makefile.in
+++ b/Makefile.in
-@@ -112,7 +112,7 @@ clean:
+@@ -128,7 +128,7 @@ clean:
distclean: clean
rm -rf $(DISTCLEAN)
$(Q)$(CXX) $(CXXFLAGS) -c -o $@ $< -MD -MF .depend/$*.dep -MT $@
--- a/modules/Makefile.in
+++ b/modules/Makefile.in
-@@ -112,12 +112,12 @@ install_datadir:
+@@ -127,12 +127,12 @@ install_datadir:
clean:
rm -rf $(CLEAN)
--- a/src/main.cpp
+++ b/src/main.cpp
-@@ -304,10 +304,12 @@ int main(int argc, char** argv) {
- CUtils::PrintStatus(false, "");
- CUtils::PrintError("No modules found. Perhaps you didn't install ZNC properly?");
- CUtils::PrintError("Read http://wiki.znc.in/Installation for instructions.");
+@@ -412,12 +412,14 @@ int main(int argc, char** argv) {
+ "No modules found. Perhaps you didn't install ZNC properly?");
+ CUtils::PrintError(
+ "Read https://wiki.znc.in/Installation for instructions.");
+#if 0
- if (!CUtils::GetBoolInput("Do you really want to run ZNC without any modules?", false)) {
- CZNC::DestroyInstance();
- return 1;
- }
+ if (!CUtils::GetBoolInput(
+ "Do you really want to run ZNC without any modules?",
+ false)) {
+ CZNC::DestroyInstance();
+ return 1;
+ }
+#endif
- }
- CUtils::PrintStatus(true, "");
- }
+ }
+ CUtils::PrintStatus(true, "");
+ }
include $(TOPDIR)/rules.mk
PKG_NAME:=mpd
-PKG_VERSION:=0.20.9
-PKG_RELEASE:=2
+PKG_VERSION:=0.20.20
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.musicpd.org/download/mpd/0.20/
-PKG_HASH:=cd77a2869e32354b004cc6b34fcb0bee56114caa2d9ed862aaa8071441e34eb7
+PKG_HASH:=a9e458c6e07cdf62649de7722e1e5a7f13aa82eeb397bfbbebc07cf5cf273584
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=GPL-2.0
TITLE:=Music Player Daemon
URL:=http://www.musicpd.org/
DEPENDS:= +zlib +libcurl +libpthread +libmpdclient +libstdcpp $(ICONV_DEPENDS) \
- +AUDIO_SUPPORT:alsa-lib +boost +boost-container +libexpat
+ +AUDIO_SUPPORT:alsa-lib +boost +boost-container +libexpat +libflac
endef
define Package/mpd/Default/description
define Package/mpd-mini
$(call Package/mpd/Default)
TITLE+= (mini)
- DEPENDS+= +libflac +libmpg123 +libvorbisidec
+ DEPENDS+= +libmpg123 +libvorbisidec
PROVIDES:=mpd
VARIANT:=mini
endef
CONFIGURE_ARGS += \
--enable-upnp \
--enable-ffmpeg \
- --disable-flac \
--enable-id3 \
--enable-mms \
--disable-mpg123 \
--- a/src/decoder/plugins/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/plugins/FfmpegDecoderPlugin.cxx
-@@ -931,6 +931,7 @@ static const char *const ffmpeg_mime_typ
+@@ -937,6 +937,7 @@ static const char *const ffmpeg_mime_typ
"audio/qcelp",
"audio/vorbis",
"audio/vorbis+ogg",
#
-# Copyright (C) 2011-2016 OpenWrt.org
+# Copyright (C) 2011-2018 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:=pulseaudio
-PKG_VERSION:=12.0
+PKG_VERSION:=12.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://freedesktop.org/software/pulseaudio/releases/
-PKG_HASH:=6e422dbdc9fd11c0cb6af869e5eda73dc24a8be3c14725440edd51ce6b464444
+PKG_HASH:=809668ffc296043779c984f53461c2b3987a45b7a25eb2f0a1d11d9f23ba4055
PKG_LICENSE:=LGPL-2.1+
PKG_LICENSE_FILES:=GPL LICENSE
define Package/pulseaudio-daemon-avahi
$(call Package/pulseaudio/Default)
DEPENDS+=+dbus +libavahi-client +sbc
-# DEPENDS+=+avahi-daemon
TITLE+= (avahi/bluez)
VARIANT:=avahi
endef
--without-fftw \
--without-soxr \
--without-speex
-# --disable-bluez
ifeq ($(BUILD_VARIANT),avahi)
CONFIGURE_ARGS += \
CONFIGURE_VARS += \
PKG_CONFIG_LIBDIR="$(STAGING_DIR)/usr/lib/pkgconfig"
-#SUPP_LIBS:=-L$(INTL_PREFIX)/lib -L$(ICONV_PREFIX)/lib
-TARGET_CFLAGS += -std=gnu99
-
define Build/InstallDev
$(INSTALL_DIR) \
$(1)/usr/lib/pkgconfig \
include $(TOPDIR)/rules.mk
PKG_NAME:=shine
-PKG_VERSION:=3.1.0
-PKG_RELEASE:=2
+PKG_VERSION:=3.1.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/toots/shine/releases/download/$(PKG_VERSION)/
-PKG_HASH:=6c5310bda766b116ed2415d639a27e5e11040e068b4b2db6bd733333e620cb4f
+PKG_HASH:=58e61e70128cf73f88635db495bfc17f0dde3ce9c9ac070d505a0cd75b93d384
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
+++ /dev/null
-From 3695118267be9b7a9412c86c7c5424ab47efe7ec Mon Sep 17 00:00:00 2001
-From: Romain Beauxis <toots@rastageeks.org>
-Date: Thu, 7 Apr 2016 13:20:46 -0500
-Subject: [PATCH] Rename slen{1,2}_table to avoid name collision with ffmpeg.
-
----
- src/lib/l3bitstream.c | 4 ++--
- src/lib/l3loop.c | 4 ++--
- src/lib/tables.c | 4 ++--
- src/lib/tables.h | 4 ++--
- 4 files changed, 8 insertions(+), 8 deletions(-)
-
---- a/src/lib/l3bitstream.c
-+++ b/src/lib/l3bitstream.c
-@@ -127,8 +127,8 @@ static void encodeMainData(shine_global_
- {
- BF_PartHolder **pph = &config->l3stream.scaleFactorsPH[gr][ch];
- gr_info *gi = &(si.gr[gr].ch[ch].tt);
-- unsigned slen1 = slen1_tab[ gi->scalefac_compress ];
-- unsigned slen2 = slen2_tab[ gi->scalefac_compress ];
-+ unsigned slen1 = shine_slen1_tab[ gi->scalefac_compress ];
-+ unsigned slen2 = shine_slen2_tab[ gi->scalefac_compress ];
- int *ix = &config->l3_enc[ch][gr][0];
-
- if ( (gr == 0) || (si.scfsi[ch][0] == 0) )
---- a/src/lib/l3loop.c
-+++ b/src/lib/l3loop.c
-@@ -287,8 +287,8 @@ int part2_length(int gr, int ch, shine_g
- bits = 0;
-
- {
-- slen1 = slen1_tab[ gi->scalefac_compress ];
-- slen2 = slen2_tab[ gi->scalefac_compress ];
-+ slen1 = shine_slen1_tab[ gi->scalefac_compress ];
-+ slen2 = shine_slen2_tab[ gi->scalefac_compress ];
-
- if ( !gr || !(config->side_info.scfsi[ch][0]) )
- bits += (6 * slen1);
---- a/src/lib/tables.c
-+++ b/src/lib/tables.c
-@@ -7,8 +7,8 @@
- \r
- #include "tables.h"\r
- \r
--const int slen1_tab[16] = { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 };\r
--const int slen2_tab[16] = { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 };\r
-+const int shine_slen1_tab[16] = { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 };\r
-+const int shine_slen2_tab[16] = { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 };\r
- \r
- /* Valid samplerates and bitrates. */\r
- const int samplerates[9] = {\r
---- a/src/lib/tables.h
-+++ b/src/lib/tables.h
-@@ -3,8 +3,8 @@
- \r
- #include "types.h"\r
- \r
--extern const int slen1_tab[16];\r
--extern const int slen2_tab[16];\r
-+extern const int shine_slen1_tab[16];\r
-+extern const int shine_slen2_tab[16];\r
- \r
- extern const int samplerates[9];\r
- extern const int bitrates[16][4];\r
include $(TOPDIR)/rules.mk
PKG_NAME:=attr
-PKG_REV:=cfd8e6ef491a7a5ff900ba2ba3deff7d0bebb0a6
-PKG_VERSION:=20170915
+PKG_VERSION:=2.4.48
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://git.savannah.gnu.org/git/attr.git
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_MIRROR_HASH:=3c4f9331fd73192801a30071a379f07b48699adffe0d560133a740ade029a04c
+PKG_SOURCE_URL:=http://git.savannah.nongnu.org/cgit/attr.git/snapshot
+PKG_HASH:=095699f71230ace37e5bc680c6f9d15cf8e53eb38d00b2c46db5cc7e0712e5f3
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=LGPL-2.1 GPL-2.0
include $(TOPDIR)/rules.mk
PKG_NAME:=btrfs-progs
-PKG_VERSION:=4.16.1
+PKG_VERSION:=4.17
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/kdave/btrfs-progs/
-PKG_HASH:=013403fb67b17975b21408fa9eb7523b0ecf94f84f8a4397cf972e8e254d2246
+PKG_HASH:=82ca0ecf76350a1e3c6543fe220c0910e240511e663d51fc79c32bd0052c117c
PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
--disable-python \
--disable-zstd
+TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
+TARGET_LDFLAGS += -Wl,--gc-sections -flto
+
EXTRA_CFLAGS=$(TARGET_CPPFLAGS)
define Build/InstallDev
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/kernel.mk
+# collectd-mod-mysql needs iconv
+include $(INCLUDE_DIR)/nls.mk
define Package/collectd/Default
SECTION:=utils
include $(TOPDIR)/rules.mk
PKG_NAME:=fio
-PKG_VERSION:=3.6
+PKG_VERSION:=3.7
PKG_RELEASE:=1
PKG_MAINTAINER:=Dragan Stancevic <ds@codeminutia.com>
PKG_LICENSE:=GPL-2.0+
PKG_SOURCE_URL:=http://brick.kernel.dk/snaps
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=026a2cbb4a1bc9810f13f23d07eb146dbd4325bb467221dc49b88915ee8a52b4
+PKG_HASH:=73aba1b307f084ba5ec3ac3084233e3a0ef297a2991e904ab391cc95f07f003c
include $(INCLUDE_DIR)/package.mk
--- /dev/null
+From b0f77c10fc4561463b59b12cba0bfd69d7c73934 Mon Sep 17 00:00:00 2001
+From: Timo Teräs <timo.teras@iki.fi>
+Date: Tue, 10 Jan 2017 09:51:32 +0200
+Subject: [PATCH] fix aarch64 compile error due to undefined variable
+
+fixes #36
+
+Signed-off-by: Timo Teräs <timo.teras@iki.fi>
+
+--- a/procinterrupts.c
++++ b/procinterrupts.c
+@@ -148,6 +148,9 @@ GList* collect_full_irq_list()
+ char *line = NULL;
+ size_t size = 0;
+ char *irq_name, *irq_mod, *savedptr, *last_token, *p;
++#ifdef AARCH64
++ char *tmp;
++#endif
+
+ file = fopen("/proc/interrupts", "r");
+ if (!file)
include $(TOPDIR)/rules.mk
PKG_NAME:=picocom
-PKG_VERSION:=1.7
-PKG_RELEASE:=2
+PKG_VERSION:=3.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/picocom
-PKG_HASH:=d0f31c8f7a215a76922d30c81a52b9a2348c89e02a84935517002b3bc2c1129e
+PKG_SOURCE_URL:=https://codeload.github.com/npat-efault/picocom/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=e6761ca932ffc6d09bd6b11ff018bdaf70b287ce518b3282d29e0270e88420bb
PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
PKG_LICENSE:=GPL-2.0+
SECTION:=utils
CATEGORY:=Utilities
TITLE:=A minimal dumb-terminal emulation program
- URL:=http://code.google.com/p/picocom/
+ URL:=https://github.com/npat-efault/picocom
SUBMENU:=Terminal
endef
--- /dev/null
+diff --git a/Makefile b/Makefile
+index d6a4d60..a07d801 100644
+--- a/Makefile
++++ b/Makefile
+@@ -51,7 +51,6 @@ linenoise-1.0/linenoise.o : linenoise-1.0/linenoise.c linenoise-1.0/linenoise.h
+
+ OBJS += picocom.o term.o fdio.o split.o termios2.o custbaud_bsd.o
+ picocom : $(OBJS)
+- $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
+
+ picocom.o : picocom.c term.h fdio.h split.h custbaud.h
+ term.o : term.c term.h termios2.h custbaud_bsd.h custbaud.h
+++ /dev/null
-Index: picocom-1.7/term.c
-===================================================================
---- picocom-1.7.orig/term.c
-+++ picocom-1.7/term.c
-@@ -33,10 +33,11 @@
- #include <string.h>
- #include <errno.h>
- #include <unistd.h>
--#ifdef __linux__
-+#if defined(__linux__) && (defined(__GLIBC__) || defined(__UCLIBC__))
- #include <termio.h>
- #else
- #include <termios.h>
-+#include <sys/ioctl.h>
- #endif /* of __linux__ */
-
- #include "term.h"
include $(TOPDIR)/rules.mk
PKG_NAME:=prometheus-node-exporter-lua
-PKG_VERSION:=2018.06.26
+PKG_VERSION:=2018.07.23
PKG_RELEASE:=1
-PKG_MAINTAINER:=Christian Simon <simon@swine.de>
+PKG_MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
PKG_LICENSE:=Apache-2.0
include $(INCLUDE_DIR)/package.mk
define Package/prometheus-node-exporter-lua-openwrt
$(call Package/prometheus-node-exporter-lua/Default)
TITLE+= (openwrt collector)
+ DEPENDS:=prometheus-node-exporter-lua
endef
Build/Compile=
$(INSTALL_BIN) ./files/usr/bin/prometheus-node-exporter-lua $(1)/usr/bin/prometheus-node-exporter-lua
$(INSTALL_DIR) $(1)/usr/lib/lua/prometheus-collectors
$(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/cpu.lua $(1)/usr/lib/lua/prometheus-collectors/
+ $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/conntrack.lua $(1)/usr/lib/lua/prometheus-collectors/
$(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/filefd.lua $(1)/usr/lib/lua/prometheus-collectors/
$(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/loadavg.lua $(1)/usr/lib/lua/prometheus-collectors/
$(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/meminfo.lua $(1)/usr/lib/lua/prometheus-collectors/
--- /dev/null
+local function scrape()
+ metric("node_nf_conntrack_entries", "gauge", nil,
+ string.sub(get_contents("/proc/sys/net/netfilter/nf_conntrack_count"), 1, -2))
+ metric("node_nf_conntrack_entries_limit", "gauge", nil,
+ string.sub(get_contents("/proc/sys/net/netfilter/nf_conntrack_max"), 1, -2))
+end
+
+return { scrape = scrape }
#
-# Copyright (C) 2016, 2018 OpenWrt.org
+# Copyright (C) 2016, 2018 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=slide-switch
-PKG_VERSION:=0.9.1
+PKG_VERSION:=0.9.2
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/jefferyto/openwrt-slide-switch.git
-PKG_SOURCE_VERSION:=d70b5a09f457050e7e3b45fe03787945aa8880a0
+PKG_SOURCE_VERSION:=234293255f919cc00dc799f4729401e91b5091c9
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=78227e0cdc36f105b4fc5657620e41d6bb429eeef76419ce2cd53d2b6700ce31
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(call version_abbrev,$(PKG_SOURCE_VERSION)).tar.xz
+PKG_MIRROR_HASH:=ca405699c826428a13b174d5ec70c8b60fdde6467184b1fa0a09df3643bf24d3
PKG_BUILD_PARALLEL:=1
PKG_FIXUP:=autoreconf
include $(TOPDIR)/rules.mk
PKG_NAME:=tio
-PKG_VERSION:=1.30
+PKG_VERSION:=1.31
PKG_RELEASE:=1
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0+
PKG_SOURCE_URL:=https://github.com/$(PKG_NAME)/$(PKG_NAME)/releases/download/v$(PKG_VERSION)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=5c86c392a7783c9a3963421087c4a3fd8a32d5d5c705d2ce979bcf011659ac9d
+PKG_HASH:=4e72825914dac77c4587c0772accbd7a1292d5c5895bd49ad1477707b3203e42
PKG_FIXUP:=autoreconf
include $(TOPDIR)/rules.mk
PKG_NAME:=uvcdynctrl
-PKG_VERSION:=0.2.4
-PKG_REV:=2
+PKG_VERSION:=0.2.5
+PKG_RELEASE:=1
PKG_SOURCE:=libwebcam-src-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/libwebcam
-PKG_HASH:=91741aca11f079eb6d043e31b7da6fe1f7927c28d7496590386928f8466b4297
+PKG_HASH:=3ca5199c7b8398b655a7c38e3ad4191bb053b1486503287f20d30d141bda9d41
PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
-PKG_BUILD_DIR:=$(BUILD_DIR)/libwebcam-src-$(PKG_VERSION)
+PKG_BUILD_DIR:=$(BUILD_DIR)/libwebcam-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
CATEGORY:=Utilities
DEPENDS:=+libwebcam
TITLE:=Manage dynamic controls in uvcvideo
- URL:=http://sourceforge.net/projects/libwebcam/
+ URL:=https://sourceforge.net/projects/libwebcam/
MENU:=1
endef
CATEGORY:=Libraries
DEPENDS:=+libxml2 +libiconv-full
TITLE:=Webcam library
- URL:=http://sourceforge.net/projects/libwebcam/
+ URL:=https://sourceforge.net/projects/libwebcam/
endef
define Package/libwebcam/description