Merge pull request #14688 from mhei/libxml2-iconv-support
authorMichael Heimpold <mhei@heimpold.de>
Mon, 8 Feb 2021 21:11:04 +0000 (22:11 +0100)
committerGitHub <noreply@github.com>
Mon, 8 Feb 2021 21:11:04 +0000 (22:11 +0100)
libxml2: allow building with iconv support

31 files changed:
lang/golang/golang/Makefile
lang/php8/pecl.mk
lang/python/python-hyperlink/Makefile
lang/python/python-hyperlink/patches/001-omit-tests.patch
libs/getdns/Makefile
libs/nghttp2/Makefile
net/banip/Makefile
net/banip/files/README.md
net/banip/files/banip.sh
net/clamav/Makefile
net/haproxy/Makefile
net/haproxy/get-latest-patches.sh
net/mosquitto/Makefile
net/wg-installer/Makefile [new file with mode: 0644]
net/wg-installer/README.md [new file with mode: 0644]
net/wg-installer/common/wg.sh [new file with mode: 0644]
net/wg-installer/wg-client/config/wgclient.conf [new file with mode: 0644]
net/wg-installer/wg-client/lib/rpcd_ubus.sh [new file with mode: 0644]
net/wg-installer/wg-client/wg-client-installer.sh [new file with mode: 0644]
net/wg-installer/wg-server/config/wginstaller.json [new file with mode: 0644]
net/wg-installer/wg-server/config/wgserver.conf [new file with mode: 0644]
net/wg-installer/wg-server/hotplug.d/99-mesh-babeld [new file with mode: 0644]
net/wg-installer/wg-server/lib/install_wginstaller_user.sh [new file with mode: 0644]
net/wg-installer/wg-server/lib/wg_functions.sh [new file with mode: 0644]
net/wg-installer/wg-server/wginstaller.sh [new file with mode: 0644]
net/zerotier/Makefile
utils/oci-runtime-tools/Makefile [new file with mode: 0644]
utils/oci-runtime-tools/patches/001-fix-32-bit-build.patch [new file with mode: 0644]
utils/rtty/Makefile
utils/ttyd/Makefile
utils/ttyd/files/ttyd.config

index 7cc6d64aab0afadd623ca64fc29f04fa218d748f..a11a87eae934b2ae48579ab9ed31b88cb5b6df3e 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 GO_VERSION_MAJOR_MINOR:=1.15
-GO_VERSION_PATCH:=7
+GO_VERSION_PATCH:=8
 
 PKG_NAME:=golang
 PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH))
@@ -20,7 +20,7 @@ GO_SOURCE_URLS:=https://dl.google.com/go/ \
 
 PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz
 PKG_SOURCE_URL:=$(GO_SOURCE_URLS)
-PKG_HASH:=8631b3aafd8ecb9244ec2ffb8a2a8b4983cf4ad15572b9801f7c5b167c1a2abc
+PKG_HASH:=540c0ab7781084d124991321ed1458e479982de94454a98afab6acadf38497c2
 
 PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
 PKG_LICENSE:=BSD-3-Clause
index e89ffd6a9f40156ba3484c3e12c3ce545fbf74c1..29fedfae1c74b05d244cd5e93a90d54ef855f0ce 100644 (file)
@@ -13,7 +13,7 @@ endef
 
 define Build/Prepare
        $(Build/Prepare/Default)
-       ( cd $(PKG_BUILD_DIR); $(STAGING_DIR)/usr/bin/phpize8 )
+       $(if $(QUILT),,( cd $(PKG_BUILD_DIR); $(STAGING_DIR)/usr/bin/phpize8 ))
 endef
 
 CONFIGURE_VARS+= \
index eea6aa525b6338b37eb267b651972199ca5de5be..4583683bf7fc3f92791411b2f660c420bb38eb27 100644 (file)
@@ -8,11 +8,11 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-hyperlink
-PKG_VERSION:=20.0.1
+PKG_VERSION:=21.0.0
 PKG_RELEASE:=1
 
 PYPI_NAME:=hyperlink
-PKG_HASH:=47fcc7cd339c6cb2444463ec3277bdcfe142c8b1daf2160bdd52248deec815af
+PKG_HASH:=427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE
index e0ee3bddb1b052e80f5a1055c907b3ea7b0589dd..5b0a7fe8920a4c27dff3d937484dda39b745b905 100644 (file)
@@ -7,5 +7,5 @@
 -    packages=find_packages(where="src"),
 +    packages=find_packages(where="src", exclude=["*.test", "*.test.*"]),
      package_dir={"": "src"},
-     package_data=dict(hyperlink=["py.typed"]),
+     package_data=dict(hyperlink=["py.typed", "idna-tables-properties.csv.gz"]),
      zip_safe=False,
index 476368399f382012ddf1f69c7aab5021ff6dc29f..360fb8297d5e6d31a6f9f6f714642093e0d645b9 100644 (file)
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=getdns
 PKG_VERSION:=1.6.0
-PKG_RELEASE:=4
+PKG_RELEASE:=5
 
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=LICENSE
@@ -64,6 +64,11 @@ CMAKE_OPTIONS += -DUSE_LIBIDN2=$(if $(CONFIG_GETDNS_ENABLE_IDN_LIBIDN2),ON,OFF)
 # the test for libbsd.
 CMAKE_OPTIONS += -DBSD_LIBRARY=OFF
 
+# Disable static linking to ensure that utility programs such as getdns_query
+# don't end up as large statically linked binaries.
+CMAKE_OPTIONS += -DENABLE_STATIC=OFF
+CMAKE_OPTIONS += -DENABLE_SHARED=ON  # This is the default
+
 define Package/getdns/install
        $(INSTALL_DIR) $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgetdns.so.* $(1)/usr/lib/
index 4b6370e9c497d4fbd4f54ddd2bb831fc52524fe0..aeb005f014ce1d0ca4fb6d3a47548e5759f1383e 100644 (file)
@@ -1,12 +1,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nghttp2
-PKG_VERSION:=1.42.0
+PKG_VERSION:=1.43.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/nghttp2/nghttp2/releases/download/v$(PKG_VERSION)
-PKG_HASH:=c5a7f09020f31247d0d1609078a75efadeccb7e5b86fc2e4389189b1b431fe63
+PKG_HASH:=f7d54fa6f8aed29f695ca44612136fa2359013547394d5dffeffca9e01a26b0f
 
 PKG_MAINTAINER:=Hans Dedecker <dedeckeh@gmail.com>
 PKG_LICENSE:=MIT
index 614487147d55c900d3d9e5021d310b7989139324..392f42e4706bc8f87c08bb2e2de06d3390068576 100644 (file)
@@ -6,7 +6,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=banip
-PKG_VERSION:=0.7.0
+PKG_VERSION:=0.7.1
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0-or-later
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
index d8add1726e5a7ee9c45068ffefe22ef8528c170b..a9f2f41183e2d020bab61b52601bf4013d9661cc 100644 (file)
@@ -107,47 +107,49 @@ Available commands:
 ## banIP config options
 * Usually the auto pre-configured banIP setup works quite well and no manual overrides are needed
 
-| Option                  | Type   | Default             | Description                                                                                          |
-| :---------------------- | :----- | :------------------ | :--------------------------------------------------------------------------------------------------- |
-| ban_enabled             | option | 0                   | enable the banIP service                                                                             |
-| ban_autodetect          | option | 1                   | auto-detect wan interfaces, devices and subnets                                                      |
-| ban_debug               | option | 0                   | enable banIP related debug logging                                                                   |
-| ban_mail_enabled        | option | 0                   | enable the mail service                                                                              |
-| ban_monitor_enabled     | option | 0                   | enable the log monitor, e.g. to catch failed ssh/luci logins                                         |
-| ban_logsrc_enabled      | option | 0                   | enable the src-related logchain                                                                      |
-| ban_logdst_enabled      | option | 0                   | enable the dst-related logchain                                                                      |
-| ban_autoblacklist       | option | 1                   | add suspicious IPs automatically to the local blacklist                                              |
-| ban_autowhitelist       | option | 1                   | add wan IPs/subnets automatically to the local whitelist                                             |
-| ban_maxqueue            | option | 4                           | size of the download queue to handle downloads and processing in parallel             |
-| ban_reportdir           | option | /tmp/banIP-Report           | directory where banIP stores the report files                                         |
-| ban_backupdir           | option | /tmp/banIP-Backup           | directory where banIP stores the compressed backup files                              |
-| ban_ifaces              | list   | -                           | list option to add logical wan interfaces manually                                    |
-| ban_sources             | list   | -                           | list option to add banIP sources                                                      |
-| ban_countries           | list   | -                           | list option to add certain countries as an alpha-2 ISO code, e.g. 'de' for germany    |
-| ban_asns                | list   | -                           | list option to add certain ASNs (autonomous system number), e.g. '32934' for facebook |
-| ban_chain               | option | banIP                       | name of the root chain used by banIP                                                  |
-| ban_global_settype      | option | src+dst                     | global settype as default for all sources                                             |
-| ban_settype_src         | list   | -                           | special SRC settype for a certain sources                                             |
-| ban_settype_dst         | list   | -                           | special DST settype for a certain sources                                             |
-| ban_settype_all         | list   | -                           | special SRC+DST settype for a certain sources                                         |
-| ban_target_src          | option | DROP                        | default src action (used by log chains as well)                                       |
-| ban_target_dst          | option | REJECT                      | default dst action (used by log chains as well)                                       |
-| ban_lan_inputchains_4   | list   | input_lan_rule              | list option to add IPv4 lan input chains                                              |
-| ban_lan_inputchains_6   | list   | input_lan_rule              | list option to add IPv6 lan input chains                                              |
-| ban_lan_forwardchains_4 | list   | forwarding_lan_rule         | list option to add IPv4 lan forward chains                                            |
-| ban_lan_forwardchains_6 | list   | forwarding_lan_rule         | list option to add IPv6 lan forward chains                                            |
-| ban_wan_inputchains_4   | list   | input_wan_rule              | list option to add IPv4 wan input chains                                              |
-| ban_wan_inputchains_6   | list   | input_wan_rule              | list option to add IPv6 wan input chains                                              |
-| ban_wan_forwardchains_4 | list   | forwarding_wan_rule         | list option to add IPv4 wan forward chains                                            |
-| ban_wan_forwardchains_6 | list   | forwarding_wan_rule         | list option to add IPv6 wan forward chains                                            |
-| ban_mailreceiver        | option | -                           | receiver address for banIP related notification E-Mails                               |
-| ban_mailsender          | option | no-reply@banIP              | sender address for banIP related notification E-Mails                                 |
-| ban_mailtopic           | option | banIP notification          | topic for banIP related notification E-Mails                                          |
-| ban_mailprofile         | option | ban_notify                  | mail profile used in 'msmtp' for banIP related notification E-Mails                   |
-| ban_srcarc              | option | /etc/banip/banip.sources.gz | full path to the compressed source archive file used by banIP                         |
-| ban_maclist             | option | /etc/banip/banip.maclist    | full path to the maclist file used by banIP                                           |
-| ban_blacklist           | option | /etc/banip/banip.blacklist  | full path to the blacklist file used by banIP                                         |
-| ban_whitelist           | option | /etc/banip/banip.whitelist  | full path to the whitelist file used by banIP                                         |
+| Option                  | Type   | Default                       | Description                                                                           |
+| :---------------------- | :----- | :---------------------------- | :------------------------------------------------------------------------------------ |
+| ban_enabled             | option | 0                             | enable the banIP service                                                              |
+| ban_autodetect          | option | 1                             | auto-detect wan interfaces, devices and subnets                                       |
+| ban_debug               | option | 0                             | enable banIP related debug logging                                                    |
+| ban_mail_enabled        | option | 0                             | enable the mail service                                                               |
+| ban_monitor_enabled     | option | 0                             | enable the log monitor, e.g. to catch failed ssh/luci logins                          |
+| ban_logsrc_enabled      | option | 0                             | enable the src-related logchain                                                       |
+| ban_logdst_enabled      | option | 0                             | enable the dst-related logchain                                                       |
+| ban_autoblacklist       | option | 1                             | add suspicious IPs automatically to the local blacklist                               |
+| ban_autowhitelist       | option | 1                             | add wan IPs/subnets automatically to the local whitelist                              |
+| ban_maxqueue            | option | 4                             | size of the download queue to handle downloads and processing in parallel             |
+| ban_reportdir           | option | /tmp/banIP-Report             | directory where banIP stores the report files                                         |
+| ban_backupdir           | option | /tmp/banIP-Backup             | directory where banIP stores the compressed backup files                              |
+| ban_ifaces              | list   | -                             | list option to add logical wan interfaces manually                                    |
+| ban_sources             | list   | -                             | list option to add banIP sources                                                      |
+| ban_countries           | list   | -                             | list option to add certain countries as an alpha-2 ISO code, e.g. 'de' for germany    |
+| ban_asns                | list   | -                             | list option to add certain ASNs (autonomous system number), e.g. '32934' for facebook |
+| ban_chain               | option | banIP                         | name of the root chain used by banIP                                                  |
+| ban_global_settype      | option | src+dst                       | global settype as default for all sources                                             |
+| ban_settype_src         | list   | -                             | special SRC settype for a certain sources                                             |
+| ban_settype_dst         | list   | -                             | special DST settype for a certain sources                                             |
+| ban_settype_all         | list   | -                             | special SRC+DST settype for a certain sources                                         |
+| ban_target_src          | option | DROP                          | default src action (used by log chains as well)                                       |
+| ban_target_dst          | option | REJECT                        | default dst action (used by log chains as well)                                       |
+| ban_lan_inputchains_4   | list   | input_lan_rule                | list option to add IPv4 lan input chains                                              |
+| ban_lan_inputchains_6   | list   | input_lan_rule                | list option to add IPv6 lan input chains                                              |
+| ban_lan_forwardchains_4 | list   | forwarding_lan_rule           | list option to add IPv4 lan forward chains                                            |
+| ban_lan_forwardchains_6 | list   | forwarding_lan_rule           | list option to add IPv6 lan forward chains                                            |
+| ban_wan_inputchains_4   | list   | input_wan_rule                | list option to add IPv4 wan input chains                                              |
+| ban_wan_inputchains_6   | list   | input_wan_rule                | list option to add IPv6 wan input chains                                              |
+| ban_wan_forwardchains_4 | list   | forwarding_wan_rule           | list option to add IPv4 wan forward chains                                            |
+| ban_wan_forwardchains_6 | list   | forwarding_wan_rule           | list option to add IPv6 wan forward chains                                            |
+| ban_mailreceiver        | option | -                             | receiver address for banIP related notification E-Mails                               |
+| ban_mailsender          | option | no-reply@banIP                | sender address for banIP related notification E-Mails                                 |
+| ban_mailtopic           | option | banIP notification            | topic for banIP related notification E-Mails                                          |
+| ban_mailprofile         | option | ban_notify                    | mail profile used in 'msmtp' for banIP related notification E-Mails                   |
+| ban_srcarc              | option | /etc/banip/banip.sources.gz   | full path to the compressed source archive file used by banIP                         |
+| ban_localsources        | list   | maclist, whitelist, blacklist | limit the selection to certain local sources                                          |
+| ban_extrasources        | list   | -                             | add additional, non-banIP related IPSets e.g. for reporting or queries                |
+| ban_maclist_timeout     | option | -                             | individual maclist IPSet timeout                                                      |
+| ban_whitelist_timeout   | option | -                             | individual whitelist IPSet timeout                                                    |
+| ban_blacklist_timeout   | option | -                             | individual blacklist IPSet timeout                                                    |
   
 ## Examples
 **list/edit banIP sources:**
@@ -334,7 +336,7 @@ password        <password>
 </code></pre>
 Finally enable E-Mail support and add a valid E-Mail receiver address in LuCI.
   
-**Edit, add new adblock sources:**  
+**Edit, add new banIP sources:**  
 The banIP blocklist sources are stored in an external, compressed JSON file '/etc/banip/banip.sources.gz'. 
 This file is directly parsed in LuCI and accessible via CLI, just call _/etc/init.d/banip list_.
 
index 34cd90eae90f76515d65fc7db8ab38b81e631f00..aca1c8538a09fc179bdb0747a2156e5965dc6246 100755 (executable)
@@ -12,7 +12,7 @@
 export LC_ALL=C
 export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
 set -o pipefail
-ban_ver="0.7.0"
+ban_ver="0.7.1"
 ban_enabled="0"
 ban_mail_enabled="0"
 ban_proto4_enabled="0"
@@ -151,6 +151,9 @@ f_conf()
                        elif [ "${option}" = "ban_localsources" ]
                        then
                                eval "${option}=\"$(printf "%s" "${ban_localsources}")${value} \""
+                       elif [ "${option}" = "ban_extrasources" ]
+                       then
+                               eval "${option}=\"$(printf "%s" "${ban_extrasources}")${value} \""
                        elif [ "${option}" = "ban_settype_src" ]
                        then
                                eval "${option}=\"$(printf "%s" "${ban_settype_src}")${value} \""
@@ -233,7 +236,7 @@ f_conf()
        ban_logterms="${ban_logterms:-"dropbear sshd luci"}"
        f_log "debug" "f_conf  ::: ifaces: ${ban_ifaces:-"-"}, chain: ${ban_chain}, set_type: ${ban_global_settype}, log_chains (src/dst): ${ban_logchain_src}/${ban_logchain_dst}, targets (src/dst): ${ban_target_src}/${ban_target_dst}"
        f_log "debug" "f_conf  ::: lan_inputs (4/6): ${ban_lan_inputchains_4}/${ban_lan_inputchains_6}, lan_forwards (4/6): ${ban_lan_forwardchains_4}/${ban_lan_forwardchains_6}, wan_inputs (4/6): ${ban_wan_inputchains_4}/${ban_wan_inputchains_6}, wan_forwards (4/6): ${ban_wan_forwardchains_4}/${ban_wan_forwardchains_6}"
-       f_log "debug" "f_conf  ::: local_sources: ${ban_localsources:-"-"}, log_terms: ${ban_logterms:-"-"}, log_prefixes (src/dst): ${ban_logprefix_src}/${ban_logprefix_dst}, log_options (src/dst): ${ban_logopts_src}/${ban_logopts_dst}"
+       f_log "debug" "f_conf  ::: local_sources: ${ban_localsources:-"-"}, extra_sources: ${ban_extrasources:-"-"}, log_terms: ${ban_logterms:-"-"}, log_prefixes (src/dst): ${ban_logprefix_src}/${ban_logprefix_dst}, log_options (src/dst): ${ban_logopts_src}/${ban_logopts_dst}"
 }
 
 # check environment
@@ -733,12 +736,22 @@ f_ipset()
                "create")
                        if [ "${src_name}" = "maclist" ] && [ -s "${tmp_file}" ] && [ -z "$("${ban_ipset_cmd}" -q -n list "${src_name}")" ]
                        then
-                               "${ban_ipset_cmd}" create "${src_name}" hash:mac maxelem 262144 counters
+                               "${ban_ipset_cmd}" create "${src_name}" hash:mac maxelem 262144 counters timeout "${ban_maclist_timeout:-"0"}"
                                out_rc="${?}"
                        elif [ -s "${tmp_file}" ] && [ -z "$("${ban_ipset_cmd}" -q -n list "${src_name}")" ]
                        then
-                               "${ban_ipset_cmd}" create "${src_name}" hash:net hashsize 64 maxelem 262144 family "${src_ipver}" counters
-                               out_rc="${?}"
+                               if [ "${src_name%_*}" = "whitelist" ]
+                               then
+                                       "${ban_ipset_cmd}" create "${src_name}" hash:net hashsize 64 maxelem 262144 family "${src_ipver}" counters timeout "${ban_whitelist_timeout:-"0"}"
+                                       out_rc="${?}"
+                               elif [ "${src_name%_*}" = "blacklist" ]
+                               then
+                                       "${ban_ipset_cmd}" create "${src_name}" hash:net hashsize 64 maxelem 262144 family "${src_ipver}" counters timeout "${ban_blacklist_timeout:-"0"}"
+                                       out_rc="${?}"
+                               else
+                                       "${ban_ipset_cmd}" create "${src_name}" hash:net hashsize 64 maxelem 262144 family "${src_ipver}" counters
+                                       out_rc="${?}"
+                               fi
                        else
                                "${ban_ipset_cmd}" -q flush "${src_name}"
                                out_rc="${?}"
@@ -1338,7 +1351,7 @@ f_query()
                query_start="$(date "+%s")"
                printf "%s\n%s\n%s\n" ":::" "::: search '${search}' in banIP related IPSets" ":::"
 
-               for src in ${ban_localsources} ${ban_sources}
+               for src in ${ban_localsources} ${ban_sources} ${ban_extrasources}
                do
                        if [ "${src}" = "maclist" ] && [ -n "$("${ban_ipset_cmd}" -q -n list "${src}")" ]
                        then
@@ -1394,19 +1407,24 @@ f_report()
                > "${report_txt}"
                printf "%s\n" "{" >> "${report_json}"
                printf "\t%s\n" "\"ipsets\": {" >> "${report_json}"
-               for src in ${ban_localsources} ${ban_sources}
+               for src in ${ban_localsources} ${ban_sources} ${ban_extrasources}
                do
-                       if [ -n "$(printf "%s\n" "${ban_settype_src}" | grep -F "${src}")" ]
-                       then
-                               set_type="src"
-                       elif [ -n "$(printf "%s\n" "${ban_settype_dst}" | grep -F "${src}")" ]
+                       if [ -n "$(printf "%s" "${ban_extrasources}" | grep -F "${src}")" ]
                        then
-                               set_type="dst"
-                       elif [ -n "$(printf "%s\n" "${ban_settype_all}" | grep -F "${src}")" ]
-                       then
-                               set_type="src+dst"
+                               set_type="n/a"
                        else
-                               set_type="${ban_global_settype}"
+                               if [ -n "$(printf "%s\n" "${ban_settype_src}" | grep -F "${src}")" ]
+                               then
+                                       set_type="src"
+                               elif [ -n "$(printf "%s\n" "${ban_settype_dst}" | grep -F "${src}")" ]
+                               then
+                                       set_type="dst"
+                               elif [ -n "$(printf "%s\n" "${ban_settype_all}" | grep -F "${src}")" ]
+                               then
+                                       set_type="src+dst"
+                               else
+                                       set_type="${ban_global_settype}"
+                               fi
                        fi
                        if [ "${src}" = "maclist" ]
                        then
@@ -1414,7 +1432,7 @@ f_report()
                                if [ -n "${src_list}" ]
                                then
                                        cnt="$(printf "%s" "${src_list}" | awk '/^Number of entries:/{print $4}')"
-                                       cnt_acc="$(printf "%s" "${src_list}" | grep -cE "^(([0-9A-Z][0-9A-Z]:){5}[0-9A-Z]{2} packets [1-9]+)")"
+                                       cnt_acc="$(printf "%s" "${src_list}" | grep -cE " packets [1-9]+")"
                                        cnt_acc_sum=$((cnt_acc_sum+cnt_acc))
                                        cnt_mac_sum="${cnt}"
                                        cnt_sum=$((cnt_sum+cnt))
@@ -1430,7 +1448,7 @@ f_report()
                                        printf "\t\t\t%s\n" "\"count_mac\": \"${cnt}\"," >> "${report_json}"
                                        printf "\t\t\t%s" "\"count_acc\": \"${cnt_acc}\"" >> "${report_json}"
                                        printf ",\n\t\t\t%s" "\"member_acc\": [" >> "${report_json}"
-                                       printf "%s" "${src_list}" | awk '/^(([0-9A-Z][0-9A-Z]:){5}[0-9A-Z]{2} packets [1-9]+)/{print $1,$3}' | \
+                                       printf "%s" "${src_list}" | awk 'match($0,/ packets [1-9]+/){printf "%s %s\n",$1,substr($0,RSTART+9,RLENGTH-9)}' | \
                                                awk 'BEGIN{i=0};{i=i+1;if(i==1){printf "\n\t\t\t\t\t{\n\t\t\t\t\t\t\"member\": \"%s\",\n\t\t\t\t\t\t\"packets\": \"%s\"\n\t\t\t\t\t}",$1,$2}else{printf ",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"member\": \"%s\",\n\t\t\t\t\t\t\t\"packets\": \"%s\"\n\t\t\t\t\t\t}",$1,$2}}' >> "${report_json}"
                                        printf "\n\t\t\t%s\n" "]" >> "${report_json}"
                                        printf "\t\t%s" "}" >> "${report_json}"
@@ -1443,9 +1461,9 @@ f_report()
                                        if [ -n "${src_list}" ]
                                        then
                                                cnt="$(printf "%s\n" "${src_list}" | awk '/^Number of entries:/{print $4}')"
-                                               cnt_cidr="$(printf "%s\n" "${src_list}" | grep -cE "(/[0-9]{1,3} packets)")"
+                                               cnt_cidr="$(printf "%s\n" "${src_list}" | grep -cE "/[0-9]{1,3} packets [0-9]+")"
                                                cnt_ip=$((cnt-cnt_cidr-cnt_mac))
-                                               cnt_acc="$(printf "%s\n" "${src_list}" | grep -cE "( packets [1-9]+)")"
+                                               cnt_acc="$(printf "%s\n" "${src_list}" | grep -cE " packets [1-9]+")"
                                                cnt_cidr_sum=$((cnt_cidr_sum+cnt_cidr))
                                                cnt_ip_sum=$((cnt_ip_sum+cnt_ip))
                                                cnt_acc_sum=$((cnt_acc_sum+cnt_acc))
@@ -1462,7 +1480,7 @@ f_report()
                                                printf "\t\t\t%s\n" "\"count_mac\": \"0\"," >> "${report_json}"
                                                printf "\t\t\t%s" "\"count_acc\": \"${cnt_acc}\"" >> "${report_json}"
                                                printf ",\n\t\t\t%s" "\"member_acc\": [" >> "${report_json}"
-                                               printf "%s" "${src_list}" | awk '/( packets [1-9]+)/{print $1,$3}' | \
+                                               printf "%s" "${src_list}" | awk 'match($0,/ packets [1-9]+/){printf "%s %s\n",$1,substr($0,RSTART+9,RLENGTH-9)}' | \
                                                        awk 'BEGIN{i=0};{i=i+1;if(i==1){printf "\n\t\t\t\t\t{\n\t\t\t\t\t\t\"member\": \"%s\",\n\t\t\t\t\t\t\"packets\": \"%s\"\n\t\t\t\t\t}",$1,$2}else{printf ",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"member\": \"%s\",\n\t\t\t\t\t\t\t\"packets\": \"%s\"\n\t\t\t\t\t\t}",$1,$2}}' >> "${report_json}"
                                                printf "\n\t\t\t%s\n" "]" >> "${report_json}"
                                                printf "\t\t%s" "}" >> "${report_json}"
index abbb9d374580c7934d299180e1c31e491eccf317..5e8321daad5e2323958c93876f6d5f0642833e6d 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=clamav
-PKG_VERSION:=0.102.4
-PKG_RELEASE:=2
+PKG_VERSION:=0.103.0
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://www.clamav.net/downloads/production/
-PKG_HASH:=eebd426a68020ecad0d2084b8c763e6898ccfd5febcae833d719640bb3ff391b
+PKG_HASH:=32a9745277bfdda80e77ac9ca2f5990897418e9416880f3c31553ca673e80546
 
 PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr> \
                Lucian Cristian <lucian.cristian@gmail.com>
@@ -99,7 +99,7 @@ define Package/clamav/install
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/clamconf $(1)/usr/sbin/
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/clamdscan $(1)/usr/sbin/
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/clamscan $(1)/usr/sbin/
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/clamonacc $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/clamonacc $(1)/usr/sbin/
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sigtool $(1)/usr/sbin/
 
        $(INSTALL_DIR) $(1)/usr/lib
index 034919f537e3a7d96b7d6945f5e80d3f53a5568f..916c73a7181595865aef0a67b97b4f6e07da0877 100644 (file)
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=haproxy
-PKG_VERSION:=2.2.8
+PKG_VERSION:=2.2.9
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://www.haproxy.org/download/2.2/src
-PKG_HASH:=61f90e3e2a36bd8800a5bee31cba7eef37c9aa8a353b6c741edaa411510b14be
+PKG_HASH:=21680459b08b9ba21c8cc9f5dbd0ee6e1842f57a3a67f87179871e1c13ebd4e3
 
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
                Christian Lachner <gladiac@gmail.com>
index 98e3148697f82d08b2864e646012dcdf2f671bff..d0ee22dc89c9aa1329fe0ba2d5d76670a9eac060 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 CLONEURL=https://git.haproxy.org/git/haproxy-2.2.git
-BASE_TAG=v2.2.8
+BASE_TAG=v2.2.9
 TMP_REPODIR=tmprepo
 PATCHESDIR=patches
 
index f7e39e2badd9db05a0c17b7d5ad88715ed641cef..f6bab736713cacf7d59b9f4347ca3acee30bfae3 100644 (file)
@@ -9,7 +9,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mosquitto
-PKG_VERSION:=2.0.5
+PKG_VERSION:=2.0.7
 PKG_RELEASE:=1
 PKG_LICENSE:=EPL-2.0
 PKG_LICENSE_FILES:=LICENSE.txt
@@ -17,7 +17,7 @@ PKG_CPE_ID:=cpe:/a:eclipse:mosquitto
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://mosquitto.org/files/source/
-PKG_HASH:=67eaeb4160e5793715c017f53c4f42808d76129b7ad131d765a6a23792e58d5d
+PKG_HASH:=a98054f0b8161588975ef24e1d467550d3935f4c16ccee63ecb623248a28356e
 
 include $(INCLUDE_DIR)/package.mk
 
diff --git a/net/wg-installer/Makefile b/net/wg-installer/Makefile
new file mode 100644 (file)
index 0000000..b39a890
--- /dev/null
@@ -0,0 +1,81 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=wg-installer
+PKG_RELEASE:=$(AUTORELEASE)
+
+PKG_MAINTAINER:=Nick Hainke <vincent@systemli.org>
+
+include $(INCLUDE_DIR)/package.mk
+
+Build/Compile=
+
+define Package/wg-installer/Default
+       SECTION:=net
+       CATEGORY:=Network
+       TITLE:=WireGuard Installer
+       URL:=https://github.com/Freifunk-Spalter/
+       PKGARCH:=all
+       DEPENDS:=+kmod-wireguard +owipcalc
+endef
+
+define Package/wg-installer-server
+       $(call Package/wg-installer/Default)
+       TITLE+= (server)
+       MENU:=1
+       DEPENDS:=+rpcd +uhttpd +uhttpd-mod-ubus +owipcalc
+endef
+
+define Package/wg-installer-server/install
+       $(INSTALL_DIR) $(1)/usr/share/wginstaller/
+       $(INSTALL_BIN) ./wg-server/lib/install_wginstaller_user.sh $(1)/usr/share/wginstaller/install_wginstaller_user.sh
+       $(INSTALL_BIN) ./wg-server/lib/wg_functions.sh $(1)/usr/share/wginstaller/wg_functions.sh
+       $(INSTALL_BIN) ./common/wg.sh $(1)/usr/share/wginstaller/wg.sh
+
+       $(INSTALL_DIR) $(1)/usr/libexec/rpcd/
+       $(INSTALL_BIN) ./wg-server/wginstaller.sh $(1)/usr/libexec/rpcd/wginstaller
+
+       $(INSTALL_DIR) $(1)/usr/share/rpcd/acl.d
+       $(CP) ./wg-server/config/wginstaller.json $(1)/usr/share/rpcd/acl.d/
+
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./wg-server/config/wgserver.conf $(1)/etc/config/wgserver
+endef
+
+define Package/wg-installer-server/postinst
+       #!/bin/sh
+       if [ -z $${IPKG_INSTROOT} ] ; then
+               . /usr/share/wginstaller/install_wginstaller_user.sh
+       fi
+endef
+
+define Package/wg-installer-server-hotplug-babeld
+       $(call Package/wg-installer-server)
+       DEPENDS:=wg-installer-server
+endef
+
+define Package/wg-installer-server-hotplug-babeld/install
+       $(INSTALL_DIR) $(1)/etc/hotplug.d/net/
+       $(INSTALL_BIN) ./wg-server/hotplug.d/99-mesh-babeld $(1)/etc/hotplug.d/net/99-mesh-babeld
+endef
+
+define Package/wg-installer-client
+       $(call Package/wg-installer/Default)
+       TITLE+= (client)
+       DEPENDS:=+curl +wireguard-tools
+endef
+
+define Package/wg-installer-client/install
+       $(INSTALL_DIR) $(1)/usr/share/wginstaller/
+       $(INSTALL_BIN) ./wg-client/lib/rpcd_ubus.sh $(1)/usr/share/wginstaller/rpcd_ubus.sh
+       $(INSTALL_BIN) ./common/wg.sh $(1)/usr/share/wginstaller/wg.sh
+
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) ./wg-client/wg-client-installer.sh $(1)/usr/bin/wg-client-installer
+
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./wg-client/config/wgclient.conf $(1)/etc/config/wgclient
+endef
+
+$(eval $(call BuildPackage,wg-installer-server))
+$(eval $(call BuildPackage,wg-installer-server-hotplug-babeld))
+$(eval $(call BuildPackage,wg-installer-client))
diff --git a/net/wg-installer/README.md b/net/wg-installer/README.md
new file mode 100644 (file)
index 0000000..0f8189d
--- /dev/null
@@ -0,0 +1,30 @@
+## Wireguard Installer
+
+This tool can be used to automatically create wireguard tunnels. Using rpcd a new wireguard interface is created on the server where the client can connect to.
+
+## Installation
+
+For Server
+
+    opkg install wireguard-installer-server
+
+For Client
+
+    opkg install wireguard-installer-client
+
+Wiregurad server automatically installs a user and associated ACL to use the wireguard-installer-server features.
+The user is called wginstaller and so is the password.
+
+## Usage
+
+Get Usage Statistics
+
+    wg-client-installer get_usage --ip 127.0.0.1 --user wginstaller --password wginstaller
+
+Register Tunnel Interface
+
+    wg-client-installer register --ip 127.0.0.1 --user wginstaller --password wginstaller --bandwidth 10
+
+## Hotplugs
+
+- wg-installer-server-hotplug-babeld: mesh automatically via wireguard with babeld
diff --git a/net/wg-installer/common/wg.sh b/net/wg-installer/common/wg.sh
new file mode 100644 (file)
index 0000000..372d7f4
--- /dev/null
@@ -0,0 +1,13 @@
+next_port () {
+       local port_start=$1
+       local port_end=$2
+
+       ports=$(wg show all listen-port | awk '{print $2}')
+
+       for i in $(seq $port_start $port_end); do
+               if ! echo $ports | grep -q "$i"; then
+                       echo $i
+                       return
+               fi
+       done
+}
diff --git a/net/wg-installer/wg-client/config/wgclient.conf b/net/wg-installer/wg-client/config/wgclient.conf
new file mode 100644 (file)
index 0000000..b7adc33
--- /dev/null
@@ -0,0 +1,8 @@
+config client
+    option wg_key '/root/wg.key'
+    option wg_pub '/root/wg.pub'
+    option base_prefix '2000::/64'
+    option port_start '51820'
+    option port_end '52820'
+    option try_insecure '1'
+    option try_http '1'
diff --git a/net/wg-installer/wg-client/lib/rpcd_ubus.sh b/net/wg-installer/wg-client/lib/rpcd_ubus.sh
new file mode 100644 (file)
index 0000000..b1e2833
--- /dev/null
@@ -0,0 +1,134 @@
+. /usr/share/libubox/jshn.sh
+
+query_gw () {
+       local ip=$1
+       local req=$2
+       
+       # first try https
+       ret=$(curl https://$ip/ubus -d "$req") 2>/dev/null
+       if [ $? -eq 0 ]; then
+               echo $ret
+               return 0
+       fi
+
+       # try with --insecure
+       if [ $(uci get wgclient.@client[0].try_insecure) == '1' ]; then
+               ret=$(curl --insecure https://$ip/ubus -d "$req") 2>/dev/null
+               if [ $? -eq 0 ]; then
+                       echo $ret
+                       return 0
+               fi
+       fi
+
+       # try with http
+       if [ $(uci get wgclient.@client[0].try_http) == '1' ]; then
+               ret=$(curl http://$ip/ubus -d "$req") 2>/dev/null
+               if [ $? -eq 0 ]; then
+                       echo $ret
+                       return 0
+               fi
+       fi
+
+       return 1
+}
+
+request_token () {
+       local ip=$1
+       local user=$2
+       local password=$3
+
+       json_init
+       json_add_string "jsonrpc" "2.0"
+       json_add_int "id" "1"
+       json_add_string "method" "call"
+       json_add_array "params"
+       json_add_string "" "00000000000000000000000000000000"
+       json_add_string "" "session"
+       json_add_string "" "login"
+       json_add_object
+       json_add_string "username" $user
+       json_add_string "password" $password
+       json_close_object
+       json_close_array
+       req=$(json_dump)
+       ret=$(query_gw $ip "$req") 2>/dev/null
+       if [ $? != 0 ]; then
+               return 1
+       fi
+       json_load "$ret"
+       json_get_vars result result
+       json_select result
+       json_select 2
+       json_get_var ubus_rpc_session ubus_rpc_session
+       echo $ubus_rpc_session
+}
+
+wg_rpcd_get_usage () {
+       local token=$1
+       local ip=$2
+       local secret=$3
+
+       json_init
+       json_add_string "jsonrpc" "2.0"
+       json_add_int "id" "1"
+       json_add_string "method" "call"
+       json_add_array "params"
+       json_add_string "" $token
+       json_add_string "" "wginstaller"
+       json_add_string "" "get_usage"
+       json_add_object
+       json_close_object
+       json_close_array
+       req=$(json_dump)
+       ret=$(query_gw $ip "$req") 2>/dev/null
+       if [ $? != 0 ]; then
+               return 1
+       fi
+
+       # return values
+       json_load "$ret"
+       json_get_vars result result
+       json_select result
+       json_select 2
+       json_get_var num_interfaces num_interfaces
+       echo "num_interfaces: ${num_interfaces}"
+}
+
+wg_rpcd_register () {
+       local token=$1
+       local ip=$2
+       local uplink_bw=$3
+       local mtu=$4
+       local public_key=$5
+
+       json_init
+       json_add_string "jsonrpc" "2.0"
+       json_add_int "id" "1"
+       json_add_string "method" "call"
+       json_add_array "params"
+       json_add_string "" $token
+       json_add_string "" "wginstaller"
+       json_add_string "" "register"
+       json_add_object
+       json_add_int "uplink_bw" $uplink_bw
+       json_add_int "mtu" $mtu
+       json_add_string "public_key" $public_key
+       json_close_object
+       json_close_array
+       req=$(json_dump)
+       ret=$(query_gw $ip "$req") 2>/dev/null
+       if [ $? != 0 ]; then
+               return 1
+       fi
+
+       json_load "$ret"
+       json_get_vars result result
+       json_select result
+       json_select 2
+       json_get_var pubkey pubkey
+       json_get_var gw_ip gw_ip
+       json_get_var port port
+       echo "pubkey: ${pubkey}"
+       echo "gw_ip: ${gw_ip}"
+       echo "port: ${port}"
+}
diff --git a/net/wg-installer/wg-client/wg-client-installer.sh b/net/wg-installer/wg-client/wg-client-installer.sh
new file mode 100644 (file)
index 0000000..7484f49
--- /dev/null
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+. /usr/share/wginstaller/rpcd_ubus.sh
+. /usr/share/wginstaller/wg.sh
+
+CMD=$1
+shift
+
+while true; do
+       case "$1" in
+       -h | --help)
+               echo "help"
+               shift 1
+               ;;
+       -i | --ip)
+               IP=$2
+               shift 2
+               ;;
+       --user)
+               USER=$2
+               shift 2
+               ;;
+       --password)
+               PASSWORD=$2
+               shift 2
+               ;;
+       --bandwidth)
+               BANDWIDTH=$2
+               shift 2
+               ;;
+       --mtu)
+               WG_MTU=$2
+               shift 2
+               ;;
+       '')
+               break
+               ;;
+       *)
+               break
+               ;;
+       esac
+done
+
+escape_ip () {
+       local gw_ip=$1
+
+       # ipv4 processing
+       ret_ip=$(echo $gw_ip | tr '.' '_')
+
+       # ipv6 processing
+       ret_ip=$(echo $ret_ip | tr ':' '_')
+       ret_ip=$(echo $ret_ip | cut -d '[' -f 2)
+       ret_ip=$(echo $ret_ip | cut -d ']' -f 1)
+
+       echo $ret_ip
+}
+
+register_client_interface () {
+       local pubkey=$1
+       local gw_ip=$2
+       local gw_port=$3
+       local endpoint=$4
+       local mtu_client=$5
+
+       gw_key=$(uci get wgclient.@client[0].wg_key)
+       interface_name="gw_$(escape_ip $endpoint)"
+       port_start=$(uci get wgclient.@client[0].port_start)
+       port_end=$(uci get wgclient.@client[0].port_end)
+       base_prefix=$(uci get wgclient.@client[0].base_prefix)
+
+       port=$(next_port $port_start $port_end)
+       ifname="wg_$port"
+
+       offset=$(($port - $port_start))
+       client_ip=$(owipcalc $base_prefix add $offset next 128)
+       client_ip_assign="${client_ip}/128"
+
+       echo "Installing Interface With:"
+       echo "Endpoint ${endpoint}"
+       echo "Client IP ${client_ip}"
+       echo "Port ${port}"
+       echo "Pubkey ${pubkey}"
+
+       ip link add dev $ifname type wireguard
+
+       ip -6 a a dev $ifname $client_ip
+       wg set $ifname listen-port $port private-key $gw_key peer $pubkey allowed-ips ::/0 endpoint "${endpoint}:${gw_port}"
+       ip link set up dev $ifname
+       ip link set mtu $mtu_client dev $ifname # configure mtu here!
+}
+
+# rpc login
+token="$(request_token $IP $USER $PASSWORD)"
+if [ $? != 0 ]; then
+       echo "failed to register token"
+       exit 1
+fi
+
+# now call procedure
+case $CMD in
+"get_usage")
+       wg_rpcd_get_usage $token $IP
+       ;;
+"register")
+       gw_pub=$(uci get wgclient.@client[0].wg_pub)
+       gw_pub_string=$(cat $gw_pub)
+       register_output=$(wg_rpcd_register $token $IP $BANDWIDTH $WG_MTU $gw_pub_string)
+       if [ $? != 0 ]; then
+               echo "Failed to Register!"
+               exit 1
+       fi
+       pubkey=$(echo $register_output | awk '{print $2}')
+       ip_addr=$(echo $register_output | awk '{print $4}')
+       port=$(echo $register_output | awk '{print $6}')
+       client_ip=$(echo $register_output | awk '{print $8}')
+       register_client_interface $pubkey $ip_addr $port $IP $WG_MTU
+       ;;
+*) echo "Usage: wg-client-installer [cmd] --ip [2001::1] --user wginstaller --password wginstaller" ;;
+esac
diff --git a/net/wg-installer/wg-server/config/wginstaller.json b/net/wg-installer/wg-server/config/wginstaller.json
new file mode 100644 (file)
index 0000000..77ae25e
--- /dev/null
@@ -0,0 +1,19 @@
+{
+    "wginstaller": {
+        "description": "WireGuard Installer",
+        "read": {
+            "ubus": {
+                    "wginstaller": [ "*" ],
+                    "session": [
+                        "access",
+                        "login"
+                ]
+            }
+        },
+        "write": {
+            "ubus": {
+                    "wginstaller": [ "*" ]
+            }
+        }
+    }
+}
diff --git a/net/wg-installer/wg-server/config/wgserver.conf b/net/wg-installer/wg-server/config/wgserver.conf
new file mode 100644 (file)
index 0000000..a88a8f9
--- /dev/null
@@ -0,0 +1,6 @@
+config server
+    option port_start '51820'
+    option port_end '52820'
+    option base_prefix '2002::/64'
+    option wg_key '/root/wg.key'
+    option wg_pub '/root/wg.pub'
diff --git a/net/wg-installer/wg-server/hotplug.d/99-mesh-babeld b/net/wg-installer/wg-server/hotplug.d/99-mesh-babeld
new file mode 100644 (file)
index 0000000..068b199
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+# check if wireguard
+if [ "${DEVTYPE}" != "wireguard" ]; then
+       exit 0
+fi
+
+# check if correct naming
+slicedint=$(echo $INTERFACE | cut -c1-3)
+if [ "${slicedint}" != "wg_" ]; then
+       exit 0
+fi
+
+if [ "${ACTION}" == "add" ]; then
+       uci add babeld interface
+       uci set babeld.@interface[-1].ifname="${INTERFACE}"
+       uci commit
+       /etc/init.d/babeld reload
+fi
+
+if [ "${ACTION}" == "remove" ]; then
+       i=0
+       while uci get babeld.@interface[$i] &> /dev/null ; do
+               if [ "$(uci get babeld.@interface[$i].ifname)" == "${INTERFACE}" ]; then
+                       uci delete babeld.@interface[$i]
+               fi
+               i=$((i+1));
+       done
+       uci commit
+       /etc/init.d/babeld reload
+fi
diff --git a/net/wg-installer/wg-server/lib/install_wginstaller_user.sh b/net/wg-installer/wg-server/lib/install_wginstaller_user.sh
new file mode 100644 (file)
index 0000000..6ab13f1
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# do not override already existing user!!!
+[ "$(uci show rpcd | grep wginstaller)" ] && exit 0
+
+# install wginstaller user with standard credentials
+# user: wginstaller
+# password: wginstaller
+uci add rpcd login
+uci set rpcd.@login[-1].username='wginstaller'
+
+password=$(uhttpd -m wginstaller)
+uci set rpcd.@login[-1].password=$password
+uci add_list rpcd.@login[-1].read='wginstaller'
+uci add_list rpcd.@login[-1].write='wginstaller'
+uci commit rpcd
+
+# restart rpcd
+/etc/init.d/rpcd restart
+
+# restart uhttpd
+/etc/init.d/uhttpd restart
diff --git a/net/wg-installer/wg-server/lib/wg_functions.sh b/net/wg-installer/wg-server/lib/wg_functions.sh
new file mode 100644 (file)
index 0000000..6a5646b
--- /dev/null
@@ -0,0 +1,46 @@
+. /usr/share/libubox/jshn.sh
+. /usr/share/wginstaller/wg.sh
+
+wg_get_usage () {
+       num_interfaces = $(wg show interfaces | wc -w)
+       json_init
+       json_add_int "num_interfaces" $num_interfaces
+       echo $(json_dump)
+}
+
+wg_register () {
+       local uplink_bw=$1
+       local mtu=$2
+       local public_key=$3
+
+       base_prefix=$(uci get wgserver.@server[0].base_prefix)
+       port_start=$(uci get wgserver.@server[0].port_start)
+       port_end=$(uci get wgserver.@server[0].port_end)
+
+       port=$(next_port $port_start $port_end)
+       ifname="wg_$port"
+
+       offset=$(($port - $port_start))
+       gw_ip=$(owipcalc $base_prefix add $offset next 128) # gateway ip
+       gw_ip_assign="${gw_ip}/128"
+
+       gw_key=$(uci get wgserver.@server[0].wg_key)
+       gw_pub=$(uci get wgserver.@server[0].wg_pub)
+       wg_server_pubkey=$(cat $gw_pub)
+
+       # create wg tunnel
+       ip link add dev $ifname type wireguard
+       wg set $ifname listen-port $port private-key $gw_key peer $public_key allowed-ips ::0/0
+       ip -6 a a $gw_ip_assign dev $ifname
+       ip -6 a a fe80::1/64 dev $ifname
+       ip link set up dev $ifname
+       ip link set mtu $mtu dev $ifname
+
+       # craft return address
+       json_init
+       json_add_string "pubkey" $wg_server_pubkey
+       json_add_string "gw_ip" $gw_ip_assign
+       json_add_int "port" $port
+
+       echo $(json_dump)
+}
diff --git a/net/wg-installer/wg-server/wginstaller.sh b/net/wg-installer/wg-server/wginstaller.sh
new file mode 100644 (file)
index 0000000..7f78740
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+. /usr/share/libubox/jshn.sh
+. /usr/share/wginstaller/wg_functions.sh
+
+case "$1" in
+list)
+       cmd='{ "get_usage": {},'
+       cmd=$(echo $cmd ' "register": {"uplink_bw":"10", "mtu":"1400", "public_key": "xyz"} }')
+       echo $cmd
+       ;;
+call)
+       case "$2" in
+       get_usage)
+               read input
+               logger -t "wginstaller" "call" "$2" "$input"
+               wg_get_usage
+               ;;
+       register)
+               read input
+               logger -t "wginstaller" "call" "$2" "$input"
+
+               json_load "$input"
+               json_get_var uplink_bw uplink_bw
+               json_get_var mtu mtu
+               json_get_var public_key public_key
+
+               wg_register $uplink_bw $mtu $public_key
+               ;;
+       esac
+       ;;
+esac
index f3e0cf9c6c45b96a7bec9d393eeaa9fd7ed95e99..2bd955ae9d711cb9f286addced6b0bddfc760e75 100644 (file)
@@ -6,12 +6,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=zerotier
-PKG_VERSION:=1.6.2
-PKG_RELEASE:=2
+PKG_VERSION:=1.6.3
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeload.github.com/zerotier/ZeroTierOne/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=c8087b26c1191d36fda004b42cdfed31042cafd8586e49015586eef786f2c9a5
+PKG_HASH:=437d51a396e65f45822b0e5ee3761e3dfaf3507d9cc8f9b01e09c5541395d7b2
 PKG_BUILD_DIR:=$(BUILD_DIR)/ZeroTierOne-$(PKG_VERSION)
 
 PKG_MAINTAINER:=Moritz Warning <moritzwarning@web.de>
diff --git a/utils/oci-runtime-tools/Makefile b/utils/oci-runtime-tools/Makefile
new file mode 100644 (file)
index 0000000..35d8f7f
--- /dev/null
@@ -0,0 +1,83 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=oci-runtime-tools
+PKG_VERSION:=1.0.0-pre20210122
+PKG_RELEASE:=1
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_NAME:=runtime-tools
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/opencontainers/runtime-tools.git
+PKG_SOURCE_VERSION:=453547deb724af135587e654f52d86b8619f21b9
+PKG_MIRROR_HASH:=34f3aefc4f6f3bb93330ec7cbeb2eb987b82184da53d453e8b04b5750faa8728
+
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+
+PKG_BUILD_DEPENDS:=golang/host
+PKG_BUILD_PARALLEL:=1
+PKG_USE_MIPS16:=0
+
+GO_PKG:=github.com/opencontainers/runtime-tools/
+GO_PKG_LDFLAGS_X:=main.gitCommit=$(PKG_SOURCE_VERSION) main.version=$(PKG_SOURCE_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/golang/golang-package.mk
+
+define Package/oci-runtime-tool
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=oci-runtime-tool
+  URL:=https://github.com/opencontainers/runtime-tools
+  DEPENDS:=$(GO_ARCH_DEPENDS)
+endef
+
+define Package/oci-runtime-tool/description
+  OCI (Open Container Initiative) runtime tools
+  Generate OCI runtime spec configuration files and validate OCI bundles.
+endef
+
+define Package/oci-runtime-tests
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=OCI runtimetest tool
+  URL:=https://github.com/opencontainers/runtime-tools
+  DEPENDS:=@(i386||i686||x86_64) oci-runtime-tool +tar
+endef
+
+define Package/oci-runtime-tests/description
+  OCI (Open Container Initiative) runtime tools
+  This package provides test cases as well as artifacts required to
+  validate an OCI runtime.
+  Best used in combination with a TAP consumer like 'node-tap',
+  installable via npm.
+endef
+
+define Build/Compile
+       $(call GoPackage/Build/Compile)
+       $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR))
+endef
+
+define Package/oci-runtime-tool/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/oci-runtime-tool $(1)/usr/bin
+endef
+
+define Package/oci-runtime-tests/install
+       $(INSTALL_DIR) $(1)/usr/libexec/oci-runtime-test
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/runtimetest $(1)/usr/libexec/oci-runtime-test/
+       ( cd $(PKG_BUILD_DIR) ; $(FIND) ./validation/ -name *.go | grep -v util | \
+       xargs -I'%' -n 1 basename % .go | while read testbin; do \
+               $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$$$${testbin} \
+                       $(1)/usr/libexec/oci-runtime-test/$$$${testbin}.t ; \
+       done )
+ifdef CONFIG_x86_64
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/rootfs-amd64.tar.gz $(1)/usr/libexec/oci-runtime-test
+endif
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/rootfs-386.tar.gz $(1)/usr/libexec/oci-runtime-test
+endef
+
+$(eval $(call GoBinPackage,oci-runtime-tools))
+$(eval $(call BuildPackage,oci-runtime-tool))
+$(eval $(call BuildPackage,oci-runtime-tests))
diff --git a/utils/oci-runtime-tools/patches/001-fix-32-bit-build.patch b/utils/oci-runtime-tools/patches/001-fix-32-bit-build.patch
new file mode 100644 (file)
index 0000000..e7ec5c2
--- /dev/null
@@ -0,0 +1,43 @@
+From 6502e57dbebcacd9b55fc7a80655c8f31d7dae8f Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Mon, 8 Feb 2021 01:26:31 +0000
+Subject: [PATCH] Fix build of hugetlb tests on 32-bit platforms
+
+https://github.com/opencontainers/runtime-tools/pull/712
+
+Use explicit 64-bit types to avoid fall-back on incompatible 32-bit
+types on 32-bit platforms.
+
+Fixes: #711
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ validation/linux_cgroups_hugetlb/linux_cgroups_hugetlb.go       | 2 +-
+ .../linux_cgroups_relative_hugetlb.go                           | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/validation/linux_cgroups_hugetlb/linux_cgroups_hugetlb.go b/validation/linux_cgroups_hugetlb/linux_cgroups_hugetlb.go
+index d71dfb9e..e1db3f1b 100644
+--- a/validation/linux_cgroups_hugetlb/linux_cgroups_hugetlb.go
++++ b/validation/linux_cgroups_hugetlb/linux_cgroups_hugetlb.go
+@@ -24,7 +24,7 @@ func testHugetlbCgroups() error {
+       // When setting the limit just for checking if writing works, the amount of memory
+       // requested does not matter, as all insigned integers will be accepted.
+       // Use 2GiB as an example
+-      const limit = 2 * (1 << 30)
++      var limit uint64 = 2 * (1 << 30)
+       for _, pageSize := range pageSizes {
+               g, err := util.GetDefaultGenerator()
+diff --git a/validation/linux_cgroups_relative_hugetlb/linux_cgroups_relative_hugetlb.go b/validation/linux_cgroups_relative_hugetlb/linux_cgroups_relative_hugetlb.go
+index b6d7ae81..583a9fa8 100644
+--- a/validation/linux_cgroups_relative_hugetlb/linux_cgroups_relative_hugetlb.go
++++ b/validation/linux_cgroups_relative_hugetlb/linux_cgroups_relative_hugetlb.go
+@@ -21,7 +21,7 @@ func main() {
+       // When setting the limit just for checking if writing works, the amount of memory
+       // requested does not matter, as all insigned integers will be accepted.
+       // Use 2GiB as an example
+-      const limit = 2 * (1 << 30)
++      var limit uint64 = 2 * (1 << 30)
+       for _, pageSize := range pageSizes {
+               g, err := util.GetDefaultGenerator()
index 674638ee3fc5ee946eff138a084be90d0167487a..3444acb7a8abf380422ec0bd951e254d4d45c5b4 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=rtty
-PKG_VERSION:=7.3.1
+PKG_VERSION:=7.3.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL=https://github.com/zhaojh329/rtty/releases/download/v$(PKG_VERSION)
-PKG_HASH:=38bf042421c3d5e1ff862a64bd299d4b8b1e193faf4e56f8f8beb55e88cb7924
+PKG_HASH:=4c60eacd7a653988a1907284de2ecf360c74f55ef9e21c40b9ebd87af6570908
 CMAKE_INSTALL:=1
 
 PKG_LICENSE:=MIT
index d68f8b5c8ff4e72b6471aa3e889f25b24ef8a799..c843801d16d0d73ddcc4e2f34789783eae0268fc 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ttyd
 PKG_VERSION:=1.6.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeload.github.com/tsl0922/ttyd/tar.gz/$(PKG_VERSION)?
index 11b980fb07599fef52c9467f179aec3695b6c330..8dbde7034e2a62d793e19d24c620ea6f99f079ab 100644 (file)
@@ -1,5 +1,5 @@
 
 config ttyd
        option interface '@lan'
-       option command '/usr/libexec/login.sh'
+       option command '/bin/login'