quiet: true
language: c
-dist: bionic
-sudo: false
+os: linux
+dist: focal
cache:
directories:
- $HOME/sdk
set -e
SDK_HOME="$HOME/sdk"
-SDK_PATH=https://downloads.openwrt.org/snapshots/targets/ar71xx/generic/
-SDK=-sdk-ar71xx-generic_
+SDK_PATH=https://downloads.openwrt.org/snapshots/targets/mpc85xx/p2020/
+SDK=-sdk-mpc85xx-p2020_
PACKAGES_DIR="$PWD"
echo_red() { printf "\033[1;31m$*\033[m\n"; }
include $(TOPDIR)/rules.mk
PKG_NAME:=gkrellmd
-PKG_VERSION:=2.3.10
-PKG_RELEASE:=2
+PKG_VERSION:=2.3.11
+PKG_RELEASE:=1
PKG_SOURCE:=gkrellm-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://gkrellm.srcbox.net/releases
-PKG_HASH:=8b9ec8baadcd5830c6aff04ba86dc9ed317a15c1c3787440bd1e680fb2fcd766
+PKG_HASH:=1ee0643ed9ed99f88c1504c89d9ccb20780cf29319c904b68e80a8e7c8678c06
+PKG_BUILD_DIR:=$(BUILD_DIR)/gkrellm-$(PKG_VERSION)
+
PKG_MAINTAINER:=Peter Denison <openwrt@marshadder.org>
PKG_LICENSE:=GPL-2.0-or-later
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/gkrellm-$(PKG_VERSION)
+PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
define Package/gkrellmd
SECTION:=admin
endef
define Build/Compile
- CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CPPFLAGS)" \
- LDFLAGS="$(EXTRA_LDFLAGS) " \
$(MAKE) -C $(PKG_BUILD_DIR)/server \
CC="$(TARGET_CC)" \
- glib2="yes" \
- without-libsensors="yes" \
- GLIB2_LIB="$(TARGET_LDFLAGS) -lglib-2.0 -lgmodule-2.0" \
- GLIB2_INCLUDE="-I$(STAGING_DIR)/usr/include/glib-2.0 -I$(STAGING_DIR)/usr/lib/glib-2.0/include"
+ CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
+ LDFLAGS="$(TARGET_LDFLAGS) " \
+ without-libsensors="yes"
endef
define Package/gkrellmd/install
include $(TOPDIR)/rules.mk
PKG_NAME:=zabbix
-PKG_VERSION:=4.0.16
-PKG_RELEASE:=3
+PKG_VERSION:=5.0.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=@SF/zabbix
-PKG_HASH:=a8d7e18230e62a7bd3fd9af5830a2b1b22818468b5da3deb673865ce40dc4d42
+PKG_SOURCE_URL:=https://cdn.zabbix.com/zabbix/sources/stable/5.0/
+PKG_HASH:=20a19e5cf2354ffcbbe24521b04becfc9875e57289c00da71999de60c4a853b6
PKG_MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
PKG_LICENSE:=GPL-2.0
define Package/zabbix-proxy
$(call Package/zabbix/Default)
TITLE+= proxy
- DEPENDS += +ZABBIX_POSTGRESQL:libpq +ZABBIX_MYSQL:libmariadbclient
+ DEPENDS += +ZABBIX_POSTGRESQL:libpq +ZABBIX_MYSQL:libmariadbclient +libevent2
endef
define Package/zabbix-extra-mac80211/description
define Package/zabbix-server-frontend/install
$(INSTALL_DIR) $(1)/www/zabbix
- $(CP) $(PKG_BUILD_DIR)/frontends/php/* $(1)/www/zabbix
+ $(CP) $(PKG_BUILD_DIR)/ui/* $(1)/www/zabbix
endef
define Package/zabbix-proxy/install
### Option: LogFileSize
# Maximum size of log file in MB.
# 0 - disable automatic log rotation.
-@@ -117,6 +114,7 @@ Server=127.0.0.1
+@@ -138,6 +135,7 @@ Server=127.0.0.1
# Range: 0-100
# Default:
# StartAgents=3
##### Active checks related
-@@ -132,8 +130,6 @@ Server=127.0.0.1
+@@ -153,8 +151,6 @@ Server=127.0.0.1
# Default:
# ServerActive=
### Option: Hostname
# Unique, case sensitive hostname.
# Required for active checks and must match hostname as configured on the server.
-@@ -143,8 +139,6 @@ ServerActive=127.0.0.1
+@@ -164,8 +160,6 @@ ServerActive=127.0.0.1
# Default:
# Hostname=
### Option: HostnameItem
# Item used for generating Hostname if it is undefined. Ignored if Hostname is defined.
# Does not support UserParameters or aliases.
-@@ -262,8 +256,8 @@ Hostname=Zabbix server
+@@ -305,8 +299,8 @@ Hostname=Zabbix server
# Include=
# Include=/usr/local/etc/zabbix_agentd.userparams.conf
- printf("Revision %s %s, compilation time: %s %s\n\n", ZABBIX_REVISION, ZABBIX_REVDATE, __DATE__, __TIME__);
+ printf("Revision %s %s\n\n", ZABBIX_REVISION, ZABBIX_REVDATE);
puts(copyright_message);
- #if defined(HAVE_POLARSSL) || defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
+ #if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
printf("\n");
+++ /dev/null
---- a/src/libs/zbxsysinfo/common/net.c
-+++ b/src/libs/zbxsysinfo/common/net.c
-@@ -547,7 +547,7 @@ static int dns_query(AGENT_REQUEST *request, AGENT_RESULT *result, int short_ans
- return SYSINFO_RET_FAIL;
- }
-
--#if defined(HAVE_RES_NINIT) && !defined(_AIX)
-+#if defined(HAVE_RES_NINIT) && !defined(_AIX) && !defined(__UCLIBC__)
- if (-1 == (res = res_nmkquery(&res_state_local, QUERY, zone, C_IN, type, NULL, 0, NULL, buf, sizeof(buf))))
- #else
- if (-1 == (res = res_mkquery(QUERY, zone, C_IN, type, NULL, 0, NULL, buf, sizeof(buf))))
-@@ -643,7 +643,11 @@ static int dns_query(AGENT_REQUEST *request, AGENT_RESULT *result, int short_ans
- res_state_local.retrans = retrans;
- res_state_local.retry = retry;
-
-+#ifndef __UCLIBC__
- res = res_nsend(&res_state_local, buf, res, answer.buffer, sizeof(answer.buffer));
-+#else
-+ res = res_search(*res_state_local.dnsrch, res, 0, answer.buffer, sizeof(answer.buffer));
-+#endif
-
- # ifdef HAVE_RES_U_EXT /* Linux */
- if (NULL != ip && '\0' != *ip && AF_INET6 == ip_type)
PKG_NAME:=luajit
PKG_VERSION:=2.1.0-beta3
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=LuaJIT-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://luajit.org/download
CATEGORY:=Languages
TITLE:=LuaJIT
URL:=https://www.luajit.org
- DEPENDS:=@(i386||x86_64||arm||armeb||aarch64||powerpc||mips||mipsel)
+ DEPENDS:=@(i386||x86_64||arm||armeb||aarch64||powerpc||mips||mipsel||mips64)
endef
define Package/luajit/description
LuaJIT is a Just-In-Time (JIT) compiler for the Lua programming language. *** Requires GCC Multilib on host system to build! ***
endef
-
-ifeq ($(HOST_ARCH),x86_64)
+ifeq ($(HOST_ARCH),$(filter $(HOST_ARCH), x86_64 mips64))
ifeq ($(CONFIG_ARCH_64BIT),)
HOST_BITS := -m32
endif
PKG_NAME:=perl
PKG_VERSION:=$(PERL_VERSION)
-PKG_RELEASE:=5
+PKG_RELEASE:=4
PKG_SOURCE_URL:=\
https://cpan.metacpan.org/src/5.0 \
-Dowrt:gccversion=$(CONFIG_GCC_VERSION) \
-Dowrt:target_cross='$(TARGET_CROSS)' \
-Dowrt:cflags='$(TARGET_CFLAGS_PERL) $(TARGET_CPPFLAGS_PERL)' \
- -Dowrt:ldflags='$(TARGET_LDFLAGS) $(if $(CONFIG_GCC_LIBSSP),-lssp)' \
+ -Dowrt:ldflags='$(TARGET_LDFLAGS)' \
-Dowrt:libc=$(subst uClibc,uclibc,$(CONFIG_LIBC)) \
-Dowrt:ipv6=$(if $($(CONFIG_IPV6)),define,undef) \
-Dowrt:threads=$(if $(CONFIG_PERL_THREADS),yes,no) \
include $(TOPDIR)/rules.mk
PKG_NAME:=php
-PKG_VERSION:=7.4.6
+PKG_VERSION:=7.4.7
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:=d740322f84f63019622b9f369d64ea5ab676547d2bdcf12be77a5a4cffd06832
+PKG_HASH:=53558f8f24cd8ab6fa0ea252ca8198e2650160649681ce5230c1df1dc2b52faf
PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
include $(TOPDIR)/rules.mk
PKG_NAME:=Flask
-PKG_VERSION:=1.1.1
-PKG_RELEASE:=2
+PKG_VERSION:=1.1.2
+PKG_RELEASE:=1
PYPI_NAME:=$(PKG_NAME)
-PKG_HASH:=13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52
+PKG_HASH:=4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=Werkzeug
-PKG_VERSION:=0.16.0
-PKG_RELEASE:=2
+PKG_VERSION:=1.0.1
+PKG_RELEASE:=1
PYPI_NAME:=$(PKG_NAME)
-PKG_HASH:=7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7
+PKG_HASH:=6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=pyodbc
-PKG_VERSION:=4.0.26
-PKG_RELEASE:=3
+PKG_VERSION:=4.0.30
+PKG_RELEASE:=1
PYPI_NAME:=$(PKG_NAME)
-PKG_HASH:=e52700b5d24a846483b5ab80acd9153f8e593999c9184ffea11596288fb33de3
+PKG_HASH:=852b5deeeb3366af8b4408efed993501708be45d221881bce60c9aac54be726a
PKG_BUILD_DEPENDS:=python3 unixodbc
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE.txt
PKG_NAME:=python-cached-property
PKG_VERSION:=1.5.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PYPI_NAME:=cached-property
PKG_HASH:=9217a59f14a5682da7c4b8829deadbfc194ac22e9908ccf7c8820234e80a1504
TITLE:=A decorator for caching properties in classes
URL:=https://github.com/pydanny/cached-property
DEPENDS:=+python3-light
- VARIANT:=python3
endef
define Package/python3-cached-property/description
PKG_NAME:=python-distro
PKG_VERSION:=1.5.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PYPI_NAME:=distro
PKG_HASH:=0e58756ae38fbd8fc3020d54badb8eae17c5b9dcbed388b17bb55b8a5928df92
TITLE:=Distro - an OS platform information API
URL:=https://github.com/nir0s/distro
DEPENDS:=+python3-light +python3-logging
- VARIANT:=python3
endef
define Package/python3-distro/description
PKG_NAME:=python-docker
PKG_VERSION:=4.2.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PYPI_NAME:=docker
PKG_HASH:=380a20d38fbfaa872e96ee4d0d23ad9beb0f9ed57ff1c30653cbeb0c9c0964f2
+python3-light +python3-distutils +python3-logging \
+python3-openssl +python3-paramiko +python3-six +python3-requests \
+python3-websocket-client
- VARIANT:=python3
endef
define Package/python3-docker/description
PKG_NAME:=python-dockerpty
PKG_VERSION:=0.4.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PYPI_NAME:=dockerpty
PKG_HASH:=69a9d69d573a0daa31bcd1c0774eeed5c15c295fe719c61aca550ed1393156ce
TITLE:=Python library to use the pseudo-tty of a docker container
URL:=https://github.com/d11wtq/dockerpty
DEPENDS:=+python3-light +python3-openssl +python3-six
- VARIANT:=python3
endef
define Package/python3-dockerpty/description
PKG_NAME:=python-docopt
PKG_VERSION:=0.6.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PYPI_NAME:=docopt
PKG_HASH:=49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491
TITLE:=Pythonic argument parser, that will make you smile
URL:=http://docopt.org/
DEPENDS:=+python3-light
- VARIANT:=python3
endef
define Package/python3-docopt/description
PKG_NAME:=python-dotenv
PKG_VERSION:=0.13.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PYPI_NAME:=python-dotenv
PKG_HASH:=3b9909bc96b0edc6b01586e1eed05e71174ef4e04c71da5786370cebea53ad74
TITLE:=Add .env support to your django/flask apps in development and deployments
URL:=http://github.com/theskumar/python-dotenv
DEPENDS:=+python3-light +python3-logging
- VARIANT:=python3
endef
define Package/python3-dotenv/description
PKG_NAME:=python-jsonschema
PKG_VERSION:=3.2.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PYPI_NAME:=jsonschema
PKG_HASH:=c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a
URL:=https://github.com/Julian/jsonschema
DEPENDS:=+python3-light +python3-attrs +python3-urllib \
+python3-six +python3-pyrsistent +python3-setuptools
- VARIANT:=python3
endef
define Package/python3-jsonschema/description
include $(TOPDIR)/rules.mk
PKG_NAME:=python-more-itertools
-PKG_VERSION:=8.3.0
+PKG_VERSION:=8.4.0
PKG_RELEASE:=1
PYPI_NAME:=more-itertools
-PKG_HASH:=558bb897a2232f5e4f8e2399089e35aecb746e1f9191b6584a151647e89267be
+PKG_HASH:=68c70cc7167bdf5c7c9d8f6954a7837089c6a36bf565383919bb595efb8a17e5
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=MIT
PKG_NAME:=python-paramiko
PKG_VERSION:=2.7.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PYPI_NAME:=paramiko
PKG_HASH:=920492895db8013f6cc0179293147f830b8c7b21fdfc839b6bad760c27459d9f
URL:=https://github.com/paramiko/paramiko/
DEPENDS:=+python3-light +python3-logging +python3-bcrypt \
+python3-cryptography +python3-openssl +python3-pynacl
- VARIANT:=python3
endef
define Package/python3-paramiko/description
PKG_NAME:=python-pynacl
PKG_VERSION:=1.4.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PYPI_NAME:=PyNaCl
PKG_HASH:=54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505
TITLE:=Python binding to the libsodium library
URL:=https://github.com/pyca/pynacl/
DEPENDS:=+libsodium +python3-light +python3-cffi +python3-six
- VARIANT:=python3
endef
define Package/python3-pynacl/description
PKG_NAME:=python-texttable
PKG_VERSION:=1.6.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PYPI_NAME:=texttable
PKG_HASH:=eff3703781fbc7750125f50e10f001195174f13825a92a45e9403037d539b4f4
TITLE:=Module for creating simple ASCII tables
URL:=https://github.com/foutaise/texttable/
DEPENDS:=+python3-light +python3-codecs
- VARIANT:=python3
endef
define Package/python3-texttable/description
PKG_NAME:=python-websocket-client
PKG_VERSION:=0.57.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PYPI_NAME:=websocket_client
PKG_HASH:=d735b91d6d1692a6a181f2a8c9e0238e5f6373356f561bb9dc4c7af36f452010
TITLE:=WebSocket client for Python. hybi13 is supported
URL:=https://github.com/websocket-client/websocket-client
DEPENDS:=+python3-light +python3-logging +python3-openssl +python3-six
- VARIANT:=python3
endef
define Package/python3-websocket-client/description
PKG_NAME:=avahi
PKG_VERSION:=0.8
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/lathiat/avahi/releases/download/v$(PKG_VERSION) \
endef
TARGET_CFLAGS += $(FPIC) -DGETTEXT_PACKAGE
-TARGET_LDFLAGS += $(if $(CONFIG_GCC_LIBSSP),-lssp_nonshared)
CONFIGURE_ARGS += \
--enable-shared \
include $(TOPDIR)/rules.mk
PKG_NAME:=libgphoto2
-PKG_VERSION:=2.5.23
+PKG_VERSION:=2.5.25
PKG_RELEASE:=1
PORT_VERSION:=0.12.0
-PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/gphoto
-PKG_HASH:=d8af23364aa40fd8607f7e073df74e7ace05582f4ba13f1724d12d3c97e8852d
-PKG_LICENSE:=LGPL-2.1
+PKG_HASH:=7c0e98f438c2b128186afe16ce7833a12fa36f87d01467e837b9d27e7a167f3a
+
+PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
+PKG_LICENSE:=LGPL-2.1-or-later
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
PKG_LIBTOOL_PATHS:=. libgphoto2_port
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=libimobiledevice
-PKG_SOURCE_DATE:=2020-02-19
-PKG_SOURCE_VERSION:=3d8d13f0a70cefc1b12571b7f6aa2d1d4c58cffb
+PKG_VERSION:=1.3.0
PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/libimobiledevice/libimobiledevice
-PKG_MIRROR_HASH:=4239f90c68ecd250a900b5256eafc364c658dcb8cc7767c58bd59b6d6b249d4e
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://www.libimobiledevice.org/downloads
+PKG_HASH:=53f2640c6365cd9f302a6248f531822dc94a6cced3f17128d4479a77bd75b0f6
PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
PKG_LICENSE:=LGPL-2.1-or-later
PKG_LICENSE_FILES:=COPYING.LESSER
-PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
This package contains the libimobiledevice utilities.
endef
-CONFIGURE_ARGS += --without-cython
+CONFIGURE_ARGS += \
+ --disable-static \
+ --without-cython
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/libimobiledevice $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libimobiledevice.{a,la,so*} $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libimobiledevice-1.0.so* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libimobiledevice-*.pc $(1)/usr/lib/pkgconfig/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libimobiledevice-1.0.pc $(1)/usr/lib/pkgconfig/
endef
define Package/libimobiledevice/install
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libimobiledevice.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libimobiledevice-1.0.so.* $(1)/usr/lib/
endef
define Package/libimobiledevice-utils/install
+++ /dev/null
-From ec2bba4ffe5a0939ba192b014ba594eaa964412f Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Sun, 8 Dec 2019 15:45:19 -0800
-Subject: [PATCH] idevicedate: Fix -Wformat=2 warning
-
-Format functions expect a constant expression, not a variable.
-
-Simplified the code slightly.
----
- tools/idevicedate.c | 17 ++++-------------
- 1 file changed, 4 insertions(+), 13 deletions(-)
-
-diff --git a/tools/idevicedate.c b/tools/idevicedate.c
-index 4de90b63..6dddc185 100644
---- a/tools/idevicedate.c
-+++ b/tools/idevicedate.c
-@@ -38,9 +38,9 @@
- #include <libimobiledevice/lockdown.h>
-
- #ifdef _DATE_FMT
--#define DATE_FMT_LANGINFO() nl_langinfo (_DATE_FMT)
-+#define DATE_FMT_LANGINFO nl_langinfo (_DATE_FMT)
- #else
--#define DATE_FMT_LANGINFO() ""
-+#define DATE_FMT_LANGINFO "%a %b %e %H:%M:%S %Z %Y"
- #endif
-
- static void print_usage(int argc, char **argv)
-@@ -75,7 +75,6 @@ int main(int argc, char *argv[])
- uint64_t datetime = 0;
- time_t rawtime;
- struct tm * tmp;
-- char const *format = NULL;
- char buffer[80];
- int result = 0;
-
-@@ -131,14 +130,6 @@ int main(int argc, char *argv[])
- }
- }
-
-- /* determine a date format */
-- if (!format) {
-- format = DATE_FMT_LANGINFO ();
-- if (!*format) {
-- format = "%a %b %e %H:%M:%S %Z %Y";
-- }
-- }
--
- ret = idevice_new(&device, udid);
- if (ret != IDEVICE_E_SUCCESS) {
- if (udid) {
-@@ -195,7 +186,7 @@ int main(int argc, char *argv[])
- tmp = localtime(&rawtime);
-
- /* finally we format and print the current date */
-- strftime(buffer, 80, format, tmp);
-+ strftime(buffer, 80, DATE_FMT_LANGINFO, tmp);
- puts(buffer);
- } else {
- datetime = setdate;
-@@ -217,7 +208,7 @@ int main(int argc, char *argv[])
-
- if(lockdownd_set_value(client, NULL, "TimeIntervalSince1970", node) == LOCKDOWN_E_SUCCESS) {
- tmp = localtime(&setdate);
-- strftime(buffer, 80, format, tmp);
-+ strftime(buffer, 80, DATE_FMT_LANGINFO, tmp);
- puts(buffer);
- } else {
- printf("ERROR: Failed to set date on device.\n");
PKG_VERSION:=1.0.0
PKG_RELEASE:=2
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/libimobiledevice/libirecovery
-PKG_SOURCE_VERSION:=2bd64e6d9c82c547bdd15cb32a74c1de5fd53bd8
-PKG_MIRROR_HASH:=eff43fbb0140ba653b514ef5c0a6ecc715dd05d8a61d405775573ae5f78995d7
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://www.libimobiledevice.org/downloads
+PKG_HASH:=cda0aba10a5b6fc2e1d83946b009e3e64d0be36912a986e35ad6d34b504ad9b4
PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
PKG_LICENSE:=LGPL-2.1-or-later
PKG_LICENSE_FILES:=COPYING
-PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
This package contains the libirecovery utilities.
endef
-CONFIGURE_ARGS += --without-udev
+CONFIGURE_ARGS += \
+ --disable-static \
+ --without-udev
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/libirecovery.h $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libirecovery.{a,la,so*} $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libirecovery-1.0.so* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libirecovery.pc $(1)/usr/lib/pkgconfig/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libirecovery-1.0.pc $(1)/usr/lib/pkgconfig/
endef
define Package/libirecovery/install
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libirecovery.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libirecovery-1.0.so.* $(1)/usr/lib/
endef
define Package/irecovery/install
include $(TOPDIR)/rules.mk
PKG_NAME:=libndpi
-PKG_VERSION:=2.8
+PKG_VERSION:=3.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ntop/nDPI/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=f98def4d0e43818317b20e2887ce500b2d6a5a9c8ddb28cf57ae51caae0f33cc
+PKG_HASH:=6808c8c4495343e67863f4d30bb261c1e2daec5628ae0be257ba2a2dea7ec70a
PKG_BUILD_DIR:=$(BUILD_DIR)/nDPI-$(PKG_VERSION)
-PKG_MAINTAINER:=Banglang Huang <banglang.huang@foxmail.com>
-PKG_LICENSE:=LGPLv3
+PKG_MAINTAINER:=Banglang Huang <banglang.huang@foxmail.com>, Toni Uhlig <matzeton@googlemail.com>
+PKG_LICENSE:=LGPL-3.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
$(PKG_UNPACK)
$(Build/Patch)
mv $(PKG_BUILD_DIR)/configure.seed $(PKG_BUILD_DIR)/configure.ac
- $(SED) "s/@NDPI_MAJOR@/2/g" \
- -e "s/@NDPI_MINOR@/8/g" \
+ $(SED) "s/@NDPI_MAJOR@/3/g" \
+ -e "s/@NDPI_MINOR@/2/g" \
-e "s/@NDPI_PATCH@/0/g" \
- -e "s/@NDPI_VERSION_SHORT@/2.8.0/g" \
+ -e "s/@NDPI_VERSION_SHORT@/3.2.0/g" \
$(PKG_BUILD_DIR)/configure.ac
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=libnpupnp
-PKG_VERSION:=4.0.5
+PKG_VERSION:=4.0.7
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.lesbonscomptes.com/upmpdcli/downloads
-PKG_HASH:=af9b35e26c9733343c0075cd33d05e86771fe999cc01618295d486cc522fdbff
+PKG_HASH:=30f15caa67dc83f76b0976438165aa4704a50c7e3e5444c50bb8cbad874877ca
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
--- /dev/null
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=liborcania
+PKG_VERSION:=2.1.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/babelouest/orcania/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=a83f01968ae3e68fecfb2f7029f886902718c65315008223784d2d023da515bb
+
+PKG_MAINTAINER:=Toni Uhlig <matzeton@googlemail.com>
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/orcania-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+CMAKE_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/liborcania
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Functionality required by libulfius.
+ URL:=https://github.com/babelouest/orcania
+ PROVIDES:=liborcania
+endef
+
+define Package/liborcania/description
+ Potluck with different functions for different purposes that can be shared among C programs.
+endef
+
+define Package/liborcania/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/liborcania.so.* \
+ $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,liborcania))
include $(TOPDIR)/rules.mk
PKG_NAME:=libplist
-PKG_SOURCE_VERSION:=2.1.0
-PKG_RELEASE:=2
+PKG_VERSION:=2.2.0
+PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/libimobiledevice/libplist
-PKG_MIRROR_HASH:=452ef5d6e87461a8b7a47a2274878cf200ccf480b4e81924f22ec1c445e353d0
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://www.libimobiledevice.org/downloads
+PKG_HASH:=4a5517e5377ec421df84c586ba85bb4e1d26f11ad203d7d450a907c0156fbd9a
PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
PKG_CPE_ID:=cpe:/a:libimobiledevice:libplist
-PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
endef
CONFIGURE_ARGS += \
+ --disable-static \
--without-cython
TARGET_CFLAGS += -flto
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/plist $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libplist*.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libplist-2.0*.so* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libplist*.pc $(1)/usr/lib/pkgconfig/
endef
define Package/libplist/install
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libplist.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libplist-2.0.so.* $(1)/usr/lib/
endef
define Package/libplistcxx/install
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libplist++.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libplist++-2.0.so.* $(1)/usr/lib/
endef
define Package/plistutil/install
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libulfius
+PKG_VERSION:=2.6.7
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/babelouest/ulfius/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=fbbcf693043409cc1929820b3eae5e1f7b1c93a3a8acec981946988ee3d0e85b
+
+PKG_MAINTAINER:=Toni Uhlig <matzeton@googlemail.com>
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-$(BUILD_VARIANT)/ulfius-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+CMAKE_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libulfius/default
+ SECTION:=libs
+ CATEGORY:=Libraries
+ SUBMENU:=Networking
+ TITLE:=Web Framework to build REST APIs, Webservices or any HTTP endpoint in C language.
+ URL:=https://github.com/babelouest/ulfius
+endef
+
+define Package/libulfius-nossl
+$(call Package/libulfius/default)
+ VARIANT:=nossl
+ DEFAULT_VARIANT:=1
+ DEPENDS:=+libmicrohttpd +libcurl +liborcania
+ PROVIDES:=libulfius
+endef
+
+define Package/libulfius-gnutls
+$(call Package/libulfius/default)
+ TITLE+= with SSL support
+ VARIANT:=gnutls
+ DEPENDS:=+libmicrohttpd +libcurl +libgnutls +liborcania
+ PROVIDES:=libulfius
+endef
+
+define Package/libulfius-$(BUILD_VARIANT)/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libulfius.so.* \
+ $(1)/usr/lib/
+endef
+
+CMAKE_OPTIONS += \
+ -DDOWNLOAD_DEPENDENCIES=OFF \
+ -DBUILD_WEBSOCKET=OFF \
+ -DSEARCH_ORCANIA_U=ON \
+ -DWITH_CURL=ON \
+ -DWITH_JANSSON=OFF \
+ -DWITH_STRSTR=ON \
+ -DWITH_YDER=OFF \
+ -DSEARCH_YDER=OFF \
+ -DCMAKE_BUILD_TYPE=Release
+
+ifeq ($(BUILD_VARIANT),gnutls)
+ CMAKE_OPTIONS += -DWITH_GNUTLS=ON
+else
+ CMAKE_OPTIONS += -DWITH_GNUTLS=OFF
+endif
+
+$(eval $(call BuildPackage,libulfius-gnutls))
+$(eval $(call BuildPackage,libulfius-nossl))
include $(TOPDIR)/rules.mk
PKG_NAME:=libusbmuxd
-PKG_SOURCE_VERSION:=2.0.1
-PKG_RELEASE:=2
+PKG_VERSION:=2.0.2
+PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/libimobiledevice/libusbmuxd
-PKG_MIRROR_HASH:=5078125cd4fe8c7294d4f195a8adfd1fc302101daf5d53e4cc242c3097eef8b6
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://www.libimobiledevice.org/downloads
+PKG_HASH:=cc6a808553da4efa9fa5638be256d5ae020498795d9d260d280b87074e799b20
PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
PKG_CPE_ID:=cpe:/a:libimobiledevice:libusbmuxd
-PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
This package contains the libusbmuxd utilities.
endef
-TARGET_CFLAGS += $(FPIC)
+CONFIGURE_ARGS += \
+ --disable-static
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libusbmuxd.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libusbmuxd-2.0.so* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libusbmuxd.pc $(1)/usr/lib/pkgconfig/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libusbmuxd-2.0.pc $(1)/usr/lib/pkgconfig/
endef
define Package/libusbmuxd/install
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libusbmuxd.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libusbmuxd-2.0.so.* $(1)/usr/lib/
endef
define Package/libusbmuxd-utils/install
+++ /dev/null
---- a/tools/inetcat.c
-+++ b/tools/inetcat.c
-@@ -33,6 +33,7 @@
- #include <windows.h>
- #include <winsock2.h>
- #else
-+#include <sys/select.h>
- #include <sys/socket.h>
- #include <sys/un.h>
- #include <sys/ioctl.h>
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libxcrypt
+PKG_VERSION:=4.4.16
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/besser82/libxcrypt/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=a98f65b8baffa2b5ba68ee53c10c0a328166ef4116bce3baece190c8ce01f375
+
+PKG_MAINTAINER:=
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=COPYING.LIB
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libxcrypt
+ SECTION:=libs
+ CATEGORY:=Libraries
+ URL:=https://github.com/besser82/libxcrypt
+ TITLE:=Extended crypt library
+ BUILDONLY:=1
+endef
+
+define Package/libxcrypt/description
+ libxcrypt is a modern library for one-way hashing of passwords. It supports
+ a wide variety of both modern and historical hashing methods: yescrypt,
+ gost-yescrypt, scrypt, bcrypt, sha512crypt, sha256crypt, md5crypt, SunMD5,
+ sha1crypt, NT, bsdicrypt, bigcrypt, and descrypt. It provides the traditional
+ Unix crypt and crypt_r interfaces, as well as a set of extended interfaces
+ pioneered by Openwall Linux, crypt_rn, crypt_ra, crypt_gensalt,
+ crypt_gensalt_rn, and crypt_gensalt_ra.
+endef
+
+CONFIGURE_ARGS += \
+ --disable-shared \
+ --disable-failure-tokens \
+ --disable-xcrypt-compat-files \
+ --disable-obsolete-api \
+ --enable-hashes=solaris
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib/libxcrypt
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcrypt.{a,la} $(1)/usr/lib/libxcrypt
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*crypt.pc $(1)/usr/lib/pkgconfig/
+endef
+
+$(eval $(call BuildPackage,libxcrypt))
include $(TOPDIR)/rules.mk
PKG_NAME:=libzip
-PKG_VERSION:=1.6.1
+PKG_VERSION:=1.7.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://libzip.org/download/
-PKG_HASH:=705dac7a671b3f440181481e607b0908129a9cf1ddfcba75d66436c0e7d33641
+PKG_HASH:=a020dc1b17a79faa748e43a05f8605d65e403813e8e97ad3a300a90ddba097ac
PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
PKG_NAME:=oniguruma
PKG_VERSION:=6.9.5_rev1
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE:=onig-v$(subst _,-,$(PKG_VERSION)).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/kkos/oniguruma/tar.gz/v$(PKG_VERSION)?
PKG_FIXUP:=autoreconf
include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/cmake.mk
-CMAKE_INSTALL:=1
-CMAKE_OPTIONS += -DENABLE_POSIX_API:BOOL=ON
+CONFIGURE_ARGS += --enable-posix-api
define Package/oniguruma
SECTION:=libs
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libonig.so.$(ABI_VERSION) $(1)/usr/lib/
endef
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/{include,lib}
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
+ $(SED) 's,/usr,$(STAGING_DIR)/usr,g' $(1)/usr/lib/pkgconfig/oniguruma.pc
+endef
+
$(eval $(call BuildPackage,oniguruma))
+++ /dev/null
-From afb2a1587a828bf7cd7ddd87b2e2609a9bb7fab0 Mon Sep 17 00:00:00 2001
-From: Eneas U de Queiroz <cotequeiroz@gmail.com>
-Date: Wed, 6 May 2020 08:59:54 -0300
-Subject: [PATCH] Add SOVERSION info to library when using cmake
-
-Currently the SOVERSION is different when building with cmake than the
-value used by autotools.
-This adds the version information from autotools to cmake.
-
-Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 29a1417..1c8a090 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -67,6 +67,19 @@ target_include_directories(onig PUBLIC
- target_compile_definitions(onig PUBLIC
- $<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:ONIG_STATIC>)
-
-+if(BUILD_SHARED_LIBS)
-+ # Parse SOVERSION information from LTVERSION in configure.ac
-+ file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/configure.ac" LTVERSION REGEX "^LTVERSION *= *\"?[0-9]+:[0-9]+:[0-9]+\"?")
-+ string(REGEX REPLACE "^LTVERSION *= *\"?([0-9]+:[0-9]+:[0-9]+)\"?.*$" "\\1" LTVERSION "${LTVERSION}")
-+ string(REGEX REPLACE "^([0-9]+):([0-9]+):([0-9]+)" "\\1" LTCURRENT ${LTVERSION})
-+ string(REGEX REPLACE "^([0-9]+):([0-9]+):([0-9]+)" "\\2" LTREVISION ${LTVERSION})
-+ string(REGEX REPLACE "^([0-9]+):([0-9]+):([0-9]+)" "\\3" LTAGE ${LTVERSION})
-+ math(EXPR ONIG_SOVERSION "${LTCURRENT} - ${LTAGE}")
-+ set_target_properties(onig PROPERTIES
-+ SOVERSION "${ONIG_SOVERSION}"
-+ VERSION "${ONIG_SOVERSION}.${LTAGE}.${LTREVISION}")
-+endif()
-+
- if(MSVC)
- target_compile_options(onig PRIVATE
- #/W4
include $(TOPDIR)/rules.mk
PKG_NAME:=pcre2
-PKG_VERSION:=10.34
+PKG_VERSION:=10.35
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/pcre/$(PKG_NAME)/$(PKG_VERSION)
-PKG_HASH:=74c473ffaba9e13db6951fd146e0143fe9887852ce73406a03277af1d9b798ca
+PKG_HASH:=9ccba8e02b0ce78046cdfb52e5c177f0f445e421059e43becca4359c669d4613
PKG_MAINTAINER:=Shane Peelar <lookatyouhacker@gmail.com>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENCE
PKG_CPE_ID:=cpe:/a:pcre:pcre
-PKG_FIXUP:=autoreconf
-
-PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
PKG_CONFIG_DEPENDS:=\
CONFIG_PCRE2_JIT_ENABLED
include $(TOPDIR)/rules.mk
PKG_NAME:=redis
-PKG_VERSION:=6.0.4
+PKG_VERSION:=6.0.5
PKG_RELEASE:=1
PKG_SOURCE_URL:=http://download.redis.io/releases/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=3337005a1e0c3aa293c87c313467ea8ac11984921fab08807998ba765c9943de
+PKG_HASH:=42cf86a114d2a451b898fcda96acd4d01062a7dbaaad2801d9164a36f898f596
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=alpine
-PKG_VERSION:=2.22
+PKG_VERSION:=2.23
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://alpine.x10host.com/alpine/release/src
-PKG_HASH:=849567c1b6f71fde3aaa1c97cf0577b12a525d9e22c0ea47797c4bf1cd2bbfdb
+PKG_HASH:=793a61215c005b5fcffb48f642f125915276b7ec7827508dd9e83d4c4da91f7b
PKG_MAINTAINER:=Antti Seppälä <a.seppala@gmail.com>
PKG_LICENSE:=Apache-2.0
PKG_NAME:=gerbera
PKG_VERSION:=1.5.0
-PKG_RELEASE:=7
+PKG_RELEASE:=8
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/gerbera/gerbera/tar.gz/v$(PKG_VERSION)?
define Package/gerbera
SECTION:=multimedia
CATEGORY:=Multimedia
- DEPENDS:=+file +libupnp +libsqlite3 +libexif +libuuid +libfmt $(ICONV_DEPENDS)
+ DEPENDS:=+file +libnpupnp +libsqlite3 +libexif +libuuid +libfmt $(ICONV_DEPENDS)
TITLE:=A free media server
URL:=https://gerbera.io
USERID:=gerbera:gerbera
-DWITH_DEBUG=OFF \
-DWITH_TESTS=OFF
-TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
+TARGET_CFLAGS += \
+ -ffunction-sections \
+ -fdata-sections \
+ -flto \
+ -I$(STAGING_DIR)/usr/include/npupnp/upnp
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
define Package/gerbera/install
+From 77cae5ff9b8dff22bfebac905f1579562609dd35 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Mon, 4 May 2020 12:44:34 -0700
+Subject: [PATCH] remove iconv casting
+
+iconv_t is sometimes a pointer and other times an int. Remove casting
+to make it work with the latter.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ src/util/string_converter.cc | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/util/string_converter.cc b/src/util/string_converter.cc
+index 272787ad..e1724b39 100644
--- a/src/util/string_converter.cc
+++ b/src/util/string_converter.cc
@@ -41,15 +41,15 @@ StringConverter::StringConverter(const std::string& from, const std::string& to)
cd = iconv_open(to.c_str(), from.c_str());
- if (cd == reinterpret_cast<iconv_t>(-1)) {
- cd = static_cast<iconv_t>(nullptr);
-+ if (cd == (iconv_t)(-1)) {
-+ cd = (iconv_t)(nullptr);
++ if (!cd) {
++ cd = {};
throw_std_runtime_error(std::string("iconv: ") + strerror(errno));
}
}
StringConverter::~StringConverter()
{
- if (cd != static_cast<iconv_t>(nullptr))
-+ if (cd != (iconv_t)(nullptr))
++ if (cd)
iconv_close(cd);
}
+From 59d37af2d6afd3d0ab6e8c5f3ea099435150c349 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Tue, 2 Jun 2020 15:55:25 -0700
+Subject: [PATCH] add missing unistd header
+
+Error with pid_t.
+
+Found with musl + libcxx.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ src/util/process.h | 2 ++
+ src/util/process_executor.h | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/src/util/process.h b/src/util/process.h
+index e79e016c..8778aa34 100644
--- a/src/util/process.h
+++ b/src/util/process.h
@@ -35,6 +35,8 @@
// forward declaration
class Config;
+diff --git a/src/util/process_executor.h b/src/util/process_executor.h
+index eaccf451..2a724087 100644
--- a/src/util/process_executor.h
+++ b/src/util/process_executor.h
@@ -35,6 +35,8 @@
--- /dev/null
+From 89b289cde29c731f995642a341dc5fd3b47ec7a0 Mon Sep 17 00:00:00 2001
+From: Jean-Francois Dockes <jf@dockes.org>
+Date: Mon, 4 May 2020 16:32:23 +0200
+Subject: [PATCH] The access() system call needs unistd.h, at least on Focal
+
+---
+ src/file_request_handler.cc | 2 +-
+ src/iohandler/io_handler_chainer.cc | 2 +-
+ src/serve_request_handler.cc | 2 +-
+ src/util/upnp_quirks.cc | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/file_request_handler.cc b/src/file_request_handler.cc
+index e8579b06..cfa3eaed 100644
+--- a/src/file_request_handler.cc
++++ b/src/file_request_handler.cc
+@@ -30,9 +30,9 @@
+ /// \file file_request_handler.cc
+
+ #include "file_request_handler.h" // API
+-
+ #include <filesystem>
+ #include <sys/stat.h>
++#include <unistd.h>
+ #include <utility>
+
+ #include "config/config_manager.h"
+diff --git a/src/iohandler/io_handler_chainer.cc b/src/iohandler/io_handler_chainer.cc
+index e8701cd7..beaa9d03 100644
+--- a/src/iohandler/io_handler_chainer.cc
++++ b/src/iohandler/io_handler_chainer.cc
+@@ -30,8 +30,8 @@
+ /// \file io_handler_chainer.cc
+
+ #include "io_handler_chainer.h" // API
+-
+ #include <cstdlib>
++#include <unistd.h>
+
+ #include "exceptions.h"
+
+diff --git a/src/serve_request_handler.cc b/src/serve_request_handler.cc
+index 8eaf46af..210140a3 100644
+--- a/src/serve_request_handler.cc
++++ b/src/serve_request_handler.cc
+@@ -30,8 +30,8 @@
+ /// \file serve_request_handler.cc
+
+ #include "serve_request_handler.h"
+-
+ #include <sys/stat.h>
++#include <unistd.h>
+ #include <utility>
+
+ #include "config/config_manager.h"
+diff --git a/src/util/upnp_quirks.cc b/src/util/upnp_quirks.cc
+index df137370..e6f510b4 100644
+--- a/src/util/upnp_quirks.cc
++++ b/src/util/upnp_quirks.cc
+@@ -24,13 +24,13 @@
+ /// \file upnp_quirks.cc
+
+ #include "upnp_quirks.h" // API
+-
+ #include "cds_objects.h"
+ #include "config/config_manager.h"
+ #include "server.h"
+ #include "util/tools.h"
+ #include "util/upnp_clients.h"
+ #include "util/upnp_headers.h"
++#include <unistd.h>
+
+ Quirks::Quirks(std::shared_ptr<Config> config, const struct sockaddr_storage* addr, const std::string& userAgent)
+ : config(std::move(config))
--- /dev/null
+From 2ebccbb993dca41674de295f2d513abd568f971a Mon Sep 17 00:00:00 2001
+From: Jean-Francois Dockes <jf@dockes.org>
+Date: Fri, 13 Mar 2020 09:19:04 +0100
+Subject: [PATCH] Quick changes for working with NPUPNP
+
+---
+ CMakeLists.txt | 12 +++++-------
+ src/action_request.cc | 11 +++++++++++
+ src/device_description_handler.cc | 4 ++++
+ src/file_request_handler.cc | 4 ++++
+ src/iohandler/file_io_handler.cc | 2 ++
+ src/iohandler/io_handler.cc | 2 ++
+ src/iohandler/mem_io_handler.cc | 2 ++
+ src/serve_request_handler.cc | 9 ++++++++-
+ src/server.cc | 8 ++++++++
+ src/transcoding/transcode_ext_handler.cc | 2 ++
+ src/upnp_cds.cc | 12 +++++++++++-
+ src/upnp_cm.cc | 11 +++++++++++
+ src/upnp_mrreg.cc | 10 +++++++++-
+ src/url_request_handler.cc | 6 ++++++
+ src/util/upnp_clients.cc | 12 ++++++++++++
+ src/util/upnp_headers.cc | 14 +++++++++++++-
+ src/util/upnp_headers.h | 2 ++
+ src/web/web_request_handler.cc | 4 ++++
+ 18 files changed, 116 insertions(+), 11 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 46f2ca5c..b51300d9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -293,13 +293,11 @@ if (LFS_FOUND)
+ target_link_libraries(gerbera ${LFS_LIBRARIES})
+ endif()
+
+-find_package (LibUpnp REQUIRED)
+-include_directories(${UPNP_INCLUDE_DIRS})
+-target_link_libraries (gerbera ${UPNP_LIBRARIES})
+-
+-if (UPNP_VERSION_STRING VERSION_LESS "1.12.1")
+- message(FATAL_ERROR "gerbera requires libupnp 1.12.1 or above.")
+-endif()
++#### Hard-coded NPUPNP defs for now, just for testing
++add_definitions(-DUSING_NPUPNP)
++include_directories(/usr/include/npupnp/upnp)
++target_link_libraries (gerbera -lnpupnp)
++set (UPNP_HAS_IPV6 1)
+
+ if (NOT UPNP_HAS_IPV6)
+ message(FATAL_ERROR "Gerbera requires libupnp with IPv6 support.")
+diff --git a/src/action_request.cc b/src/action_request.cc
+index 3aa4a991..29be6aaf 100644
+--- a/src/action_request.cc
++++ b/src/action_request.cc
+@@ -65,11 +65,17 @@ std::string ActionRequest::getServiceID() const
+
+ std::unique_ptr<pugi::xml_document> ActionRequest::getRequest() const
+ {
++#if !defined(USING_NPUPNP)
+ DOMString cxml = ixmlPrintDocument(UpnpActionRequest_get_ActionRequest(upnp_request));
++#endif
+ auto request = std::make_unique<pugi::xml_document>();
++#if defined(USING_NPUPNP)
++ auto ret = request->load_string(upnp_request->xmlAction.c_str());
++#else
+ auto ret = request->load_string(cxml);
+ ixmlFreeDOMString(cxml);
+
++#endif
+ if (ret.status != pugi::xml_parse_status::status_ok)
+ throw_std_runtime_error("Unable to parse ixml");
+
+@@ -94,6 +100,7 @@ void ActionRequest::update()
+ std::string xml = buf.str();
+ log_debug("ActionRequest::update(): {}", xml.c_str());
+
++#if !defined(USING_NPUPNP)
+ IXML_Document* result = nullptr;
+ int err = ixmlParseBufferEx(xml.c_str(), &result);
+
+@@ -105,6 +112,10 @@ void ActionRequest::update()
+ UpnpActionRequest_set_ActionResult(upnp_request, result);
+ UpnpActionRequest_set_ErrCode(upnp_request, errCode);
+ }
++#else
++ UpnpActionRequest_set_xmlResponse(upnp_request, xml);
++ UpnpActionRequest_set_ErrCode(upnp_request, errCode);
++#endif
+ } else {
+ // ok, here there can be two cases
+ // either the function below already did set an error code,
+diff --git a/src/device_description_handler.cc b/src/device_description_handler.cc
+index 6aca745e..cf2e8015 100644
+--- a/src/device_description_handler.cc
++++ b/src/device_description_handler.cc
+@@ -45,7 +45,11 @@ void DeviceDescriptionHandler::getInfo(const char* filename, UpnpFileInfo* info)
+ {
+ // We should be able to do the generation here, but libupnp doesnt support the request cookies yet
+ UpnpFileInfo_set_FileLength(info, -1);
++#if defined(USING_NPUPNP)
+ UpnpFileInfo_set_ContentType(info, "application/xml");
++#else
++ UpnpFileInfo_set_ContentType(info, ixmlCloneDOMString("application/xml"));
++#endif
+ UpnpFileInfo_set_IsReadable(info, 1);
+ UpnpFileInfo_set_IsDirectory(info, 0);
+ }
+diff --git a/src/file_request_handler.cc b/src/file_request_handler.cc
+index e8579b06..615f7e85 100644
+--- a/src/file_request_handler.cc
++++ b/src/file_request_handler.cc
+@@ -238,7 +238,11 @@ void FileRequestHandler::getInfo(const char* filename, UpnpFileInfo* info)
+
+ UpnpFileInfo_set_LastModified(info, statbuf.st_mtime);
+ UpnpFileInfo_set_IsDirectory(info, S_ISDIR(statbuf.st_mode));
++#if defined(USING_NPUPNP)
++ UpnpFileInfo_set_ContentType(info, mimeType);
++#else
+ UpnpFileInfo_set_ContentType(info, ixmlCloneDOMString(mimeType.c_str()));
++#endif
+
+ headers->writeHeaders(info);
+
+diff --git a/src/iohandler/file_io_handler.cc b/src/iohandler/file_io_handler.cc
+index 7e239250..ab5155ec 100644
+--- a/src/iohandler/file_io_handler.cc
++++ b/src/iohandler/file_io_handler.cc
+@@ -32,7 +32,9 @@
+ #include "file_io_handler.h" // API
+
+ #include <cstdio>
++#ifndef USING_NPUPNP
+ #include <ixml.h>
++#endif
+ #include <utility>
+
+ #include "cds_objects.h"
+diff --git a/src/iohandler/io_handler.cc b/src/iohandler/io_handler.cc
+index f9789425..75a36130 100644
+--- a/src/iohandler/io_handler.cc
++++ b/src/iohandler/io_handler.cc
+@@ -31,7 +31,9 @@
+
+ #include "io_handler.h" // API
+
++#ifndef USING_NPUPNP
+ #include <ixml.h>
++#endif
+ #include <unistd.h>
+
+ #include "server.h"
+diff --git a/src/iohandler/mem_io_handler.cc b/src/iohandler/mem_io_handler.cc
+index 5574a16d..2916fd12 100644
+--- a/src/iohandler/mem_io_handler.cc
++++ b/src/iohandler/mem_io_handler.cc
+@@ -35,7 +35,9 @@
+ #include <cstdlib>
+ #include <cstring>
+ #include <ctime>
++#ifndef USING_NPUPNP
+ #include <ixml.h>
++#endif
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+diff --git a/src/serve_request_handler.cc b/src/serve_request_handler.cc
+index 8eaf46af..b9bd7b25 100644
+--- a/src/serve_request_handler.cc
++++ b/src/serve_request_handler.cc
+@@ -94,7 +94,11 @@ void ServeRequestHandler::getInfo(const char* filename, UpnpFileInfo* info)
+ UpnpFileInfo_set_IsReadable(info, 0);
+ }
+
++#if defined(USING_NPUPNP)
++ UpnpFileInfo_set_ContentType(info, mimetype);
++#else
+ UpnpFileInfo_set_ContentType(info, ixmlCloneDOMString(mimetype.c_str()));
++#endif
+ } else {
+ throw_std_runtime_error("Not a regular file: " + path);
+ }
+@@ -157,8 +161,11 @@ std::unique_ptr<IOHandler> ServeRequestHandler::open(const char* filename,
+ info->is_readable = 0;
+ }
+
+-
++#if defined(USING_NPUPNP)
++ info->content_type = mimetype;
++#else
+ info->content_type = ixmlCloneDOMString(mimetype.c_str());
++#endif
+ */
+ } else {
+ throw_std_runtime_error("Not a regular file: " + path);
+diff --git a/src/server.cc b/src/server.cc
+index 913a4913..7cbabc71 100644
+--- a/src/server.cc
++++ b/src/server.cc
+@@ -398,9 +398,17 @@ int Server::handleUpnpClientEvent(Upnp_EventType eventType, const void* event)
+ case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE:
+ case UPNP_DISCOVERY_SEARCH_RESULT: {
+ auto d_event = reinterpret_cast<const UpnpDiscovery*>(event);
++#if defined(USING_NPUPNP)
++ const char* userAgent = UpnpDiscovery_get_Os_cstr(d_event);
++#else
+ const char* userAgent = UpnpString_get_String(UpnpDiscovery_get_Os(d_event));
++#endif
+ const struct sockaddr_storage* destAddr = UpnpDiscovery_get_DestAddr(d_event);
++#if defined(USING_NPUPNP)
++ const char* location = UpnpDiscovery_get_Location_cstr(d_event);
++#else
+ const char* location = UpnpString_get_String(UpnpDiscovery_get_Location(d_event));
++#endif
+
+ Clients::addClientByDiscovery(destAddr, userAgent, location);
+ break;
+diff --git a/src/transcoding/transcode_ext_handler.cc b/src/transcoding/transcode_ext_handler.cc
+index 4dad0e3f..412c1370 100644
+--- a/src/transcoding/transcode_ext_handler.cc
++++ b/src/transcoding/transcode_ext_handler.cc
+@@ -37,7 +37,9 @@
+ #include <cstring>
+ #include <fcntl.h>
+ #include <filesystem>
++#ifndef USING_NPUPNP
+ #include <ixml.h>
++#endif
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+diff --git a/src/upnp_cds.cc b/src/upnp_cds.cc
+index 6491fa78..a758655c 100644
+--- a/src/upnp_cds.cc
++++ b/src/upnp_cds.cc
+@@ -284,6 +284,7 @@ void ContentDirectoryService::processSubscriptionRequest(const std::unique_ptr<S
+ propset->print(buf, "", 0);
+ std::string xml = buf.str();
+
++#if !defined(USING_NPUPNP)
+ IXML_Document* event = nullptr;
+ int err = ixmlParseBufferEx(xml.c_str(), &event);
+ if (err != IXML_SUCCESS) {
+@@ -295,6 +296,11 @@ void ContentDirectoryService::processSubscriptionRequest(const std::unique_ptr<S
+ DESC_CDS_SERVICE_ID, event, request->getSubscriptionID().c_str());
+
+ ixmlDocument_free(event);
++#else
++ UpnpAcceptSubscriptionXML(
++ deviceHandle, config->getOption(CFG_SERVER_UDN).c_str(),
++ DESC_CDS_SERVICE_ID, xml, request->getSubscriptionID().c_str());
++#endif
+ log_debug("end");
+ }
+
+@@ -313,6 +319,7 @@ void ContentDirectoryService::sendSubscriptionUpdate(const std::string& containe
+ propset->print(buf, "", 0);
+ std::string xml = buf.str();
+
++#if !defined(USING_NPUPNP)
+ IXML_Document* event = nullptr;
+ int err = ixmlParseBufferEx(xml.c_str(), &event);
+ if (err != IXML_SUCCESS) {
+@@ -323,8 +330,11 @@ void ContentDirectoryService::sendSubscriptionUpdate(const std::string& containe
+ UpnpNotifyExt(deviceHandle,
+ config->getOption(CFG_SERVER_UDN).c_str(),
+ DESC_CDS_SERVICE_ID, event);
+-
+ ixmlDocument_free(event);
++#else
++ UpnpNotifyXML(deviceHandle, config->getOption(CFG_SERVER_UDN).c_str(),
++ DESC_CDS_SERVICE_ID, xml);
++#endif
+
+ log_debug("end");
+ }
+diff --git a/src/upnp_cm.cc b/src/upnp_cm.cc
+index aa608480..33f86bd2 100644
+--- a/src/upnp_cm.cc
++++ b/src/upnp_cm.cc
+@@ -127,6 +127,7 @@ void ConnectionManagerService::processSubscriptionRequest(const std::unique_ptr<
+ propset->print(buf, "", 0);
+ std::string xml = buf.str();
+
++#if !defined(USING_NPUPNP)
+ IXML_Document* event = nullptr;
+ int err = ixmlParseBufferEx(xml.c_str(), &event);
+ if (err != IXML_SUCCESS) {
+@@ -138,6 +139,11 @@ void ConnectionManagerService::processSubscriptionRequest(const std::unique_ptr<
+ DESC_CM_SERVICE_ID, event, request->getSubscriptionID().c_str());
+
+ ixmlDocument_free(event);
++#else
++ UpnpAcceptSubscriptionXML(
++ deviceHandle, config->getOption(CFG_SERVER_UDN).c_str(),
++ DESC_CM_SERVICE_ID, xml, request->getSubscriptionID().c_str());
++#endif
+ }
+
+ void ConnectionManagerService::sendSubscriptionUpdate(const std::string& sourceProtocol_CSV)
+@@ -150,6 +156,7 @@ void ConnectionManagerService::sendSubscriptionUpdate(const std::string& sourceP
+ propset->print(buf, "", 0);
+ std::string xml = buf.str();
+
++#if !defined(USING_NPUPNP)
+ IXML_Document* event = nullptr;
+ int err = ixmlParseBufferEx(xml.c_str(), &event);
+ if (err != IXML_SUCCESS) {
+@@ -162,4 +169,8 @@ void ConnectionManagerService::sendSubscriptionUpdate(const std::string& sourceP
+ DESC_CM_SERVICE_ID, event);
+
+ ixmlDocument_free(event);
++#else
++ UpnpNotifyXML(deviceHandle, config->getOption(CFG_SERVER_UDN).c_str(),
++ DESC_CM_SERVICE_ID, xml);
++#endif
+ }
+diff --git a/src/upnp_mrreg.cc b/src/upnp_mrreg.cc
+index 16eefaed..f993f452 100644
+--- a/src/upnp_mrreg.cc
++++ b/src/upnp_mrreg.cc
+@@ -34,7 +34,9 @@
+ #include <utility>
+
+ #include "config/config_manager.h"
+-#include "ixml.h"
++#ifndef USING_NPUPNP
++#include <ixml.h>
++#endif
+ #include "server.h"
+ #include "storage/storage.h"
+ #include "upnp_xml.h"
+@@ -120,6 +122,7 @@ void MRRegistrarService::processSubscriptionRequest(const std::unique_ptr<Subscr
+ propset->print(buf, "", 0);
+ std::string xml = buf.str();
+
++#if !defined(USING_NPUPNP)
+ IXML_Document* event = nullptr;
+ int err = ixmlParseBufferEx(xml.c_str(), &event);
+ if (err != IXML_SUCCESS) {
+@@ -131,6 +134,11 @@ void MRRegistrarService::processSubscriptionRequest(const std::unique_ptr<Subscr
+ DESC_MRREG_SERVICE_ID, event, request->getSubscriptionID().c_str());
+
+ ixmlDocument_free(event);
++#else
++ UpnpAcceptSubscriptionXML(
++ deviceHandle, config->getOption(CFG_SERVER_UDN).c_str(),
++ DESC_MRREG_SERVICE_ID, xml, request->getSubscriptionID().c_str());
++#endif
+ }
+
+ // TODO: FIXME
+diff --git a/src/url_request_handler.cc b/src/url_request_handler.cc
+index f2a99c94..66af027b 100644
+--- a/src/url_request_handler.cc
++++ b/src/url_request_handler.cc
+@@ -32,7 +32,9 @@
+ #ifdef HAVE_CURL
+ #include "url_request_handler.h" // API
+
++#ifndef USING_NPUPNP
+ #include <ixml.h>
++#endif
+ #include <utility>
+
+ #include "config/config_manager.h"
+@@ -138,7 +140,11 @@ void URLRequestHandler::getInfo(const char* filename, UpnpFileInfo* info)
+ // ixmlCloneDOMString(header.c_str()));
+ // }
+
++#if defined(USING_NPUPNP)
++ UpnpFileInfo_set_ContentType(info, mimeType);
++#else
+ UpnpFileInfo_set_ContentType(info, ixmlCloneDOMString(mimeType.c_str()));
++#endif
+ log_debug("web_get_info(): end");
+
+ /// \todo transcoding for get_info
+diff --git a/src/util/upnp_clients.cc b/src/util/upnp_clients.cc
+index ab02b58d..7bc85d77 100644
+--- a/src/util/upnp_clients.cc
++++ b/src/util/upnp_clients.cc
+@@ -203,6 +203,15 @@ bool Clients::getInfoByType(const std::string& match, ClientMatchType type, cons
+
+ bool Clients::downloadDescription(const std::string& location, std::unique_ptr<pugi::xml_document>& xml)
+ {
++#if defined(USING_NPUPNP)
++ std::string description, ct;
++ int errCode = UpnpDownloadUrlItem(location, description, ct);
++ if (errCode != UPNP_E_SUCCESS) {
++ log_debug("Error obtaining client description from {} -- error = {}", location, errCode);
++ return false;
++ }
++ const char *cxml = description.c_str();
++#else
+ IXML_Document* descDoc = nullptr;
+ int errCode = UpnpDownloadXmlDoc(location.c_str(), &descDoc);
+ if (errCode != UPNP_E_SUCCESS) {
+@@ -211,12 +220,15 @@ bool Clients::downloadDescription(const std::string& location, std::unique_ptr<p
+ }
+
+ DOMString cxml = ixmlPrintDocument(descDoc);
++#endif
+ xml = std::make_unique<pugi::xml_document>();
+ auto ret = xml->load_string(cxml);
+
++#if !defined(USING_NPUPNP)
+ ixmlFreeDOMString(cxml);
+ ixmlDocument_free(descDoc);
+
++#endif
+ if (ret.status != pugi::xml_parse_status::status_ok) {
+ log_debug("Unable to parse xml client description from {}", location);
+ return false;
+diff --git a/src/util/upnp_headers.cc b/src/util/upnp_headers.cc
+index c05cffe6..19ba88ca 100644
+--- a/src/util/upnp_headers.cc
++++ b/src/util/upnp_headers.cc
+@@ -96,18 +96,29 @@ void Headers::writeHeaders(UpnpFileInfo* fileInfo) const
+ if (headers == nullptr)
+ return;
+
++#if defined(USING_NPUPNP)
++ for (auto iter : *headers) {
++ fileInfo->response_headers.push_back(iter);
++ }
++#else
+ auto head = const_cast<UpnpListHead*>(UpnpFileInfo_get_ExtraHeadersList(fileInfo));
+ for (auto iter : *headers) {
+ UpnpExtraHeaders* h = UpnpExtraHeaders_new();
+ UpnpExtraHeaders_set_resp(h, formatHeader(iter, false).c_str());
+ UpnpListInsert(head, UpnpListEnd(head), const_cast<UpnpListHead*>(UpnpExtraHeaders_get_node(h)));
+ }
++#endif
+ }
+
+ std::unique_ptr<std::map<std::string, std::string>> Headers::readHeaders(UpnpFileInfo* fileInfo)
+ {
+ auto ret = std::make_unique<std::map<std::string, std::string>>();
+
++#if defined(USING_NPUPNP)
++ for (const auto& entry : fileInfo->request_headers) {
++ ret->insert(entry);
++ }
++#else
+ auto head = const_cast<UpnpListHead*>(UpnpFileInfo_get_ExtraHeadersList(fileInfo));
+ UpnpListIter pos;
+ for (pos = UpnpListBegin(head); pos != UpnpListEnd(head); pos = UpnpListNext(head, pos)) {
+@@ -116,6 +127,7 @@ std::unique_ptr<std::map<std::string, std::string>> Headers::readHeaders(UpnpFil
+ auto add = parseHeader(header);
+ ret->insert(add);
+ }
+-
++#endif
++
+ return ret;
+ }
+diff --git a/src/util/upnp_headers.h b/src/util/upnp_headers.h
+index 9677d6e4..dd839236 100644
+--- a/src/util/upnp_headers.h
++++ b/src/util/upnp_headers.h
+@@ -26,7 +26,9 @@
+ #ifndef GERBERA_HEADERS_H
+ #define GERBERA_HEADERS_H
+
++#if !defined(USING_NPUPNP)
+ #include <ExtraHeaders.h>
++#endif
+ #include <map>
+ #include <memory>
+ #include <upnp.h>
+diff --git a/src/web/web_request_handler.cc b/src/web/web_request_handler.cc
+index 71fc9fd5..2ca6601b 100644
+--- a/src/web/web_request_handler.cc
++++ b/src/web/web_request_handler.cc
+@@ -120,7 +120,11 @@ void WebRequestHandler::getInfo(const char* filename, UpnpFileInfo* info)
+
+ contentType = mimetype + "; charset=" + DEFAULT_INTERNAL_CHARSET;
+
++#if defined(USING_NPUPNP)
++ UpnpFileInfo_set_ContentType(info, contentType);
++#else
+ UpnpFileInfo_set_ContentType(info, ixmlCloneDOMString(contentType.c_str()));
++#endif
+ Headers headers;
+ headers.addHeader(std::string { "Cache-Control" }, std::string { "no-cache, must-revalidate" });
+ headers.writeHeaders(info);
include $(TOPDIR)/rules.mk
PKG_NAME:=minidlna
-PKG_RELEASE:=6
+PKG_RELEASE:=7
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://git.code.sf.net/p/minidlna/git
[ "$enabled" -gt 0 ] || return 1
config_get val "config" uuid
- [ "$val" = '' ] && uci set minidlna.config.uuid="$(cat /proc/sys/kernel/random/uuid)" && uci commit
+ [ "$val" = '' ] && uci set minidlna.config.uuid="$(cat /proc/sys/kernel/random/uuid)" && uci commit minidlna
minidlna_create_config config || return 1
procd_set_param respawn
procd_close_instance
}
+
+service_triggers() {
+ procd_add_reload_trigger "minidlna"
+}
include $(TOPDIR)/rules.mk
PKG_NAME:=motion
-PKG_VERSION:=4.2.2
-PKG_RELEASE:=3
-
-PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
-PKG_LICENSE:=GPLv2
-PKG_LICENSE_FILES:=COPYING
-PKG_CPE_ID:=cpe:/a:lavrsen:motion
+PKG_VERSION:=4.3.1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-release-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/Motion-Project/motion/tar.gz/release-$(PKG_VERSION)?
-PKG_HASH:=c8d40976b41da8eb9f9f7128599403a312fc26b7226bf3787d75f78cb5a6cc6e
+PKG_HASH:=545712b10fc4a0134e994b7d8a3773c1c22f0bf4bd7afea7d7ffff357aca9ea5
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-release-$(PKG_VERSION)
-PKG_BUILD_PARALLEL:=1
+PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=COPYING
+PKG_CPE_ID:=cpe:/a:lavrsen:motion
+
PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
define Package/motion
SECTION:=multimedia
CATEGORY:=Multimedia
- DEPENDS:=+libjpeg +libpthread +libmicrohttpd
+ DEPENDS:=+libjpeg +libpthread +libmicrohttpd $(INTL_DEPENDS) +TARGET_bcm27xx:bcm27xx-userland
TITLE:=webcam motion sensing and logging
URL:=https://motion-project.github.io/
endef
/etc/motion.conf
endef
-CONFIGURE_ARGS+= \
- --without-optimizecpu \
+CONFIGURE_ARGS += \
+ --without-bktr \
+ --without-webp \
+ --with$(if $(CONFIG_TARGET_bcm27xx),,out)-mmal \
--without-ffmpeg \
- --without-jpeg-mmx \
- --without-sdl \
+ --without-mariadb \
--without-mysql \
--without-pgsql \
--without-sqlite3 \
- --without-bktr \
- --without-webp
+ --without-optimizecpu
define Package/motion/install
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d
$(INSTALL_CONF) ./files/motion.conf $(1)/etc/config/motion
$(INSTALL_BIN) ./files/motion.init $(1)/etc/init.d/motion
- $(CP) $(PKG_BUILD_DIR)/motion-dist.conf $(1)/etc/motion.conf
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/motion/motion-dist.conf $(1)/etc/motion.conf
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/motion $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/motion $(1)/usr/bin/
endef
$(eval $(call BuildPackage,motion))
+++ /dev/null
-From c9bef916853c709fbf7f305da36da33ac4881660 Mon Sep 17 00:00:00 2001
-From: Mr-DaveDev <MotionMrDaveDev@gmail.com>
-Date: Sun, 1 Dec 2019 14:30:10 -0700
-Subject: [PATCH] Remove poll option for mhd
-
-closes #1063
----
- webu.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/webu.c
-+++ b/webu.c
-@@ -1828,7 +1828,7 @@ static void webu_mhd_opts(struct mhdstar
- static void webu_mhd_flags(struct mhdstart_ctx *mhdst){
-
- /* This sets the MHD startup flags based upon what user put into configuration */
-- mhdst->mhd_flags = MHD_USE_THREAD_PER_CONNECTION | MHD_USE_POLL| MHD_USE_SELECT_INTERNALLY;
-+ mhdst->mhd_flags = MHD_USE_THREAD_PER_CONNECTION;
-
- if (mhdst->ipv6) mhdst->mhd_flags = mhdst->mhd_flags | MHD_USE_DUAL_STACK;
-
--- /dev/null
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,6 +1,6 @@
+ ACLOCAL_AMFLAGS = -I m4
+
+-SUBDIRS = src po man
++SUBDIRS = src
+
+ sysconfdir = @sysconfdir@/$(PACKAGE)
+ sysconf_DATA = \
+--- a/configure.ac
++++ b/configure.ac
+@@ -472,8 +472,6 @@ AC_SUBST(AM_LDFLAGS, "$TEMP_LDFLAGS")
+ AC_CONFIG_FILES([
+ Makefile
+ src/Makefile
+- po/Makefile.in
+- man/Makefile
+ data/camera1-dist.conf
+ data/camera2-dist.conf
+ data/camera3-dist.conf
include $(TOPDIR)/rules.mk
PKG_NAME:=youtube-dl
-PKG_VERSION:=2020.6.6
+PKG_VERSION:=2020.6.16.1
PKG_RELEASE:=1
PYPI_NAME:=youtube_dl
-PKG_HASH:=74e6cc7395060fc39f0b8e21c1e4707486da904c96145bd875187bda2da83b04
+PKG_HASH:=9fc0389a1bbbeb609a5bb4ad5630dea107a9d1a24c73721c611a78c234309a75
PKG_MAINTAINER:=Adrian Panella <ianchi74@outlook.com>, Josef Schlehofer <pepe.schlehofer@gmail.com>
PKG_LICENSE:=Unlicense
include $(TOPDIR)/rules.mk
PKG_NAME:=ariang
-PKG_VERSION:=1.1.4
-PKG_RELEASE:=2
+PKG_VERSION:=1.1.6
+PKG_RELEASE:=1
-PKG_SOURCE_URL:=https://codeload.github.com/mayswind/AriaNg-DailyBuild/tar.gz/$(PKG_VERSION)?
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=0a591564ffb863d5ce55694d26ad63934d364b9408119c191a2f8276f286f2b6
+PKG_SOURCE_URL:=https://codeload.github.com/mayswind/AriaNg-DailyBuild/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=ac5a55f1549c5458dab4422ddf420055909e11d6e5ec8db0f13e52241f6c2917
PKG_BUILD_DIR:=$(BUILD_DIR)/AriaNg-DailyBuild-$(PKG_VERSION)
+PKG_MAINTAINER:=Ansuel Smith <ansuelsmth@gmail.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Ansuel Smith <ansuelsmth@gmail.com>
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=conserver
-PKG_VERSION:=8.2.4
+PKG_VERSION:=8.2.5
PKG_RELEASE:=1
-PKG_MAINTAINER:=Bjørn Mork <bjorn@mork.no>
-PKG_SOURCE_URL:=https://codeload.github.com/conserver/conserver/tar.gz/v$(PKG_VERSION)?
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=8d8b263d9531ebb827257bd67baf9200cac4fb7ffbe033122686e39ca42cddd6
+PKG_SOURCE_URL:=https://codeload.github.com/conserver/conserver/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=43be704932bca365d7bf34be929851cf0bb7a229cc28391b3302ae19d6e6565b
+PKG_MAINTAINER:=Bjørn Mork <bjorn@mork.no>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
PKG_NAME:=keepalived
PKG_VERSION:=2.0.20
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.keepalived.org/software
local notification_email
printf '%bscript_user root\n' "${INDENT_1}" >> "$KEEPALIVED_CONF"
- printf '%benabled_script_security\n' "${INDENT_1}" >> "$KEEPALIVED_CONF"
+ printf '%benable_script_security\n' "${INDENT_1}" >> "$KEEPALIVED_CONF"
config_get notification_email "$1" notification_email
print_list_indent notification_email
include $(TOPDIR)/rules.mk
PKG_NAME:=knxd
-PKG_VERSION:=0.14.38
-PKG_RELEASE:=2
+PKG_VERSION:=0.14.39
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/knxd/knxd/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=bb0343154ee1d0d91b1b342f04ee163739e906ac530b7490b5aec516bb485d59
+PKG_HASH:=9ed920fa3c4f12ededd4d413f27f149c91ce0846c561a7d19478502c06ac95f1
PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
PKG_LICENSE:=GPL-2.0-or-later
-test -d .git || exit
-git describe --tags
-+echo -n "0.14.38"
++echo -n "0.14.39"
+++ /dev/null
---- a/src/libserver/usblowlevel.cpp 2020-06-03 16:41:02.128182612 +0200
-+++ b/src/libserver/usblowlevel.cpp 2020-06-03 16:41:31.660704440 +0200
-@@ -155,6 +155,7 @@
- {
- t->setAuxName("usbL");
- send_timeout = cfg->value("send-timeout", 1000);
-+ loop = nullptr;
- read_trigger.set<USBLowLevelDriver,&USBLowLevelDriver::read_trigger_cb>(this);
- write_trigger.set<USBLowLevelDriver,&USBLowLevelDriver::write_trigger_cb>(this);
- read_trigger.start();
PKG_NAME:=lighttpd
PKG_VERSION:=1.4.55
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://download.lighttpd.net/lighttpd/releases-1.4.x
--without-webdav-props
endif
+ifneq ($(SDK)$(CONFIG_PACKAGE_lighttpd-mod-authn_pam),)
+ CONFIGURE_ARGS+= \
+ --with-pam
+else
+ CONFIGURE_ARGS+= \
+ --without-pam
+endif
+
define Build/Configure
$(call Build/Configure/Default)
# XXX: override pcre (mis)detection by ./configure when cross-compiling
$(eval $(call BuildPlugin,authn_gssapi,Kerberos-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_gssapi:krb5-libs,20))
$(eval $(call BuildPlugin,authn_ldap,LDAP-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_ldap:libopenldap,20))
$(eval $(call BuildPlugin,authn_mysql,Mysql-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_mysql:libmysqlclient,20))
+$(eval $(call BuildPlugin,authn_pam,PAM-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_pam:libpam,20))
# Finally, everything else.
$(eval $(call BuildPlugin,access,Access restrictions,,30))
PKG_NAME:=miniupnpd
PKG_VERSION:=2.1.20191006
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_SOURCE_URL:=https://miniupnp.tuxfamily.org/files
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
[ "$ACTION" != "ifup" ] && procd_running "miniupnpd" "*" && exit 0
tmpconf="/var/etc/miniupnpd.conf"
-external_iface=$(uci get upnpd.config.external_iface)
-external_iface6=$(uci get upnpd.config.external_iface6)
-external_zone=$(uci get upnpd.config.external_zone)
+external_iface=$(uci -q get upnpd.config.external_iface)
+external_iface6=$(uci -q get upnpd.config.external_iface6)
+external_zone=$(uci -q get upnpd.config.external_zone)
. /lib/functions/network.sh
[ "$DEVICE" != "$ifname" ] && [ "$DEVICE" != "$ifname6" ] && exit 0
-grep -q "^ext_ifname=$ifname" "$tmpconf" && grep -q "^ext_ifname6=$ifname6" "$tmpconf" && exit 0
+grep -qs "^ext_ifname=$ifname" "$tmpconf" && grep -qs "^ext_ifname6=$ifname6" "$tmpconf" && exit 0
/etc/init.d/miniupnpd restart
include $(TOPDIR)/rules.mk
PKG_NAME:=mwan3
-PKG_VERSION:=2.8.5
+PKG_VERSION:=2.8.7
PKG_RELEASE:=1
PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>
PKG_LICENSE:=GPL-2.0
#!/bin/sh /etc/rc.common
START=19
-
-reload() {
- /usr/sbin/mwan3 restart
-}
+USE_PROCD=1
boot() {
. /lib/config/uci.sh
uci_toggle_state mwan3 globals enabled "1"
+ mwan3_boot=1
+ rc_procd start_service
+}
+
+reload_service() {
+ /usr/sbin/mwan3 restart
}
-start() {
+start_service() {
+ [ -n "${mwan3_boot}" ] && return 0
/usr/sbin/mwan3 start
}
-stop() {
+stop_service() {
/usr/sbin/mwan3 stop
}
+
+service_triggers() {
+ procd_add_reload_trigger 'mwan3'
+}
local tid=1
local idx=0
local ret=1
+ local tbl=""
mkdir -p /tmp/mwan3rtmon
($IP4 route list table main | grep -v "^default\|linkdown" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv4.main
while uci get mwan3.@interface[$idx] >/dev/null 2>&1 ; do
idx=$((idx+1))
tid=$idx
[ "$(uci get mwan3.@interface[$((idx-1))].family)" = "ipv4" ] && {
- if $IP4 route list table $tid | grep -q ^default; then
- ($IP4 route list table $tid | grep -v "^default\|linkdown" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv4.$tid
+ tbl=$($IP4 route list table $tid)
+ if echo "$tbl" | grep -q ^default; then
+ (echo "$tbl" | grep -v "^default\|linkdown" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv4.$tid
cat /tmp/mwan3rtmon/ipv4.$tid | grep -v -x -F -f /tmp/mwan3rtmon/ipv4.main | while read line; do
$IP4 route del table $tid $line
done
local tid=1
local idx=0
local ret=1
+ local tbl=""
mkdir -p /tmp/mwan3rtmon
- ($IP6 route list table main | grep -v "^default\|^::/0\|^unreachable" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv6.main
+ ($IP6 route list table main | grep -v "^default\|^::/0\|^fe80::/64\|^unreachable" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv6.main
while uci get mwan3.@interface[$idx] >/dev/null 2>&1 ; do
idx=$((idx+1))
tid=$idx
[ "$(uci get mwan3.@interface[$((idx-1))].family)" = "ipv6" ] && {
- if $IP6 route list table $tid | grep -q "^default\|^::/0"; then
- ($IP6 route list table $tid | grep -v "^default\|^::/0\|^unreachable" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv6.$tid
+ tbl=$($IP6 route list table $tid)
+ if echo "$tbl" | grep -q "^default\|^::/0"; then
+ (echo "$tbl" | grep -v "^default\|^::/0\|^unreachable" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv6.$tid
cat /tmp/mwan3rtmon/ipv6.$tid | grep -v -x -F -f /tmp/mwan3rtmon/ipv6.main | while read line; do
$IP6 route del table $tid $line
done
mwan3_set_connected_iptables()
{
- local connected_network_v4 connected_network_v6
+ local connected_network_v4 connected_network_v6 source_network_v6
$IPS -! create mwan3_connected_v4 hash:net
$IPS create mwan3_connected_v4_temp hash:net
$IPS -! add mwan3_connected mwan3_connected_v4
$IPS -! add mwan3_connected mwan3_connected_v6
+ $IPS -! create mwan3_source_v6 hash:net family inet6
+ $IPS create mwan3_source_v6_temp hash:net family inet6
+ for source_network_v6 in $($IP6 addr ls | sed -ne 's/ *inet6 \([^ \/]*\).* scope global.*/\1/p'); do
+ $IPS -! add mwan3_source_v6_temp $source_network_v6
+ done
+ $IPS swap mwan3_source_v6_temp mwan3_source_v6
+ $IPS destroy mwan3_source_v6_temp
+
$IPS -! create mwan3_dynamic_v4 hash:net
$IPS -! add mwan3_connected mwan3_dynamic_v4
-p ipv6-icmp \
-m icmp6 --icmpv6-type 137 \
-j RETURN
+ # do not mangle outgoing echo request
+ $IPT6 -A mwan3_hook \
+ -m set --match-set mwan3_source_v6 src \
+ -p ipv6-icmp \
+ -m icmp6 --icmpv6-type 128 \
+ -j RETURN
+
fi
$IPT -A mwan3_hook \
-j CONNMARK --restore-mark --nfmask $MMX_MASK --ctmask $MMX_MASK
mwan3_set_user_iptables_rule()
{
- local ipset family proto policy src_ip src_port sticky dest_ip
- local dest_port use_policy timeout rule policy IPT
+ local ipset family proto policy src_ip src_port src_iface src_dev
+ local sticky dest_ip dest_port use_policy timeout rule policy IPT
local global_logging rule_logging loglevel
rule="$1"
config_get timeout $1 timeout 600
config_get ipset $1 ipset
config_get proto $1 proto all
- config_get src_ip $1 src_ip 0.0.0.0/0
- config_get src_port $1 src_port 0:65535
- config_get dest_ip $1 dest_ip 0.0.0.0/0
- config_get dest_port $1 dest_port 0:65535
+ config_get src_ip $1 src_ip
+ config_get src_iface $1 src_iface
+ network_get_device src_dev $src_iface
+ config_get src_port $1 src_port
+ config_get dest_ip $1 dest_ip
+ config_get dest_port $1 dest_port
config_get use_policy $1 use_policy
config_get family $1 family any
+ [ -z "$dest_ip" ] && unset dest_ip
+ [ -z "$src_ip" ] && unset src_ip
+ [ -z "$ipset" ] && unset ipset
+ [ -z "$src_port" ] && unset src_port
+ [ -z "$dest_port" ] && unset dest_port
+ [ "$proto" != 'tcp' ] && [ "$proto" != 'udp' ] && {
+ [ -n "$src_port" ] && {
+ $LOG warn "src_port set to '$src_port' but proto set to '$proto' not tcp or udp. src_port will be ignored"
+ }
+ [ -n "$dest_port" ] && {
+ $LOG warn "dest_port set to '$dest_port' but proto set to '$proto' not tcp or udp. dest_port will be ignored"
+ }
+ unset src_port
+ unset dest_port
+ }
+
config_get rule_logging $1 logging 0
config_get global_logging globals logging 0
config_get loglevel globals loglevel notice
fi
fi
+ for IPT in "$IPT4" "$IPT6"; do
+ [ "$family" == "ipv4" ] && [ "$IPT" == "$IPT6" ] && continue
+ [ "$family" == "ipv6" ] && [ "$IPT" == "$IPT4" ] && continue
+ [ "$global_logging" = "1" ] && [ "$rule_logging" = "1" ] && {
+ $IPT -A mwan3_rules \
+ -p $proto \
+ ${src_ip:+-s} $src_ip \
+ ${src_dev:+-i} $src_dev \
+ ${dest_ip:+-d} $dest_ip\
+ $ipset \
+ ${src_port:+-m} ${src_port:+multiport} ${src_port:+--sports} $src_port \
+ ${dest_port:+-m} ${dest_port:+multiport} ${dest_port:+--dports} $dest_port \
+ -m mark --mark 0/$MMX_MASK \
+ -m comment --comment "$1" \
+ -j LOG --log-level "$loglevel" --log-prefix "MWAN3($1)" &> /dev/null
+ }
- if [ "$family" == "any" ]; then
-
- for IPT in "$IPT4" "$IPT6"; do
- case $proto in
- tcp|udp)
- [ "$global_logging" = "1" ] && [ "$rule_logging" = "1" ] && {
- $IPT -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m multiport --sports $src_port \
- -m multiport --dports $dest_port \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j LOG --log-level "$loglevel" --log-prefix "MWAN3($1)" &> /dev/null
- }
- $IPT -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m multiport --sports $src_port \
- -m multiport --dports $dest_port \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j $policy &> /dev/null
- ;;
- *)
- [ "$global_logging" = "1" ] && [ "$rule_logging" = "1" ] && {
- $IPT -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j LOG --log-level "$loglevel" --log-prefix "MWAN3($1)" &> /dev/null
- }
- $IPT -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j $policy &> /dev/null
- ;;
- esac
- done
-
- elif [ "$family" == "ipv4" ]; then
-
- case $proto in
- tcp|udp)
- [ "$global_logging" = "1" ] && [ "$rule_logging" = "1" ] && {
- $IPT4 -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m multiport --sports $src_port \
- -m multiport --dports $dest_port \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j LOG --log-level "$loglevel" --log-prefix "MWAN3($1)" &> /dev/null
- }
- $IPT4 -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m multiport --sports $src_port \
- -m multiport --dports $dest_port \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j $policy &> /dev/null
- ;;
- *)
- [ "$global_logging" = "1" ] && [ "$rule_logging" = "1" ] && {
- $IPT4 -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j LOG --log-level "$loglevel" --log-prefix "MWAN3($1)" &> /dev/null
- }
- $IPT4 -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j $policy &> /dev/null
- ;;
- esac
-
- elif [ "$family" == "ipv6" ]; then
-
- case $proto in
- tcp|udp)
- [ "$global_logging" = "1" ] && [ "$rule_logging" = "1" ] && {
- $IPT6 -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m multiport --sports $src_port \
- -m multiport --dports $dest_port \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j LOG --log-level "$loglevel" --log-prefix "MWAN3($1)" &> /dev/null
- }
- $IPT6 -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m multiport --sports $src_port \
- -m multiport --dports $dest_port \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j $policy &> /dev/null
- ;;
- *)
- [ "$global_logging" = "1" ] && [ "$rule_logging" = "1" ] && {
- $IPT6 -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j LOG --log-level "$loglevel" --log-prefix "MWAN3($1)" &> /dev/null
- }
- $IPT6 -A mwan3_rules \
- -p $proto \
- -s $src_ip \
- -d $dest_ip $ipset \
- -m mark --mark 0/$MMX_MASK \
- -m comment --comment "$1" \
- -j $policy &> /dev/null
- ;;
- esac
- fi
+ $IPT -A mwan3_rules \
+ -p $proto \
+ ${src_ip:+-s} $src_ip \
+ ${src_dev:+-i} $src_dev \
+ ${dest_ip:+-d} $dest_ip\
+ $ipset \
+ ${src_port:+-m} ${src_port:+multiport} ${src_port:+--sports} $src_port \
+ ${dest_port:+-m} ${dest_port:+multiport} ${dest_port:+--dports} $dest_port \
+ -m mark --mark 0/$MMX_MASK \
+ -j $policy &> /dev/null
+ done
fi
}
local online=0
local offline=0
local up="0"
- local enabled pid device time_p time_n time_u time_d
+ local enabled pid device time_p time_n time_u time_d status
network_get_device device $1
network_get_uptime uptime "$iface"
network_is_up "$iface" && up="1"
+ if [ -f "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS" ]; then
+ status="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS")"
+ else
+ status="unknown"
+ fi
+
json_add_object "${iface}"
json_add_int age "$age"
json_add_int online "${online}"
json_add_int "score" "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/SCORE")"
json_add_int "lost" "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/LOST")"
json_add_int "turn" "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/TURN")"
- json_add_string "status" "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS")"
+ json_add_string "status" "${status}"
json_add_boolean "enabled" "${enabled}"
json_add_boolean "running" "${running}"
json_add_boolean "up" "${up}"
LOG="logger -t $(basename "$0")[$$] -p"
INTERFACE=""
DEVICE=""
+PING="/bin/ping"
IFDOWN_EVENT=0
local sleep_time=0
local turn=0
local result
+ local ping_protocol=4
local ping_result
+ local ping_result_raw
+ local ping_status
local loss=0
local latency=0
# https://bugs.openwrt.org/index.php?do=details&task_id=2897
# so get the IP address of the interface and use that instead
if echo $track_ip | grep -q ':'; then
- ADDR=$(ip -6 addr ls dev "$DEVICE" | sed -ne '/\/128/d' -e 's/ *inet6 \([^ \/]*\).* scope global.*/\1/p')
+ ADDR=$(ip -6 addr ls dev "$DEVICE" | sed -ne '/\/128/d' -e 's/ *inet6 \([^ \/]*\).* scope global.*/\1/p' | head -n1)
+ [ -z "$ADDR" ] && ADDR=$(ip -6 addr ls dev "$DEVICE" | sed -ne 's/ *inet6 \([^ \/]*\).* scope global.*/\1/p')
+ ping_protocol=6
fi
if [ $check_quality -eq 0 ]; then
- ping -I ${ADDR:-$DEVICE} -c $count -W $timeout -s $size -t $max_ttl -q $track_ip &> /dev/null
+ $PING -$ping_protocol -I ${ADDR:-$DEVICE} -c $count -W $timeout -s $size -t $max_ttl -q $track_ip &> /dev/null
result=$?
else
- ping_result="$(ping -I ${ADDR:-$DEVICE} -c $count -W $timeout -s $size -t $max_ttl -q $track_ip | tail -2)"
+ ping_result_raw="$($PING -$ping_protocol -I ${ADDR:-$DEVICE} -c $count -W $timeout -s $size -t $max_ttl -q $track_ip 2>/dev/null)"
+ ping_status=$?
+ ping_result=$(echo "$ping_result_raw" | tail -n2)
loss="$(echo "$ping_result" | grep "packet loss" | cut -d "," -f3 | awk '{print $1}' | sed -e 's/%//')"
- if [ "$loss" -eq 100 ]; then
+ if [ "$ping_status" -ne 0 ] || [ "$loss" -eq 100 ]; then
latency=999999
+ loss=100
else
latency="$(echo "$ping_result" | grep -E 'rtt|round-trip' | cut -d "=" -f2 | cut -d "/" -f2 | cut -d "." -f1)"
fi
PKG_NAME:=openssh
PKG_VERSION:=8.2p1
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/ \
/etc/avahi/services/sftp-ssh.service
endef
-CONFIGURE_ARGS+= \
+CONFIGURE_ARGS += \
$(DISABLE_NLS) \
--sysconfdir=/etc/ssh \
--with-privsep-user=sshd \
--disable-wtmpx \
--without-bsd-auth \
--without-kerberos5 \
- --without-x
+ --without-x \
+ --with-stackprotect \
+ --with$(if $(CONFIG_OPENSSL_ENGINE),,out)-ssl-engine
ifeq ($(BUILD_VARIANT),with-pam)
CONFIGURE_ARGS += \
--without-pam
endif
-ifeq ($(CONFIG_OPENSSL_ENGINE),y)
-CONFIGURE_ARGS+= \
- --with-ssl-engine
-endif
-
-ifneq ($(CONFIG_SSP_SUPPORT),y)
-CONFIGURE_ARGS += \
- --without-stackprotect
-endif
-
CONFIGURE_VARS += LD="$(TARGET_CC)"
ifeq ($(BUILD_VARIANT),with-pam)
include $(TOPDIR)/rules.mk
PKG_NAME:=overture
-PKG_VERSION:=1.6
+PKG_VERSION:=1.6.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/shawn1m/overture/tar.gz/v${PKG_VERSION}?
-PKG_HASH:=a7a568cc65f2a1714f036c555b95d3be27234b98ae951cb748198fecce1bb1e4
+PKG_HASH:=916ddbc4e8ee3cd008e281ba768c1502ad7b3ad71073f5e587b187e371eedd2b
PKG_MAINTAINER:=Richard Yu <yurichard3839@gmail.com>
PKG_LICENSE:=MIT
GO_PKG:=github.com/shawn1m/overture
GO_PKG_BUILD_PKG:=$(GO_PKG)/main
+GO_PKG_LDFLAGS_X:=main.version=$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
include ../../lang/golang/golang-package.mk
Overture is a DNS server/forwarder/dispatcher written in Go.
endef
+define Package/overture/conffiles
+/etc/overture/
+endef
+
define Package/overture/install
$(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR))
- $(INSTALL_DIR) $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/main $(1)/usr/bin/$(PKG_NAME)
- $(INSTALL_DIR) $(1)/etc/$(PKG_NAME)/
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/config.sample.json $(1)/etc/$(PKG_NAME)/config.json
- $(INSTALL_DATA) ./files/*_sample $(1)/etc/$(PKG_NAME)/
- $(INSTALL_DIR) $(1)/etc/init.d/
- $(INSTALL_BIN) ./files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/main $(1)/usr/bin/overture
+ $(INSTALL_DIR) $(1)/etc/overture
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/config.sample.json $(1)/etc/overture/config.json
+ $(SED) 's@"\.\(/[^"]\{1,\}_sample\)"@"/etc/overture\1"@g;s/":53"/"127.0.0.3:53"/' $(1)/etc/overture/config.json
+ $(INSTALL_DATA) ./files/*_sample $(1)/etc/overture
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/overture.init $(1)/etc/init.d/overture
endef
$(eval $(call GoBinPackage,overture))
include ../openvswitch/openvswitch.mk
PKG_NAME:=ovn
-PKG_VERSION:=20.03.0
+PKG_VERSION:=20.06.0
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/ovn-org/ovn.git
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
-PKG_MIRROR_HASH:=8d1cf00ce563bfeea72f5a5f86d82df07f762133b0ac7661a625b637b02e410a
+PKG_MIRROR_HASH:=06236ee393a64e1a7d400a12379acdcc58ae55ee1e6fe9e9475646f2bcb9d03d
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
include $(TOPDIR)/rules.mk
PKG_NAME:=rp-pppoe
-PKG_VERSION:=3.12
-PKG_RELEASE:=7
-PKG_LICENSE:=LGPL-2.0-or-later
-PKG_CPE_ID:=cpe:/a:roaring_penguin:pppoe
+PKG_VERSION:=3.14
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://roaringpenguin.com/files/download
-PKG_HASH:=00794e04031546b0e9b8cf286f2a6d1ccfc4a621b2a3abb2d7ef2a7ab7cc86c2
+PKG_SOURCE_URL:=https://dianne.skoll.ca/projects/rp-pppoe/download
+PKG_HASH:=7825232f64ab4d618ef074d62d145ae43d6edc91b9a718c6130a4742bac40e2a
+
+PKG_MAINTAINER:=
+PKG_LICENSE:=LGPL-2.0-or-later
+PKG_LICENSE_FILES:=doc/LICENSE
+PKG_CPE_ID:=cpe:/a:roaring_penguin:pppoe
PKG_BUILD_DEPENDS:=ppp
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
SECTION:=net
CATEGORY:=Network
TITLE:=PPPoE (PPP over Ethernet)
- URL:=http://roaringpenguin.com/products/pppoe
+ URL:=https://dianne.skoll.ca/projects/rp-pppoe/
SUBMENU:=Dial-in/up
endef
This package contains pppoe-sniff.
endef
-TARGET_CFLAGS += -I$(PKG_BUILD_DIR)/src/libevent -isystem $(PKG_BUILD_DIR)/missing-headers
+TARGET_CFLAGS += -I$(PKG_BUILD_DIR)/src/libevent -isystem $(PKG_BUILD_DIR)/missing-headers -D_BSD_SOURCE
CONFIGURE_PATH := ./src
CONFIGURE_ARGS += ac_cv_path_PPPD=/usr/sbin/pppd --enable-plugin=$(STAGING_DIR)/usr/include/
MAKE_FLAGS := DESTDIR="$(PKG_INSTALL_DIR)" PLUGIN_PATH=rp-pppoe.so install
+++ /dev/null
---- a/src/configure
-+++ b/src/configure
-@@ -3691,7 +3691,7 @@ done
-
- for ac_header in linux/if.h
- do :
-- ac_fn_c_check_header_compile "$LINENO" "linux/if.h" "ac_cv_header_linux_if_h" "#include<sys/socket.h>
-+ ac_fn_c_check_header_compile "$LINENO" "linux/if.h" "ac_cv_header_linux_if_h" "#include <sys/socket.h>
- "
- if test "x$ac_cv_header_linux_if_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@@ -3705,10 +3705,11 @@ done
- for ac_header in linux/if_pppox.h
- do :
- ac_fn_c_check_header_compile "$LINENO" "linux/if_pppox.h" "ac_cv_header_linux_if_pppox_h" "
--#include<sys/socket.h>
--#include<net/ethernet.h>
--#include<linux/if.h>
--#include<linux/in.h>
-+#include <sys/socket.h>
-+#include <net/ethernet.h>
-+#include <linux/if.h>
-+#include <linux/in.h>
-+#include <linux/in6.h>
-
- "
- if test "x$ac_cv_header_linux_if_pppox_h" = xyes; then :
-@@ -4644,7 +4645,7 @@ esac
- $as_echo_n "checking packing order of bit fields... " >&6; }
- if test "${rpppoe_cv_pack_bitfields+set}" != set ; then
- if test "$cross_compiling" = yes; then :
-- $ECHO "no defaults for cross-compiling"; exit 0
-+ rpppoe_cv_pack_bitfields="$ac_cv_pack_bitfields"
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--- a/src/Makefile.in
+++ b/src/Makefile.in
-@@ -71,7 +71,7 @@ pppoe-sniff: pppoe-sniff.o if.o common.o
+@@ -72,7 +72,7 @@ pppoe-sniff: pppoe-sniff.o if.o common.o
@CC@ -o $@ $^ $(LDFLAGS)
pppoe-server: pppoe-server.o if.o debug.o common.o md5.o libevent/libevent.a @PPPOE_SERVER_DEPS@
---- a/src/configure
-+++ b/src/configure
-@@ -3676,7 +3676,7 @@ fi
- done
-
-
--for ac_header in fcntl.h sys/dlpi.h sys/ioctl.h sys/time.h syslog.h unistd.h net/if_arp.h netinet/if_ether.h getopt.h sys/uio.h sys/param.h fcntl.h net/bpf.h netpacket/packet.h net/ethernet.h asm/types.h linux/if_packet.h linux/if_ether.h sys/socket.h sys/cdefs.h net/if.h net/if_dl.h net/if_ether.h net/if_types.h netinet/if_ether.h net/if_types.h net/if_dl.h
-+for ac_header in fcntl.h sys/dlpi.h sys/ioctl.h sys/time.h syslog.h unistd.h net/if_arp.h getopt.h sys/uio.h sys/param.h fcntl.h net/bpf.h netpacket/packet.h asm/types.h linux/if_packet.h linux/if_ether.h sys/socket.h sys/cdefs.h net/if.h net/if_dl.h net/if_types.h net/if_types.h net/if_dl.h
- do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
- ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
--- a/src/if.c
+++ b/src/if.c
-@@ -30,10 +30,6 @@ static char const RCSID[] =
+@@ -33,9 +33,9 @@
#include <linux/if_packet.h>
#endif
-#ifdef HAVE_NET_ETHERNET_H
-#include <net/ethernet.h>
-#endif
--
++//#ifdef HAVE_NET_ETHERNET_H
++//#include <net/ethernet.h>
++//#endif
+
#ifdef HAVE_ASM_TYPES_H
#include <asm/types.h>
- #endif
--- a/src/plugin.c
+++ b/src/plugin.c
-@@ -49,7 +49,6 @@ static char const RCSID[] =
+@@ -52,7 +52,7 @@
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
-#include <net/ethernet.h>
++//#include <net/ethernet.h>
#include <net/if_arp.h>
#include <linux/ppp_defs.h>
#include <linux/if_pppox.h>
+--- a/src/pppoe.h
++++ b/src/pppoe.h
+@@ -129,9 +129,9 @@ typedef unsigned long UINT32_t;
+ #ifdef HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+ #endif
+-#ifndef HAVE_SYS_DLPI_H
+-#include <netinet/if_ether.h>
+-#endif
++//#ifndef HAVE_SYS_DLPI_H
++//#include <netinet/if_ether.h>
++//#endif
+ #endif
+
+
--- a/src/Makefile.in
+++ b/src/Makefile.in
-@@ -139,7 +139,8 @@ plugin/plugin.o: plugin.c
- @CC@ -DPLUGIN=1 '-DRP_VERSION="$(VERSION)"' $(CFLAGS) -I$(PPPD_INCDIR) -c -o $@ -fPIC $<
+@@ -140,7 +140,8 @@ plugin/plugin.o: plugin.c
+ @CC@ -DPLUGIN=1 '-DRP_VERSION="$(RP_VERSION)"' $(CFLAGS) -I$(PPPD_INCDIR) -c -o $@ -fPIC $<
plugin/libplugin.a: plugin/discovery.o plugin/if.o plugin/common.o plugin/debug.o
- ar -rc $@ $^
+ @RANLIB@ $@
plugin/discovery.o: discovery.c
- @CC@ -DPLUGIN=1 $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ -fPIC $<
+ @CC@ -DPLUGIN=1 $(CFLAGS) '-DRP_VERSION="$(RP_VERSION)"' -I$(PPPD_INCDIR) -c -o $@ -fPIC $<
+++ /dev/null
---- a/src/pppoe.h
-+++ b/src/pppoe.h
-@@ -132,6 +132,9 @@ typedef unsigned long UINT32_t;
- #endif
-
- #include <netinet/in.h>
-+/* avoid redefinitions if <linux/in.h> and <linux/in6.h> get included. */
-+#define _LINUX_IN_H
-+#define _LINUX_IN6_H
-
- #ifdef HAVE_NETINET_IF_ETHER_H
- #include <sys/types.h>
PKG_NAME:=samba
PKG_VERSION:=4.12.3
-PKG_RELEASE:=1
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= \
HOST_CONFIGURE_ARGS += --disable-avahi --without-quotas --without-acl-support --without-winbind \
--without-ad-dc --without-json --without-libarchive --disable-python --nopyc --nopyo \
--without-dnsupdate --without-ads --without-ldap --without-ldb-lmdb
-HOST_CONFIGURE_VARS += python_LDFLAGS="" python_LIBDIR=""
# Optional AES-NI support - https://lists.samba.org/archive/samba-technical/2017-September/122738.html
# Support for Nettle wasn't comitted
CONFIGURE_ARGS += --disable-avahi
endif
-CONFIGURE_VARS += \
- PERL="$(STAGING_DIR_HOSTPKG)/usr/bin/perl$(PERL_VERSION3)"
-
-# NOTE: We need host python-bin, but target python-config here!
-CONFIGURE_VARS += python_LDFLAGS="" python_LIBDIR=""
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y)
CONFIGURE_ARGS += --without-winbind --without-ldb-lmdb --with-acl-support
- CONFIGURE_VARS += \
- PYTHON="$(HOST_PYTHON3_BIN)" \
- PYTHON_CONFIG="$(STAGING_DIR)/host/bin/$(PYTHON3)-config"
else
CONFIGURE_ARGS += --without-winbind --without-ads --without-ldap --without-ldb-lmdb --without-ad-dc \
--without-json --without-libarchive --disable-python --nopyc --nopyo --without-dnsupdate --without-acl-support
export COMPILE_ET=$(STAGING_DIR_HOSTPKG)/bin/compile_et_samba
export ASN1_COMPILE=$(STAGING_DIR_HOSTPKG)/bin/asn1_compile_samba
-# need to find host 'yapp'
+# make sure we use the hostpkg build toolset and we need to find host 'yapp'
HOST_CONFIGURE_VARS+= \
- PATH="$(STAGING_DIR_HOSTPKG)/usr/bin:$(PATH)"
+ PATH="$(STAGING_DIR_HOSTPKG)/bin:$(STAGING_DIR_HOSTPKG)/usr/bin:$(PATH)"
CONFIGURE_VARS += \
- PATH="$(PATH):$(STAGING_DIR_HOSTPKG)/usr/bin"
-
-# we dont need GnuTLS/Yapp for the host helpers
+ PATH="$(STAGING_DIR_HOSTPKG)/bin:$(STAGING_DIR_HOSTPKG)/usr/bin:$(PATH)"
+
+# we need hostpkg bin and target config
+ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y)
+ CONFIGURE_VARS += \
+ PYTHON_CONFIG="$(STAGING_DIR)/host/bin/$(PYTHON3)-config"
+endif
+
+# we dont need GnuTLS for the host helpers
define Host/Prepare
$(call Host/Prepare/Default)
$(SED) 's,mandatory=True,mandatory=False,g' $(HOST_BUILD_DIR)/wscript_configure_system_gnutls
echo 'Checking uname release type: "$(LINUX_VERSION)"' >> $(PKG_BUILD_DIR)/cross-answers.txt
echo 'Checking uname version type: "$(VERSION_DIST) Linux-$(LINUX_VERSION) $(shell date +%Y-%m-%d)"' >> $(PKG_BUILD_DIR)/cross-answers.txt
# NOTE: special answers for freeBSD/CircleCI
- echo 'Checking whether POSIX capabilities are available: OK' >> $(PKG_BUILD_DIR)/cross-answers.txt
echo 'checking for clnt_create(): OK' >> $(PKG_BUILD_DIR)/cross-answers.txt
- # HACK: need to update WAF/qemu values (set to NO for now)
- echo 'Checking value of GNUTLS_CIPHER_AES_128_CFB8: NO' >> $(PKG_BUILD_DIR)/cross-answers.txt
- echo 'Checking value of GNUTLS_MAC_AES_CMAC_128: NO' >> $(PKG_BUILD_DIR)/cross-answers.txt
- echo 'Checking whether fcntl supports flags to send direct I/O availability signals: NO' >> $(PKG_BUILD_DIR)/cross-answers.txt
- echo 'Checking whether fcntl supports setting/geting hints: NO' >> $(PKG_BUILD_DIR)/cross-answers.txt
$(call Build/Configure/Default)
endef
--- /dev/null
+--- a/lib/util/wscript_configure 2020-06-14
++++ b/lib/util/wscript_configure 2020-06-14
+@@ -11,13 +11,13 @@ conf.CHECK_FUNCS_IN('backtrace backtrace
+ conf.CHECK_HEADERS('execinfo.h')
+
+ conf.SET_TARGET_TYPE('LIBUNWIND', 'EMPTY')
+-if conf.check_cfg(package='libunwind-generic',
+- args='--cflags --libs',
+- msg='Checking for libunwind',
+- uselib_store='LIBUNWIND',
+- mandatory=False):
+- if conf.CHECK_HEADERS('libunwind.h'):
+- conf.SET_TARGET_TYPE('LIBUNWIND', 'SYSLIB')
++# if conf.check_cfg(package='libunwind-generic',
++ # args='--cflags --libs',
++ # msg='Checking for libunwind',
++ # uselib_store='LIBUNWIND',
++ # mandatory=False):
++ # if conf.CHECK_HEADERS('libunwind.h'):
++ # conf.SET_TARGET_TYPE('LIBUNWIND', 'SYSLIB')
+
+ conf.CHECK_STRUCTURE_MEMBER('struct statvfs', 'f_frsize', define='HAVE_FRSIZE', headers='sys/statvfs.h')
+
--- /dev/null
+--- a/lib/util/charset/wscript_configure 2020-06-14
++++ b/lib/util/charset/wscript_configure 2020-06-14
+@@ -37,15 +37,15 @@ conf.CHECK_CODE('''
+ lib='iconv',
+ headers='errno.h iconv.h')
+
+-if conf.CHECK_CFG(package='icu-i18n',
+- args='--cflags --libs',
+- msg='Checking for icu-i18n',
+- uselib_store='ICU_I18N'):
+- for lib in conf.env['LIB_ICU_I18N']:
+- conf.CHECK_LIB(lib, shlib=True, mandatory=True)
+- conf.env['icu-libs'] = ' '.join(conf.env['LIB_ICU_I18N'])
+- if not conf.CHECK_HEADERS('unicode/ustring.h'):
+- conf.fatal('Found libicu, but unicode/ustring.h is missing')
+- conf.DEFINE('HAVE_UTF8_NORMALISATION', 1)
+-else:
+- conf.env['icu-libs'] = ''
++# if conf.CHECK_CFG(package='icu-i18n',
++ # args='--cflags --libs',
++ # msg='Checking for icu-i18n',
++ # uselib_store='ICU_I18N'):
++ # for lib in conf.env['LIB_ICU_I18N']:
++ # conf.CHECK_LIB(lib, shlib=True, mandatory=True)
++ # conf.env['icu-libs'] = ' '.join(conf.env['LIB_ICU_I18N'])
++ # if not conf.CHECK_HEADERS('unicode/ustring.h'):
++ # conf.fatal('Found libicu, but unicode/ustring.h is missing')
++ # conf.DEFINE('HAVE_UTF8_NORMALISATION', 1)
++# else:
++conf.env['icu-libs'] = ''
Checking value of _NSIG: "65"
Checking value of SIGRTMAX: "64"
Checking value of SIGRTMIN: "35"
-Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking for a 64-bit host to support lmdb: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: OK
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
Checking value of SIGRTMAX: "64"
Checking value of SIGRTMIN: "35"
Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: NO
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
Checking value of SIGRTMAX: "64"
Checking value of SIGRTMIN: "35"
Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: NO
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
Checking value of SIGRTMAX: "64"
Checking value of SIGRTMIN: "35"
Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: NO
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
Checking value of SIGRTMAX: "64"
Checking value of SIGRTMIN: "35"
Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: NO
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
Checking value of SIGRTMAX: "127"
Checking value of SIGRTMIN: "35"
Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: NO
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
Checking value of _NSIG: "128"
Checking value of SIGRTMAX: "127"
Checking value of SIGRTMIN: "35"
-Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking for a 64-bit host to support lmdb: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: OK
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
Checking value of _NSIG: "128"
Checking value of SIGRTMAX: "127"
Checking value of SIGRTMIN: "35"
-Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking for a 64-bit host to support lmdb: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: OK
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
Checking value of SIGRTMAX: "127"
Checking value of SIGRTMIN: "35"
Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: NO
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
Checking value of SIGRTMAX: "64"
Checking value of SIGRTMIN: "35"
Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: NO
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
Checking value of _NSIG: "65"
Checking value of SIGRTMAX: "64"
Checking value of SIGRTMIN: "35"
-Checking for a 64-bit host to support lmdb: NO
-Checking whether the WRFILE -keytab is supported: OK
+Checking for a 64-bit host to support lmdb: OK
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
+Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
Checking errno of iconv for illegal multibyte sequence: OK
Checking for kernel change notify support: OK
Checking for Linux kernel oplocks: OK
Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
Checking if can we convert from CP850 to UCS-2LE: OK
Checking if can we convert from UTF-8 to UCS-2LE: OK
vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
Checking whether we can use Linux thread-specific credentials: OK
Checking whether fcntl locking is available: OK
Checking whether fcntl lock supports open file description locks: NO
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking whether fcntl supports setting/geting hints: (-11, "")
Checking for the maximum value of the 'time_t' type: OK
Checking whether the realpath function allows a NULL argument: OK
Checking for ftruncate extend: OK
PKG_NAME:=seafile-server
PKG_VERSION:=7.1.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/haiwen/seafile-server/tar.gz/v$(PKG_VERSION)-server?
CONFIGURE_VARS += \
PYTHON="$(HOST_PYTHON3_BIN)"
-ifdef CONFIG_GCC_LIBSSP
- TARGET_LDFLAGS += -lssp
-endif
-
define Package/seafile-server/conffiles
/etc/config/seafile-server
endef
PKG_NAME:=shorewall-core
PKG_MAJOR_MINOR_VERSION:=5.2
-PKG_BUGFIX_MAJOR_VERSION:=4
-PKG_BUGFIX_MINOR_VERSION:=.5
+PKG_BUGFIX_MAJOR_VERSION:=5
+PKG_BUGFIX_MINOR_VERSION:=.1
PKG_VERSION:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)$(PKG_BUGFIX_MINOR_VERSION)
PKG_DIRECTORY:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)
PKG_RELEASE:=1
http://www.shorewall.no/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/ \
http://france.shorewall.net/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=78f1d62d65439704896daa2439b7053934b2dd42427ccb56c4262da90183011b
+PKG_HASH:=94c0df3ef44504b7f370ddd055c2a9459a78fbc5f6057b550e0a652939cfb5fc
PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
PKG_LICENSE:=GPL-2.0-or-later
PKG_NAME:=shorewall-lite
PKG_MAJOR_MINOR_VERSION:=5.2
-PKG_BUGFIX_MAJOR_VERSION:=4
-PKG_BUGFIX_MINOR_VERSION:=.5
+PKG_BUGFIX_MAJOR_VERSION:=5
+PKG_BUGFIX_MINOR_VERSION:=.1
PKG_VERSION:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)$(PKG_BUGFIX_MINOR_VERSION)
PKG_DIRECTORY:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)
PKG_RELEASE:=1
http://www.shorewall.no/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/ \
http://france.shorewall.net/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=7488f9daec34958307193fde4fff403b1c102fabab31f7d4d7e8f11d8bbfaf1a
+PKG_HASH:=c51cf167b951d52726c8b70dc710e0831196f677381fda0744e9893d9669f630
PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
PKG_LICENSE:=GPL-2.0-or-later
PKG_NAME:=shorewall
PKG_MAJOR_MINOR_VERSION:=5.2
-PKG_BUGFIX_MAJOR_VERSION:=4
-PKG_BUGFIX_MINOR_VERSION:=.5
+PKG_BUGFIX_MAJOR_VERSION:=5
+PKG_BUGFIX_MINOR_VERSION:=.1
PKG_VERSION:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)$(PKG_BUGFIX_MINOR_VERSION)
PKG_DIRECTORY:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)
PKG_RELEASE:=1
http://www.shorewall.no/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/ \
http://france.shorewall.net/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=df4e8639b9dab03cb4e792f7b0760c43583340e3302125f25b048fc0248b94af
+PKG_HASH:=786c7016d124c131f80aff72105e1cffca3aad825078692ba878287271193f98
PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
PKG_LICENSE:=GPL-2.0-or-later
PKG_NAME:=shorewall6-lite
PKG_MAJOR_MINOR_VERSION:=5.2
-PKG_BUGFIX_MAJOR_VERSION:=4
-PKG_BUGFIX_MINOR_VERSION:=.5
+PKG_BUGFIX_MAJOR_VERSION:=5
+PKG_BUGFIX_MINOR_VERSION:=.1
PKG_VERSION:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)$(PKG_BUGFIX_MINOR_VERSION)
PKG_DIRECTORY:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)
PKG_RELEASE:=1
http://www.shorewall.no/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/ \
http://france.shorewall.net/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=aeb56cb9616bef87894f7bc06e5128fe0456dc6c7c3514725d9126085194b9b2
+PKG_HASH:=aa85b1bf93039b760c2b7b9f28f7693079be6d59026d3f58c03baa59cfed4bd0
PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
PKG_LICENSE:=GPL-2.0-or-later
PKG_NAME:=shorewall6
PKG_MAJOR_MINOR_VERSION:=5.2
-PKG_BUGFIX_MAJOR_VERSION:=4
-PKG_BUGFIX_MINOR_VERSION:=.5
+PKG_BUGFIX_MAJOR_VERSION:=5
+PKG_BUGFIX_MINOR_VERSION:=.1
PKG_VERSION:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)$(PKG_BUGFIX_MINOR_VERSION)
PKG_DIRECTORY:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)
PKG_RELEASE:=1
http://www.shorewall.no/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/ \
http://france.shorewall.net/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=d35dc296fe9c3b815f2c8d0b07c725dc1ca55f435672cb2756e2e1614d0b0645
+PKG_HASH:=9db0f815a713aec565073c9b6038ccdb673abddb571d714e3153c74d47381d54
PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
PKG_LICENSE:=GPL-2.0-or-later
PKG_NAME:=tor
PKG_VERSION:=0.4.3.5
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://dist.torproject.org/ \
--disable-lzma \
--disable-zstd \
--with-tor-user=tor \
- --with-tor-group=tor
+ --with-tor-group=tor \
+ --with-pic
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
TARGET_LDFLAGS += -Wl,--gc-sections -flto
-ifneq ($(CONFIG_SSP_SUPPORT),y)
- CONFIGURE_ARGS += \
- --disable-gcc-hardening
-else
- EXTRA_CFLAGS += $(FPIC)
-endif
-
CONFIGURE_VARS += \
CROSS_COMPILE="yes"
PKG_NAME:=transmission
PKG_VERSION:=3.00
-PKG_RELEASE:=2
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GITHUB/transmission/transmission-releases/master
local enabled
config_get_bool enabled "$cfg" enabled 0
- [ "$enabled" -gt 0 ] || return 1
+ [ "$enabled" -gt 0 ] || {
+ echo "Transmission not enabled. Please enable in /etc/config/transmission"
+ logger -t "transmission" -p "daemon.info" "Transmission not enabled. Please enable in /etc/config/transmission"
+ return 1
+ }
local config_dir
config_get config_dir "$cfg" 'config_dir' '/var/etc/transmission'
procd_add_jail_mount_rw "$config_dir/blocklists"
procd_add_jail_mount_rw "$config_dir/stats.json"
procd_add_jail_mount_rw "$download_dir"
+ [ -d "$web_home" ] && procd_add_jail_mount_rw "$web_home"
procd_close_instance
}
+++ /dev/null
-
-# Copyright (C) 2018 Jianhui Zhao
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wifidog-ng
-PKG_VERSION:=2.0.2
-PKG_RELEASE:=2
-
-PKG_LICENSE:=LGPL-2.1
-PKG_LICENSE_FILES:=LICENSE
-
-PKG_MAINTAINER:=Jianhui Zhao <zhaojh329@gmail.com>
-
-include $(INCLUDE_DIR)/kernel.mk
-include $(INCLUDE_DIR)/package.mk
-
-define Package/wifidog-ng/default
- SUBMENU:=Captive Portals
- SECTION:=net
- CATEGORY:=Network
- TITLE:=Next generation WifiDog implemented in Lua
- DEPENDS:=+kmod-wifidog-ng +libubox-lua +libuci-lua +libubus-lua \
- +ipset +dnsmasq-full +luasocket
-endef
-
-define Package/wifidog-ng-nossl
- $(Package/wifidog-ng/default)
- TITLE += (NO SSL)
- DEPENDS += +libuhttpd-nossl
- VARIANT:=nossl
- CONFLICTS:=wifidog-ng-openssl wifidog-ng-wolfssl wifidog-ng-mbedtls
-endef
-
-define Package/wifidog-ng-openssl
- $(Package/wifidog-ng/default)
- TITLE += (openssl)
- DEPENDS += +libuhttpd-openssl
- VARIANT:=openssl
- CONFLICTS:=wifidog-ng-wolfssl wifidog-ng-mbedtls
-endef
-
-define Package/wifidog-ng-wolfssl
- $(Package/wifidog-ng/default)
- TITLE += (wolfssl)
- DEPENDS += +libuhttpd-wolfssl
- VARIANT:=wolfssl
- CONFLICTS:=wifidog-ng-mbedtls
-endef
-
-define Package/wifidog-ng-mbedtls
- $(Package/wifidog-ng/default)
- TITLE += (mbedtls)
- DEPENDS += +libuhttpd-mbedtls
- VARIANT:=mbedtls
-endef
-
-define Package/wifidog-ng/default/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/etc/init.d $(1)/etc/config \
- $(1)/etc/wifidog-ng $(1)//etc/hotplug.d/dhcp $(1)/usr/lib/lua
- $(INSTALL_BIN) ./files//wifidog-ng.lua $(1)/usr/bin/wifidog-ng
- $(INSTALL_BIN) ./files/wifidog-ng.init $(1)/etc/init.d/wifidog-ng
- $(INSTALL_CONF) ./files/wifidog-ng.config $(1)/etc/config/wifidog-ng
- $(INSTALL_CONF) ./files/ssl.key $(1)/etc/wifidog-ng
- $(INSTALL_CONF) ./files/ssl.crt $(1)/etc/wifidog-ng
- $(INSTALL_DATA) ./files/wifidog-ng.hotplug $(1)/etc/hotplug.d/dhcp/00-wifidog-ng
- $(CP) ./files/wifidog-ng $(1)/usr/lib/lua
-endef
-
-define Package/wifidog-ng/default/conffiles
-/etc/config/wifidog-ng
-/etc/wifidog-ng
-endef
-
-Package/wifidog-ng-nossl/conffiles = $(Package/wifidog-ng/default/conffiles)
-Package/wifidog-ng-openssl/conffiles = $(Package/wifidog-ng/default/conffiles)
-Package/wifidog-ng-wolfssl/conffiles = $(Package/wifidog-ng/default/conffiles)
-Package/wifidog-ng-mbedtls/conffiles = $(Package/wifidog-ng/default/conffiles)
-
-Package/wifidog-ng-nossl/install = $(Package/wifidog-ng/default/install)
-Package/wifidog-ng-openssl/install = $(Package/wifidog-ng/default/install)
-Package/wifidog-ng-wolfssl/install = $(Package/wifidog-ng/default/install)
-Package/wifidog-ng-mbedtls/install = $(Package/wifidog-ng/default/install)
-
-define KernelPackage/wifidog-ng
- SUBMENU:=Other modules
- TITLE:=Kernel module for wifidog-ng
- DEPENDS:=+kmod-nf-nat +kmod-ipt-ipset
- FILES:=$(PKG_BUILD_DIR)/wifidog-ng.ko
-endef
-
-include $(INCLUDE_DIR)/kernel-defaults.mk
-
-define Build/Compile
- $(MAKE) $(KERNEL_MAKEOPTS) M="$(PKG_BUILD_DIR)" modules
-endef
-
-$(eval $(call BuildPackage,wifidog-ng-nossl))
-$(eval $(call BuildPackage,wifidog-ng-mbedtls))
-$(eval $(call BuildPackage,wifidog-ng-wolfssl))
-$(eval $(call BuildPackage,wifidog-ng-openssl))
-
-$(eval $(call KernelPackage,wifidog-ng))
+++ /dev/null
------BEGIN CERTIFICATE-----
-MIID8TCCAtmgAwIBAgICCCUwDQYJKoZIhvcNAQELBQAwczELMAkGA1UEBhMCQ04x
-EDAOBgNVBAgMB1RpYW5qaW4xEDAOBgNVBAcMB1RpYW5qaW4xFTATBgNVBAoMDENI
-SU5BU1NMIEluYzEpMCcGA1UEAwwgQ0hJTkFTU0wgQ2VydGlmaWNhdGlvbiBBdXRo
-b3JpdHkwHhcNMTgwMzAzMTQyODQ2WhcNMTkwMzAzMTQyODQ2WjCBgzELMAkGA1UE
-BhMCQ04xEDAOBgNVBAgMB3NpY2h1YW4xEjAQBgNVBAoMCXpoYW9qaDMyOTETMBEG
-A1UECwwKd2lmaWRvZy1uZzEQMA4GA1UEAwwHd2lmaWRvZzEnMCUGCSqGSIb3DQEJ
-ARYYamlhbmh1aXpoYW8zMjlAZ21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEAyD8gd3XIJvkYeySP2q0toYsfvhlA+lceUPiMi16U1nR3TD5U
-uTNGsvYBDMiR7vG0NKClFT73u/d8HBcYcTBgbhHfBkz4v9S5aMdUYQsUMQEITBdE
-hPEeXVqqj796Lu6iEkNUFrtam2h3t+kYODjbszk2woBtohaRWfNyOB/AJH6Stv4l
-jkPYwt9NHcKQSm9kjcGsAqQwkgVd4UfHX2G20gaTijimeHlJL2wv61uLBUvYux0E
-+98KIcEIYu3BVAfoO2Omg/o73cwH+sFTswEXPuXirwrOzmJ850WBLScLkSKSATrY
-1YdU6CRaJuP/POFfSqAhn/mPRNQFU5fAaDcfEwIDAQABo34wfDAJBgNVHRMEAjAA
-MC8GCWCGSAGG+EIBDQQiFiBDSElOQVNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
-eTAdBgNVHQ4EFgQU9XS4dW6j1r1lEOIHWkoJx3zSqqgwHwYDVR0jBBgwFoAUXB8j
-+sjhITHC2Df2iPzSb8JUQzMwDQYJKoZIhvcNAQELBQADggEBAFsaq5qehwp0zMqY
-cb0IX5/f4ZnscX587SM/NhORODa0p/bT3EwG3grtljHhRW+s/4c4gPgilrzV0Fxn
-Y5FodLfFdbNVjhgeSrDCRmwIvKSe81LYOe+rbfTBF0g3YYWDwcwc8tFvcwWBxqWn
-4F+u9aIKgHU7HXQokqCxEOTFjrAHVJf1OqtRMTXlBBb6ypVdHn0glfSxOIC/Vp2T
-5UR7oVdD4E8ASqe7Q7MmTeY377CRagfd0WD9XK7o+cbKkLLW1QWc8ht1rHjGp+/2
-gmkxEmpX2Xhpv1FX/b6sj1dTmOc2bXBzpvV6yonRMu5dYsOrdDwbH/T05X+hCFW9
-G86ZLFY=
------END CERTIFICATE-----
+++ /dev/null
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDIPyB3dcgm+Rh7
-JI/arS2hix++GUD6Vx5Q+IyLXpTWdHdMPlS5M0ay9gEMyJHu8bQ0oKUVPve793wc
-FxhxMGBuEd8GTPi/1Llox1RhCxQxAQhMF0SE8R5dWqqPv3ou7qISQ1QWu1qbaHe3
-6Rg4ONuzOTbCgG2iFpFZ83I4H8AkfpK2/iWOQ9jC300dwpBKb2SNwawCpDCSBV3h
-R8dfYbbSBpOKOKZ4eUkvbC/rW4sFS9i7HQT73wohwQhi7cFUB+g7Y6aD+jvdzAf6
-wVOzARc+5eKvCs7OYnznRYEtJwuRIpIBOtjVh1ToJFom4/884V9KoCGf+Y9E1AVT
-l8BoNx8TAgMBAAECggEAK/JmvrDzt1HtxIDWrWhaXly5H7BNKWPbPGv/9EpSoeo3
-kF0RnP+a4YXJ3zNZi7YyFWa4NDx4hCEhdMzAyX6TezSi3LAh23/lHRC5/P5AdSzD
-1Gc6225LerN+QUQFna0zlox+NOrzTK4VsCAQ963K0b+ZvAARj4QibDpYc+bL9XYK
-fVrZSnGJhNY3S6YjTF4oyMejKxk+HPhgCVEcZCHiC0RmXVqfETe6Cu0UtDPTTK5Q
-IXYYZ0HLsqaGWwGCWm/ji6HjNCG1dUhUp/yZR+7X45Utok3Rd3wo0kxZGJ7LHH4N
-541qcFbaT3rX39uPypuK5dSc5lb98FAOl79jL/wnUQKBgQDjEycf6VKZYf8d/MMV
-4+0YrFV7sdi0k4TC+lFmfJZVFHqcPn99q3cO2b9npgLDpQpwpcyBGMh6hWufVXXA
-ctrxg8vjKBHG8MT70Lulvi+G3Fldw7EHVVQGEHRqPaSzA035JyVanDs6lgoqjj9b
-BuMQidIeaj2t28pEhc0rYstW6wKBgQDhwRzoCirKrtJDWclDkjbzkGUfoAKMz2p2
-mSAs2xCdrx8vtFzUXcCLsvlXa+hIEe4O5cUZg+WLPfXiV4gtF74PTkmYADXRTUBl
-dHzfjVWQINEYFsWOEP5eYB0VWiA52JUaCuHuHILt6CSy3h8xPtnq+/oEFTeqh/2C
-XoN+seKeeQKBgQDUE1c/HpLeXf/+6crp7u3JVWqhFADo5b3gvBi6NzHQVEgPFO/N
-Vw7i98sj6pA6WTHe83qEN7lFdMaHETHgg2SonAcYKJwxyTywUspuiampsrJkOBhm
-WPMYltWjQ99GsZdpU343miJXHTpxdFkHku8OyylK7r6cWeIXDUAJfUOb8QKBgFbk
-ZoTljOzwdxvXTkFE4QPEmzed9f1OxHKbo6fANdgLlJxe9rAC2d6rZ49/iCtdQ1zW
-kZOtkceTdLXG7TI2BkCL6IWp5w0Fh/jE6l99XeaYywJTmXyCC/Y1VlxmkSrSsykP
-8UAeF0MM7DswhZ8FywjILcYuiHuJ1ki8qi40t745AoGAT/5imiro59cHMbbGEQb+
-42oBY7RxeHkk6+8WTJA6kqv8tuOK3gvDFm5cRJVCduVF/Jf+276IMoTMEb8kBGQA
-R3CRsYwLPrpdWu2q9Ho1KtH+azt/d+3uglT9g3fhvFieNIwkRgaNNJQC6wmddDeG
-MEYv4HO1LykipsDVsFadVCk=
------END PRIVATE KEY-----
+++ /dev/null
-config gateway
- option enabled 1
- option interface 'lan'
- option port 2060
- option dhcp_host_white 1
- option ssl_port 8443
- option checkinterval 30
- option client_timeout 5
- option temppass_time 30
-
-config server
- option host 'authserver.com'
- option port 80
- option ssl 0
- option path '/wifidog/'
- option login_path 'login'
- option portal_path 'portal'
- option msg_path 'gw_message.php'
- option ping_path 'ping'
- option auth_path 'auth'
\ No newline at end of file
+++ /dev/null
-[ "$ACTION" = "add" -o "$ACTION" = "update" ] || exit 0
-ubus list wifidog-ng > /dev/null 2>&1 || exit 0
-ubus call wifidog-ng roam "{\"mac\":\"$MACADDR\", \"ip\":\"$IPADDR\"}"
+++ /dev/null
-#!/bin/sh /etc/rc.common
-
-USE_PROCD=1
-START=95
-
-BIN=/usr/bin/wifidog-ng
-
-global_dhcp_host_white=1
-
-validate_gateway_section() {
- uci_load_validate wifidog-ng gateway "$1" "$2" \
- 'enabled:bool:0' \
- 'interface:uci("network", "@interface"):lan' \
- 'dhcp_host_white:bool:1'
-}
-
-start_wifidog() {
- [ "$2" = 0 ] || {
- echo "validation gateway failed" >&2
- exit 1
- }
-
- [ $enabled = 1 ] || exit 0
-
- [ $dhcp_host_white = 1 ] || global_dhcp_host_white=0
-
- # timeout = 24.855 days
- ipset -! create wifidog-ng-mac hash:mac timeout 2147483
- ipset -! create wifidog-ng-ip hash:ip
-
- modprobe wifidog-ng
- echo "enabled=1" > /proc/wifidog-ng/config
-
- procd_open_instance
- procd_set_param command $BIN
- procd_set_param respawn
- procd_close_instance
-}
-
-validate_server_section() {
- uci_load_validate wifidog-ng server "$1" "$2" \
- 'host:host'
-}
-
-parse_server() {
- [ "$2" = 0 ] || {
- echo "validation server failed" >&2
- exit 1
- }
-
- if validate_data ip4addr "$host" 2> /dev/null; then
- ipset add wifidog-ng-ip $host
- else
- echo "ipset=/$host/wifidog-ng-ip" >> /tmp/dnsmasq.d/wifidog-ng
- fi
-}
-
-validate_validated_user_section() {
- uci_load_validate wifidog-ng validated_user "$1" "$2" \
- 'mac:macaddr'
-}
-
-parse_validated_user() {
- [ "$2" = 0 ] || {
- echo "validation validated_user failed" >&2
- exit 1
- }
-
- [ -n "$mac" ] && ipset add wifidog-ng-mac $mac
-}
-
-validate_validated_domain_section() {
- uci_load_validate wifidog-ng validated_domain "$1" "$2" \
- 'domain:host'
-}
-
-parse_validated_domain() {
- [ "$2" = 0 ] || {
- echo "validation validated_domain failed" >&2
- exit 1
- }
-
- [ -n "$domain" ] && echo "ipset=/$domain/wifidog-ng-ip" >> /tmp/dnsmasq.d/wifidog-ng
-}
-
-validate_dhcp_host_section() {
- uci_load_validate dhcp host "$1" "$2" \
- 'mac:macaddr'
-}
-
-parse_dhcp_host() {
- [ "$2" = 0 ] || {
- echo "validation validated dhcp host failed" >&2
- exit 1
- }
-
- [ -n "$mac" ] && ipset add wifidog-ng-mac $mac
-}
-
-start_service() {
- config_load wifidog-ng
- config_foreach validate_gateway_section gateway start_wifidog
-
- echo -n > /tmp/dnsmasq.d/wifidog-ng
-
- config_foreach validate_server_section server parse_server
- config_foreach validate_validated_user_section validated_user parse_validated_user
- config_foreach validate_validated_domain_section validated_domain parse_validated_domain
-
- [ $global_dhcp_host_white = 1 ] && {
- config_load dhcp
- config_foreach validate_dhcp_host_section host parse_dhcp_host
- }
-
- /etc/init.d/dnsmasq restart &
-}
-
-stop_service() {
- rmmod wifidog-ng
-
- ipset destroy wifidog-ng-mac
- ipset destroy wifidog-ng-ip
-}
-
-service_triggers() {
- procd_add_reload_trigger "wifidog-ng"
-
- procd_open_validate
- validate_gateway_section
- validate_server_section
- validate_validated_user_section
- validate_validated_domain_section
- validate_dhcp_host_section
- procd_close_validate
-}
+++ /dev/null
-#!/usr/bin/env lua
-
---[[
- Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- USA
- --]]
-
-local uloop = require "uloop"
-local uh = require "uhttpd"
-local auth = require "wifidog-ng.auth"
-local ubus = require "wifidog-ng.ubus"
-local version = require "wifidog-ng.version"
-local heartbeat = require "wifidog-ng.heartbeat"
-
-uh.log(uh.LOG_INFO, "Version: " .. version.string())
-
-uloop.init()
-
-ubus.init()
-auth.init()
-heartbeat.start()
-
-uloop.run()
+++ /dev/null
---[[
- Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- USA
- --]]
-
-local uh = require "uhttpd"
-local http = require "socket.http"
-local util = require "wifidog-ng.util"
-local config = require "wifidog-ng.config"
-
-local M = {}
-
-local apple_host = {
- ["captive.apple.com"] = true,
- ["www.apple.com"] = true,
-}
-
-local terms = {}
-
-local function is_authed_user(mac)
- local r = os.execute("ipset test wifidog-ng-mac " .. mac .. " 2> /dev/null")
- return r == 0
-end
-
-local function allow_user(mac, temppass)
- if not temppass then
- terms[mac].authed = true
- os.execute("ipset add wifidog-ng-mac " .. mac)
- else
- local cfg = config.get()
- os.execute("ipset add wifidog-ng-mac " .. mac .. " timeout " .. cfg.temppass_time)
- end
-end
-
-local function deny_user(mac)
- os.execute("ipset del wifidog-ng-mac " .. mac)
-end
-
-function M.get_terms()
- local r = {}
- for k, v in pairs(terms) do
- if v.authed then
- r[k] = {ip = v.ip}
- end
- end
-
- return r
-end
-
-function M.new_term(ip, mac, token)
- terms[mac] = {ip = ip, token = token}
- if token then
- terms[mac].authed = true
- allow_user(mac)
- end
-end
-
-local function http_callback_auth(cl)
- local cfg = config.get()
- local token = cl:get_var("token")
- local ip = cl:get_remote_addr()
- local mac = util.arp_get(cfg.gw_ifname, ip)
-
- if not mac then
- uh.log(uh.LOG_ERR, "Not found macaddr for " .. ip)
- cl:send_error(401, "Unauthorized", "Not found your macaddr")
- return uh.REQUEST_DONE
- end
-
- if token and #token > 0 then
- if cl:get_var("logout") then
- local url = string.format("%s&stage=logout&ip=%s&mac=%s&token=%s", cfg.auth_url, ip, mac, token)
- http.request(url)
- deny_user(mac)
- else
- local url = string.format("%s&stage=login&ip=%s&mac=%s&token=%s", cfg.auth_url, ip, mac, token)
- local r = http.request(url)
-
- if not r then
- cl:send_error(401, "Unauthorized")
- return uh.REQUEST_DONE
- end
-
- local auth = r:match("Auth: (%d)")
- if auth == "1" then
- allow_user(mac)
- cl:redirect(302, string.format("%s&mac=%s", cfg.portal_url, mac))
- else
- cl:redirect(302, string.format("%s&mac=%s", cfg.msg_url, mac))
- return uh.REQUEST_DONE
- end
- end
- else
- cl:send_error(401, "Unauthorized")
- return uh.REQUEST_DONE
- end
-end
-
-local function http_callback_temppass(cl)
- local cfg = config.get()
- local ip = cl:get_remote_addr()
- local mac = util.arp_get(cfg.gw_ifname, ip)
-
- if not mac then
- uh.log(uh.LOG_ERR, "Not found macaddr for " .. ip)
- cl:send_error(401, "Unauthorized", "Not found your macaddr")
- return uh.REQUEST_DONE
- end
-
- local script = cl:get_var("script") or ""
-
- cl:send_header(200, "OK", -1)
- cl:header_end()
- allow_user(mac, true)
- cl:chunk_send(cl:get_var("script") or "");
- cl:request_done()
-
- return uh.REQUEST_DONE
-end
-
-local function http_callback_404(cl, path)
- local cfg = config.get()
-
- if cl:get_http_method() ~= uh.HTTP_METHOD_GET then
- cl:send_error(401, "Unauthorized")
- return uh.REQUEST_DONE
- end
-
- local ip = cl:get_remote_addr()
- local mac = util.arp_get(cfg.gw_ifname, ip)
- if not mac then
- uh.log(uh.LOG_ERR, "Not found macaddr for " .. ip)
- cl:send_error(401, "Unauthorized", "Not found your macaddr")
- return uh.REQUEST_DONE
- end
-
- term = terms[mac]
- if not term then
- terms[mac] = {ip = ip}
- end
-
- term = terms[mac]
-
- if is_authed_user(mac) then
- cl:redirect(302, "%s&mac=%s", cfg.portal_url, mac)
- return uh.REQUEST_DONE
- end
-
- cl:send_header(200, "OK", -1)
- cl:header_end()
-
- local header_host = cl:get_header("host")
- if apple_host[header_host] then
- local http_ver = cl:get_http_version()
- if http_ver == uh.HTTP_VER_10 then
- if not term.apple then
- cl:chunk_send("fuck you")
- term.apple = true
- cl:request_done()
- return uh.REQUEST_DONE
- end
- end
- end
-
- local redirect_html = [[
- <!doctype html><html><head><title>Success</title>
- <script type="text/javascript">
- setTimeout(function() {location.replace('%s&ip=%s&mac=%s');}, 1);</script>
- <style type="text/css">body {color:#FFF}</style></head>
- <body>Success</body></html>
- ]]
-
- cl:chunk_send(string.format(redirect_html, cfg.login_url, ip, mac))
- cl:request_done()
-
- return uh.REQUEST_DONE
-end
-
-local function on_request(cl, path)
- if path == "/wifidog/auth" then
- return http_callback_auth(cl)
- elseif path == "/wifidog/temppass" then
- return http_callback_temppass(cl)
- end
-
- return uh.REQUEST_CONTINUE
-end
-
-function M.init()
- local cfg = config.get()
-
- local srv = uh.new(cfg.gw_address, cfg.gw_port)
-
- srv:on_request(on_request)
- srv:on_error404(http_callback_404)
-
- if uh.SSL_SUPPORTED then
- local srv_ssl = uh.new(cfg.gw_address, cfg.gw_ssl_port)
-
- srv_ssl:ssl_init("/etc/wifidog-ng/ssl.crt", "/etc/wifidog-ng/ssl.key")
-
- srv_ssl:on_request(on_request)
- srv_ssl:on_error404(http_callback_404)
- end
-end
-
-return M
+++ /dev/null
---[[
- Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- USA
- --]]
-
-local uci = require "uci"
-local util = require "wifidog-ng.util"
-
-local M = {}
-
-local cfg = {}
-
-function M.parse()
- local c = uci.cursor()
-
- c:foreach('wifidog-ng', 'gateway', function(s)
- local port = s.port or 2060
- local ssl_port = s.ssl_port or 8443
- local interface = s.interface or "lan"
- local checkinterval = s.checkinterval or 30
- local client_timeout = s.client_timeout or 5
- local temppass_time = s.temppass_time or 30
- local id = s.id
- local address = s.address
-
- cfg.gw_port = tonumber(port)
- cfg.gw_ssl_port = tonumber(ssl_port)
- cfg.checkinterval = tonumber(checkinterval)
- cfg.client_timeout = tonumber(client_timeout)
- cfg.temppass_time = tonumber(temppass_time)
- cfg.gw_address = s.address
- cfg.gw_id = s.id
-
- local st = util.ubus("network.interface." .. interface, "status")
- cfg.gw_ifname = st.device
-
- if not cfg.gw_address then
- cfg.gw_address = st["ipv4-address"][1].address
- end
-
- if not cfg.gw_id then
- local devst = util.ubus("network.device", "status", {name = st.device})
- local macaddr = devst.macaddr
- cfg.gw_id = macaddr:gsub(":", ""):upper()
- end
- end)
-
- c:foreach('wifidog-ng', 'server', function(s)
- local host = s.host
- local path = s.path or "/wifidog/"
- local gw_port = cfg.gw_port
- local gw_id = cfg.gw_id
- local gw_address = cfg.gw_address
- local ssid = cfg.ssid or ""
- local proto, port = "http", ""
-
-
- if s.port ~= "80" and s.port ~= "443" then
- port = ":" .. s.port
- end
-
- if s.ssl == "1" then
- proto = "https"
- end
-
- cfg.login_url = string.format("%s://%s%s%s%s?gw_address=%s&gw_port=%d&gw_id=%s&ssid=%s",
- proto, host, port, path, s.login_path, gw_address, gw_port, gw_id, ssid)
-
- cfg.auth_url = string.format("%s://%s%s%s%s?gw_id=%s",
- proto, host, port, path, s.auth_path, gw_id)
-
- cfg.ping_url = string.format("%s://%s%s%s%s?gw_id=%s",
- proto, host, port, path, s.ping_path, gw_id)
-
- cfg.portal_url = string.format("%s://%s%s%s%s?gw_id=%s",
- proto, host, port, path, s.portal_path, gw_id)
-
- cfg.msg_url = string.format("%s://%s%s%s%s?gw_id=%s",
- proto, host, port, path, s.msg_path, gw_id)
- end)
-
- cfg.parsed = true
-end
-
-function M.get()
- if not cfg.parsed then
- M.parse()
- end
-
- return cfg
-end
-
-function M.add_whitelist(typ, value)
- local c = uci.cursor()
- local opt
-
- if typ == "mac" then
- typ = "validated_user"
- opt = "mac"
- elseif typ == "domain" then
- typ = "validated_domain"
- opt = "domain"
- else
- return
- end
-
- local exist = false
- c:foreach("wifidog-ng", typ, function(s)
- if s[opt] == value then
- exist = true
- end
- end)
-
- if not exist then
- local s = c:add("wifidog-ng", typ)
- c:set("wifidog-ng", s, opt, value)
- c:commit("wifidog-ng")
- end
-end
-
-function M.del_whitelist(typ, value)
- local c = uci.cursor()
- local opt
-
- if typ == "mac" then
- typ = "validated_user"
- opt = "mac"
- elseif typ == "domain" then
- typ = "validated_domain"
- opt = "domain"
- else
- return
- end
-
- c:foreach("wifidog-ng", typ, function(s)
- if s[opt] == value then
- c:delete("wifidog-ng", s[".name"])
- end
- end)
-
- c:commit("wifidog-ng")
-end
-
-return M
+++ /dev/null
---[[
- Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- USA
- --]]
-
-local uloop = require "uloop"
-local http = require "socket.http"
-local util = require "wifidog-ng.util"
-local config = require "wifidog-ng.config"
-
-local M = {}
-
-local timer = nil
-local start_time = os.time()
-
-local function heartbeat()
- local cfg = config.get()
-
- timer:set(1000 * cfg.checkinterval)
-
- local sysinfo = util.ubus("system", "info")
-
- local url = string.format("%s&sys_uptime=%d&sys_memfree=%d&sys_load=%d&wifidog_uptime=%d",
- cfg.ping_url, sysinfo.uptime, sysinfo.memory.free, sysinfo.load[1], os.time() - start_time)
- http.request(url)
-end
-
-function M.start()
- timer = uloop.timer(heartbeat, 1000)
-end
-
-return M
+++ /dev/null
---[[
- Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- USA
- --]]
-
-local uci = require "uci"
-local ubus = require "ubus"
-local http = require "socket.http"
-local auth = require "wifidog-ng.auth"
-local config = require "wifidog-ng.config"
-
-
-local M = {}
-
-local conn = nil
-
-local ubus_codes = {
- ["INVALID_COMMAND"] = 1,
- ["INVALID_ARGUMENT"] = 2,
- ["METHOD_NOT_FOUND"] = 3,
- ["NOT_FOUND"] = 4,
- ["NO_DATA"] = 5,
- ["PERMISSION_DENIED"] = 6,
- ["TIMEOUT"] = 7,
- ["NOT_SUPPORTED"] = 8,
- ["UNKNOWN_ERROR"] = 9,
- ["CONNECTION_FAILED"] = 10
-}
-
-local function reload_validated_domain()
- local c = uci.cursor()
-
- local file = io.open("/tmp/dnsmasq.d/wifidog-ng", "w")
-
- c:foreach("wifidog-ng", "validated_domain", function(s)
- file:write("ipset=/" .. s.domain .. "/wifidog-ng-ip\n")
- end)
- file:close()
-
- os.execute("/etc/init.d/dnsmasq restart &")
-end
-
-local methods = {
- ["wifidog-ng"] = {
- roam = {
- function(req, msg)
- local cfg = config.get()
-
- if not msg.ip or not msg.mac then
- return ubus_codes["INVALID_ARGUMENT"]
- end
-
- local url = string.format("%s&stage=roam&ip=%s&mac=%s", cfg.auth_url, msg.ip, msg.mac)
- local r = http.request(url) or ""
- local token = r:match("token=(%w+)")
- if token then
- auth.new_term(msg.ip, msg.mac, token)
- end
- end, {ip = ubus.STRING, mac = ubus.STRING }
- },
- term = {
- function(req, msg)
- if msg.action == "show" then
- conn:reply(req, {terms = auth.get_terms()});
- return
- end
-
- if not msg.action or not msg.mac then
- return ubus_codes["INVALID_ARGUMENT"]
- end
-
- if msg.action == "add" then
- auth.allow_user(mac)
- elseif msg.action == "del" then
- auth.deny_user(mac)
- end
- end, {action = ubus.STRING, mac = ubus.STRING }
- },
- whitelist = {
- function(req, msg)
- if not msg.action or not msg.type or not msg.value then
- return ubus_codes["INVALID_ARGUMENT"]
- end
-
- if msg.action == "add" then
- config.add_whitelist(msg.type, msg.value)
- if msg.type == "mac" then
- auth.allow_user(msg.value)
- end
- elseif msg.action == "del" then
- config.del_whitelist(msg.type, msg.value)
- if msg.type == "mac" then
- auth.deny_user(msg.value)
- end
- end
-
- if msg.type == "domain" then
- reload_validated_domain()
- end
- end, {action = ubus.STRING, type = ubus.STRING, value = ubus.STRING }
- },
- }
-}
-
-function M.init()
- conn = ubus.connect()
- if not conn then
- error("Failed to connect to ubus")
- end
-
- conn:add(methods)
-end
-
-return M
+++ /dev/null
---[[
- Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- USA
- --]]
-
-local _ubus = require "ubus"
-local _ubus_connection = nil
-
-local M = {}
-
-function M.arp_get(ifname, ipaddr)
- for l in io.lines("/proc/net/arp") do
- local f = {}
-
- for e in string.gmatch(l, "%S+") do
- f[#f + 1] = e
- end
-
- if f[1] == ipaddr and f[6] == ifname then
- return f[4]
- end
- end
-end
-
-function M.read_file(path, len)
- local file = io.open(path, "r")
- if not file then return nil end
-
- if not len then len = "*a" end
-
- local data = file:read(len)
- file:close()
-
- return data
-end
-
-local ubus_codes = {
- "INVALID_COMMAND",
- "INVALID_ARGUMENT",
- "METHOD_NOT_FOUND",
- "NOT_FOUND",
- "NO_DATA",
- "PERMISSION_DENIED",
- "TIMEOUT",
- "NOT_SUPPORTED",
- "UNKNOWN_ERROR",
- "CONNECTION_FAILED"
-}
-
-function M.ubus(object, method, data)
- if not _ubus_connection then
- _ubus_connection = _ubus.connect()
- assert(_ubus_connection, "Unable to establish ubus connection")
- end
-
- if object and method then
- if type(data) ~= "table" then
- data = { }
- end
- local rv, err = _ubus_connection:call(object, method, data)
- return rv, err, ubus_codes[err]
- elseif object then
- return _ubus_connection:signatures(object)
- else
- return _ubus_connection:objects()
- end
-end
-
-return M
+++ /dev/null
---[[
- Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- USA
- --]]
-
-local M = {
- MAJOR = 2,
- MINOR = 0,
- PATCH = 0
-}
-
-function M.string()
- return string.format("%d.%d.%d", M.MAJOR, M.MINOR, M.PATCH)
-end
-
-return M
+++ /dev/null
-ifeq ($(findstring openwrt, $(CC)),)
-ifneq ($(KERNELRELEASE),)
- wifidog-ng-objs := main.o config.o
- obj-m := wifidog-ng.o
-else
- KDIR = /lib/modules/$(shell uname -r)/build
-
-all:
- make -C $(KDIR) M=$(PWD) modules
-
-clean:
- rm -rf *.o *.ko *.mod.c Module.* modules.* .*.cmd .tmp*
-
-endif
-else
- wifidog-ng-objs := main.o config.o
- obj-m := wifidog-ng.o
-endif
+++ /dev/null
-/*
- * Copyright (C) 2017 jianhui zhao <zhaojh329@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/uaccess.h>
-#include <linux/inetdevice.h>
-#include <linux/seq_file.h>
-#include <linux/version.h>
-
-#include "config.h"
-
-static struct proc_dir_entry *proc;
-static struct config conf;
-
-static int update_gw_interface(const char *interface)
-{
- int ret = 0;
- struct net_device *dev;
- struct in_device *in_dev;
-#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 2, 21)
- const struct in_ifaddr *ifa;
-#endif
-
- dev = dev_get_by_name(&init_net, interface);
- if (!dev) {
- pr_err("Not found interface: %s\n", interface);
- return -ENOENT;
- }
-
- conf.interface_ifindex = dev->ifindex;
-
- in_dev = inetdev_by_index(dev_net(dev), conf.interface_ifindex);
- if (!in_dev) {
- pr_err("Not found in_dev on %s\n", interface);
- ret = -ENOENT;
- goto QUIT;
- }
-
-#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 2, 21)
- in_dev_for_each_ifa_rcu(ifa, in_dev) {
- if (ifa->ifa_flags & IFA_F_SECONDARY)
- continue;
-#else
- for_primary_ifa(in_dev) {
-#endif
- conf.interface_ipaddr = ifa->ifa_local;
- conf.interface_mask = ifa->ifa_mask;
- conf.interface_broadcast = ifa->ifa_broadcast;
-
- pr_info("Found ip from %s: %pI4\n", interface, &conf.interface_ipaddr);
- break;
-#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 2, 21)
- }
-#else
- } endfor_ifa(in_dev)
-#endif
-
-QUIT:
- dev_put(dev);
-
- return ret;
-}
-
-static int proc_config_show(struct seq_file *s, void *v)
-{
- seq_printf(s, "enabled(RW) = %d\n", conf.enabled);
- seq_printf(s, "interface(RW) = %s\n", conf.interface);
- seq_printf(s, "ipaddr(RO) = %pI4\n", &conf.interface_ipaddr);
- seq_printf(s, "netmask(RO) = %pI4\n", &conf.interface_mask);
- seq_printf(s, "broadcast(RO) = %pI4\n", &conf.interface_broadcast);
- seq_printf(s, "port(RW) = %d\n", conf.port);
- seq_printf(s, "ssl_port(RW) = %d\n", conf.ssl_port);
-
- return 0;
-}
-
-static ssize_t proc_config_write(struct file *file, const char __user *buf, size_t size, loff_t *ppos)
-{
- char data[128];
- char *delim, *key;
- const char *value;
- int update = 0;
-
- if (size == 0)
- return -EINVAL;
-
- if (size > sizeof(data))
- size = sizeof(data);
-
- if (copy_from_user(data, buf, size))
- return -EFAULT;
-
- data[size - 1] = 0;
-
- key = data;
- while (key && *key) {
- while (*key && (*key == ' '))
- key++;
-
- delim = strchr(key, '=');
- if (!delim)
- break;
-
- *delim++ = 0;
- value = delim;
-
- delim = strchr(value, '\n');
- if (delim)
- *delim++ = 0;
-
- if (!strcmp(key, "enabled")) {
- conf.enabled = simple_strtol(value, NULL, 0);
- if (conf.enabled)
- update = 1;
- pr_info("wifidog %s\n", conf.enabled ? "enabled" : "disabled");
- } else if (!strcmp(key, "interface")) {
- strncpy(conf.interface, value, sizeof(conf.interface) - 1);
- update = 1;
- } else if (!strcmp(key, "port")) {
- conf.port = simple_strtol(value, NULL, 0);
- } else if (!strcmp(key, "ssl_port")) {
- conf.ssl_port = simple_strtol(value, NULL, 0);
- }
-
- key = delim;
- }
-
- if (update)
- update_gw_interface(conf.interface);
- return size;
-}
-
-static int proc_config_open(struct inode *inode, struct file *file)
-{
- return single_open(file, proc_config_show, NULL);
-}
-
-const static struct file_operations proc_config_ops = {
- .owner = THIS_MODULE,
- .open = proc_config_open,
- .read = seq_read,
- .write = proc_config_write,
- .llseek = seq_lseek,
- .release = single_release
-};
-
-int init_config(void)
-{
- int ret = 0;
-
- conf.interface_ifindex= -1;
- conf.port = 2060;
- conf.ssl_port = 8443;
- strcpy(conf.interface, "br-lan");
-
- proc = proc_mkdir(PROC_DIR_NAME, NULL);
- if (!proc) {
- pr_err("can't create dir /proc/"PROC_DIR_NAME"/\n");
- return -ENODEV;;
- }
-
- if (!proc_create("config", 0644, proc, &proc_config_ops)) {
- pr_err("can't create file /proc/"PROC_DIR_NAME"/config\n");
- ret = -EINVAL;
- goto remove;
- }
-
- return 0;
-
-remove:
- remove_proc_entry(PROC_DIR_NAME, NULL);
- return ret;
-}
-
-void deinit_config(void)
-{
- remove_proc_entry("config", proc);
- remove_proc_entry(PROC_DIR_NAME, NULL);
-}
-
-struct config *get_config(void)
-{
- return &conf;
-}
+++ /dev/null
-/*
- * Copyright (C) 2017 jianhui zhao <zhaojh329@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __CONFIG_H_
-#define __CONFIG_H_
-
-#include <linux/proc_fs.h>
-
-#define PROC_DIR_NAME "wifidog-ng"
-
-struct config {
- int enabled;
- char interface[32];
- int interface_ifindex;
- __be32 interface_ipaddr;
- __be32 interface_mask;
- __be32 interface_broadcast;
- int port;
- int ssl_port;
-};
-
-int init_config(void);
-void deinit_config(void);
-struct config *get_config(void);
-
-#endif
+++ /dev/null
-/*
- * Copyright (C) 2017 jianhui zhao <zhaojh329@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/version.h>
-
-#include <linux/ip.h>
-#include <linux/tcp.h>
-#include <linux/udp.h>
-#include <net/netfilter/nf_nat.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
-#include <net/netfilter/nf_nat_l3proto.h>
-#endif
-
-#include "utils.h"
-#include "config.h"
-
-#define IPS_HIJACKED (1 << 31)
-#define IPS_ALLOWED (1 << 30)
-
-#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 17, 19)
-static u32 wd_nat_setup_info(struct sk_buff *skb, struct nf_conn *ct)
-#else
-static u32 wd_nat_setup_info(void *priv, struct sk_buff *skb,
- const struct nf_hook_state *state, struct nf_conn *ct)
-#endif
-{
- struct config *conf = get_config();
- struct tcphdr *tcph = tcp_hdr(skb);
- union nf_conntrack_man_proto proto;
-#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 17, 19)
- struct nf_nat_range2 newrange = {};
-#else
- struct nf_nat_range newrange = {};
-#endif
- static uint16_t PORT_80 = htons(80);
-
- proto.tcp.port = (tcph->dest == PORT_80) ? htons(conf->port) : htons(conf->ssl_port);
- newrange.flags = NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED;
- newrange.min_addr.ip = conf->interface_ipaddr;
- newrange.max_addr.ip = conf->interface_ipaddr;
- newrange.min_proto = proto;
- newrange.max_proto = proto;
-
- ct->status |= IPS_HIJACKED;
-
- return nf_nat_setup_info(ct, &newrange, NF_NAT_MANIP_DST);
-}
-
-static u32 wifidog_hook(void *priv, struct sk_buff *skb, const struct nf_hook_state *state)
-{
- struct config *conf = get_config();
- struct iphdr *iph = ip_hdr(skb);
- struct nf_conn *ct;
- struct tcphdr *tcph;
- struct udphdr *udph;
- enum ip_conntrack_info ctinfo;
- static uint16_t PORT_80 = htons(80); /* http */
- static uint16_t PORT_443 = htons(443); /* https */
- static uint16_t PORT_67 = htons(67); /* dhcp */
- static uint16_t PORT_53 = htons(53); /* dns */
-
- if (unlikely(!conf->enabled))
- return NF_ACCEPT;
-
- if (state->in->ifindex != conf->interface_ifindex)
- return NF_ACCEPT;
-
- /* Accept broadcast */
- if (skb->pkt_type == PACKET_BROADCAST || skb->pkt_type == PACKET_MULTICAST)
- return NF_ACCEPT;
-
- /* Accept all to local area networks */
- if ((iph->daddr | ~conf->interface_mask) == conf->interface_broadcast)
- return NF_ACCEPT;
-
- ct = nf_ct_get(skb, &ctinfo);
- if (!ct || (ct->status & IPS_ALLOWED))
- return NF_ACCEPT;
-
- if (ct->status & IPS_HIJACKED) {
- if (is_allowed_mac(skb, state)) {
- /* Avoid duplication of authentication */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0)
- nf_reset(skb);
-#else
- nf_reset_ct(skb);
-#endif
- nf_ct_kill(ct);
- }
- return NF_ACCEPT;
- } else if (ctinfo == IP_CT_NEW && (is_allowed_dest_ip(skb, state) || is_allowed_mac(skb, state))) {
- ct->status |= IPS_ALLOWED;
- return NF_ACCEPT;
- }
-
- switch (iph->protocol) {
- case IPPROTO_TCP:
- tcph = tcp_hdr(skb);
- if(tcph->dest == PORT_53 || tcph->dest == PORT_67) {
- ct->status |= IPS_ALLOWED;
- return NF_ACCEPT;
- }
-
- if (tcph->dest == PORT_80 || tcph->dest == PORT_443)
- goto redirect;
- else
- return NF_DROP;
-
- case IPPROTO_UDP:
- udph = udp_hdr(skb);
- if(udph->dest == PORT_53 || udph->dest == PORT_67) {
- ct->status |= IPS_ALLOWED;
- return NF_ACCEPT;
- }
- return NF_DROP;
-
- default:
- ct->status |= IPS_ALLOWED;
- return NF_ACCEPT;
- }
-
-redirect:
- /* all packets from unknown client are dropped */
- if (ctinfo != IP_CT_NEW || (ct->status & IPS_DST_NAT_DONE)) {
- pr_debug("dropping packets of suspect stream, src:%pI4, dst:%pI4\n", &iph->saddr, &iph->daddr);
- return NF_DROP;
- }
-
-#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 17, 19)
- return wd_nat_setup_info(skb, ct);
-#else
- return nf_nat_ipv4_in(priv, skb, state, wd_nat_setup_info);
-#endif
-}
-
-static struct nf_hook_ops wifidog_ops __read_mostly = {
- .hook = wifidog_hook,
- .pf = PF_INET,
- .hooknum = NF_INET_PRE_ROUTING,
- .priority = NF_IP_PRI_NAT_DST
-};
-
-static int __init wifidog_init(void)
-{
- int ret;
-
- ret = init_config();
- if (ret)
- return ret;
-
-#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 0, 21)
- ret = nf_nat_ipv4_register_fn(&init_net, &wifidog_ops);
-#elif LINUX_VERSION_CODE > KERNEL_VERSION(4, 17, 19)
- ret = nf_nat_l3proto_ipv4_register_fn(&init_net, &wifidog_ops);
-#elif LINUX_VERSION_CODE > KERNEL_VERSION(4, 12, 14)
- ret = nf_register_net_hook(&init_net, &wifidog_ops);
-#else
- ret = nf_register_hook(&wifidog_ops);
-#endif
- if (ret < 0) {
- pr_err("can't register hook\n");
- goto remove_config;
- }
-
- pr_info("kmod of wifidog is started\n");
-
- return 0;
-
-remove_config:
- deinit_config();
- return ret;
-}
-
-static void __exit wifidog_exit(void)
-{
- deinit_config();
-
-#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 0, 21)
- nf_nat_ipv4_unregister_fn(&init_net, &wifidog_ops);
-#elif LINUX_VERSION_CODE > KERNEL_VERSION(4, 17, 19)
- nf_nat_l3proto_ipv4_unregister_fn(&init_net, &wifidog_ops);
-#elif LINUX_VERSION_CODE > KERNEL_VERSION(4, 12, 14)
- nf_unregister_net_hook(&init_net, &wifidog_ops);
-#else
- nf_unregister_hook(&wifidog_ops);
-#endif
-
- pr_info("kmod of wifidog-ng is stop\n");
-}
-
-module_init(wifidog_init);
-module_exit(wifidog_exit);
-
-MODULE_AUTHOR("jianhui zhao <zhaojh329@gmail.com>");
-MODULE_LICENSE("GPL");
+++ /dev/null
-/*
- * Copyright (C) 2017 jianhui zhao <zhaojh329@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __UTILS_H_
-#define __UTILS_H_
-
-#include <linux/netfilter/ipset/ip_set.h>
-
-static inline int wd_ip_set_test(const char *name, const struct sk_buff *skb,
- struct ip_set_adt_opt *opt, const struct nf_hook_state *state)
-{
- static struct xt_action_param par = { };
- struct ip_set *set = NULL;
- ip_set_id_t index;
- int ret;
-
- index = ip_set_get_byname(state->net, name, &set);
- if (!set)
- return 0;
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
- par.net = state->net;
-#else
- par.state = state;
-#endif
-
- ret = ip_set_test(index, skb, &par, opt);
- ip_set_put_byindex(state->net, index);
- return ret;
-}
-
-static inline int is_allowed_mac(struct sk_buff *skb, const struct nf_hook_state *state)
-{
- static struct ip_set_adt_opt opt = {
- .family = NFPROTO_IPV4,
- .dim = IPSET_DIM_ONE,
- .flags = IPSET_DIM_ONE_SRC,
- .ext.timeout = UINT_MAX,
- };
-
- return wd_ip_set_test("wifidog-ng-mac", skb, &opt, state);
-}
-
-static inline int is_allowed_dest_ip(struct sk_buff *skb, const struct nf_hook_state *state)
-{
- static struct ip_set_adt_opt opt = {
- .family = NFPROTO_IPV4,
- .dim = IPSET_DIM_ONE,
- .ext.timeout = UINT_MAX,
- };
-
- return wd_ip_set_test("wifidog-ng-ip", skb, &opt, state);
-}
-
-#endif
PKG_NAME:=cgroupfs-mount
PKG_VERSION:=1.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/tianon/cgroupfs-mount/tar.gz/${PKG_VERSION}?
include $(INCLUDE_DIR)/package.mk
+define Package/cgroupfs-mount/config
+ config CGROUPFS_MOUNT_KERNEL_CGROUPS
+ bool "Enable kernel cgroups support"
+ depends on PACKAGE_cgroupfs-mount
+ default y if ( DOCKER_KERNEL_OPTIONS || LXC_KERNEL_OPTIONS )
+ select KERNEL_CGROUPS
+endef
+
define Package/cgroupfs-mount
SECTION:=utils
CATEGORY:=Utilities
TITLE:=cgroup mount scripts
- DEPENDS:=@KERNEL_CGROUPS +mount-utils
+ DEPENDS:=+mount-utils
MENU:=1
endef
PKG_NAME:=collectd
PKG_VERSION:=5.11.0
-PKG_RELEASE:=7
+PKG_RELEASE:=9
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://collectd.org/files/ \
tape \
tokyotyrant \
turbostat \
- ubi \
uuid \
varnish \
virt \
ted \
thermal \
threshold \
+ ubi \
unixsock \
uptime \
users \
$(eval $(call BuildPlugin,tcpconns,TCP connection tracking input,tcpconns,))
$(eval $(call BuildPlugin,thermal,system temperatures input,thermal,))
$(eval $(call BuildPlugin,threshold,Notifications and thresholds,threshold,))
+$(eval $(call BuildPlugin,ubi,Unsorted block images,ubi,@NAND_SUPPORT))
$(eval $(call BuildPlugin,unixsock,unix socket output,unixsock,))
$(eval $(call BuildPlugin,uptime,uptime status input,uptime,))
$(eval $(call BuildPlugin,users,user logged in status input,users,))
config_get BaseDir globals BaseDir "/var/run/collectd"
printf "BaseDir \"%s\"\n" "$BaseDir" >> "$COLLECTD_CONF"
- config_get Include globals Include "/tmp/collectd.d"
- printf "Include \"%s\"\n" "$Include" >> "$COLLECTD_CONF"
- mkdir -p "$Include"
-
config_get PIDFile globals PIDFile "/var/run/collectd.pid"
printf "PIDFile \"%s\"\n" "$PIDFile" >> "$COLLECTD_CONF"
printf "TypesDB \"%s\"\n" "$TypesDB" >> "$COLLECTD_CONF"
config_get Interval globals Interval 30
- printf "Interval \"%s\"\n" "$Interval" >> "$COLLECTD_CONF"
+ printf "Interval %s\n" "$Interval" >> "$COLLECTD_CONF"
config_get ReadThreads globals ReadThreads 2
printf "ReadThreads \"%s\"\n" "$ReadThreads" >> "$COLLECTD_CONF"
config_get Hostname globals Hostname "$(uname -n)"
printf "Hostname \"%s\"\n" "$Hostname" >> "$COLLECTD_CONF"
+ config_get Include globals Include "/tmp/collectd.d"
+ printf "Include \"%s\"\n" "$Include" >> "$COLLECTD_CONF"
+ mkdir -p "$Include"
+
printf "\n" >> "$COLLECTD_CONF"
# PLUGIN CONFIG
# option IgnoreSelected '0'
# list Device ''
+#config plugin 'ubi'
+# option enable '0'
+# list Device 'ubi0'
+# option IgnoreSelected '0'
+
#config plugin 'unixsock'
# option enable '0'
# option SocketFile '/var/run/collectd/query.sock'
--- /dev/null
+{
+ "bool": [
+ "IgnoreSelected"
+ ],
+ "list": [
+ "Device"
+ ]
+}
--- /dev/null
+--- a/src/ubi.c
++++ b/src/ubi.c
+@@ -70,13 +70,13 @@ static int ubi_config(const char *key, c
+ } /* int ubi_config */
+
+ static void ubi_submit(const char *dev_name, const char *type,
+- counter_t value) {
++ gauge_t value) {
+ value_list_t vl = VALUE_LIST_INIT;
+
+ if (ignorelist_match(ignorelist, dev_name) != 0)
+ return;
+
+- vl.values = &(value_t){.counter = value};
++ vl.values = &(value_t){.gauge = value};
+ vl.values_len = 1;
+ sstrncpy(vl.plugin, PLUGIN_NAME, sizeof(vl.plugin));
+ sstrncpy(vl.type_instance, dev_name, sizeof(vl.type_instance));
+@@ -107,7 +107,7 @@ static int ubi_read_dev_attr(const char
+ return -1;
+ }
+
+- ubi_submit(dev_name, attr, (counter_t)val);
++ ubi_submit(dev_name, attr, (gauge_t)val);
+
+ return 0;
+ } /* int ubi_read_dev_attr */
+--- a/src/types.db
++++ b/src/types.db
+@@ -7,7 +7,7 @@ apache_scoreboard value:GAUGE:0:65
+ ath_nodes value:GAUGE:0:65535
+ ath_stat value:DERIVE:0:U
+ backends value:GAUGE:0:65535
+-bad_peb_count value:COUNTER:0:U
++bad_peb_count value:GAUGE:0:U
+ bitrate value:GAUGE:0:4294967295
+ blocked_clients value:GAUGE:0:U
+ bucket value:GAUGE:0:U
+@@ -140,7 +140,7 @@ job_stats value:DERIVE:0:U
+ latency value:GAUGE:0:U
+ links value:GAUGE:0:U
+ load shortterm:GAUGE:0:5000, midterm:GAUGE:0:5000, longterm:GAUGE:0:5000
+-max_ec value:COUNTER:0:U
++max_ec value:GAUGE:0:U
+ media value:GAUGE:0:18446744073709551615
+ memory_bandwidth value:DERIVE:0:U
+ md_disks value:GAUGE:0:U
-menu "Kernel features for Docker"
- config DOCKER_KERNEL_OPTIONS
- bool "Enable Basic kernel support for Docker"
+config DOCKER_KERNEL_OPTIONS
+ bool "Enable Basic kernel support for Docker"
+ depends on PACKAGE_docker-ce
+ default n
+ select KERNEL_CGROUPS
+ select KERNEL_CGROUP_CPUACCT
+ select KERNEL_CGROUP_SCHED
+ select KERNEL_NAMESPACES
+ select KERNEL_CPUSETS
+ select KERNEL_MEMCG
+ select KERNEL_KEYS
+ select KERNEL_DEVPTS_MULTIPLE_INSTANCES
+ select KERNEL_POSIX_MQUEUE
+ help
+ Select needed kernel options for Docker. Options include
+ cgroups, namespaces and other miscellaneous options.
+ see also https://github.com/docker/engine/blob/master/contrib/check-config.sh
+
+config DOCKER_SECCOMP
+ bool "Enable support for seccomp in Docker"
+ depends on PACKAGE_docker-ce
+ default n
+ select KERNEL_SECCOMP
+ select PACKAGE_libseccomp
+ help
+ Build Docker with support for seccomp filters.
+ Select libseccomp which also pulls-in the needed kernel features.
+
+config DOCKER_RES_SHAPE
+ bool "Enables support for resource shaping"
+ depends on PACKAGE_docker-ce
+ default n
+ select KERNEL_MEMCG_SWAP
+ select KERNEL_MEMCG_SWAP_ENABLED
+ select KERNEL_BLK_DEV_THROTTLING
+ select KERNEL_CFQ_GROUP_IOSCHED
+ select KERNEL_CGROUP_PERF
+ select KERNEL_FAIR_GROUP_SCHED
+ select KERNEL_CFS_BANDWIDTH
+ select KERNEL_RT_GROUP_SCHED
+
+menu "Network"
+ depends on PACKAGE_docker-ce
+
+ config DOCKER_NET_OVERLAY
+ bool "Enables the Overlay network feature"
default n
- select KERNEL_CGROUPS
- select KERNEL_CGROUP_CPUACCT
- select KERNEL_CGROUP_SCHED
- select KERNEL_NAMESPACES
- select KERNEL_CPUSETS
- select KERNEL_MEMCG
- select KERNEL_KEYS
- select KERNEL_DEVPTS_MULTIPLE_INSTANCES
- select KERNEL_POSIX_MQUEUE
+ select PACKAGE_kmod-udptunnel4
help
- Select needed kernel options for Docker. Options include
- cgroups, namespaces and other miscellaneous options.
- see also https://github.com/docker/engine/blob/master/contrib/check-config.sh
+ Selects kernel options for the Overlay network feature.
+ Includes udptunnel4
- config DOCKER_SECCOMP
- bool "Enable support for seccomp in Docker"
+ config DOCKER_NET_ENCRYPT
+ bool "Enable encrypted networking kernel support"
+ depends on DOCKER_NET_OVERLAY
default n
- select KERNEL_SECCOMP
- select PACKAGE_libseccomp
+ select PACKAGE_kmod-ipsec
+ select PACKAGE_kmod-ipsec4
+ select PACKAGE_kmod-crypto-gcm
+ select PACKAGE_kmod-crypto-ghash
help
- Build Docker with support for seccomp filters.
- Select libseccomp which also pulls-in the needed kernel features.
+ Select needed kernel options for encrypted networking support.
- config DOCKER_RES_SHAPE
- bool "Enables support for resource shaping"
+ config DOCKER_NET_MACVLAN
+ bool "Enables macvlan kernel support"
default n
- select KERNEL_MEMCG_SWAP
- select KERNEL_MEMCG_SWAP_ENABLED
- select KERNEL_BLK_DEV_THROTTLING
- select KERNEL_CFQ_GROUP_IOSCHED
- select KERNEL_CGROUP_PERF
- select KERNEL_FAIR_GROUP_SCHED
- select KERNEL_CFS_BANDWIDTH
- select KERNEL_RT_GROUP_SCHED
-
- menu "Network"
- config DOCKER_NET_OVERLAY
- bool "Enables the Overlay network feature"
- default n
- select PACKAGE_kmod-udptunnel4
- help
- Selects kernel options for the Overlay network feature.
- Includes udptunnel4
+ select PACKAGE_kmod-macvlan
+ select PACKAGE_kmod-dummy
- config DOCKER_NET_ENCRYPT
- bool "Enable encrypted networking kernel support"
- depends on DOCKER_NET_OVERLAY
- default n
- select PACKAGE_kmod-ipsec
- select PACKAGE_kmod-ipsec4
- select PACKAGE_kmod-crypto-gcm
- select PACKAGE_kmod-crypto-ghash
- help
- Select needed kernel options for encrypted networking support.
-
- config DOCKER_NET_MACVLAN
- bool "Enables macvlan kernel support"
- default n
- select PACKAGE_kmod-macvlan
- select PACKAGE_kmod-dummy
+ config DOCKER_NET_TFTP
+ bool "Enable ftp/tftp client kernel support"
+ default n
+ select PACKAGE_kmod-nf-nathelper
+ select PACKAGE_kmod-nf-nathelper-extra
+endmenu
- config DOCKER_NET_TFTP
- bool "Enable ftp/tftp client kernel support"
- default n
- select PACKAGE_kmod-nf-nathelper
- select PACKAGE_kmod-nf-nathelper-extra
- endmenu
+menu "Storage"
+ depends on PACKAGE_docker-ce
- menu "Storage"
- config DOCKER_STO_EXT4
- bool "Enables support for ext3 or ext4 as the backing filesystem"
- default n
- select KERNEL_EXT4_FS_POSIX_ACL
+ config DOCKER_STO_EXT4
+ bool "Enables support for ext3 or ext4 as the backing filesystem"
+ default n
+ select KERNEL_EXT4_FS_POSIX_ACL
- config DOCKER_STO_BTRFS
- bool "Enables support for btrfs as the backing filesystem"
- default n
- select PACKAGE_kmod-fs-btrfs
- select KERNEL_BTRFS_FS_POSIX_ACL
- endmenu
+ config DOCKER_STO_BTRFS
+ bool "Enables support for btrfs as the backing filesystem"
+ default n
+ select PACKAGE_kmod-fs-btrfs
+ select KERNEL_BTRFS_FS_POSIX_ACL
endmenu
include $(TOPDIR)/rules.mk
PKG_NAME:=docker-ce
-PKG_VERSION:=19.03.9
+PKG_VERSION:=19.03.11
PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=components/cli/LICENSE components/engine/LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/docker/docker-ce/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=f1b9e28e789516b4ba741cc4683c2c088e8c4893e2acbd7ac272a75ddeccc1a1
-PKG_SOURCE_VERSION:=9d988398e7 # SHA1 used within the docker executables
+PKG_HASH:=5821b189056d64ca7961c4c93cfa60c1805d0fbe4a1ea2d57ff2122b3dc61ea1
+PKG_SOURCE_VERSION:=42e35e61f3 # SHA1 used within the docker executables
PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
-define CheckExpectedSrcVer
- $(eval SRC_VER:=$(shell grep --only-matching --perl-regexp '(?<=PKG_SOURCE_VERSION:=)(.*)' $(1)))
- $(if $(subst $(2),,$(SRC_VER)), \
- $(error ERROR: Expected $(1) source version '$(2)', found '$(SRC_VER)'), \
- $(info OK: Expected $(1) source version '$(2)', found '$(SRC_VER)') \
+# $(1) = path to dependent package 'Makefile'
+# $(2) = relevant docker-ce '.installer' file
+define EnsureVendoredVersion
+ ( \
+ DEP_VER=$$$$( grep --only-matching --perl-regexp '(?<=PKG_SOURCE_VERSION:=)(.*)' "$(1)" ); \
+ VEN_VER=$$$$( grep --only-matching --perl-regexp '(?<=_COMMIT:=)(.*)(?=})' "$(PKG_BUILD_DIR)/components/engine/hack/dockerfile/install/$(2)" ); \
+ if [ $$$$VEN_VER != $$$$DEP_VER ]; then \
+ echo "ERROR: Expected 'PKG_SOURCE_VERSION:=$$$$VEN_VER' in '$(1)', found 'PKG_SOURCE_VERSION:=$$$$DEP_VER'"; \
+ exit 1; \
+ fi \
)
endef
-# values from respective '.installer' files at https://github.com/docker/docker-ce/blob/v$(PKG_VERSION)/components/engine/hack/dockerfile/install/
-$(eval $(call CheckExpectedSrcVer,../containerd/Makefile,7ad184331fa3e55e52b890ea95e65ba581ae3429))
-$(eval $(call CheckExpectedSrcVer,../libnetwork/Makefile,0941c3f409260d5f05cfa6fc68420d8ad45ee483))
-$(eval $(call CheckExpectedSrcVer,../runc/Makefile,dc9208a3303feef5b3839f4323d9beb36df0a9dd))
-$(eval $(call CheckExpectedSrcVer,../tini/Makefile,fec3683b971d9c3ef73f284f176672c44b448662))
-
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
to run anywhere consistently on any infrastructure.
endef
+define Build/Prepare
+ $(Build/Prepare/Default)
+
+ # Verify dependencies are the vendored version
+ $(call EnsureVendoredVersion,../containerd/Makefile,containerd.installer)
+ $(call EnsureVendoredVersion,../libnetwork/Makefile,proxy.installer)
+ $(call EnsureVendoredVersion,../runc/Makefile,runc.installer)
+ $(call EnsureVendoredVersion,../tini/Makefile,tini.installer)
+endef
+
define Build/Configure
# move so GoPackage/Build/Configure will get the correct path
mv $(PKG_BUILD_DIR)/components/engine $(PKG_BUILD_DIR)/
PKG_NAME:=docker-compose
PKG_VERSION:=1.26.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PYPI_NAME:=docker-compose
PKG_HASH:=7e836102d139aca667d6af53f0f4d942c9459ec24d6dd4f0203d74359b0fd311
+python3-texttable \
+python3-websocket-client \
+python3-yaml
- VARIANT:=python3
endef
define Package/docker-compose/description
include $(TOPDIR)/rules.mk
PKG_NAME:=haveged
-PKG_VERSION:=1.9.8
-PKG_RELEASE:=3
+PKG_VERSION:=1.9.12
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/jirka-h/haveged/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=99aa1996c6e39ea2459cfc37addfb8b1eecc63f3a2b6da9db17b22e76b6851ae
+PKG_HASH:=0b8642515ea7189a1772cdb8072b98a6768cf9b963faf3cd664329fd79975ffa
PKG_BUILD_DIR:=$(BUILD_DIR)/haveged-$(PKG_VERSION)
PKG_LICENSE:=GPLv3
include $(TOPDIR)/rules.mk
PKG_NAME:=idevicerestore
-PKG_SOURCE_DATE:=2020-04-20
-PKG_SOURCE_VERSION:=d1cb6bfef6ac8fb08472ac5f1fac93895084371c
+PKG_VERSION:=1.0.0
PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL=https://github.com/libimobiledevice/idevicerestore
-PKG_MIRROR_HASH:=1f0afb92a1a32b7ac929408c1dd5356329866a2672075d0f55dde7d31dac6cc2
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://www.libimobiledevice.org/downloads
+PKG_HASH:=32712e86315397fd2e8999e77a2d2f790c67f6b4aa50d4d1c64cb2c4609836f7
PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
-PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_NAME:=irqbalance
PKG_VERSION:=1.6.0
-PKG_RELEASE:=9
+PKG_RELEASE:=10
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_PROTO:=git
config_get_bool enabled irqbalance enabled 0
[ "$enabled" -gt 0 ] || return 0
+ mkdir -p /var/run/irqbalance
+
# 10 is the default
config_get interval irqbalance interval 10
--- /dev/null
+--- a/irqbalance.h
++++ b/irqbalance.h
+@@ -158,7 +158,7 @@ extern unsigned int log_mask;
+ #endif /* HAVE_LIBSYSTEMD */
+
+ #define SOCKET_PATH "irqbalance"
+-#define SOCKET_TMPFS "/run/irqbalance/"
++#define SOCKET_TMPFS "/var/run/irqbalance/"
+
+ #endif /* __INCLUDE_GUARD_IRQBALANCE_H_ */
+
+--- a/ui/irqbalance-ui.h
++++ b/ui/irqbalance-ui.h
+@@ -8,7 +8,7 @@
+ #include <glib-unix.h>
+
+ #define SOCKET_PATH "irqbalance"
+-#define SOCKET_TMPFS "/run/irqbalance"
++#define SOCKET_TMPFS "/var/run/irqbalance"
+
+ #define STATS "stats"
+ #define SET_SLEEP "settings sleep "
PKG_NAME:=kmod
PKG_VERSION:=20
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/kernel/kmod/
TITLE:=Linux kernel module handling
URL:=https://www.kernel.org/pub/linux/utils/kernel/kmod/
DEPENDS:=+zlib
+endef
+
+
+define Package/kmod
+$(call Package/kmod/Default)
+ TITLE+= (tools)
ALTERNATIVES:=\
200:/sbin/depmod:/sbin/kmod \
200:/sbin/insmod:/sbin/kmod \
200:/sbin/rmmod:/sbin/kmod
endef
-
-define Package/kmod
-$(call Package/kmod/Default)
- TITLE+= (tools)
-endef
-
define Package/kmod/description
Linux kernel module handling
kmod is a set of tools to handle common tasks with Linux kernel modules like
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://$(GO_PKG)
-PKG_SOURCE_VERSION:=0941c3f409260d5f05cfa6fc68420d8ad45ee483
-PKG_SOURCE_DATE:=2020-03-19
-PKG_MIRROR_HASH:=678e1d3175fd78833fddd38965baa3784993dbf53c3f56f5f7d39364eeaf93e1
+PKG_SOURCE_VERSION:=153d0769a1181bf591a9637fd487a541ec7db1e6
+PKG_SOURCE_DATE:=2020-04-04
+PKG_MIRROR_HASH:=72d540bd6a3681dbc6eb4d271beb57d030b501c2e4bca33e82b6027a3e523ac6
PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
include $(TOPDIR)/rules.mk
PKG_NAME:=openzwave
-PKG_VERSION:=1.6.1134
+PKG_VERSION:=1.6.1149
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://old.openzwave.com/downloads
-PKG_HASH:=719e904f5ac022772db81517e918d7994562d68a2820dd161b5c419c39f167d8
+PKG_HASH:=dc747c24cae11e4aa121252cc38ea92d1fbc587dc514737dd0e2b24191521c48
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=pcsc-lite
-PKG_VERSION:=1.8.26
+PKG_VERSION:=1.9.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://pcsclite.apdu.fr/files/
-PKG_HASH:=3eb7be7d6ef618c0a444316cf5c1f2f9d7227aedba7a192f389fe3e7c0dfbbd9
+PKG_HASH:=0148d403137124552c5d0f10f8cdab2cbb8dfc7c6ce75e018faf667be34f2ef9
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=COPYING
PKG_NAME:=powertop
PKG_VERSION:=2.10
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://01.org/sites/default/files/downloads/
and power management.
endef
-TARGET_CFLAGS += $(FPIC)
-ifeq ($(CONFIG_USE_UCLIBC),y)
-TARGET_CFLAGS += -fno-stack-protector
-endif
-TARGET_LDFLAGS += $(if $(INTL_FULL),-lintl)
-
-CONFIGURE_ARGS += --without-pic
+TARGET_LDFLAGS += \
+ $(if $(INTL_FULL),-lintl) \
+ $(if $(CONFIG_USE_GLIBC),-lm) \
+ $(if $(CONFIG_USE_GLIBC),-lpthread)
define Package/powertop/install
$(INSTALL_DIR) $(1)/usr/sbin
PKG_NAME:=shadow
PKG_VERSION:=4.8.1
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/shadow-maint/shadow/releases/download/$(PKG_VERSION)
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
+PKG_BUILD_DEPENDS:=libxcrypt
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
/etc/login.defs
endef
+#hack to get libxcrypt working
+TARGET_LDFLAGS:=-L$(STAGING_DIR)/usr/lib/libxcrypt $(TARGET_LDFLAGS)
+
define Package/shadow-common/install
$(INSTALL_DIR) $(1)/etc
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/login.defs $(1)/etc/
$(SED) 's,SU_NAME,#SU_NAME,g' $(1)/etc/login.defs
-ifeq ($(CONFIG_USE_MUSL),y)
-ifeq ($(CONFIG_MUSL_DISABLE_CRYPT_SIZE_HACK),y)
$(SED) 's,#ENCRYPT_METHOD DES,ENCRYPT_METHOD BCRYPT,g' $(1)/etc/login.defs
-else
- $(SED) 's,#ENCRYPT_METHOD DES,ENCRYPT_METHOD MD5,g' $(1)/etc/login.defs
-endif # CONFIG_MUSL_DISABLE_CRYPT_SIZE_HACK
-else
- $(SED) 's,#ENCRYPT_METHOD DES,ENCRYPT_METHOD SHA512,g' $(1)/etc/login.defs
-endif # CONFIG_USE_MUSL
endef
define Package/shadow-utils/install
include $(TOPDIR)/rules.mk
PKG_NAME:=usbmuxd
-PKG_SOURCE_DATE:=2020-01-20
-PKG_SOURCE_VERSION:=8a69f1a78a58476f77b66916091d2405d0cd815f
-PKG_RELEASE:=2
+PKG_VERSION:=1.1.1
+PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL=https://github.com/libimobiledevice/usbmuxd
-PKG_MIRROR_HASH:=cf6046fccd1a03d7970618b7ad958ef1437f717cc81af706ddf62c09a1746743
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://www.libimobiledevice.org/downloads
+PKG_HASH:=c0ec9700172bf635ccb5bed98daae607d2925c2bc3597f25706ecd9dfbfd2d9e
PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING.GPLv2
PKG_CPE_ID:=cpe:/a:libimobiledevice:usbmuxd
-PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=which
+PKG_VERSION:=2.21
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=@GNU/which
+PKG_HASH:=f4a245b94124b377d8b49646bf421f9155d36aa7614b6ebf83705d3ffc76eaad
+
+PKG_MAINTAINER:=Huangbin Zhan <zhanhb88@gmail.com>
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=COPYING
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/which
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=which utility - full version
+ URL:=https://carlowood.github.io/which/
+ ALTERNATIVES:=300:/usr/bin/which:/usr/libexec/which-gnu
+endef
+
+define Package/which/description
+ The which command shows the full pathname of a specified program, if the specified program is in your PATH.
+endef
+
+define Package/which/install
+ $(INSTALL_DIR) $(1)/usr/libexec
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/which $(1)/usr/libexec/which-gnu
+endef
+
+$(eval $(call BuildPackage,which))