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))
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
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+= \
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
- 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,
PKG_NAME:=getdns
PKG_VERSION:=1.6.0
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
# 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/
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
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>
## 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:**
</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_.
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"
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} \""
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
"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="${?}"
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
> "${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
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))
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}"
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))
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}"
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>
$(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
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>
#!/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
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
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
--- /dev/null
+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))
--- /dev/null
+## 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
--- /dev/null
+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
+}
--- /dev/null
+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'
--- /dev/null
+. /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}"
+}
--- /dev/null
+#!/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
--- /dev/null
+{
+ "wginstaller": {
+ "description": "WireGuard Installer",
+ "read": {
+ "ubus": {
+ "wginstaller": [ "*" ],
+ "session": [
+ "access",
+ "login"
+ ]
+ }
+ },
+ "write": {
+ "ubus": {
+ "wginstaller": [ "*" ]
+ }
+ }
+ }
+}
--- /dev/null
+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'
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+. /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)
+}
--- /dev/null
+#!/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
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>
--- /dev/null
+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))
--- /dev/null
+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()
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
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)?
config ttyd
option interface '@lan'
- option command '/usr/libexec/login.sh'
+ option command '/bin/login'