25 Commits

Author SHA1 Message Date
Til Kaiser
0b6d2a2859 treewide: remove python3-distutils dependency
As the python3-distutils was dropped while bumping the version
to 3.13.9 via 97a92f2e7a, remove the
python3-distutils from all packages that are currently using it.

OpenWrt already uses recent enough releases of these packages
that have adapted to work without distutils, so the dependency
can be safely removed.

Signed-off-by: Til Kaiser <mail@tk154.de>
2025-12-10 10:49:08 +01:00
Yanase Yuki
7403bb5bef ptunnel-ng: remove package
It seems upstream author does not have
time to maintain this software anymore.
Please see v1.43 release note.

Signed-off-by: Yanase Yuki <dev@zpc.st>
2025-12-10 10:44:35 +01:00
Jon Henrik Bjørnstad
d83488b077 qbee-agent: bump version to 2025.49
Bump version to 2025.49

Signed-off-by: Jon Henrik Bjørnstad <jonhenrik@qbee.io>
2025-12-09 19:56:14 +01:00
Jon Henrik Bjørnstad
afd2ef4f3a qbee-agent: bump version to 2025.49
Bump version to 2025.49

Signed-off-by: Jon Henrik Bjørnstad <jonhenrik@qbee.io>
2025-12-09 19:56:14 +01:00
Niklas Thorild
aecb53a8f7 telegraf: set home variable in uci-defaults script
avoid a non-critical error caused by getent not being installed

Signed-off-by: Niklas Thorild <niklas@thorild.se>
2025-12-09 19:55:06 +01:00
Niklas Thorild
10febdb24a telegraf: update to 1.37.0
- Update Telegraf to v1.37.0

Signed-off-by: Niklas Thorild <niklas@thorild.se>
2025-12-09 19:55:06 +01:00
Simonas Tamošaitis
83f3e116b1 modemmanager: allow empty initial EPS bearer APN
This commit removes the non-empty APN requirement for initial EPS
bearer. An empty APN value is valid and means that the modem will use a
network provided APN offered by the operator.

Signed-off-by: Simonas Tamošaitis <simsasss@gmail.com>
2025-12-09 15:45:10 +01:00
Ivan Diaz
dfe2967675 watchcat: set default value for mmifacename to prevent argument shift
Set mmifacename default to "null" instead of an empty string to avoid
argument displacement when the value is not defined. Also remove leftover
debug comments from previous commit.

Signed-off-by: Ivan Diaz <diaz.it@icloud.com>
2025-12-09 12:12:19 +01:00
Ivan Diaz
5dc13908b4 watchcat: fix argument handling and allow multiple ping hosts
The backend now correctly supports multiple IP addresses and avoids
argument shifting when mmifacename is empty.

Signed-off-by: Ivan Diaz <diaz.it@icloud.com>
2025-12-09 12:12:19 +01:00
Christian Lamparter
e35de9af78 openconnect: fix off-by-one while condition
resolveip returns 0 on success. This means that the while loop
will just run until all tries are exhausted. But this was not
the intended behaviour.

Fixes: 20ea72607b ("openconnect: make host dependency more resilient")
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2025-12-09 10:02:43 +01:00
Stan Grishin
8bf5f683fe pbr: update to 1.2.1-r35
pbr 1.2.1-r35

Makefile:
* split uci-defaults into different purpose files
* add handling of netifd integration

Config:
* update with default values for all options (thanks @betonmischer86)

Init-script:
* add netifd integration handling
* add ip() function to emulate ip rule replace
* add netbird intrfaces support (thanks @egc112)
* reorganize loading/handling of options in load_package_config()
* improve display of interface triggers in service_triggers()
* remove chains cleanup from stop_service() due to exclusive use of fw4 nft files
* improve status_service() output
* drop input and postrouting as valid options for policy chain

Uci-defaults files:
* 91-pbr-nft: cosmetic improvements

Default nft files:
* drop use of input and postrouting chanins

Custom User files:
* dns-prefetch: functional improvements (thanks @betonmischer86)

Signed-off-by: Stan Grishin <stangri@melmac.ca>
2025-12-08 17:41:03 -08:00
Markus Hube
803a754525 prometheus-node-exporter-lua: remove zero values
depending on the configuration there may be multiple
interfaces creating multiple time series always
reporting 0 value. omiting them from the export saves
resources. most notably cpu. this is limited to
counter types

Signed-off-by: Markus Hube <markus.hube@t-online.de>
2025-12-09 08:14:54 +08:00
Szabolcs Hubai
ba55134a1a snapcast: update to v0.34.0
A straightforward update from 0.28.0 (2024-03-19, [1])
to 0.34.0 (2025-10-12, [2]) with almost 400 commits. [3]

Notable change is the configurable OpenSSL support (BUILD_WITH_SSL)
for both snapserver and snapclient.
They will be enabled once I introduce the flavours.

In the mean time upsteam moved to it's own organization. [4]

Upstream changelog:
https://github.com/snapcast/snapcast/blob/v0.34.0/changelog.md

[1]: https://github.com/snapcast/snapcast/releases/tag/v0.28.0
[2]: https://github.com/snapcast/snapcast/releases/tag/v0.34.0
[3]: https://github.com/snapcast/snapcast/compare/v0.28.0...v0.34.0
[4]: https://github.com/snapcast

Signed-off-by: Szabolcs Hubai <szab.hu@gmail.com>
2025-12-08 18:41:56 +01:00
Szabolcs Hubai
a77e5889bc snapcast: define ALSA support explicitly
As Hannu Nyman pointed out, in some cases the build of the package is
able to fail:

Package snapserver is missing dependencies for the following libraries:
libasound.so.2

He said: on some build runs, alsa is built (as required by other
packages), and if it is built before snapcast, it may be detected,
if the feature is not explicitly disabled in CMakeLists.txt.

Also: "I think that you could drop that AUDIO_SUPPORT conditional.
AUDIO_SUPPORT is selected e.g. if USB_SUPPORT is selected,
so it is not that big restriction."

Suggested-by: Hannu Nyman <hannu.nyman@iki.fi>
Signed-off-by: Szabolcs Hubai <szab.hu@gmail.com>
2025-12-08 18:41:56 +01:00
Szabolcs Hubai
ebf044619d snapcast: sort and reformat CMAKE_OPTIONS
Sort CMAKE_OPTIONS by alphabet and save a few bytes with tab character,
instead of repeating "CMAKE_OPTIONS +="

Signed-off-by: Szabolcs Hubai <szab.hu@gmail.com>
2025-12-08 18:41:56 +01:00
George Sapkin
f4cf114981 vim: disable wayland to fix missing dependency
vim autodetects wayland if it's installed, but there's no dependency on
it which results in:

Package vim-full is missing dependencies for the following libraries:
libwayland-client.so.0

Fixes: 4406b79 ("vim: bump to 9.1.1918")
Signed-off-by: George Sapkin <george@sapk.in>
2025-12-08 15:17:41 +01:00
George Sapkin
c02a20dc90 yt-dlp: bump to 2025.12.08
Changelog: https://github.com/yt-dlp/yt-dlp/releases/tag/2025.12.08
Signed-off-by: George Sapkin <george@sapk.in>
2025-12-08 15:48:43 +02:00
David Connolly
90ee36fceb udpspeeder: disable color in logging to prevent side effects in syslog
Fixes #26872 by passing --disable-color in init script

Signed-off-by: David Connolly <david@connol.ly>
2025-12-07 20:36:20 +01:00
George Sapkin
4406b792e7 vim: bump to 9.1.1918
Switch source to GitHub for the most recent releases.

Changes: https://github.com/vim/vim/compare/v9.1.0...v9.1.1918
Signed-off-by: George Sapkin <george@sapk.in>
2025-12-07 20:09:57 +01:00
George Sapkin
3365ba873b vim: add actual xxd version
Use the actual xxd version instead of the vim one for packaging.

Add matching CI test.

Signed-off-by: George Sapkin <george@sapk.in>
2025-12-07 20:09:57 +01:00
Nate Robinson
6db7c6bae4 lf: update to r39
https://github.com/gokcehan/lf/releases/tag/r39

Signed-off-by: Nate Robinson <nrobinson2000@me.com>
2025-12-07 20:06:00 +01:00
Josef Schlehofer
560e89e3bf radicale: remove obsolete package
In this repository, we do have radicale2, so OpenWrt
community should switch to use that version.

This version (= 1.x.x) is really old, no longer developed
and there are newer versions, which can be used e.g.
version 2.x.x, in this repo as radicale2 or there is
also version 3.x.x, which is not packaged for OpenWrt so far.

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
2025-12-07 18:12:07 +01:00
George Sapkin
ffa24c10da adguardhome: bump to 0.107.70
Changelog: https://github.com/AdguardTeam/AdGuardHome/releases/tag/v0.107.70
Signed-off-by: George Sapkin <george@sapk.in>
2025-12-07 01:39:28 +02:00
George Sapkin
e0d24e48fd adguardhome: add SPDX license identifiers
Add GPL 2.0 only SPDX license identifiers to Makefile and all scripts.

Signed-off-by: George Sapkin <george@sapk.in>
2025-12-07 01:39:28 +02:00
Philip Prindeville
605a457cac bind: save out served domains on service stop
If named gets stopped, then started again, but isc-dhcpd isn't also
restarted, then we want named to at least have the existing content.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2025-12-06 14:05:05 -07:00
56 changed files with 688 additions and 1440 deletions

View File

@@ -1,13 +1,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=qbee-agent
PKG_VERSION:=2025.34
PKG_VERSION:=2025.49
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/qbee-io/qbee-agent.git
PKG_SOURCE_VERSION:=e1c6ced58a7d5714ba413695a105177da0d5dd3a
PKG_MIRROR_HASH:=c27f89de3456d63af575e234d919cea916f892779e56f34b6a80659d5daa7d7e
PKG_SOURCE_VERSION:=9493a57f7f4f2cb4c0db3dfd1812042b96479fc2
PKG_MIRROR_HASH:=b07c3c51447da45d6139c305a0f92bcd85b502ab3cc2af0b8afb99f73ae43288
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=python-babel
PKG_VERSION:=2.17.0
PKG_RELEASE:=1
PKG_RELEASE:=2
PYPI_NAME:=babel
PKG_HASH:=0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d
@@ -40,7 +40,6 @@ define Package/python3-babel
URL:=https://babel.pocoo.org/
DEPENDS:= \
+python3-decimal \
+python3-distutils \
+python3-email \
+python3-light \
+python3-logging \

View File

@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=python-docker
PKG_VERSION:=7.1.0
PKG_RELEASE:=1
PKG_RELEASE:=2
PYPI_NAME:=docker
PKG_HASH:=ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c
@@ -25,8 +25,8 @@ define Package/python3-docker
TITLE:=A Python library for the Docker Engine API
URL:=https://github.com/docker/docker-py
DEPENDS:=\
+python3-light +python3-distutils +python3-logging \
+python3-openssl +python3-packaging +python3-paramiko +python3-six \
+python3-light +python3-logging +python3-openssl \
+python3-packaging +python3-paramiko +python3-six \
+python3-requests +python3-urllib3 +python3-websocket-client
endef

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=python-incremental
PKG_VERSION:=24.7.2
PKG_RELEASE:=1
PKG_RELEASE:=2
PYPI_NAME:=incremental
PKG_HASH:=fb4f1d47ee60efe87d4f6f0ebb5f70b9760db2b2574c59c8e8912be4ebd464c9
@@ -32,7 +32,7 @@ define Package/python3-incremental
SUBMENU:=Python
TITLE:=Versions your Python projects
URL:=https://github.com/twisted/incremental
DEPENDS:=+python3-light +python3-distutils +python3-pkg-resources
DEPENDS:=+python3-light +python3-pkg-resources
endef
define Package/python3-incremental/description

View File

@@ -1,11 +1,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=yt-dlp
PKG_VERSION:=2025.11.12
PKG_VERSION:=2025.12.8
PKG_RELEASE:=1
PYPI_NAME:=yt-dlp
PKG_HASH:=5f0795a6b8fc57a5c23332d67d6c6acf819a0b46b91a6324bae29414fa97f052
PKG_HASH:=b773c81bb6b71cb2c111cfb859f453c7a71cf2ef44eff234ff155877184c3e4f
PYPI_SOURCE_NAME:=yt_dlp
PKG_MAINTAINER:=George Sapkin <george@sapk.in>

View File

@@ -1,22 +1,19 @@
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# SPDX-License-Identifier: GPL-2.0-only
include $(TOPDIR)/rules.mk
PKG_NAME:=adguardhome
PKG_VERSION:=0.107.69
PKG_RELEASE:=2
PKG_VERSION:=0.107.70
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/AdguardTeam/AdGuardHome/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=65f95054bdb4efbfba446b708e7e2a1a36365ddbabcb7236daab1a44a83d06bc
PKG_HASH:=5eb0c7076ab7b007f0e5afbaffc260d8950b5248bd04407464a2b2f0169694ba
PKG_BUILD_DIR:=$(BUILD_DIR)/AdGuardHome-$(PKG_VERSION)
FRONTEND_DEST:=$(PKG_NAME)-frontend-$(PKG_VERSION).tar.gz
FRONTEND_URL:=https://github.com/AdguardTeam/AdGuardHome/releases/download/v$(PKG_VERSION)/
FRONTEND_HASH:=8414ebbbba860f92d60d3ae3d591229e025f02bb0d2c5f87581df4b569ac3cce
FRONTEND_HASH:=127658a4155d429fc8f7c6a4408107662a963b39f6db869f13dcd40aff12e6eb
PKG_LICENSE:=GPL-3.0-only
PKG_LICENSE_FILES:=LICENSE.txt

View File

@@ -1,4 +1,6 @@
#!/bin/sh
#
# SPDX-License-Identifier: GPL-2.0-only
# Migrate old config format only
OLD_CONFIG_FILE=$(uci -q get adguardhome.config.config)

View File

@@ -1,4 +1,7 @@
#!/bin/sh /etc/rc.common
#
# SPDX-License-Identifier: GPL-2.0-only
#
# shellcheck disable=SC3043 # ash supports local
PROG=/usr/bin/AdGuardHome

View File

@@ -1,3 +1,5 @@
#!/bin/sh
#
# SPDX-License-Identifier: GPL-2.0-only
AdGuardHome --version | grep -F "$PKG_VERSION"

View File

@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=bind
PKG_VERSION:=9.20.15
PKG_RELEASE:=1
PKG_RELEASE:=2
USERID:=bind=57:bind=57
PKG_MAINTAINER:=Noah Meyerhans <frodo@morgul.net>

View File

@@ -20,6 +20,10 @@ reload_service() {
rndc -q reload
}
stop_service() {
rndc stop
}
start_service() {
user_exists bind 57 || user_add bind 57
group_exists bind 57 || group_add bind 57

View File

@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=fail2ban
PKG_VERSION:=1.1.0
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/fail2ban/fail2ban/tar.gz/$(PKG_VERSION)?
@@ -30,7 +30,6 @@ define Package/fail2ban
+nftables \
+python3-light \
+python3-ctypes \
+python3-distutils \
+python3-email \
+python3-logging \
+python3-sqlite3 \

View File

@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=flent
PKG_VERSION:=2.2.0
PKG_RELEASE:=1
PKG_RELEASE:=2
PYPI_NAME:=flent
PKG_HASH:=04fc21de858863560423e79c822f405225f829afd8e5d62293099fbef341f9e8
@@ -26,7 +26,6 @@ define Package/flent
+python3-light \
+python3-uuid \
+python3-logging \
+python3-distutils \
+python3-defusedxml \
+flent-tools \
+netperf \

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=modemmanager
PKG_VERSION:=1.24.0
PKG_RELEASE:=7
PKG_RELEASE:=8
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git

View File

@@ -526,13 +526,6 @@ modemmanager_init_epsbearer() {
local connectargs="$3"
local apn="$4"
[ "$eps" != 'none' ] && [ -z "${apn}" ] && {
echo "No '$eps' init eps bearer apn configured"
proto_notify_error "${interface}" MM_INIT_EPS_BEARER_APN_NOT_CONFIGURED
proto_block_restart "${interface}"
return 1
}
if [ "$eps" = "none" ]; then
echo "Deleting inital EPS bearer..."
else

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=openconnect
PKG_VERSION:=9.12
PKG_RELEASE:=5
PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.infradead.org/openconnect/download

View File

@@ -86,7 +86,7 @@ proto_openconnect_setup() {
[ -n $uri ] && server=$(echo $uri | awk -F[/:] '{print $4}')
logger -t "openconnect" "adding host dependency for $server at $config"
while resolveip -t 10 "$server" > "$tmpfile" && [ "$trials" -gt 0 ]; do
while ! resolveip -t 10 "$server" > "$tmpfile" && [ "$trials" -gt 0 ]; do
sleep 5
trials=$((trials - 1))
done

View File

@@ -4,8 +4,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=pbr
PKG_VERSION:=1.2.0
PKG_RELEASE:=2
PKG_VERSION:=1.2.1
PKG_RELEASE:=35
PKG_LICENSE:=AGPL-3.0-or-later
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
@@ -81,28 +81,29 @@ define Package/pbr/default/install
$(INSTALL_DIR) $(1)/usr/share/nftables.d
$(CP) ./files/usr/share/nftables.d/* $(1)/usr/share/nftables.d/
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/etc/uci-defaults/90-pbr $(1)/etc/uci-defaults/90-pbr
$(INSTALL_BIN) ./files/etc/uci-defaults/90-pbr $(1)/etc/uci-defaults/90-pbr
$(INSTALL_BIN) ./files/etc/uci-defaults/91-pbr-nft $(1)/etc/uci-defaults/91-pbr-nft
$(INSTALL_BIN) ./files/etc/uci-defaults/99-pbr-version $(1)/etc/uci-defaults/99-pbr-version
endef
define Package/pbr/install
$(call Package/pbr/default/install,$(1))
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/etc/uci-defaults/91-pbr-nft $(1)/etc/uci-defaults/91-pbr-nft
endef
define Package/pbr-netifd/install
$(call Package/pbr/default/install,$(1))
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/etc/uci-defaults/91-pbr-netifd $(1)/etc/uci-defaults/91-pbr-netifd
endef
# $(INSTALL_BIN) ./files/etc/uci-defaults/91-pbr-netifd $(1)/etc/uci-defaults/91-pbr-netifd
define Package/pbr/postinst
#!/bin/sh
# check if we are on real system
if [ -z "$${IPKG_INSTROOT}" ]; then
chmod -x /etc/init.d/pbr || true
fw4 -q reload || true
chmod +x /etc/init.d/pbr || true
/etc/init.d/pbr netifd check && {
echo -n "Reinstalling pbr netifd integration... "
/etc/init.d/pbr netifd install >/dev/null 2>&1 && echo "OK" || echo "FAIL"
}
echo -n "Installing rc.d symlink for pbr... "
/etc/init.d/pbr enable && echo "OK" || echo "FAIL"
fi
@@ -114,9 +115,13 @@ define Package/pbr/prerm
# check if we are on real system
if [ -z "$${IPKG_INSTROOT}" ]; then
echo -n "Stopping pbr service... "
/etc/init.d/pbr stop quiet >/dev/null 2>&1 && echo "OK" || echo "FAIL"
/etc/init.d/pbr stop >/dev/null 2>&1 && echo "OK" || echo "FAIL"
echo -n "Removing rc.d symlink for pbr... "
/etc/init.d/pbr disable && echo "OK" || echo "FAIL"
/etc/init.d/pbr netifd check && {
echo -n "Uninstalling pbr netifd integration... "
/etc/init.d/pbr netifd uninstall >/dev/null 2>&1 && echo "OK" || echo "FAIL"
}
fi
exit 0
endef
@@ -134,10 +139,9 @@ define Package/pbr-netifd/postinst
#!/bin/sh
# check if we are on real system
if [ -z "$${IPKG_INSTROOT}" ]; then
chmod -x /etc/init.d/pbr || true
fw4 -q reload || true
chmod +x /etc/init.d/pbr || true
echo -n "Installing rc.d symlink for pbr-netifd... "
echo -n "Installing pbr integration with netifd... "
/etc/init.d/pbr netifd check && /etc/init.d/pbr netifd install >/dev/null 2>&1 && echo "OK" || echo "FAIL"
echo -n "Installing rc.d symlink for pbr... "
/etc/init.d/pbr enable && echo "OK" || echo "FAIL"
fi
exit 0
@@ -147,31 +151,12 @@ define Package/pbr-netifd/prerm
#!/bin/sh
# check if we are on real system
if [ -z "$${IPKG_INSTROOT}" ]; then
echo -n "Stopping pbr-netifd service... "
/etc/init.d/pbr stop quiet >/dev/null 2>&1 && echo "OK" || echo "FAIL"
echo -n "Stopping pbr service... "
/etc/init.d/pbr stop >/dev/null 2>&1 && echo "OK" || echo "FAIL"
echo -n "Removing rc.d symlink for pbr... "
/etc/init.d/pbr disable && echo "OK" || echo "FAIL"
echo -n "Cleaning up /etc/iproute2/rt_tables... "
if sed -i '/pbr_/d' /etc/iproute2/rt_tables; then
echo "OK"
else
echo "FAIL"
fi
echo -n "Cleaning up /etc/config/network... "
uci -q delete 'network.pbr_default' || true
uci -q delete 'network.pbr_default6' || true
uci commit network || true
if sed -i '/ip.table.*pbr_/d' /etc/config/network; then
echo "OK"
else
echo "FAIL"
fi
echo -n "Restarting Network... "
if /etc/init.d/network restart >/dev/null 2>&1; then
echo "OK"
else
echo "FAIL"
fi
echo -n "Uninstalling pbr integration with netifd... "
/etc/init.d/pbr netifd check && /etc/init.d/pbr netifd uninstall >/dev/null 2>&1 && echo "OK" || echo "FAIL"
fi
exit 0
endef

View File

@@ -1,23 +1,26 @@
config pbr 'config'
option enabled '0'
option verbosity '2'
option strict_enforcement '1'
option resolver_set 'dnsmasq.nftset'
list resolver_instance '*'
option ipv6_enabled '0'
option fw_mask '00ff0000'
list ignored_interface 'vpnserver'
option rule_create_option 'add'
option procd_boot_trigger_delay '5000'
option procd_reload_delay '1'
option webui_show_ignore_target '0'
option ipv6_enabled '0'
option lan_device 'br-lan'
option nft_rule_counter '0'
option nft_set_auto_merge '1'
option nft_set_counter '0'
option nft_set_flags_interval '1'
option nft_set_flags_timeout '0'
option nft_set_gc_interval ''
option nft_set_policy 'performance'
option nft_set_timeout ''
option nft_user_set_counter '0'
option procd_boot_trigger_delay '5000'
option procd_reload_delay '0'
list resolver_instance '*'
option resolver_set 'dnsmasq.nftset'
option strict_enforcement '1'
option uplink_interface 'wan'
option uplink_interface6 'wan6'
option uplink_ip_rules_priority '30000'
option uplink_mark '00010000'
option verbosity '2'
list webui_supported_protocol 'all'
list webui_supported_protocol 'tcp'
list webui_supported_protocol 'udp'

File diff suppressed because it is too large Load Diff

View File

@@ -11,7 +11,6 @@ fi
# Transition from older versions of pbr
sed -i "s/resolver_ipset/resolver_set/g" /etc/config/pbr
sed -i "s/iptables_rule_option/rule_create_option/g" /etc/config/pbr
sed -i "s/'FORWARD'/'forward'/g" /etc/config/pbr
sed -i "s/'INPUT'/'input'/g" /etc/config/pbr
sed -i "s/'OUTPUT'/'output'/g" /etc/config/pbr

View File

@@ -9,6 +9,10 @@ else
printf "%b: pbr init.d file (%s) not found! \n" '\033[0;31mERROR\033[0m' "$pbrFunctionsFile"
fi
setup_netifd 'on_install'
if netifd 'check'; then
rc_procd stop_service 'on_netifd_install'
netifd 'install'
rc_procd start_service 'on_netifd_install'
fi
exit 0

View File

@@ -10,15 +10,15 @@ else
fi
# Transition resolver_set depending on dnsmasq support
if [ "$(uci_get pbr config resolver_set)" != 'dnsmasq.nftset' ]; then
if [ "$(uci_get "$packageName" 'config' 'resolver_set')" != 'dnsmasq.nftset' ]; then
if check_dnsmasq_nftset; then
output "Setting resolver_set to 'dnsmasq.nftset'... "
uci_set pbr config resolver_set 'dnsmasq.nftset' && output_okn || output_failn
uci_set "$packageName" 'config' 'resolver_set' 'dnsmasq.nftset' && output_okn || output_failn
else
output "Setting resolver_set to 'none'... "
uci_set pbr config resolver_set 'none' && output_okn || output_failn
uci_set "$packageName" 'config' 'resolver_set' 'none' && output_okn || output_failn
fi
uci_commit pbr
uci_commit "$packageName"
fi
exit 0

View File

@@ -1,6 +1,4 @@
chain pbr_dstnat {}
chain pbr_forward {}
chain pbr_input {}
chain pbr_output {}
chain pbr_prerouting {}
chain pbr_postrouting {}

View File

@@ -1,87 +1,106 @@
#!/bin/sh
# When using pbr with dnsmasq's nft set support, a domain-based policy will not take effect until
# the remote domain name has been resolved by dnsmasq. Resolve all domain names in pbr policies in advance.
# shellcheck disable=SC3043
(
timeout_nft='10'
timeout_dnsmasq='20'
pipe_ubus="/tmp/pipe.ubus.$$"
pipe_nslookup="/tmp/pipe.nslookup.$$"
log_abort='domain names in policies not resolved'
pipe_nslookup="/var/run/${packageName}.nslookup.$$"
# shellcheck disable=SC2154
output()
{
msg="$*"
msg=$(printf '%b' "$msg" | sed 's/\x1b\[[0-9;]*m//g')
output() {
local msg="$*"
msg="$(printf '%b' "$msg" | sed 's/\x1b\[[0-9;]*m//g')"
# shellcheck disable=SC2154
logger -t "$packageName [$$]" "$(printf '%b' "$msg")"
}
nft_ready()
{
nft_ready() {
local timeout_nft='10'
while ! /usr/sbin/nft list sets 'inet' | grep -q "pbr"; do
[ "$timeout_nft" -eq '0' ] && {
output "Pbr's nft sets not found, $log_abort $__FAIL__"
return 1
}
sleep '1' && timeout_nft=$((timeout_nft - 1))
sleep '1' && timeout_nft="$((timeout_nft - 1))"
done
}
run_nslookup()
{
output=$(nslookup "$1" 127.0.0.1) && { echo '0' > "$pipe_nslookup"; return; }
reason=$(printf '%s' "$output" | grep -Eo -m 1 'NXDOMAIN|SERVFAIL|timed out') && \
run_nslookup() {
local output reason
output="$(nslookup "$1" 127.0.0.1)" && { echo '0' > "$pipe_nslookup"; return; }
reason="$(printf '%s' "$output" | grep -Eo -m 1 'NXDOMAIN|SERVFAIL|timed out')" && \
output "$_WARNING_ Lookup failed for $domain ($reason)"
echo '1' > "$pipe_nslookup"
}
# shellcheck disable=SC2162
nslookup_tracker()
{
while read ec; do
entries=$((entries + 1))
[ "$ec" -eq '1' ] && errors=$((errors + 1))
nslookup_tracker() {
local entries errors
while read -r rc; do
entries="$((entries + 1))"
[ "$rc" -eq '1' ] && errors="$((errors + 1))"
done < "$pipe_nslookup"
output "Finished resolving $entries domain names in policies (${errors:-0} failed) $__OK__"
}
[ -n "$resolverSetSupported" ] || {
output "Resolver set support disabled, $log_abort $__FAIL__"
exit
}
mkfifo "$pipe_ubus"
mkfifo "$pipe_nslookup"
ubus listen -m 'ubus.object.add' > "$pipe_ubus" & ubus_listen_pid=$!
main() {
local pipe_ubus="/var/run/${packageName}.ubus.$$"
local timeout_dnsmasq='20'
local msg_abort='domain names in policies not resolved'
local dnsmasq_restarted ubus_listen_pid event domain entries
local rc='0'
# shellcheck disable=SC3045
while read -t "$timeout_dnsmasq" -r event; do
echo "$event" | grep -q "dnsmasq.dns" || continue
dnsmasq_restarted='1'
# shellcheck disable=SC2154
[ -f "$packageDnsmasqFile" ] || {
output "File $packageDnsmasqFile not found, $log_abort $__FAIL__"
break
[ -n "$resolverSetSupported" ] || {
output "Resolver set support disabled, $msg_abort $__FAIL__"
rc='1'
return "$rc"
}
nft_ready || break
nslookup_tracker & exec 3>"$pipe_nslookup"
mkfifo "$pipe_ubus"
mkfifo "$pipe_nslookup"
# The subshell may be necessary for "$!" to expand to a correct value
( exec ubus listen -m 'ubus.object.add' > "$pipe_ubus" ) &
ubus_listen_pid="$!"
(
output "Resolving domain names in policies..."
while IFS='/' read -r _ domain _; do
[ -n "$domain" ] && run_nslookup "$domain" &
entries=$((entries + 1))
done < "$packageDnsmasqFile"
wait
)
# shellcheck disable=SC3045
while read -t "$timeout_dnsmasq" -r event; do
echo "$event" | grep -q "dnsmasq.dns" || continue
dnsmasq_restarted='1'
# shellcheck disable=SC2154
[ -f "$packageDnsmasqFile" ] || {
output "File $packageDnsmasqFile not found, $msg_abort $__FAIL__"
rc='1'
break
}
nft_ready || {
output "Pbr's nft sets not found, $msg_abort $__FAIL__"
rc='1'
break
}
nslookup_tracker & exec 3>"$pipe_nslookup"
(
output "Resolving domain names in policies..."
while IFS='/' read -r _ domain _; do
[ -n "$domain" ] && run_nslookup "$domain" &
entries="$((entries + 1))"
done < "$packageDnsmasqFile"
wait
)
exec 3>&-
break
done < "$pipe_ubus"
exec 3>&-
break
done < "$pipe_ubus"
[ -n "$dnsmasq_restarted" ] || output "Dnsmasq hasn't restarted, $log_abort $__FAIL__"
kill "$ubus_listen_pid"
rm "$pipe_ubus"
rm "$pipe_nslookup"
[ -n "$dnsmasq_restarted" ] || {
output "Dnsmasq hasn't restarted, $msg_abort $__FAIL__"
rc='1'
}
kill "$ubus_listen_pid"
rm -f "$pipe_ubus"
rm -f "$pipe_nslookup"
return "$rc"
}
main
return "$?"
) &

View File

@@ -1,41 +0,0 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ptunnel-ng
PKG_VERSION:=1.42
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/lnslbrty/ptunnel-ng/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=5ee6b101e4e252ea98e3337da6542d73b7f33de49a89014276cc98a70142ab10
PKG_LICENSE:=BSD-3
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
define Package/ptunnel-ng
SECTION:=net
CATEGORY:=Network
DEPENDS:=+libpthread
TITLE:=PingTunnel [N]ew[G]eneration
MAINTAINER:=Toni Uhlig <matzeton@googlemail.com>
URL:=https://github.com/lnslbrty/ptunnel-ng
endef
define Package/ptunnel-ng/description
Tunnel TCP connections through ICMP.
endef
CONFIGURE_ARGS += \
--disable-pcap \
--disable-selinux \
--with-rngdev=/dev/urandom
define Package/ptunnel-ng/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(1)/usr/sbin/$(PKG_NAME)
endef
$(eval $(call BuildPackage,ptunnel-ng))

View File

@@ -1,22 +0,0 @@
--- a/src/ptunnel.h
+++ b/src/ptunnel.h
@@ -45,9 +45,6 @@
#define PING_TUNNEL_H 1
#ifndef WIN32
-#ifdef HAVE_ICMPFILTER
-#include <linux/icmp.h>
-#endif
#ifdef HAVE_SYS_UNISTD_H
#include <sys/unistd.h>
#endif
@@ -56,6 +53,9 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
+#ifdef HAVE_ICMPFILTER
+#include <linux/icmp.h>
+#endif
#include <pthread.h>
#include <errno.h>
#include <net/ethernet.h>

View File

@@ -1,77 +0,0 @@
#
# Copyright (C) 2008-2017 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=radicale
PKG_VERSION:=1.1.7
PKG_RELEASE:=1
PYPI_NAME:=Radicale
PKG_HASH:=5b311b11f15db21a6000391eb3000ffc88ea8d7abbc91767dc54b771885be777
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:radicale:radicale
include ../../lang/python/pypi.mk
include $(INCLUDE_DIR)/package.mk
include ../../lang/python/python3-package.mk
define Package/radicale
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
TITLE:=Radicale CalDAV/CardDAV server
URL:=https://radicale.org/
DEPENDS:= \
+python3-light \
+python3-codecs \
+python3-logging \
+python3-openssl \
+python3-urllib \
+python3-xml
USERID:=radicale=5232:radicale=5232
PROVIDES:=radicale-py2 radicale-py3
endef
define Package/radicale/description
The Radicale Project is a CalDAV (calendar) and CardDAV (contact) server. It
aims to be a light solution, easy to use, easy to install, easy to configure.
As a consequence, it requires few software dependances and is pre-configured to
work out-of-the-box.
endef
define Package/radicale/conffiles
/etc/config/radicale
/etc/radicale/users
/etc/radicale/rights
endef
define Py3Package/radicale/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/radicale.init $(1)/etc/init.d/radicale
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
$(INSTALL_BIN) ./files/radicale.hotplug $(1)/etc/hotplug.d/iface/80-radicale
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/radicale.config $(1)/etc/config/radicale
$(INSTALL_DIR) $(1)/etc/radicale/ssl
$(INSTALL_DATA) ./files/config.template $(1)/etc/radicale/config.template
$(INSTALL_DATA) ./files/logging.template $(1)/etc/radicale/logging.template
$(INSTALL_DATA) ./files/radicale.users $(1)/etc/radicale/users
$(INSTALL_DATA) ./files/radicale.rights $(1)/etc/radicale/rights
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/radicale $(1)/usr/bin/
endef
$(eval $(call Py3Package,radicale))
$(eval $(call BuildPackage,radicale))
$(eval $(call BuildPackage,radicale-src))

View File

@@ -1,30 +0,0 @@
# -*- mode: conf -*-
# vim:ft=cfg
### AUTO-GENERATED CONFIGURATION
### USED BY RADICALE
### DO NOT EDIT
### SEE /etc/config/radicale INSTEAD
[server]
# daemon # handled by /etc/init.d/radicale
# pid # handled by /etc/init.d/radicale
[encoding]
[well-known]
[auth]
# htpasswd_filename # hard-coded /etc/radicale/users
[git]
[rights]
# file # hard-coded /etc/radicale/rights
[storage]
[logging]
# config # hard-coded /var/etc/radicale/logging
[headers]

View File

@@ -1,47 +0,0 @@
# -*- mode: conf -*-
# vim:ft=cfg
### AUTO-GENERATED CONFIGURATION
### USED BY RADICALE
### DO NOT EDIT
### SEE /etc/config/radicale INSTEAD
[loggers]
keys = root
[handlers]
keys = console,file,syslog
[formatters]
keys = simple,full,syslog
[logger_root]
level = DEBUG
handlers = console,file,syslog
[handler_console]
class = StreamHandler
args = (sys.stdout,)
formatter = simple
# level = WARNING # set via /etc/config/radicale
[handler_file]
class = handlers.RotatingFileHandler
formatter = full
# level = INFO # set via /etc/config/radicale
# args = ('[filename]','a',[maxbytes],[backupcount]) # set via /etc/config/radicale
[handler_syslog]
class = handlers.SysLogHandler
args = ('/dev/log', handlers.SysLogHandler.LOG_DAEMON)
formatter = syslog
# level = WARNING # set via /etc/config/radicale
[formatter_simple]
format = %(message)s
[formatter_full]
format = %(asctime)s - %(levelname)s: %(message)s
[formatter_syslog]
format = radicale [%(process)d]: %(message)s

View File

@@ -1,200 +0,0 @@
#
# You find additional information on Radicale Homepage
# http://radicale.org
#
# OpenWrt's wiki needs to be setup/updated ;-)
#
# if setting additional options please remember that UCI does not support
# section names and option names with "-" (Dash) inside their name
# to use them anyway replace "-" with "_" (Underscore)
# Each Radicale's config [section] is setup as UCI config setting 'section'
#
####################################################
# OpenWrt specific settings
# not part of radicale package
#
config system 'radicale'
# delayed startup at boot (default 10 seconds)
# to wait for netifd to bring up interfaces
# during this time iface hotplug events are ignored
# option boot_delay '10'
####################################################
# Server options
#
config setting 'server'
# hostname:port
# IPv4 syntax: address:port
# IPv6 syntax: [address]:port
# ATTENTION:
# only use ports > 1024 (non-privileged Ports)
# because this implementation is running as non-root user
# Default: 0.0.0.0:5232
# list hosts '0.0.0.0:5232'
# list hosts 'localhost:5232'
# SSL flag, enable HTTPS protocol
# Default: 0 (disabled)
# option ssl '1'
# SSL Protocol used. See python's ssl module for available values
# Default: PROTOCOL_SSLv23
# option protocol 'PROTOCOL_SSLv23'
# Ciphers available. See python's ssl module for available ciphers
# option ciphers ''
# SSL certificate path and file
# option certificate '/etc/radicale/ssl/server.crt'
# SSL private key path and file
# option key '/etc/radicale/ssl/server.key'
# Reverse DNS to resolve client address in logs
# Default: 0 (disabled)
# option dns_lookup '1'
# Message displayed in the client when a password is needed
# option realm 'Radicale - Password Required'
####################################################
# Encoding options
#
config setting 'encoding'
# Encoding for responding requests
# option request 'utf-8'
# Encoding for storing local collections
# option stock 'utf-8'
####################################################
# Authentication options
#
config setting 'auth'
# Authentication method
# Value: None | htpasswd | IMAP | LDAP | PAM | courier | http | remote_user | custom
# Default: None
# if setting 'htpasswd' the file /etc/radicale/users is used (hardcoded)
# Htpasswd encryption method
# Value: plain | sha1 | ssha | crypt
# option htpasswd_encryption 'crypt'
# for other authenication methods consult Radicale documentation
# and set options here
####################################################
# Git default options
#
config setting 'git'
# Git default options
# option committer 'Radicale <radicale@example.com>'
####################################################
# Rights backend
#
config setting 'rights'
# Value: None | authenticated | owner_only | owner_write | from_file | custom
# Default: None
# if setting 'from_file' the file /etc/radicale/rights is used (hardcoded)
# Custom rights handler
# option custom_handler ''
####################################################
# Storage backend
# -------
# WARNING: ONLY "filesystem" IS DOCUMENTED AND TESTED,
# OTHER BACKENDS ARE NOT READY FOR PRODUCTION.
# -------
#
config setting 'storage'
# Value: filesystem | multifilesystem | database | custom
option type 'filesystem'
option filesystem_folder '/srv/radicale'
####################################################
# Additional HTTP headers
#
config setting 'headers'
# enable all if using CardDavMATE-, CalDavZAP- or InfCloud- WEBclient
# list Access_Control_Allow_Origin '*'
# list Access_Control_Allow_Methods 'GET'
# list Access_Control_Allow_Methods 'POST'
# list Access_Control_Allow_Methods 'OPTIONS'
# list Access_Control_Allow_Methods 'PROPFIND'
# list Access_Control_Allow_Methods 'PROPPATCH'
# list Access_Control_Allow_Methods 'REPORT'
# list Access_Control_Allow_Methods 'PUT'
# list Access_Control_Allow_Methods 'MOVE'
# list Access_Control_Allow_Methods 'DELETE'
# list Access_Control_Allow_Methods 'LOCK'
# list Access_Control_Allow_Methods 'UNLOCK'
# list Access_Control_Allow_Headers 'User-Agent'
# list Access_Control_Allow_Headers 'Authorization'
# list Access_Control_Allow_Headers 'Content-type'
# list Access_Control_Allow_Headers 'Depth'
# list Access_Control_Allow_Headers 'If-match'
# list Access_Control_Allow_Headers 'If-None-Match'
# list Access_Control_Allow_Headers 'Lock-Token'
# list Access_Control_Allow_Headers 'Timeout'
# list Access_Control_Allow_Headers 'Destination'
# list Access_Control_Allow_Headers 'Overwrite'
# list Access_Control_Allow_Headers 'X-client'
# list Access_Control_Allow_Headers 'X-Requested-With'
# list Access_Control_Expose_Headers 'Etag'
####################################################
# Global logging options
#
config setting 'logging'
# Set the default logging level to debug for all outputs (ignore output level settings)
# Default: 0 (disabled)
# option debug '1'
# Log all environment variables (including those set in the shell) when starting
# Default: 0 (disabled)
# option full_environment '1'
####################################################
# Spezial logging options
# !!! not documented in Radicale documentation
# !!! special settings for this implementation
#
config logging 'logger'
# Level: DEBUG | INFO | WARNING | ERROR | CRITICAL
# To nearly disable logging set level to critical
# log level on console
# option console_level 'ERROR'
# Here we use Rotating Logfiles in this implementation
# !!! if maxbytes and/or backupcount is set to 0 !!!
# !!! file rotation is disabled and logfile grows endless !!!
# log level
# option file_level 'INFO'
# directory where log files are written
# option file_path '/var/log/radicale'
# max size of each logfile (see warning above)
# option file_maxbytes '8196'
# number of backup files to create (see warning above)
# option file_backupcount '1'
# log level for syslog logging
# option syslog_level 'WARNING'

View File

@@ -1,18 +0,0 @@
#!/bin/sh
# only (re-)start on ifup
[ "$ACTION" = "ifup" ] || exit 0
# only start if boot_delay is done
[ -f /tmp/radicale.hotplug ] || exit 0
_PID=$(ps | grep '[p]ython.*[r]adicale' 2>/dev/null | awk '{print $1}')
kill -1 $_PID 2>/dev/null
if [ $? -eq 0 ]; then
# only restart if already running
logger -p user.info -t "radicale[$_PID]" \
"Restart request due to '$ACTION' of interface '$INTERFACE'"
/etc/init.d/radicale restart
else
# only start if enabled
/etc/init.d/radicale enabled && /etc/init.d/radicale start
fi

View File

@@ -1,264 +0,0 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2016 OpenWrt.org
START=80
STOP=10
extra_command "export_storage" "<PATH>
- export the storage into the specified folder
- <PATH> can be directly used with the default storage backend of Radicale 2.x.x."
CFGDIR=/var/etc/radicale
SYSCFG=$CFGDIR/config
LOGCFG=$CFGDIR/logging
DATADIR="/srv/radicale"
LOGDIR=""
PGREP="ps | grep '[p]ython.*[r]adicale' 2>/dev/null | awk '{print \$1}' "
# we could start with empty configuration file using defaults
[ -f /etc/config/radicale ] || touch /etc/config/radicale
_uci2radicale() {
local _SYSTMP="$SYSCFG.tmp"
local _LOGTMP="$LOGCFG.tmp"
local _LOPT # list option name
local _LVAL # list option value
local _STYPE # section type
local _SNAME # section name
local _console_level="ERROR" # logging console level
local _file_level="INFO" # logging file level
local _file_path="/var/log/radicale" # logging file path
local _file_maxbytes="8196" # logging file maxBytes
local _file_backupcount="1" # logging file backupCount
local _syslog_level="WARNING" # logging syslog level
# write list values to config
_write_list() {
_write_value "$_LOPT" "$_LVAL" # there might be spaces in _LVAL
_LOPT=""
_LVAL=""
}
_write_value() {
# $1 option
# $2 value
local __OPT=$1
local __VAL=$2
# section "server" ignore option "daemon" and "pid"
[ "$_SNAME" = "server" -a "$__OPT" = "daemon" ] && return 0
[ "$_SNAME" = "server" -a "$__OPT" = "pid" ] && return 0
# section "logging" ignore option "config" (logging config file)
[ "$_SNAME" = "logging" -a "$__OPT" = "config" ] && return 0
# section "auth" ignore option "htpasswd_filename" (htpasswd file)
[ "$_SNAME" = "auth" -a "$__OPT" = "htpasswd_filename" ] && return 0
# section "rights" ignore option "file" (reg-based rights file)
[ "$_SNAME" = "rights" -a "$__OPT" = "file" ] && return 0
# section "headers" replace "_" with "-" in option (UCI problem)
[ "$_SNAME" = "headers" ] && __OPT=$(echo "$__OPT" | sed -e "s#_#-#g")
# save data driectory
[ "$_SNAME" = "storage" -a "$__OPT" = "filesystem_folder" ] && DATADIR="$__VAL"
# special handling for well-known, value needs single quotes
[ "$_SNAME" = "well-known" -a "${__VAL#*\%\(}" != "$__VAL" ] && __VAL="'$__VAL'"
# handling of log settings
if [ "$_STYPE" = "logging" -a "$_SNAME" = "logger" ]; then
eval "_$__OPT='$__VAL'" # set to environment for later use
else
# handle bool
[ "$__VAL" = "0" ] && __VAL="False"
[ "$__VAL" = "1" ] && __VAL="True"
# append data to the corresponding section
sed -i "/\[$_SNAME\]/a $__OPT = $__VAL" $_SYSTMP
fi
}
# redefined callback for sections when calling config_load
config_cb() {
# $1 "Type"
# $2 "Name"
# write out last list option
[ -n "$_LOPT" ] && _write_list
# mark invalid
_STYPE=""
_SNAME=""
# check section type
[ "$1" = "setting" -o "$1" = "logging" ] && {
_STYPE="$1"
_SNAME="$2"
}
# translate section name
[ "$2" = "well_known" ] && _SNAME="well-known"
return 0
}
# redefined callback for lists when calling config_load
list_cb() {
# $1 name of variable
# $2 value
# invalid section type then ignore
[ -z "$_STYPE" -o -z "$_SNAME" ] && return 0
# write out last list option if new list starts
[ -n "$_LOPT" -a "$_LOPT" != "$1" ] && _write_list
# new list option
if [ -z "$_LOPT" ]; then
_LOPT="$1"
_LVAL="$2"
else
_LVAL="$_LVAL, $2"
fi
return 0
}
# redefined callback for options when calling config_load
option_cb() {
# $1 name of variable
# $2 value
local __OPT="$1"
local __VAL="$2"
# invalid section type then ignore
[ -z "$_STYPE" -o -z "$_SNAME" ] && return 0
# ignore list entrys will be handled by list_cb()
[ "${__OPT#*_ITEM}" != "$__OPT" ] && return 0 # ignore lists *_ITEM*
[ "${__OPT#*_LENGTH}" != "$__OPT" ] && return 0 # ignore lists *_LENGTH
# write out last list option and clear
[ -n "$_LOPT" ] && _write_list
# write to file
_write_value "$__OPT" "$__VAL" # there might be spaces in __VAL
return 0
}
# temporary config file
# radicale need read access
mkdir -m0755 -p $CFGDIR
cp /etc/radicale/config.template $_SYSTMP
config_load radicale # calling above config_cb()/option_cb()/list_cb() and write into $_SYSTMP
sed -i "/\[logging\]/a config = /var/etc/radicale/logging" $_SYSTMP # hard-code logging config
sed -i "/\[auth\]/a htpasswd_filename = /etc/radicale/users" $_SYSTMP # hard-code htpasswd
sed -i "/\[rights\]/a file = /etc/radicale/rights" $_SYSTMP # hard-code regexp-based rights
# temporary logging config file
cp /etc/radicale/logging.template $_LOGTMP
LOGDIR="$_file_path"
sed -i "/\[handler_console\]/a level = $_console_level" $_LOGTMP
sed -i "/\[handler_file\]/a level = $_file_level" $_LOGTMP
sed -i "/\[handler_file\]/a args = ('$_file_path/radicale','a',$_file_maxbytes,$_file_backupcount)" $_LOGTMP
sed -i "/\[handler_syslog\]/a level = $_syslog_level" $_LOGTMP
# move tmp to final
mv -f $_SYSTMP $SYSCFG
mv -f $_LOGTMP $LOGCFG
}
_set_permission() {
# config file permissions (read access for group)
chmod 644 $SYSCFG $LOGCFG
chgrp -R radicale $CFGDIR
# log directory (full access and owner)
[ -d $LOGDIR ] || mkdir -m0755 -p $LOGDIR
chown -R radicale:radicale $LOGDIR
# data directory does not exist
[ -d $DATADIR ] || {
logger -p user.error -t "radicale[----]" "Data directory '$DATADIR' does not exists. Startup failed !!!"
exit 1
}
chgrp -R radicale $DATADIR
}
export_storage() {
# if already running do nothing
local _PID=$(eval "$PGREP")
kill -1 $_PID 2>/dev/null && {
echo "Export failed !!! - Service running !" >&2
logger -p user.error -t "radicale[$_PID]" "Export failed !!! - Service running !"
return 1
}
[ $# -ne 1 ] || [ ! -d $1 ] && {
echo "Export failed !!! Directory not given or does not exist !" >&2
logger -p user.error -t "radicale[----]" "Export failed !!! Directory not given or does not exist !"
return 1
}
_uci2radicale
_set_permission
chmod 775 $1
chgrp radicale $1
radicale --config=$SYSCFG --export-storage $1/export
}
boot() {
# wait a given time (default 10 seconds) before startup
# to wait for interfaces to come up / not using hotplug events during boot
_start() {
[ $1 -gt 0 ] && sleep $1
start
}
local _DELAY
_DELAY=$(uci_get "radicale" "system" "boot_delay" "10")
_start $_DELAY &
return 0
}
shutdown() {
rm -f /tmp/radicale.hotplug
stop
}
start() {
_running() {
sleep 2 # give radicale time to completely come up
local _PID=$(eval "$PGREP")
kill -1 $_PID 2>/dev/null
[ $? -eq 0 ] \
&& logger -p user.notice -t "radicale[$_PID]" "Service started successfully"\
|| logger -p user.warn -t "radicale[----]" "Service failed to start"
}
# if already running do nothing
local _PID=$(eval "$PGREP")
kill -1 $_PID 2>/dev/null && return 0
_uci2radicale
_set_permission
radicale --daemon --config=$SYSCFG
touch /tmp/radicale.hotplug
_running & # check if running and syslog
return 0
}
reload() {
# reload is also used by luci
local _PID=$(eval "$PGREP")
kill -1 $_PID 2>/dev/null
if [ $? -eq 0 ]; then
# only restart if already running
restart
else
# only start if enabled
enabled && start
fi
return 0
}
stop() {
local _PID=$(eval "$PGREP")
[ -z "$_PID" ] && return 0 # not running
kill -15 $_PID 2>/dev/null
sleep 3 # give time to shutdown
local _tmp=$(eval "$PGREP")
if [ -z "$_tmp" ]; then
logger -p user.notice -t "radicale[$_PID]" "Service shutdown successfully"
else
kill -9 $_tmp # Normally never come here
logger -p user.warn -t "radicale[----]" "Service shutdown FORCED"
fi
return 0
}

View File

@@ -1,49 +0,0 @@
#
# Authentication login is matched against the "user" key, and collection's path is matched against the "collection" key.
# You can use Python's ConfigParser interpolation values %(login)s and %(path)s.
# You can also get groups from the user regex in the collection with {0}, {1}, etc.
#
# For example, for the "user" key, ".+" means "authenticated user" and ".*" means "anybody" (including anonymous users).
#
# Section names are only used for naming the rule.
# Leading or ending slashes are trimmed from collection's path.
#
# This means all users starting with "admin" may read any collection
[admin]
user: ^admin.*$
collection: .*
permission: r
# This means all users may read and write any collection starting with public.
# We do so by just not testing against the user string.
[public]
user: .*
collection: ^public(/.+)?$
permission: rw
# A little more complex: give read access to users from a domain for all
# collections of all the users (ie. user@domain.tld can read domain/\*).
[domain-wide-access]
user: ^.+@(.+)\..+$
collection: ^{0}/.+$
permission: r
# Allow authenticated user to read all collections
[allow-everyone-read]
user: .+
collection: .*
permission: r
# Give write access to owners
[owner-write]
user: .+
collection: ^%(login)s(/.+)?$
permission: rw
# Allow CardDavMATE-, CalDavZAP- or InfCloud- WEBclient to work
# anonymous users have read access to "/" but no files or subdir
[infcloud]
user: .*
collection: /
permission: r

View File

@@ -1,6 +0,0 @@
#
# Sample File
#
user1:password1
user2:password2

View File

@@ -1,25 +0,0 @@
Subject: [PATCH] Run as user radicale and group radicale
Patch to run Radicale service as radicale:radicale non root user
Signed-off-by: Christian Schoenebeck <christian.schoenebeck@gmail.com>
---
bin/radicale | 7 +++++++
1 file changed, 7 insertions(+)
--- a/bin/radicale
+++ b/bin/radicale
@@ -26,6 +26,13 @@ Launch the server according to configura
"""
+# inserted to run as user radicale
+import pwd, grp, os
+uid = pwd.getpwnam('radicale').pw_uid
+gid = grp.getgrnam('radicale').gr_gid
+os.setegid(gid)
+os.seteuid(uid)
+
import radicale.__main__

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=UDPspeeder
PKG_VERSION:=20230206.0
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=$(PKG_VERSION)

View File

@@ -93,6 +93,7 @@ start_instance() {
procd_append_param command --queue-len "${queue_len}"
procd_append_param command --log-level "${log_level}"
procd_append_param command --fifo "${fifo}"
procd_append_param command --disable-color
# procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
procd_close_instance

View File

@@ -3,13 +3,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=snapcast
PKG_VERSION:=0.28.0
PKG_RELEASE:=2
PKG_VERSION:=0.34.0
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/badaix/snapcast.git
PKG_SOURCE_URL:=https://github.com/snapcast/snapcast.git
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_MIRROR_HASH=288325fc8b134502adb522711c18210794734675684cf5d8eba8a0a82778f6c9
PKG_MIRROR_HASH=b47c44e208708cbfd6fb89b5874ed05ffa165b959904ccc11b03073bf9b55b0a
PKG_MAINTAINER:=Szabolcs Hubai <szab.hu@gmail.com>, David Andreoletti <david@andreoletti.net>
PKG_LICENSE:=GPL-3.0-or-later
@@ -19,16 +19,22 @@ PKG_CPE_ID:=cpe:/a:badaix:snapcast
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
CMAKE_OPTIONS += -DBUILD_TESTS=OFF
CMAKE_OPTIONS += -DBUILD_WITH_PULSE=OFF
CMAKE_OPTIONS += -DBUILD_WITH_AVAHI=OFF
CMAKE_OPTIONS += \
-DBUILD_TESTS=OFF \
-DBUILD_WITH_ALSA=ON \
-DBUILD_WITH_AVAHI=OFF \
-DBUILD_WITH_JACK=OFF \
-DBUILD_WITH_PIPEWIRE=OFF \
-DBUILD_WITH_PULSE=OFF \
-DBUILD_WITH_SSL=OFF \
-DBUILD_WITH_TREMOR=ON
define Package/snapcast/Default
SECTION:=sound
CATEGORY:=Sound
TITLE:=Synchronous multiroom audio player
DEPENDS:=+AUDIO_SUPPORT:alsa-lib +libexpat +libatomic +libogg +libflac +libopus +boost +libsoxr
URL:=https://github.com/badaix/snapcast
DEPENDS:=+alsa-lib +libexpat +libatomic +libogg +libflac +libopus +boost +libsoxr
URL:=https://github.com/snapcast/snapcast
endef
define Package/snapcast/Default/description

View File

@@ -1,29 +0,0 @@
From 6ada939adf5c4f7e43d0fbe6ea45492b9564cb8d Mon Sep 17 00:00:00 2001
From: badaix <johannes.pohl@badaix.de>
Date: Thu, 19 Dec 2024 22:53:49 +0100
Subject: [PATCH] Fix compilation with boost v1.87.0
---
server/control_server.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/server/control_server.cpp
+++ b/server/control_server.cpp
@@ -161,7 +161,7 @@ void ControlServer::start()
{
LOG(INFO, LOG_TAG) << "Creating TCP acceptor for address: " << address << ", port: " << tcp_settings_.port << "\n";
acceptor_tcp_.emplace_back(make_unique<tcp::acceptor>(boost::asio::make_strand(io_context_.get_executor()),
- tcp::endpoint(boost::asio::ip::address::from_string(address), tcp_settings_.port)));
+ tcp::endpoint(boost::asio::ip::make_address(address), settings_.tcp.port)));
}
catch (const boost::system::system_error& e)
{
@@ -177,7 +177,7 @@ void ControlServer::start()
{
LOG(INFO, LOG_TAG) << "Creating HTTP acceptor for address: " << address << ", port: " << http_settings_.port << "\n";
acceptor_http_.emplace_back(make_unique<tcp::acceptor>(boost::asio::make_strand(io_context_.get_executor()),
- tcp::endpoint(boost::asio::ip::address::from_string(address), http_settings_.port)));
+ tcp::endpoint(boost::asio::ip::make_address(address), settings_.http.port)));
}
catch (const boost::system::system_error& e)
{

View File

@@ -1,87 +0,0 @@
From b2fd2bf9ef835104a813c40c190d71e3644125d7 Mon Sep 17 00:00:00 2001
From: Rudi Heitbaum <rudi@heitbaum.com>
Date: Thu, 19 Dec 2024 02:23:11 +1100
Subject: [PATCH] use make_address from boost as from_string is deprecated
(#1308)
Since boost 1.87.0 boost::asio::ip::address::from_string is no longer available
ref: https://github.com/boostorg/asio/commit/c0d1cfce7767599c4cf00df36f8017a1073339ae
fixes:
../server/control_server.cpp: In member function 'void ControlServer::start()':
../server/control_server.cpp:164:111: error: 'from_string' is not a member of 'boost::asio::ip::address'
164 | tcp::endpoint(boost::asio::ip::address::from_string(address), tcp_settings_.port)));
| ^~~~~~~~~~~
../server/control_server.cpp:180:112: error: 'from_string' is not a member of 'boost::asio::ip::address'
180 | tcp::endpoint(boost::asio::ip::address::from_string(address), http_settings_.port)));
| ^~~~~~~~~~~
../server/streamreader/tcp_stream.cpp: In constructor 'streamreader::TcpStream::TcpStream(streamreader::PcmStream::Listener*, boost::asio::io_context&, const ServerSettings&, const streamreader::StreamUri&)':
../server/streamreader/tcp_stream.cpp:67:97: error: 'from_string' is not a member of 'boost::asio::ip::address'
67 | acceptor_ = make_unique<tcp::acceptor>(strand_, tcp::endpoint(boost::asio::ip::address::from_string(host_), port_));
| ^~~~~~~~~~~
../server/streamreader/tcp_stream.cpp: In member function 'virtual void streamreader::TcpStream::connect()':
../server/streamreader/tcp_stream.cpp:96:75: error: 'from_string' is not a member of 'boost::asio::ip::address'
96 | boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string(host_), port_);
| ^~~~~~~~~~~
../server/stream_server.cpp: In member function 'void StreamServer::start()':
../server/stream_server.cpp:234:103: error: 'from_string' is not a member of 'boost::asio::ip::address'
234 | tcp::endpoint(boost::asio::ip::address::from_string(address), settings_.stream.port)));
|
---
server/control_server.cpp | 4 ++--
server/stream_server.cpp | 2 +-
server/streamreader/tcp_stream.cpp | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
--- a/server/control_server.cpp
+++ b/server/control_server.cpp
@@ -161,7 +161,7 @@ void ControlServer::start()
{
LOG(INFO, LOG_TAG) << "Creating TCP acceptor for address: " << address << ", port: " << tcp_settings_.port << "\n";
acceptor_tcp_.emplace_back(make_unique<tcp::acceptor>(boost::asio::make_strand(io_context_.get_executor()),
- tcp::endpoint(boost::asio::ip::make_address(address), settings_.tcp.port)));
+ tcp::endpoint(boost::asio::ip::make_address(address), tcp_settings_.port)));
}
catch (const boost::system::system_error& e)
{
@@ -177,7 +177,7 @@ void ControlServer::start()
{
LOG(INFO, LOG_TAG) << "Creating HTTP acceptor for address: " << address << ", port: " << http_settings_.port << "\n";
acceptor_http_.emplace_back(make_unique<tcp::acceptor>(boost::asio::make_strand(io_context_.get_executor()),
- tcp::endpoint(boost::asio::ip::make_address(address), settings_.http.port)));
+ tcp::endpoint(boost::asio::ip::make_address(address), http_settings_.port)));
}
catch (const boost::system::system_error& e)
{
--- a/server/stream_server.cpp
+++ b/server/stream_server.cpp
@@ -231,7 +231,7 @@ void StreamServer::start()
{
LOG(INFO, LOG_TAG) << "Creating stream acceptor for address: " << address << ", port: " << settings_.stream.port << "\n";
acceptor_.emplace_back(make_unique<tcp::acceptor>(boost::asio::make_strand(io_context_.get_executor()),
- tcp::endpoint(boost::asio::ip::address::from_string(address), settings_.stream.port)));
+ tcp::endpoint(boost::asio::ip::make_address(address), settings_.stream.port)));
}
catch (const boost::system::system_error& e)
{
--- a/server/streamreader/tcp_stream.cpp
+++ b/server/streamreader/tcp_stream.cpp
@@ -64,7 +64,7 @@ TcpStream::TcpStream(PcmStream::Listener
LOG(INFO, LOG_TAG) << "TcpStream host: " << host_ << ", port: " << port_ << ", is server: " << is_server_ << "\n";
if (is_server_)
- acceptor_ = make_unique<tcp::acceptor>(strand_, tcp::endpoint(boost::asio::ip::address::from_string(host_), port_));
+ acceptor_ = make_unique<tcp::acceptor>(strand_, tcp::endpoint(boost::asio::ip::make_address(host_), port_));
}
@@ -93,7 +93,7 @@ void TcpStream::connect()
else
{
stream_ = make_unique<tcp::socket>(strand_);
- boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string(host_), port_);
+ boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::make_address(host_), port_);
stream_->async_connect(endpoint,
[this](const boost::system::error_code& ec)
{

View File

@@ -1,44 +0,0 @@
From 6190041e863968d76b6d16140bba90be6dff848f Mon Sep 17 00:00:00 2001
From: badaix <johannes.pohl@badaix.de>
Date: Thu, 19 Dec 2024 21:36:08 +0100
Subject: [PATCH] Fix compilation with boost v1.87.0
---
client/client_connection.cpp | 5 ++---
server/stream_session_ws.cpp | 2 +-
2 files changed, 3 insertions(+), 4 deletions(-)
--- a/client/client_connection.cpp
+++ b/client/client_connection.cpp
@@ -124,10 +124,9 @@ std::string ClientConnection::getMacAddr
void ClientConnection::connect(const ResultHandler& handler)
{
- tcp::resolver::query query(server_.host, cpt::to_string(server_.port), boost::asio::ip::resolver_query_base::numeric_service);
boost::system::error_code ec;
LOG(INFO, LOG_TAG) << "Resolving host IP for: " << server_.host << "\n";
- auto iterator = resolver_.resolve(query, ec);
+ auto iterator = resolver_.resolve(server_.host, cpt::to_string(server_.port), boost::asio::ip::resolver_query_base::numeric_service, ec);
if (ec)
{
LOG(ERROR, LOG_TAG) << "Failed to resolve host '" << server_.host << "', error: " << ec.message() << "\n";
@@ -141,7 +140,7 @@ void ClientConnection::connect(const Res
for (const auto& iter : iterator)
{
LOG(INFO, LOG_TAG) << "Connecting to " << iter.endpoint() << "\n";
- socket_.connect(*iterator, ec);
+ socket_.connect(iter, ec);
if (!ec || (ec == boost::system::errc::interrupted))
{
// We were successful or interrupted, e.g. by sig int
--- a/server/stream_session_ws.cpp
+++ b/server/stream_session_ws.cpp
@@ -114,7 +114,7 @@ void StreamSessionWebsocket::on_read_ws(
return;
}
- auto* data = boost::asio::buffer_cast<char*>(buffer_.data());
+ auto* data = static_cast<char*>(buffer_.data().data());
baseMessage_.deserialize(data);
LOG(DEBUG, LOG_TAG) << "getNextMessage: " << baseMessage_.type << ", size: " << baseMessage_.size << ", id: " << baseMessage_.id
<< ", refers: " << baseMessage_.refersTo << "\n";

View File

@@ -1,60 +0,0 @@
From 901b79a213b139c35ff689c05aff01d29610a8d4 Mon Sep 17 00:00:00 2001
From: Tobias Hochwallner <tobster@gmx.at>
Date: Wed, 7 May 2025 22:42:07 +0200
Subject: Build failure with boost 1.88.0 #1367
1. [tobster] fix compilation errors by including the deprecated boost process v1 APIs
2. [badaix] Define BOOST_PROCESS_VERSION=1 globally
---
client/player/player.cpp | 6 +++++-
server/streamreader/stream_control.hpp | 8 +++++---
2 files changed, 10 insertions(+), 4 deletions(-)
--- a/client/player/player.cpp
+++ b/client/player/player.cpp
@@ -34,10 +34,17 @@
#pragma GCC diagnostic ignored "-Wmissing-braces"
#pragma GCC diagnostic ignored "-Wnarrowing"
#pragma GCC diagnostic ignored "-Wc++11-narrowing"
+#if BOOST_VERSION >= 108800
+#include <boost/process/v1/args.hpp>
+#include <boost/process/v1/async.hpp>
+#include <boost/process/v1/child.hpp>
+#include <boost/process/v1/exe.hpp>
+#else
#include <boost/process/args.hpp>
#include <boost/process/async.hpp>
#include <boost/process/child.hpp>
#include <boost/process/exe.hpp>
+#endif
#pragma GCC diagnostic pop
#endif
--- a/server/streamreader/stream_control.hpp
+++ b/server/streamreader/stream_control.hpp
@@ -32,7 +32,13 @@
#pragma GCC diagnostic ignored "-Wnarrowing"
#pragma GCC diagnostic ignored "-Wc++11-narrowing"
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#if BOOST_VERSION >= 108800
+#include <boost/process/v1/io.hpp>
+#include <boost/process/v1/start_dir.hpp>
+#include <boost/process/v1/system.hpp>
+#else
#include <boost/process.hpp>
+#endif
#pragma GCC diagnostic pop
#include <boost/asio/any_io_executor.hpp>
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -318,7 +318,8 @@ else()
add_compile_definitions(HAS_TREMOR)
endif()
-add_compile_definitions(BOOST_ERROR_CODE_HEADER_ONLY BOOST_ASIO_NO_TS_EXECUTORS)
+add_compile_definitions(BOOST_ERROR_CODE_HEADER_ONLY BOOST_ASIO_NO_TS_EXECUTORS
+ BOOST_PROCESS_VERSION=1)
if(WIN32)
include(FindPackageHandleStandardArgs)

View File

@@ -1,19 +0,0 @@
From d2e1635ebd96ac76cc779cb3ab73bae10fd88fd1 Mon Sep 17 00:00:00 2001
From: badaix <johannes.pohl@badaix.de>
Date: Thu, 14 Aug 2025 20:25:01 +0200
Subject: [PATCH] Fix building with boost v1.89.0
---
client/player/alsa_player.cpp | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
--- a/client/player/alsa_player.cpp
+++ b/client/player/alsa_player.cpp
@@ -30,6 +30,7 @@
// standard headers
#include <chrono>
+#include <cmath>
using namespace std::chrono_literals;

View File

@@ -5,13 +5,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=lf
PKG_VERSION:=38
PKG_VERSION:=39
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/gokcehan/lf.git
PKG_SOURCE_VERSION:=r$(PKG_VERSION)
PKG_MIRROR_HASH:=ff99f81df2b30e37f6e34952ba1b004e3f8b641954e35bf87a359a88a6926faf
PKG_MIRROR_HASH:=abbff226ee3f2374e8c9d65e3f2bff917271694ad01f3a9c0fa0c07065fc4bd7
PKG_MAINTAINER:=Nate Robinson <nrobinson2000@me.com>
PKG_LICENSE:=MIT

View File

@@ -4,7 +4,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=prometheus-node-exporter-lua
PKG_VERSION:=2025.07.15
PKG_VERSION:=2025.11.22
PKG_RELEASE:=1
PKG_MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>

View File

@@ -11,7 +11,7 @@ _log() {
start_service() {
. /lib/functions/network.sh
local interface port listenflag cert key bind4 bind6
local interface port listenflag cert key bind4 bind6 omit_zero_values
config_load prometheus-node-exporter-lua.main
config_get keepalive "main" http_keepalive 70
@@ -19,6 +19,7 @@ start_service() {
config_get port "main" listen_port 9100
config_get cert "main" cert
config_get key "main" key
config_get omit_zero_values "main" omit_zero_values 0
[ "$interface" = "*" ] || {
network_get_ipaddr bind4 "$interface"
@@ -31,6 +32,8 @@ start_service() {
procd_open_instance
[ "$omit_zero_values" -eq 1 ] && procd_set_param env OMIT_ZERO_VALUES=1
procd_set_param command /usr/sbin/uhttpd -f -c /dev/null -l / -L /usr/bin/prometheus-node-exporter-lua
[ $keepalive -gt 0 ] && procd_append_param command -k $keepalive

View File

@@ -8,6 +8,10 @@
socket = require("socket")
-- get configs
local omit_zero_values = os.getenv("OMIT_ZERO_VALUES") == "1"
-- Parsing
function space_split(s)
@@ -50,8 +54,12 @@ end
function metric(name, mtype, labels, value)
out:write("# TYPE ", name, " ", mtype, "\n")
-- omit_zero_vales config supress time series always being zero
local printall = not (mtype == "counter" and omit_zero_values)
local outputter = function(labels, value)
print_metric(name, labels, value)
if printall or tonumber(value) ~= 0 then
print_metric(name, labels, value)
end
end
if value then
outputter(labels, value)

View File

@@ -3,12 +3,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=telegraf
PKG_VERSION:=1.36.4
PKG_VERSION:=1.37.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/influxdata/telegraf/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=d4f647b3ff995698e4490cf9f156ec6d53552cd16287782a196c937ff8d748c3
PKG_HASH:=1f05448f5026bff30f8a2b7ec04936c7967b7bb28d86d09f15a617c02071bb77
PKG_MAINTAINER:=Niklas Thorild <niklas@thorild.se>
PKG_LICENSE:=MIT
@@ -23,7 +23,7 @@ GO_PKG_BUILD_PKG:=github.com/influxdata/telegraf/cmd/telegraf
GO_PKG_LDFLAGS_X := \
github.com/influxdata/telegraf/internal.Version=$(PKG_VERSION) \
github.com/influxdata/telegraf/internal.Branch=HEAD \
github.com/influxdata/telegraf/internal.Commit=467473bd
github.com/influxdata/telegraf/internal.Commit=f80cc596
ifeq ($(CONFIG_mips)$(CONFIG_mipsel),y)
TARGET_LDFLAGS += -static

View File

@@ -3,6 +3,6 @@
[ -f /etc/telegraf.conf ] && exit 0
/usr/bin/telegraf config create > /etc/telegraf.conf
HOME=/root /usr/bin/telegraf config create > /etc/telegraf.conf
exit 0

View File

@@ -8,20 +8,21 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=vim
PKG_VERSION:=9.1
PKG_RELEASE:=1
PKG_VERSION:=9.1.1918
PKG_XXD_VERSION:=2025.08.24
PKG_RELEASE:=2
VIMVER:=91
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://www.vim.org/downloads
PKG_HASH:=9c2d1d6763a672f6c5210a2bc4bad5a58e4eb8e8e3f293d950d9647811647ec7
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/vim/vim.git
PKG_SOURCE_VERSION=v$(PKG_VERSION)
PKG_MIRROR_HASH:=51c2d2492d884c879c61b1451f4690f221b2dbccacfe3ddf8abde4d6fcc5e2bf
PKG_MAINTAINER:=Marko Ratkaj <markoratkaj@gmail.com>
PKG_LICENSE:=Vim
PKG_LICENSE_FILES:=LICENSE
PKG_CPE_ID:=cpe:/a:vim:vim
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)$(VIMVER)
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
@@ -48,7 +49,6 @@ define Package/vim-full
CONFLICTS:=vim
endef
define Package/vim-fuller
$(call Package/vim/Default)
TITLE+= (Big)
@@ -71,6 +71,7 @@ define Package/xxd
CATEGORY:=Utilities
TITLE:=make a hexdump or do the reverse
URL:=http://www.vim.org/
VERSION:=$(PKG_XXD_VERSION)
endef
define Package/vim-full/conffiles
@@ -93,7 +94,6 @@ define Package/vim-full/description
(Normal build)
endef
define Package/vim-fuller/description
Vim is an almost compatible version of the UNIX editor Vi.
(Big build)
@@ -126,7 +126,8 @@ CONFIGURE_ARGS += \
--disable-libsodium \
--disable-selinux \
--with-tlib=ncurses \
--with-compiledby="non-existent-hostname-compiled"
--with-compiledby="non-existent-hostname-compiled" \
--with-wayland=no
CONFIGURE_VARS += \
ac_cv_header_elf_h=no \
@@ -181,8 +182,6 @@ define Build/Compile/vim-fuller
endef
endif
ifneq ($(CONFIG_PACKAGE_xxd),)
define Build/Compile/xxd
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
@@ -220,7 +219,6 @@ define Package/vim-full/install
$(INSTALL_CONF) ./files/vimrc.full $(1)/usr/share/vim/vimrc
endef
define Package/vim-fuller/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/vim_big $(1)/usr/bin/vim
@@ -230,8 +228,6 @@ define Package/vim-fuller/install
$(INSTALL_CONF) ./files/vimrc.full $(1)/usr/share/vim/vimrc
endef
define Package/vim-runtime/install
$(CP) $(PKG_INSTALL_DIR)/* $(1)
rm -rf $(1)/usr/share/vim/vim$(VIMVER)/doc

View File

@@ -1,11 +1,11 @@
--- a/src/po/Makefile
+++ b/src/po/Makefile
@@ -36,7 +36,7 @@ MSGMERGE = OLD_PO_FILE_INPUT=yes OLD_PO_
-c "if error == 0 | q | else | num 2 | cq | endif" $<
touch $@
@@ -30,7 +30,7 @@ MSGMERGE = OLD_PO_FILE_INPUT=yes OLD_PO_
.PHONY: all install uninstall prefixcheck originals converted check clean \
checkclean distclean update-po $(LANGUAGES)
-all: $(MOFILES) $(MOCONVERTED) $(MSGFMT_DESKTOP)
+all: $(MOFILES) $(MOCONVERTED)
check: $(CHECKFILES)
originals: $(MOFILES)

View File

@@ -2,9 +2,9 @@
+++ b/runtime/doc/Makefile
@@ -24,7 +24,6 @@ all: tags vim.man evim.man vimdiff.man v
# Use Vim to generate the tags file. Can only be used when Vim has been
# compiled and installed. Supports multiple languages.
# compiled. Supports multiple languages.
vimtags: $(DOCS)
- @$(VIMEXE) --clean -esX -V1 -u doctags.vim
- @$(VIMPROG) --clean -esX -V1 -u doctags.vim
# Use "doctags" to generate the tags file. Only works for English!
tags: doctags $(DOCS)

View File

@@ -2,6 +2,9 @@
case "$1" in
vim|vim-full|vim-fuller)
vim --version | grep "$2"
vim --version | grep -F "$2"
;;
xxd)
xxd --version 2>&1 | grep -F "${2//./-}"
;;
esac

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=watchcat
PKG_VERSION:=1
PKG_RELEASE:=17
PKG_RELEASE:=18
PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
PKG_LICENSE:=GPL-2.0

View File

@@ -39,7 +39,7 @@ config_watchcat() {
config_get forcedelay "$1" forcedelay "60"
config_get pingsize "$1" pingsize "standard"
config_get interface "$1" interface
config_get mmifacename "$1" mmifacename
config_get mmifacename "$1" mmifacename "null"
config_get_bool unlockbands "$1" unlockbands "0"
config_get addressfamily "$1" addressfamily "any"
config_get script "$1" script
@@ -73,7 +73,7 @@ config_watchcat() {
append_string "warn" "pingperiod cannot be a negative value." "; "
fi
if [ "$mmifacename" != "" ] && [ "$period" -lt 30 ]; then
if [ "$mmifacename" != "null" ] && [ "$period" -lt 30 ]; then
append_string "error" "Check interval is less than 30s. For robust operation with ModemManager modem interfaces it is recommended to set the period to at least 30s."
fi
fi
@@ -104,19 +104,19 @@ config_watchcat() {
;;
ping_reboot)
procd_open_instance "watchcat_${1}"
procd_set_param command /usr/bin/watchcat.sh "ping_reboot" "$period" "$forcedelay" "$pinghosts" "$pingperiod" "$pingsize" "$addressfamily"
procd_set_param command /usr/bin/watchcat.sh "ping_reboot" "$period" "$forcedelay" \"$pinghosts\" "$pingperiod" "$pingsize" "$addressfamily"
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
procd_close_instance
;;
restart_iface)
procd_open_instance "watchcat_${1}"
procd_set_param command /usr/bin/watchcat.sh "restart_iface" "$period" "$pinghosts" "$pingperiod" "$pingsize" "$interface" "$mmifacename" "$unlockbands" "$addressfamily"
procd_set_param command /usr/bin/watchcat.sh "restart_iface" "$period" \"$pinghosts\" "$pingperiod" "$pingsize" "$interface" "$mmifacename" "$unlockbands" "$addressfamily"
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
procd_close_instance
;;
run_script)
procd_open_instance "watchcat_${1}"
procd_set_param command /usr/bin/watchcat.sh "run_script" "$period" "$pinghosts" "$pingperiod" "$pingsize" "$interface" "$addressfamily" "$script"
procd_set_param command /usr/bin/watchcat.sh "run_script" "$period" \"$pinghosts\" "$pingperiod" "$pingsize" "$interface" "$addressfamily" "$script"
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
procd_close_instance
;;