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
PKG_NAME:=ipmitool
PKG_VERSION:=1.8.18
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
PKG_HASH:=0c1ba3b1555edefb7c32ae8cd6a3e04322056bc087918f07189eeedfc8b81e01
PKG_LICENSE:=BSD-3-clause
PKG_LICENSE_FILES:=COPYING
+PKG_CPE_ID:=cpe:/a:ipmitool_project:ipmitool
include $(INCLUDE_DIR)/package.mk
--- /dev/null
+From 960dbb956d9f9cb05b719087faed53c88dc80956 Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 16:33:59 +0000
+Subject: [PATCH 06/11] fru: Fix buffer overflow vulnerabilities
+
+Partial fix for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+The `read_fru_area_section` function only performs size validation of
+requested read size, and falsely assumes that the IPMI message will not
+respond with more than the requested amount of data; it uses the
+unvalidated response size to copy into `frubuf`. If the response is
+larger than the request, this can result in overflowing the buffer.
+
+The same issue affects the `read_fru_area` function.
+---
+ lib/ipmi_fru.c | 33 +++++++++++++++++++++++++++++++--
+ 1 file changed, 31 insertions(+), 2 deletions(-)
+
+diff --git a/lib/ipmi_fru.c b/lib/ipmi_fru.c
+index cf00effc82a2..af99aa99444c 100644
+--- a/lib/ipmi_fru.c
++++ b/lib/ipmi_fru.c
+@@ -615,7 +615,10 @@ int
+ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ uint32_t offset, uint32_t length, uint8_t *frubuf)
+ {
+- uint32_t off = offset, tmp, finish;
++ uint32_t off = offset;
++ uint32_t tmp;
++ uint32_t finish;
++ uint32_t size_left_in_buffer;
+ struct ipmi_rs * rsp;
+ struct ipmi_rq req;
+ uint8_t msg_data[4];
+@@ -628,10 +631,12 @@ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+
+ finish = offset + length;
+ if (finish > fru->size) {
++ memset(frubuf + fru->size, 0, length - fru->size);
+ finish = fru->size;
+ lprintf(LOG_NOTICE, "Read FRU Area length %d too large, "
+ "Adjusting to %d",
+ offset + length, finish - offset);
++ length = finish - offset;
+ }
+
+ memset(&req, 0, sizeof(req));
+@@ -667,6 +672,7 @@ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ }
+ }
+
++ size_left_in_buffer = length;
+ do {
+ tmp = fru->access ? off >> 1 : off;
+ msg_data[0] = id;
+@@ -707,9 +713,18 @@ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ }
+
+ tmp = fru->access ? rsp->data[0] << 1 : rsp->data[0];
++ if(rsp->data_len < 1
++ || tmp > rsp->data_len - 1
++ || tmp > size_left_in_buffer)
++ {
++ printf(" Not enough buffer size");
++ return -1;
++ }
++
+ memcpy(frubuf, rsp->data + 1, tmp);
+ off += tmp;
+ frubuf += tmp;
++ size_left_in_buffer -= tmp;
+ /* sometimes the size returned in the Info command
+ * is too large. return 0 so higher level function
+ * still attempts to parse what was returned */
+@@ -742,7 +757,9 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ uint32_t offset, uint32_t length, uint8_t *frubuf)
+ {
+ static uint32_t fru_data_rqst_size = 20;
+- uint32_t off = offset, tmp, finish;
++ uint32_t off = offset;
++ uint32_t tmp, finish;
++ uint32_t size_left_in_buffer;
+ struct ipmi_rs * rsp;
+ struct ipmi_rq req;
+ uint8_t msg_data[4];
+@@ -755,10 +772,12 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+
+ finish = offset + length;
+ if (finish > fru->size) {
++ memset(frubuf + fru->size, 0, length - fru->size);
+ finish = fru->size;
+ lprintf(LOG_NOTICE, "Read FRU Area length %d too large, "
+ "Adjusting to %d",
+ offset + length, finish - offset);
++ length = finish - offset;
+ }
+
+ memset(&req, 0, sizeof(req));
+@@ -773,6 +792,8 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ if (fru->access && fru_data_rqst_size > 16)
+ #endif
+ fru_data_rqst_size = 16;
++
++ size_left_in_buffer = length;
+ do {
+ tmp = fru->access ? off >> 1 : off;
+ msg_data[0] = id;
+@@ -804,8 +825,16 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ }
+
+ tmp = fru->access ? rsp->data[0] << 1 : rsp->data[0];
++ if(rsp->data_len < 1
++ || tmp > rsp->data_len - 1
++ || tmp > size_left_in_buffer)
++ {
++ printf(" Not enough buffer size");
++ return -1;
++ }
+ memcpy((frubuf + off)-offset, rsp->data + 1, tmp);
+ off += tmp;
++ size_left_in_buffer -= tmp;
+
+ /* sometimes the size returned in the Info command
+ * is too large. return 0 so higher level function
+--
+2.27.0
+
--- /dev/null
+From 910e5782b7d9f222d4e34d3505d0d636ff757103 Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 16:44:18 +0000
+Subject: [PATCH 07/11] fru: Fix buffer overflow in ipmi_spd_print_fru
+
+Partial fix for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+The `ipmi_spd_print_fru` function has a similar issue as the one fixed
+by the previous commit in `read_fru_area_section`. An initial request is
+made to get the `fru.size`, which is used as the size for the allocation
+of `spd_data`. Inside a loop, further requests are performed to get the
+copy sizes which are not checked before being used as the size for a
+copy into the buffer.
+---
+ lib/dimm_spd.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/lib/dimm_spd.c b/lib/dimm_spd.c
+index 41e30dbb4bda..68f3b4fa1eff 100644
+--- a/lib/dimm_spd.c
++++ b/lib/dimm_spd.c
+@@ -1621,7 +1621,7 @@ ipmi_spd_print_fru(struct ipmi_intf * intf, uint8_t id)
+ struct ipmi_rq req;
+ struct fru_info fru;
+ uint8_t *spd_data, msg_data[4];
+- int len, offset;
++ uint32_t len, offset;
+
+ msg_data[0] = id;
+
+@@ -1697,6 +1697,13 @@ ipmi_spd_print_fru(struct ipmi_intf * intf, uint8_t id)
+ }
+
+ len = rsp->data[0];
++ if(rsp->data_len < 1
++ || len > rsp->data_len - 1
++ || len > fru.size - offset)
++ {
++ printf(" Not enough buffer size");
++ return -1;
++ }
+ memcpy(&spd_data[offset], rsp->data + 1, len);
+ offset += len;
+ } while (offset < fru.size);
+--
+2.27.0
+
--- /dev/null
+From 4f7778ed232a92bde388f38917b94f458a82c78e Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 16:51:49 +0000
+Subject: [PATCH 08/11] session: Fix buffer overflow in ipmi_get_session_info
+
+Partial fix for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+The `ipmi_get_session_info` function does not properly check the
+response `data_len`, which is used as a copy size, allowing stack buffer
+overflow.
+---
+ lib/ipmi_session.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/lib/ipmi_session.c b/lib/ipmi_session.c
+index 141f0f4ec8dd..b9af1fd75d40 100644
+--- a/lib/ipmi_session.c
++++ b/lib/ipmi_session.c
+@@ -309,8 +309,10 @@ ipmi_get_session_info(struct ipmi_intf * intf,
+ }
+ else
+ {
+- memcpy(&session_info, rsp->data, rsp->data_len);
+- print_session_info(&session_info, rsp->data_len);
++ memcpy(&session_info, rsp->data,
++ __min(rsp->data_len, sizeof(session_info)));
++ print_session_info(&session_info,
++ __min(rsp->data_len, sizeof(session_info)));
+ }
+ break;
+
+@@ -341,8 +343,10 @@ ipmi_get_session_info(struct ipmi_intf * intf,
+ break;
+ }
+
+- memcpy(&session_info, rsp->data, rsp->data_len);
+- print_session_info(&session_info, rsp->data_len);
++ memcpy(&session_info, rsp->data,
++ __min(rsp->data_len, sizeof(session_info)));
++ print_session_info(&session_info,
++ __min(rsp->data_len, sizeof(session_info)));
+
+ } while (i <= session_info.session_slot_count);
+ break;
+--
+2.27.0
+
--- /dev/null
+From 743dd4faa302f22950e4438cf684e1e398eb47eb Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 16:56:38 +0000
+Subject: [PATCH 09/11] channel: Fix buffer overflow
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Partial fix for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+The `ipmi_get_channel_cipher_suites` function does not properly check
+the final response’s `data_len`, which can lead to stack buffer overflow
+on the final copy.
+---
+ lib/ipmi_channel.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/lib/ipmi_channel.c b/lib/ipmi_channel.c
+index fab2e5483d12..8cd7c59a4273 100644
+--- a/lib/ipmi_channel.c
++++ b/lib/ipmi_channel.c
+@@ -413,7 +413,10 @@ ipmi_get_channel_cipher_suites(struct ipmi_intf *intf, const char *payload_type,
+ lprintf(LOG_ERR, "Unable to Get Channel Cipher Suites");
+ return -1;
+ }
+- if (rsp->ccode > 0) {
++ if (rsp->ccode
++ || rsp->data_len < 1
++ || rsp->data_len > sizeof(uint8_t) + 0x10)
++ {
+ lprintf(LOG_ERR, "Get Channel Cipher Suites failed: %s",
+ val2str(rsp->ccode, completion_code_vals));
+ return -1;
+--
+2.27.0
+
--- /dev/null
+From e048e9c65a52f0879d482531e70735c1d314d43a Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 17:06:39 +0000
+Subject: [PATCH 10/11] lanp: Fix buffer overflows in get_lan_param_select
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Partial fix for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+The `get_lan_param_select` function is missing a validation check on the
+response’s `data_len`, which it then returns to caller functions, where
+stack buffer overflow can occur.
+---
+ lib/ipmi_lanp.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/lib/ipmi_lanp.c b/lib/ipmi_lanp.c
+index 65d881bc5890..022c7f1605ed 100644
+--- a/lib/ipmi_lanp.c
++++ b/lib/ipmi_lanp.c
+@@ -1809,7 +1809,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+ /* set new ipaddr */
+ memcpy(data+3, temp, 4);
+ printf("Setting LAN Alert %d IP Address to %d.%d.%d.%d\n", alert,
+@@ -1824,7 +1824,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+ /* set new macaddr */
+ memcpy(data+7, temp, 6);
+ printf("Setting LAN Alert %d MAC Address to "
+@@ -1838,7 +1838,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+
+ if (strncasecmp(argv[1], "def", 3) == 0 ||
+ strncasecmp(argv[1], "default", 7) == 0) {
+@@ -1864,7 +1864,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+
+ if (strncasecmp(argv[1], "on", 2) == 0 ||
+ strncasecmp(argv[1], "yes", 3) == 0) {
+@@ -1889,7 +1889,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+
+ if (strncasecmp(argv[1], "pet", 3) == 0) {
+ printf("Setting LAN Alert %d destination to PET Trap\n", alert);
+@@ -1917,7 +1917,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+
+ if (str2uchar(argv[1], &data[2]) != 0) {
+ lprintf(LOG_ERR, "Invalid time: %s", argv[1]);
+@@ -1933,7 +1933,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+
+ if (str2uchar(argv[1], &data[3]) != 0) {
+ lprintf(LOG_ERR, "Invalid retry: %s", argv[1]);
+--
+2.27.0
+
--- /dev/null
+From 98b47424cf548f58c4d295fa8235210406ea85ca Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 17:13:45 +0000
+Subject: [PATCH 11/11] fru, sdr: Fix id_string buffer overflows
+
+Final part of the fixes for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+9 variants of stack buffer overflow when parsing `id_string` field of
+SDR records returned from `CMD_GET_SDR` command.
+
+SDR record structs have an `id_code` field, and an `id_string` `char`
+array.
+
+The length of `id_string` is calculated as `(id_code & 0x1f) + 1`,
+which can be larger than expected 16 characters (if `id_code = 0xff`,
+then length will be `(0xff & 0x1f) + 1 = 32`).
+
+In numerous places, this can cause stack buffer overflow when copying
+into fixed buffer of size `17` bytes from this calculated length.
+---
+ lib/ipmi_fru.c | 2 +-
+ lib/ipmi_sdr.c | 40 ++++++++++++++++++++++++----------------
+ 2 files changed, 25 insertions(+), 17 deletions(-)
+
+diff --git a/lib/ipmi_fru.c b/lib/ipmi_fru.c
+index af99aa99444c..98bc9840955a 100644
+--- a/lib/ipmi_fru.c
++++ b/lib/ipmi_fru.c
+@@ -3062,7 +3062,7 @@ ipmi_fru_print(struct ipmi_intf * intf, struct sdr_record_fru_locator * fru)
+ return 0;
+
+ memset(desc, 0, sizeof(desc));
+- memcpy(desc, fru->id_string, fru->id_code & 0x01f);
++ memcpy(desc, fru->id_string, __min(fru->id_code & 0x01f, sizeof(desc)));
+ desc[fru->id_code & 0x01f] = 0;
+ printf("FRU Device Description : %s (ID %d)\n", desc, fru->device_id);
+
+diff --git a/lib/ipmi_sdr.c b/lib/ipmi_sdr.c
+index 2a9cbe3087af..62aac08a9002 100644
+--- a/lib/ipmi_sdr.c
++++ b/lib/ipmi_sdr.c
+@@ -2084,7 +2084,7 @@ ipmi_sdr_print_sensor_eventonly(struct ipmi_intf *intf,
+ return -1;
+
+ memset(desc, 0, sizeof (desc));
+- snprintf(desc, (sensor->id_code & 0x1f) + 1, "%s", sensor->id_string);
++ snprintf(desc, sizeof(desc), "%.*s", (sensor->id_code & 0x1f) + 1, sensor->id_string);
+
+ if (verbose) {
+ printf("Sensor ID : %s (0x%x)\n",
+@@ -2135,7 +2135,7 @@ ipmi_sdr_print_sensor_mc_locator(struct ipmi_intf *intf,
+ return -1;
+
+ memset(desc, 0, sizeof (desc));
+- snprintf(desc, (mc->id_code & 0x1f) + 1, "%s", mc->id_string);
++ snprintf(desc, sizeof(desc), "%.*s", (mc->id_code & 0x1f) + 1, mc->id_string);
+
+ if (verbose == 0) {
+ if (csv_output)
+@@ -2228,7 +2228,7 @@ ipmi_sdr_print_sensor_generic_locator(struct ipmi_intf *intf,
+ char desc[17];
+
+ memset(desc, 0, sizeof (desc));
+- snprintf(desc, (dev->id_code & 0x1f) + 1, "%s", dev->id_string);
++ snprintf(desc, sizeof(desc), "%.*s", (dev->id_code & 0x1f) + 1, dev->id_string);
+
+ if (!verbose) {
+ if (csv_output)
+@@ -2285,7 +2285,7 @@ ipmi_sdr_print_sensor_fru_locator(struct ipmi_intf *intf,
+ char desc[17];
+
+ memset(desc, 0, sizeof (desc));
+- snprintf(desc, (fru->id_code & 0x1f) + 1, "%s", fru->id_string);
++ snprintf(desc, sizeof(desc), "%.*s", (fru->id_code & 0x1f) + 1, fru->id_string);
+
+ if (!verbose) {
+ if (csv_output)
+@@ -2489,35 +2489,43 @@ ipmi_sdr_print_name_from_rawentry(struct ipmi_intf *intf, uint16_t id,
+
+ int rc =0;
+ char desc[17];
++ const char *id_string;
++ uint8_t id_code;
+ memset(desc, ' ', sizeof (desc));
+
+ switch ( type) {
+ case SDR_RECORD_TYPE_FULL_SENSOR:
+ record.full = (struct sdr_record_full_sensor *) raw;
+- snprintf(desc, (record.full->id_code & 0x1f) +1, "%s",
+- (const char *)record.full->id_string);
++ id_code = record.full->id_code;
++ id_string = record.full->id_string;
+ break;
++
+ case SDR_RECORD_TYPE_COMPACT_SENSOR:
+ record.compact = (struct sdr_record_compact_sensor *) raw ;
+- snprintf(desc, (record.compact->id_code & 0x1f) +1, "%s",
+- (const char *)record.compact->id_string);
++ id_code = record.compact->id_code;
++ id_string = record.compact->id_string;
+ break;
++
+ case SDR_RECORD_TYPE_EVENTONLY_SENSOR:
+ record.eventonly = (struct sdr_record_eventonly_sensor *) raw ;
+- snprintf(desc, (record.eventonly->id_code & 0x1f) +1, "%s",
+- (const char *)record.eventonly->id_string);
+- break;
++ id_code = record.eventonly->id_code;
++ id_string = record.eventonly->id_string;
++ break;
++
+ case SDR_RECORD_TYPE_MC_DEVICE_LOCATOR:
+ record.mcloc = (struct sdr_record_mc_locator *) raw ;
+- snprintf(desc, (record.mcloc->id_code & 0x1f) +1, "%s",
+- (const char *)record.mcloc->id_string);
++ id_code = record.mcloc->id_code;
++ id_string = record.mcloc->id_string;
+ break;
++
+ default:
+ rc = -1;
+- break;
+- }
++ }
++ if (!rc) {
++ snprintf(desc, sizeof(desc), "%.*s", (id_code & 0x1f) + 1, id_string);
++ }
+
+- lprintf(LOG_INFO, "ID: 0x%04x , NAME: %-16s", id, desc);
++ lprintf(LOG_INFO, "ID: 0x%04x , NAME: %-16s", id, desc);
+ return rc;
+ }
+
+--
+2.27.0
+
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)
include $(TOPDIR)/rules.mk
PKG_NAME:=automake
-PKG_VERSION:=1.15.1
-PKG_RELEASE:=2
+PKG_VERSION:=1.16.2
+PKG_RELEASE:=1
PKG_SOURCE_URL:=@GNU/automake
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=af6ba39142220687c500f79b4aa2f181d9b24e4f8d8ec497cea4ba26c64bedaf
+PKG_HASH:=ccc459de3d710e066ab9e12d2f119bd164a08c9341ca24ba22c9adaa179eedd0
+
PKG_MAINTAINER:=Heinrich Schuchardt <xypron.glpk@gmx.de>
PKG_LICENSE:=GPL-3.0-or-later
PKG_CPE_ID:=cpe:/a:gnu:automake
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=make
-PKG_VERSION:=4.2.1
-PKG_RELEASE:=4
+PKG_VERSION:=4.3
+PKG_RELEASE:=1
PKG_SOURCE_URL:=@GNU/make
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=d6e262bf3601b42d2b1e4ef8310029e1dcf20083c5446b4b7aa67081fdffc589
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19
+
PKG_MAINTAINER:=Heinrich Schuchardt <xypron.glpk@gmx.de>
PKG_LICENSE:=GPL-3.0-or-later
PKG_CPE_ID:=cpe:/a:gnu:make
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
# provide gnumake.h at build time for other packages
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_BUILD_DIR)/gnumake.h $(1)/usr/include/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/gnumake.h $(1)/usr/include/
endef
$(eval $(call BuildPackage,make))
include $(TOPDIR)/rules.mk
PKG_NAME:=pkgconf
-PKG_VERSION:=1.6.3
+PKG_VERSION:=1.7.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://distfiles.dereferenced.org/pkgconf
-PKG_HASH:=61f0b31b0d5ea0e862b454a80c170f57bad47879c0c42bd8de89200ff62ea210
+PKG_HASH:=b846aea51cf696c3392a0ae58bef93e2e72f8e7073ca6ad1ed8b01c85871f9c0
PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
+PKG_BUILD_DEPENDS:=meson/host
include $(INCLUDE_DIR)/package.mk
+include ../../devel/meson/meson.mk
define Package/libpkgconf
SECTION:=libs
maintaining compatibility.
endef
+MESON_ARGS += \
+ -Dtests=false
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include/libpkgconf
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/libpkgconf/*.h $(1)/usr/include/libpkgconf/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpkgconf.so* $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/share/aclocal/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/aclocal/pkg.m4 \
+ $(1)/usr/share/aclocal/
+endef
+
define Package/libpkgconf/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpkgconf.so* $(1)/usr/lib/
include $(TOPDIR)/rules.mk
PKG_NAME:=ksmbd
-PKG_VERSION:=3.1.6
+PKG_VERSION:=3.2.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://github.com/cifsd-team/cifsd/archive/$(PKG_VERSION)/
-PKG_HASH:=09c1eb39d9dcc9baf6bc9c5a2b91bcea377352bfc507ebdd10a370fffa7c31b4
+PKG_SOURCE_URL:=https://codeload.github.com/cifsd-team/cifsd/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=16ad304c09d5f04ddbe99d21ca9df8a9a6d8e35b21ff0e205f212f8c545b979b
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
---- a/glob.h 2019-12-08
-+++ b/glob.h 2019-12-08
+--- a/glob.h
++++ b/glob.h
@@ -7,6 +7,8 @@
#ifndef __KSMBD_GLOB_H
#define __KSMBD_GLOB_H
+
#include <linux/ctype.h>
#include <linux/version.h>
+
#
-# Copyright (C) 2009-2015 OpenWrt.org
+# Copyright (C) 2009-2020 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=erlang
-PKG_VERSION:=21.0
-PKG_RELEASE:=3
+PKG_VERSION:=23.0
+PKG_RELEASE:=1
PKG_SOURCE:=otp_src_$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= http://www.erlang.org/download/
-PKG_HASH:=c7d247c0cad2d2e718eaca2e2dff051136a1347a92097abf19ebf65ea2870131
+PKG_HASH:=42dcf3c721f4de59fe74ae7b65950c2174c46dc8d1dd4e27c0594d86f606a635
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE.txt
+++ /dev/null
---- a/lib/crypto/c_src/crypto.c
-+++ b/lib/crypto/c_src/crypto.c
-@@ -41,6 +41,7 @@
- #include <openssl/des.h>
- #endif /* #ifndef OPENSSL_NO_DES */
- /* #include <openssl/idea.h> This is not supported on the openssl OTP requires */
-+#include <openssl/dh.h>
- #include <openssl/dsa.h>
- #include <openssl/rsa.h>
- #include <openssl/aes.h>
-@@ -177,7 +178,7 @@
- #endif
-
- #if OPENSSL_VERSION_NUMBER >= PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
--# ifndef HAS_LIBRESSL
-+# if !defined(OPENSSL_NO_CHACHA) || !defined(OPENSSL_NO_POLY1305)
- # define HAVE_CHACHA20_POLY1305
- # endif
- #endif
-@@ -197,8 +198,10 @@
- /* If OPENSSL_NO_EC is set, there will be an error in ec.h included from engine.h
- So if EC is disabled, you can't use Engine either....
- */
-+#if !defined(OPENSSL_NO_ENGINE)
- # define HAS_ENGINE_SUPPORT
- #endif
-+#endif
-
-
- #if defined(HAS_ENGINE_SUPPORT)
-@@ -910,7 +913,11 @@ static void engine_ctx_dtor(ErlNifEnv* env, struct engine_ctx* ctx) {
-
- static int verify_lib_version(void)
- {
-+#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
- const unsigned long libv = SSLeay();
-+#else
-+ const unsigned long libv = OpenSSL_version_num();
-+#endif
- const unsigned long hdrv = OPENSSL_VERSION_NUMBER;
-
- # define MAJOR_VER(V) ((unsigned long)(V) >> (7*4))
-@@ -1166,12 +1173,14 @@ static int initialize(ErlNifEnv* env, ERL_NIF_TERM load_info)
- funcp = &get_crypto_callbacks;
- #endif
-
-+#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
- #ifdef OPENSSL_THREADS
- enif_system_info(&sys_info, sizeof(sys_info));
- if (sys_info.scheduler_threads > 1) {
- nlocks = CRYPTO_num_locks();
- }
- /* else no need for locks */
-+#endif
- #endif
-
- ccb = (*funcp)(nlocks);
-@@ -1183,15 +1192,21 @@ static int initialize(ErlNifEnv* env, ERL_NIF_TERM load_info)
-
- CRYPTO_set_mem_functions(ccb->crypto_alloc, ccb->crypto_realloc, ccb->crypto_free);
-
-+#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
- #ifdef OPENSSL_THREADS
- if (nlocks > 0) {
- CRYPTO_set_locking_callback(ccb->locking_function);
-+#if OPENSSL_VERSION_NUMBER < 0x10000000
- CRYPTO_set_id_callback(ccb->id_function);
-+#else
-+ CRYPTO_THREADID_set_callback(ccb->id_function);
-+#endif
- CRYPTO_set_dynlock_create_callback(ccb->dyn_create_function);
- CRYPTO_set_dynlock_lock_callback(ccb->dyn_lock_function);
- CRYPTO_set_dynlock_destroy_callback(ccb->dyn_destroy_function);
- }
- #endif /* OPENSSL_THREADS */
-+#endif
-
- init_digest_types(env);
- init_cipher_types(env);
-@@ -1391,7 +1406,11 @@ static ERL_NIF_TERM info_lib(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]
-
- static const char libname[] = "OpenSSL";
- unsigned name_sz = strlen(libname);
-+#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
- const char* ver = SSLeay_version(SSLEAY_VERSION);
-+#else
-+ const char* ver = OpenSSL_version(OPENSSL_VERSION);
-+#endif
- unsigned ver_sz = strlen(ver);
- ERL_NIF_TERM name_term, ver_term;
- int ver_num = OPENSSL_VERSION_NUMBER;
---- a/lib/crypto/c_src/crypto_callback.c
-+++ b/lib/crypto/c_src/crypto_callback.c
-@@ -83,7 +83,7 @@ static void crypto_free(void* ptr CCB_FILE_LINE_ARGS)
- enif_free(ptr);
- }
-
--
-+#if OPENSSL_VERSION_NUMBER < 0x10100000
- #ifdef OPENSSL_THREADS /* vvvvvvvvvvvvvvv OPENSSL_THREADS vvvvvvvvvvvvvvvv */
-
- static ErlNifRWLock** lock_vec = NULL; /* Static locks used by openssl */
-@@ -115,10 +115,17 @@ static void locking_function(int mode, int n, const char *file, int line)
- locking(mode, lock_vec[n]);
- }
-
-+#if OPENSSL_VERSION_NUMBER < 0x10000000
- static unsigned long id_function(void)
- {
- return (unsigned long) enif_thread_self();
- }
-+#else
-+static void id_function(CRYPTO_THREADID *id)
-+{
-+ CRYPTO_THREADID_set_numeric(id, (unsigned long) enif_thread_self());
-+}
-+#endif
-
- /* Dynamic locking, not used by current openssl version (0.9.8)
- */
-@@ -136,6 +143,7 @@ static void dyn_destroy_function(struct CRYPTO_dynlock_value *ptr, const char *f
- }
-
- #endif /* ^^^^^^^^^^^^^^^^^^^^^^ OPENSSL_THREADS ^^^^^^^^^^^^^^^^^^^^^^ */
-+#endif
-
- DLLEXPORT struct crypto_callbacks* get_crypto_callbacks(int nlocks)
- {
-@@ -146,7 +154,8 @@ DLLEXPORT struct crypto_callbacks* get_crypto_callbacks(int nlocks)
- &crypto_alloc,
- &crypto_realloc,
- &crypto_free,
--
-+
-+#if OPENSSL_VERSION_NUMBER < 0x10100000
- #ifdef OPENSSL_THREADS
- &locking_function,
- &id_function,
-@@ -154,9 +163,11 @@ DLLEXPORT struct crypto_callbacks* get_crypto_callbacks(int nlocks)
- &dyn_lock_function,
- &dyn_destroy_function
- #endif /* OPENSSL_THREADS */
-+#endif
- };
-
- if (!is_initialized) {
-+#if OPENSSL_VERSION_NUMBER < 0x10100000
- #ifdef OPENSSL_THREADS
- if (nlocks > 0) {
- int i;
-@@ -169,6 +180,7 @@ DLLEXPORT struct crypto_callbacks* get_crypto_callbacks(int nlocks)
- if (lock_vec[i]==NULL) return NULL;
- }
- }
-+#endif
- #endif
- is_initialized = 1;
- }
---- a/lib/crypto/c_src/crypto_callback.h
-+++ b/lib/crypto/c_src/crypto_callback.h
-@@ -34,9 +34,15 @@ struct crypto_callbacks
- void (*crypto_free)(void* ptr CCB_FILE_LINE_ARGS);
-
- /* openssl callbacks */
-+#if OPENSSL_VERSION_NUMBER < 0x10100000
- #ifdef OPENSSL_THREADS
- void (*locking_function)(int mode, int n, const char *file, int line);
-+ #if OPENSSL_VERSION_NUMBER < 0x10000000
- unsigned long (*id_function)(void);
-+ #else
-+ void (*id_function)(CRYPTO_THREADID *id);
-+ #endif
-+#endif
- struct CRYPTO_dynlock_value* (*dyn_create_function)(const char *file,
- int line);
- void (*dyn_lock_function)(int mode, struct CRYPTO_dynlock_value* ptr,
---- a/lib/crypto/c_src/otp_test_engine.c
-+++ b/lib/crypto/c_src/otp_test_engine.c
-@@ -42,8 +42,10 @@
- && !defined(OPENSSL_NO_EC) \
- && !defined(OPENSSL_NO_ECDH) \
- && !defined(OPENSSL_NO_ECDSA)
-+#if !defined(OPENSSL_NO_ENGINE)
- # define HAVE_EC
- #endif
-+#endif
-
- #if defined(HAVE_EC)
- /* If OPENSSL_NO_EC is set, there will be an error in ec.h included from engine.h
include $(TOPDIR)/rules.mk
GO_VERSION_MAJOR_MINOR:=1.14
-GO_VERSION_PATCH:=3
+GO_VERSION_PATCH:=4
PKG_NAME:=golang
PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH))
PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz
PKG_SOURCE_URL:=$(GO_SOURCE_URLS)
-PKG_HASH:=93023778d4d1797b7bc6a53e86c3a9b150c923953225f8a48a2d5fabc971af56
+PKG_HASH:=7011af3bbc2ac108d1b82ea8abb87b2e63f78844f0259be20cde4d42c5c40584
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
PKG_LICENSE:=BSD-3-Clause
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
include $(TOPDIR)/rules.mk
PKG_NAME:=perl-cgi
-PKG_VERSION:=4.46
+PKG_VERSION:=4.48
PKG_RELEASE:=1
PKG_SOURCE_URL:=https://www.cpan.org/authors/id/L/LE/LEEJO
PKG_SOURCE:=CGI-$(PKG_VERSION).tar.gz
-PKG_HASH:=788998ddc33ca382e5d7ce72c6c0ea1d8366c93067371fe2f14239ddea2e4298
+PKG_HASH:=102cd7562983b85e8354ebcbb3be94a35f7f6706b2b49fdb790135da4d1d55d2
PKG_BUILD_DIR:=$(BUILD_DIR)/perl/CGI-$(PKG_VERSION)
PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>, \
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=perl-parse-yapp
+PKG_VERSION:=1.21
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=https://www.cpan.org/authors/id/W/WB/WBRASWELL/
+PKG_SOURCE:=Parse-Yapp-$(PKG_VERSION).tar.gz
+PKG_HASH:=3810e998308fba2e0f4f26043035032b027ce51ce5c8a52a8b8e340ca65f13e5
+
+PKG_LICENSE:=GPL-1.0-or-later Artistic-1.0-Perl
+PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
+
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/perl/Parse-Yapp-$(PKG_VERSION)
+HOST_BUILD_DEPENDS:=perl/host
+PKG_BUILD_DIR:=$(BUILD_DIR)/perl/Parse-Yapp-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+include $(TOPDIR)/feeds/packages/lang/perl/perlmod.mk
+
+define Package/perl-parse-yapp
+ SUBMENU:=Perl
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Yet Another Parser Parser For Perl
+ URL:=http://search.cpan.org/dist/Parse-Yapp/
+ DEPENDS:=perl +perlbase-essential +perlbase-test
+endef
+
+define Host/Configure
+ $(call perlmod/host/Configure,,,)
+endef
+
+define Host/Compile
+ $(call perlmod/host/Compile,,)
+endef
+
+define Host/Install
+ $(call perlmod/host/Install,$(1),)
+endef
+
+define Build/Configure
+ $(call perlmod/Configure,,)
+endef
+
+define Build/Compile
+ $(call perlmod/Compile,,)
+endef
+
+define Package/perl-parse-yapp/install
+ $(call perlmod/Install,$(1),Parse auto/Parse)
+endef
+
+
+$(eval $(call BuildPackage,perl-parse-yapp))
+$(eval $(call HostBuild))
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) \
--- /dev/null
+From 6bd6308fcea3541e505651bf8e8127a4a03d22cd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Tue, 12 Nov 2019 09:19:18 +0100
+Subject: [PATCH] Adapt Configure to GCC version 10
+
+I got a notice from Jeff Law <law@redhat.com>:
+
+ Your particular package fails its testsuite. This was ultimately
+ tracked down to a Configure problem. The perl configure script treated
+ gcc-10 as gcc-1 and turned on -fpcc-struct-return. This is an ABI
+ changing flag and caused Perl to not be able to interact properly with
+ the dbm libraries on the system leading to a segfault.
+
+His proposed patch corrected only this one instance of the version
+mismatch. Reading the Configure script revealed more issues. This
+patch fixes all of them I found.
+
+---
+ Configure | 14 +++++++-------
+ cflags.SH | 2 +-
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/Configure b/Configure
+index fad1c9f2b1..706c0b64ed 100755
+--- a/Configure
++++ b/Configure
+@@ -4701,7 +4701,7 @@ else
+ fi
+ $rm -f try try.*
+ case "$gccversion" in
+-1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
++1.*) cpp=`./loc gcc-cpp $cpp $pth` ;;
+ esac
+ case "$gccversion" in
+ '') gccosandvers='' ;;
+@@ -4741,7 +4741,7 @@ esac
+ # gcc 3.* complain about adding -Idirectories that they already know about,
+ # so we will take those off from locincpth.
+ case "$gccversion" in
+-3*)
++3.*)
+ echo "main(){}">try.c
+ for incdir in $locincpth; do
+ warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
+@@ -5467,13 +5467,13 @@ fi
+ case "$hint" in
+ default|recommended)
+ case "$gccversion" in
+- 1*) dflt="$dflt -fpcc-struct-return" ;;
++ 1.*) dflt="$dflt -fpcc-struct-return" ;;
+ esac
+ case "$optimize:$DEBUGGING" in
+ *-g*:old) dflt="$dflt -DDEBUGGING";;
+ esac
+ case "$gccversion" in
+- 2*) if $test -d /etc/conf/kconfig.d &&
++ 2.*) if $test -d /etc/conf/kconfig.d &&
+ $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
+ then
+ # Interactive Systems (ISC) POSIX mode.
+@@ -5482,7 +5482,7 @@ default|recommended)
+ ;;
+ esac
+ case "$gccversion" in
+- 1*) ;;
++ 1.*) ;;
+ 2.[0-8]*) ;;
+ ?*) set strict-aliasing -fno-strict-aliasing
+ eval $checkccflag
+@@ -5600,7 +5600,7 @@ case "$cppflags" in
+ ;;
+ esac
+ case "$gccversion" in
+-1*) cppflags="$cppflags -D__GNUC__"
++1.*) cppflags="$cppflags -D__GNUC__"
+ esac
+ case "$mips_type" in
+ '');;
+@@ -23103,7 +23103,7 @@ fi
+
+ : add -D_FORTIFY_SOURCE if feasible and not already there
+ case "$gccversion" in
+-[4567].*) case "$optimize$ccflags" in
++[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in
+ *-O*) case "$ccflags$cppsymbols" in
+ *_FORTIFY_SOURCE=*) # Don't add it again.
+ echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4
+diff --git a/cflags.SH b/cflags.SH
+index e60742fed1..f1bcd6c38e 100755
+--- a/cflags.SH
++++ b/cflags.SH
+@@ -156,7 +156,7 @@ esac
+
+ case "$gccversion" in
+ '') ;;
+-[12]*) ;; # gcc versions 1 (gasp!) and 2 are not good for this.
++[12].*) ;; # gcc versions 1 (gasp!) and 2 are not good for this.
+ Intel*) ;; # # Is that you, Intel C++?
+ #
+ # NOTE 1: the -std=c89 without -pedantic is a bit pointless.
+--
+2.17.1
+
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:=Jinja2
-PKG_VERSION:=2.10.3
-PKG_RELEASE:=2
+PKG_VERSION:=2.11.2
+PKG_RELEASE:=1
PYPI_NAME:=$(PKG_NAME)
-PKG_HASH:=9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de
+PKG_HASH:=89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
CATEGORY:=Languages
SUBMENU:=Python
TITLE:=Jinja2
- URL:=http://jinja.pocoo.org/
+ URL:=https://palletsprojects.com/p/jinja/
DEPENDS:=+python3-light +python3-markupsafe
endef
This section describes specifics for the Python packages that are present in this repo, and how things are structured.
-In terms of license, contributing guide, etc, all of that information is described in the top [README.md](README.md) file, and it applies here as well. This document attempts to cover only technical aspects of Python packages, and maybe some explanations about how things are (and why they are as they are).
+In terms of license, contributing guide, etc, all of that information is described in the top [README.md](../../README.md) file, and it applies here as well. This document attempts to cover only technical aspects of Python packages, and maybe some explanations about how things are (and why they are as they are).
## Introduction
-This sub-tree came to exist after a number of contributions (Python packages) were made to this repo, and the [lang](lang) subtree grew to a point where a decision was made to move all Python packages under [lang/python](lang/python).
+This sub-tree came to exist after a number of contributions (Python packages) were made to this repo, and the [lang](../) subtree grew to a point where a decision was made to move all Python packages under [lang/python](./).
-It contains the Python 3 interpreter and Python packages. Most of the Python packages are downloaded from [pypi.org](https://pypi.org/). Python packages from [pypi.org](https://pypi.org/) are typically preferred when adding new packages.
+It contains the Python 3 interpreter and Python packages. Most of the Python packages are downloaded from [pypi.org](https://pypi.org/). Python packages from pypi.org are typically preferred when adding new packages.
If more packages (than the ones packaged here) are needed, they can be downloaded via [pip](https://pip.pypa.io). Note that the versions of `pip` & `setuptools` [available in this repo] are the ones that are packaged inside the Python package (yes, Python comes packaged with `pip` & `setuptools`).
## General folder structure
The basis of all these packages is:
-* [lang/python/python3](lang/python/python3) - The Python 3.x.y interpreter
+* [lang/python/python3](./python3) - The Python 3.x.y interpreter
-This is a normal OpenWrt package, which will build the Python interpreter. This also provides `python3-pip` & `python3-setuptools`. Each Python package is actually split into multiple sub-packages [e.g. python3-email, python3-sqlite3, etc]. This can be viewed inside [lang/python/python3/files](lang/python/python3/files).
+This is a normal OpenWrt package, which will build the Python interpreter. This also provides `python3-pip` & `python3-setuptools`. Each Python package is actually split into multiple sub-packages [e.g. python3-email, python3-sqlite3, etc]. This can be viewed inside [lang/python/python3/files](./python3/files).
The reason for this splitting, is purely to offer a way for some people to package Python in as-minimal-as-possible-and-still-runable way, and also to be somewhat maintainable when packaging. A standard Python installation can take ~20-30 MBs of disk, which can be somewhat big for some people, so there is the `python3-base` package which brings that down to ~5 MBs. This seems to be good enough (and interesting) for a number of people.
The Python interpreter is structured like this:
* `python3-base`, which is just the minimal package to startup Python and run basic commands
* `python3` is a meta-package, which installs almost everything (python3-base [plus] Python library [minus] some unit-tests & some windows-y things)
-* `python3-light` is `python3` [minus] packages that are in [lang/python/python3/files](lang/python/python3/files) ; the size of this package may be sensible (and interesting) to another group of people
+* `python3-light` is `python3` [minus] packages that are in [lang/python/python3/files](./python3/files) ; the size of this package may be sensible (and interesting) to another group of people
All other Python packages (aside from the intepreter) typically use these files:
* **python3-host.mk** - this file contains paths and build rules for running the Python interpreter on the host-side; they also provide paths to host interprete, host Python lib-dir & so on
* **python3-package.mk**
* includes **python3-host.mk**
- * contains all the default build rules for Python packages; these will be detailed below in the [Building a Python package](#Building a Python package) section
+ * contains all the default build rules for Python packages; these will be detailed below in the [Building a Python package](#building-a-python-package) section
**Note** that Python packages don't need to use these files (i.e. `python3-package.mk` & `python3-host.mk`), but they do provide some ease-of-use & reduction of duplicate code. And they do contain some learned-lessons about packaging Python packages, so it's a good idea to use them.
## Building a Python package
-Packaging for Python uses the `VARIANT` mechanism for packaging inside OpenWrt. (#### FIXME: find a link for this later if it exists)
-
### Include python3-package.mk
Add this after `include $(INCLUDE_DIR)/package.mk`
### Include pypi.mk (optional)
-If the package source code will be downloaded from [pypi.org](https://pypi.org/), including `pypi.mk` can help simplify the package Makefile.
+`pypi.mk` is an include file that makes downloading package source code from [pypi.org](https://pypi.org/) simpler.
To use `pypi.mk`, add this **before** `include $(INCLUDE_DIR)/package.mk`:
```
include ../pypi.mk
```
-`pypi.mk` has several `PYPI_*` variables that must/can be set (see below); these should be set before `pypi.mk` is included, i.e. before the `include ../pypi.mk` line.
+`pypi.mk` has several `PYPI_*` variables that can/must be set (see below); these should be set before `pypi.mk` is included, i.e. before the `include ../pypi.mk` line.
`pypi.mk` also provides default values for `PKG_SOURCE` and `PKG_SOURCE_URL`, so these variables may be omitted.
-One variable is required:
+Required variables:
* `PYPI_NAME`: Package name on pypi.org. This should match the PyPI name exactly.
PYPI_NAME:=PyYAML
```
-These variables are optional:
+Optional variables:
* `PYPI_SOURCE_NAME`: Package name component of the source tarball filename
Default: Same value as `PYPI_NAME`
PKG_SOURCE?=$(PYPI_SOURCE_NAME)-$(PKG_VERSION).$(PYPI_SOURCE_EXT)
```
-The `PYPI_SOURCE_*` variables allow this default `PKG_SOURCE` value to be customized as necessary.
-
### Add Package/<PKG_NAME> OpenWrt definitions
This part is similar to default OpenWrt packages.
TITLE:=Pythonic XML processing library
URL:=https://lxml.de
DEPENDS:=+python3-light +libxml2 +libxslt +libexslt
- VARIANT:=python3
endef
define Package/python3-lxml/description
```
Some considerations here (based on the example above):
-* `VARIANT=python3` must be added
* typically the package is named `Package/python3-<something>` ; this convention makes things easier to follow, though it could work without naming things this way
* `TITLE` can be something a bit more verbose/neat ; typically the name is short as seen above
* `python3` is useful if many (more than three) Python standard library packages are needed.
-* Python standard library packages: As noted above, many parts of the Python standard library are packaged separate from the Python interpreter. These packages are defined by the files in [lang/python/python3/files](lang/python/python3/files).
+* Python standard library packages: As noted above, many parts of the Python standard library are packaged separate from the Python interpreter. These packages are defined by the files in [lang/python/python3/files](./python3/files).
To find out which of these separate standard library packages are necessary, after completing a draft Makefile (including the `$(eval ...)` lines described in the next section), run `make` with the `configure` target and `PY3=stdlib V=s` in the command line. For example:
### Host-side Python packages for build
-These can be installed via pip and ideally they should only be installed like this, because it's a bit simpler than running them through the OpenWrt build system. Build variants on the host-side build are more complicated (and nearly impossible to do sanely) in the current OpenWrt build system.
+These can be installed via pip and ideally they should only be installed like this, because it's a bit simpler than running them through the OpenWrt build system.
Which is why [for example] if you need python cffi on the host build, it's easier to just add it via:
```
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:=django
-PKG_VERSION:=3.0.6
+PKG_VERSION:=3.0.7
PKG_RELEASE:=1
PYPI_NAME:=Django
-PKG_HASH:=9aaa6a09678e1b8f0d98a948c56482eac3e3dd2ddbfb8de70a868135ef3b5e01
+PKG_HASH:=5052b34b34b3425233c682e0e11d658fd6efd587d11335a0203d827224ada8f2
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>, Peter Stadler <peter.stadler@student.uibk.ac.at>
PKG_LICENSE:=BSD-3-Clause
--- /dev/null
+#
+# Copyright (C) 2019 Jakub Piotr Cłapa <jpc@loee.pl>
+# Copyright (C) 2020 Alexandru Ardelean <ardeleanalex@gmail.com>
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=numpy
+PKG_VERSION:=1.18.5
+PKG_RELEASE:=1
+
+PYPI_NAME:=$(PKG_NAME)
+PKG_HASH:=34e96e9dae65c4839bd80012023aadd6ee2ccb73ce7fdf3074c62f301e63120b
+
+PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE.txt
+PKG_CPE_ID:=cpe:/a:numpy:numpy
+
+# yes, zip... sigh
+PYPI_SOURCE_EXT:=zip
+HOST_PYTHON3_PACKAGE_BUILD_DEPENDS="Cython==0.29.19"
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-numpy
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=The fundamental package for scientific computing with Python
+ URL:=https://www.numpy.org/
+ DEPENDS:=@!SOFT_FLOAT +INSTALL_GFORTRAN:libgfortran +python3
+endef
+
+define Package/python3-numpy/description
+NumPy is the fundamental package for array computing with Python.
+
+By default, this package is built without some modules.
+For some modules to be available, the INSTALL_GFORTRAN symbol needs
+to be enabled in the OpenWrt core/toolchain.
+endef
+
+$(eval $(call Py3Package,python3-numpy))
+$(eval $(call BuildPackage,python3-numpy))
+$(eval $(call BuildPackage,python3-numpy-src))
include $(TOPDIR)/rules.mk
PKG_NAME:=pillow
-PKG_VERSION:=7.1.1
-PKG_RELEASE:=2
+PKG_VERSION:=7.1.2
+PKG_RELEASE:=1
PYPI_NAME:=Pillow
-PKG_HASH:=0f89ddc77cf421b8cd34ae852309501458942bf370831b4a9b406156b599a14e
+PKG_HASH:=a0b49960110bc6ff5fead46013bcb8825d101026d466f3a4de3476defe0fb0dd
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
PKG_LICENSE:=HPND
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
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-cached-property
+PKG_VERSION:=1.5.1
+PKG_RELEASE:=2
+
+PYPI_NAME:=cached-property
+PKG_HASH:=9217a59f14a5682da7c4b8829deadbfc194ac22e9908ccf7c8820234e80a1504
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+PYTHON3_PKG_SETUP_ARGS:=
+
+define Package/python3-cached-property
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=A decorator for caching properties in classes
+ URL:=https://github.com/pydanny/cached-property
+ DEPENDS:=+python3-light
+endef
+
+define Package/python3-cached-property/description
+ A decorator for caching properties in classes.
+endef
+
+$(eval $(call Py3Package,python3-cached-property))
+$(eval $(call BuildPackage,python3-cached-property))
+$(eval $(call BuildPackage,python3-cached-property-src))
+++ /dev/null
-#
-# Copyright (C) 2009-2015, 2017-2018 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-crypto
-PKG_VERSION:=2.6.1
-PKG_RELEASE:=5
-
-PYPI_NAME:=pycrypto
-PKG_HASH:=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
-
-PKG_LICENSE:=Public Domain
-PKG_LICENSE_FILES:=COPYRIGHT
-PKG_CPE_ID:=cpe:/a:dlitz:pycrypto
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include ../pypi.mk
-include $(INCLUDE_DIR)/package.mk
-include ../python3-package.mk
-
-PYTHON3_PKG_SETUP_ARGS:=
-PYTHON3_PKG_SETUP_VARS:= \
- CONFIG_BIG_ENDIAN="$(CONFIG_BIG_ENDIAN)"
-
-define Package/python3-crypto
- SECTION:=lang-python
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=Python Cryptography Toolkit
- URL:=https://www.dlitz.net/software/pycrypto/
- DEPENDS:=+libgmp +python3
-endef
-
-define Package/python3-crypto/description
-A collection of both secure hash functions (such as MD5 and SHA),
-and various encryption algorithms (AES, DES, IDEA, RSA, ElGamal, etc.).
-endef
-
-$(eval $(call Py3Package,python3-crypto))
-$(eval $(call BuildPackage,python3-crypto))
-$(eval $(call BuildPackage,python3-crypto-src))
+++ /dev/null
---- a/setup.py
-+++ b/setup.py
-@@ -370,7 +370,7 @@ kw = {'name':"pycrypto",
- 'ext_modules': plat_ext + [
- # _fastmath (uses GNU mp library)
- Extension("Crypto.PublicKey._fastmath",
-- include_dirs=['src/','/usr/include/'],
-+ include_dirs=['src/'],
- libraries=['gmp'],
- sources=["src/_fastmath.c"]),
-
+++ /dev/null
---- a/setup.py
-+++ b/setup.py
-@@ -100,6 +100,10 @@ def PrintErr(*args, **kwd):
- w(kwd.get("end", "\n"))
-
- def endianness_macro():
-+ if os.environ["CONFIG_BIG_ENDIAN"] == "y":
-+ return ('PCT_BIG_ENDIAN', 1)
-+ else:
-+ return ('PCT_LITTLE_ENDIAN', 1)
- s = struct.pack("@I", 0x33221100)
- if s == "\x00\x11\x22\x33".encode(): # little endian
- return ('PCT_LITTLE_ENDIAN', 1)
+++ /dev/null
---- a/setup.py
-+++ b/setup.py
-@@ -357,16 +357,6 @@ kw = {'name':"pycrypto",
- "Crypto.Random",
- "Crypto.Random.Fortuna",
- "Crypto.Random.OSRNG",
-- "Crypto.SelfTest",
-- "Crypto.SelfTest.Cipher",
-- "Crypto.SelfTest.Hash",
-- "Crypto.SelfTest.Protocol",
-- "Crypto.SelfTest.PublicKey",
-- "Crypto.SelfTest.Random",
-- "Crypto.SelfTest.Random.Fortuna",
-- "Crypto.SelfTest.Random.OSRNG",
-- "Crypto.SelfTest.Util",
-- "Crypto.SelfTest.Signature",
- "Crypto.Protocol",
- "Crypto.PublicKey",
- "Crypto.Signature"],
+++ /dev/null
-From 8dbe0dc3eea5c689d4f76b37b93fe216cf1f00d4 Mon Sep 17 00:00:00 2001
-From: Legrandin <helderijs@gmail.com>
-Date: Sun, 22 Dec 2013 22:24:46 +0100
-Subject: [PATCH] Throw exception when IV is used with ECB or CTR
-
-The IV parameter is currently ignored when initializing
-a cipher in ECB or CTR mode.
-
-For CTR mode, it is confusing: it takes some time to see
-that a different parameter is needed (the counter).
-
-For ECB mode, it is outright dangerous.
-
-This patch forces an exception to be raised.
----
- lib/Crypto/SelfTest/Cipher/common.py | 31 +++++++++++++++++++++++--------
- src/block_template.c | 11 +++++++++++
- 2 files changed, 34 insertions(+), 8 deletions(-)
-
-diff --git a/lib/Crypto/SelfTest/Cipher/common.py b/lib/Crypto/SelfTest/Cipher/common.py
-index 420b6ff..a5f8a88 100644
---- a/lib/Crypto/SelfTest/Cipher/common.py
-+++ b/lib/Crypto/SelfTest/Cipher/common.py
-@@ -239,16 +239,30 @@ class RoundtripTest(unittest.TestCase):
- return """%s .decrypt() output of .encrypt() should not be garbled""" % (self.module_name,)
-
- def runTest(self):
-- for mode in (self.module.MODE_ECB, self.module.MODE_CBC, self.module.MODE_CFB, self.module.MODE_OFB, self.module.MODE_OPENPGP):
-+
-+ ## ECB mode
-+ mode = self.module.MODE_ECB
-+ encryption_cipher = self.module.new(a2b_hex(self.key), mode)
-+ ciphertext = encryption_cipher.encrypt(self.plaintext)
-+ decryption_cipher = self.module.new(a2b_hex(self.key), mode)
-+ decrypted_plaintext = decryption_cipher.decrypt(ciphertext)
-+ self.assertEqual(self.plaintext, decrypted_plaintext)
-+
-+ ## OPENPGP mode
-+ mode = self.module.MODE_OPENPGP
-+ encryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
-+ eiv_ciphertext = encryption_cipher.encrypt(self.plaintext)
-+ eiv = eiv_ciphertext[:self.module.block_size+2]
-+ ciphertext = eiv_ciphertext[self.module.block_size+2:]
-+ decryption_cipher = self.module.new(a2b_hex(self.key), mode, eiv)
-+ decrypted_plaintext = decryption_cipher.decrypt(ciphertext)
-+ self.assertEqual(self.plaintext, decrypted_plaintext)
-+
-+ ## All other non-AEAD modes (but CTR)
-+ for mode in (self.module.MODE_CBC, self.module.MODE_CFB, self.module.MODE_OFB):
- encryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
- ciphertext = encryption_cipher.encrypt(self.plaintext)
--
-- if mode != self.module.MODE_OPENPGP:
-- decryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
-- else:
-- eiv = ciphertext[:self.module.block_size+2]
-- ciphertext = ciphertext[self.module.block_size+2:]
-- decryption_cipher = self.module.new(a2b_hex(self.key), mode, eiv)
-+ decryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
- decrypted_plaintext = decryption_cipher.decrypt(ciphertext)
- self.assertEqual(self.plaintext, decrypted_plaintext)
-
-diff --git a/src/block_template.c b/src/block_template.c
-index f940e0e..d555ceb 100644
---- a/src/block_template.c
-+++ b/src/block_template.c
-@@ -170,6 +170,17 @@ ALGnew(PyObject *self, PyObject *args, PyObject *kwdict)
- "Key cannot be the null string");
- return NULL;
- }
-+ if (IVlen != 0 && mode == MODE_ECB)
-+ {
-+ PyErr_Format(PyExc_ValueError, "ECB mode does not use IV");
-+ return NULL;
-+ }
-+ if (IVlen != 0 && mode == MODE_CTR)
-+ {
-+ PyErr_Format(PyExc_ValueError,
-+ "CTR mode needs counter parameter, not IV");
-+ return NULL;
-+ }
- if (IVlen != BLOCK_SIZE && mode != MODE_ECB && mode != MODE_CTR)
- {
- PyErr_Format(PyExc_ValueError,
-From 58de28a5d32bc10e15766e5a59f41b07397cc6cb Mon Sep 17 00:00:00 2001
-From: Richard Mitchell <richard.j.mitchell@gmail.com>
-Date: Mon, 28 Apr 2014 16:58:27 +0100
-Subject: [PATCH] Fix speedtest run for ECB modes.
-
----
- pct-speedtest.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/pct-speedtest.py b/pct-speedtest.py
-index 4ce18be..c7b893a 100644
---- a/pct-speedtest.py
-+++ b/pct-speedtest.py
-@@ -121,6 +121,8 @@ class Benchmark:
- blocks = self.random_blocks(16384, 1000)
- if mode is None:
- cipher = module.new(key)
-+ elif mode==module.MODE_ECB:
-+ cipher = module.new(key, module.MODE_ECB)
- else:
- cipher = module.new(key, mode, iv)
-
+++ /dev/null
---- a/lib/Crypto/PublicKey/ElGamal.py
-+++ b/lib/Crypto/PublicKey/ElGamal.py
-@@ -153,33 +153,33 @@ def generate(bits, randfunc, progress_fu
- if number.isPrime(obj.p, randfunc=randfunc):
- break
- # Generate generator g
-- # See Algorithm 4.80 in Handbook of Applied Cryptography
-- # Note that the order of the group is n=p-1=2q, where q is prime
- if progress_func:
- progress_func('g\n')
- while 1:
-+ # Choose a square residue; it will generate a cyclic group of order q.
-+ obj.g = pow(number.getRandomRange(2, obj.p, randfunc), 2, obj.p)
-+
- # We must avoid g=2 because of Bleichenbacher's attack described
- # in "Generating ElGamal signatures without knowning the secret key",
- # 1996
-- #
-- obj.g = number.getRandomRange(3, obj.p, randfunc)
-- safe = 1
-- if pow(obj.g, 2, obj.p)==1:
-- safe=0
-- if safe and pow(obj.g, q, obj.p)==1:
-- safe=0
-+ if obj.g in (1, 2):
-+ continue
-+
- # Discard g if it divides p-1 because of the attack described
- # in Note 11.67 (iii) in HAC
-- if safe and divmod(obj.p-1, obj.g)[1]==0:
-- safe=0
-+ if (obj.p - 1) % obj.g == 0:
-+ continue
-+
- # g^{-1} must not divide p-1 because of Khadir's attack
- # described in "Conditions of the generator for forging ElGamal
- # signature", 2011
- ginv = number.inverse(obj.g, obj.p)
-- if safe and divmod(obj.p-1, ginv)[1]==0:
-- safe=0
-- if safe:
-- break
-+ if (obj.p - 1) % ginv == 0:
-+ continue
-+
-+ # Found
-+ break
-+
- # Generate private key x
- if progress_func:
- progress_func('x\n')
PKG_NAME:=python-cryptodome
PKG_VERSION:=3.9.7
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PYPI_NAME:=pycryptodome
PKG_HASH:=f1add21b6d179179b3c177c33d18a2186a09cc0d3af41ff5ed3f377360b869f2
TITLE:=A self-contained cryptographic library for Python
URL:=https://www.pycryptodome.org/
DEPENDS:=+libgmp +python3
- CONFLICTS:=python3-crypto
+ PROVIDES:=python3-crypto
endef
define Package/python3-cryptodome/description
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-distro
+PKG_VERSION:=1.5.0
+PKG_RELEASE:=3
+
+PYPI_NAME:=distro
+PKG_HASH:=0e58756ae38fbd8fc3020d54badb8eae17c5b9dcbed388b17bb55b8a5928df92
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-distro
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=Distro - an OS platform information API
+ URL:=https://github.com/nir0s/distro
+ DEPENDS:=+python3-light +python3-logging
+endef
+
+define Package/python3-distro/description
+ A much more elaborate, renewed alternative implementation for Python's
+ platform.linux_distribution()
+endef
+
+$(eval $(call Py3Package,python3-distro))
+$(eval $(call BuildPackage,python3-distro))
+$(eval $(call BuildPackage,python3-distro-src))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-docker
+PKG_VERSION:=4.2.1
+PKG_RELEASE:=2
+
+PYPI_NAME:=docker
+PKG_HASH:=380a20d38fbfaa872e96ee4d0d23ad9beb0f9ed57ff1c30653cbeb0c9c0964f2
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+PYTHON3_PKG_SETUP_ARGS:=
+
+define Package/python3-docker
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=A Python library for the Docker Engine API
+ URL:=https://github.com/docker/docker-py
+ DEPENDS:=\
+ +python3-light +python3-distutils +python3-logging \
+ +python3-openssl +python3-paramiko +python3-six +python3-requests \
+ +python3-websocket-client
+endef
+
+define Package/python3-docker/description
+ A Python library for the Docker Engine API. It lets you do anything the
+ docker command does, but from within Python apps – run containers manage
+ containers, manage Swarms, etc.
+endef
+
+$(eval $(call Py3Package,python3-docker))
+$(eval $(call BuildPackage,python3-docker))
+$(eval $(call BuildPackage,python3-docker-src))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-dockerpty
+PKG_VERSION:=0.4.1
+PKG_RELEASE:=3
+
+PYPI_NAME:=dockerpty
+PKG_HASH:=69a9d69d573a0daa31bcd1c0774eeed5c15c295fe719c61aca550ed1393156ce
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE.txt
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+PYTHON3_PKG_SETUP_ARGS:=
+
+define Package/python3-dockerpty
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ 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
+endef
+
+define Package/python3-dockerpty/description
+ Python library to use the pseudo-tty of a docker container
+endef
+
+$(eval $(call Py3Package,python3-dockerpty))
+$(eval $(call BuildPackage,python3-dockerpty))
+$(eval $(call BuildPackage,python3-dockerpty-src))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-docopt
+PKG_VERSION:=0.6.2
+PKG_RELEASE:=2
+
+PYPI_NAME:=docopt
+PKG_HASH:=49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE-MIT
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+PYTHON3_PKG_SETUP_ARGS:=
+
+define Package/python3-docopt
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=Pythonic argument parser, that will make you smile
+ URL:=http://docopt.org/
+ DEPENDS:=+python3-light
+endef
+
+define Package/python3-docopt/description
+ Pythonic argument parser, that will make you smile
+endef
+
+$(eval $(call Py3Package,python3-docopt))
+$(eval $(call BuildPackage,python3-docopt))
+$(eval $(call BuildPackage,python3-docopt-src))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-dotenv
+PKG_VERSION:=0.13.0
+PKG_RELEASE:=3
+
+PYPI_NAME:=python-dotenv
+PKG_HASH:=3b9909bc96b0edc6b01586e1eed05e71174ef4e04c71da5786370cebea53ad74
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-dotenv
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ 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
+endef
+
+define Package/python3-dotenv/description
+ A Python library which reads the key-value pair from .env file and adds them
+ to environment variable. It is great for managing app settings during
+ development and in production using 12-factor principles.
+endef
+
+$(eval $(call Py3Package,python3-dotenv))
+$(eval $(call BuildPackage,python3-dotenv))
+$(eval $(call BuildPackage,python3-dotenv-src))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-jsonschema
+PKG_VERSION:=3.2.0
+PKG_RELEASE:=3
+
+PYPI_NAME:=jsonschema
+PKG_HASH:=c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=COPYING
+
+HOST_PYTHON3_PACKAGE_BUILD_DEPENDS=setuptools_scm
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-jsonschema
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=An implementation of JSON Schema validation
+ URL:=https://github.com/Julian/jsonschema
+ DEPENDS:=+python3-light +python3-attrs +python3-urllib \
+ +python3-six +python3-pyrsistent +python3-setuptools
+endef
+
+define Package/python3-jsonschema/description
+ jsonschema is an implementation of JSON Schema validation for Python.
+endef
+
+$(eval $(call Py3Package,python3-jsonschema))
+$(eval $(call BuildPackage,python3-jsonschema))
+$(eval $(call BuildPackage,python3-jsonschema-src))
include $(TOPDIR)/rules.mk
PKG_NAME:=python-lxml
-PKG_VERSION:=4.4.2
-PKG_RELEASE:=3
+PKG_VERSION:=4.5.1
+PKG_RELEASE:=1
PYPI_NAME:=lxml
-PKG_HASH:=eff69ddbf3ad86375c344339371168640951c302450c5d3e9936e98d6459db06
+PKG_HASH:=27ee0faf8077c7c1a589573b1450743011117f1aa1a91d5ae776bbc5ca6070f2
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSES.txt
XPath, RelaxNG, XML Schema, XSLT, C14N and much more.
endef
-TARGET_LDFLAGS += -lxml2 -lxslt -lexslt
-
-PYTHON3_PKG_SETUP_ARGS += \
- --static
-
-PYTHON3_PKG_SETUP_VARS += \
- INCLUDE="$(STAGING_DIR)/usr/include/ $(STAGING_DIR)/usr/include/libxml2" \
- LIBRARY="$(STAGING_DIR)/usr/lib $(STAGING_DIR)/lib" \
- CFLAGS="$(TARGET_CFLAGS)" \
- LDFLAGS="$(TARGET_LDFLAGS)"
-
$(eval $(call Py3Package,python3-lxml))
$(eval $(call BuildPackage,python3-lxml))
$(eval $(call BuildPackage,python3-lxml-src))
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
include $(TOPDIR)/rules.mk
PKG_NAME:=python-packaging
-PKG_VERSION:=20.3
-PKG_RELEASE:=2
+PKG_VERSION:=20.4
+PKG_RELEASE:=1
PYPI_NAME:=packaging
-PKG_HASH:=3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3
+PKG_HASH:=4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=Apache-2.0 BSD-2-Clause
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-paramiko
+PKG_VERSION:=2.7.1
+PKG_RELEASE:=2
+
+PYPI_NAME:=paramiko
+PKG_HASH:=920492895db8013f6cc0179293147f830b8c7b21fdfc839b6bad760c27459d9f
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+PYTHON3_PKG_SETUP_ARGS:=
+
+define Package/python3-paramiko
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=SSH2 protocol library
+ URL:=https://github.com/paramiko/paramiko/
+ DEPENDS:=+python3-light +python3-logging +python3-bcrypt \
+ +python3-cryptography +python3-openssl +python3-pynacl
+endef
+
+define Package/python3-paramiko/description
+ Paramiko is a Python (2.7, 3.4+) implementation of the SSHv2 protocol,
+ providing both client and server functionality. While it leverages a Python
+ C extension for low level cryptography (Cryptography), Paramiko itself is a
+ pure Python interface around SSH networking concepts.
+endef
+
+$(eval $(call Py3Package,python3-paramiko))
+$(eval $(call BuildPackage,python3-paramiko))
+$(eval $(call BuildPackage,python3-paramiko-src))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-pynacl
+PKG_VERSION:=1.4.0
+PKG_RELEASE:=2
+
+PYPI_NAME:=PyNaCl
+PKG_HASH:=54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DEPENDS:=libffi/host
+
+HOST_PYTHON3_PACKAGE_BUILD_DEPENDS:="cffi>=1.4.1"
+
+PYTHON3_PKG_SETUP_VARS:= SODIUM_INSTALL=system
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-pynacl
+ CATEGORY:=Languages
+ SECTION:=lang
+ SUBMENU:=Python
+ TITLE:=Python binding to the libsodium library
+ URL:=https://github.com/pyca/pynacl/
+ DEPENDS:=+libsodium +python3-light +python3-cffi +python3-six
+endef
+
+define Package/python3-pynacl/description
+ PyNaCl is a Python binding to libsodium, which is a fork of the Networking and Cryptography library.
+endef
+
+$(eval $(call Py3Package,python3-pynacl))
+$(eval $(call BuildPackage,python3-pynacl))
+$(eval $(call BuildPackage,python3-pynacl-src))
include $(TOPDIR)/rules.mk
PKG_NAME:=python-pytest
-PKG_VERSION:=5.4.1
-PKG_RELEASE:=2
+PKG_VERSION:=5.4.2
+PKG_RELEASE:=1
PYPI_NAME:=pytest
-PKG_HASH:=84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970
+PKG_HASH:=eb2b5e935f6a019317e455b6da83dd8650ac9ffd2ee73a7b657a30873d67a698
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=MIT
include $(TOPDIR)/rules.mk
PKG_NAME:=python-requests
-PKG_VERSION:=2.23.0
-PKG_RELEASE:=2
+PKG_VERSION:=2.24.0
+PKG_RELEASE:=1
PKG_MAINTAINER:=Josef Schlehofer <josef.schlehofer@nic.cz>, Alexandru Ardelean <ardeleanalex@gmail.com>
PKG_LICENSE:=Apache-2.0
PKG_CPE_ID:=cpe:/a:python-requests:requests
PYPI_NAME:=requests
-PKG_HASH:=b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6
+PKG_HASH:=b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b
include ../pypi.mk
include $(INCLUDE_DIR)/package.mk
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-texttable
+PKG_VERSION:=1.6.2
+PKG_RELEASE:=2
+
+PYPI_NAME:=texttable
+PKG_HASH:=eff3703781fbc7750125f50e10f001195174f13825a92a45e9403037d539b4f4
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-texttable
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=Module for creating simple ASCII tables
+ URL:=https://github.com/foutaise/texttable/
+ DEPENDS:=+python3-light +python3-codecs
+endef
+
+define Package/python3-texttable/description
+ Module for creating simple ASCII tables
+endef
+
+$(eval $(call Py3Package,python3-texttable))
+$(eval $(call BuildPackage,python3-texttable))
+$(eval $(call BuildPackage,python3-texttable-src))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-websocket-client
+PKG_VERSION:=0.57.0
+PKG_RELEASE:=2
+
+PYPI_NAME:=websocket_client
+PKG_HASH:=d735b91d6d1692a6a181f2a8c9e0238e5f6373356f561bb9dc4c7af36f452010
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-websocket-client
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ 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
+endef
+
+define Package/python3-websocket-client/description
+ websocket-client module is WebSocket client for python. This provide the low
+ level APIs for WebSocket. All APIs are the synchronous functions.
+
+ websocket-client supports only hybi-13.
+endef
+
+$(eval $(call Py3Package,python3-websocket-client))
+$(eval $(call BuildPackage,python3-websocket-client))
+$(eval $(call BuildPackage,python3-websocket-client-src))
include $(TOPDIR)/rules.mk
PKG_NAME:=vala
-PKG_VERSION:=0.48.5
+PKG_VERSION:=0.48.6
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNOME/vala/0.48
-PKG_HASH:=a3d4c0e0dadd4c64962205d2f448af72d6bd8c67919d984012b8a41b843ec757
+PKG_HASH:=d18d08ed030ce0e0f044f4c15c9df3c25b15beaf8700e45e43b736a6debf9707
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
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 \
--- /dev/null
+#
+# Copyright © 2020 David Woodhouse <dwmw2@infradead.org>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=cereal
+PKG_VERSION:=1.3.0
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/USCiLab/cereal/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=329ea3e3130b026c03a4acc50e168e7daff4e6e661bc6a7dfec0d77b570851d5
+
+PKG_MAINTAINER:=David Woodhouse <dwmw2@infradead.org>
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+
+CMAKE_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+CMAKE_OPTIONS += \
+ -DCMAKE_CXX_FLAGS=-latomic \
+ -DJUST_INSTALL_CEREAL=ON \
+ -DSKIP_PORTABILITY_TEST=ON \
+ -DSKIP_PERFORMANCE_COMPARISON=ON \
+ -DWITH_WERROR=OFF
+
+define Package/cereal
+ BUILDONLY:=1
+ SECTION:=devel
+ CATEGORY:=Development
+ SUBMENU:=Libraries
+ TITLE:=Cereal is a library of C++ header files for serialization
+ URL:=https://github.com/USCilab/cereal
+endef
+
+
+define Package/cereal/description
+ Cereal is a library of C++ headers for serialization
+endef
+
+$(eval $(call BuildPackage,cereal))
PKG_NAME:=elektra
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE.md
-PKG_VERSION:=0.8.21
-PKG_RELEASE:=5
+PKG_VERSION:=0.9.2
+PKG_RELEASE:=1
# Use this for official releasees
-PKG_HASH:=51892570f18d1667d0da4d0908a091e41b41c20db9835765677109a3d150cd26
+PKG_HASH:=6f2fcf8aaed8863e1cc323265ca2617751ca50dac974b43a0811bcfd4a511f2e
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://ftp.libelektra.org/ftp/elektra/releases
#PKG_SOURCE_VERSION:=e97efb29a94f3a49cb952d06552fcf53708ea8c7
#PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
-HOST_BUILD_DEPENDS:=swig/host
-PKG_BUILD_DEPENDS:=elektra/host lua
+PKG_BUILD_DEPENDS:= lua
include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk
include $(INCLUDE_DIR)/nls.mk
endef
define CONTENT_ELEKTRA_PLUGINS_TEXT
-base64 boolean cachefilter camel ccode conditionals csvstorage
-date directoryvalue enum file filecheck glob hexcode hidden
-hosts iconv ipaddr keytometa line lineendings list mathcheck
-mini network null path profile range shell syslog uname
-validation
+base64 conditionals csvstorage date file filecheck glob hexcode
+hexnumber hidden hosts iconv ipaddr keytometa line lineendings list
+mathcheck macaddr mini network null path profile quickdump
+range reference rgbcolor shell syslog type uname unit validation
endef
CONTENT_ELEKTRA_PLUGINS = $(strip $(CONTENT_ELEKTRA_PLUGINS_TEXT))
DEPENDS:=+libelektra-core +libstdcpp
endef
-CONTENT_ELEKTRA_CPP=dump regexstore struct type
+CONTENT_ELEKTRA_CPP=ccode directoryvalue dump
define Package/libelektra-cpp/description
$(call Package/libelektra/Default-description)
define Package/libelektra-crypto
$(call Package/libelektra/Default)
TITLE:=Elektra crypto plugin
- DEPENDS:=+libelektra-core +libopenssl
+ DEPENDS:=+libelektra-core +libgcrypt
endef
define Package/libelektra-crypto/description
This package contains support for storing the key database as yaml files.
endef
+define Package/libelektra-zmq
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra ZeroMQ transport plugins
+ DEPENDS:=+libelektra-core +libzmq
+endef
+
define Package/libelektra-python3
$(call Package/libelektra/Default)
TITLE:=Elektra python3 plugin
endef
define CONTENT_EXTRA_PLUGINS_TEXT
-blockresolver c constants counter desktop dini dpkg error
-fcrypt fstab logchange mozprefs passwd rename required
-simplespeclang timeofday tracer
+blockresolver c constants counter desktop dpkg error fcrypt
+fstab logchange mozprefs passwd process rename
+timeofday tracer yamlsmith
endef
CONTENT_ELEKTRA_EXTRA:=$(strip $(CONTENT_EXTRA_PLUGINS_TEXT))
$(CONTENT_EXTRA_PLUGINS_TEXT)
endef
+CMAKE_BINARY_SUBDIR=build
+
CMAKE_OPTIONS = \
-DTARGET_PLUGIN_FOLDER="" \
-DBUILD_FULL=OFF \
-DKDB_DEFAULT_RESOLVER=resolver_fm_pb_b \
-DKDB_DEFAULT_STORAGE=ini \
-DENABLE_OPTIMIZATIONS=OFF \
- -DPLUGINS="ALL;-multifile;-python2" \
- -DICONV_FIND_REQUIRED=ON \
- -DICONV_INCLUDE_DIR="$(ICONV_PREFIX)/include" \
- -DICONV_LIBRARY="$(ICONV_PREFIX)/lib"
-
-CMAKE_HOST_OPTIONS = \
- -DCMAKE_SKIP_RPATH=FALSE \
- -DCMAKE_INSTALL_RPATH=$(STAGING_DIR_HOST)/lib/ \
- -DINSTALL_BUILD_TOOLS=ON \
- -DBUILD_STATIC=OFF \
- -DBUILD_DOCUMENTATION=OFF \
- -DINSTALL_SYSTEM_FILES=OFF \
- -DFORCE_IN_SOURCE_BUILD=ON \
- -DBUILD_TESTING=OFF \
- -DPLUGINS="ALL;-python2;-python;-ruby" \
- -DTOOLS="gen;kdb"
+ -DPLUGINS="ALL;-multifile;-simpleini;-internalnotification" \
+ -DIconv_INCLUDE_DIR="$(ICONV_PREFIX)/include" \
+ -DIconv_LIBRARY="$(ICONV_PREFIX)/lib/libiconv.$(if $(CONFIG_BUILD_NLS),so,a)" \
+ -DBINDINGS="MAINTAINED;-intercept_env;-intercept_fs;-io_uv;-io_ev;-io_glib"
define Package/libelektra-core/install
$(INSTALL_DIR) $(1)/etc/kdb/
$(INSTALL_DIR) $(1)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra.so* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-core.so* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-ease.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-globbing.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-highlevel.so* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-invoke.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-io.so* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-kdb.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-merge.so* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-meta.so* $(1)/usr/lib/
+ #The next is excluded because of an upstream bug
+ #$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-notification.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-opts.so* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-plugin.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-pluginprocess.so* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-proposal.so* $(1)/usr/lib/
#The next is only supported with glibc, so skip it.
#$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektraintercept-* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-resolver_fm_pb_b.so $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-utility.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-cache.so $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-mmapstorage.so $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-ni.so $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-ini.so $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-sync.so $(1)/usr/lib/
define Package/libelektra-crypto/install
$(INSTALL_DIR) $(1)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-crypto_openssl.so $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-crypto.so $(1)/usr/lib/
endef
define Package/libelektra-curlget/install
define Package/libelektra-dbus/install
$(INSTALL_DIR) $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-dbus.so $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-dbusrecv.so $(1)/usr/lib/
endef
define Package/libelektra-xerces/install
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-yamlcpp.so $(1)/usr/lib/
endef
+define Package/libelektra-zmq/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-zeromqsend.so $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-zeromqrecv.so $(1)/usr/lib/
+endef
+
define Package/libelektra-python3/install
$(INSTALL_DIR) $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-python.so $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
endef
-
-$(eval $(call HostBuild))
$(eval $(call BuildPackage,libelektra-core))
$(eval $(call BuildPackage,elektra-kdb))
$(eval $(call BuildPackage,libelektra-resolvers))
$(eval $(call BuildPackage,libelektra-yajl))
$(eval $(call BuildPackage,libelektra-python3))
$(eval $(call BuildPackage,libelektra-lua))
+$(eval $(call BuildPackage,libelektra-zmq))
$(eval $(call BuildPackage,libelektra-extra))
+++ /dev/null
---- a/src/plugins/crypto/openssl_operations.c
-+++ b/src/plugins/crypto/openssl_operations.c
-@@ -25,6 +25,10 @@
- #include <stdlib.h>
- #include <string.h>
-
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#define EVP_CIPHER_CTX_reset EVP_CIPHER_CTX_cleanup
-+#endif
-+
- #define KEY_BUFFER_SIZE (ELEKTRA_CRYPTO_SSL_KEYSIZE + ELEKTRA_CRYPTO_SSL_BLOCKSIZE)
-
- /*
-@@ -144,8 +148,10 @@ int elektraCryptoOpenSSLInit (Key * errorKey ELEKTRA_UNUSED)
- // initialize OpenSSL according to
- // https://wiki.openssl.org/index.php/Library_Initialization
- pthread_mutex_lock (&mutex_ssl);
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- OpenSSL_add_all_algorithms ();
- ERR_load_crypto_strings ();
-+#endif
- pthread_mutex_unlock (&mutex_ssl);
- return 1;
- }
-@@ -246,8 +252,8 @@ void elektraCryptoOpenSSLHandleDestroy (elektraCryptoHandle * handle)
- if (handle)
- {
- pthread_mutex_lock (&mutex_ssl);
-- EVP_CIPHER_CTX_cleanup (handle->encrypt);
-- EVP_CIPHER_CTX_cleanup (handle->decrypt);
-+ EVP_CIPHER_CTX_reset (handle->encrypt);
-+ EVP_CIPHER_CTX_reset (handle->decrypt);
- EVP_CIPHER_CTX_free (handle->encrypt);
- EVP_CIPHER_CTX_free (handle->decrypt);
- pthread_mutex_unlock (&mutex_ssl);
include $(TOPDIR)/rules.mk
PKG_NAME:=file
-PKG_VERSION:=5.38
-PKG_RELEASE:=2
+PKG_VERSION:=5.39
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://src.fedoraproject.org/lookaside/pkgs/file/ \
- http://download.openpkg.org/components/cache/file/ \
+PKG_SOURCE_URL:=http://download.openpkg.org/components/cache/file/ \
ftp://ftp.astron.com/pub/file/
-PKG_HASH:=593c2ffc2ab349c5aea0f55fedfe4d681737b6b62376a9b3ad1e77b2cc19fa34
+PKG_HASH:=f05d286a76d9556243d0cb05814929c2ecf3a5ba07963f8f70bfaaa70517fad1
PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
PKG_LICENSE:=BSD-2-Clause
PKG_FIXUP:=autoreconf
PKG_LIBTOOL_PATHS:=builds/unix
-include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
define Package/libfreetype
--with-zlib=yes \
--with-png=yes
-HOST_CONFIGURE_ARGS+= \
- --with-bzip2=no \
- --with-zlib=no \
- --with-png=no
-
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)" all install
endef
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfreetype.so.* $(1)/usr/lib/
endef
-$(eval $(call HostBuild))
$(eval $(call BuildPackage,libfreetype))
include $(TOPDIR)/rules.mk
PKG_NAME:=gnutls
-PKG_VERSION:=3.6.13
+PKG_VERSION:=3.6.14
PKG_RELEASE:=1
PKG_USE_MIPS16:=0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6
-PKG_HASH:=32041df447d9f4644570cf573c9f60358e865637d69b7e59d1159b7240b52f38
+PKG_HASH:=5630751adec7025b8ef955af4d141d00d252a985769f51b4059e5affa3d39d63
#PKG_FIXUP:=autoreconf gettext-version
PKG_MAINTAINER:=Nikos Mavrogiannopoulos <nmav@gnutls.org>
PKG_LICENSE:=LGPL-2.1-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=google-authenticator-libpam
-PKG_VERSION:=1.08
+PKG_VERSION:=1.09
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/google/google-authenticator-libpam/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=6f6d7530261ba9e2ece84214f1445857d488b7851c28a58356b49f2d9fd36290
+PKG_HASH:=ab1d7983413dc2f11de2efa903e5c326af8cb9ea37765dacb39949417f7cd037
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
PKG_LICENSE:=Apache-2.0
include $(TOPDIR)/rules.mk
PKG_NAME:=hiredis
-PKG_VERSION:=0.14.0
-PKG_RELEASE:=2
+PKG_VERSION:=0.14.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/redis/hiredis/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=042f965e182b80693015839a9d0278ae73fae5d5d09d8bf6d0e6a39a8c4393bd
+PKG_HASH:=2663b2aed9fd430507e30fc5e63274ee40cdd1a296026e22eafd7d99b01c8913
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=libarchive
-PKG_VERSION:=3.4.2
+PKG_VERSION:=3.4.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.libarchive.org/downloads
-PKG_HASH:=d8e10494b4d3a15ae9d67a130d3ab869200cfd60b2ab533b391b0a0d5500ada1
+PKG_HASH:=0bfc3fd40491768a88af8d9b86bf04a9e95b6d41a94f9292dbc0ec342288c05f
PKG_MAINTAINER:=Johannes Morgenroth <morgenroth@ibr.cs.tu-bs.de>
PKG_LICENSE:=BSD-2-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=libcap
-PKG_VERSION:=2.33
-PKG_RELEASE:=2
+PKG_VERSION:=2.36
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/libs/security/linux-privs/libcap2
-PKG_HASH:=08edeaba2757021aeec45c4eeec52566675e0e0f5d4f057284d729e04f2643d6
+PKG_HASH:=5048c849bdbbe24d2ca59463142cb279abec5edf3ab6731ab35a596bcf538a49
PKG_MAINTAINER:=Paul Wassi <p.wassi@gmx.at>
PKG_LICENSE:=GPL-2.0-only
$(CP) $(PKG_INSTALL_DIR)/lib/libcap.{so*,a} $(1)/usr/lib/
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/lib/libpsx.a $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libcap.pc $(1)/usr/lib/pkgconfig/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/lib/pkgconfig/libcap.pc $(1)/usr/lib/pkgconfig/
$(SED) 's,exec_prefix=,exec_prefix=/usr,g' $(1)/usr/lib/pkgconfig/libcap.pc
$(SED) 's,/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libcap.pc
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libcap.pc
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpsx.pc $(1)/usr/lib/pkgconfig/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/lib/pkgconfig/libpsx.pc $(1)/usr/lib/pkgconfig/
$(SED) 's,exec_prefix=,exec_prefix=/usr,g' $(1)/usr/lib/pkgconfig/libpsx.pc
$(SED) 's,/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libpsx.pc
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libpsx.pc
+++ /dev/null
---- a/libcap/_makenames.c
-+++ b/libcap/_makenames.c
-@@ -8,7 +8,6 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
--#include <sys/capability.h>
-
- /*
- * #include 'sed' generated array
-@@ -23,7 +22,7 @@ struct {
- };
-
- /* this should be more than big enough (factor of three at least) */
--const char *pointers[8*sizeof(struct __user_cap_data_struct)];
-+const char *pointers[8*12];
-
- int main(void)
- {
+++ /dev/null
---- a/progs/capsh.c
-+++ b/progs/capsh.c
-@@ -25,6 +25,9 @@
- #include <sys/wait.h>
- #include <unistd.h>
-
-+#ifndef SHELL
-+#define SHELL "/bin/sh"
-+#endif
- #define MAX_GROUPS 100 /* max number of supplementary groups for user */
-
- static char *binary(unsigned long value)
-@@ -775,10 +778,10 @@ int main(int argc, char *argv[], char *envp[])
- } else if (!strcmp("--print", argv[i])) {
- arg_print();
- } else if ((!strcmp("--", argv[i])) || (!strcmp("==", argv[i]))) {
-- argv[i] = strdup(argv[i][0] == '-' ? "/bin/bash" : argv[0]);
-+ argv[i] = strdup(argv[i][0] == '-' ? SHELL : argv[0]);
- argv[argc] = NULL;
- execve(argv[i], argv+i, envp);
-- fprintf(stderr, "execve /bin/bash failed!\n");
-+ fprintf(stderr, "execve " SHELL " failed!\n");
- exit(1);
- } else if (!strncmp("--has-p=", argv[i], 8)) {
- cap_value_t cap;
-@@ -888,7 +891,7 @@ int main(int argc, char *argv[], char *envp[])
- " --killit=<n> send signal(n) to child\n"
- " --forkfor=<n> fork and make child sleep for <n> sec\n"
- " == re-exec(capsh) with args as for --\n"
-- " -- remaing arguments are for /bin/bash\n"
-+ " -- remaing arguments are for " SHELL "\n"
- " (without -- [%s] will simply exit(0))\n",
- argv[0], argv[0]);
-
--- /dev/null
+#
+# Copyright (C) 2008-2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libconfig
+PKG_VERSION:=1.7.2
+PKG_RELEASE:=3
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://hyperrealm.github.io/libconfig/dist/
+PKG_HASH:=7c3c7a9c73ff3302084386e96f903eb62ce06953bb1666235fac74363a16fad9
+
+PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=COPYING.LIB
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libconfig
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Configuration File Library
+ URL:=https://hyperrealm.github.io/libconfig/
+ ABI_VERSION:=11
+endef
+
+define Package/libconfig/description
+ Libconfig is a simple library for manipulating structured configuration
+ files. This file format is more compact and more readable than XML. And
+ unlike XML, it is type-aware, so it is not necessary to do string
+ parsing in application code.
+
+ Libconfig is very compact -- just 38K for the stripped C shared
+ library (less than one-fourth the size of the expat XML parser library)
+ and 66K for the stripped C++ shared library. This makes it well-suited
+ for memory-constrained systems like handheld devices.
+endef
+
+CONFIGURE_ARGS += \
+ --enable-shared \
+ --disable-static \
+ --disable-cxx
+
+define Build/InstallDev
+ $(CP) $(PKG_INSTALL_DIR)/* $(1)/
+endef
+
+define Package/libconfig/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libconfig.so.* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libconfig))
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
PKG_NAME:=libmraa
PKG_VERSION:=2.1.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/eclipse/mraa/tar.gz/v$(PKG_VERSION)?
include ../../lang/python/python3-package.mk
CMAKE_OPTIONS=-DENABLEEXAMPLES=0 \
- -DFIRMATA=ON
+ -DFIRMATA=ON \
+ -DBUILDSWIG=OFF
TARGET_CFLAGS+=-I$(STAGING_DIR)/usr/include/node
define Package/libmraa-python3
$(call Package/libmraa/Default)
TITLE:=Eclipse MRAA lowlevel IO Python3 library
- DEPENDS:=+libmraa +python3-light
+ DEPENDS:=+libmraa +python3-light @BROKEN
endef
define Package/libmraa-python3/description
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.3
+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:=160ab9b0fa8886013811573cb28cffe0b205eadb318e9627c09b297dee1cbc23
+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_VERSION:=2.2.0
PKG_RELEASE:=2
-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/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libplist++-2.0.pc $(1)/usr/lib/pkgconfig/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libplist-2.0.pc $(1)/usr/lib/pkgconfig/
+ $(LN) libplist++-2.0.pc $(1)/usr/lib/pkgconfig/libplist++.pc
+ $(LN) libplist-2.0.pc $(1)/usr/lib/pkgconfig/libplist.pc
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
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
-include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
define Package/libpng
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpng.so $(1)/usr/lib/
endef
-$(eval $(call HostBuild))
$(eval $(call BuildPackage,libpng))
include $(TOPDIR)/rules.mk
PKG_NAME:=libqmi
-PKG_VERSION:=1.24.12
+PKG_VERSION:=1.24.14
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.freedesktop.org/software/libqmi
-PKG_HASH:=2d3b91a2b8a882b17b16403c9ef7bdce522db4f0ceaa3e4dff76033885428b69
+PKG_HASH:=208fe3e94dabe1d8117d1023d841737b6fe92aaff21ef8f35bbed15417ee507f
PKG_MAINTAINER:=Nicholas Smith <nicholas.smith@telcoantennas.com.au>
--- /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:=libupnpp
-PKG_VERSION:=0.19.1
+PKG_VERSION:=0.19.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.lesbonscomptes.com/upmpdcli/downloads
-PKG_HASH:=412b38bdd07441588c11bb1d64af7d112f439a46512d53c907f9b54a6666ff58
+PKG_HASH:=c9623533271605c92dfa603f5fe0ab6d3d5b4384a0c9173800784f4aa643a190
PKG_MAINTAINER:=Petko Bordjukov <bordjukov@gmail.com>
PKG_LICENSE:=LGPL-2.1-or-later
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>
include $(TOPDIR)/rules.mk
PKG_NAME:=v4l-utils
-PKG_VERSION:=1.16.8
+PKG_VERSION:=1.20.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://www.linuxtv.org/downloads/v4l-utils
-PKG_HASH:=84346bf200bd30efb8a80a65ded1b81d39ae7e0ff2272e98f478b4eee8f40d13
+PKG_HASH:=956118713f7ccb405c55c7088a6a2490c32d54300dd9a30d8d5008c28d3726f7
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
---- a/utils/cec-ctl/cec-ctl.cpp
-+++ b/utils/cec-ctl/cec-ctl.cpp
-@@ -18,6 +18,7 @@
- #include <errno.h>
- #include <sys/ioctl.h>
- #include <stdarg.h>
-+#include <ctime>
- #include <cerrno>
- #include <string>
- #include <vector>
---- a/utils/cec-follower/cec-follower.h
-+++ b/utils/cec-follower/cec-follower.h
-@@ -9,6 +9,7 @@
- #define _CEC_FOLLOWER_H_
-
- #include <stdarg.h>
-+#include <ctime>
- #include <cerrno>
- #include <string>
- #include <linux/cec-funcs.h>
---- a/utils/common/media-info.cpp
-+++ b/utils/common/media-info.cpp
-@@ -21,6 +21,7 @@
- #include <linux/media.h>
-
- #include <fstream>
-+#include <iostream>
- #include <media-info.h>
-
- static std::string num2s(unsigned num, bool is_hex = true)
---- a/utils/rds-ctl/rds-ctl.cpp
-+++ b/utils/rds-ctl/rds-ctl.cpp
-@@ -27,6 +27,8 @@
- #include <linux/videodev2.h>
- #include <libv4l2rds.h>
+--- a/utils/libcecutil/cec-info.cpp
++++ b/utils/libcecutil/cec-info.cpp
+@@ -5,6 +5,7 @@
+ * Copyright 2017 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
+ */
+#include <cctype>
-+#include <ctime>
- #include <list>
- #include <vector>
- #include <map>
---- a/utils/v4l2-compliance/media-info.cpp
-+++ b/utils/v4l2-compliance/media-info.cpp
-@@ -21,6 +21,7 @@
- #include <linux/media.h>
-
- #include <fstream>
-+#include <iostream>
- #include <media-info.h>
-
- static std::string num2s(unsigned num, bool is_hex = true)
---- a/utils/v4l2-ctl/media-info.cpp
-+++ b/utils/v4l2-ctl/media-info.cpp
-@@ -21,6 +21,7 @@
- #include <linux/media.h>
-
- #include <fstream>
-+#include <iostream>
- #include <media-info.h>
-
- static std::string num2s(unsigned num, bool is_hex = true)
+ #include <stdio.h>
+ #include <string>
+ #include <unistd.h>
+++ /dev/null
-POSIX says that behavior when subopts list is empty is undefined.
-musl libs will set value to NULL which leads to crash.
-
-Simply avoid getsubopt, since we cannot rely on it.
-
---- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
-+++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
-@@ -679,16 +679,17 @@ static bool parse_subset(char *optarg)
-
- static bool parse_next_subopt(char **subs, char **value)
- {
-- static char *const subopts[] = {
-- NULL
-- };
-- int opt = getsubopt(subs, subopts, value);
-+ char *p = *subs;
-+ *value = *subs;
-
-- if (opt < 0 || *value)
-- return false;
-- fprintf(stderr, "No value given to suboption <%s>\n",
-- subopts[opt]);
-- return true;
-+ while (*p && *p != ',')
-+ p++;
-+
-+ if (*p)
-+ *p++ = '\0';
-+
-+ *subs = p;
-+ return false;
- }
-
- void common_cmd(int ch, char *optarg)
+++ /dev/null
---- a/utils/keytable/keytable.c
-+++ b/utils/keytable/keytable.c
-@@ -1686,7 +1686,7 @@ static void test_event(struct rc_device *rc_dev, int fd)
-
- for (i = 0; i < rd / sizeof(struct input_event); i++) {
- printf(_("%ld.%06ld: event type %s(0x%02x)"),
-- ev[i].time.tv_sec, ev[i].time.tv_usec,
-+ ev[i].input_event_sec, ev[i].input_event_usec,
- get_event_name(events_type, ev[i].type), ev[i].type);
-
- switch (ev[i].type) {
+++ /dev/null
---- a/utils/keytable/keytable.c
-+++ b/utils/keytable/keytable.c
-@@ -61,6 +61,10 @@ struct input_keymap_entry_v2 {
- u_int8_t scancode[32];
- };
-
-+#ifndef input_event_sec
-+#define input_event_sec time.tv_sec
-+#define input_event_usec time.tv_usec
-+#endif
-
- #define IR_PROTOCOLS_USER_DIR IR_KEYTABLE_USER_DIR "/protocols"
- #define IR_PROTOCOLS_SYSTEM_DIR IR_KEYTABLE_SYSTEM_DIR "/protocols"
--- /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:=xerces-c
-PKG_VERSION:=3.2.2
-PKG_RELEASE:=3
+PKG_VERSION:=3.2.3
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@APACHE/xerces/c/3/sources
-PKG_HASH:=6daca3b23364d8d883dc77a73f681242f69389e3564543287ed3d073007e0a8e
+PKG_HASH:=12fc99a9fc1d1a79bd0e927b8b5637a576d6656f45b0d5e70ee3694d379cc149
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
-PKG_BUILD_PARALLEL:=1
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/nls.mk
include $(INCLUDE_DIR)/package.mk
PKG_NAME:=libxslt
PKG_VERSION:=1.1.34
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= \
--without-debug \
--without-mem-debug \
--without-debugger \
- --without-profiler \
--without-plugins
HOST_CONFIGURE_ARGS += \
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>
--- /dev/null
+#
+# Copyright © 2020 David Woodhouse <dwmw2@infradead.org>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=minizip
+PKG_VERSION:=2.9.3
+PKG_RELEASE:=3
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/nmoinvaz/minizip/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=f64b2d228a03673a8ec36a53402e2108437226fd9170d49b7f0c0bca94708b93
+
+PKG_MAINTAINER:=David Woodhouse <dwmw2@infradead.org>
+PKG_LICENSE:=Zlib
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+CMAKE_OPTIONS += \
+ -DINSTALL_INC_DIR=/usr/include/minizip \
+ -DBUILD_SHARED_LIBS=ON \
+ -DMZ_BZIP2=OFF \
+ -DMZ_LIBBSD=OFF
+
+
+define Package/minizip
+ TITLE:=Fork of the popular zip manipulation library found in the zlib distribution
+ SECTION:=libs
+ CATEGORY:=Libraries
+ DEPENDS:=+zlib
+ URL:=https://github.com/nmoinvaz/minizip
+endef
+
+define Package/minizip-dev
+ SECTION:=devel
+ CATEGORY:=Development
+ SUBMENU:=Libraries
+ DEPENDS:=minizip
+ TITLE:=Development files for the minizip library
+endef
+
+define Package/minizip/description
+ minizip is a zip manipulation library written in C that is supported on Windows, macOS, and Linux
+endef
+
+define Package/minizip/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libminizip.so.* $(1)/usr/lib/
+endef
+
+TARGET_CXXFLAGS += -flto
+
+define Build/InstallDev
+ $(call Build/InstallDev/cmake,$(1))
+ $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/minizip.pc
+ $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/minizip.pc
+endef
+
+$(eval $(call BuildPackage,minizip))
--- /dev/null
+From 3d94e052f987bc35452592acf9f6fcb0d4ee4db4 Mon Sep 17 00:00:00 2001
+From: David Woodhouse <dwmw2@infradead.org>
+Date: Wed, 10 Jun 2020 11:39:17 +0100
+Subject: [PATCH] Allow libbsd to be explicitly disabled
+
+When building for a minimal environment like OpenWRT we want to avoid the
+dependency on libbsd even if it did happen to be built and available in
+the buildroot at the time minizip is compiled.
+
+https://github.com/openwrt/packages/issues/12471
+---
+ CMakeLists.txt | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0de10cf..217359a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -17,6 +17,7 @@ option(MZ_PKCRYPT "Enables PKWARE traditional encryption" ON)
+ option(MZ_WZAES "Enables WinZIP AES encryption" ON)
+ option(MZ_LIBCOMP "Enables Apple compression" OFF)
+ option(MZ_OPENSSL "Enables OpenSSL for encryption" OFF)
++option(MZ_LIBBSD "Enable libbsd random functionality" ON)
+ option(MZ_BRG "Enables Brian Gladman's encryption library" OFF)
+ option(MZ_SIGNING "Enables zip signing support" ON)
+ option(MZ_COMPRESS_ONLY "Only support compression" OFF)
+@@ -275,7 +276,7 @@ if(UNIX)
+ endif()
+ endif()
+
+- if(NOT HAVE_ARC4RANDOM_BUF)
++ if(MZ_LIBBSD AND NOT HAVE_ARC4RANDOM_BUF)
+ find_package(PkgConfig REQUIRED)
+
+ pkg_check_modules(LIBBSD libbsd)
+@@ -288,6 +289,8 @@ if(UNIX)
+ list(APPEND MINIZIP_INC ${LIBBSD_INCLUDE_DIRS})
+ link_directories(${LIBBSD_LIBRARY_DIRS})
+ endif()
++ else()
++ set(MZ_LIBBSD FALSE)
+ endif()
+ endif()
+ endif()
+@@ -935,6 +938,7 @@ add_feature_info(MZ_PKCRYPT MZ_PKCRYPT "Enables PKWARE traditional encryption")
+ add_feature_info(MZ_WZAES MZ_WZAES "Enables WinZIP AES encryption")
+ add_feature_info(MZ_LIBCOMP MZ_LIBCOMP "Enables Apple compression")
+ add_feature_info(MZ_OPENSSL MZ_OPENSSL "Enables OpenSSL for encryption")
++add_feature_info(MZ_LIBBSD MZ_LIBBSD "Build with libbsd for random functionality")
+ add_feature_info(MZ_BRG MZ_BRG "Enables Brian Gladman's encryption library")
+ add_feature_info(MZ_SIGNING MZ_SIGNING "Enables zip signing support")
+ add_feature_info(MZ_COMPRESS_ONLY MZ_COMPRESS_ONLY "Only support compression")
+--
+2.17.1
+
include $(TOPDIR)/rules.mk
PKG_NAME:=nss
-PKG_VERSION:=3.52
-PKG_RELEASE:=4
+PKG_VERSION:=3.53
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= \
https://download.cdn.mozilla.net/pub/security/$(PKG_NAME)/releases/NSS_$(subst .,_,$(PKG_VERSION))_RTM/src \
https://archive.mozilla.org/pub/security/$(PKG_NAME)/releases/NSS_$(subst .,_,$(PKG_VERSION))_RTM/src
-PKG_HASH:=0a0aeb0cdda65ddcb64f746223df58b150f6803f4bfa1a4e876bbe6f9c4c1561
+PKG_HASH:=08d36dc1a56325f02e626626d4eeab9c4d126dbd99dfaf419b91d0a696f58917
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
PKG_LICENCE:=MPL-2.0
PKG_LICENSE_FILES:=nss/COPYING
PKG_CPE_ID:=cpe:/a:mozilla:network_security_services
-PKG_BUILD_PARALLEL:=0
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
SEED_ONLY_DEV_URANDOM=1 \
NS_USE_GCC=1 \
FREEBL_NO_DEPEND=1 \
- NSS_DISABLE_DBM=1 \
NSS_PKIX_NO_LDAP=1 \
ALLOW_OPT_CODE_SIZE=1 \
OPT_CODE_SIZE=1 \
$(MAKE) -C $(PKG_BUILD_DIR)/nss/coreconf/nsinstall
endef
+define Build/Compile
+ $(call Build/Compile/Default,nss_build_all)
+endef
+
define Package/libnss/conffiles
/etc/pki/nssdb
endef
diff -Naurp nss-3.28-orig/nss/Makefile nss-3.28/nss/Makefile
--- nss-3.28-orig/nss/Makefile 2016-12-21 05:56:27.000000000 -0600
+++ nss-3.28/nss/Makefile 2016-12-26 22:24:52.695146032 -0600
-@@ -47,7 +47,7 @@ include $(CORE_DEPTH)/coreconf/rules.mk
- # (7) Execute "local" rules. (OPTIONAL). #
+@@ -48,7 +48,6 @@ include $(CORE_DEPTH)/coreconf/rules.mk
#######################################################################
--nss_build_all: build_nspr all latest
-+nss_build_all: all latest
-
- nss_clean_all: clobber_nspr clobber
+ nss_build_all:
+- $(MAKE) build_nspr
+ $(MAKE) all
+ $(MAKE) latest
diff -Naurp nss-3.28-orig/nss/config/Makefile nss-3.28/nss/config/Makefile
--- nss-3.28-orig/nss/config/Makefile 1969-12-31 18:00:00.000000000 -0600
diff -Naurp nss-3.28-orig/nss/manifest.mn nss-3.28/nss/manifest.mn
--- nss-3.28-orig/nss/manifest.mn 2016-12-21 05:56:27.000000000 -0600
+++ nss-3.28/nss/manifest.mn 2016-12-26 22:24:12.278991843 -0600
-@@ -10,4 +10,4 @@ IMPORTS = nspr20/v4.8 \
+@@ -10,7 +10,7 @@ IMPORTS = nspr20/v4.8 \
RELEASE = nss
-DIRS = coreconf lib cmd cpputil gtests
-+DIRS = coreconf lib cmd cpputil gtests config
++DIRS = coreconf lib cmd cpputil config
+
+ lib: coreconf
+ cmd: lib
+
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:=pcre
-PKG_VERSION:=8.43
-PKG_RELEASE:=2
+PKG_VERSION:=8.44
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_HASH:=91e762520003013834ac1adb4a938d53b22a216341c061b0cf05603b290faf6b
-PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
+PKG_HASH:=19108658b23b3ec5058edc9f66ac545ea19f9537234be1ec62b714c84399366d
+PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENCE
PKG_CPE_ID:=cpe:/a:pcre:pcre
-PKG_FIXUP:=autoreconf
-
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
PKG_CONFIG_DEPENDS:=\
CONFIG_PACKAGE_libpcrecpp \
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:=pixman
-PKG_VERSION:=0.38.4
+PKG_VERSION:=0.40.0
PKG_RELEASE:=1
+
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=da66d6fd6e40aee70f7bd02e4f8f76fc3f006ec879d346bae6a723025cfbdde7
PKG_SOURCE_URL:=https://www.cairographics.org/releases
+PKG_HASH:=6d200dec3740d9ec4ec8d1180e25779c00bc749f94278c8b9021f5534db223fc
+
+PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
+
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
-PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
+PKG_BUILD_DEPENDS:=meson/host
include $(INCLUDE_DIR)/package.mk
+include ../../devel/meson/meson.mk
define Package/pixman
include $(TOPDIR)/rules.mk
PKG_NAME:=postgresql
-PKG_VERSION:=12.1
-PKG_RELEASE:=4
+PKG_VERSION:=12.3
+PKG_RELEASE:=1
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=PostgreSQL
PKG_CPE_ID:=cpe:/a:postgresql:postgresql
http://ftp.postgresql.org/pub/source/v$(PKG_VERSION) \
ftp://ftp.postgresql.org/pub/source/v$(PKG_VERSION)
-PKG_HASH:=a09bf3abbaf6763980d0f8acbb943b7629a8b20073de18d867aecdb7988483ed
+PKG_HASH:=94ed64a6179048190695c86ec707cc25d016056ce10fc9d229267d9a8f1dcf41
PKG_USE_MIPS16:=0
PKG_FIXUP:=autoreconf
include $(TOPDIR)/rules.mk
PKG_NAME:=redis
-PKG_VERSION:=6.0.1
+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:=b8756e430479edc162ba9c44dc89ac394316cd482f2dc6b91bcd5fe12593f273
+PKG_HASH:=42cf86a114d2a451b898fcda96acd4d01062a7dbaaad2801d9164a36f898f596
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=spdlog
-PKG_VERSION:=1.5.0
-PKG_RELEASE:=2
+PKG_VERSION:=1.6.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/gabime/spdlog/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=b38e0bbef7faac2b82fed550a0c19b0d4e7f6737d5321d4fd8f216b80f8aee8a
+PKG_HASH:=378a040d91f787aec96d269b0c39189f58a6b852e4cbf9150ccfacbe85ebbbfc
PKG_MAINTAINER:=
PKG_LICENSE:=MIT
include $(TOPDIR)/rules.mk
PKG_NAME:=xmlrpc-c
-PKG_VERSION:=1.51.03
+PKG_VERSION:=1.51.06
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=@SF/xmlrpc-c/Xmlrpc-c%20Super%20Stable/$(PKG_VERSION)
-PKG_HASH:=82f9a4f6dee03f6a58921d75a65949dd4f0036a4c268bce6a4343338932ec065
+PKG_HASH:=06dcd87d9c88374559369ffbe83b3139cf41418c1a2d03f20e08808085f89fd0
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=VARIOUS
include $(TOPDIR)/rules.mk
PKG_NAME:=yaml
-PKG_VERSION:=0.2.4
+PKG_VERSION:=0.2.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pyyaml.org/download/libyaml/
-PKG_HASH:=d80aeda8747b7c26fbbfd87ab687786e58394a8435ae3970e79cb97882e30557
+PKG_HASH:=c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4
PKG_MAINTAINER:=
PKG_LICENSE:=MIT
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
include $(TOPDIR)/rules.mk
PKG_NAME:=dovecot
-PKG_VERSION:=2.3.10
+PKG_VERSION:=2.3.10.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://dovecot.org/releases/2.3
-PKG_HASH:=473184723d854a4d1dbd99c11a7b9f65156ca5fe6ecf85d9a44b5127e6f871c5
+PKG_HASH:=6642e62f23b1b23cfac235007ca6e21cb67460cca834689fad450724456eb10c
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
PKG_LICENSE:=LGPL-2.1-only MIT BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=ffmpeg
-PKG_VERSION:=4.2.2
-PKG_RELEASE:=4
+PKG_VERSION:=4.2.3
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://ffmpeg.org/releases/
-PKG_HASH:=cb754255ab0ee2ea5f66f8850e1bd6ad5cac1cd855d0a2f4990fb8c668b0d29c
+PKG_HASH:=9df6c90aed1337634c1fb026fb01c154c29c82a64ea71291ff2da9aacb9aad31
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
Ian Leonard <antonlacon@gmail.com>
PKG_NAME:=gerbera
PKG_VERSION:=1.5.0
-PKG_RELEASE:=6
+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);
}
--- /dev/null
+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 @@
+ #include <memory>
+ #include <string>
+
++#include <unistd.h>
++
+ // 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 @@
+ #include <string>
+ #include <vector>
+
++#include <unistd.h>
++
+ #include "executor.h"
+
+ class ProcessExecutor : public Executor {
--- /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.5.8
+PKG_VERSION:=2020.6.16.1
PKG_RELEASE:=1
PYPI_NAME:=youtube_dl
-PKG_HASH:=22da6788b55b7b267c6d59bcdfaf10e67a9ac980976d50d29a670473ad2a05bb
+PKG_HASH:=9fc0389a1bbbeb609a5bb4ad5630dea107a9d1a24c73721c611a78c234309a75
PKG_MAINTAINER:=Adrian Panella <ianchi74@outlook.com>, Josef Schlehofer <pepe.schlehofer@gmail.com>
PKG_LICENSE:=Unlicense
PKG_NAME:=acme
PKG_VERSION:=2.8.6
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/acmesh-official/acme.sh/archive/$(PKG_VERSION).tar.gz
$(INSTALL_BIN) $(PKG_BUILD_DIR)/acme.sh $(1)/usr/lib/acme/acme.sh
endef
+define Package/acme/prerm
+#!/bin/sh
+sed -i '/\/etc\/init\.d\/acme start/d' /etc/crontabs/root
+endef
+
define Package/acme-dnsapi
SECTION:=net
CATEGORY:=Network
include $(TOPDIR)/rules.mk
PKG_NAME:=adblock
-PKG_VERSION:=4.0.5
-PKG_RELEASE:=2
+PKG_VERSION:=4.0.6
+PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0-or-later
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
## Main Features
* Support of the following fully pre-configured domain blocklist sources (free for private usage, for commercial use please check their individual licenses)
-| Source | Enabled | Size | Focus | Information |
-| :------------------ | :-----: | :--- | :--------------- | :--------------------------------------------------------------- |
-| adaway | x | S | mobile | [Link](https://github.com/AdAway/adaway.github.io) |
-| adguard | x | L | general | [Link](https://adguard.com) |
-| andryou | | L | compilation | [Link](https://gitlab.com/andryou/block/-/blob/master/readme.md) |
-| anudeep | | M | compilation | [Link](https://github.com/anudeepND/blacklist) |
-| bitcoin | | S | mining | [Link](https://github.com/hoshsadiq/adblock-nocoin-list) |
-| disconnect | x | S | general | [Link](https://disconnect.me) |
-| dshield | | XL | general | [Link](https://dshield.org) |
-| energized_blugo | | XL | compilation | [Link](https://energized.pro) |
-| energized_blu | | XL | compilation | [Link](https://energized.pro) |
-| energized_porn | | XXL | compilation+porn | [Link](https://energized.pro) |
-| energized_ultimate | | XXL | compilation | [Link](https://energized.pro) |
-| energized_unified | | XXL | compilation | [Link](https://energized.pro) |
-| malwaredomains | | M | malware | [Link](https://malwaredomains.com) |
-| malwarelist | | S | malware | [Link](https://www.malwaredomainlist.com) |
-| notracking | | XL | tracking | [Link](https://github.com/notracking/hosts-blocklists) |
-| oisd_nl | | XXL | general | [Link](https://oisd.nl) |
-| openphish | | S | phishing | [Link](https://openphish.com) |
-| phishing_army | | S | phishing | [Link](https://phishing.army) |
-| reg_cn | | M | reg_china | [Link](https://easylist.to) |
-| reg_de | | M | reg_germany | [Link](https://easylist.to) |
-| reg_es | | M | reg_espania | [Link](https://easylist.to) |
-| reg_fi | | S | reg_finland | [Link](https://github.com/finnish-easylist-addition) |
-| reg_id | | M | reg_indonesia | [Link](https://easylist.to) |
-| reg_nl | | M | reg_netherlands | [Link](https://easylist.to) |
-| reg_pl | | M | reg_poland | [Link](https://kadantiscam.netlify.com) |
-| reg_ro | | M | reg_romania | [Link](https://easylist.to) |
-| reg_ru | | M | reg_russia | [Link](https://easylist.to) |
-| reg_vn | | M | reg_vietnam | [Link](https://bigdargon.github.io/hostsVN) |
-| shallalist | | L | general | [Link](http://www.shallalist.de) |
-| shallalist_porn | | XXL | general+porn | [Link](http://www.shallalist.de) |
-| smarttv | | S | smarttv | [Link](https://github.com/Perflyst/PiHoleBlocklist) |
-| spam404 | | S | general | [Link](https://github.com/Dawsey21) |
-| stevenblack | | L | compilation+porn | [Link](https://github.com/StevenBlack/hosts) |
-| stevenblack_porn | | L | compilation+porn | [Link](https://github.com/StevenBlack/hosts) |
-| stopforumspam | | S | spam | [Link](https://www.stopforumspam.com) |
-| sysctl | | M | general | [Link](http://sysctl.org/cameleon) |
-| utcapitole | | L | general | [Link](https://dsi.ut-capitole.fr/blacklists/index_en.php) |
-| utcapitole_porn | | XXL | general+porn | [Link](https://dsi.ut-capitole.fr/blacklists/index_en.php) |
-| wally3k | | S | compilation | [Link](https://firebog.net/about) |
-| whocares | | M | general | [Link](https://someonewhocares.org) |
-| winhelp | | S | general | [Link](http://winhelp2002.mvps.org) |
-| winspy | | S | win_telemetry | [Link](https://github.com/crazy-max/WindowsSpyBlocker) |
-| youtube | | M | youtube | [Link](https://github.com/kboghdady/youTube_ads_4_pi-hole) |
-| yoyo | x | S | general | [Link](http://pgl.yoyo.org/adservers) |
+| Source | Enabled | Size | Focus | Information |
+| :------------------ | :-----: | :--- | :--------------- | :-------------------------------------------------------------------------------- |
+| adaway | x | S | mobile | [Link](https://github.com/AdAway/adaway.github.io) |
+| adguard | x | L | general | [Link](https://adguard.com) |
+| anti_ad | | L | compilation | [Link](https://github.com/privacy-protection-tools/anti-AD/blob/master/README.md) |
+| andryou | | L | compilation | [Link](https://gitlab.com/andryou/block/-/blob/master/readme.md) |
+| anudeep | | M | compilation | [Link](https://github.com/anudeepND/blacklist) |
+| bitcoin | | S | mining | [Link](https://github.com/hoshsadiq/adblock-nocoin-list) |
+| disconnect | x | S | general | [Link](https://disconnect.me) |
+| dshield | | XL | general | [Link](https://dshield.org) |
+| energized_blugo | | XL | compilation | [Link](https://energized.pro) |
+| energized_blu | | XL | compilation | [Link](https://energized.pro) |
+| energized_porn | | XXL | compilation+porn | [Link](https://energized.pro) |
+| energized_ultimate | | XXL | compilation | [Link](https://energized.pro) |
+| energized_unified | | XXL | compilation | [Link](https://energized.pro) |
+| malwaredomains | | M | malware | [Link](https://malwaredomains.com) |
+| malwarelist | | S | malware | [Link](https://www.malwaredomainlist.com) |
+| notracking | | XL | tracking | [Link](https://github.com/notracking/hosts-blocklists) |
+| oisd_nl | | XXL | general | [Link](https://oisd.nl) |
+| openphish | | S | phishing | [Link](https://openphish.com) |
+| phishing_army | | S | phishing | [Link](https://phishing.army) |
+| reg_cn | | M | reg_china | [Link](https://easylist.to) |
+| reg_cz | | M | reg_czech+slovak | [Link](https://easylist.to) |
+| reg_de | | M | reg_germany | [Link](https://easylist.to) |
+| reg_es | | M | reg_espania | [Link](https://easylist.to) |
+| reg_fi | | S | reg_finland | [Link](https://github.com/finnish-easylist-addition) |
+| reg_fr | | S | reg_france | [Link](https://forums.lanik.us/viewforum.php?f=91) |
+| reg_id | | M | reg_indonesia | [Link](https://easylist.to) |
+| reg_kr | | M | reg_korea | [Link](https://list-kr.github.io) |
+| reg_nl | | M | reg_netherlands | [Link](https://easylist.to) |
+| reg_pl | | M | reg_poland | [Link](https://kadantiscam.netlify.com) |
+| reg_ro | | M | reg_romania | [Link](https://easylist.to) |
+| reg_ru | | M | reg_russia | [Link](https://easylist.to) |
+| reg_vn | | M | reg_vietnam | [Link](https://bigdargon.github.io/hostsVN) |
+| shallalist | | L | general | [Link](http://www.shallalist.de) |
+| shallalist_porn | | XXL | general+porn | [Link](http://www.shallalist.de) |
+| smarttv | | S | smarttv | [Link](https://github.com/Perflyst/PiHoleBlocklist) |
+| spam404 | | S | general | [Link](https://github.com/Dawsey21) |
+| stevenblack | | L | compilation | [Link](https://github.com/StevenBlack/hosts) |
+| stevenblack_porn | | L | compilation+porn | [Link](https://github.com/StevenBlack/hosts) |
+| stopforumspam | | S | spam | [Link](https://www.stopforumspam.com) |
+| sysctl | | M | general | [Link](http://sysctl.org/cameleon) |
+| utcapitole | | L | general | [Link](https://dsi.ut-capitole.fr/blacklists/index_en.php) |
+| utcapitole_porn | | XXL | general+porn | [Link](https://dsi.ut-capitole.fr/blacklists/index_en.php) |
+| wally3k | | S | compilation | [Link](https://firebog.net/about) |
+| whocares | | M | general | [Link](https://someonewhocares.org) |
+| winhelp | | S | general | [Link](http://winhelp2002.mvps.org) |
+| winspy | | S | win_telemetry | [Link](https://github.com/crazy-max/WindowsSpyBlocker) |
+| youtube | | M | youtube | [Link](https://github.com/kboghdady/youTube_ads_4_pi-hole) |
+| yoyo | x | S | general | [Link](http://pgl.yoyo.org/adservers) |
* List of supported and fully pre-configured adblock sources, already active sources are pre-selected.
<b><em>To avoid OOM errors, please do not select too many lists!</em></b>
## Adblock Config Options
* Usually the auto pre-configured adblock setup works quite well and no manual overrides are needed
-| Option | Default | Description/Valid Values |
-| :---------------- | :--------------------------------- | :--------------------------------------------------------------------------------------------- |
-| adb_enabled | 1, enabled | set to 0 to disable the adblock service |
-| adb_srcarc | -, /etc/adblock/adblock.sources.gz | full path to the used adblock source archive |
-| adb_srcfile | -, /tmp/adb_sources.json | full path to the used adblock source file, which has a higher precedence than the archive file |
-| adb_dns | -, auto-detected | 'dnsmasq', 'unbound', 'named', 'kresd' or 'raw' |
-| adb_fetchutil | -, auto-detected | 'uclient-fetch', 'wget', 'curl' or 'aria2c' |
-| adb_fetchparm | -, auto-detected | config options for the selected download utility, e.g. to disable the certificate check |
-| adb_trigger | -, not set | trigger network interface or 'not set' to use a time-based startup |
-| adb_triggerdelay | 2 | additional trigger delay in seconds before adblock processing begins |
-| adb_debug | 0, disabled | set to 1 to enable the debug output |
-| adb_nice | 0, standard prio. | valid nice level range 0-19 of the adblock processes |
-| adb_forcedns | 0, disabled | set to 1 to force DNS requests to the local resolver |
-| adb_maxqueue | 4 | size of the download queue to handle downloads & list processing in parallel |
-| adb_dnsdir | -, auto-detected | path for the generated blocklist file 'adb_list.overall' |
-| adb_dnstimeout | 10 | timeout in seconds to wait for a successful DNS backend restart |
-| adb_dnsinstance | 0, first instance | set to the relevant dns backend instance used by adblock (dnsmasq only) |
-| adb_dnsfilereset | 0, disabled | set to 1 to purge the final DNS blocklist file after DNS backend loading |
-| adb_dnsflush | 0, disabled | set to 1 to flush the DNS Cache before & after adblock processing |
-| adb_dnsinotify | -, not set | set to 1 to prevent adblock triggered restarts for DNS backends with autoload functions |
-| adb_dnsallow | -, not set | set to 1 to disable selective DNS whitelisting (RPZ pass through) |
-| adb_lookupdomain | example.com | external domain to check for a successful DNS backend restart or 'false' to disable this check |
-| adb_portlist | 53 853 5353 | space separated list of firewall ports which should be redirected locally |
-| adb_report | 0, disabled | set to 1 to enable the background tcpdump gathering process for reporting |
-| adb_reportdir | /tmp | path for DNS related report files |
-| adb_repiface | -, auto-detected | name of the reporting interface or 'any' used by tcpdump |
-| adb_replisten | 53 | space separated list of reporting port(s) used by tcpdump |
-| adb_repchunkcnt | 5 | report chunk count used by tcpdump |
-| adb_repchunksize | 1 | report chunk size used by tcpdump in MB |
-| adb_backup | 1, enabled | set to 0 to disable the backup function |
-| adb_backupdir | /tmp | path for adblock backups |
-| adb_tmpbase | /tmp | path for all adblock related runtime operations, e.g. downloading, sorting, merging etc. |
-| adb_safesearch | 0, disabled | set to 1 to enforce SafeSearch for google, bing, duckduckgo, yandex, youtube and pixabay |
-| adb_safesearchmod | 0, disabled | set to 1 to enable moderate SafeSearch filters for youtube |
-| adb_mail | 0, disabled | set to 1 to enable notification E-Mails in case of a processing errors |
-| adb_mailreceiver | -, not set | receiver address for adblock notification E-Mails |
-| adb_mailsender | no-reply@adblock | sender address for adblock notification E-Mails |
-| adb_mailtopic | adblock notification | topic for adblock notification E-Mails |
-| adb_mailprofile | adb_notify | mail profile used in 'msmtp' for adblock notification E-Mails |
-| adb_mailcnt | 0 | minimum domain count to trigger E-Mail notifications |
-| adb_jail | 0 | set to 1 to enable the additional, restrictive 'adb_list.jail' creation |
-| adb_jaildir | /tmp | path for the generated jail list |
+| Option | Default | Description/Valid Values |
+| :----------------- | :--------------------------------- | :--------------------------------------------------------------------------------------------- |
+| adb_enabled | 1, enabled | set to 0 to disable the adblock service |
+| adb_srcarc | -, /etc/adblock/adblock.sources.gz | full path to the used adblock source archive |
+| adb_srcfile | -, /tmp/adb_sources.json | full path to the used adblock source file, which has a higher precedence than the archive file |
+| adb_dns | -, auto-detected | 'dnsmasq', 'unbound', 'named', 'kresd' or 'raw' |
+| adb_fetchutil | -, auto-detected | 'uclient-fetch', 'wget', 'curl' or 'aria2c' |
+| adb_fetchparm | -, auto-detected | config options for the selected download utility, e.g. to disable the certificate check |
+| adb_trigger | -, not set | trigger network interface or 'not set' to use a time-based startup |
+| adb_triggerdelay | 2 | additional trigger delay in seconds before adblock processing begins |
+| adb_debug | 0, disabled | set to 1 to enable the debug output |
+| adb_nice | 0, standard prio. | valid nice level range 0-19 of the adblock processes |
+| adb_forcedns | 0, disabled | set to 1 to force DNS requests to the local resolver |
+| adb_maxqueue | 4 | size of the download queue to handle downloads & list processing in parallel |
+| adb_dnsdir | -, auto-detected | path for the generated blocklist file 'adb_list.overall' |
+| adb_dnstimeout | 10 | timeout in seconds to wait for a successful DNS backend restart |
+| adb_dnsinstance | 0, first instance | set to the relevant dns backend instance used by adblock (dnsmasq only) |
+| adb_dnsfilereset | 0, disabled | set to 1 to purge the final DNS blocklist file after DNS backend loading |
+| adb_dnsflush | 0, disabled | set to 1 to flush the DNS Cache before & after adblock processing |
+| adb_dnsinotify | -, not set | set to 1 to prevent adblock triggered restarts for DNS backends with autoload functions |
+| adb_dnsallow | -, not set | set to 1 to disable selective DNS whitelisting (RPZ pass through) |
+| adb_lookupdomain | example.com | external domain to check for a successful DNS backend restart or 'false' to disable this check |
+| adb_portlist | 53 853 5353 | space separated list of firewall ports which should be redirected locally |
+| adb_report | 0, disabled | set to 1 to enable the background tcpdump gathering process for reporting |
+| adb_reportdir | /tmp | path for DNS related report files |
+| adb_repiface | -, auto-detected | name of the reporting interface or 'any' used by tcpdump |
+| adb_replisten | 53 | space separated list of reporting port(s) used by tcpdump |
+| adb_repchunkcnt | 5 | report chunk count used by tcpdump |
+| adb_repchunksize | 1 | report chunk size used by tcpdump in MB |
+| adb_backup | 1, enabled | set to 0 to disable the backup function |
+| adb_backupdir | /tmp | path for adblock backups |
+| adb_tmpbase | /tmp | path for all adblock related runtime operations, e.g. downloading, sorting, merging etc. |
+| adb_safesearch | 0, disabled | set to 1 to enforce SafeSearch for google, bing, duckduckgo, yandex, youtube and pixabay |
+| adb_safesearchlist | -, not set | Limit SafeSearch to certain provider (see above) |
+| adb_safesearchmod | 0, disabled | set to 1 to enable moderate SafeSearch filters for youtube |
+| adb_mail | 0, disabled | set to 1 to enable notification E-Mails in case of a processing errors |
+| adb_mailreceiver | -, not set | receiver address for adblock notification E-Mails |
+| adb_mailsender | no-reply@adblock | sender address for adblock notification E-Mails |
+| adb_mailtopic | adblock notification | topic for adblock notification E-Mails |
+| adb_mailprofile | adb_notify | mail profile used in 'msmtp' for adblock notification E-Mails |
+| adb_mailcnt | 0 | minimum domain count to trigger E-Mail notifications |
+| adb_jail | 0 | set to 1 to enable the additional, restrictive 'adb_list.jail' creation |
+| adb_jaildir | /tmp | path for the generated jail list |
## Examples
**Change the DNS backend to 'unbound':**
if [ -n "$(uci -q changes adblock)" ]
then
uci_commit adblock
+ "${adb_init}" start
fi
else
src_archive="$(uci_get adblock global adb_srcarc "/etc/adblock/adblock.sources.gz")"
src_file="$(uci_get adblock global adb_srcfile "/tmp/adb_sources.json")"
src_enabled="$(uci -q show adblock.global.adb_sources)"
- if [ ! -r "${src_file}" ]
+ if [ -r "${src_archive}" ]
then
- if [ -r "${src_archive}" ]
- then
- zcat "${src_archive}" > "${src_file}"
- else
- printf "%s\\n" "::: adblock source archive '${src_archive}' not found"
- fi
+ zcat "${src_archive}" > "${src_file}"
+ else
+ printf "%s\\n" "::: adblock source archive '${src_archive}' not found"
fi
if [ -r "${src_file}" ]
then
export LC_ALL=C
export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
set -o pipefail
-adb_ver="4.0.5"
+adb_ver="4.0.6"
adb_enabled=0
adb_debug=0
adb_forcedns=0
adb_dnsflush=0
adb_dnstimeout=20
adb_safesearch=0
+adb_safesearchlist=""
adb_safesearchmod=0
adb_report=0
adb_trigger=""
adb_jail=0
adb_dns=""
adb_dnsprefix="adb_list"
+adb_locallist="blacklist whitelist"
adb_tmpbase="/tmp"
adb_backupdir="/tmp"
adb_reportdir="/tmp"
{
local option="${1}"
local value="${2}"
- eval "${option}=\"$(printf "%s" "${adb_sources}") ${value}\""
+ if [ "${option}" = "adb_sources" ]
+ then
+ eval "${option}=\"$(printf "%s" "${adb_sources}") ${value}\""
+ elif [ "${option}" = "adb_safesearchlist" ]
+ then
+ eval "${option}=\"$(printf "%s" "${adb_safesearchlist}") ${value}\""
+ fi
}
}
config_load adblock
adb_dnsheader="${adb_dnsheader:-"\$TTL 2h\n@ IN SOA localhost. root.localhost. (1 6h 1h 1w 2h)\n"}"
adb_dnsdeny="${adb_dnsdeny:-"${adb_awk} '{print \"\"\$0\" CNAME .\\n*.\"\$0\" CNAME .\"}'"}"
adb_dnsallow="${adb_dnsallow:-"${adb_awk} '{print \"\"\$0\" CNAME rpz-passthru.\\n*.\"\$0\" CNAME rpz-passthru.\"}'"}"
- adb_dnssafesearch="${adb_dnssafesearch:-"0"}"
+ adb_dnssafesearch="${adb_dnssafesearch:-"${adb_awk} -v item=\"\$item\" '{type=\"AAAA\";if(match(item,/^([0-9]{1,3}\.){3}[0-9]{1,3}$/)){type=\"A\"}}{print \"\"\$0\" \"type\" \"item\"\"}'"}"
adb_dnsstop="${adb_dnsstop:-"* CNAME ."}"
;;
"raw")
if [ "${out_rc}" -eq 0 ]
then
> "${adb_tmpdir}/tmp.safesearch.${src_name}"
- if [ "${adb_dns}" = "named" ] || [ "${adb_dns}" = "kresd" ]
+ if [ "${adb_dns}" = "named" ]
then
array="${safe_cname}"
else
#
f_switch()
{
- local status list entry done="false" mode="${1}"
+ local status entry done="false" mode="${1}"
json_load_file "${adb_rtfile}" >/dev/null 2>&1
json_select "data" >/dev/null 2>&1
# white- and blacklist preparation
#
- list="blacklist whitelist"
- for entry in ${list}
+ for entry in ${adb_locallist}
do
( f_list "${entry}" "${entry}" )&
done
#
if [ "${adb_safesearch}" -eq 1 ] && [ "${adb_dnssafesearch}" != "0" ]
then
- list="google bing duckduckgo pixabay yandex youtube"
- for entry in ${list}
+ if [ -z "${adb_safesearchlist}" ]
+ then
+ adb_safesearchlist="google bing duckduckgo pixabay yandex youtube"
+ fi
+ for entry in ${adb_safesearchlist}
do
( f_list safesearch "${entry}" )&
done
"focus": "compilation",
"descurl": "https://gitlab.com/andryou/block/-/blob/master/readme.md"
},
+ "anti_ad": {
+ "url": "https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-domains.txt",
+ "rule": "/^([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($1)}",
+ "size": "L",
+ "focus": "compilation",
+ "descurl": "https://github.com/privacy-protection-tools/anti-AD/blob/master/README.md"
+ },
"anudeep": {
"url": "https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt",
"rule": "/^0\\.0\\.0\\.0[[:space:]]+([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($2)}",
"descurl": "https://github.com/notracking/hosts-blocklists"
},
"oisd_nl": {
- "url": "https://dbl.oisd.nl",
- "rule": "/^([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($1)}",
+ "url": "https://abp.oisd.nl/",
+ "rule": "BEGIN{FS=\"[|^]\"}/^\\|\\|([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+\\^(\\$third-party)?$/{print tolower($3)}",
"size": "XXL",
"focus": "general",
"descurl": "https://oisd.nl"
"focus": "reg_china",
"descurl": "https://easylist.to"
},
+ "reg_cz": {
+ "url": "https://easylist-downloads.adblockplus.org/easylistczechslovak+easylist.txt",
+ "rule": "BEGIN{FS=\"[|^]\"}/^\\|\\|([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+\\^(\\$third-party)?$/{print tolower($3)}",
+ "size": "M",
+ "focus": "reg_czech+slovak",
+ "descurl": "https://easylist.to"
+ },
"reg_de": {
"url": "https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt",
"rule": "BEGIN{FS=\"[|^]\"}/^\\|\\|([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+\\^(\\$third-party)?$/{print tolower($3)}",
"focus": "reg_finland",
"descurl": "https://github.com/finnish-easylist-addition"
},
+ "reg_fr": {
+ "url": "https://easylist-downloads.adblockplus.org/liste_fr.txt",
+ "rule": "BEGIN{FS=\"[|^]\"}/^\\|\\|([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+\\^(\\$third-party)?$/{print tolower($3)}",
+ "size": "S",
+ "focus": "reg_france",
+ "descurl": "https://forums.lanik.us/viewforum.php?f=91"
+ },
"reg_id": {
"url": "https://easylist-downloads.adblockplus.org/abpindo+easylist.txt",
"rule": "BEGIN{FS=\"[|^]\"}/^\\|\\|([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+\\^(\\$third-party)?$/{print tolower($3)}",
"focus": "reg_indonesia",
"descurl": "https://easylist.to"
},
+ "reg_kr": {
+ "url": "https://raw.githubusercontent.com/List-KR/List-KR/master/filter.txt",
+ "rule": "BEGIN{FS=\"[|^]\"}/^\\|\\|([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+\\^(\\$third-party)?$/{print tolower($3)}",
+ "size": "S",
+ "focus": "reg_korea",
+ "descurl": "https://list-kr.github.io"
+ },
"reg_nl": {
"url": "https://easylist-downloads.adblockplus.org/easylistdutch+easylist.txt",
"rule": "BEGIN{FS=\"[|^]\"}/^\\|\\|([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+\\^(\\$third-party)?$/{print tolower($3)}",
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
PKG_NAME:=bind
PKG_VERSION:=9.16.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
USERID:=bind=57:bind=57
PKG_MAINTAINER:=Noah Meyerhans <frodo@morgul.net>
DEPENDS:= \
+bind-check \
+bind-dig \
+ +bind-nslookup \
+bind-dnssec \
+bind-host \
+bind-rndc
TITLE+= DNS excavation tool
endef
+define Package/bind-nslookup
+ $(call Package/bind/Default)
+ TITLE+= nslookup utility
+ ALTERNATIVES:= \
+ 200:/usr/bin/nslookup:/usr/libexec/nslookup-bind
+endef
+
export BUILD_CC="$(TARGET_CC)"
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dig $(1)/usr/bin/
endef
+define Package/bind-nslookup/install
+ $(INSTALL_DIR) $(1)/usr/libexec
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/nslookup $(1)/usr/libexec/nslookup-bind
+endef
+
$(eval $(call BuildPackage,bind-libs))
$(eval $(call BuildPackage,bind-server))
$(eval $(call BuildPackage,bind-server-filter-aaaa))
$(eval $(call BuildPackage,bind-dnssec))
$(eval $(call BuildPackage,bind-host))
$(eval $(call BuildPackage,bind-dig))
+$(eval $(call BuildPackage,bind-nslookup))
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
bool "Enable larger limits for use with non-embedded systems"
default n
+config COOVACHILLI_JSONINTERFACE
+ bool "Enable the JSON interface for the CoovaChilli Controller"
+ default n
+
choice
prompt "SSL library"
default COOVACHILLI_NOSSL
PKG_NAME:=coova-chilli
PKG_VERSION:=1.5
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/coova/coova-chilli/tar.gz/$(PKG_VERSION)?
PKG_BUILD_PARALLEL:=0
PKG_CONFIG_DEPENDS:= \
+ COOVACHILLI_JSONINTERFACE \
COOVACHILLI_LARGELIMITS \
COOVACHILLI_MINIPORTAL \
COOVACHILLI_NOSSL \
SECTION:=net
CATEGORY:=Network
DEPENDS:=+kmod-tun +librt +COOVACHILLI_MINIPORTAL:haserl \
- +COOVACHILLI_WOLFSSL:libwolfssl +COOVACHILLI_OPENSSL:libopenssl
+ +COOVACHILLI_WOLFSSL:libwolfssl +COOVACHILLI_OPENSSL:libopenssl \
+ +COOVACHILLI_JSONINTERFACE:libjson-c
TITLE:=Wireless LAN HotSpot controller (Coova Chilli Version)
URL:=https://coova.github.io/
MENU:=1
$(if $(CONFIG_COOVACHILLI_MINIPORTAL),--enable,--disable)-miniportal \
$(if $(CONFIG_COOVACHILLI_USERAGENT),--enable,--disable)-useragent \
$(if $(CONFIG_COOVACHILLI_LARGELIMITS),--enable,--disable)-largelimits \
+ $(if $(CONFIG_COOVACHILLI_JSONINTERFACE),--enable,--disable)-libjson \
+ $(if $(CONFIG_COOVACHILLI_JSONINTERFACE),--enable,--disable)-json \
$(if $(CONFIG_COOVACHILLI_UAMDOMAINFILE),--enable,--disable)-uamdomainfile \
$(if $(CONFIG_IPV6),--with,--without)-ipv6 \
$(if $(CONFIG_COOVACHILLI_WOLFSSL),--with,--without)-cyassl \
include $(TOPDIR)/rules.mk
PKG_NAME:=dawn
-PKG_SOURCE_DATE:=2020-05-20
+PKG_SOURCE_DATE:=2020-06-12
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/berlin-open-wireless-lab/DAWN.git
-PKG_SOURCE_VERSION:=73c79989676f5b89f4547f4effc4497f5aaeea44
-PKG_MIRROR_HASH:=a5bf4bf58e3352316800a1f5d4cfb750a09f4f43c1494c5560d71a22fa267c55
+PKG_SOURCE_VERSION:=ada3bf3ff2b1faa24bcbc3754f8f52b9e66b02cd
+PKG_MIRROR_HASH:=7139fc3ff71ab05a0d651e6a05cfcaa07d1084f47e4cf76d894217487eeb7ce3
PKG_MAINTAINER:=Nick Hainke <vincent@systemli.org>
PKG_LICENSE:=GPL-2.0-only
PKG_NAME:=dnsdist
PKG_VERSION:=1.4.0
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/
--- /dev/null
+From 405bdec807a7b530173ebf018843c4552dfa20c9 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Sat, 6 Jun 2020 11:33:55 -0700
+Subject: [PATCH] use std::string_view when available
+
+There's a standard C++ macro to check for its existence.
+
+libstdc++ from GCC makes it available under C++17 and up. libcxx from
+LLVM makes it available everywhere.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ ext/lmdb-safe/lmdb-safe.hh | 7 +++----
+ pdns/dnsdistdist/views.hh | 7 +++----
+ 2 files changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/ext/lmdb-safe/lmdb-safe.hh b/ext/lmdb-safe/lmdb-safe.hh
+index 056a6cd823..16d150fa7d 100644
+--- a/ext/lmdb-safe/lmdb-safe.hh
++++ b/ext/lmdb-safe/lmdb-safe.hh
+@@ -10,8 +10,9 @@
+ #include <string.h>
+ #include <mutex>
+
+-// apple compiler somehow has string_view even in c++11!
+-#if __cplusplus < 201703L && !defined(__APPLE__)
++#ifdef __cpp_lib_string_view
++using std::string_view;
++#else
+ #include <boost/version.hpp>
+ #if BOOST_VERSION >= 106100
+ #include <boost/utility/string_view.hpp>
+@@ -20,8 +21,6 @@ using boost::string_view;
+ #include <boost/utility/string_ref.hpp>
+ using string_view = boost::string_ref;
+ #endif
+-#else // C++17
+-using std::string_view;
+ #endif
+
+
--- /dev/null
+From 6910a23b67f64bd71ffb26c1888fb9d8b99acfa6 Mon Sep 17 00:00:00 2001
+From: Peter van Dijk <peter.van.dijk@powerdns.com>
+Date: Mon, 9 Mar 2020 19:10:00 +0100
+Subject: [PATCH] auth lmdb: avoid blanket std import; fixes #8872
+
+---
+ ext/lmdb-safe/lmdb-safe.cc | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/ext/lmdb-safe/lmdb-safe.cc b/ext/lmdb-safe/lmdb-safe.cc
+index f4874261f6..c29d291473 100644
+--- a/ext/lmdb-safe/lmdb-safe.cc
++++ b/ext/lmdb-safe/lmdb-safe.cc
+@@ -6,7 +6,10 @@
+ #include <string.h>
+ #include <map>
+
+-using namespace std;
++using std::string;
++using std::runtime_error;
++using std::tuple;
++using std::weak_ptr;
+
+ static string MDBError(int rc)
+ {
include $(TOPDIR)/rules.mk
PKG_NAME:=go-ethereum
-PKG_VERSION:=1.9.11
+PKG_VERSION:=1.9.14
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ethereum/go-ethereum/tar.gz/v${PKG_VERSION}?
-PKG_HASH:=226cf65cda4eab3e66e8042c3d8bcee8ed07c619ae0ec2421ed4b0abe97bb055
+PKG_HASH:=2bb8dda5dcfceebb31d1e1def1bdc6bf999ac8883a7235b4b242f55e930bcb3c
PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
PKG_LICENSE:=GPL-3.0-or-later LGPL-3.0-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=gnurl
-PKG_VERSION:=7.67.0
-PKG_RELEASE:=2
+PKG_VERSION:=7.70.0
+PKG_RELEASE:=1
PKG_SOURCE_URL:=@GNU/gnunet
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=2b972454ac3ab8c40f4dd2beeff168dde9666c473a1418f7f69194563e4caa46
+PKG_HASH:=0acfcf7921eab323d41be3c8dbb3c4926530bb1fdd95b4fa6f412eb291a2a95f
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=haproxy
-PKG_VERSION:=2.1.4
+PKG_VERSION:=2.1.7
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.haproxy.org/download/2.1/src
-PKG_HASH:=51030ff696d7067162b4d24d354044293aecfbb36d7acc2f840c8d928bfe91cd
+PKG_HASH:=392e6cf18e75fe7e166102e8c4512942890a0b5ae738f6064faab4687f60a339
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
Christian Lachner <gladiac@gmail.com>
endif
ifeq ($(CONFIG_USE_UCLIBC),y)
- LINUX_TARGET:=linux-uclibc
-else
- LINUX_TARGET:=linux-glibc
+ ADDON+=USE_LIBCRYPT=
endif
ifeq ($(BUILD_VARIANT),ssl)
ADDON+=USE_OPENSSL=1
- ADDON+=ADDLIB="-lcrypto -lm "
+ ADDON+=ADDLIB="-lcrypto -lm"
endif
ifeq ($(ENABLE_REGPARM),y)
endif
define Build/Compile
- $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR) \
+ $(MAKE) TARGET=linux-glibc -C $(PKG_BUILD_DIR) \
DESTDIR="$(PKG_INSTALL_DIR)" \
CC="$(TARGET_CC)" \
PCREDIR="$(STAGING_DIR)/usr/" \
USE_THREAD=1 USE_PTHREAD_PSHARED=1 \
VERSION="$(PKG_VERSION)" SUBVERS="-$(PKG_RELEASE)" \
VERDATE="$(shell date -d @$(SOURCE_DATE_EPOCH) '+%Y/%m/%d')" IGNOREGIT=1 \
- $(ADDON) \
+ $(ADDON) USE_BACKTRACE= \
CFLAGS="$(TARGET_CFLAGS) -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv -Wno-format-truncation -Wno-unused-label -Wno-sign-compare -Wno-unused-parameter -Wno-old-style-declaration -Wno-ignored-qualifiers -Wno-clobbered -Wno-missing-field-initializers -Wno-implicit-fallthrough -Wno-stringop-overflow -Wno-cast-function-type -Wtype-limits -Wshift-negative-value -Wshift-overflow=2 -Wduplicated-cond -Wnull-dereference" \
LD="$(TARGET_CC)" \
LDFLAGS="$(TARGET_LDFLAGS) -latomic" \
#!/bin/sh
CLONEURL=https://git.haproxy.org/git/haproxy-2.1.git
-BASE_TAG=v2.1.4
+BASE_TAG=v2.1.7
TMP_REPODIR=tmprepo
PATCHESDIR=patches
+++ /dev/null
-commit c7a203a6c75e4efff5f3d5d675d925f11b47dba1
-Author: Frédéric Lécaille <flecaille@haproxy.com>
-Date: Thu Apr 2 14:24:31 2020 +0200
-
- BUG/MINOR: protocol_buffer: Wrong maximum shifting.
-
- This patch fixes a bad stop condition when decoding a protocol buffer variable integer
- whose maximum lenghts are 10, shifting a uint64_t value by more than 63.
-
- Thank you to Ilya for having reported this issue.
-
- Must be backported to 2.1 and 2.0.
-
- (cherry picked from commit 876ed55d9b8d0c298b6cac1003ec365a19bf7aad)
- Signed-off-by: Willy Tarreau <w@1wt.eu>
-
-diff --git a/include/proto/protocol_buffers.h b/include/proto/protocol_buffers.h
-index 69f0bdf81..0426d83d2 100644
---- a/include/proto/protocol_buffers.h
-+++ b/include/proto/protocol_buffers.h
-@@ -158,7 +158,7 @@ protobuf_varint(uint64_t *val, unsigned char *pos, size_t len)
-
- shift += 7;
- /* The maximum length in bytes of a 64-bit encoded value is 10. */
-- if (shift > 70)
-+ if (shift > 63)
- return 0;
- }
-
-@@ -194,7 +194,7 @@ protobuf_decode_varint(uint64_t *val, unsigned char **pos, size_t *len)
-
- shift += 7;
- /* The maximum length in bytes of a 64-bit encoded value is 10. */
-- if (shift > 70)
-+ if (shift > 63)
- return 0;
- }
-
-@@ -227,7 +227,7 @@ protobuf_skip_varint(unsigned char **pos, size_t *len, size_t vlen)
-
- shift += 7;
- /* The maximum length in bytes of a 64-bit encoded value is 10. */
-- if (shift > 70)
-+ if (shift > 63)
- return 0;
- }
-
-@@ -263,7 +263,7 @@ protobuf_varint_getlen(unsigned char *pos, size_t len)
-
- shift += 7;
- /* The maximum length in bytes of a 64-bit encoded value is 10. */
-- if (shift > 70)
-+ if (shift > 63)
- return -1;
- }
-
--- /dev/null
+commit 62af9c83f9ed2b25e0061798e29e3cccfce5fbdc
+Author: Willy Tarreau <w@1wt.eu>
+Date: Tue Mar 10 07:51:48 2020 +0100
+
+ BUILD: make dladdr1 depend on glibc version and not __USE_GNU
+
+ Technically speaking the call was implemented in glibc 2.3 so we must
+ rely on this and not on __USE_GNU which is an internal define of glibc
+ to track use of GNU_SOURCE.
+
+diff --git a/src/standard.c b/src/standard.c
+index e0ea8328e..d16eebfea 100644
+--- a/src/standard.c
++++ b/src/standard.c
+@@ -4350,7 +4350,7 @@ void debug_hexdump(FILE *out, const char *pfx, const char *buf,
+ static int dladdr_and_size(const void *addr, Dl_info *dli, size_t *size)
+ {
+ int ret;
+-#ifdef __USE_GNU // most detailed one
++#if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) // most detailed one
+ const ElfW(Sym) *sym;
+
+ ret = dladdr1(addr, dli, (void **)&sym, RTLD_DL_SYMENT);
+++ /dev/null
---- a/Makefile
-+++ b/Makefile
-@@ -342,6 +342,15 @@ ifeq ($(TARGET),linux-glibc)
- USE_ACCEPT4 USE_LINUX_SPLICE USE_PRCTL USE_THREAD_DUMP USE_GETADDRINFO)
- endif
-
-+# For linux >= 2.6.28 and uclibc
-+ifeq ($(TARGET),linux-uclibc)
-+ set_target_defaults = $(call default_opts, \
-+ USE_POLL USE_TPROXY USE_DL USE_RT USE_NETFILTER \
-+ USE_CPU_AFFINITY USE_THREAD USE_EPOLL USE_FUTEX USE_LINUX_TPROXY \
-+ USE_ACCEPT4 USE_LINUX_SPLICE USE_PRCTL USE_THREAD_DUMP USE_NS USE_TFO \
-+ USE_GETADDRINFO)
-+endif
-+
- # Solaris 8 and above
- ifeq ($(TARGET),solaris)
- # We also enable getaddrinfo() which works since solaris 8.
PKG_NAME:=https-dns-proxy
PKG_VERSION:=2020-04-09
-PKG_RELEASE=2
+PKG_RELEASE=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/aarond10/https_dns_proxy
CONFLICTS:=https_dns_proxy
endef
+define Package/https-dns-proxy/description
+https_dns_proxy is a light-weight DNS<-->HTTPS, non-caching translation proxy for the RFC 8484 DNS-over-HTTPS standard. It receives regular (UDP) DNS requests and issues them via DoH.
+Please see https://github.com/openwrt/packages/blob/master/net/https-dns-proxy/files/README.md for further information.
+endef
+
define Package/https-dns-proxy/conffiles
/etc/config/https-dns-proxy
endef
# DNS Over HTTPS Proxy (https-dns-proxy)
-A lean RFC8484-compatible (no JSON API support) DNS-over-HTTPS (DoH) proxy service which supports DoH servers ran by AdGuard, CleanBrowsing, Cloudflare, Google, ODVR (nic.cz) and Quad9. Please see the [README](https://github.com/stangri/openwrt_packages/blob/master/https-dns-proxy/files/README.md) for further information. Based on [@aarond10](https://github.com/aarond10)'s [https-dns-proxy](https://github.com/aarond10/https_dns_proxy).
+A lean RFC8484-compatible (no JSON API support) DNS-over-HTTPS (DoH) proxy service which supports DoH servers ran by AdGuard, CleanBrowsing, Cloudflare, Google, ODVR (nic.cz) and Quad9. Based on [@aarond10](https://github.com/aarond10)'s [https-dns-proxy](https://github.com/aarond10/https_dns_proxy).
## Features
## Screenshots (luci-app-https-dns-proxy)
-![screenshot](https://raw.githubusercontent.com/stangri/openwrt_packages/master/screenshots/https-dns-proxy/screenshot01.png "https-dns-proxy screenshot")
+![screenshot](https://cdn.jsdelivr.net/gh/stangri/openwrt_packages@master/screenshots/https-dns-proxy/screenshot01.png "https-dns-proxy screenshot")
## Requirements
|Parameter|Type|Default|Description|
| --- | --- | --- | --- |
|bootstrap_dns|IP Address||The non-encrypted DNS servers to be used to resolve the DoH server name on start.|
-|edns_subnet|Subnet||EDNS Subnet address can be supplied to supported DoH servers to provide local resolution results.|
|listen_addr|IP Address|127.0.0.1|The local IP address to listen to requests.|
|listen_port|port|5053 and up|If this setting is omitted, the service will start the first https-dns-proxy instance on port 5053, second on 5054 and so on.|
|logfile|Full filepath||Full filepath to the file to log the instance events to.|
append_parm "$cfg" 'resolver_url' '-r'
append_parm "$cfg" 'user' '-u' 'nobody'
append_parm "$cfg" 'group' '-g' 'nogroup'
- append_parm "$cfg" 'edns_subnet' '-e'
append_parm "$cfg" 'proxy_server' '-t'
append_parm "$cfg" 'logfile' '-l'
append_bool "$cfg" 'use_http1' '-x'
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=jool
-PKG_VERSION:=4.0.8
+PKG_VERSION:=4.1.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/NICMx/Jool/releases/download/v$(PKG_VERSION)
-PKG_HASH:=73dd65a14feedc8bd0f650d3316bca346474c8420d60b48ca95bd1ca8846f1d4
+PKG_HASH:=7acdb1cd96b5f856fc75a9ee97758bb4dfb4cd7af4af26f88d512b5ac71f01a0
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-only
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
PKG_NAME:=kismet
PKG_VERSION:=2016-07-R1
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_LICENSE:=LGPLv2.1
PKG_CPE_ID:=cpe:/a:kismet:kismet
+--- a/ipc_remote.cc
++++ b/ipc_remote.cc
+@@ -914,7 +914,7 @@ int RootIPCRemote::OpenFDPassSock() {
+ return -1;
+ }
+
+- if (bind(ipc_fd_fd, (const struct sockaddr *) &unixsock, sizeof(unixsock))) {
++ if (::bind(ipc_fd_fd, (const struct sockaddr *) &unixsock, sizeof(unixsock))) {
+ close(ipc_fd_fd);
+ _MSG("Failed to bind socket to pass file descriptors: " +
+ string(strerror(errno)), MSGFLAG_ERROR);
--- a/packetsource_wext.cc
+++ b/packetsource_wext.cc
@@ -405,7 +405,7 @@ void PacketSource_Wext::OpenWpaSupplicant() {
include $(TOPDIR)/rules.mk
PKG_NAME:=knxd
-PKG_VERSION:=0.14.37
+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:=c3fc5777c39e40afb3dfffd74907954c8951d05134d04d44d1acf3362db6ca59
+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.37"
++echo -n "0.14.39"
include $(TOPDIR)/rules.mk
PKG_NAME:=ksmbd-tools
-PKG_VERSION:=3.2.3
+PKG_VERSION:=3.2.6
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://github.com/cifsd-team/cifsd-tools/archive/$(PKG_VERSION)/
-PKG_HASH:=d5e56b38f858736849aefd55cfbffe31ae3d4f39a13689aecb3e896f3b048866
+PKG_SOURCE_URL:=https://codeload.github.com/cifsd-team/ksmbd-tools/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=595029adb899fd8b4c49bea75bce4e3c3466811ef7089b2a55960174e720d919
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
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))
include $(TOPDIR)/rules.mk
PKG_NAME:=miniupnpd
-PKG_VERSION:=2.1.20191006
-PKG_RELEASE:=5
+PKG_VERSION:=2.1.20200510
+PKG_RELEASE:=1
PKG_SOURCE_URL:=https://miniupnp.tuxfamily.org/files
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=218fad7af31f3c22fb4c9db28a55a2a8b5067d41f5b38f52008a057a00d2206d
+PKG_HASH:=821e708f369cc1fb851506441fbc3a1f4a1b5a8bf8e84a9e71758a32f5127e8b
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
PKG_CPE_ID:=cpe:/a:miniupnp_project:miniupnpd
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/version.mk
echo "$(VERSION_NUMBER)" | tr '() ' '_' >$(PKG_BUILD_DIR)/os.openwrt
endef
+CONFIGURE_ARGS = \
+ $(if $(CONFIG_IPV6),--ipv6) \
+ --igd2 \
+ --leasefile \
+ --portinuse \
+ --firewall=iptables
+
TARGET_CFLAGS += $(FPIC) -flto
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
-MAKE_FLAGS += \
- TARGET_OPENWRT=1 TEST=0 LIBS="" \
- CC="$(TARGET_CC) -DIPTABLES_143 -lip4tc -luuid \
- $(if $(CONFIG_IPV6),-lip6tc)" \
- CONFIG_OPTIONS="--portinuse --leasefile --igd2 \
- $(if $(CONFIG_IPV6),--ipv6)" \
- -f Makefile.linux miniupnpd
-
define Package/miniupnpd/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_DIR) $(1)/usr/share/miniupnpd
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/miniupnpd $(1)/usr/sbin/miniupnpd
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/miniupnpd $(1)/usr/sbin/miniupnpd
$(INSTALL_BIN) ./files/miniupnpd.init $(1)/etc/init.d/miniupnpd
$(INSTALL_CONF) ./files/upnpd.config $(1)/etc/config/upnpd
$(INSTALL_DATA) ./files/miniupnpd.hotplug $(1)/etc/hotplug.d/iface/50-miniupnpd
[ "$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:=mosquitto
-PKG_VERSION:=1.6.9
+PKG_VERSION:=1.6.10
PKG_RELEASE:=1
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE.txt
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://mosquitto.org/files/source/
-PKG_HASH:=412979b2db0a0020bd02fa64f0a0de9e7000b84462586e32b67f29bb1f6c1685
+PKG_HASH:=92d1807717f0f6d57d1ac1207ffdb952e8377e916c7b0bb4718f745239774232
include $(INCLUDE_DIR)/package.mk
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
include $(TOPDIR)/rules.mk
PKG_NAME:=nextdns
-PKG_VERSION:=1.6.3
-PKG_RELEASE:=2
+PKG_VERSION:=1.7.0
+PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_SOURCE_URL:=https://github.com/nextdns/nextdns.git
-PKG_MIRROR_HASH:=104ec2ffe21f1f1770bce7686e4f117019dfc64f3f6bfd8f8f06cfc1ff44da6d
+PKG_MIRROR_HASH:=91d812b406abee2a0e733b7cbc06d0d2f04a60bb3694477ac2d2a68fd8b8be5d
PKG_MAINTAINER:=Olivier Poitrey <rs@nextdns.io>
PKG_LICENSE:=MIT
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/nextdns $(1)/usr/sbin/
- $(INSTALL_DIR) $(1)/etc/init.d
- $(INSTALL_BIN) ./files/nextdns.init $(1)/etc/init.d/nextdns
-
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/nextdns.config $(1)/etc/config/nextdns
endef
+define Package/nextdns/postinst
+#!/bin/sh
+if [ -z "$${IPKG_INSTROOT}" ]; then
+ nextdns install
+fi
+endef
+
+define Package/nextdns/prerm
+#!/bin/sh
+if [ -z "$${IPKG_INSTROOT}" ]; then
+ nextdns uninstall
+fi
+endef
+
define Package/nextdns/description
Official NextDNS DNS over HTTPS Proxy.
endef
#list host_config '10.0.1.2/32=abc123'
#list host_config '10.0.3.0/24=def321'
- # Listen on a custom local port so a DNS front (like dnsmasq) can use us as
- # a forwarder.
- option listen '127.0.0.1:5342'
+ # Configure NextDNS cli client to serve DNS to other clients on the network.
+ option setup_router '1'
# Expose LAN clients information in NextDNS analytics.
option report_client_info '1'
+++ /dev/null
-#!/bin/sh /etc/rc.common
-
-# shellcheck disable=SC2034 disable=SC2154
-
-USE_PROCD=1
-
-# starts after network starts
-START=21
-# stops before networking stops
-STOP=89
-
-PROG=/usr/sbin/nextdns
-
-add_dnsmasq_opt() {
- mkdir -p /tmp/dnsmasq.d
- echo "$1" >> /tmp/dnsmasq.d/nextdns.conf
-}
-
-dnsmasq_reload() {
- # Reload dnsmasq is already running.
- if /etc/init.d/dnsmasq running; then
- /etc/init.d/dnsmasq reload
- fi
-}
-
-handle_host_config() {
- host_config_args="$host_config_args -config=$1"
-}
-
-start_service() {
- config_load nextdns
- config_get_bool enabled main enabled "1"
- rm -f /tmp/dnsmasq.d/nextdns.conf
- if [ "$enabled" = "1" ]; then
- config_get config main config ""
- config_list_foreach main host_config handle_host_config
- config_get listen main listen "127.0.0.1:5342"
- config_get_bool report_client_info main report_client_info "1"
- config_get_bool hardened_privacy main hardened_privacy "0"
- config_get_bool log_queries main log_queries "0"
-
- # Add a custom configuration for dnsmasq.
- server=$(echo "$listen" | sed -e 's/:/#/')
- add_dnsmasq_opt "server=$server"
- add_dnsmasq_opt "no-resolv"
- if [ "$report_client_info" = "1" ]; then
- add_dnsmasq_opt "add-mac"
- add_dnsmasq_opt "add-subnet=32,128"
- fi
-
- procd_open_instance
- # shellcheck disable=SC2086
- procd_set_param command "$PROG" run \
- -listen="$listen" \
- $host_config_args \
- -config="$config" \
- -report-client-info="$report_client_info" \
- -hardened-privacy="$hardened_privacy" \
- -log-queries="$log_queries"
- procd_set_param stdout 1
- procd_set_param stderr 1
- procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
- procd_close_instance
- fi
-
- dnsmasq_reload
-}
-
-stop_service() {
- rm -f /tmp/dnsmasq.d/nextdns.conf
- dnsmasq_reload
-}
-
-service_triggers() {
- procd_add_reload_trigger "nextdns"
-}
include $(TOPDIR)/rules.mk
PKG_NAME:=nginx
-PKG_VERSION:=1.17.10
-PKG_RELEASE:=4
+PKG_VERSION:=1.19.0
+PKG_RELEASE:=1
PKG_SOURCE:=nginx-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://nginx.org/download/
-PKG_HASH:=a9aa73f19c352a6b166d78e2a664bb3ef1295bbe6d3cc5aa7404bd4664ab4b83
+PKG_HASH:=44a616171fcd7d7ad7c6af3e6f3ad0879b54db5a5d21be874cd458b5691e36c8
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de> \
Ansuel Smith <ansuelsmth@gmail.com>
PKG_NAME:=nmap
PKG_VERSION:=7.80
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
--- /dev/null
+--- a/nmap_error.cc
++++ b/nmap_error.cc
+@@ -134,6 +134,7 @@
+ #include "NmapOps.h"
+ #include "xml.h"
+
++#include <ctime>
+ #include <errno.h>
+ #if TIME_WITH_SYS_TIME
+ # include <sys/time.h>
+--- a/nping/EchoServer.cc
++++ b/nping/EchoServer.cc
+@@ -137,6 +137,7 @@
+ #include "NpingOps.h"
+ #include "ProbeMode.h"
+ #include <signal.h>
++#include <ctime>
+
+ extern NpingOps o;
+ extern EchoServer es;
--disable-doxygen-html \
--disable-doxygen-doc
+HOST_CPPFLAGS += \
+ -std=gnu++11
+
+CONFIGURE_VARS += \
+ require_gnu_plus_plus_11=yes
+
HOST_LDFLAGS += -Wl,-rpath="$(STAGING_DIR_HOSTPKG)/lib"
TARGET_LDFLAGS += $(if $(CONFIG_USE_GLIBC),-lm)
+++ /dev/null
-Index: ola-0.10.6/configure.ac
-===================================================================
---- ola-0.10.6.orig/configure.ac
-+++ ola-0.10.6/configure.ac
-@@ -72,8 +72,6 @@ AM_CONDITIONAL([SUPPORTS_GNU_PLUS_PLUS_1
- require_gnu_plus_plus_11="no"
- AS_IF([test "x$ac_cv_gnu_plus_plus_11" = xyes],
- [AS_IF([test "x$ac_cv_gnu_plus_plus_98" = xyes],
-- [AS_IF([test "x$enable_unittests" = xno],
-- [CXXFLAGS="$CXXFLAGS -std=gnu++98"],
- [PKG_CHECK_MODULES([CPPUNIT1], [cppunit < 1.14.0],
- [CXXFLAGS="$CXXFLAGS -std=gnu++98"],
- [PKG_CHECK_MODULES([CPPUNIT2], [cppunit >= 1.14.0],
-@@ -81,7 +79,6 @@ AS_IF([test "x$ac_cv_gnu_plus_plus_11" =
- [AC_MSG_WARN([OLA requires std::auto_ptr support.])])
- ])
- ])
-- ])
- ])
- AS_IF([test "x$require_gnu_plus_plus_11" = xyes],
- [CXXFLAGS="$CXXFLAGS -std=gnu++11"])
include $(TOPDIR)/rules.mk
PKG_NAME:=openconnect
-PKG_VERSION:=8.09
+PKG_VERSION:=8.10
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=ftp://ftp.infradead.org/pub/openconnect/
-PKG_HASH:=f39802be4c3a099b211ee4cc3318b3a9a195075deab0b4c1c5880c69340ce9a6
+PKG_HASH:=30e64c6eca4be47bbf1d61f53dc003c6621213738d4ea7a35e5cf1ac2de9bab1
PKG_LICENSE:=LGPL-2.1-or-later
PKG_LICENSE_FILES:=COPYING.LGPL
include $(TOPDIR)/rules.mk
PKG_NAME:=openfortivpn
-PKG_VERSION:=1.13.2
+PKG_VERSION:=1.14.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/adrienverge/openfortivpn/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=998fb2b071cdfe3255c2f953cafc6e1496778f9a71dd5aa560b924a44636df87
+PKG_HASH:=bc62fc6ecaaa6c6f8f2510e14a067a0cb9762158d9460c04555990bba44b50ca
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
PKG_LICENSE:=GPL-3.0-or-later OpenSSL
CATEGORY:=Network
TITLE:=Fortinet SSL VPN client
URL:=https://github.com/adrienverge/openfortivpn
- DEPENDS:=+ppp +libopenssl
+ DEPENDS:=+ppp +libopenssl +resolveip
endef
define Package/openfortivpn/description
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
-define Package/openfortivpn/conffiles
-/etc/config/openfortivpn
-endef
-
define Package/openfortivpn/install
$(INSTALL_DIR) \
$(1)/usr/sbin \
- $(1)/etc/config \
- $(1)/etc/init.d
+ $(1)/lib/netifd/proto \
+ $(1)/etc/hotplug.d/iface
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/openfortivpn $(1)/usr/sbin/
- $(INSTALL_DATA) ./files/openfortivpn.config $(1)/etc/config/openfortivpn
- $(INSTALL_BIN) ./files/openfortivpn.init $(1)/etc/init.d/openfortivpn
+ $(INSTALL_BIN) ./files/openfortivpn-wrapper $(1)/usr/sbin/
+ $(INSTALL_BIN) ./files/openfortivpn.sh $(1)/lib/netifd/proto/
+ $(INSTALL_BIN) ./files/14-openforticlient $(1)/etc/hotplug.d/iface/
endef
$(eval $(call BuildPackage,openfortivpn))
--- /dev/null
+#!/bin/sh
+. /usr/share/libubox/jshn.sh
+[ "$ACTION" != ifup ] && exit
+
+networks=$(uci show network | sed "s/network.\([^.]*\).proto='openfortivpn'/\1/;t;d")
+for i in $networks; do
+ iface=$(uci get "network.${i}.iface_name")
+ iface_success=$?
+ [ $? -eq 0 ] && [ $INTERFACE == "$iface" ] && {
+ logger -t "openfortivpnhotplug" "$ACTION on $INTERFACE to bring up $i"
+ json_load "$(ifstatus $i)"
+ json_get_var autostart autostart
+ [ "$autostart" -eq 0 ] && {
+ logger -t "openfortivpnhotplug" "auto-start was false. bringing $i up"
+ ubus call network.interface up "{ \"interface\" : \"$i\" }"
+ }
+ }
+done
--- /dev/null
+#!/bin/sh
+
+# This script wraps openfortivpn in order to obtain the password
+# file from cmd and to daemonize
+
+# $1 password file
+# $2... are passed to openconnect
+
+test -z "$1" && exit 1
+
+pwfile=$1
+shift
+exec /usr/sbin/openfortivpn "$@" < $pwfile
\ No newline at end of file
+++ /dev/null
-config service 'openfortivpn'
- option 'enabled' '0'
- option 'host' 'vpn-gateway'
- option 'port' '10443'
- option 'set_routes' '0'
- option 'set_dns' '0'
- option 'pppd_use_peerdns' '0'
- option 'username' 'foo'
- option 'password' 'bar'
-config 'certs'
-# example X509 certificate sha256 sum, trust only defined one(s)!
- option 'trusted_cert' 'e46d4aff08ba6914e64daa85bc6112a422fa7ce16631bff0b592a28556f993db'
+++ /dev/null
-#!/bin/sh /etc/rc.common
-
-START=99
-USE_PROCD=1
-BIN=/usr/sbin/openfortivpn
-CONFIG=/var/etc/openfortivpn.config
-
-
-validate_certs_section() {
- uci_load_validate openfortivpn certs "$1" "$2" \
- 'trusted_cert:string'
-}
-
-validate_openfortivpn_section() {
- uci_load_validate openfortivpn service "$1" "$2" \
- 'enabled:uinteger' \
- 'host:string' \
- 'port:uinteger' \
- 'username:string' \
- 'password:string' \
- 'set_routes:uinteger' \
- 'set_dns:uinteger' \
- 'pppd_use_peerdns:uinteger'
-}
-
-setup_certs() {
- [ "$2" = 0 ] || {
- echo "validation failed"
- return 1
- }
-
- [ -n "$trusted_cert" ] || return 0
- echo "trusted-cert = $trusted_cert" >> $CONFIG
-}
-
-setup_config() {
- [ "$2" = 0 ] || {
- echo "validation failed"
- return 1
- }
-
- [ "$enabled" -eq 0 ] && return 1
-
- mkdir -p /var/etc
- echo '# auto-generated config file from /etc/config/openfortivpn' > $CONFIG
-
- [ -n "$host" ] && echo "host = $host" >> $CONFIG
- [ -n "$port" ] && echo "port = $port" >> $CONFIG
- [ -n "$username" ] && echo "username = $username" >> $CONFIG
- [ -n "$password" ] && echo "password = $password" >> $CONFIG
- [ -n "$set_routes" ] && echo "set-routes = $set_routes" >> $CONFIG
- [ -n "$set_dns" ] && echo "set-dns = $set_dns" >> $CONFIG
- [ -n "$pppd_use_peerdns" ] && echo "pppd-use-peerdns = $pppd_use_peerdns" >> $CONFIG
- return 0
-}
-
-start_service() {
- config_load openfortivpn
- validate_openfortivpn_section openfortivpn setup_config || return
- config_foreach validate_certs_section certs setup_certs
-
- procd_open_instance
- procd_set_param stderr 1
- procd_set_param command $BIN -c $CONFIG --use-syslog
- procd_close_instance
-}
-
-service_triggers () {
- procd_add_reload_trigger "openfortivpn"
-
- procd_open_validate
- validate_openfortivpn_section
- validate_certs_section
- procd_close_validate
-}
--- /dev/null
+#!/bin/sh
+. /lib/functions.sh
+. ../netifd-proto.sh
+init_proto "$@"
+
+append_args() {
+ while [ $# -gt 0 ]; do
+ append cmdline "'${1//\'/\'\\\'\'}'"
+ shift
+ done
+}
+
+proto_openfortivpn_init_config() {
+ proto_config_add_string "server"
+ proto_config_add_int "port"
+ proto_config_add_string "iface_name"
+ proto_config_add_string "local_ip"
+ proto_config_add_string "username"
+ proto_config_add_string "password"
+ proto_config_add_string "trusted_cert"
+ proto_config_add_int "set_dns"
+ proto_config_add_int "pppd_use_peerdns"
+ proto_config_add_int "metric"
+ no_device=1
+ available=1
+}
+
+proto_openfortivpn_setup() {
+ local config="$1"
+
+ json_get_vars host server port iface_name local_ip username password trusted_cert set_dns pppd_use_peerdns metric
+
+ ifname="vpn-$config"
+
+ logger -t openfortivpn "$config: initializing..."
+
+ [ -n "$iface_name" ] && {
+ json_load "$(ifstatus $iface_name)"
+ json_get_var iface_device_name device
+ json_get_var iface_device_up up
+ }
+
+ logger -t "openfortivpn" "$config: $iface_name is status $iface_device_up"
+ [ "$iface_device_up" -eq 1 ] || {
+ logger -t "openfortivpn" "$config: $iface_name is not up $iface_device_up"
+ proto_notify_error "$config" "$iface_name is not up $iface_device_up"
+ proto_block_restart "$config"
+ exit 1
+ }
+
+
+ server_ip=$(resolveip -t 10 "$server")
+
+ [ $? -eq 0 ] || {
+ logger -t "openfortivpn" "$config: failed to resolve server ip for $server"
+ sleep 10
+ proto_notify_error "$config" "failed to resolve server ip for $server"
+ proto_setup_failed "$config"
+ exit 1
+ }
+
+ [ -n $iface_name ] && {
+ ping -I $iface_device_name -c 1 -w 10 $server_ip > /dev/null 2>&1 || {
+ logger -t "openfortivpn" "$config: failed to ping $server_ip on $iface_device_name"
+ sleep 10
+ proto_notify_error "$config" "failed to ping $server_ip on $iface_device_name"
+ proto_setup_failed "$config"
+ exit 1
+ }
+ }
+
+ for ip in $(resolveip -t 10 "$server"); do
+ logger -t "openfortivpn" "$config: adding host dependency for $ip on $iface_name at $config"
+ proto_add_host_dependency "$config" "$ip" "$iface_name"
+ done
+
+
+
+ [ -n "$port" ] && port=":$port"
+
+ append_args "$server$port" --pppd-ifname="$ifname" --use-syslog -c /dev/null
+ append_args "--set-dns=$set_dns"
+ append_args "--no-routes"
+ append_args "--pppd-use-peerdns=$pppd_use_peerdns"
+
+ [ -n "$iface_name" ] && {
+ append_args "--ifname=$iface_device_name"
+ }
+
+ [ -n "$trusted_cert" ] && append_args "--trusted-cert=$trusted_cert"
+ [ -n "$username" ] && append_args -u "$username"
+ [ -n "$password" ] && {
+ umask 077
+ mkdir -p /var/etc
+ pwfile="/var/etc/openfortivpn/$config.passwd"
+ echo "$password" > "$pwfile"
+ }
+
+ [ -n "$local_ip" ] || local_ip=192.0.2.1
+ [ -e '/etc/ppp/peers' ] || mkdir -p '/etc/ppp/peers'
+ [ -e '/etc/ppp/peers/openfortivpn' ] || {
+ ln -s -T '/var/etc/openfortivpn/peers' '/etc/ppp/peers/openfortivpn'
+ mkdir -p '/var/etc/openfortivpn/peers'
+ }
+
+ callfile="/var/etc/openfortivpn/peers/$config"
+ echo "115200
+:$local_ip
+noipdefault
+noaccomp
+noauth
+default-asyncmap
+nopcomp
+receive-all
+defaultroute
+nodetach
+ipparam $config
+lcp-max-configure 40
+ip-up-script /lib/netifd/ppp-up
+ip-down-script /lib/netifd/ppp-down
+mru 1354" > $callfile
+ append_args "--pppd-call=openfortivpn/$config"
+
+ proto_export INTERFACE="$ifname"
+ logger -t openfortivpn "$config: executing 'openfortivpn $cmdline'"
+ logger -t openfortivpn "$config: metric is $metric"
+
+ eval "proto_run_command '$config' /usr/sbin/openfortivpn-wrapper '$pwfile' $cmdline"
+
+}
+
+proto_openfortivpn_teardown() {
+ local config="$1"
+
+ pwfile="/var/etc/openfortivpn/$config.passwd"
+ callfile="/var/etc/openfortivpn/peers/$config"
+
+ rm -f $pwfile
+ rm -f $callfile
+ logger -t openfortivpn "$config: bringing down openfortivpn"
+ proto_kill_command "$config" 2
+}
+
+add_protocol openfortivpn
--- /dev/null
+--- a/doc/openfortivpn.1.in
++++ b/doc/openfortivpn.1.in
+@@ -12,6 +12,7 @@ openfortivpn \- Client for PPP+SSL VPN t
+ [\fB\-\-otp\-prompt=\fI<prompt>\fR]
+ [\fB\-\-otp\-delay=\fI<delay>\fR]
+ [\fB\-\-realm=\fI<realm>\fR]
++[\fB\-\-ifname=\fI<interface>\fR]
+ [\fB\-\-set\-routes=<bool>\fR]
+ [\fB\-\-no\-routes\fR]
+ [\fB\-\-set\-dns=<bool>\fR]
+@@ -83,6 +84,9 @@ no wait (this is the default).
+ Connect to the specified authentication realm. Defaults to empty, which
+ is usually what you want.
+ .TP
++\fB\-\-ifname=\fI<interface>\fR
++Bind the connection to the specified network interface.
++.TP
+ \fB\-\-set\-routes=\fI<bool>\fR, \fB\-\-no-routes\fR
+ Set if openfortivpn should try to configure IP routes through the VPN when
+ tunnel is up. If used multiple times, the last one takes priority.
+--- a/src/config.c
++++ b/src/config.c
+@@ -50,6 +50,7 @@ const struct vpn_config invalid_cfg = {
+ .otp_delay = -1,
+ .pinentry = NULL,
+ .realm = {'\0'},
++ .iface_name = {'\0'},
+ .set_routes = -1,
+ .set_dns = -1,
+ .pppd_use_peerdns = -1,
+@@ -490,6 +491,8 @@ void merge_config(struct vpn_config *dst
+ }
+ if (src->realm[0])
+ strcpy(dst->realm, src->realm);
++ if (src->iface_name[0])
++ strcpy(dst->iface_name, src->iface_name);
+ if (src->set_routes != invalid_cfg.set_routes)
+ dst->set_routes = src->set_routes;
+ if (src->set_dns != invalid_cfg.set_dns)
+--- a/src/config.h
++++ b/src/config.h
+@@ -86,6 +86,7 @@ struct vpn_config {
+ char *otp_prompt;
+ unsigned int otp_delay;
+ char *pinentry;
++ char iface_name[FIELD_SIZE + 1];
+ char realm[FIELD_SIZE + 1];
+
+ int set_routes;
+--- a/src/main.c
++++ b/src/main.c
+@@ -51,16 +51,16 @@
+ " resolver and routes directly.\n" \
+ " --pppd-ifname=<string> Set the pppd interface name, if supported by pppd.\n" \
+ " --pppd-ipparam=<string> Provides an extra parameter to the ip-up, ip-pre-up\n" \
+-" and ip-down scripts. See man (8) pppd\n" \
++" and ip-down scripts. See man (8) pppd.\n" \
+ " --pppd-call=<name> Move most pppd options from pppd cmdline to\n" \
+ " /etc/ppp/peers/<name> and invoke pppd with\n" \
+-" 'call <name>'\n"
++" 'call <name>'.\n"
+ #elif HAVE_USR_SBIN_PPP
+ #define PPPD_USAGE \
+ " [--ppp-system=<system>]\n"
+ #define PPPD_HELP \
+ " --ppp-system=<system> Connect to the specified system as defined in\n" \
+-" /etc/ppp/ppp.conf\n"
++" /etc/ppp/ppp.conf.\n"
+ #else
+ #error "Neither HAVE_USR_SBIN_PPPD nor HAVE_USR_SBIN_PPP have been defined."
+ #endif
+@@ -69,7 +69,7 @@
+ #define RESOLVCONF_USAGE \
+ "[--use-resolvconf=<0|1>] "
+ #define RESOLVCONF_HELP \
+-" --use-resolvconf=[01] If possible use resolvconf to update /etc/resolv.conf\n"
++" --use-resolvconf=[01] If possible use resolvconf to update /etc/resolv.conf.\n"
+ #else
+ #define RESOLVCONF_USAGE ""
+ #define RESOLVCONF_HELP ""
+@@ -77,14 +77,14 @@
+
+ #define usage \
+ "Usage: openfortivpn [<host>[:<port>]] [-u <user>] [-p <pass>]\n" \
+-" [--pinentry=<program>]\n" \
+-" [--realm=<realm>] [--otp=<otp>] [--otp-delay=<delay>]\n" \
+-" [--otp-prompt=<prompt>] [--set-routes=<0|1>]\n" \
++" [--otp=<otp>] [--otp-delay=<delay>] [--otp-prompt=<prompt>]\n" \
++" [--pinentry=<program>] [--realm=<realm>]\n" \
++" [--ifname=<ifname>] [--set-routes=<0|1>]\n" \
+ " [--half-internet-routes=<0|1>] [--set-dns=<0|1>]\n" \
+ PPPD_USAGE \
+ " " RESOLVCONF_USAGE "[--ca-file=<file>]\n" \
+ " [--user-cert=<file>] [--user-key=<file>]\n" \
+-" [--trusted-cert=<digest>] [--use-syslog]\n" \
++" [--use-syslog] [--trusted-cert=<digest>]\n" \
+ " [--persistent=<interval>] [-c <file>] [-v|-q]\n" \
+ " openfortivpn --help\n" \
+ " openfortivpn --version\n" \
+@@ -115,10 +115,11 @@ PPPD_USAGE \
+ " -u <user>, --username=<user> VPN account username.\n" \
+ " -p <pass>, --password=<pass> VPN account password.\n" \
+ " -o <otp>, --otp=<otp> One-Time-Password.\n" \
+-" --otp-prompt=<prompt> Search for the OTP prompt starting with this string\n" \
++" --otp-prompt=<prompt> Search for the OTP prompt starting with this string.\n" \
+ " --otp-delay=<delay> Wait <delay> seconds before sending the OTP.\n" \
+-" --pinentry=<program> Use the program to supply a secret instead of asking for it\n" \
++" --pinentry=<program> Use the program to supply a secret instead of asking for it.\n" \
+ " --realm=<realm> Use specified authentication realm.\n" \
++" --ifname=<interface> Bind to interface.\n" \
+ " --set-routes=[01] Set if openfortivpn should configure routes\n" \
+ " when tunnel is up.\n" \
+ " --no-routes Do not configure routes, same as --set-routes=0.\n" \
+@@ -127,7 +128,7 @@ PPPD_USAGE \
+ " --set-dns=[01] Set if openfortivpn should add DNS name servers\n" \
+ " and domain search list in /etc/resolv.conf.\n" \
+ " If installed resolvconf is used for the update.\n" \
+-" --no-dns Do not reconfigure DNS, same as --set-dns=0\n" \
++" --no-dns Do not reconfigure DNS, same as --set-dns=0.\n" \
+ " --ca-file=<file> Use specified PEM-encoded certificate bundle\n" \
+ " instead of system-wide store to verify the gateway\n" \
+ " certificate.\n" \
+@@ -199,6 +200,7 @@ int main(int argc, char **argv)
+ .otp_delay = 0,
+ .pinentry = NULL,
+ .realm = {'\0'},
++ .iface_name = {'\0'},
+ .set_routes = 1,
+ .set_dns = 1,
+ .use_syslog = 0,
+@@ -245,6 +247,7 @@ int main(int argc, char **argv)
+ {"otp", required_argument, NULL, 'o'},
+ {"otp-prompt", required_argument, NULL, 0},
+ {"otp-delay", required_argument, NULL, 0},
++ {"ifname", required_argument, NULL, 0},
+ {"set-routes", required_argument, NULL, 0},
+ {"no-routes", no_argument, &cli_cfg.set_routes, 0},
+ {"half-internet-routes", required_argument, NULL, 0},
+@@ -427,6 +430,12 @@ int main(int argc, char **argv)
+ break;
+ }
+ if (strcmp(long_options[option_index].name,
++ "ifname") == 0) {
++ strncpy(cli_cfg.iface_name, optarg, FIELD_SIZE);
++ cli_cfg.iface_name[FIELD_SIZE] = '\0';
++ break;
++ }
++ if (strcmp(long_options[option_index].name,
+ "set-routes") == 0) {
+ int set_routes = strtob(optarg);
+
+--- a/src/tunnel.c
++++ b/src/tunnel.c
+@@ -523,12 +523,28 @@ static int tcp_connect(struct tunnel *tu
+ int ret, handle;
+ struct sockaddr_in server;
+ char *env_proxy;
++ const int iface_len = strnlen(tunnel->config->iface_name, IFNAMSIZ);
+
+ handle = socket(AF_INET, SOCK_STREAM, 0);
++
+ if (handle == -1) {
+ log_error("socket: %s\n", strerror(errno));
+ goto err_socket;
+ }
++ if (iface_len == IFNAMSIZ) {
++ log_error("socket: Too long iface name");
++ goto err_socket;
++ }
++ if (iface_len > 0) {
++ ret = setsockopt(handle, SOL_SOCKET, SO_BINDTODEVICE,
++ tunnel->config->iface_name, iface_len);
++ if (ret) {
++ log_error("socket: setting interface name failed with error: %d",
++ errno);
++ goto err_socket;
++ }
++ }
++
+ env_proxy = getenv("https_proxy");
+ if (env_proxy == NULL)
+ env_proxy = getenv("HTTPS_PROXY");
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:=pdns-recursor
-PKG_VERSION:=4.2.1
-PKG_RELEASE:=2
+PKG_VERSION:=4.2.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/
-PKG_HASH:=8d8c3235cc5281f0fc51946129f22758778f4c50bfda095d5856feb4c756891f
+PKG_HASH:=9502de8ab7dde3fe5ecb3dea0f6dd8f9c96ca5e09b06f3d58d2f123abf6f7204
PKG_MAINTAINER:=James Taylor <james@jtaylor.id.au>
PKG_LICENCE:=GPL-2.0-only
include $(TOPDIR)/rules.mk
PKG_NAME:=pdns
-PKG_VERSION:=4.2.1
-PKG_RELEASE:=3
+PKG_VERSION:=4.2.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/
-PKG_HASH:=f65019986b8fcbb1c6fffebcded04b2b397b84395830f4c63e8d119bcfa1aa28
+PKG_HASH:=3a1b524b9cecd1a38fdc2e71082d9f52471d22735113a890016ff48baee16b15
PKG_MAINTAINER:=James Taylor <james@jtaylor.id.au>
PKG_LICENCE:=GPL-2.0-only
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>
include $(TOPDIR)/rules.mk
PKG_NAME:=samba
-PKG_VERSION:=4.11.6
-PKG_RELEASE:=1
+PKG_VERSION:=4.12.3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= \
http://www.nic.funet.fi/index/samba/pub/samba/stable/ \
http://samba.mirror.bit.nl/samba/ftp/stable/ \
https://download.samba.org/pub/samba/stable/
-PKG_HASH:=91438f4d7b71f673421435fa7f26b03b613f214139636ce50af35bc2ff09ef38
+PKG_HASH:=3fadbca4504937820d0d8a34e500a1efdcc35e0c554f05bd0a844916ae528727
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-3.0-only
PKG_CPE_ID:=cpe:/a:samba:samba
# samba4=(asn1_compile,compile_et) rpcsvc-proto=(rpcgen)
-HOST_BUILD_DEPENDS:=python3/host perl/host rpcsvc-proto/host
+HOST_BUILD_DEPENDS:=python3/host rpcsvc-proto/host perl/host perl-parse-yapp/host
PKG_BUILD_DEPENDS:=samba4/host libtasn1/host
PKG_CONFIG_DEPENDS:= \
include $(INCLUDE_DIR)/version.mk
include ../../lang/python/python3-host.mk
include ../../lang/python/python3-package.mk
+include ../../lang/perl/perlver.mk
define Package/samba4/Default
SECTION:=net
--disable-cephfs \
--disable-fault-handling \
--disable-glusterfs \
+ --disable-spotlight \
--enable-fhs \
--without-automount \
--without-iconv \
--disable-cephfs \
--disable-fault-handling \
--disable-glusterfs \
+ --disable-spotlight \
--disable-rpath \
--disable-rpath-install \
--disable-rpath-private-install \
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
-# 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
endif
SAMBA4_PDB_MODULES :=pdb_smbpasswd,pdb_tdbsam,
-SAMBA4_AUTH_MODULES :=auth_builtin,auth_sam,auth_unix,auth_script,
+SAMBA4_AUTH_MODULES :=auth_builtin,auth_sam,auth_unix,
SAMBA4_VFS_MODULES :=vfs_default,
-SAMBA4_VFS_MODULES_SHARED :=
+SAMBA4_VFS_MODULES_SHARED :=auth_script,
ifeq ($(CONFIG_SAMBA4_SERVER_VFS),y)
SAMBA4_VFS_MODULES_SHARED :=$(SAMBA4_VFS_MODULES_SHARED)vfs_fruit,vfs_shadow_copy2,vfs_recycle,vfs_fake_perms,vfs_readonly,vfs_cap,vfs_offline,vfs_crossrename,vfs_catia,vfs_streams_xattr,vfs_xattr_tdb,vfs_default_quota,
ifeq ($(CONFIG_PACKAGE_kmod-fs-btrfs),y)
export COMPILE_ET=$(STAGING_DIR_HOSTPKG)/bin/compile_et_samba
export ASN1_COMPILE=$(STAGING_DIR_HOSTPKG)/bin/asn1_compile_samba
+# make sure we use the hostpkg build toolset and we need to find host 'yapp'
+HOST_CONFIGURE_VARS+= \
+ PATH="$(STAGING_DIR_HOSTPKG)/bin:$(STAGING_DIR_HOSTPKG)/usr/bin:$(PATH)"
+CONFIGURE_VARS += \
+ 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
+ $(SED) 's,gnutls_version =.*,gnutls_version = gnutls_min_required_version,g' $(HOST_BUILD_DIR)/wscript_configure_system_gnutls
endef
define Host/Compile
(cd $(HOST_BUILD_DIR); \
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
$(call Build/Configure/Default)
endef
printf "\n######### Dynamic written config options #########\n"
if [ "$DISABLE_NETBIOS" -eq 1 ] || [ ! -x /usr/sbin/nmbd ]; then
printf "\tdisable netbios = yes\n"
+ # note: samba opens port 139 even if netbios is disabled via option above, so adjust listening ports
+ printf "\tsmb ports = 445\n"
fi
if [ "$DISABLE_ASYNC_IO" -eq 1 ]; then
static bool test_enum_r_passwd(struct torture_context *tctx,
struct passwd **pwd_array_p,
size_t *num_pwd_p)
-@@ -381,6 +381,7 @@ static bool test_enum_r_passwd(struct torture_context *tctx,
+@@ -383,6 +383,7 @@ static bool test_enum_r_passwd(struct torture_context *tctx,
return true;
}
static bool torture_assert_passwd_equal(struct torture_context *tctx,
const struct passwd *p1,
-@@ -432,7 +433,7 @@ static bool test_passwd_r(struct torture_context *tctx)
+@@ -434,7 +435,7 @@ static bool test_passwd_r(struct torture_context *tctx)
struct passwd *pwd, pwd1, pwd2;
size_t num_pwd;
"failed to enumerate passwd");
for (i=0; i < num_pwd; i++) {
-@@ -460,7 +461,7 @@ static bool test_passwd_r_cross(struct torture_context *tctx)
+@@ -462,7 +463,7 @@ static bool test_passwd_r_cross(struct torture_context *tctx)
struct passwd *pwd, pwd1, pwd2, pwd3, pwd4;
size_t num_pwd;
"failed to enumerate passwd");
for (i=0; i < num_pwd; i++) {
-@@ -531,6 +532,7 @@ static bool test_enum_group(struct torture_context *tctx,
+@@ -533,6 +534,7 @@ static bool test_enum_group(struct torture_context *tctx,
return true;
}
static bool test_enum_r_group(struct torture_context *tctx,
struct group **grp_array_p,
size_t *num_grp_p)
-@@ -579,6 +581,7 @@ static bool test_enum_r_group(struct torture_context *tctx,
+@@ -583,6 +585,7 @@ static bool test_enum_r_group(struct torture_context *tctx,
return true;
}
static bool torture_assert_group_equal(struct torture_context *tctx,
const struct group *g1,
-@@ -635,7 +638,7 @@ static bool test_group_r(struct torture_context *tctx)
+@@ -639,7 +642,7 @@ static bool test_group_r(struct torture_context *tctx)
struct group *grp, grp1, grp2;
size_t num_grp;
"failed to enumerate group");
for (i=0; i < num_grp; i++) {
-@@ -663,7 +666,7 @@ static bool test_group_r_cross(struct torture_context *tctx)
+@@ -667,7 +670,7 @@ static bool test_group_r_cross(struct torture_context *tctx)
struct group *grp, grp1, grp2, grp3, grp4;
size_t num_grp;
index 303d0ae..a2bfc40 100644
--- a/third_party/cmocka/cmocka.h
+++ b/third_party/cmocka/cmocka.h
-@@ -110,7 +110,7 @@
+@@ -111,7 +111,7 @@
((LargestIntegralType)(value))
/* Smallest integral type capable of holding a pointer. */
# if defined(_WIN32)
/* WIN32 is an ILP32 platform */
typedef unsigned int uintptr_t;
-@@ -136,6 +136,8 @@
+@@ -137,6 +137,8 @@
# define _UINTPTR_T
# define _UINTPTR_T_DEFINED
+++ /dev/null
-diff --git a/source4/dsdb/samdb/ldb_modules/count_attrs.c b/source4/dsdb/samdb/ldb_modules/count_attrs.c
-index b0d1b22..29f1b94 100644
---- a/source4/dsdb/samdb/ldb_modules/count_attrs.c
-+++ b/source4/dsdb/samdb/ldb_modules/count_attrs.c
-@@ -222,7 +222,7 @@ static const char **get_sorted_attrs(TALLOC_CTX *mem_ctx,
- attrs[i] = a;
- }
-
-- qsort(attrs, n_attrs, sizeof(char *), (__compar_fn_t)strcasecmp_ptr);
-+ qsort(attrs, n_attrs, sizeof(char *), (int (*)(const void *, const void *))strcasecmp_ptr);
- return attrs;
- }
-
-@@ -313,7 +313,7 @@ static int count_attrs_search_callback(struct ldb_request *req,
- }
-
- qsort(found_attrs, msg->num_elements, sizeof(char *),
-- (__compar_fn_t)strcasecmp_ptr);
-+ (int (*)(const void *, const void *))strcasecmp_ptr);
-
-
- /* find and report duplicates */
---- a/source3/lib/messages.c
-+++ b/source3/lib/messages.c
-@@ -518,7 +518,7 @@ static NTSTATUS messaging_init_internal(
+--- a/source3/lib/messages.c 2020-02-28 09:59:35.000000000 +0100
++++ b/source3/lib/messages.c 2020-05-19 13:35:11.814566657 +0200
+@@ -507,7 +507,7 @@ static NTSTATUS messaging_init_internal(
return NT_STATUS_ACCESS_DENIED;
}
if (priv_path == NULL) {
return NT_STATUS_NO_MEMORY;
}
-@@ -662,7 +662,7 @@ NTSTATUS messaging_reinit(struct messagi
-
- msg_ctx->msg_dgm_ref = messaging_dgm_ref(
- msg_ctx, msg_ctx->event_ctx, &msg_ctx->id.unique_id,
-- private_path("msg.sock"), lck_path,
-+ lock_path(talloc_tos(), "msg.sock"), lck_path,
- messaging_recv_cb, msg_ctx, &ret);
-
- if (msg_ctx->msg_dgm_ref == NULL) {
+@@ -670,7 +670,7 @@ NTSTATUS messaging_reinit(struct messagi
+ msg_ctx->per_process_talloc_ctx,
+ msg_ctx->event_ctx,
+ &msg_ctx->id.unique_id,
+- private_path("msg.sock"),
++ lock_path(talloc_tos(), "msg.sock"),
+ lck_path,
+ messaging_recv_cb,
+ msg_ctx,
--- /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/source3/modules/vfs_fruit.c 2019-07-09
-+++ b/source3/modules/vfs_fruit.c 2019-07-09
-@@ -6995,12 +6995,12 @@ static bool fruit_tmsize_do_dirent(vfs_h
- return true;
- }
-
-- if (bandsize > SIZE_MAX/nbands) {
-- DBG_ERR("tmsize overflow: bandsize [%zu] nbands [%zu]\n",
-- bandsize, nbands);
-- return false;
-- }
-- tm_size = bandsize * nbands;
-+ // if (bandsize > SIZE_MAX/nbands) {
-+ // DBG_ERR("tmsize overflow: bandsize [%zu] nbands [%zu]\n",
-+ // bandsize, nbands);
-+ // return false;
-+ // }
-+ tm_size = (off_t)bandsize * (off_t)nbands;
-
- if (state->total_size + tm_size < state->total_size) {
- DBG_ERR("tmsize overflow: bandsize [%zu] nbands [%zu]\n",
--- /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:=simple-adblock
PKG_VERSION:=1.8.3
-PKG_RELEASE:=3
+PKG_RELEASE:=13
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
PKG_LICENSE:=GPL-3.0-or-later
SECTION:=net
CATEGORY:=Network
TITLE:=Simple AdBlock Service
+ DEPENDS:=+jshn +jsonfilter
PKGARCH:=all
endef
define Package/simple-adblock/description
-This service provides DNSMASQ or Unbound based ad blocking.
-Please see the project's README at github for further information.
+Simple adblock script to block ad or abuse/malware domains with DNSMASQ or Unbound.
+Script supports local/remote list of domains and hosts-files for both black- and white-listing.
+Please see https://github.com/openwrt/packages/blob/master/net/simple-adblock/files/README.md for more information.
endef
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/simple-adblock.init $(1)/etc/init.d/simple-adblock
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/simple-adblock.conf $(1)/etc/config/simple-adblock
+ $(INSTALL_DIR) $(1)/tmp
+ $(INSTALL_CONF) ./files/simple-adblock.conf.update $(1)/tmp/simple-adblock.conf.update
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
$(INSTALL_BIN) ./files/simple-adblock.hotplug $(1)/etc/hotplug.d/iface/80-simple-adblock
endef
#!/bin/sh
# check if we are on real system
if [ -z "$${IPKG_INSTROOT}" ]; then
+ sed -f /tmp/simple-adblock.conf.update -i /etc/config/simple-adblock || true
/etc/init.d/simple-adblock enable
fi
exit 0
## Features
-- Super-fast due to the nature of supported block lists and parallel downloading/processing of the blacklists.
+- Super-fast due to the nature of supported block-lists and parallel downloading/processing of the block-lists.
- Supports hosts files and domains lists for blocking.
- Everything is configurable from Web UI.
-- Allows you to easily add your own domains to whitelist or blacklist.
-- Allows you to easily add URLs to your own blocked hosts or domains lists to block/whitelist (just put whitelisted domains one per line in the file you're linking).
+- Allows you to easily add your own domains to allow-list or block-list.
+- Allows you to easily add URLs to your own blocked hosts or domains lists to allow/block-list (just put allowed domains one per line in the file you're linking).
- Supports multiple modes of AdBlocking implementations with DNSMASQ and Unbound.
-- Doesn't stay in memory -- creates the list of blocked domains and then uses DNSMASQ/Unbound and firewall rules to serve NXDOMAIN or 127.0.0.1 reply or to reject access (depending on settings) for blocked domains.
+- Doesn't stay in memory -- creates the list of blocked domains and then uses DNSMASQ/Unbound and firewall rules to serve NXDOMAIN or 127.0.0.1 reply or to reject access (depending on settings) for blocked domains.
- As some of the default lists are using https, reliably works with either wget/libopenssl, uclient-fetch/libustream-mbedtls or curl.
- Very lightweight and easily hackable, the whole script is just one ```/etc/init.d/simple-adblock``` file.
- Retains the downloaded/sorted AdBlocking list on service stop and reuses it on service start (use ```dl``` command if you want to force re-download of the list).
- Blocks ads inside browsers with [DNS-over-HTTPS proxy](https://en.wikipedia.org/wiki/DNS_over_HTTPS) built-in, like [Mozilla Firefox](https://support.mozilla.org/en-US/kb/firefox-dns-over-https#w_about-dns-over-https) or [Google Chrome/Chromium](https://blog.chromium.org/2019/09/experimenting-with-same-provider-dns.html) -- with the ```dnsmasq.ipset``` option.
- Proudly made in Canada, using locally-sourced electrons.
-If you want a more robust AdBlocking, supporting free memory detection and complex block lists, supporting IDN, check out [net/adblock](https://github.com/openwrt/packages/tree/master/net/adblock/files).
+If you want a more robust AdBlocking, supporting free memory detection and complex block-lists, supporting IDN, check out ```net/adblock``` on [GitHub](https://github.com/openwrt/packages/tree/master/net/adblock/files)/[jsDelivr](https://cdn.jsdelivr.net/gh/openwrt/packages@master/net/adblock/files/README.md).
## Screenshots (luci-app-simple-adblock)
Service Status
-![screenshot](https://raw.githubusercontent.com/stangri/openwrt_packages/master/screenshots/simple-adblock/screenshot08-status.png "Service Status")
+![screenshot](https://cdn.jsdelivr.net/gh/stangri/openwrt_packages@master/screenshots/simple-adblock/screenshot08-status.png "Service Status")
Configuration - Basic Configuration
-![screenshot](https://raw.githubusercontent.com/stangri/openwrt_packages/master/screenshots/simple-adblock/screenshot08-config-basic.png "Configuration - Basic Configuration")
+![screenshot](https://cdn.jsdelivr.net/gh/stangri/openwrt_packages@master/screenshots/simple-adblock/screenshot08-config-basic.png "Configuration - Basic Configuration")
Configuration - Advanced Configuration
-![screenshot](https://raw.githubusercontent.com/stangri/openwrt_packages/master/screenshots/simple-adblock/screenshot08-config-advanced.png "Configuration - Advanced Configuration")
+![screenshot](https://cdn.jsdelivr.net/gh/stangri/openwrt_packages@master/screenshots/simple-adblock/screenshot08-config-advanced.png "Configuration - Advanced Configuration")
-Whitelist and Blocklist Management
+Allowed and Blocked Lists Management
-![screenshot](https://raw.githubusercontent.com/stangri/openwrt_packages/master/screenshots/simple-adblock/screenshot08-lists.png "Whitelist and Blocklist Management")
+![screenshot](https://cdn.jsdelivr.net/gh/stangri/openwrt_packages@master/screenshots/simple-adblock/screenshot09-lists.png "Allow-list and Block-list Management")
## Requirements
-This service requires the following packages to be installed on your router: ```dnsmasq``` or ```dnsmasq-full``` or ```unbound``` and either ```ca-certificates```, ```wget``` and ```libopenssl``` (for OpenWrt 15.05.1) or ```uclient-fetch``` and ```libustream-mbedtls``` (for LEDE Project and OpenWrt 18.06.xx or newer). Additionally installation of ```coreutils-sort``` is highly recommended as it speeds up blocklist processing.
+To download the hosts/domains files this service requires one of the following packages to be installed on your device: ```wget``` or ```uclient-fetch``` or ```curl```. If you want to download lists over HTTPS (recommended), you also need to install support for HTTPS/SSL downloads on your device. For most devices starting with OpenWrt 15.05.1 and up the following commands will install the minimal requirements:
-To satisfy the requirements for connect to your router via ssh and run the following commands:
+```sh
+opkg update; if ubus -S call system board | grep -q '15.05'; then
+opkg install ca-certificates wget libopenssl; else
+opkg install uclient-fetch libustream-mbedtls ca-bundle ca-certificates; fi
+```
-### How to use DNSMASQ ipset
+### Requirements for file:// Scheme
-The ```dnsmasq.ipset``` option requires you to install ```ipset``` and ```dnsmasq-full``` instead of the ```dnsmasq```. To do that, connect to your router via ssh and run the following command:
+If you want to include some local files as the allow-lists or block-lists, you need to install ```curl```:
```sh
-opkg update; opkg remove dnsmasq; opkg install dnsmasq-full ipset;
+opkg update; opkg install curl;
```
-### OpenWrt 15.05.1 Requirements
+### Requirements for DNS Resolver
-```sh
-opkg update; opkg install ca-certificates wget libopenssl coreutils-sort dnsmasq
-```
+In order to actually block the ads, this service requires one of the following DNS resolvers to be installed on your router: ```dnsmasq``` or ```dnsmasq-full``` or ```unbound```. The ```dnsmasq``` package is usually included in the default OpenWrt installation.
-### LEDE Project 17.01.x and OpenWrt 18.xx (or newer) Requirements
+If you want to use the [```dnsmasq.ipset``` option](#dns-resolution-option) you need to install ```ipset``` and ```dnsmasq-full``` instead of the ```dnsmasq```. To do that, connect to your router via ssh and run the following command:
```sh
-opkg update; opkg install uclient-fetch libustream-mbedtls coreutils-sort dnsmasq
+opkg update; cd /tmp/; opkg download dnsmasq-full; opkg install ipset;
+opkg remove dnsmasq; opkg install /tmp/dnsmasq-full*; rm -f /tmp/dnsmasq-full*;
```
-### IPv6 Support
+### Requirements for IPv6 Support
For IPv6 support additionally install ```ip6tables-mod-nat``` and ```kmod-ipt-nat6``` packages from Web UI or run the following in the command line:
```sh
-opkg update; opkg install ip6tables-mod-nat kmod-ipt-nat6
+opkg update; opkg install ip6tables-mod-nat kmod-ipt-nat6;
```
-### Speed Up Blocklist Processing
+### Requirements for Faster Block-list Processing
-The ```coreutils-sort``` is an optional, but recommended package as it speeds up sorting and removing duplicates from the merged list dramatically. If opkg complains that it can't install ```coreutils-sort``` because /usr/bin/sort is already provided by busybox, you can run ```opkg --force-overwrite install coreutils-sort```.
+The ```coreutils-sort``` is an optional, but recommended package as it speeds up sorting and removing duplicates from the merged list dramatically. If opkg complains that it can't install ```coreutils-sort``` because /usr/bin/sort is already provided by busybox, you can run the following command:
+
+```sh
+opkg --force-overwrite install coreutils-sort
+```
## Unmet Dependencies
opkg update; opkg install simple-adblock luci-app-simple-adblock
```
-If ```simple-adblock``` and ```luci-app-simple-adblock``` packages are not found in the official feed/repo for your version of OpenWrt/LEDE Project, you will need to [add a custom repo to your router](https://github.com/stangri/openwrt_packages/blob/master/README.md#on-your-router) first.
+If ```simple-adblock``` and ```luci-app-simple-adblock``` packages are not found in the official feed/repo for your version of OpenWrt/LEDE Project, you will need to add a custom repo to your router following instructions on [GitHub](https://github.com/stangri/openwrt_packages/blob/master/README.md#on-your-router)/[jsDelivr](https://cdn.jsdelivr.net/gh/stangri/openwrt_packages@master/README.md#on-your-router) first.
## Default Settings
-Default configuration has service disabled (use Web UI to enable/start service or run ```uci set simple-adblock.config.enabled=1; uci commit simple-adblock;```) and selected ad/malware lists suitable for routers with 64Mb RAM.
+Default configuration has the service disabled (use Web UI to enable/start service or run ```uci set simple-adblock.config.enabled=1; uci commit simple-adblock;```) and selected ad/malware lists suitable for routers with 64Mb RAM.
If your router has less then 64Mb RAM, edit the configuration file, located at ```/etc/config/simple-adblock```. The configuration file has lists in ascending order starting with smallest ones and each list has a preceding comment indicating its size, comment out or delete the lists you don't want or your router can't handle.
- [hosts files](https://en.wikipedia.org/wiki/Hosts_(file)) (127.0.0.1 or 0.0.0.0 followed by space and domain name per line) to be blocked.
- domains lists (one domain name per line) to be blocked.
-- domains lists (one domain name per line) to be whitelisted. It is useful if you want to run ```simple-adblock``` on multiple routers and maintain one centralized whitelist which you can publish on a web-server.
+- domains lists (one domain name per line) to be allowed. It is useful if you want to run ```simple-adblock``` on multiple routers and maintain one centralized allow-list which you can publish on a web-server.
-Please note that these lists **must** include either ```http://``` or ```https://``` (or, if ```curl``` is installed the ```file://```) prefix. Some of the top block lists (both hosts files and domains lists) suitable for routers with at least 8MB RAM are used in the default ```simple-adblock``` installation.
+Please note that these lists **must** include either ```http://``` or ```https://``` (or, if ```curl``` is installed the ```file://```) prefix. Some of the top block-lists (both hosts files and domains lists) suitable for routers with at least 8MB RAM are used in the default ```simple-adblock``` installation.
-You can also use Web UI to add individual domains to be blocked or whitelisted.
+You can also use Web UI to add individual domains to be blocked or allowed.
If you want to use CLI to customize ```simple-adblock``` config, refer to the [Customization Settings](#customization-settings) section.
|Advanced|debug|boolean|0|If enabled, output service full debug to ```/tmp/simple-adblock.log```. Please note that the debug file may clog up the router's RAM on some devices. Use with caution.|
|Advanced|allow_non_ascii|boolean|0|Enable support for non-ASCII characters in the final AdBlocking file. Only enable if your target service supports non-ASCII characters. If you enable this on the system where DNS resolver doesn't support non-ASCII characters, it will crash. Use with caution.|
|Advanced|compressed_cache|boolean|0|Create compressed cache of the AdBlocking file in router's persistent memory. Only recommended to be used on routers with large ROM and/or routers with metered/flaky internet connection.|
-||whitelist_domain|list/string||List of white-listed domains.|
-||whitelist_domains_url|list/string||List of URL(s) to text files containing white-listed domains. **Must** include either ```http://``` or ```https://``` (or, if ```curl``` is installed the ```file://```) prefix. Useful if you want to keep/publish a single white-list for multiple routers.|
-||blacklist_domains_url|list/string||List of URL(s) to text files containing black-listed domains. **Must** include either ```http://``` or ```https://``` (or, if ```curl``` is installed the ```file://```) prefix.|
-||blacklist_hosts_url|list/string||List of URL(s) to [hosts files](https://en.wikipedia.org/wiki/Hosts_(file)) containing black-listed domains. **Must** include either ```http://``` or ```https://``` (or, if ```curl``` is installed the ```file://```) prefix.|
+||allowed_domain|list/string||List of allowed domains.|
+||allowed_domains_url|list/string||List of URL(s) to text files containing allowed domains. **Must** include either ```http://``` or ```https://``` (or, if ```curl``` is installed the ```file://```) prefix. Useful if you want to keep/publish a single allow-list for multiple routers.|
+||blocked_domain|list/string||List of blocked domains.|
+||blocked_domains_url|list/string||List of URL(s) to text files containing blocked domains. **Must** include either ```http://``` or ```https://``` (or, if ```curl``` is installed the ```file://```) prefix.|
+||blocked_hosts_url|list/string||List of URL(s) to [hosts files](https://en.wikipedia.org/wiki/Hosts_(file)) containing block-listed domains. **Must** include either ```http://``` or ```https://``` (or, if ```curl``` is installed the ```file://```) prefix.|
### DNS Resolution Option
## How Does It Work
-This service downloads (and processes in the background, removing comments and other useless data) lists of hosts and domains to be blocked, combines those lists into one big block list, removes duplicates and sorts it and then removes your whitelisted domains from the block list before converting to to DNSMASQ/Unbound-compatible file and restarting DNSMASQ/Unbound if needed. The result of the process is that DNSMASQ/Unbound return NXDOMAIN or 127.0.0.1 (depending on settings) for the blocked domains.
+This service downloads (and processes in the background, removing comments and other useless data) lists of hosts and domains to be blocked, combines those lists into one big block-list, removes duplicates and sorts it and then removes your allowed domains from the block-list before converting to to DNSMASQ/Unbound-compatible file and restarting DNSMASQ/Unbound if needed. The result of the process is that DNSMASQ/Unbound return NXDOMAIN or 127.0.0.1 (depending on settings) for the blocked domains.
-If you specify ```google.com``` as a domain to be whitelisted, you will have access to ```google.com```, ```www.google.com```, ```analytics.google.com```, but not fake domains like ```email-google.com``` or ```drive.google.com.verify.signin.normandeassociation.com``` for example. If you only want to allow ```www.google.com``` while blocking all other ```google.com``` subdomains, just specify ```www.google.com``` as domain to be whitelisted.
+If you specify ```google.com``` as a domain to be allowed, you will have access to ```google.com```, ```www.google.com```, ```analytics.google.com```, but not fake domains like ```email-google.com``` or ```drive.google.com.verify.signin.normandeassociation.com``` for example. If you only want to allow ```www.google.com``` while blocking all other ```google.com``` subdomains, just specify ```www.google.com``` as domain to be allowed.
-In general, whatever domain is specified to be whitelisted; it, along with with its subdomains will be whitelisted, but not any fake domains containing it.
+In general, whatever domain is specified to be allowed; it, along with with its subdomains will be allowed, but not any fake domains containing it.
## How It Does Not Work
option parallel_downloads '1'
option debug '0'
option compressed_cache '0'
- list whitelist_domain 'raw.githubusercontent.com'
+ list allowed_domain 'cdn.jsdelivr.net'
# Thu Oct 3 17:54:04 PDT 2019
# File size: 4.0K
- list blacklist_domains_url 'https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt'
-
-# File size: 4.0K
-# list blacklist_domains_url 'https://www.dshield.org/feeds/suspiciousdomains_High.txt'
+ list blocked_domains_url 'https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt'
# File size: 12.0K
- list blacklist_domains_url 'https://ssl.bblck.me/blacklists/domain-list.txt'
+ list blocked_domains_url 'https://ssl.bblck.me/blacklists/domain-list.txt'
# File size: 44.0K
- list blacklist_domains_url 'https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt'
+ list blocked_domains_url 'https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt'
# File size: 44.0K
- list blacklist_domains_url 'https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt'
-
-# File size: 60.0K
-# use just one of the www.dshield.org blocklists
- list blacklist_domains_url 'https://www.dshield.org/feeds/suspiciousdomains_Medium.txt'
-
-# File size: 64.0K
-# use just one of the www.dshield.org blocklists
-# list blacklist_domains_url 'https://www.dshield.org/feeds/suspiciousdomains_Low.txt'
+ list blocked_domains_url 'https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt'
# File size: 584.0K
-# blocklist too big for most routers
-# list blacklist_domains_url 'https://mirror1.malwaredomains.com/files/justdomains'
+# block-list too big for most routers
+# list blocked_domains_url 'https://mirror1.malwaredomains.com/files/justdomains'
# File size: 16.0K
- list blacklist_hosts_url 'https://adaway.org/hosts.txt'
+ list blocked_hosts_url 'https://adaway.org/hosts.txt'
# File size: 20.0K
- list blacklist_hosts_url 'https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/hosts.txt'
+ list blocked_hosts_url 'https://cdn.jsdelivr.net/gh/hoshsadiq/adblock-nocoin-list@master/hosts.txt'
# File size: 36.0K
- list blacklist_hosts_url 'https://www.malwaredomainlist.com/hostslist/hosts.txt'
+ list blocked_hosts_url 'https://www.malwaredomainlist.com/hostslist/hosts.txt'
# File size: 80.0K
- list blacklist_hosts_url 'https://pgl.yoyo.org/as/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext'
+ list blocked_hosts_url 'https://pgl.yoyo.org/as/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext'
# File size: 388.0K
-# blocklist may be too big for some routers
-# blocklist may block some video-streaming content
-# list blacklist_hosts_url 'https://raw.githubusercontent.com/jawz101/MobileAdTrackers/master/hosts'
+# block-list may be too big for some routers
+# block-list may block some video-streaming content
+# list blocked_hosts_url 'https://cdn.jsdelivr.net/gh/jawz101/MobileAdTrackers@master/hosts'
# File size: 424.0K
-# blocklist may be too big for some routers
- list blacklist_hosts_url 'http://winhelp2002.mvps.org/hosts.txt'
+# block-list may be too big for some routers
+ list blocked_hosts_url 'http://winhelp2002.mvps.org/hosts.txt'
# File size: 432.0K
-# blocklist may be too big for some routers
- list blacklist_hosts_url 'https://someonewhocares.org/hosts/hosts'
+# block-list may be too big for some routers
+ list blocked_hosts_url 'https://someonewhocares.org/hosts/hosts'
# File size: 624.0K
-# blocklist too big for most routers
-# list blacklist_hosts_url 'http://sysctl.org/cameleon/hosts'
+# block-list too big for most routers
+# list blocked_hosts_url 'http://sysctl.org/cameleon/hosts'
# File size: 1.6M
-# blocklist too big for most routers
-# list blacklist_hosts_url 'https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts'
+# block-list too big for most routers
+# list blocked_hosts_url 'https://cdn.jsdelivr.net/gh/StevenBlack/hosts@master/hosts'
# File size: 3.1M
-# blocklist too big for most routers
-# list blacklist_hosts_url 'https://hostsfile.mine.nu/Hosts'
+# block-list too big for most routers
+# list blocked_hosts_url 'https://hostsfile.mine.nu/Hosts'
# File size: 23.0M
-# blocklist too big for most routers
-# list blacklist_hosts_url 'https://dbl.oisd.nl/'
+# block-list too big for most routers
+# list blocked_hosts_url 'https://hosts.oisd.nl/'
# site was down on last check
-# list blacklist_domains_url 'http://support.it-mate.co.uk/downloads/hosts.txt'
+# list blocked_domains_url 'http://support.it-mate.co.uk/downloads/hosts.txt'
--- /dev/null
+s|whitelist_domains_url|allowed_domains_url|g
+s|whitelist_domain|allowed_domain|g
+s|blacklist_hosts_url|blocked_hosts_url|g
+s|blacklist_domains_url|blocked_domains_url|g
+s|blacklist_domain|blocked_domain|g
+s|dbl.oisd.nl|hosts.oisd.nl|g
+s|raw.githubusercontent.com/StevenBlack/hosts/|cdn.jsdelivr.net/gh/StevenBlack/hosts@|g
+s|raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/|cdn.jsdelivr.net/gh/hoshsadiq/adblock-nocoin-list@|g
+s|raw.githubusercontent.com/jawz101/MobileAdTrackers/|cdn.jsdelivr.net/gh/jawz101/MobileAdTrackers@|g
+/dshield.org/d
# shellcheck disable=SC2039,SC1091
PKG_VERSION='dev-test'
-export START=94
-export USE_PROCD=1
-export LC_ALL=C
+# shellcheck disable=SC2034
+START=94
+# shellcheck disable=SC2034
+USE_PROCD=1
+LC_ALL=C
-export EXTRA_COMMANDS='check dl killcache sizes show'
-export EXTRA_HELP=' check Checks if specified domain is found in current blacklist
+# shellcheck disable=SC2034
+EXTRA_COMMANDS='check dl killcache sizes show'
+# shellcheck disable=SC2034
+EXTRA_HELP=' check Checks if specified domain is found in current block-list
dl Force-downloads all enabled block-list
sizes Displays the file-sizes of enabled block-lists
show Shows the service last-run status'
readonly sharedMemoryOutput="/dev/shm/$packageName-output"
readonly hostsFilter='/localhost/d;/^#/d;/^[^0-9]/d;s/^0\.0\.0\.0.//;s/^127\.0\.0\.1.//;s/[[:space:]]*#.*$//;s/[[:cntrl:]]$//;s/[[:space:]]//g;/[`~!@#\$%\^&\*()=+;:"'\'',<>?/\|[{}]/d;/]/d;/\./!d;/^$/d;/[^[:alnum:]_.-]/d;'
readonly domainsFilter='/^#/d;s/[[:space:]]*#.*$//;s/[[:space:]]*$//;s/[[:cntrl:]]$//;/[[:space:]]/d;/[`~!@#\$%\^&\*()=+;:"'\'',<>?/\|[{}]/d;/]/d;/\./!d;/^$/d;/[^[:alnum:]_.-]/d;'
-readonly checkmark='\xe2\x9c\x93'
-readonly xmark='\xe2\x9c\x97'
readonly _OK_='\033[0;32m\xe2\x9c\x93\033[0m'
readonly _FAIL_='\033[0;31m\xe2\x9c\x97\033[0m'
readonly __OK__='\033[0;32m[\xe2\x9c\x93]\033[0m'
readonly __FAIL__='\033[0;31m[\xe2\x9c\x97]\033[0m'
readonly _ERROR_='\033[0;31mERROR\033[0m'
-readonly messageSuccess='Success'
-readonly messageFail='Fail'
-readonly messageDownloading='Downloading'
-readonly messageReloading='Reloading'
-readonly messageRestarting='Restarting'
-readonly messageStarting='Starting'
-readonly messageForceReloading='Force-Reloading'
-readonly messageProcessing='Processing'
-readonly messageStopped='Stopped'
getStatusText() {
local _ret
case "$1" in
statusRestarting) _ret="Restarting";;
statusForceReloading) _ret="Force Reloading";;
statusDownloading) _ret="Downloading";;
+ statusProcessing) _ret="Processing";;
statusError) _ret="Error";;
statusWarning) _ret="Warning";;
statusFail) _ret="Fail";;
errorSharedMemory) _ret="failed to access shared memory";;
errorSorting) _ret="failed to sort data file";;
errorOptimization) _ret="failed to optimize data file";;
- errorWhitelistProcessing) _ret="failed to process whitelist";;
+ errorAllowListProcessing) _ret="failed to process allow-list";;
errorDataFileFormatting) _ret="failed to format data file";;
errorMovingDataFile) _ret="failed to move data file '${A_TMP}' to '${outputFile}'";;
errorCreatingCompressedCache) _ret="failed to create compressed cache";;
errorRemovingTempFiles) _ret="failed to remove temporary files";;
errorRestoreCompressedCache) _ret="failed to unpack compressed cache";;
errorRestoreCache) _ret="failed to move '$outputCache' to '$outputFile'";;
- errorOhSnap) _ret="failed to create blocklist or restart DNS resolver";;
+ errorOhSnap) _ret="failed to create block-list or restart DNS resolver";;
errorStopping) _ret="failed to stop $serviceName";;
errorDNSReload) _ret="failed to reload/restart DNS resolver";;
errorDownloadingList) _ret="failed to download";;
output_okn() { output 1 "$_OK_\\n"; output 2 "$__OK__\\n"; }
output_fail() { output 1 "$_FAIL_"; output 2 "$__FAIL__\\n"; }
output_failn() { output 1 "$_FAIL_\\n"; output 2 "$__FAIL__\\n"; }
-# str_replace() { printf "%b" "$1" | sed -e "s/$(printf "%b" "$2")/$(printf "%b" "$3")/g"; }
-# str_contains() { test "$1" != "$(str_replace "$1" "$2" '')"; }
+str_replace() { printf "%b" "$1" | sed -e "s/$(printf "%b" "$2")/$(printf "%b" "$3")/g"; }
+str_contains() { test "$1" != "$(str_replace "$1" "$2" '')"; }
compare_versions() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; }
is_chaos_calmer() { ubus -S call system board | grep -q 'Chaos Calmer'; }
is_ipset_procd() { compare_versions "$(sed -ne 's/^Version: //p' /usr/lib/opkg/info/firewall.control)" "2019-09-18"; }
fi
}
-export serviceEnabled forceDNS parallelDL debug allowIDN compressedCache
-export targetDNS bootDelay dlTimeout curlRetry verbosity=1 led dnsInstance
-export whitelist_domains blacklist_domains
-export whitelist_domains_urls blacklist_domains_urls blacklist_hosts_urls
-export wan_if wan_gw wanphysdev dl_command serviceStatus dl_flag
-export outputFilter outputFilterIPv6 outputFile outputGzip outputCache ipv6Enabled
+serviceEnabled=1
+forceDNS=1
+parallelDL=1
+debug=0
+compressedCache=0
+ipv6Enabled=0
+bootDelay=120
+dlTimeout=20
+curlRetry=3
+verbosity=2
+led=''
+targetDNS=dnsmasq.servers
+dnsInstance=0
+allowed_domains=''
+blocked_domains=''
+allowed_domains_urls=''
+blocked_domains_urls=''
+blocked_hosts_urls=''
+dl_command=''
+dl_flag=''
+outputFilter=''
+outputFilterIPv6=''
+outputFile=''
+outputGzip=''
+outputCache=''
+isSSLSupported=''
+allowIDN=0
load_package_config() {
config_load "$packageName"
config_get led 'config' 'led'
config_get targetDNS 'config' 'dns' 'dnsmasq.servers'
config_get dnsInstance 'config' 'dns_instance' '0'
- config_get whitelist_domains 'config' 'whitelist_domain'
- config_get blacklist_domains 'config' 'blacklist_domain'
- config_get whitelist_domains_urls 'config' 'whitelist_domains_url'
- config_get blacklist_domains_urls 'config' 'blacklist_domains_url'
- config_get blacklist_hosts_urls 'config' 'blacklist_hosts_url'
+ config_get allowed_domains 'config' 'allowed_domain'
+ config_get allowed_domains_urls 'config' 'allowed_domains_url'
+ config_get blocked_domains 'config' 'blocked_domain'
+ config_get blocked_domains_urls 'config' 'blocked_domains_url'
+ config_get blocked_hosts_urls 'config' 'blocked_hosts_url'
if [ "$targetDNS" != 'dnsmasq.addnhosts' ] && [ "$targetDNS" != 'dnsmasq.conf' ] && \
[ "$targetDNS" != 'dnsmasq.servers' ] && [ "$targetDNS" != 'unbound.adb_list' ] && \
fi
. /lib/functions/network.sh
. /usr/share/libubox/jshn.sh
- # Prefer curl because it supports the file: scheme.
+ # Prefer curl because it supports the file:// scheme.
if [ -x /usr/bin/curl ]; then
dl_command="curl --insecure --retry $curlRetry --connect-timeout $dlTimeout --silent"
dl_flag="-o"
- elif wget -V 2>/dev/null | grep -q "+ssl"; then
+ elif wget --version 2>/dev/null | grep -q "+https"; then
dl_command="wget --no-check-certificate --timeout $dlTimeout -q"
dl_flag="-O"
else
dl_flag="-O"
fi
led="${led:+/sys/class/leds/$led}"
+ if curl --version 2>/dev/null | grep -q "https" \
+ || wget --version 2>/dev/null | grep -q "+https" \
+ || grep -q "libustream-mbedtls" /usr/lib/opkg/status \
+ || grep -q "libustream-openssl" /usr/lib/opkg/status \
+ || grep -q "libustream-wolfssl" /usr/lib/opkg/status; then
+ isSSLSupported=1
+ else
+ unset isSSLSupported
+ fi
}
is_enabled() {
+ wan_if=''; wan_gw='';
load_package_config
if [ "$debug" -ne 0 ]; then
stats)
printf "%b" "$stats"; return;;
triggers)
- curReload="$parallelDL $debug $dlTimeout $whitelist_domains $blacklist_domains $whitelist_domains_urls $blacklist_domains_urls $blacklist_hosts_urls $targetDNS"
+ curReload="$parallelDL $debug $dlTimeout $allowed_domains $blocked_domains $allowed_domains_urls $blocked_domains_urls $blocked_hosts_urls $targetDNS"
curRestart="$compressedCache $forceDNS $led"
if [ ! -s "$jsonFile" ]; then
ret='on_boot'
stats)
stats="$value";;
triggers)
- readReload="$parallelDL $debug $dlTimeout $whitelist_domains $blacklist_domains $whitelist_domains_urls $blacklist_domains_urls $blacklist_hosts_urls $targetDNS"
+ readReload="$parallelDL $debug $dlTimeout $allowed_domains $blocked_domains $allowed_domains_urls $blocked_domains_urls $blocked_hosts_urls $targetDNS"
readRestart="$compressedCache $forceDNS $led"
;;
esac
else
type='Allowed'; D_TMP="$A_TMP";
fi
+ if [ "${1:0:5}" == "https" ] && [ -z "$isSSLSupported" ]; then
+ output 1 "$_FAIL_"
+ output 2 "[DL] $type $label $__FAIL__\\n"
+ echo "errorNoSSLSupport|${1}" >> "$sharedMemoryError"
+ return 0
+ fi
while [ -z "$R_TMP" ] || [ -e "$R_TMP" ]; do
R_TMP="$(mktemp -u -q -t ${packageName}_tmp.XXXXXXXX)"
done
if ! $dl_command "$1" $dl_flag "$R_TMP" 2>/dev/null || [ ! -s "$R_TMP" ]; then
output 1 "$_FAIL_"
output 2 "[DL] $type $label $__FAIL__\\n"
- echo "errorDownloadingList=${1}" >> "$sharedMemoryError"
+ echo "errorDownloadingList|${1}" >> "$sharedMemoryError"
else
sed -i "$filter" "$R_TMP"
if [ ! -s "$R_TMP" ]; then
output 1 "$_FAIL_"
output 2 "[DL] $type $label $__FAIL__\\n"
- echo "errorParsingList=${1}" >> "$sharedMemoryError"
+ echo "errorParsingList|${1}" >> "$sharedMemoryError"
else
cat "${R_TMP}" >> "$D_TMP"
output 1 "$_OK_"
download_lists() {
local hf w_filter j=0 R_TMP
- tmpfs set message "${messageDownloading}..."
+ tmpfs set message "$(getStatusText "statusDownloading")..."
tmpfs set status "statusDownloading"
rm -f "$A_TMP" "$B_TMP" "$outputFile" "$outputCache" "$outputGzip"
touch $A_TMP; touch $B_TMP;
output 1 'Downloading lists '
rm -f "$sharedMemoryError"
- if [ -n "$blacklist_hosts_urls" ]; then
- for hf in ${blacklist_hosts_urls}; do
+ if [ -n "$blocked_hosts_urls" ]; then
+ for hf in ${blocked_hosts_urls}; do
if [ "$parallelDL" -gt 0 ]; then
process_url "$hf" 'hosts' 'blocked' &
else
fi
done
fi
- if [ -n "$blacklist_domains_urls" ]; then
- for hf in ${blacklist_domains_urls}; do
+ if [ -n "$blocked_domains_urls" ]; then
+ for hf in ${blocked_domains_urls}; do
if [ "$parallelDL" -gt 0 ]; then
process_url "$hf" 'domains' 'blocked' &
else
fi
done
fi
- if [ -n "$whitelist_domains_urls" ]; then
- for hf in ${whitelist_domains_urls}; do
+ if [ -n "$allowed_domains_urls" ]; then
+ for hf in ${allowed_domains_urls}; do
if [ "$parallelDL" -gt 0 ]; then
process_url "$hf" 'domains' 'allowed' &
else
rm -f "$sharedMemoryError"
fi
- [ -n "$blacklist_domains" ] && for hf in ${blacklist_domains}; do echo "$hf" | sed "$domainsFilter" >> $B_TMP; done
- whitelist_domains="${whitelist_domains}
+ [ -n "$blocked_domains" ] && for hf in ${blocked_domains}; do echo "$hf" | sed "$domainsFilter" >> $B_TMP; done
+ allowed_domains="${allowed_domains}
$(cat $A_TMP)"
- [ -n "$whitelist_domains" ] && for hf in ${whitelist_domains}; do hf="$(echo "$hf" | sed 's/\./\\./g')"; w_filter="$w_filter/^${hf}$/d;/\\.${hf}$/d;"; done
+ [ -n "$allowed_domains" ] && for hf in ${allowed_domains}; do hf="$(echo "$hf" | sed 's/\./\\./g')"; w_filter="$w_filter/^${hf}$/d;/\\.${hf}$/d;"; done
[ ! -s "$B_TMP" ] && return 1
output 1 'Processing downloads '
output 2 'Sorting combined list '
- tmpfs set message "$messageProcessing: sorting combined list"
+ tmpfs set message "$(getStatusText "statusProcessing"): sorting combined list"
if [ "$allowIDN" -gt 0 ]; then
if sort -u "$B_TMP" > "$A_TMP"; then
output_ok
[ "$targetDNS" = 'unbound.adb_list' ]; then
# TLD optimization written by Dirk Brenken (dev@brenken.org)
output 2 'Optimizing combined list '
- tmpfs set message "$messageProcessing: optimizing combined list"
+ tmpfs set message "$(getStatusText "statusProcessing"): optimizing combined list"
# sed -E 'G;:t;s/(.*)(\.)(.*)(\n)(.*)/\1\4\5\2\3/;tt;s/(.*)\n(\.)(.*)/\3\2\1/' is actually slower than awk
if awk -F "." '{for(f=NF;f>1;f--)printf "%s.",$f;print $1}' "$A_TMP" > "$B_TMP"; then
if sort "$B_TMP" > "$A_TMP"; then
mv "$A_TMP" "$B_TMP"
fi
- output 2 'Whitelisting domains '
- tmpfs set message "$messageProcessing: whitelisting domains"
+ output 2 'Allowing domains '
+ tmpfs set message "$(getStatusText "statusProcessing"): allowing domains"
if sed -i "$w_filter" "$B_TMP"; then
output_ok
else
output_failn
- tmpfs add error "errorWhitelistProcessing"
+ tmpfs add error "errorAllowListProcessing"
fi
output 2 'Formatting merged file '
- tmpfs set message "$messageProcessing: formatting merged file"
+ tmpfs set message "$(getStatusText "statusProcessing"): formatting merged file"
if [ -z "$outputFilterIPv6" ]; then
if sed "$outputFilter" "$B_TMP" > "$A_TMP"; then
output_ok
case "$targetDNS" in
dnsmasq.addnhosts)
output 2 'Creating DNSMASQ addnhosts file '
- tmpfs set message "$messageProcessing: creating DNSMASQ addnhosts file"
+ tmpfs set message "$(getStatusText "statusProcessing"): creating DNSMASQ addnhosts file"
;;
dnsmasq.conf)
output 2 'Creating DNSMASQ config file '
- tmpfs set message "$messageProcessing: creating DNSMASQ config file"
+ tmpfs set message "$(getStatusText "statusProcessing"): creating DNSMASQ config file"
;;
dnsmasq.ipset)
output 2 'Creating DNSMASQ ipset file '
- tmpfs set message "$messageProcessing: creating DNSMASQ ipset file"
+ tmpfs set message "$(getStatusText "statusProcessing"): creating DNSMASQ ipset file"
;;
dnsmasq.servers)
output 2 'Creating DNSMASQ servers file '
- tmpfs set message "$messageProcessing: creating DNSMASQ servers file"
+ tmpfs set message "$(getStatusText "statusProcessing"): creating DNSMASQ servers file"
;;
unbound.adb_list)
output 2 'Creating Unbound adb_list file '
- tmpfs set message "$messageProcessing: creating Unbound adb_list file"
+ tmpfs set message "$(getStatusText "statusProcessing"): creating Unbound adb_list file"
;;
esac
if mv "$A_TMP" "$outputFile"; then
fi
if [ "$compressedCache" -gt 0 ]; then
output 2 'Creating compressed cache '
- tmpfs set message "$messageProcessing: creating compressed cache"
+ tmpfs set message "$(getStatusText "statusProcessing"): creating compressed cache"
if cacheOps 'createGzip'; then
output_ok
else
rm -f "$outputGzip"
fi
output 2 'Removing temporary files '
- tmpfs set message "$messageProcessing: removing temporary files"
+ tmpfs set message "$(getStatusText "statusProcessing"): removing temporary files"
rm -f "/tmp/${packageName}_tmp.*" "$A_TMP" "$B_TMP" "$outputCache" || j=1
if [ $j -eq 0 ]; then
output_ok
fi
if [ -n "$error" ]; then
for c in $error; do
- url="${c##*=}"
- c="${c%=*}"
+ url="${c##*|}"
+ c="${c%|*}"
case "$c" in
errorDownloadingList|errorParsingList)
output "$_ERROR_: $(getErrorText "$c") $url!\\n";;
local string="$1"
local c="$(grep -c "$string" "$outputFile")"
if [ ! -s "$outputFile" ]; then
- echo "No blacklist ('$outputFile') found."
+ echo "No block-list ('$outputFile') found."
elif [ -z "$string" ]; then
echo "Usage: /etc/init.d/${packageName} check string"
elif [ "$c" -gt 0 ]; then
grep "$string" "$outputFile" | sed 's|^local-zone: "||;s|" static$||;';;
esac
else
- echo "The $string is not found in current blacklist ('$outputFile')."
+ echo "The $string is not found in current block-list ('$outputFile')."
fi
}
load_package_config
echo "# $(date)"
- for i in $blacklist_domains_urls; do
+ for i in $blocked_domains_urls; do
[ "${i//melmac}" != "$i" ] && continue
if $dl_command "$i" $dl_flag /tmp/sast 2>/dev/null && [ -s /tmp/sast ]; then
echo "# File size: $(du -sh /tmp/sast | awk '{print $1}')"
if compare_versions "$(du -sk /tmp/sast)" "500"; then
- echo "# blocklist too big for most routers"
+ echo "# block-list too big for most routers"
elif compare_versions "$(du -sk /tmp/sast)" "100"; then
- echo "# blocklist may be too big for some routers"
+ echo "# block-list may be too big for some routers"
fi
rm -rf /tmp/sast
- echo " list blacklist_domains_url '$i'"
+ echo " list blocked_domains_url '$i'"
echo ""
else
echo "# site was down on last check"
- echo "# list blacklist_domains_url '$i'"
+ echo "# list blocked_domains_url '$i'"
echo ""
fi
done
- for i in $blacklist_hosts_urls; do
+ for i in $blocked_hosts_urls; do
if $dl_command "$i" $dl_flag /tmp/sast 2>/dev/null && [ -s /tmp/sast ]; then
echo "# File size: $(du -sh /tmp/sast | awk '{print $1}')"
if compare_versions "$(du -sk /tmp/sast)" "500"; then
- echo "# blocklist too big for most routers"
+ echo "# block-list too big for most routers"
elif compare_versions "$(du -sk /tmp/sast)" "100"; then
- echo "# blocklist may be too big for some routers"
+ echo "# block-list may be too big for some routers"
fi
rm -rf /tmp/sast
- echo " list blacklist_hosts_url '$i'"
+ echo " list blocked_hosts_url '$i'"
echo ""
else
echo "# site was down on last check"
- echo "# list blacklist_hosts_url '$i'"
+ echo "# list blocked_hosts_url '$i'"
echo ""
fi
done
include $(TOPDIR)/rules.mk
PKG_NAME:=softethervpn5
-PKG_VERSION:=5.01.9672
+PKG_VERSION:=5.01.9674
PKG_RELEASE:=1
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_SOURCE_URL:=https://github.com/SoftEtherVPN/SoftEtherVPN/releases/download/$(PKG_VERSION)/
PKG_SOURCE:=softether-vpn-src-$(PKG_VERSION).tar.gz
-PKG_HASH:=7c437d4d02d7e2a936b4c1ff7bc8f5abbf16786746deffa92d5f5f2fd7ba04fb
+PKG_HASH:=c4dc53f4912605a25c18357b0a0bf6dc059286ca901cb981abdf1a22d1649ddc
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/SoftEtherVPN-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/SoftEtherVPN-$(PKG_VERSION)
PKG_NAME:=sqm-scripts
PKG_SOURCE_VERSION:=ab763cba8b1516b3afa99760e0ca884f8b8d93b8
PKG_VERSION:=1.4.0
-PKG_RELEASE:=7
+PKG_RELEASE:=8
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/tohojo/sqm-scripts
CATEGORY:=Base system
DEPENDS:=+tc +kmod-sched-core +kmod-ifb +iptables \
+iptables-mod-ipopt +iptables-mod-conntrack-extra \
- +!LINUX_4_14:kmod-sched-cake +LINUX_4_14:kmod-sched-cake-oot
+ +kmod-sched-cake-virtual
TITLE:=SQM Scripts (QoS)
PKGARCH:=all
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=tcpreplay
-PKG_VERSION:=4.3.2
+PKG_VERSION:=4.3.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/appneta/tcpreplay/releases/download/v$(PKG_VERSION)
-PKG_HASH:=955aed6a40f49a5b8c1234fd0a928edc5c665d94b7755ab5769c30938e33f380
+PKG_HASH:=5e960e2a4432f583adbd11fa0855d17b73d9e0f2d6453b749f27aacaee53bab5
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=docs/LICENSE
include $(TOPDIR)/rules.mk
PKG_NAME:=tor
-PKG_VERSION:=0.4.2.7
-PKG_RELEASE:=1
+PKG_VERSION:=0.4.3.5
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://dist.torproject.org/ \
https://archive.torproject.org/tor-package-archive
-PKG_HASH:=06a1d835ddf382f6bca40a62e8fb40b71b2f73d56f0d53523c8bd5caf9b3026d
+PKG_HASH:=616a0e4ae688d0e151d46e3e4258565da4d443d1ddbd316db0b90910e2d5d868
PKG_MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de> \
Peter Wagner <tripolar@gmx.at>
PKG_LICENSE_FILES:=LICENSE
--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
}
$(INSTALL_BIN) ./files/acme.init $(1)/etc/init.d/acme
endef
+define Package/uacme/prerm
+#!/bin/sh
+sed -i '/\/etc\/init\.d\/acme start/d' /etc/crontabs/root
+endef
+
$(eval $(call BuildPackage,uacme))
PKG_NAME:=unbound
PKG_VERSION:=1.10.1
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://nlnetlabs.nl/downloads/unbound
**/etc/config/unbound**:
```
config unbound
+ # likely you want to match domain option between Unbound and dnsmasq
+ option domain 'yourdomain'
option dhcp_link 'dnsmasq'
option listen_port '53'
...
Boolean. If enabled version.server, version.bind, id.server, and
hostname.bind queries are refused.
+ option interface_auto '1'
+ Boolean. If enabled DNS replies will have the same source address as
+ the request was sent to.
+
option listen_port '53'
Port. Incoming. Where Unbound will listen for queries.
UB_B_QUERY_MIN=0
UB_B_QRY_MINST=0
UB_B_AUTH_ROOT=0
+UB_B_IF_AUTO=1
UB_D_CONTROL=0
UB_D_DOMAIN_TYPE=static
esac
+ if [ "$UB_B_IF_AUTO" -gt 0 ] ; then
+ echo " interface-automatic: yes" >> $UB_CORE_CONF
+ fi
+
+
case "$UB_D_RESOURCE" in
# Tiny - Unbound's recommended cheap hardware config
tiny) rt_mem=1 ; rt_conn=2 ; rt_buff=1 ;;
config_get_bool UB_B_LOCL_BLCK "$cfg" rebind_localhost 0
config_get_bool UB_B_DNSSEC "$cfg" validator 0
config_get_bool UB_B_NTP_BOOT "$cfg" validator_ntp 1
+ config_get_bool UB_B_IF_AUTO "$cfg" interface_auto 1
config_get UB_IP_DNS64 "$cfg" dns64_prefix "64:ff9b::/96"
option edns_size '1280'
option extended_stats '0'
option hide_binddata '1'
+ option interface_auto '1'
option listen_port '53'
option localservice '1'
option manual_conf '0'
If these packages are not found in the official feed/repo for your version of OpenWrt/LEDE Project, you will need to add a custom repo to your router following instructions on [GitHub](https://github.com/stangri/openwrt_packages/blob/master/README.md#on-your-router)/[jsDelivr](https://cdn.jsdelivr.net/gh/stangri/openwrt_packages@master/README.md#on-your-router) first.
+These packages have been designed to be backwards compatible with OpenWrt 19.07, OpenWrt 18.06, LEDE Project 17.01 and OpenWrt 15.05. However, on systems older than OpenWrt 18.06.6 and/or a system which has deviated too far (or haven't been updated to keep in-sync) with official OpenWrt release you may get a message about missing ```luci-compat``` dependency, which (and only which) you can safely ignore and force-install the luci app using ```opkg install --force-depends``` command instead of ```opkg install```.
+
### Requirements
This service requires the following packages to be installed on your router: ```ipset```, ```resolveip```, ```ip-full``` (or a ```busybox``` built with ```ip``` support), ```kmod-ipt-ipset``` and ```iptables```.
5. <a name="footnote5"> </a> When using the ```dnsmasq.ipset``` option, please make sure to flush the DNS cache of the local devices, otherwise domain policies may not work until you do. If you're not sure how to flush the DNS cache (or if the device/OS doesn't offer an option to flush its DNS cache), reboot your local devices when starting to use the service and/or when connecting data-capable device to your WiFi.
-6. <a name="footnote6"> </a> When using the policies targeting physical devices, make sure you have the following packages installed: ```kmod-br-netfilter```, ```kmod-ipt-physdev``` and ```iptables-mod-physdev```.
+6. <a name="footnote6"> </a> When using the policies targeting physical devices, make sure you have the following packages installed: ```kmod-br-netfilter```, ```kmod-ipt-physdev``` and ```iptables-mod-physdev```. Also, if your physical device is a part of the bridge, you may have to set ```net.bridge.bridge-nf-call-iptables``` to `1` in your ```/etc/sysctl.conf```.
+
+### First Troubleshooting Step
+
+If your router is set to use [default routing via VPN tunnel](#a-word-about-default-routing) and the WAN-targeting policies do not work, you need to stop your VPN tunnel first and ensure that you still have internet connection. If your router is set up to use the default routing via VPN tunnel and when you stop the VPN tunnel you have no internet connection, this package can't help you. You first need to make sure that you do have internet connection when the VPN tunnel is stopped.
### Multiple OpenVPN Clients
- For OpenVPN 2.4 and newer client ```.ovpn``` file:
```text
- pull_filter 'ignore "redirect-gateway"'
+ pull-filter ignore "redirect-gateway"
```
- For OpenVPN 2.3 and older client ```.ovpn``` file:
```text
- route_nopull '1'
+ route-nopull "1"
```
#### Wireguard tunnel
+++ /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
include $(TOPDIR)/rules.mk
PKG_NAME:=wsdd2
-PKG_RELEASE:=7
+PKG_RELEASE:=8
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/Andy2244/wsdd2.git
-PKG_SOURCE_DATE:=2019-12-15
-PKG_SOURCE_VERSION:=8bcc0c1a42767ba518977a7104fe934f5d89ef31
-PKG_MIRROR_HASH:=4eace9130b7e1ddbc5b965fa51286532d3ee2ee14bcd2e116840c7d6d48ad9bc
+PKG_SOURCE_DATE:=2020-05-06
+PKG_SOURCE_VERSION:=671d040c33ec290930535e27dd59c1e5ccec11ec
+PKG_MIRROR_HASH:=aac0881ba8627897b23906eabde97450178a8f9285699c0368f88a745a934b96
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-3.0-only
PKG_NAME:=xinetd
PKG_VERSION:=2.3.15
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/xinetd-org/xinetd/archive
endef
define Package/xinetd/conffiles
-/etc/xinetd.conf
-/etc/xinetd.d/
+/etc/config/xinetd
endef
TARGET_CFLAGS += -DNO_RPC
define Package/xinetd/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xinetd $(1)/usr/sbin/
- $(INSTALL_DIR) $(1)/etc
- $(INSTALL_DATA) ./files/xinetd.conf $(1)/etc/xinetd.conf
- $(INSTALL_DIR) $(1)/etc/xinetd.d
+ $(INSTALL_DIR) $(1)/etc/config/
+ $(INSTALL_DATA) ./files/xinetd.uci.conf.sample $(1)/etc/config/xinetd
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/xinetd.init $(1)/etc/init.d/xinetd
+ $(INSTALL_DIR) $(1)/etc/xinetd.d
endef
$(eval $(call BuildPackage,xinetd))
+++ /dev/null
-defaults
-{
-
-}
-
-includedir /etc/xinetd.d
# Copyright (C) 2006-2011 OpenWrt.org
START=50
+STOP=10
-SERVICE_USE_PID=1
+USE_PROCD=1
-start() {
- service_start /usr/sbin/xinetd -pidfile /var/run/xinetd.pid
+PROG="/usr/sbin/xinetd"
+
+PIDFILE="/var/run/xinetd.pid"
+
+CONF_FILE="/etc/config/xinetd"
+GENERATED_CONF_FILE="/var/run/xinetd.conf"
+
+ServiceEntry="false"
+ListName=""
+ListValue=""
+
+
+# redefined callback for sections when calling config_load
+config_cb() {
+
+ # write out last list option (from last section) if exist and clear
+ if [ "$ListName" != "" ]; then
+ echo -e "\t$ListName = $ListVals" >> $GENERATED_CONF_FILE
+ fi
+
+ ListName=""
+ ListVals=""
+
+ # "close" last service entry (from last section) if exist
+ if [ "$ServiceEntry" = "true" ]; then # at least one service section "opened"
+ echo "}" >> $GENERATED_CONF_FILE # "close" open service section in config
+ ServiceEntry="false"
+ fi
+
+ if [ $# -eq 0 ]; then # end of config reached
+ return
+ fi
+
+ local type="$1"
+ local name="$2"
+
+ if [ "$type" = "service" ]; then
+
+ if [ "$ServiceEntry" = "true" ]; then
+ echo "}" >> $GENERATED_CONF_FILE # "close" previous opened service section in config
+ fi
+
+ ServiceEntry="true"
+
+ echo "" >> $GENERATED_CONF_FILE
+ echo "service $name" >> $GENERATED_CONF_FILE
+ echo "{" >> $GENERATED_CONF_FILE
+
+ # redefined callback for options when calling config_load
+ option_cb() {
+ local option="$1"
+ local value="$2"
+
+ [ -n "$value" ] && echo -e "\t$option = $value" >> $GENERATED_CONF_FILE
+ }
+
+ # redefined callback for lists when calling config_load
+ list_cb() {
+ local name="$1"
+ local value="$2"
+
+ # write out last list option if new list starts
+ if [ "$ListName" != "" -a "$ListName" != "$name" ]; then
+
+ echo -e "\t$ListName = $ListVals" >> $GENERATED_CONF_FILE
+
+ ListName=""
+ ListVals=""
+ fi
+
+ # new list option
+ if [ -z "$ListName" ]; then
+
+ ListName="$name"
+ ListVals="$value"
+ else
+ ListVals="$ListVals $value"
+ fi
+ }
+ else # ignore non 'service' sections
+ return 0
+ fi
}
-stop() {
- service_stop /usr/sbin/xinetd
+generate_config() {
+ echo "# Auto-generated config file from $CONF_FILE" > $GENERATED_CONF_FILE
+ echo "# Do not edit, changes to this file will be lost on upgrades" >> $GENERATED_CONF_FILE
+ echo "" >> $GENERATED_CONF_FILE
+
+ echo "defaults" >> $GENERATED_CONF_FILE
+ echo "{" >> $GENERATED_CONF_FILE
+ echo "" >> $GENERATED_CONF_FILE
+ echo "}" >> $GENERATED_CONF_FILE
+ echo "" >> $GENERATED_CONF_FILE
+ echo "includedir /etc/xinetd.d" >> $GENERATED_CONF_FILE
+
+ config_load xinetd
}
+start_service() {
+ generate_config
+
+ procd_open_instance
+ procd_set_param command $PROG -f $GENERATED_CONF_FILE -pidfile $PIDFILE
+ procd_set_param respawn
+ procd_close_instance
+}
+
+service_triggers() {
+ procd_add_reload_trigger "xinetd"
+}
--- /dev/null
+#config service 'checkmk_agent'
+# option type 'UNLISTED'
+# option port '6556'
+# option socket_type 'stream'
+# option protocol 'tcp'
+# option wait 'no'
+# option user 'root'
+# option server '/usr/bin/check_mk_agent'
+# option log_on_success ''
+# option only_from '127.0.0.1'
+# option disable 'no'
PKG_NAME:=xtables-addons
PKG_VERSION:=3.9
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_HASH:=064dd68937d98e6cfcbdf51ef459310d9810c17ab31b21285bc7a76cdcef7c49
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
--- /dev/null
+--- a/extensions/LUA/Makefile
++++ b/extensions/LUA/Makefile
+@@ -110,7 +110,7 @@
+ RANLIB = ranlib
+ SED = /bin/sed
+ SET_MAKE =
+-SHELL = /bin/bash
++SHELL = /bin/sh
+ STRIP = strip
+ VERSION = 1.21
+ abs_builddir = /home/andre/Dropbox/xtables-addons/extensions/LUA
include $(TOPDIR)/rules.mk
PKG_NAME:=mpd
-PKG_VERSION:=0.21.23
-PKG_RELEASE:=2
+PKG_VERSION:=0.21.24
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.musicpd.org/download/mpd/0.21/
-PKG_HASH:=439f522ca9800f375e4fb459ec31e61b3d824fc5c0580ff06dac48b5d21207a3
+PKG_HASH:=84632a7e82e672b3a6d71651a75d05fb7acd62645c33e3f3af5a1067cfa64cd6
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=GPL-2.0-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=upmpdcli
-PKG_VERSION:=1.4.9
+PKG_VERSION:=1.4.12
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.lesbonscomptes.com/upmpdcli/downloads
-PKG_HASH:=ace5a3166891109d2a874f21306986857ee2620230a77751ed6209f7b5cc9c58
+PKG_HASH:=bffc78c140ad688987894ea5a1e162e6dcbc7dcae7d2cc322a894f5ea2a2f53b
PKG_MAINTAINER:=Petko Bordjukov <bordjukov@gmail.com>
PKG_LICENSE:=LGPL-2.1-or-later
PKG_NAME:=acpid
PKG_VERSION:=2.0.32
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@SF/acpid2
-#!/bin/ash /etc/rc.common
+#!/bin/sh /etc/rc.common
# Copyright (C) 2009-2010 OpenWrt.org
START=99
procd_set_param pidfile "/var/run/acpid.pid"
}
-reload_service()\ {
+reload_service() {
procd_send_signal "acpid"
}
include $(TOPDIR)/rules.mk
PKG_NAME:=bcm27xx-eeprom
-PKG_VERSION:=a9ca308223c1d0426b9ab320696b95954078c3b4
+PKG_VERSION:=fd2ea72b2677504f41298c9137647aa057f67f47
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/raspberrypi/rpi-eeprom/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=072dbbd4b53c2c0b5764ff628f63cc8d679a99cfe84d8f50acea06922084515e
+PKG_HASH:=3a4e1db25db8188535ad0ad12a6e40e2ff927b20cd21b1b5ff783c2fde966308
PKG_LICENSE:=BSD-3-Clause Custom
PKG_LICENSE_FILES:=LICENSE
fi
LOCAL_MODE=0
-@@ -323,7 +323,7 @@ The system should then boot normally.
+@@ -346,7 +346,7 @@ The system should then boot normally.
- If /boot does not correspond to the boot partition on the sd-card and this
- is not a NOOBS system then the mount point for BOOTFS should be defined
+ If /boot does not correspond to the boot partition and this
+ is not a NOOBS system, then the mount point for BOOTFS should be defined
-in /etc/default/rpi-eeprom-update by defining the BOOTFS variable.
+in /etc/bcm27xx-eeprom.conf by defining the BOOTFS variable.
A backup of the current EEPROM config file is written to ${FIRMWARE_BACKUP_DIR}
before applying the update.
-@@ -345,7 +345,7 @@ Options:
+@@ -368,7 +368,7 @@ Options:
-u Install the specified VL805 (USB EEPROM) image file.
Environment:
include $(TOPDIR)/rules.mk
PKG_NAME:=ccid
-PKG_VERSION:=1.4.31
+PKG_VERSION:=1.4.32
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://ccid.apdu.fr/files/
-PKG_HASH:=6b48d7b6e4390e038d25630f8664fe81618ab00f232d6efbe0e3cc6df28ce8f7
+PKG_HASH:=545f4ab7887d512aa4b6967b80ef18a77b790c34769718452737a633cefc1639
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=LGPL-2.1-or-later
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=cgroupfs-mount
-PKG_VERSION:=1.4
PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://codeload.github.com/tianon/cgroupfs-mount/tar.gz/${PKG_VERSION}?
-PKG_HASH:=d6c8aff7af59c7d0082ee3018c97f73b0421e81a49bb28ad9f66a36da5cd6ec7
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/tianon/$(PKG_NAME)
+PKG_SOURCE_VERSION:=0549428171605eae3097a3e21bf7664845eac9e8
+PKG_SOURCE_DATE:=2020-06-26
+PKG_MIRROR_HASH:=ca217ffff5aa938149d2d8adfe15d800903d2fec180acb2400c36d62905988ea
PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
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
include $(TOPDIR)/rules.mk
PKG_NAME:=cryptsetup
-PKG_VERSION:=2.3.0
-PKG_RELEASE:=2
+PKG_VERSION:=2.3.3
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/cryptsetup/v2.3
-PKG_HASH:=395690de99509428354d3cd15cf023bed01487e6f1565b2181e013dc847bbc85
+PKG_HASH:=3bca4ffe39e2f94cef50f6ea65acb873a6dbce5db34fc6bcefe38b6d095e82df
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=GPL-2.0-or-later LGPL-2.1-or-later
CATEGORY:=Utilities
TITLE:=Top-like interface for container metrics
URL:=https://ctop.sh/
- DEPENDS:=$(GO_ARCH_DEPENDS) @!mips
+ DEPENDS:=$(GO_ARCH_DEPENDS) @!mips @!mipsel
endef
define Package/ctop/description
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
-include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
define Package/dbus/Default
--with-dbus-user=root \
--without-x
-HOST_CONFIGURE_ARGS+= \
- --disable-maintainer-mode \
- --disable-developer \
- --enable-debug=no \
- --enable-shared \
- --disable-static \
- --disable-verbose-mode \
- --disable-asserts \
- --disable-xml-docs \
- --disable-doxygen-docs \
- --disable-ducktype-docs \
- --disable-selinux \
- --disable-apparmor \
- --disable-libaudit \
- --enable-inotify \
- --disable-kqueue \
- --disable-console-owner-file \
- --disable-systemd \
- --disable-tests \
- --disable-code-coverage \
- --disable-x11-autolaunch \
- --with-system-socket="$(STAGING_DIR_HOSTPKG)/var/run/dbus/system_bus_socket" \
- --with-system-pid-file="$(STAGING_DIR_HOSTPKG)/var/run/dbus.pid" \
- --with-dbus-daemondir="$(STAGING_DIR_HOSTPKG)/bin" \
- --without-x
-
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/dbus-1.0 $(1)/usr/include/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dbus-{monitor,send,update-activation-environment} $(1)/usr/bin/
endef
-$(eval $(call HostBuild))
$(eval $(call BuildPackage,libdbus))
$(eval $(call BuildPackage,dbus))
$(eval $(call BuildPackage,dbus-utils))
-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)/
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=docker-compose
+PKG_VERSION:=1.26.0
+PKG_RELEASE:=3
+
+PYPI_NAME:=docker-compose
+PKG_HASH:=7e836102d139aca667d6af53f0f4d942c9459ec24d6dd4f0203d74359b0fd311
+
+PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+include ../../lang/python/pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/python/python3-package.mk
+
+PYTHON3_PKG_SETUP_ARGS:=
+
+define Package/docker-compose
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=Docker Compose
+ URL:=https://github.com/docker/compose
+ DEPENDS+=+docker-ce \
+ +python3-light \
+ +python3-cached-property \
+ +python3-distro \
+ +python3-distutils \
+ +python3-docopt \
+ +python3-docker \
+ +python3-dockerpty \
+ +python3-dotenv \
+ +python3-jsonschema \
+ +python3-logging \
+ +python3-openssl \
+ +python3-pkg-resources \
+ +python3-requests \
+ +python3-six \
+ +python3-texttable \
+ +python3-websocket-client \
+ +python3-yaml
+endef
+
+define Package/docker-compose/description
+ Multi-container orchestration for Docker
+endef
+
+$(eval $(call Py3Package,docker-compose))
+$(eval $(call BuildPackage,docker-compose))
+$(eval $(call BuildPackage,docker-compose-src))
include $(TOPDIR)/rules.mk
PKG_NAME:=domoticz
-PKG_VERSION:=2020.1
-PKG_RELEASE:=2
+PKG_VERSION:=2020.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/domoticz/domoticz/archive/$(PKG_VERSION)/$(PKG_SOURCE)
-PKG_HASH:=d0c17b2082dad8a8caeed888b7d4c191975e74a2808b5d078305f5327b82442d
+PKG_HASH:=a02f589daad4eebff1f5e93815c1acd1864cf068f8f5c3185bcdd20207ae395e
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=License.txt
-PKG_BUILD_DEPENDS:=python3
+PKG_BUILD_DEPENDS:=python3 minizip cereal
PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
CATEGORY:=Utilities
TITLE:=Open Source Home Automation System
URL:=http://domoticz.com/
- MAINTAINER:=
+ MAINTAINER:=David Woodhouse <dwmw2@infradead.org>
USERID:=domoticz=6144:domoticz=6144
DEPENDS:= \
+boost \
+boost-date_time \
+boost-system \
+boost-thread \
+ +jsoncpp \
+libcurl \
- +libmosquittopp \
+ +minizip \
+ +lua5.3 \
+ +libmosquitto \
+libopenssl \
+libopenzwave \
+libsqlite3 \
-DCMAKE_BUILD_TYPE=Release \
-DUSE_BUILTIN_MQTT=no \
-DUSE_BUILTIN_SQLITE=no \
+ -DUSE_BUILTIN_JSONCPP=no \
+ -DUSE_BUILTIN_MINIZIP=no \
+ -DUSE_LUA_STATIC=no \
-DUSE_STATIC_BOOST=no \
-DUSE_STATIC_LIBSTDCXX=no \
-DUSE_STATIC_OPENZWAVE=no \
--- /dev/null
+From 632695fe3ee704c1c1c539d79172ac0f9f9ce77b Mon Sep 17 00:00:00 2001
+From: David Woodhouse <dwmw2@infradead.org>
+Date: Thu, 4 Jun 2020 12:41:27 +0100
+Subject: [PATCH] Fix up OpenZWave include path handling
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The path specified by the pkg-config file will be, for example,
+/usr/include/openzwave.
+
+That directory needs to be on the compiler's include path, because
+OpenZWave's own include files assume they can include each other
+simply as (e.g.) "ValueIDIndexes.h"; not "openzwave/ValueIDIndexes.h"
+
+Our own files do include <openzwave/Foo.h> though, which means that
+the *parent* directory needs to be on the compilers's include path
+too. We generally get lucky because /usr/include is automatically
+included, so we find /usr/include/openzwave/Foo.h anyway.
+
+Fix our C files to rely on the correct include path discovered from
+pkg-config, and to include OpenZWave headers by name without the
+erroneous openzwave/ prefix.
+
+That means we can fix the ../open-zwave-read-only static build to use
+the header files directly from there just like it does the static
+library .a file, without requiring the 'sudo make install' step — and
+without suffering a mismatch of static openzwave build vs. headers of
+a different version that were installed on the system, which could
+previously happen.
+
+Tested with both static and dynamic builds of OpenZWave.
+---
+ CMakeLists.txt | 11 ++++-------
+ hardware/OpenZWave.cpp | 8 ++++----
+ hardware/openzwave/control_panel/ozwcp.cpp | 10 +++++-----
+ hardware/openzwave/control_panel/ozwcp.h | 4 ++--
+ 4 files changed, 15 insertions(+), 18 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index fa5b3099d..1f4b6fb57 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -694,6 +694,7 @@ endif(WITH_LIBUSB)
+ #
+ if(USE_STATIC_OPENZWAVE)
+ find_library(OpenZWave NAMES libopenzwave.a HINTS "../open-zwave-read-only" "../open-zwave-read-only/cpp/build")
++ find_path(OPENZWAVE_INCLUDE_DIRS NAMES OZWException.h HINTS "../open-zwave-read-only/cpp/src")
+ set(OPENZWAVE_LIB ${OpenZWave})
+ else()
+ pkg_check_modules(OPENZWAVE libopenzwave)
+@@ -707,16 +708,12 @@ IF(OpenZWave)
+ message(STATUS "OpenZWave library found at: ${OpenZWave}")
+ target_link_libraries(domoticz ${OpenZWave})
+
+- find_path(OPENZWAVE_INCLUDE_DIRS NAMES openzwave/Manager.h)
++ find_path(OPENZWAVE_INCLUDE_DIRS NAMES OZWException.h)
+ if (OPENZWAVE_INCLUDE_DIRS)
+- IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+- include_directories(${OPENZWAVE_INCLUDE_DIRS})
+- ELSE()
+- include_directories(${OPENZWAVE_INCLUDE_DIRS}/openzwave)
+- ENDIF()
++ include_directories(${OPENZWAVE_INCLUDE_DIRS})
+ message(STATUS "OpenZWave includes found at: ${OPENZWAVE_INCLUDE_DIRS}")
+ else()
+- message(FATAL_ERROR "OpenZWave includes not found. Did you not issue 'sudo make install' after building OpenZWave?")
++ message(FATAL_ERROR "OpenZWave includes not found.")
+ endif (OPENZWAVE_INCLUDE_DIRS)
+ add_definitions(-DWITH_OPENZWAVE)
+ ELSE()
+diff --git a/hardware/OpenZWave.cpp b/hardware/OpenZWave.cpp
+index 272e3d0a7..a226a8924 100644
+--- a/hardware/OpenZWave.cpp
++++ b/hardware/OpenZWave.cpp
+@@ -22,10 +22,10 @@
+ #include "../main/localtime_r.h"
+
+ //OpenZWave includes
+-#include <openzwave/Options.h>
+-#include <openzwave/Manager.h>
+-#include <openzwave/platform/Log.h>
+-#include <openzwave/ValueIDIndexesDefines.h>
++#include <Options.h>
++#include <Manager.h>
++#include <platform/Log.h>
++#include <ValueIDIndexesDefines.h>
+
+ #include "ZWaveCommands.h"
+
+diff --git a/hardware/openzwave/control_panel/ozwcp.cpp b/hardware/openzwave/control_panel/ozwcp.cpp
+index 0b21a9cf3..5e401b2f1 100644
+--- a/hardware/openzwave/control_panel/ozwcp.cpp
++++ b/hardware/openzwave/control_panel/ozwcp.cpp
+@@ -39,11 +39,11 @@
+ #include <stdlib.h>
+ #include <time.h>
+ #include <string.h>
+-#include <openzwave/Options.h>
+-#include <openzwave/Manager.h>
+-#include <openzwave/Node.h>
+-#include <openzwave/Group.h>
+-#include <openzwave/Notification.h>
++#include <Options.h>
++#include <Manager.h>
++#include <Node.h>
++#include <Group.h>
++#include <Notification.h>
+ #include "../../../main/Logger.h"
+
+ #include <sys/stat.h>
+diff --git a/hardware/openzwave/control_panel/ozwcp.h b/hardware/openzwave/control_panel/ozwcp.h
+index ebfef1791..96d14b3bf 100644
+--- a/hardware/openzwave/control_panel/ozwcp.h
++++ b/hardware/openzwave/control_panel/ozwcp.h
+@@ -38,8 +38,8 @@
+
+ #include <list>
+ #include <algorithm>
+-#include <openzwave/Driver.h>
+-#include <openzwave/Notification.h>
++#include <Driver.h>
++#include <Notification.h>
+
+ #define MAX_NODES 255
+
+--
+2.26.2
+
--- /dev/null
+From 3c23a7863c0b01273d4c36423769443ea7e4a7bb Mon Sep 17 00:00:00 2001
+From: David Woodhouse <dwmw2@infradead.org>
+Date: Fri, 5 Jun 2020 15:02:41 +0100
+Subject: [PATCH 1/2] unzip: reduce file name size to 65535 to work with
+ external minizip
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The external minizip project has changed the unzGetCurrentFileInfo()
+function to take a uint16_t as the filename size, instead of a uLong
+as in the original version in zlib.
+
+(Reported as https://github.com/nmoinvaz/minizip/issues/490 but it
+was 3½ years ago and might be too late to fix it now, although changing
+it back to a *larger* type is a lot safer than reducing the size, and
+perhaps they should.)
+
+This means that our 65536-byte buffer gets truncated to zero, as the
+compiler tells us when we build agaisnt the external minizip:
+
+domoticz/main/unzip_stream.h:140:50: warning: conversion from ‘long unsigned int’ to ‘uint16_t’ {aka ‘short unsigned int’} changes value from ‘65536’ to ‘0’ [-Woverflow]
+ 140 | unzGetCurrentFileInfo(handler_, &info, path, sizeof(path), NULL, 0, NULL, 0);
+ | ^~~~~~~~~~~~
+
+Reduce the buffer size to 65535 bytes instead.
+---
+ main/unzip_stream.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/main/unzip_stream.h b/main/unzip_stream.h
+index 136fcefd9..813f2489a 100644
+--- a/main/unzip_stream.h
++++ b/main/unzip_stream.h
+@@ -135,7 +135,7 @@ namespace clx {
+ basic_unzip_stream& open(handler_type h) {
+ handler_ = h;
+ if (handler_) {
+- char path[65536];
++ char path[65535];
+ unz_file_info info;
+ unzGetCurrentFileInfo(handler_, &info, path, sizeof(path), NULL, 0, NULL, 0);
+ path_ = path;
+--
+2.26.2
+
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=exfatprogs
+PKG_VERSION:=1.0.3
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/$(PKG_NAME)/$(PKG_NAME)/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=5cb2c9e65a1633148d498913508977e6073d6f454a7addfa98623f6d065d5589
+
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/exfatprogs/Default
+ SECTION:=utils
+ CATEGORY:=Utilities
+ SUBMENU:=Filesystem
+ URL:=https://github.com/exfatprogs/exfatprogs
+endef
+
+define Package/exfat-mkfs
+ $(Package/exfatprogs/Default)
+ TITLE:=Utility for creating an exFAT File System
+endef
+
+define Package/exfat-fsck
+ $(Package/exfatprogs/Default)
+ TITLE:=Utility for checking/repairing an exFAT File System
+endef
+
+CONFIGURE_ARGS += \
+ --enable-shared \
+ --disable-static
+
+define Package/exfat-mkfs/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/mkfs.exfat $(1)/usr/sbin
+endef
+
+define Package/exfat-fsck/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/fsck.exfat $(1)/usr/sbin
+endef
+
+$(eval $(call BuildPackage,exfat-mkfs))
+$(eval $(call BuildPackage,exfat-fsck))
include $(TOPDIR)/rules.mk
PKG_NAME:=fio
-PKG_VERSION:=3.19
-PKG_RELEASE:=2
+PKG_VERSION:=3.20
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://brick.kernel.dk/snaps
-PKG_HASH:=4b6db7eaee26d6fd33bf210eb73b6d37f5d45adcc88726866ad030565f3ccc06
+PKG_HASH:=87a539ecebce3d8281ff9c653e9978302f91c72534273e85ef37a980ac5398d7
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-or-later
+++ /dev/null
---- a/t/io_uring.c
-+++ b/t/io_uring.c
-@@ -63,7 +63,6 @@ struct file {
- struct submitter {
- pthread_t thread;
- int ring_fd;
-- struct drand48_data rand;
- struct io_sq_ring sq_ring;
- struct io_uring_sqe *sqes;
- struct io_cq_ring cq_ring;
-@@ -170,7 +169,7 @@ static void init_io(struct submitter *s, unsigned index)
- }
- f->pending_ios++;
-
-- lrand48_r(&s->rand, &r);
-+ r = lrand48();
- offset = (r % (f->max_blocks - 1)) * BS;
-
- if (register_files) {
-@@ -286,7 +285,7 @@ static void *submitter_fn(void *data)
-
- printf("submitter=%d\n", gettid());
-
-- srand48_r(pthread_self(), &s->rand);
-+ srand48(pthread_self());
-
- prepped = 0;
- do {
+++ /dev/null
---- a/configure
-+++ b/configure
-@@ -892,7 +892,8 @@ cat > $TMPC << EOF
-
- int main(int argc, char **argv)
- {
-- return vasprintf(NULL, "%s", NULL) == 0;
-+ va_list ap;
-+ return vasprintf(NULL, "%s", ap) == 0;
- }
- EOF
- if compile_prog "" "" "have_vasprintf"; then
include $(TOPDIR)/rules.mk
PKG_NAME:=flent-tools
-PKG_VERSION:=1.2.2
+PKG_VERSION:=1.3.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/tohojo/flent/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=554bb1b5329cd39113cbb34445765ca6868dbf033aa64832d957d4a09d56adc7
+PKG_HASH:=f71793bb924b36d0e4c230182755c3f5dd26cd7f239b1fa6b717d942258cbf9a
PKG_BUILD_DIR:=$(BUILD_DIR)/flent-$(PKG_VERSION)
PKG_LICENSE:=GPL-3.0-only
TITLE:=Helper programs for the Flent test tool
URL:=https://flent.org
MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk>
- DEPENDS+=+librt
+ DEPENDS+=+librt +coreutils-sleep +coreutils-date
endef
define Package/flent-tc_iterate/description
include $(TOPDIR)/rules.mk
PKG_NAME:=gawk
-PKG_VERSION:=5.0.1
+PKG_VERSION:=5.1.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/gawk
-PKG_HASH:=8e4e86f04ed789648b66f757329743a0d6dfb5294c3b91b756a474f1ce05a794
+PKG_HASH:=cf5fea4ac5665fd5171af4716baab2effc76306a9572988d5ba1078f196382bd
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=GPL-3.0-or-later
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
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=hwinfo
+PKG_VERSION:=21.70
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/openSUSE/hwinfo/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=bc3c4a4498e4abc32a54497ced715bbae5dfd19dd999da294bca6d69fea2db52
+
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_MAINTAINER:=Alberto Bursi <bobafetthotmail@gmail.com>
+
+PKG_BUILD_DEPENDS:= hwinfo/host
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+
+# Execute in host build directory
+HOST_MAKE_FLAGS += -C $(HOST_BUILD_DIR)
+
+define Host/Configure
+ # copy uuid.h to another location in host build dir as that's where this package expects it
+ $(INSTALL_DIR) $(STAGING_DIR_HOST)/include/uuid/
+ $(CP) $(STAGING_DIR_HOST)/include/e2fsprogs/uuid/uuid.h $(STAGING_DIR_HOST)/include/uuid/uuid.h
+endef
+
+define Host/Compile
+ # Build using host compiler and let it generate the files we need
+ # CFLAGS, CPPFLAGS & LDFLAGS need to be passed with CC because they are being ingored
+ CC="$(HOSTCC) $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(HOST_LDFLAGS)" $(MAKE) $(HOST_MAKE_FLAGS)
+endef
+
+define Host/Install
+ $(INSTALL_DIR) $(STAGING_DIR_HOST)/share/hwinfo
+ $(CP) $(HOST_BUILD_DIR)/src/isdn/cdb/isdn_cdb $(STAGING_DIR_HOST)/share/hwinfo/
+ $(CP) $(HOST_BUILD_DIR)/src/isdn/cdb/mk_isdnhwdb $(STAGING_DIR_HOST)/share/hwinfo/
+
+ $(CP) $(HOST_BUILD_DIR)/src/ids/check_hd $(STAGING_DIR_HOST)/share/hwinfo/
+endef
+
+define Build/Configure
+ # Fetch prebuilt files from host build dir
+ $(INSTALL_DIR) $(PKG_BUILD_DIR)/src/isdn/cdb/
+ $(CP) $(STAGING_DIR_HOST)/share/hwinfo/isdn_cdb $(PKG_BUILD_DIR)/src/isdn/cdb/
+ $(CP) $(STAGING_DIR_HOST)/share/hwinfo/mk_isdnhwdb $(PKG_BUILD_DIR)/src/isdn/cdb/
+
+ $(INSTALL_DIR) $(PKG_BUILD_DIR)/src/ids/
+ $(CP) $(STAGING_DIR_HOST)/share/hwinfo/check_hd $(PKG_BUILD_DIR)/src/ids/
+
+
+ # Set copied files modtime to one day in the future
+ # to prevent rebuilding them
+ perl -e 'utime(time() + 86400, time() + 86400, $$$$ARGV[0])' \
+ $(PKG_BUILD_DIR)/src/isdn/cdb/isdn_cdb
+ perl -e 'utime(time() + 86400, time() + 86400, $$$$ARGV[0])' \
+ $(PKG_BUILD_DIR)/src/isdn/cdb/mk_isdnhwdb
+ perl -e 'utime(time() + 86400, time() + 86400, $$$$ARGV[0])' \
+ $(PKG_BUILD_DIR)/src/ids/check_hd
+endef
+
+
+define Package/hwinfo
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=probe the hardware present in the system
+ URL:=https://github.com/openSUSE/hwinfo
+ DEPENDS:= +libuuid @!USE_UCLIBC
+endef
+
+define Package/hwinfo/description
+ hwinfo/libhd are used to probe for the hardware present in the system.
+ It can be used to generate a system overview log which can be later
+ used for support.
+ This project provides a hardware probing library libhd.so and a
+ command line tool hwinfo using it. A major project using this library
+ is YaST, the SUSE installation tool.
+endef
+
+
+define Package/hwinfo/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_BUILD_DIR)/hwinfo $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_BUILD_DIR)/src/libhd.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,hwinfo))
+$(eval $(call HostBuild))
--- /dev/null
+hardcode version of hwinfo, this must be changed in sync
+with hwinfo version changes when updating the package
+--- a/Makefile
++++ b/Makefile
+@@ -12,12 +12,8 @@
+
+ GIT2LOG := $(shell if [ -x ./git2log ] ; then echo ./git2log --update ; else echo true ; fi)
+ GITDEPS := $(shell [ -d .git ] && echo .git/HEAD .git/refs/heads .git/refs/tags)
+-BRANCH := $(shell [ -d .git ] && git branch | perl -ne 'print $$_ if s/^\*\s*//')
+-ifdef HWINFO_VERSION
+-VERSION := $(shell echo ${HWINFO_VERSION} > VERSION; cat VERSION)
+-else
+-VERSION := $(shell $(GIT2LOG) --version VERSION ; cat VERSION)
+-endif
++BRANCH := master
++VERSION := $(shell echo 21.7 > VERSION; cat VERSION)
+ PREFIX := hwinfo-$(VERSION)
+
+ include Makefile.common
--- /dev/null
+the library libx86emu is used only for manipulating VBIOS
+firmware to get some information from it.
+Since it's not crucial for OpenWrt usecase and it's a pain
+to compile this package with this dependency in OpenWrt due to
+host builds and whatnot, we simply remove it and disable this
+functionality in hwinfo.
+This also saves some space.
+--- a/Makefile
++++ b/Makefile
+@@ -25,13 +25,14 @@
+ endif
+ ULIBDIR = $(LIBDIR)
+
++# this library has been removed from the code, disabling it here too
+ # ia64
+-ifneq ($(filter i386 x86_64, $(ARCH)),)
+-SLIBS += -lx86emu
+-TLIBS += -lx86emu
+-SO_LIBS += -lx86emu
+-TSO_LIBS += -lx86emu
+-endif
++#ifneq ($(filter i386 x86_64, $(ARCH)),)
++#SLIBS += -lx86emu
++#TLIBS += -lx86emu
++#SO_LIBS += -lx86emu
++#TSO_LIBS += -lx86emu
++#endif
+
+ SHARED_FLAGS =
+ OBJS_NO_TINY = names.o parallel.o modem.o
+
+--- a/src/hd/bios.c
++++ b/src/hd/bios.c
+@@ -447,9 +447,10 @@
+ }
+ }
+
+-#if defined(__i386__) || defined (__x86_64__)
+- get_vbe_info(hd_data, vbe);
+-#endif
++//disabled as we removed the library needed for this function
++//#if defined(__i386__) || defined (__x86_64__)
++// get_vbe_info(hd_data, vbe);
++//#endif
+
+ if(vbe->ok) {
+ bt->vbe_ver = vbe->version;
+
+--- a/src/hd/bios.h
++++ b/src/hd/bios.h
+@@ -5,4 +5,5 @@
+ #define BIOS_RAM_SIZE 0x100
+
+ void hd_scan_bios(hd_data_t *hd_data);
+-void get_vbe_info(hd_data_t *hd_data, vbe_info_t *vbe);
++//disabled as we removed the lib needed by this function
++//void get_vbe_info(hd_data_t *hd_data, vbe_info_t *vbe);
+
+--- a/src/hd/mdt.c
++++ b/src/hd/mdt.c
+@@ -1,4 +1,6 @@
+-#if defined(__i386__) || defined (__x86_64__)
++//disabling this whole thing as it's using the lib we have removed
++//#if defined(__i386__) || defined (__x86_64__)
++#if defined(__disabled__) || defined (__disabled__)
+
+ #define _GNU_SOURCE
+
--- /dev/null
+>>enable all IDs for hwinfo
+>>changes to make it respect compile flags
+>>disable the generation of "tiny hwinfo ID tables" because it is a long
+process and has no purpose, it seems I cannot even build the "tiny" version of hwinfo
+on my OpenSUSE system, so I guess that it is just legacy stuff that bitrotted.
+
+--- a/src/ids/Makefile
++++ b/src/ids/Makefile
+@@ -17,47 +17,47 @@
+ src/usb src/usb2 src/isapnp src/monitor src/camera src/tv2 src/tv src/dvb2 src/dvb \
+ src/chipcard src/modem src/pcmcia src/s390 src/sdio
+
+-ifeq "$(ARCH)" "i386"
++#ifeq "$(ARCH)" "i386"
+ IDFILES += src/x11.i386 src/modem.i386
+-endif
++#endif
+
+-ifeq "$(ARCH)" "ppc"
++#ifeq "$(ARCH)" "ppc"
+ IDFILES += src/x11.ppc src/x11.ppc.special
+-endif
++#endif
+
+-ifeq "$(ARCH)" "alpha"
++#ifeq "$(ARCH)" "alpha"
+ IDFILES += src/x11.axp
+-endif
++#endif
+
+-ifeq "$(ARCH)" "sparc"
++#ifeq "$(ARCH)" "sparc"
+ IDFILES += src/x11.sparc
+-endif
++#endif
+
+-ifeq "$(ARCH)" "sparc64"
++#ifeq "$(ARCH)" "sparc64"
+ IDFILES += src/x11.sparc
+-endif
++#endif
+
+-ifeq "$(ARCH)" "ia64"
++#ifeq "$(ARCH)" "ia64"
+ IDFILES += src/x11.ia64
+-endif
++#endif
+
+-ifeq "$(ARCH)" "x86_64"
++#ifeq "$(ARCH)" "x86_64"
+ IDFILES += src/x11.amd64
+-endif
++#endif
+
+ IDFILES += src/pci src/storage src/sound src/mouse src/braille
+
+ $(LIBHD_D): hd_ids.o
+- ar r $(LIBHD) $?
++ $(AR) r $(LIBHD) $?
+
+ check_hd: check_hd.c
+- $(CC) $(CFLAGS) $< -o $@
++ $(CC) $(LDFLAGS) $(CFLAGS) $< -o $@
+
+-hd_ids.c: hd_ids.h hd_ids_tiny.h
++hd_ids.c: hd_ids.h
+
+ hd_ids.h hd.ids: check_hd $(IDFILES)
+ ./check_hd --check --sort --cfile hd_ids.h $(IDFILES)
+
+-hd_ids_tiny.h: check_hd hd.ids
+- ./check_hd --mini --cfile hd_ids_tiny.h --log=hd_tiny.log --out=hd_tiny.ids hd.ids
++#hd_ids_tiny.h: check_hd hd.ids
++# ./check_hd --mini --cfile hd_ids_tiny.h --log=hd_tiny.log --out=hd_tiny.ids hd.ids
+
--- /dev/null
+Some makefile modifications to:
+>>disable the logic that detects and sets architecture (it screws up cross-compiling)
+>>disable some secondary build functions like creating changelogs or report files for other tools
+>>disable the install functionality as we take the files we need with OpenWrt build system
+>>changes to all makefiles to respect the compile flags
+
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ TOPDIR = $(CURDIR)
+ SUBDIRS = src
+-TARGETS = hwinfo hwinfo.pc changelog
++TARGETS = hwinfo
+ CLEANFILES = hwinfo hwinfo.pc hwinfo.static hwscan hwscan.static hwscand hwscanqueue doc/libhd doc/*~
+ LIBS = -lhd
+ SLIBS = -lhd -luuid
+@@ -18,11 +18,11 @@
+
+ include Makefile.common
+
+-ifeq "$(ARCH)" "x86_64"
+-LIBDIR ?= /usr/lib64
+-else
++#ifeq "$(ARCH)" "x86_64"
++#LIBDIR ?= /usr/lib64
++#else
+ LIBDIR ?= /usr/lib
+-endif
++#endif
+ ULIBDIR = $(LIBDIR)
+
+ # this library has been removed from the code, disabling it here too
+@@ -39,13 +39,13 @@
+
+ .PHONY: fullstatic static shared tiny doc diet tinydiet uc tinyuc
+
+-ifdef HWINFO_VERSION
++#ifdef HWINFO_VERSION
+ changelog:
+ @true
+-else
+-changelog: $(GITDEPS)
+- $(GIT2LOG) --changelog changelog
+-endif
++#else
++#changelog: $(GITDEPS)
++# $(GIT2LOG) --changelog changelog
++#endif
+
+ hwscan: hwscan.o $(LIBHD)
+ $(CC) hwscan.o $(LDFLAGS) $(CFLAGS) $(LIBS) -o $@
+@@ -99,28 +99,29 @@
+ @cd doc ; doxygen libhd.doxy
+
+ install:
+- install -d -m 755 $(DESTDIR)/sbin $(DESTDIR)/usr/sbin $(DESTDIR)$(ULIBDIR) \
+- $(DESTDIR)$(ULIBDIR)/pkgconfig $(DESTDIR)/usr/include
+- install -m 755 hwinfo $(DESTDIR)/usr/sbin
+- install -m 755 src/ids/check_hd $(DESTDIR)/usr/sbin
+- install -m 755 src/ids/convert_hd $(DESTDIR)/usr/sbin
+- if [ -f $(LIBHD_SO) ] ; then \
+- install $(LIBHD_SO) $(DESTDIR)$(ULIBDIR) ; \
+- ln -snf $(LIBHD_NAME) $(DESTDIR)$(ULIBDIR)/$(LIBHD_SONAME) ; \
+- ln -snf $(LIBHD_SONAME) $(DESTDIR)$(ULIBDIR)/$(LIBHD_BASE).so ; \
+- else \
+- install -m 644 $(LIBHD) $(DESTDIR)$(ULIBDIR) ; \
+- fi
+- install -m 644 hwinfo.pc $(DESTDIR)$(ULIBDIR)/pkgconfig
+- install -m 644 src/hd/hd.h $(DESTDIR)/usr/include
+- perl -pi -e "s/define\s+HD_VERSION\b.*/define HD_VERSION\t\t$(LIBHD_MAJOR_VERSION)/" $(DESTDIR)/usr/include/hd.h
+- perl -pi -e "s/define\s+HD_MINOR_VERSION\b.*/define HD_MINOR_VERSION\t$(LIBHD_MINOR_VERSION)/" $(DESTDIR)/usr/include/hd.h
+- install -m 755 getsysinfo $(DESTDIR)/usr/sbin
+- install -m 755 src/isdn/cdb/mk_isdnhwdb $(DESTDIR)/usr/sbin
+- install -d -m 755 $(DESTDIR)/usr/share/hwinfo
+- install -d -m 755 $(DESTDIR)/var/lib/hardware/udi
+- install -m 644 src/isdn/cdb/ISDN.CDB.txt $(DESTDIR)/usr/share/hwinfo
+- install -m 644 src/isdn/cdb/ISDN.CDB.hwdb $(DESTDIR)/usr/share/hwinfo
++# install -d -m 755 $(DESTDIR)/sbin $(DESTDIR)/usr/sbin $(DESTDIR)$(ULIBDIR) \
++# $(DESTDIR)$(ULIBDIR)/pkgconfig $(DESTDIR)/usr/include
++# install -m 755 hwinfo $(DESTDIR)/usr/sbin
++# install -m 755 src/ids/check_hd $(DESTDIR)/usr/sbin
++# install -m 755 src/ids/convert_hd $(DESTDIR)/usr/sbin
++# if [ -f $(LIBHD_SO) ] ; then \
++# install $(LIBHD_SO) $(DESTDIR)$(ULIBDIR) ; \
++# ln -snf $(LIBHD_NAME) $(DESTDIR)$(ULIBDIR)/$(LIBHD_SONAME) ; \
++# ln -snf $(LIBHD_SONAME) $(DESTDIR)$(ULIBDIR)/$(LIBHD_BASE).so ; \
++# else \
++# install -m 644 $(LIBHD) $(DESTDIR)$(ULIBDIR) ; \
++# fi
++# install -m 644 hwinfo.pc $(DESTDIR)$(ULIBDIR)/pkgconfig
++# install -m 644 src/hd/hd.h $(DESTDIR)/usr/include
++# perl -pi -e "s/define\s+HD_VERSION\b.*/define HD_VERSION\t\t$(LIBHD_MAJOR_VERSION)/" $(DESTDIR)/usr/include/hd.h
++# perl -pi -e "s/define\s+HD_MINOR_VERSION\b.*/define HD_MINOR_VERSION\t$(LIBHD_MINOR_VERSION)/" $(DESTDIR)/usr/include/hd.h
++# install -m 755 getsysinfo $(DESTDIR)/usr/sbin
++# install -m 755 src/isdn/cdb/mk_isdnhwdb $(DESTDIR)/usr/sbin
++# install -d -m 755 $(DESTDIR)/usr/share/hwinfo
++# install -d -m 755 $(DESTDIR)/var/lib/hardware/udi
++# install -m 644 src/isdn/cdb/ISDN.CDB.txt $(DESTDIR)/usr/share/hwinfo
++# install -m 644 src/isdn/cdb/ISDN.CDB.hwdb $(DESTDIR)/usr/share/hwinfo
++ @true
+
+ archive: changelog
+ @if [ ! -d .git ] ; then echo no git repo ; false ; fi
+
+--- a/Makefile.common
++++ b/Makefile.common
+@@ -1,28 +1,26 @@
+ # libhd/Makefile.common
+
+-ARCH := $(shell uname -m)
+-ifeq "$(ARCH)" "i486"
+-ARCH := i386
+-endif
+-ifeq "$(ARCH)" "i586"
+-ARCH := i386
+-endif
+-ifeq "$(ARCH)" "i686"
+-ARCH := i386
+-endif
+-ifeq "$(ARCH)" "parisc"
+-EXTRA_FLAGS := -fPIC $(EXTRA_FLAGS)
+-endif
++#ARCH := $(shell uname -m)
++#ifeq "$(ARCH)" "i486"
++#ARCH := i386
++#endif
++#ifeq "$(ARCH)" "i586"
++#ARCH := i386
++#endif
++#ifeq "$(ARCH)" "i686"
++#ARCH := i386
++#endif
++#ifeq "$(ARCH)" "parisc"
++#EXTRA_FLAGS := -fPIC $(EXTRA_FLAGS)
++#endif
+
+ LIBHD_VERSION := $(shell cat $(TOPDIR)/VERSION)
+ LIBHD_MINOR_VERSION := $(shell cut -d . -f 2 $(TOPDIR)/VERSION)
+ LIBHD_MAJOR_VERSION := $(shell cut -d . -f 1 $(TOPDIR)/VERSION)
+
+-RPM_OPT_FLAGS ?= -O2
+-
+ CC ?= gcc
+ LD = ld
+-CFLAGS += $(RPM_OPT_FLAGS) -Wall -Wno-pointer-sign -pipe -g $(SHARED_FLAGS) $(EXTRA_FLAGS) -I$(TOPDIR)/src/hd
++CFLAGS += -Wall -Wno-pointer-sign $(SHARED_FLAGS) $(EXTRA_FLAGS) -I$(TOPDIR)/src/hd
+ SHARED_FLAGS = -fPIC
+
+ LDFLAGS += -Lsrc
+@@ -36,7 +34,7 @@
+ LIBHD_SO = $(TOPDIR)/src/$(LIBHD_NAME)
+ LIBHD_D = $(TOPDIR)/src/.lib
+
+-export CC TOPDIR CFLAGS LIBHD ARCH
++export CC TOPDIR CFLAGS LIBHD
+
+ .PHONY: all distclean clean install subdirs
+
+
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -12,7 +12,7 @@
+ #endif
+
+ $(LIBHD): $(OBJS)
+- ar r $@ $?
++ $(AR) r $@ $?
+ @rm -f $(LIBHD_D)
+
+ ifdef SHARED_FLAGS
+--- a/src/hd/Makefile
++++ b/src/hd/Makefile
+@@ -12,4 +12,4 @@
+ @perl -pi -e "s/define\s+HD_MINOR_VERSION\s+\d+/define HD_MINOR_VERSION\t$(LIBHD_MINOR_VERSION)/" $@
+
+ $(LIBHD_D): $(OBJS)
+- ar r $(LIBHD) $?
++ $(AR) r $(LIBHD) $?
+
+--- a/src/isdn/Makefile
++++ b/src/isdn/Makefile
+@@ -5,5 +5,5 @@
+ include $(TOPDIR)/Makefile.common
+
+ $(LIBHD_D): $(OBJS)
+- ar r $(LIBHD) $?
++ $(AR) r $(LIBHD) $?
+
+--- a/src/smp/Makefile
++++ b/src/smp/Makefile
+@@ -4,4 +4,4 @@
+ include $(TOPDIR)/Makefile.common
+
+ $(LIBHD_D): $(OBJS)
+- ar r $(LIBHD) $?
++ $(AR) r $(LIBHD) $?
+
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
include $(TOPDIR)/rules.mk
PKG_NAME:=inotify-tools
-PKG_VERSION:=3.20.1
-PKG_HASH:=a433cc1dedba851078276db69b0e97f9fe41e4ba3336d2971adfca4b3a6242ac
+PKG_VERSION:=3.20.2.2
+PKG_HASH:=770fb1d94ace659f975d7494e3ab8b421a6aab930b9c37c7c290ab5280abb7b8
PKG_RELEASE:=1
PKG_SOURCE_URL:=https://codeload.github.com/rvoicilas/inotify-tools/tar.gz/$(PKG_VERSION)?
include $(INCLUDE_DIR)/package.mk
+CONFIGURE_ARGS+= --disable-doxygen
+
+define Build/Prepare
+ $(call Build/Prepare/Default)
+ $(CP) $(PKG_BUILD_DIR)/README.md $(PKG_BUILD_DIR)/README
+endef
+
define Package/inotify-tools/Default
URL:=https://github.com/rvoicilas/inotify-tools/wiki
endef
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
endef
-
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/inotifytools
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/inotifytools/* $(1)/usr/include/inotifytools/
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 "
include $(TOPDIR)/rules.mk
PKG_NAME:=klish
-PKG_VERSION:=2.1.4
-PKG_RELEASE:=2
+PKG_VERSION:=2.2.0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://libcode.org/attachments/download/70/
-PKG_HASH:=a89dd1027dce713407b6d68e836c8fdead56406dcfc650da84da8e0b92c9b2e5
+PKG_SOURCE_URL:=http://libcode.org/attachments/download/77/
+PKG_HASH:=a069ef06bb485e15b2ff27b856e46cd76fee1eac7e0f62a8d8ac0ad413694614
PKG_MAINTAINER:=Takashi Umeno <umeno.takashi@gmail.com>
PKG_LICENSE:=BSD-3-Clause
PKG_NAME:=kmod
PKG_VERSION:=20
-PKG_RELEASE:=2
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/kernel/kmod/
define Package/kmod
$(call Package/kmod/Default)
TITLE+= (tools)
+ ALTERNATIVES:=\
+ 200:/sbin/depmod:/sbin/kmod \
+ 200:/sbin/insmod:/sbin/kmod \
+ 200:/sbin/lsmod:/sbin/kmod \
+ 200:/sbin/modinfo:/sbin/kmod \
+ 200:/sbin/modprobe:/sbin/kmod \
+ 200:/sbin/rmmod:/sbin/kmod
endef
define Package/kmod/description
insert, remove, list, check properties, resolve dependencies and aliases.
endef
-LEGACY_BINARIES:= \
- depmod \
- insmod \
- lsmod \
- modinfo \
- modprobe \
- rmmod
-
define Package/kmod/install
$(INSTALL_DIR) $(1)/sbin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/kmod $(1)/sbin
-
- for b in $(LEGACY_BINARIES); do \
- ln -sf kmod $(1)/sbin/$$$$b ; \
- done
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=less
-PKG_VERSION:=530
+PKG_VERSION:=562
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.greenwoodsoftware.com/less
-PKG_HASH:=503f91ab0af4846f34f0444ab71c4b286123f0044a4964f1ae781486c617f2e2
+PKG_HASH:=eab470c7c928132441541aa49b1352c0fc699c30f762dfaeb3bf88e6f0fd701b
-PKG_LICENSE:=GPL-3.0
+PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_MAINTAINER:=Julen Landa Alustiza <julen@zokormazo.info>
PKG_CPE_ID:=cpe:/a:gnu:less
CATEGORY:=Utilities
TITLE:=Pager program similar to more
URL:=http://www.greenwoodsoftware.com/less/
- ALTERNATIVES:=200:/bin/less:/usr/bin/less
+ ALTERNATIVES:=200:/usr/bin/less:/usr/bin/gnu-less
endef
define Package/less/Default/description
ifeq ($(BUILD_VARIANT),narrow)
CONFIGURE_VARS += \
- ac_cv_lib_ncursesw_initscr=no
+ ac_cv_lib_ncursesw_initscr=no
endif
ifeq ($(BUILD_VARIANT),wide)
define Package/less/install
$(INSTALL_DIR) $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/less $(1)/usr/bin/less
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/less $(1)/usr/bin/gnu-less
endef
Package/less-wide/install = $(Package/less/install)
-Package/less-wide/postinst = $(Package/less/postinst)
-Package/less-wide/postrm = $(Package/less/postrm)
$(eval $(call BuildPackage,less))
$(eval $(call BuildPackage,less-wide))
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:=LVM2
-PKG_VERSION:=2.03.08
-PKG_RELEASE:=2
+PKG_VERSION:=2.03.09
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://sourceware.org/pub/lvm2
-PKG_HASH:=6e0261dc9f6ab0ef1fc4a63d105a73e06eb536a273a9d6c2ccc414548c8e1ec8
+PKG_HASH:=c03a8b8d5c03ba8ac54ebddf670ae0d086edac54a6577e8c50721a8e174eb975
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_NAME:=lxc
PKG_VERSION:=4.0.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://linuxcontainers.org/downloads/lxc/
if [ ! -d /run ]; then
ln -s /var/run /run
fi
+
+ start
}
PKG_NAME:=mariadb
PKG_VERSION:=10.4.13
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL := \
MARIADB_CLIENT := \
mysql \
- mysql_upgrade \
mysqlcheck
MARIADB_CLIENT_EXTRA := \
+ msql2mysql \
mysql_find_rows \
+ mysql_plugin \
mysql_waitpid \
mysqlaccess \
+ mysqlbinlog \
mysqldump \
mysqlimport \
mysqlshow \
innochecksum \
my_print_defaults \
mysql_install_db \
+ mysql_upgrade \
mysqladmin \
mysqld \
mysqld_safe
aria_pack \
aria_read_log \
mariabackup \
- msql2mysql \
myisam_ftdump \
myisamchk \
myisamlog \
myisampack \
mysql_convert_table_format \
mysql_fix_extensions \
- mysql_plugin \
mysql_secure_installation \
mysql_setpermission \
mysql_tzinfo_to_sql \
- mysqlbinlog \
mysqld_multi \
mysqld_safe_helper \
mysqldumpslow \
include $(TOPDIR)/rules.mk
PKG_NAME:=ncdu
-PKG_VERSION:=1.14.2
+PKG_VERSION:=1.15
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://dev.yorhel.nl/download
-PKG_HASH:=947a7f5c1d0cd4e338e72b4f5bc5e2873651442cec3cb012e04ad2c37152c6b1
+PKG_HASH:=4a593dc5cceb2492a9669f5f5d69d0e517de457a11036788ea4591f33c5297fb
-PKG_MAINTAINER:=Charles Lehner <celehner1@gmail.com>
+PKG_MAINTAINER:=Charles E. Lehner <cel@celehner.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
PKG_NAME:=open-vm-tools
PKG_VERSION:=11.1.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-16036546.tar.gz
PKG_SOURCE_URL:=https://github.com/vmware/open-vm-tools/releases/download/stable-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
-define Package/open-vm-tools
+define Package/open-vm-tools/Default
SECTION:=utils
CATEGORY:=Utilities
+ URL:=https://github.com/vmware/open-vm-tools
+endef
+
+define Package/open-vm-tools
+$(call Package/open-vm-tools/Default)
DEPENDS:=@TARGET_x86 +glib2 +libpthread +libtirpc
TITLE:=open-vm-tools
URL:=https://github.com/vmware/open-vm-tools
MAINTAINER:=Yuhei OKAWA <tochiro.srchack@gmail.com>
endef
-define Package/open-vm-tools-vm-tools/description
+define Package/open-vm-tools/description
Open Virtual Machine Tools for VMware guest OS
endef
+define Package/open-vm-tools-fuse
+$(call Package/open-vm-tools/Default)
+ DEPENDS:=+open-vm-tools +libfuse
+ TITLE:=open-vm-tools-fuse
+ MAINTAINER:=Kagurazaka Kotori <kagurazakakotori@gmail.com>
+endef
+
+define Package/open-vm-tools-fuse/description
+ Shared Folders user mode FUSE client support for VMware guest OS
+endef
CONFIGURE_ARGS+= \
--without-icu \
--without-xerces \
--enable-resolutionkms=no
-
define Package/open-vm-tools/install
$(INSTALL_DIR) $(1)/etc/init.d/
$(INSTALL_BIN) ./files/vmtoolsd.init $(1)/etc/init.d/vmtoolsd
$(CP) $(PKG_INSTALL_DIR)/usr/share/open-vm-tools/messages/ja/vmtoolsd.vmsg $(1)/usr/share/open-vm-tools/messages/ja/
endef
+define Package/open-vm-tools-fuse/install
+ $(INSTALL_DIR) $(1)/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vmhgfs-fuse $(1)/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vmware-vmblock-fuse $(1)/bin/
+endef
+
$(eval $(call BuildPackage,open-vm-tools))
+$(eval $(call BuildPackage,open-vm-tools-fuse))
include $(TOPDIR)/rules.mk
PKG_NAME:=openzwave
-PKG_VERSION:=1.6.1063
+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:=8b1b674f825cd3623d2aa9c286edbb05c0ff6537d5d3ee891ae98e21d28de26b
+PKG_HASH:=dc747c24cae11e4aa121252cc38ea92d1fbc587dc514737dd0e2b24191521c48
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
define Package/openzwave/default
URL:=http://openzwave.com
- MAINTAINER:=
+ MAINTAINER:=David Woodhouse <dwmw2@infradead.org>
DEPENDS:=+libpthread +libstdcpp
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=pciutils
-PKG_VERSION:=3.6.4
+PKG_VERSION:=3.7.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/utils/pciutils
-PKG_HASH:=f67ff732976e2db2a5ccdf3960020796526ba6b05f6b1cdd24b7b206af706055
+PKG_HASH:=9d40b97be8b6a2cdf96aead5a61881d1f7e4e0da9544a9bac4fba1ae9dcd40eb
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
PKG_LICENSE:=GPL-2.0
endef
-PCI_IDS_VER:=0.324
+PCI_IDS_VER:=0.336
PCI_IDS_FILE:=pci.ids.$(PCI_IDS_VER)
define Download/pci_ids
FILE:=$(PCI_IDS_FILE)
URL_FILE:=pci.ids
URL:=@GITHUB/vcrhonek/hwdata/v$(PCI_IDS_VER)
- HASH:=6dba287b4aaafb9582d6139eda22ee6580651b8557828b9598d99078a5f4217e
+ HASH:=94053616c1f9b93540861931fb7891b1b30d6fd21b3e2c1647467527ea38f557
endef
$(eval $(call Download,pci_ids))
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
include $(TOPDIR)/rules.mk
PKG_NAME:=procps-ng
-PKG_VERSION:=3.3.15
-PKG_RELEASE:=5
+PKG_VERSION:=3.3.16
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@SF/procps-ng
-PKG_HASH:=10bd744ffcb3de2d591d2f6acf1a54a7ba070fdcc432a855931a5057149f0465
+PKG_HASH:=925eacd65dedcf9c98eb94e8978bbfb63f5de37294cc1047d81462ed477a20af
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=sane-backends
-PKG_VERSION:=1.0.29
+PKG_VERSION:=1.0.30
PKG_RELEASE:=1
+
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://gitlab.com/sane-project/backends/uploads/54f858b20a364fc35d820df935a86478
-PKG_HASH:=aa027b4e5f59849cd41b8c26d54584cf31fffd986049019be6ad4140e11ea8ed
+PKG_SOURCE_URL:=https://gitlab.com/sane-project/backends/uploads/c3dd60c9e054b5dee1e7b01a7edc98b0
+PKG_HASH:=3f5d96a9c47f6124a46bb577c776bbc4896dd17b9203d8bfbc7fe8cbbcf279a3
+
PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
PKG_LICENSE:=GPL-2.0 GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING LICENSE
This package contains the SANE frontends.
endef
-CONFIGURE_ARGS+= \
+CONFIGURE_ARGS += \
--enable-shared \
--enable-static \
--disable-preload \
--without-usb-record-replay \
# ./configure does not even try to detect mmap if crosscompiling
-CONFIGURE_VARS+= \
- ac_cv_func_mmap_fixed_mapped="yes" \
+CONFIGURE_VARS += \
+ ac_cv_func_mmap_fixed_mapped="yes"
define Build/Configure
mkdir -p $(PKG_BUILD_DIR)/backend/.libs
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:=sispmctl
-PKG_VERSION:=4.5
-PKG_RELEASE:=2
+PKG_VERSION:=4.7
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_HASH:=59336c06e3590d42564917cc96c9fb654b6aa2814e01636b2e4fdcbfb3b9094c
+PKG_HASH:=e7d2f32f590984b6f44d758946e57776d68146e47f6cdc41d21c9218f2d2317b
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=sysstat
-PKG_VERSION:=12.2.1
-PKG_RELEASE:=2
+PKG_VERSION:=12.2.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://pagesperso-orange.fr/sebastien.godard/
-PKG_HASH:=8edb0e19b514ac560a098a02933a4735b881296d61014db89bf80f05dd7a4732
+PKG_HASH:=78388b64acec81378b962e66b40e57acd4b18ff17a849bc9308f95d290248c9c
PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
PKG_LICENSE:=GPL-2.0-or-later
CONFIGURE_VARS+= \
sa_lib_dir="/usr/lib/sysstat" \
- sa_dir="/var/log/sysstat" \
conf_dir="/etc/sysstat"
CONFIGURE_ARGS+= \
PKG_NAME:=telldus-core
PKG_VERSION:=2.1.2
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.telldus.com/TellStick/Software/telldus-core/
/etc/tellstick.conf
endef
-CMAKE_OPTIONS+=\
+CMAKE_OPTIONS += \
-DBUILD_LIBTELLDUS-CORE=1 \
-DBUILD_TDTOOL=1 \
-DGENERATE_MAN=0 \
--- /dev/null
+--- a/common/Event.h
++++ b/common/Event.h
+@@ -9,7 +9,7 @@
+
+
+ #ifndef _WINDOWS
+- #include <tr1/memory>
++ #include <memory>
+ typedef void* EVENT_T;
+ #else
+ #include <windows.h>
+@@ -32,7 +32,7 @@ namespace TelldusCore {
+ virtual bool isValid() const;
+ };
+
+- typedef std::tr1::shared_ptr<EventData> EventDataRef;
++ typedef std::shared_ptr<EventData> EventDataRef;
+
+ class EventBase {
+ public:
+@@ -74,7 +74,7 @@ namespace TelldusCore {
+ friend class EventHandler;
+ };
+
+- typedef std::tr1::shared_ptr<Event> EventRef;
++ typedef std::shared_ptr<Event> EventRef;
+ }
+
+ #endif // TELLDUS_CORE_COMMON_EVENT_H_
--- /dev/null
+--- a/common/Thread.cpp
++++ b/common/Thread.cpp
+@@ -16,6 +16,8 @@
+ #endif
+ #include "common/EventHandler.h"
+
++#include <pthread.h>
++
+ namespace TelldusCore {
+
+ class ThreadPrivate {
+--- a/service/Timer.cpp
++++ b/service/Timer.cpp
+@@ -7,6 +7,7 @@
+ #include "service/Timer.h"
+ #ifdef _WINDOWS
+ #else
++#include <pthread.h>
+ #include <sys/time.h>
+ #include <errno.h>
+ #endif
--- /dev/null
+--- a/service/DeviceManager.h
++++ b/service/DeviceManager.h
+@@ -7,6 +7,7 @@
+ #ifndef TELLDUS_CORE_SERVICE_DEVICEMANAGER_H_
+ #define TELLDUS_CORE_SERVICE_DEVICEMANAGER_H_
+
++#include <ctime>
+ #include <set>
+ #include <string>
+ #include "service/Device.h"
+--- a/service/Sensor.h
++++ b/service/Sensor.h
+@@ -7,6 +7,7 @@
+ #ifndef TELLDUS_CORE_SERVICE_SENSOR_H_
+ #define TELLDUS_CORE_SERVICE_SENSOR_H_
+
++#include <ctime>
+ #include <string>
+ #include "common/Mutex.h"
+
include $(TOPDIR)/rules.mk
PKG_NAME:=unrar
-PKG_VERSION:=5.9.1
+PKG_VERSION:=5.9.3
PKG_RELEASE:=1
PKG_SOURCE:=unrarsrc-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.rarlab.com/rar
-PKG_HASH:=0eb1d1b8e02102fccae775a6d6b79336b69e2cf90e2045de92594dcfb58de100
+PKG_HASH:=28c176c29da86d7efe3cb9a227255d8340f761ba95969195982ec87c8eb2dd69
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>, \
Ted Hess <thess@kitschensync.net>
# Linux using LCC
#CXX=lcc
-@@ -166,7 +166,7 @@ uninstall-unrar:
+@@ -167,7 +167,7 @@ uninstall-unrar:
rm -f $(DESTDIR)/bin/unrar
install-lib:
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))
--- /dev/null
+#
+# Copyright (C) 2006-2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=xfsprogs
+PKG_VERSION:=5.5.0
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@KERNEL/linux/utils/fs/xfs/xfsprogs
+PKG_HASH:=cfbb0b136799c48cb79435facd0969c5a60a587a458e2d16f9752771027efbec
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+PKG_CPE_ID:=cpe:/a:sgi:xfsprogs
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/xfsprogs/default
+ SECTION:=utils
+ CATEGORY:=Utilities
+ SUBMENU:=Filesystem
+ DEPENDS:=+libuuid +libpthread
+ URL:=https://xfs.org/
+endef
+
+define Package/xfs-admin
+$(call Package/xfsprogs/default)
+ TITLE:=Utilities for changing parameters of an XFS filesystems
+endef
+
+define Package/xfs-mkfs
+$(call Package/xfsprogs/default)
+ TITLE:=Utility for creating XFS filesystems
+endef
+
+define Package/xfs-fsck
+$(call Package/xfsprogs/default)
+ TITLE:=Utilities for checking and repairing XFS filesystems
+endef
+
+define Package/xfs-growfs
+$(call Package/xfsprogs/default)
+ TITLE:=Utility for increasing the size of XFS filesystems
+endef
+
+CONFIGURE_ARGS += \
+ --disable-gettext \
+ --disable-blkid \
+ --disable-readline \
+ --disable-editline \
+ --disable-termcap \
+ --disable-lib64 \
+ --disable-librt \
+ --disable-ubisan \
+ --disable-addrsan \
+ --disable-threadsan \
+ --disable-scrub \
+ --disable-libicu
+
+TARGET_CFLAGS += -DHAVE_MAP_SYNC
+
+define Package/xfs-admin/install
+ $(INSTALL_DIR) $(1)/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xfs_db $(1)/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xfs_admin $(1)/sbin
+endef
+
+define Package/xfs-mkfs/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/mkfs.xfs $(1)/usr/sbin
+endef
+
+define Package/xfs-fsck/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/xfs_repair $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xfs_db $(1)/usr/sbin
+endef
+
+define Package/xfs-growfs/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xfs_growfs $(1)/usr/sbin
+endef
+
+$(eval $(call BuildPackage,xfs-admin))
+$(eval $(call BuildPackage,xfs-mkfs))
+$(eval $(call BuildPackage,xfs-fsck))
+$(eval $(call BuildPackage,xfs-growfs))
--- /dev/null
+--- a/Makefile
++++ b/Makefile
+@@ -62,8 +62,7 @@ HDR_SUBDIRS = include libxfs
+ LIBFROG_SUBDIR = libfrog
+ DLIB_SUBDIRS = libxlog libxcmd libhandle
+ LIB_SUBDIRS = libxfs $(DLIB_SUBDIRS)
+-TOOL_SUBDIRS = copy db estimate fsck fsr growfs io logprint mkfs quota \
+- mdrestore repair rtcp m4 man doc debian spaceman
++TOOL_SUBDIRS = db fsck growfs io mkfs repair
+
+ ifeq ("$(ENABLE_SCRUB)","yes")
+ TOOL_SUBDIRS += scrub
--- /dev/null
+--- a/libxfs/libxfs_priv.h
++++ b/libxfs/libxfs_priv.h
+@@ -85,9 +85,6 @@ struct iomap;
+ /* for all the support code that uses progname in error messages */
+ extern char *progname;
+
+-#undef ASSERT
+-#define ASSERT(ex) assert(ex)
+-
+ /*
+ * We have no need for the "linux" dev_t in userspace, so these
+ * are no-ops, and an xfs_dev_t is stored in VFS_I(ip)->i_rdev
--- /dev/null
+From 930f9aa8f08759fa739dd6e615ba8b3a1890008d Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Mon, 6 May 2019 13:56:13 -0700
+Subject: [PATCH] db/malloc: Use posix_memalign instead of deprecated valloc
+
+valloc is not available with uClibc-ng as well as being deprecated, which
+causes compilation errors. aligned_alloc is not available before C11 so
+used posix_memalign.'
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ db/malloc.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/db/malloc.c
++++ b/db/malloc.c
+@@ -44,8 +44,7 @@ xmalloc(
+ {
+ void *ptr;
+
+- ptr = valloc(size);
+- if (ptr)
++ if(!posix_memalign(&ptr, sysconf(_SC_PAGESIZE), size))
+ return ptr;
+ badmalloc();
+ /* NOTREACHED */
--- /dev/null
+--- a/io/mmap.c
++++ b/io/mmap.c
+@@ -11,6 +11,14 @@
+ #include "init.h"
+ #include "io.h"
+
++#ifndef MAP_SYNC
++#define MAP_SYNC 0
++#endif
++
++#ifndef MAP_SHARED_VALIDATE
++#define MAP_SHARED_VALIDATE 0x03
++#endif
++
+ static cmdinfo_t mmap_cmd;
+ static cmdinfo_t mread_cmd;
+ static cmdinfo_t msync_cmd;
include $(TOPDIR)/rules.mk
PKG_NAME:=yara
-PKG_VERSION:=4.0.0
+PKG_VERSION:=4.0.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/VirusTotal/yara/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=8ee411fe3a60d1b463f152e356e0ee46b23331c461fd60ef8f82fed580c73f46
+PKG_HASH:=c63e2c4d73fc37e860db5d7e13d945684a0a6d1d17be7161fe1dd8f99268b03c
PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=zstd
-PKG_VERSION:=1.4.4
-PKG_RELEASE:=3
+PKG_VERSION:=1.4.5
+PKG_RELEASE:=2
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://codeload.github.com/facebook/zstd/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=a364f5162c7d1a455cc915e8e3cf5f4bd8b75d09bc0f53965b0c9ca1383c52c8
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.zst
+PKG_SOURCE_URL:=https://github.com/facebook/zstd/releases/download/v$(PKG_VERSION)
+PKG_HASH:=2c2366874bc449ff539614266d8c0d6ecdb4baf30bb65609c239ab4ed23c03c7
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-or-later
TARGET_CFLAGS:= $(filter-out -O%,$(TARGET_CFLAGS)) -O3
endif
+TARGET_CFLAGS += $(if $(CONFIG_USE_UCLIBC),-D_BSD_SOURCE)
+
MESON_ARGS += \
-Dlegacy_level=1 \
-Ddebug_level=0 \
+++ /dev/null
-From f62cf1fff5dabcfaaa8c85638723bc19842f52f4 Mon Sep 17 00:00:00 2001
-From: Sergey Dryabzhinsky <sergey.dryabzhinsky+github@gmail.com>
-Date: Tue, 19 Nov 2019 23:15:28 +0300
-Subject: [PATCH] Fix typo in util.c
-
-There must be mtim*e*
----
- programs/util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/programs/util.c b/programs/util.c
-index 5d15450d2..d3ffc1133 100644
---- a/programs/util.c
-+++ b/programs/util.c
-@@ -73,7 +73,7 @@ int UTIL_setFileStat(const char *filename, stat_t *statbuf)
- {
- /* (atime, mtime) */
- struct timespec timebuf[2] = { {0, UTIME_NOW} };
-- timebuf[1] = statbuf->st_mtim;
-+ timebuf[1] = statbuf->st_mtime;
- res += utimensat(AT_FDCWD, filename, timebuf, 0);
- }
- #endif
--- /dev/null
+--- a/build/meson/meson.build
++++ b/build/meson/meson.build
+@@ -22,7 +22,6 @@ project('zstd',
+ cc = meson.get_compiler('c')
+ cxx = meson.get_compiler('cpp')
+ pkgconfig = import('pkgconfig')
+-python3 = import('python').find_installation()
+ windows_mod = import('windows')
+
+ host_machine_os = host_machine.system()
+@@ -40,8 +39,8 @@ compiler_msvc = 'msvc'
+ zstd_version = meson.project_version()
+
+ zstd_h_file = join_paths(meson.current_source_dir(), '../../lib/zstd.h')
+-GetZstdLibraryVersion_py = files('GetZstdLibraryVersion.py')
+-r = run_command(python3, GetZstdLibraryVersion_py, zstd_h_file)
++GetZstdLibraryVersion_py = find_program('GetZstdLibraryVersion.py', native : true)
++r = run_command(GetZstdLibraryVersion_py, zstd_h_file)
+ if r.returncode() == 0
+ zstd_version = r.stdout().strip()
+ message('Project version is now: @0@'.format(zstd_version))
+++ /dev/null
-From 612a06eb3ef7f42739ace99fbca6ad63b788d46c Mon Sep 17 00:00:00 2001
-From: Sergey Dryabzhinsky <sergey.dryabzhinsky+github@gmail.com>
-Date: Tue, 19 Nov 2019 23:24:00 +0300
-Subject: [PATCH] Update util.c
-
----
- programs/util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/programs/util.c b/programs/util.c
-index d3ffc1133..aa75ca6d4 100644
---- a/programs/util.c
-+++ b/programs/util.c
-@@ -73,7 +73,7 @@ int UTIL_setFileStat(const char *filename, stat_t *statbuf)
- {
- /* (atime, mtime) */
- struct timespec timebuf[2] = { {0, UTIME_NOW} };
-- timebuf[1] = statbuf->st_mtime;
-+ timebuf[1].tv_sec = statbuf->st_mtime;
- res += utimensat(AT_FDCWD, filename, timebuf, 0);
- }
- #endif