+++ /dev/null
-git:
- depth: 10
- quiet: true
-
-language: c
-os: linux
-dist: focal
-cache:
- directories:
- - $HOME/sdk
-
-before_script:
- - ./.travis_do.sh download_sdk
-
-script:
- - ./.travis_do.sh test_packages
+++ /dev/null
-#!/bin/bash
-#
-# MIT Alexander Couzens <lynxis@fe80.eu>
-
-set -e
-
-SDK_HOME="$HOME/sdk"
-SDK_PATH=https://downloads.openwrt.org/snapshots/targets/mpc85xx/p2020/
-SDK=-sdk-mpc85xx-p2020_
-PACKAGES_DIR="$PWD"
-
-echo_red() { printf "\033[1;31m$*\033[m\n"; }
-echo_green() { printf "\033[1;32m$*\033[m\n"; }
-echo_blue() { printf "\033[1;34m$*\033[m\n"; }
-
-exec_status() {
- PATTERN="$1"
- shift
- while :;do sleep 590;echo "still running (please don't kill me Travis)";done &
- ("$@" 2>&1) | tee logoutput
- R=${PIPESTATUS[0]}
- kill $! && wait $! 2>/dev/null
- if [ $R -ne 0 ]; then
- echo_red "=> '$*' failed (return code $R)"
- return 1
- fi
- if grep -qE "$PATTERN" logoutput; then
- echo_red "=> '$*' failed (log matched '$PATTERN')"
- return 1
- fi
-
- echo_green "=> '$*' successful"
- return 0
-}
-
-get_sdk_file() {
- if [ -e "$SDK_HOME/sha256sums" ] ; then
- grep -- "$SDK" "$SDK_HOME/sha256sums" | awk '{print $2}' | sed 's/*//g'
- else
- false
- fi
-}
-
-# download will run on the `before_script` step
-# The travis cache will be used (all files under $HOME/sdk/). Meaning
-# We don't have to download the file again
-download_sdk() {
- mkdir -p "$SDK_HOME"
- cd "$SDK_HOME"
-
- echo_blue "=== download SDK"
- wget "$SDK_PATH/sha256sums" -O sha256sums
- wget "$SDK_PATH/sha256sums.gpg" -O sha256sums.asc
-
- # LEDE Build System (LEDE GnuPG key for unattended build jobs)
- gpg --import $PACKAGES_DIR/.keys/626471F1.asc
- echo '54CC74307A2C6DC9CE618269CD84BCED626471F1:6:' | gpg --import-ownertrust
- # LEDE Release Builder (17.01 "Reboot" Signing Key)
- gpg --import $PACKAGES_DIR/.keys/D52BBB6B.asc
- echo 'B09BE781AE8A0CD4702FDCD3833C6010D52BBB6B:6:' | gpg --import-ownertrust
-
- echo_blue "=== Verifying sha256sums signature"
- gpg --verify sha256sums.asc
- echo_blue "=== Verified sha256sums signature."
- if ! grep -- "$SDK" sha256sums > sha256sums.small ; then
- echo_red "=== Can not find $SDK file in sha256sums."
- echo_red "=== Is \$SDK out of date?"
- false
- fi
-
- # if missing, outdated or invalid, download again
- if ! sha256sum -c ./sha256sums.small ; then
- local sdk_file
- sdk_file="$(get_sdk_file)"
- echo_blue "=== sha256 doesn't match or SDK file wasn't downloaded yet."
- echo_blue "=== Downloading a fresh version"
- wget "$SDK_PATH/$sdk_file" -O "$sdk_file"
- fi
-
- # check again and fail here if the file is still bad
- echo_blue "Checking sha256sum a second time"
- if ! sha256sum -c ./sha256sums.small ; then
- echo_red "=== SDK can not be verified!"
- false
- fi
- echo_blue "=== SDK is up-to-date"
-}
-
-# test_package will run on the `script` step.
-# test_package call make download check for very new/modified package
-test_packages2() {
- local commit_range=$TRAVIS_COMMIT_RANGE
- if [ -z "$TRAVIS_PULL_REQUEST_SHA" ]; then
- echo_blue "Using only the latest commit, since we're not in a Pull Request"
- commit_range=HEAD~1
- fi
-
- # search for new or modified packages. PKGS will hold a list of package like 'admin/muninlite admin/monit ...'
- PKGS=$(git diff --diff-filter=d --name-only "$commit_range" | grep 'Makefile$' | grep -v '/files/' | awk -F'/Makefile' '{ print $1 }')
-
- if [ -z "$PKGS" ] ; then
- echo_blue "No new or modified packages found!"
- return 0
- fi
-
- echo_blue "=== Found new/modified packages:"
- for pkg in $PKGS ; do
- echo "===+ $pkg"
- done
-
- echo_blue "=== Setting up SDK"
- tmp_path=$(mktemp -d)
- cd "$tmp_path"
- tar Jxf "$SDK_HOME/$(get_sdk_file)" --strip=1
-
- # use github mirrors to spare lede servers
- cat > feeds.conf <<EOF
-src-git base https://github.com/lede-project/source.git
-src-link packages $PACKAGES_DIR
-src-git luci https://github.com/openwrt/luci.git
-EOF
-
- # enable BUILD_LOG
- sed -i '1s/^/config BUILD_LOG\n\tbool\n\tdefault y\n\n/' Config-build.in
-
- ./scripts/feeds update -a > /dev/null
- ./scripts/feeds install -a > /dev/null
- make defconfig > /dev/null
- echo_blue "=== Setting up SDK done"
-
- RET=0
- # E.g: pkg_dir => admin/muninlite
- # pkg_name => muninlite
- for pkg_dir in $PKGS ; do
- pkg_name=$(echo "$pkg_dir" | awk -F/ '{ print $NF }')
- echo_blue "=== $pkg_name: Starting quick tests"
-
- exec_status '^ERROR' make "package/$pkg_name/download" V=s || RET=1
- badhash_msg_regex="HASH does not match "
- badhash_msg_regex="$badhash_msg_regex|HASH uses deprecated hash,"
- badhash_msg_regex="$badhash_msg_regex|HASH is missing,"
- exec_status '^ERROR'"|$badhash_msg_regex" make "package/$pkg_name/check" V=s || RET=1
-
- echo_blue "=== $pkg_name: quick tests done"
- done
-
- [ $RET -ne 0 ] && return $RET
-
- for pkg_dir in $PKGS ; do
- pkg_name=$(echo "$pkg_dir" | awk -F/ '{ print $NF }')
- echo_blue "=== $pkg_name: Starting compile test"
-
- # we can't enable verbose built else we often hit Travis limits
- # on log size and the job get killed
- exec_status '^ERROR' make "package/$pkg_name/compile" -j3 || RET=1
-
- echo_blue "=== $pkg_name: compile test done"
-
- echo_blue "=== $pkg_name: begin compile logs"
- for f in $(find logs/package/feeds/packages/$pkg_name/ -type f); do
- echo_blue "Printing last 200 lines of $f"
- tail -n200 "$f"
- done
- echo_blue "=== $pkg_name: end compile logs"
-
- echo_blue "=== $pkg_name: begin packages sizes"
- du -ba bin/
- echo_blue "=== $pkg_name: end packages sizes"
- done
-
- return $RET
-}
-
-test_commits() {
- RET=0
- if [ -z "$TRAVIS_PULL_REQUEST_SHA" ]; then
- echo_blue "Skipping commits tests (not in a Pull Request)"
- return 0
- fi
- for commit in $(git rev-list ${TRAVIS_COMMIT_RANGE/.../..}); do
- echo_blue "=== Checking commit '$commit'"
- if git show --format='%P' -s $commit | grep -qF ' '; then
- echo_red "Pull request should not include merge commits"
- RET=1
- fi
-
- author="$(git show -s --format=%aN $commit)"
- if echo $author | grep -q '\S\+\s\+\S\+'; then
- echo_green "Author name ($author) seems ok"
- else
- echo_red "Author name ($author) need to be your real name 'firstname lastname'"
- RET=1
- fi
-
- subject="$(git show -s --format=%s $commit)"
- if echo "$subject" | grep -q -e '^[0-9A-Za-z,/_-]\+: ' -e '^Revert '; then
- echo_green "Commit subject line seems ok ($subject)"
- else
- echo_red "Commit subject line MUST start with '<package name>: ' ($subject)"
- RET=1
- fi
-
- body="$(git show -s --format=%b $commit)"
- sob="$(git show -s --format='Signed-off-by: %aN <%aE>' $commit)"
- if echo "$body" | grep -qF "$sob"; then
- echo_green "Signed-off-by match author"
- else
- echo_red "Signed-off-by is missing or doesn't match author (should be '$sob')"
- RET=1
- fi
- done
-
- return $RET
-}
-
-test_packages() {
- test_commits && test_packages2 || return 1
-}
-
-echo_blue "=== Travis ENV"
-env
-echo_blue "=== Travis ENV"
-
-if [ -n "$TRAVIS_PULL_REQUEST_SHA" ]; then
- while true; do
- # if clone depth is too small, git rev-list / diff return incorrect or empty results
- C="$(git rev-list ${TRAVIS_COMMIT_RANGE/.../..} | tail -n1)" 2>/dev/null
- [ -n "$C" -a "$C" != "a22de9b74cf9579d1ce7e6cf1845b4afa4277b00" ] && break
- echo_blue "Fetching 50 commits more"
- git fetch origin --deepen=50
- done
-fi
-
-if [ $# -ne 1 ] ; then
- cat <<EOF
-Usage: $0 (download_sdk|test_packages)
-
-download_sdk - download the SDK to $HOME/sdk.tar.xz
-test_packages - do a make check on the package
-EOF
- exit 1
-fi
-
-$@
include $(TOPDIR)/rules.mk
PKG_NAME:=netdata
-PKG_VERSION:=1.29.3
+PKG_VERSION:=1.30.1
PKG_RELEASE:=1
PKG_MAINTAINER:=Josef Schlehofer <pepe.schlehofer@gmail.com>, Daniel Engberg <daniel.engberg.lists@pyret.net>
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/netdata/netdata/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=8e045ea153db99317a95232d1d7a76711bee46f4bc2666d22e268ff03011aa43
+PKG_HASH:=e05f8b59d283fb2844280455b9481a2f9104730fd77f535312ff2fec40a6bc11
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
[health]
enabled = no
+
+[plugin:proc:ipc]
+ shared memory totals = no
include $(TOPDIR)/rules.mk
PKG_NAME:=meson
-PKG_VERSION:=0.57.1
+PKG_VERSION:=0.57.2
PKG_RELEASE:=$(AUTORELEASE)
PYPI_NAME:=meson
-PKG_HASH:=72e1c782ba9bda204f4a1ed57f98d027d7b6eb9414c723eebbd6ec7f1955c8a6
+PKG_HASH:=3a83e7b1c5de94fa991ec34d9b198d94f38ed699d3524cb0fdf3b99fd23d4cc5
PKG_MAINTAINER:=Andre Heider <a.heider@gmail.com>
PKG_LICENSE:=Apache-2.0
-e "s|@CXXFLAGS@|$(foreach FLAG,$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS),'$(FLAG)',)|" \
-e "s|@LDFLAGS@|$(foreach FLAG,$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS),'$(FLAG)',)|" \
-e "s|@ARCH@|$(MESON_ARCH)|" \
- -e "s|@CPU@|$(MESON_CPU))|" \
+ -e "s|@CPU@|$(MESON_CPU)|" \
-e "s|@ENDIAN@|$(if $(CONFIG_BIG_ENDIAN),big,little)|" \
< $(MESON_DIR)/openwrt-cross.txt.in \
> $(1)
include $(TOPDIR)/rules.mk
PKG_NAME:=ksmbd
-PKG_VERSION:=3.3.7
+PKG_VERSION:=3.3.8
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/cifsd-team/cifsd/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=d92706e2dc00bd612698be2c39759ea6170a869e657bae4a80cf6424a333babe
+PKG_HASH:=8c0d1beaa549053a476287972105f3cad53e9841983c54c2490f52a88e1a4828
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=lua-openssl
-PKG_VERSION:=0.7.4
-PKG_RELEASE:=1
-PKG_MAINTAINER:=Amnon Paz <pazamnon@gmail.com>
-PKG_LICENSE:=MIT
+PKG_RELEASE:=$(AUTORELEASE)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=c27cedee438de95877823b1ae0607556564d82c8692be40f43743ca9cc5a029a
-PKG_SOURCE_URL:=https://github.com/zhaozg/lua-openssl.git
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=96effbaf477ca205f1787aaf1cce643bd208066b
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/zhaozg/lua-openssl.git
+PKG_SOURCE_VERSION:=0.7.8-0
+PKG_MIRROR_HASH:=890dda7b23ff303e70ca8aa0d729836de347c0e58057282f55c6abf87e39c602
+
+PKG_MAINTAINER:=Amnon Paz <pazamnon@gmail.com>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
+include ../../devel/ninja/ninja-cmake.mk
define Package/lua-openssl
SUBMENU:=Lua
define Package/lua-openssl/install
$(INSTALL_DIR) $(1)/usr/lib/lua
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/openssl.so $(1)/usr/lib/lua/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/lua/5.1/openssl.so $(1)/usr/lib/lua/
endef
$(eval $(call BuildPackage,lua-openssl))
+++ /dev/null
---- a/Makefile
-+++ b/Makefile
-@@ -1,121 +1,52 @@
- T=openssl
-+.PHONY: install clean
-
--PREFIX ?=/usr/local
--CC := $(CROSS)$(CC)
--AR := $(CROSS)$(AR)
--LD := $(CROSS)$(LD)
--
--#OS auto detect
--ifneq (,$(TARGET_SYS))
-- SYS := $(TARGET_SYS)
--else
-- SYS := $(shell gcc -dumpmachine)
--endif
--
--#Lua auto detect
--LUA_VERSION := $(shell pkg-config luajit --print-provides)
--ifeq ($(LUA_VERSION),)
-- # Not found luajit package, try lua
-- LUA_VERSION := $(shell pkg-config lua --print-provides)
-- ifeq ($(LUA_VERSION),)
-- # Not found lua package, try from prefix
-- LUA_VERSION := $(shell lua -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)")
-- LUA_CFLAGS ?= -I$(PREFIX)/include/lua$(LUA_VERSION)
-- LUA_LIBS ?= -L$(PREFIX)/lib -llua
-- LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUA_VERSION)
-- else
-- # Found lua package
-- LUA_VERSION := $(shell lua -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)")
-- LUA_CFLAGS ?= $(shell pkg-config lua --cflags)
-- LUA_LIBS ?= $(shell pkg-config lua --libs)
-- LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUA_VERSION)
-- endif
--else
-- # Found luajit package
-- LUA_VERSION := $(shell luajit -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)")
-- LUA_CFLAGS ?= $(shell pkg-config luajit --cflags)
-- LUA_LIBS ?= $(shell pkg-config luajit --libs)
-- LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUA_VERSION)
--endif
--
--#OpenSSL auto detect
--OPENSSL_CFLAGS ?= $(shell pkg-config openssl --cflags)
--OPENSSL_LIBS ?= $(shell pkg-config openssl --static --libs)
--
--ifneq (, $(findstring linux, $(SYS)))
-- # Do linux things
-- CFLAGS = -fpic
-- LDFLAGS = -Wl,--no-undefined -fpic -lrt -ldl -lm
--endif
--
--ifneq (, $(findstring apple, $(SYS)))
-- # Do darwin things
-- CFLAGS = -fPIC
-- LDFLAGS = -fPIC -undefined dynamic_lookup -ldl
-- #MACOSX_DEPLOYMENT_TARGET="10.3"
-- CC := MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} $(CC)
--endif
-+PKGC ?= pkg-config
-
--ifneq (, $(findstring mingw, $(SYS)))
-- # Do mingw things
-- CFLAGS = -DLUA_LIB -DLUA_BUILD_AS_DLL -DWIN32_LEAN_AND_MEAN
--endif
-+LIB_OPTION = -shared
-+LUAPKGC = lua
-
--ifneq (, $(findstring cygwin, $(SYS)))
-- # Do cygwin things
-- CFLAGS = -fPIC
--endif
-+# LUA include/libraries build flags
-+LUA_CFLAGS := $(shell $(PKGC) --cflags $(LUAPKGC))
-+LUA_LIBS_DIR := $(shell $(PKGC) --libs $(LUAPKGC))
-
--ifneq (, $(findstring iOS, $(SYS)))
-- # Do iOS things
-- CFLAGS = -fPIC
-- LDFLAGS = -fPIC -ldl
--endif
-+# openssl include/libraries build flags
-+OPENSSL_CFLAGS ?= $(shell $(PKGC) openssl --cflags)
-+OPENSSL_LIBS_DIR ?= $(shell $(PKGC) openssl --libs)
-
--#custom config
-+LDFLAGS = -Wl,--no-undefined -fpic -lrt -ldl -lm $(OPENSSL_LIBS_DIR) $(LUA_LIBS_DIR)
-+CFLAGS += -fPIC -DPTHREADS $(OPENSSL_CFLAGS) $(LUA_CFLAGS)
- ifeq (.config, $(wildcard .config))
-- include .config
-+include .config
- endif
-
--LIBNAME= $T.so.$V
-+LIBNAME= $T.so
-
--CFLAGS += $(OPENSSL_CFLAGS) $(LUA_CFLAGS) $(TARGET_FLAGS)
--LDFLAGS += -shared $(OPENSSL_LIBS) $(LUA_LIBS)
- # Compilation directives
- WARN_MIN = -Wall -Wno-unused-value
- WARN = -Wall
- WARN_MOST = $(WARN) -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings -pedantic
- CFLAGS += -g $(WARN_MIN) -DPTHREADS -Ideps -Ideps/lua-compat -Ideps/auxiliar
-
--
- OBJS=src/asn1.o deps/auxiliar/auxiliar.o src/bio.o src/cipher.o src/cms.o src/compat.o src/crl.o src/csr.o src/dh.o src/digest.o src/dsa.o \
- src/ec.o src/engine.o src/hmac.o src/lbn.o src/lhash.o src/misc.o src/ocsp.o src/openssl.o src/ots.o src/pkcs12.o src/pkcs7.o \
- src/pkey.o src/rsa.o src/ssl.o src/th-lock.o src/util.o src/x509.o src/xattrs.o src/xexts.o src/xname.o src/xstore.o \
- src/xalgor.o src/callback.o src/srp.o deps/auxiliar/subsidiar.o
-
--.c.o:
-- $(CC) $(CFLAGS) -c -o $@ $?
-+%.o: %.c
-+ $(CC) $(CFLAGS) -c $< -o $@
-
- all: $T.so
-- @echo "Target system: "$(SYS)
-+ echo $(SYS)
-+ $(CC) $(LDFLAGS) $(LIB_OPTION) $(OBJS) -o $@
-
--$T.so: lib$T.a
-- $(CC) -o $@ src/openssl.o -L. -l$T $(LDFLAGS)
--
--lib$T.a: $(OBJS)
-- $(AR) rcs $@ $?
-+$T.so: $(OBJS)
-+ echo "LUA LIBS_DIR: " $(LUA_LIBS_DIR)
-+ $(CC) $(CFLAGS) $(LIB_OPTION) -o $T.so $(OBJS) $(LDFLAGS)
-
- install: all
- mkdir -p $(LUA_LIBDIR)
- cp $T.so $(LUA_LIBDIR)
-
--info:
-- @echo "Target system: "$(SYS)
-- @echo "CC:" $(CC)
-- @echo "AR:" $(AR)
-- @echo "PREFIX:" $(PREFIX)
--
- clean:
-- rm -f $T.so lib$T.a $(OBJS)
--
--# vim: ts=8 sw=8 noet
-+ rm -f $T.so $(OBJS)
--- /dev/null
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -21,8 +21,6 @@ add_definitions(-DPTHREADS)
+
+ if(BUILD_SHARED_LUA_OPENSSL)
+ set(LUA_OPENSSL_LIBTYPE SHARED)
+- add_definitions(-DLUA_BUILD_AS_DLL -DLUA_LIB)
+- set(EXTRA_LIBS "ws2_32.lib" "crypt32.lib")
+ else()
+ set(LUA_OPENSSL_LIBTYPE STATIC)
+ endif()
--- /dev/null
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -8,7 +8,6 @@ option(BUILD_SHARED_LUA_OPENSSL "Shared
+
+ include(GNUInstallDirs)
+
+-find_package(LuaJIT)
+ if(NOT LUAJIT_FOUND)
+ find_package(Lua REQUIRED)
+ endif()
--- /dev/null
+--- a/src/cipher.c
++++ b/src/cipher.c
+@@ -8,6 +8,10 @@ cipher module for lua-openssl binding
+ #include "openssl.h"
+ #include "private.h"
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
++#define EVP_CIPHER_CTX_reset EVP_CIPHER_CTX_init
++#endif
++
+ /***
+ list all support cipher algs
+
+@@ -109,7 +113,7 @@ static LUA_FUNCTION(openssl_evp_encrypt)
+ memcpy(evp_iv, iv, iv_len);
+ }
+
+- EVP_CIPHER_CTX_init(c);
++ EVP_CIPHER_CTX_reset(c);
+ ret = EVP_EncryptInit_ex(c, cipher, e, (const byte*)evp_key, iv_len > 0 ? (const byte*)evp_iv : NULL);
+ if (ret == 1)
+ {
+@@ -131,8 +135,12 @@ static LUA_FUNCTION(openssl_evp_encrypt)
+ OPENSSL_free(buffer);
+ }
+ }
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
++ EVP_CIPHER_CTX_reset(c);
++#else
+ EVP_CIPHER_CTX_cleanup(c);
+ EVP_CIPHER_CTX_free(c);
++#endif
+ return (ret == 1) ? ret : openssl_pushresult(L, ret);
+ }
+ else
+@@ -196,7 +204,7 @@ static LUA_FUNCTION(openssl_evp_decrypt)
+ memcpy(evp_iv, iv, iv_len);
+ }
+
+- EVP_CIPHER_CTX_init(c);
++ EVP_CIPHER_CTX_reset(c);
+ ret = EVP_DecryptInit_ex(c, cipher, e, key ? (const byte*)evp_key : NULL, iv_len > 0 ? (const byte*)evp_iv : NULL);
+ if (ret == 1)
+ {
+@@ -220,8 +228,12 @@ static LUA_FUNCTION(openssl_evp_decrypt)
+ OPENSSL_free(buffer);
+ }
+ }
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
++ EVP_CIPHER_CTX_reset(c);
++#else
+ EVP_CIPHER_CTX_cleanup(c);
+ EVP_CIPHER_CTX_free(c);
++#endif
+ return (ret == 1) ? ret : openssl_pushresult(L, ret);
+ }
+ else
+@@ -292,7 +304,7 @@ static LUA_FUNCTION(openssl_evp_cipher)
+ memcpy(evp_iv, iv, iv_len);
+ }
+
+- EVP_CIPHER_CTX_init(c);
++ EVP_CIPHER_CTX_reset(c);
+ ret = EVP_CipherInit_ex(c, cipher, e, (const byte*)evp_key, iv_len > 0 ? (const byte*)evp_iv : NULL, enc);
+ if (ret == 1)
+ {
+@@ -317,8 +329,12 @@ static LUA_FUNCTION(openssl_evp_cipher)
+ OPENSSL_free(buffer);
+ }
+ }
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
++ EVP_CIPHER_CTX_reset(c);
++#else
+ EVP_CIPHER_CTX_cleanup(c);
+ EVP_CIPHER_CTX_free(c);
++#endif
+ return (ret == 1) ? ret : openssl_pushresult(L, ret);
+ }
+ else
+@@ -376,7 +392,7 @@ static LUA_FUNCTION(openssl_cipher_new)
+ memcpy(evp_iv, iv, iv_len);
+ }
+ c = EVP_CIPHER_CTX_new();
+- EVP_CIPHER_CTX_init(c);
++ EVP_CIPHER_CTX_reset(c);
+ if (!EVP_CipherInit_ex(c, cipher, e, key ? (const byte*)evp_key : NULL, iv_len > 0 ? (const byte*)evp_iv : NULL, enc))
+ {
+ luaL_error(L, "EVP_CipherInit_ex failed, please check openssl error");
+@@ -431,7 +447,7 @@ static LUA_FUNCTION(openssl_cipher_encry
+ memcpy(evp_iv, iv, iv_len);
+ }
+ c = EVP_CIPHER_CTX_new();
+- EVP_CIPHER_CTX_init(c);
++ EVP_CIPHER_CTX_reset(c);
+ ret = EVP_EncryptInit_ex(c, cipher, e,
+ key ? (const byte*)evp_key : NULL,
+ iv_len > 0 ? (const byte*)evp_iv : NULL);
+@@ -491,7 +507,7 @@ static LUA_FUNCTION(openssl_cipher_decry
+ memcpy(evp_iv, iv, iv_len);
+ }
+ c = EVP_CIPHER_CTX_new();
+- EVP_CIPHER_CTX_init(c);
++ EVP_CIPHER_CTX_reset(c);
+ ret = EVP_DecryptInit_ex(c, cipher, e,
+ key ? (const byte*)evp_key : NULL,
+ iv_len > 0 ? (const byte*)evp_iv : NULL);
+@@ -937,8 +953,12 @@ static LUA_FUNCTION(openssl_cipher_ctx_f
+ return 0;
+ lua_pushnil(L);
+ lua_rawsetp(L, LUA_REGISTRYINDEX, ctx);
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
++ EVP_CIPHER_CTX_reset(ctx);
++#else
+ EVP_CIPHER_CTX_cleanup(ctx);
+ EVP_CIPHER_CTX_free(ctx);
++#endif
+ FREE_OBJECT(1);
+ return 0;
+ }
+--- a/src/openssl.c
++++ b/src/openssl.c
+@@ -523,9 +523,7 @@ LUALIB_API int luaopen_openssl(lua_State
+ #endif
+
+ #ifndef OPENSSL_NO_ENGINE
+- ENGINE_load_dynamic();
+- ENGINE_load_openssl();
+- ENGINE_load_builtin_engines();
++ ENGINE_register_all_complete();
+ #endif
+ #ifdef LOAD_ENGINE_CUSTOM
+ LOAD_ENGINE_CUSTOM
+--- a/src/th-lock.c
++++ b/src/th-lock.c
+@@ -310,7 +310,7 @@ unsigned long irix_thread_id(void)
+
+ /* Linux and a few others */
+ #ifdef PTHREADS
+-#ifndef OPENSSL_SYS_WIN32
++#if !defined(OPENSSL_SYS_WIN32) && (OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER))
+ static pthread_mutex_t *lock_cs;
+ static long *lock_count;
+
PKG_NAME:=lualanes
PKG_VERSION:=3.13.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/LuaLanes/lanes/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=53a17d7ee11f17ca0543ae5aa640208dcb62d37862a0d0ea450455fae12c8ff1
PKG_BUILD_DIR:=$(BUILD_DIR)/lanes-$(PKG_VERSION)
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
+PKG_MAINTAINER:=Vladimir Malyutin <first-leon@yandex.ru>
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=COPYRIGHT
PKG_BUILD_DEPENDS:=lua/host
include $(INCLUDE_DIR)/package.mk
+include ../../devel/ninja/ninja-cmake.mk
define Package/lualanes
SUBMENU:=Lua
TITLE:=LuaLanes
URL:=http://lualanes.github.io/lanes/
DEPENDS:=+lua +luac +liblua +libpthread
- MAINTAINER:=Vladimir Malyutin <first-leon@yandex.ru>
endef
define Package/lualanes/description
Lanes supports Lua 5.1, 5.2 and 5.3
endef
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) all \
- CC="$(TARGET_CC)" \
- LUA="$(STAGING_DIR_HOSTPKG)/bin/lua" \
- LUAC="$(STAGING_DIR_HOSTPKG)/bin/luac" \
- LUA_FLAGS= \
- LUA_LIBS=-llua \
- OPT_FLAGS="$(TARGET_CFLAGS) -Dpthread_yield=sched_yield"
-endef
-
define Package/lualanes/install
$(INSTALL_DIR) $(1)/usr/lib/lua
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/lanes.lua $(1)/usr/lib/lua/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/lua/lmod/lanes.lua $(1)/usr/lib/lua/
$(INSTALL_DIR) $(1)/usr/lib/lua/lanes
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/src/lanes/core.so $(1)/usr/lib/lua/lanes/core.so
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/lua/cmod/core.so $(1)/usr/lib/lua/lanes/core.so
endef
$(eval $(call BuildPackage,lualanes))
#include <pthread.h>
- #ifdef PLATFORM_LINUX
-+ #if defined(PLATFORM_LINUX) && defined(__UCLIBC__)
++ #if defined(PLATFORM_LINUX) && defined(__GLIBC__)
# define _MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
#else
/* OS X, ... */
include $(TOPDIR)/rules.mk
PKG_NAME:=luv
-PKG_VERSION:=1.36.0-0
+PKG_VERSION:=1.40.0-0
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/luvit/luv/releases/download/$(PKG_VERSION)
-PKG_HASH:=f2e7eb372574f25c6978c1dc74280d22efdcd7df2dda4a286c7fe7dceda26445
+PKG_HASH:=24473a081c3928eec2a352369cbafda97059574f4a4276861274473e7c7d17a0
PKG_MAINTAINER:=Morteza Milani <milani@pichak.co>
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
-CMAKE_INSTALL:=1
-
include $(INCLUDE_DIR)/package.mk
include ../../devel/ninja/ninja-cmake.mk
source "$(SOURCE)/Config.in"
endef
-CMAKE_OPTIONS += -DLUA_BUILD_TYPE=System
-CMAKE_OPTIONS += -DWITH_SHARED_LIBUV=ON
-CMAKE_OPTIONS += -DBUILD_MODULE=OFF
-CMAKE_OPTIONS += -DBUILD_SHARED_LIBS=ON
+CMAKE_OPTIONS += \
+ -DLUA_BUILD_TYPE=System \
+ -DWITH_SHARED_LIBUV=ON \
+ -DBUILD_MODULE=OFF \
+ -DBUILD_SHARED_LIBS=ON \
+ -DWITH_LUA_ENGINE=$(if $(CONFIG_LUV_USE_LUAJIT_ENGINE),Luajit,Lua)
-ifeq ($(CONFIG_LUV_USE_LUAJIT_ENGINE),y)
- CMAKE_OPTIONS += -DWITH_LUA_ENGINE=Luajit
-else
- CMAKE_OPTIONS += -DWITH_LUA_ENGINE=Lua
-endif
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include/luv
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/luv/*.h $(1)/usr/include/luv
+ $(INSTALL_DIR) $(1)/usr/lib/lua
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libluv.so* $(1)/usr/lib
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libluv.pc $(1)/usr/lib/pkgconfig
+ $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libluv.pc
+ $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libluv.pc
+endef
define Package/luv/install
$(INSTALL_DIR) $(1)/usr/lib/lua
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libluv.so.1.36.0 $(1)/usr/lib/lua/luv.so
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libluv.so.1.40.0 $(1)/usr/lib/lua/luv.so
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=node
-PKG_VERSION:=v14.16.0
+PKG_VERSION:=v14.16.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://nodejs.org/dist/$(PKG_VERSION)
-PKG_HASH:=4e7648a617f79b459d583f7dbdd31fbbac5b846d41598f3b54331a5b6115dfa6
+PKG_HASH:=e44adbbed6756c2c1a01258383e9f00df30c147b36e438f6369b5ef1069abac3
PKG_MAINTAINER:=Hirokazu MORIKAWA <morikw2@gmail.com>, Adrian Panella <ianchi74@outlook.com>
PKG_LICENSE:=MIT
if PACKAGE_node
choice
prompt "i18n features"
- default NODEJS_ICU_NONE
+ default NODEJS_ICU_SMALL
help
Select i18n features
include $(TOPDIR)/rules.mk
PKG_NAME:=django
-PKG_VERSION:=3.1.7
+PKG_VERSION:=3.2
PKG_RELEASE:=1
PYPI_NAME:=Django
-PKG_HASH:=32ce792ee9b6a0cbbec340123e229ac9f765dff8c2a4ae9247a14b2ba3a365a7
+PKG_HASH:=21f0f9643722675976004eb683c55d33c05486f94506672df3d6a141546f389d
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>, Peter Stadler <peter.stadler@student.uibk.ac.at>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=pillow
-PKG_VERSION:=8.1.2
+PKG_VERSION:=8.2.0
PKG_RELEASE:=1
PYPI_NAME:=Pillow
-PKG_HASH:=b07c660e014852d98a00a91adfbe25033898a9d90a8f39beb2437d22a203fc44
+PKG_HASH:=a787ab10d7bb5494e5f76536ac460741788f1fbce851068d73a87ca7c35fc3e1
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
PKG_LICENSE:=HPND
#
-# Copyright (C) 2019-2020 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+# Copyright (C) 2019-2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=python-babel
-PKG_VERSION:=2.8.0
+PKG_VERSION:=2.9.0
PKG_RELEASE:=1
PYPI_NAME:=Babel
-PKG_HASH:=1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38
+PKG_HASH:=da031ab54472314f210b0adcff1588ee5d1d1d0ba4dbd07b94dba82bde791e05
PKG_MAINTAINER:=Josef Schlehofer <josef.schlehofer@nic.cz>
PKG_LICENSE:=BSD-3-Clause
--- /dev/null
+#
+# Copyright (C) 2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-bidict
+PKG_VERSION:=0.21.2
+PKG_RELEASE:=1
+
+PYPI_NAME:=bidict
+PKG_HASH:=4fa46f7ff96dc244abfc437383d987404ae861df797e2fd5b190e233c302be09
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=MPL-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+HOST_PYTHON3_PACKAGE_BUILD_DEPENDS:=setuptools-scm
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-bidict
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=The bidirectional mapping library
+ URL:=https://github.com/jab/bidict
+ DEPENDS:= \
+ +python3-light
+endef
+
+define Package/python3-bidict/description
+ The bidirectional mapping library for Python.
+endef
+
+$(eval $(call Py3Package,python3-bidict))
+$(eval $(call BuildPackage,python3-bidict))
+$(eval $(call BuildPackage,python3-bidict-src))
include $(TOPDIR)/rules.mk
PKG_NAME:=python-docker
-PKG_VERSION:=4.4.4
+PKG_VERSION:=5.0.0
PKG_RELEASE:=1
PYPI_NAME:=docker
-PKG_HASH:=d3393c878f575d3a9ca3b94471a3c89a6d960b35feb92f033c0de36cc9d934db
+PKG_HASH:=3e8bc47534e0ca9331d72c32f2881bb13b93ded0bcdeab3c833fb7cf61c0a9a5
PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
PKG_LICENSE:=Apache-2.0
include $(TOPDIR)/rules.mk
PKG_NAME:=python-dotenv
-PKG_VERSION:=0.15.0
+PKG_VERSION:=0.17.0
PKG_RELEASE:=1
PYPI_NAME:=python-dotenv
-PKG_HASH:=587825ed60b1711daea4832cf37524dfd404325b7db5e25ebe88c495c9f807a0
+PKG_HASH:=471b782da0af10da1a80341e8438fca5fadeba2881c54360d5fd8d03d03a4f4a
PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
PKG_LICENSE:=BSD-3-Clause
--- /dev/null
+#
+# Copyright (C) 2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-engineio
+PKG_VERSION:=4.0.1
+PKG_RELEASE:=1
+
+PYPI_NAME:=python-engineio
+PKG_HASH:=bb575c1a3512b4b5d4706f3071d5cc36e592459e99a47d9a4b7faabeba941377
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-engineio
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Engine.IO server
+ URL:=https://github.com/miguelgrinberg/python-engineio
+ DEPENDS:= \
+ +python3-light \
+ +python3-asyncio \
+ +python3-logging \
+ +python3-openssl \
+ +python3-urllib
+endef
+
+define Package/python3-engineio/description
+ Python implementation of the Engine.IO realtime client and server.
+endef
+
+$(eval $(call Py3Package,python3-engineio))
+$(eval $(call BuildPackage,python3-engineio))
+$(eval $(call BuildPackage,python3-engineio-src))
--- /dev/null
+#
+# Copyright (C) 2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-eventlet
+PKG_VERSION:=0.30.2
+PKG_RELEASE:=1
+
+PYPI_NAME:=eventlet
+PKG_HASH:=1811b122d9a45eb5bafba092d36911bca825f835cb648a862bbf984030acff9d
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-eventlet
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Python concurrent networking library
+ URL:=https://eventlet.net/
+ DEPENDS:= \
+ +python3-light \
+ +python3-six \
+ +python3-dns \
+ +python3-greenlet \
+ +python3-distutils \
+ +python3-email \
+ +python3-logging \
+ +python3-openssl \
+ +python3-urllib
+endef
+
+define Package/python3-eventlet/description
+ Eventlet is a concurrent networking library for Python that
+ allows you to change how you run your code, not how you write it.
+endef
+
+$(eval $(call Py3Package,python3-eventlet))
+$(eval $(call BuildPackage,python3-eventlet))
+$(eval $(call BuildPackage,python3-eventlet-src))
--- /dev/null
+#
+# Copyright (C) 2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python3-flask-httpauth
+PKG_VERSION:=4.2.0
+PKG_RELEASE:=1
+
+PYPI_NAME:=Flask-HTTPAuth
+PKG_HASH:=8c7e49e53ce7dc14e66fe39b9334e4b7ceb8d0b99a6ba1c3562bb528ef9da84a
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-flask-httpauth
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Basic and Digest HTTP authentication for Flask routes
+ URL:=https://github.com/miguelgrinberg/flask-httpauth
+ DEPENDS:= \
+ +python3-light \
+ +python3-flask
+endef
+
+define Package/python3-flask-httpauth/description
+ Flask-HTTPAuth is a Flask extension that simplifies the
+ use of HTTP authentication with Flask routes
+endef
+
+$(eval $(call Py3Package,python3-flask-httpauth))
+$(eval $(call BuildPackage,python3-flask-httpauth))
+$(eval $(call BuildPackage,python3-flask-httpauth-src))
--- /dev/null
+#
+# Copyright (C) 2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-flask-socketio
+PKG_VERSION:=5.0.1
+PKG_RELEASE:=1
+
+PYPI_NAME:=Flask-SocketIO
+PKG_HASH:=5c4319f5214ada20807857dc8fdf3dc7d2afe8d6dd38f5c516c72e2be47d2227
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-flask-socketio
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Socket.IO integration for Flask
+ URL:=https://github.com/miguelgrinberg/Flask-SocketIO/
+ DEPENDS:= \
+ +python3-light \
+ +python3-flask \
+ +python3-socketio
+endef
+
+define Package/python3-flask-socketio/description
+ Flask-SocketIO gives Flask applications access to low latency
+ bi-directional communications between the clients and the server.
+endef
+
+$(eval $(call Py3Package,python3-flask-socketio))
+$(eval $(call BuildPackage,python3-flask-socketio))
+$(eval $(call BuildPackage,python3-flask-socketio-src))
--- /dev/null
+#
+# Copyright (C) 2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-greenlet
+PKG_VERSION:=1.0.0
+PKG_RELEASE:=2
+
+PYPI_NAME:=greenlet
+PKG_HASH:=719e169c79255816cdcf6dccd9ed2d089a72a9f6c42273aae12d55e8d35bdcf8
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+# FIXME: remove when GCC10 is the oldest supported compiler, or the issue goes away
+PKG_USE_MIPS16:=0
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-greenlet
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Lightweight coroutines for in-process concurrent programming
+ URL:=https://github.com/python-greenlet/greenlet
+ DEPENDS:= \
+ +python3-light \
+ +libstdcpp \
+ @!arc
+endef
+
+define Package/python3-greenlet/description
+ The greenlet package is a spin-off of Stackless
+ a version of CPython that supports micro-threads called tasklets.
+endef
+
+# FIXME: remove when GCC10 is the oldest supported compiler, or the issue goes away
+# This is required in addition to PKG_USE_MIPS16:=0 because otherwise MIPS16
+# flags are inherited from the Python base package (via sysconfig module)
+ifdef CONFIG_USE_MIPS16
+TARGET_CFLAGS += -mno-mips16 -mno-interlink-mips16
+endif
+
+$(eval $(call Py3Package,python3-greenlet))
+$(eval $(call BuildPackage,python3-greenlet))
+$(eval $(call BuildPackage,python3-greenlet-src))
--- /dev/null
+#
+# Copyright (C) 2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-pysocks
+PKG_VERSION:=1.7.1
+PKG_RELEASE:=1
+
+PYPI_NAME:=PySocks
+PKG_HASH:=3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-pysocks
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Python SOCKS client module
+ URL:=https://github.com/Anorov/PySocks
+ DEPENDS:= \
+ +python3-light \
+ +python3-logging \
+ +python3-openssl \
+ +python3-urllib
+endef
+
+define Package/python3-pysocks/description
+ PySocks lets you send traffic through SOCKS proxy servers.
+ It is a modern fork of SocksiPy with bug fixes and extra features.
+endef
+
+$(eval $(call Py3Package,python3-pysocks))
+$(eval $(call BuildPackage,python3-pysocks))
+$(eval $(call BuildPackage,python3-pysocks-src))
include $(TOPDIR)/rules.mk
PKG_NAME:=python-pytest
-PKG_VERSION:=6.2.2
+PKG_VERSION:=6.2.3
PKG_RELEASE:=1
PYPI_NAME:=pytest
-PKG_HASH:=9d1edf9e7d0b84d72ea3dbcdfd22b35fb543a5e8f2a60092dd578936bf63d7f9
+PKG_HASH:=671238a46e4df0f3498d1c3270e5deb9b32d25134c99b7d75370a68cfbe9b634
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=MIT
--- /dev/null
+#
+# Copyright (C) 2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-socketio
+PKG_VERSION:=5.1.0
+PKG_RELEASE:=1
+
+PYPI_NAME:=python-socketio
+PKG_HASH:=338cc29abb6f3ca14c88f1f8d05ed27c690df4648f62062b299f92625bbf7093
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-socketio
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Socket.IO server and client
+ URL:=https://github.com/miguelgrinberg/python-socketio
+ DEPENDS:= \
+ +python3-light \
+ +python3-bidict \
+ +python3-engineio \
+ +python3-asyncio \
+ +python3-logging \
+ +python3-urllib
+endef
+
+define Package/python3-socketio/description
+ Python implementation of the Socket.IO realtime client and server.
+endef
+
+$(eval $(call Py3Package,python3-socketio))
+$(eval $(call BuildPackage,python3-socketio))
+$(eval $(call BuildPackage,python3-socketio-src))
#
-# Copyright (C) 2019-2020 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+# Copyright (C) 2019-2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=python-zeroconf
-PKG_VERSION:=0.28.5
+PKG_VERSION:=0.29.0
PKG_RELEASE:=1
PYPI_NAME:=zeroconf
-PKG_HASH:=c08dbb90c116626cb6c5f19ebd14cd4846cffe7151f338c19215e6938d334980
+PKG_HASH:=7aefbb658b452b1fd7e51124364f938c6f5e42d6ea893fa2557bea8c06c540af
PKG_MAINTAINER:=Josef Schlehofer <pepe.schlehofer@gmail.com>
PKG_LICENSE:=Apache-2.0
include $(TOPDIR)/rules.mk
PKG_NAME:=python3-bottle
-PKG_VERSION:=0.12.17
-PKG_RELEASE:=2
+PKG_VERSION:=0.12.19
+PKG_RELEASE:=1
PYPI_NAME:=bottle
-PKG_HASH:=e9eaa412a60cc3d42ceb42f58d15864d9ed1b92e9d630b8130c871c5bb16107c
+PKG_HASH:=a9d73ffcbc6a1345ca2d7949638db46349f5b2b77dac65d6494d45c23628da2c
PKG_MAINTAINER:=Josef Schlehofer <josef.schlehofer@nic.cz>
PKG_LICENSE:=MIT
# Note: keep in sync with setuptools & pip
PYTHON3_VERSION_MAJOR:=3
PYTHON3_VERSION_MINOR:=9
-PYTHON3_VERSION_MICRO:=2
+PYTHON3_VERSION_MICRO:=4
PYTHON3_VERSION:=$(PYTHON3_VERSION_MAJOR).$(PYTHON3_VERSION_MINOR)
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
-PKG_HASH:=3c2034c54f811448f516668dce09d24008a0716c3a794dd8639b5388cbde247d
+PKG_HASH:=4b0e6644a76f8df864ae24ac500a51bbf68bd098f6a173e27d3b61cdca9aa134
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>, Jeffery To <jeffery.to@gmail.com>
PKG_LICENSE:=Python/2.0
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -1525,6 +1525,7 @@ libinstall: build_all $(srcdir)/Modules/
+@@ -1526,6 +1526,7 @@ libinstall: build_all $(srcdir)/Modules/
$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \
$(DESTDIR)$(LIBDEST); \
$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
$(DESTDIR)$(LIBDEST)/distutils/tests ; \
-@@ -1560,6 +1561,7 @@ libinstall: build_all $(srcdir)/Modules/
+@@ -1561,6 +1562,7 @@ libinstall: build_all $(srcdir)/Modules/
$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
--- a/configure.ac
+++ b/configure.ac
-@@ -4770,7 +4770,7 @@ AC_SUBST(SOABI)
+@@ -4777,7 +4777,7 @@ AC_SUBST(SOABI)
AC_MSG_CHECKING(ABIFLAGS)
AC_MSG_RESULT($ABIFLAGS)
AC_MSG_CHECKING(SOABI)
abi=sys.abiflags,
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -1534,7 +1534,7 @@ libinstall: build_all $(srcdir)/Modules/
+@@ -1535,7 +1535,7 @@ libinstall: build_all $(srcdir)/Modules/
esac; \
done; \
done
$(DESTDIR)$(LIBDEST); \
$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
ifeq (@COMPILE_ALL_TESTS@,yes)
-@@ -1692,7 +1692,7 @@ sharedinstall: sharedmods
+@@ -1693,7 +1693,7 @@ sharedinstall: sharedmods
--install-scripts=$(BINDIR) \
--install-platlib=$(DESTSHARED) \
--root=$(DESTDIR)/
fi
elif test "$cross_compiling" = maybe; then
as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5
-@@ -15435,7 +15435,7 @@ fi
+@@ -15436,7 +15436,7 @@ fi
LIBPL='$(prefix)'"/${PLATLIBDIR}/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
--- a/configure.ac
+++ b/configure.ac
-@@ -75,7 +75,7 @@ if test "$cross_compiling" = yes; then
+@@ -82,7 +82,7 @@ if test "$cross_compiling" = yes; then
AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
fi
AC_MSG_RESULT($interp)
fi
elif test "$cross_compiling" = maybe; then
AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
-@@ -4828,7 +4828,7 @@ fi],
+@@ -4835,7 +4835,7 @@ fi],
dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
AC_SUBST(PY_ENABLE_SHARED)
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -1586,7 +1586,7 @@ python-config: $(srcdir)/Misc/python-con
+@@ -1587,7 +1587,7 @@ python-config: $(srcdir)/Misc/python-con
@ # On Darwin, always use the python version of the script, the shell
@ # version doesn't use the compiler customizations that are provided
@ # in python (_osx_support.py).
include $(TOPDIR)/rules.mk
PKG_NAME:=ruby
-PKG_VERSION:=3.0.0
+PKG_VERSION:=3.0.1
PKG_RELEASE:=1
# First two numbes
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://cache.ruby-lang.org/pub/ruby/$(PKG_ABI_VERSION)/
-PKG_HASH:=68bfaeef027b6ccd0032504a68ae69721a70e97d921ff328c0c8836c798f6cb1
+PKG_HASH:=d06bccd382d03724b69f674bc46cd6957ba08ed07522694ce44b9e8ffc9c48e2
PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
PKG_LICENSE:=BSD-2-Clause
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=vala
-PKG_VERSION:=0.50.2
-PKG_RELEASE:=1
+PKG_VERSION:=0.52.1
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@GNOME/vala/0.50
-PKG_HASH:=2c0d5dc6d65d070f724063075424c403765ab7935c9e6fbcb84981b94d07ceda
+PKG_SOURCE_URL:=@GNOME/vala/0.52
+PKG_HASH:=17a083ce2405f967efa7d92bce82c49e5f65af334513e3d087a6b4435ed6b9fa
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=file
-PKG_VERSION:=5.39
-PKG_RELEASE:=1
+PKG_VERSION:=5.40
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.openpkg.org/components/cache/file/ \
ftp://ftp.astron.com/pub/file/
-PKG_HASH:=f05d286a76d9556243d0cb05814929c2ecf3a5ba07963f8f70bfaaa70517fad1
+PKG_HASH:=167321f43c148a553f68a0ea7f579821ef3b11c27b8cbe158e4df897e4a5dd57
PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
PKG_LICENSE:=BSD-2-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=glib2
-PKG_VERSION:=2.66.4
-PKG_RELEASE:=1
+PKG_VERSION:=2.68.1
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=glib-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@GNOME/glib/2.66
-PKG_HASH:=97df8670e32f9fd4f7392b0980e661dd625012015d58350da1e58e343f4af984
+PKG_SOURCE_URL:=@GNOME/glib/2.68
+PKG_HASH:=241654b96bd36b88aaa12814efc4843b578e55d47440103727959ac346944333
PKG_MAINTAINER:=Peter Wagner <tripolar@gmx.at>
PKG_LICENSE:=LGPL-2.1-or-later
-Dman=false \
-Ddtrace=false \
-Dsystemtap=false \
+ -Dsysprof=disabled \
-Dgtk_doc=false \
-Dbsymbolic_functions=true \
-Dforce_posix_threads=true \
-Dfam=false \
+ -Dtests=false \
-Dinstalled_tests=false \
-Dnls=$(if $(CONFIG_BUILD_NLS),en,dis)abled \
-Doss_fuzz=disabled \
+ -Dglib_debug=disabled \
-Dglib_assert=false \
- -Dglib_checks=false
+ -Dglib_checks=false \
+ -Dlibelf=disabled
MESON_HOST_ARGS += $(COMP_ARGS) -Dxattr=false
MESON_ARGS += $(COMP_ARGS) -Dxattr=true -Db_lto=true
+++ /dev/null
---- a/gio/meson.build
-+++ b/gio/meson.build
-@@ -874,20 +874,6 @@ endif
-
- # Dependencies used by executables below
- have_libelf = false
--libelf = dependency('libelf', version : '>= 0.8.12', required : false)
--if libelf.found()
-- have_libelf = true
--else
-- # This fallback is necessary on *BSD. elfutils isn't the only libelf
-- # implementation, and *BSD usually includes their own libelf as a system
-- # library which doesn't have a corresponding .pc file.
-- libelf = cc.find_library('elf', required : false)
-- have_libelf = libelf.found()
-- have_libelf = have_libelf and cc.has_function('elf_begin', dependencies : libelf)
-- have_libelf = have_libelf and cc.has_function('elf_getshdrstrndx', dependencies : libelf)
-- have_libelf = have_libelf and cc.has_function('elf_getshdrnum', dependencies : libelf)
-- have_libelf = have_libelf and cc.has_header('libelf.h')
--endif
-
- if have_libelf
- glib_conf.set('HAVE_LIBELF', 1)
+++ /dev/null
---- a/meson.build
-+++ b/meson.build
-@@ -94,7 +94,7 @@ installed_tests_template = files('templa
- installed_tests_template_tap = files('template-tap.test.in')
-
- # Don’t build the tests unless we can run them (either natively, in an exe wrapper, or by installing them for later use)
--build_tests = not meson.is_cross_build() or (meson.is_cross_build() and meson.has_exe_wrapper()) or installed_tests_enabled
-+build_tests = false
-
- add_project_arguments('-D_GNU_SOURCE', language: 'c')
-
--- a/meson.build
+++ b/meson.build
-@@ -2185,16 +2185,10 @@ endif
+@@ -2220,16 +2220,10 @@ endif
glib_conf.set('HAVE_PROC_SELF_CMDLINE', have_proc_self_cmdline)
-
# Determine which user environment-dependent files that we want to install
have_bash = find_program('bash', required : false).found() # For completion scripts
- have_sh = find_program('sh', required : false).found() # For glib-gettextize
+ bash_comp_dep = dependency('bash-completion', version: '>=2.0', required: false)
--- a/meson.build
+++ b/meson.build
-@@ -2003,8 +2003,8 @@ endif
+@@ -2038,8 +2038,8 @@ endif
# FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible
# implementations. This could be extended if issues are found in some platforms.
libintl_deps = []
--- a/meson.build
+++ b/meson.build
-@@ -923,7 +923,7 @@ if host_system == 'windows' and (cc.get_
+@@ -944,7 +944,7 @@ if host_system == 'windows' and (cc.get_
glib_conf.set('HAVE_C99_SNPRINTF', false)
glib_conf.set('HAVE_C99_VSNPRINTF', false)
glib_conf.set('HAVE_UNIX98_PRINTF', false)
+++ /dev/null
-#
-# Copyright (C) 2011 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libcap
-PKG_VERSION:=2.43
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@KERNEL/linux/libs/security/linux-privs/libcap2
-PKG_HASH:=512a0e5fc4c1e06d472a20da26aa96a9b9bf2a26b23f094f77f1b8da56cc427f
-
-PKG_MAINTAINER:=Paul Wassi <p.wassi@gmx.at>
-PKG_LICENSE:=GPL-2.0-only
-PKG_LICENSE_FILES:=License
-
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
-
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/kernel.mk
-
-define Package/libcap/Default
- TITLE:=Linux capabilities library
- SECTION:=libs
- CATEGORY:=Libraries
- URL:=https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/
-endef
-
-define Package/libcap/description/Default
- Linux capabilities
-endef
-
-define Package/libcap
- $(call Package/libcap/Default)
- TITLE += library
-endef
-
-define Package/libcap-bin
- $(call Package/libcap/Default)
- TITLE += binaries
- DEPENDS += libcap
-endef
-
-define Package/libcap-bin/description
- $(call Package/libcap/description/Default)
- .
- This package contains the libcap utilities.
-endef
-
-define Package/libcap-bin/config
- if PACKAGE_libcap-bin
- config PACKAGE_libcap-bin-capsh-shell
- string "capsh shell"
- help
- Set the capsh shell.
- default "/bin/sh"
- endif
-endef
-
-MAKE_FLAGS += \
- BUILD_CC="$(CC)" \
- BUILD_CFLAGS="$(FPIC) -I$(PKG_BUILD_DIR)/libcap/include" \
- CFLAGS="$(TARGET_CFLAGS)" \
- LD="$(TARGET_CC) -Wl,-x -shared" \
- LDFLAGS="$(TARGET_LDFLAGS)" \
- INDENT="| true" \
- GOLANG="no" \
- PAM_CAP="no" \
- RAISE_SETFCAP="no" \
- DYNAMIC="yes" \
- lib="lib"
-
-ifneq ($(CONFIG_PACKAGE_libcap-bin-capsh-shell),)
-TARGET_CFLAGS += -DSHELL='\"$(CONFIG_PACKAGE_libcap-bin-capsh-shell)\"'
-endif
-
-TARGET_CFLAGS += $(if $(CONFIG_USE_MUSL),-Dpthread_yield=sched_yield)
-
-define Build/InstallDev
- $(INSTALL_DIR) $(1)/usr/include/sys
- $(CP) $(PKG_INSTALL_DIR)/usr/include/sys/*.h $(1)/usr/include/sys/
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/lib/libcap.{so*,a} $(1)/usr/lib/
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/lib/libpsx.a $(1)/usr/lib/
- $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/lib/pkgconfig/libcap.pc $(1)/usr/lib/pkgconfig/
- $(SED) 's,exec_prefix=,exec_prefix=/usr,g' $(1)/usr/lib/pkgconfig/libcap.pc
- $(SED) 's,/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libcap.pc
- $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libcap.pc
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/lib/pkgconfig/libpsx.pc $(1)/usr/lib/pkgconfig/
- $(SED) 's,exec_prefix=,exec_prefix=/usr,g' $(1)/usr/lib/pkgconfig/libpsx.pc
- $(SED) 's,/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libpsx.pc
- $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libpsx.pc
-endef
-
-define Package/libcap/install
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/lib/libcap.so* $(1)/usr/lib/
-endef
-
-define Package/libcap-bin/install
- $(INSTALL_DIR) $(1)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/sbin/capsh $(1)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/getcap $(1)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/getpcaps $(1)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/setcap $(1)/usr/sbin/
-endef
-
-$(eval $(call BuildPackage,libcap))
-$(eval $(call BuildPackage,libcap-bin))
+++ /dev/null
---- a/Makefile
-+++ b/Makefile
-@@ -17,7 +17,6 @@ ifeq ($(GOLANG),yes)
- $(MAKE) -C go $@
- rm -f cap/go.sum
- endif
-- $(MAKE) -C tests $@
- $(MAKE) -C progs $@
- $(MAKE) -C doc $@
- $(MAKE) -C kdebug $@
--- /dev/null
+config LIBDVBCSA_DEBUG
+ bool "Enable debugging"
+ default n
+
+config LIBDVBCSA_MMX
+ bool "Use MMX for bitslice"
+ depends on (!LIBDVBCSA_SSE2 && (x86_64 || i386))
+ default n
+
+config LIBDVBCSA_SSE2
+ bool "Use SSE2 for bitslice"
+ depends on (x86_64 || i386)
+ default y
+
+config LIBDVBCSA_ALTIVEC
+ bool "Use AltiVec for bitslice"
+ depends on (BROKEN && (powerpc || powerpc64))
+ default y
+
+config LIBDVBCSA_NEON
+ bool "Use ARM NEON for bitslice"
+ depends on (arm || aarch64)
+ default y if aarch64
--- /dev/null
+#
+# Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libdvbcsa
+PKG_RELEASE:=$(AUTORELEASE)
+
+PKG_SOURCE_VERSION:=bc6c0b164a87ce05e9925785cc6fb3f54c02b026
+PKG_HASH:=2d761c9e094642f2c9aa7e66534c6147a59d0d0bc709ec0f2fdbb34bf020d8ec
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_SOURCE_URL:=https://code.videolan.org/videolan/libdvbcsa/-/archive/$(PKG_SOURCE_VERSION)
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
+
+PKG_MAINTAINER:=Rafał Dzięgiel <rafostar.github@gmail.com>
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libdvbcsa
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=DVB Common Scrambling Algorithm Library
+ URL:=https://www.videolan.org/developers/libdvbcsa.html
+ DEPENDS:=@BUILD_PATENTED
+endef
+
+define Package/libdvbcsa/description
+ Libdvbcsa is a free implementation of the DVB Common Scrambling
+ Algorithm DVB/CSA - with encryption and decryption capabilities.
+endef
+
+define Package/libdvbcsa/config
+ menu "Configuration"
+ depends on PACKAGE_libdvbcsa
+ source "$(SOURCE)/Config.in"
+ endmenu
+endef
+
+CONFIGURE_ARGS += \
+ --$(if $(CONFIG_LIBDVBCSA_DEBUG),en,dis)able-debug \
+ --$(if $(CONFIG_LIBDVBCSA_MMX),en,dis)able-mmx \
+ --$(if $(CONFIG_LIBDVBCSA_SSE2),en,dis)able-sse2 \
+ --$(if $(CONFIG_LIBDVBCSA_ALTIVEC),en,dis)able-altivec \
+ --$(if $(CONFIG_LIBDVBCSA_NEON),en,dis)able-neon
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include/dvbcsa
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/dvbcsa/*.h $(1)/usr/include/dvbcsa/
+
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
+endef
+
+define Package/libdvbcsa/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdvbcsa.so.* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libdvbcsa))
PKG_NAME:=libmaxminddb
PKG_VERSION:=1.5.2
-PKG_RELEASE=1
+PKG_RELEASE=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/maxmind/libmaxminddb/releases/download/$(PKG_VERSION)/
PKG_HASH:=5237076d250a5f7c297e331c35a433eeaaf0dc205e070e4db353c9ba10f340a2
-PKG_INSTALL:=1
-PKG_FIXUP:=autoreconf
-PKG_BUILD_PARALLEL:=1
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
-
include $(INCLUDE_DIR)/package.mk
+include ../../devel/ninja/ninja-cmake.mk
define Package/libmaxminddb
SECTION:=libs
The libmaxminddb library provides functions for working MaxMind DB files.
endef
+CMAKE_OPTIONS += \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF
+
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/
$(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmaxminddb.{a,so*} $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmaxminddb.so* $(1)/usr/lib/
endef
define Package/libmaxminddb/install
include $(TOPDIR)/rules.mk
PKG_NAME:=libnpupnp
-PKG_VERSION:=4.1.1
+PKG_VERSION:=4.1.3
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.lesbonscomptes.com/upmpdcli/downloads
-PKG_HASH:=7e41d3933b956073b33c6ac6e61c81e83b428015ee871fd16d18b198bf3be960
+PKG_HASH:=74703d49be52d29b52f59342ec7359178b127568399551d9d3f56bb7950fcc02
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
define Package/libseccomp
$(call Package/libseccomp/Default)
TITLE+= (library)
- DEPENDS+= @!arc
endef
define Package/scmp_sys_resolver
include $(TOPDIR)/rules.mk
PKG_NAME:=libuhttpd
-PKG_VERSION:=3.10.1
+PKG_VERSION:=3.11.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL=https://github.com/zhaojh329/libuhttpd/releases/download/v$(PKG_VERSION)
-PKG_HASH:=6e7a9ad61e3d0ab5bd4d20b274b850542dff8057a8fcf6c36ce59eb34818f61f
+PKG_HASH:=dcd95fac7b29d43f57e942db6e9fb4c8745d4284684cd627d60c8a7f8c76cd32
PKG_MAINTAINER:=Jianhui Zhao <zhaojh329@gmail.com>
PKG_LICENSE:=MIT
include $(TOPDIR)/rules.mk
PKG_NAME:=libupnp
-PKG_VERSION:=1.14.0
-PKG_RELEASE:=2
+PKG_VERSION:=1.14.5
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/pupnp
-PKG_HASH:=ecb23d4291968c8a7bdd4eb16fc2250dbacc16b354345a13342d67f571d35ceb
+PKG_HASH:=227ffa407be6b91d4e42abee1dd27e4b8d7e5ba8d3d45394cca4e1eadc65149a
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:libupnp_project:libupnp
-PKG_FIXUP:=autoreconf
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
+PKG_CONFIG_DEPENDS:= \
+ CONFIG_PACKAGE_libupnp-sample \
+ CONFIG_IPV6
include $(INCLUDE_DIR)/package.mk
+include ../../devel/ninja/ninja-cmake.mk
define Package/libupnp/Default
SECTION:=libs
TVcontrolpoint & tvdevice sample applications run inside /etc/upnp-tvdevice/
endef
-CONFIGURE_ARGS += \
- --enable-client \
- --enable-device \
- --enable-gena \
- --enable-reuseaddr \
- --enable-gena \
- --enable-webserver \
- --enable-ssdp \
- --enable-soap \
- --enable-tools \
- --enable-blocking_tcp_connections \
- --enable-samples \
- --disable-debug \
- --disable-optssdp \
- --disable-unspecified_server \
- --disable-open_ssl \
- --disable-scriptsupport \
- --disable-postwrite
+CMAKE_OPTIONS += \
+ -DBUILD_TESTING=OFF \
+ -Dclient=ON \
+ -Ddevice=ON \
+ -Dwebserver=OFF \
+ -Dssdp=ON \
+ -Doptssdp=OFF \
+ -Dsoap=ON \
+ -Dgena=ON \
+ -Dtools=ON \
+ -Dipv6=O$(if $(CONFIG_IPV6),N,FF) \
+ -Dunspecified_server=OFF \
+ -Dopen_ssl=OFF \
+ -Dblocking_tcp_connections=ON \
+ -Dscriptsupport=OFF \
+ -Dpostwrite=OFF \
+ -Dreuseaddr=ON \
+ -Dsamples=O$(if $(CONFIG_PACKAGE_libupnp-sample),N,FF) \
+ -DDOWNLOAD_AND_BUILD_DEPS=OFF
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/upnp $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{ixml,upnp}.{a,so*,la} $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{ixml,upnp}.{a,so*} $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/cmake
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/cmake/* $(1)/usr/lib/cmake
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libupnp.pc $(1)/usr/lib/pkgconfig/
endef
define Package/libupnp-sample/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/upnp/sample/.libs/* $(1)/usr/bin
- $(INSTALL_DIR) $(1)/etc/upnp-tvdevice/web
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/upnp/sample/web/* $(1)/etc/upnp-tvdevice
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/tv* $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/usr/share/upnp
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/upnp/tv* $(1)/usr/share/upnp
endef
$(eval $(call BuildPackage,libupnp))
include $(TOPDIR)/rules.mk
PKG_NAME:=libupnpp
-PKG_VERSION:=0.20.1
+PKG_VERSION:=0.21.0
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.lesbonscomptes.com/upmpdcli/downloads
-PKG_HASH:=d4da986aeaa7124a1732ce3383b6ac8f28e20cab10f1916709f39e5499ae9c38
+PKG_HASH:=e43dbe5020ed25152aaec71b325dd80498e72038da5aeb50ed7dd51e213cd903
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=poco
-PKG_RELEASE:=2
-PKG_VERSION:=1.9.0
+PKG_VERSION:=1.10.1
+PKG_RELEASE:=$(AUTORELEASE)
ifeq ($(BUILD_VARIANT),all)
_PKG_VERSION:=${PKG_VERSION}-all
-PKG_HASH:=b6e33898588e74337efec4e8d8b9b277bb653b08318a79215f9aa4a3ff1ea9fd
+PKG_HASH:=2cde4b50778013ab3b7a522aa59bccaa7e85a8ccfc654a354c4d9611b6ce1758
else
_PKG_VERSION:=${PKG_VERSION}
-PKG_HASH:=a0a5a03d87c585f1a43def33bfc52c0c34a528e43a7b13bc83841a7c00adde39
+PKG_HASH:=cdab379d7d0394a763821d058eee1e7d4d8214a3caec05c775b60962b2f20762
endif
PKG_SOURCE:=$(PKG_NAME)-$(_PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://pocoproject.org/releases/$(PKG_NAME)-$(PKG_VERSION)
+PKG_MAINTAINER:=Jean-Michel Julien <jean-michel.julien@trilliantinc.com>
PKG_LICENSE:=BSL-1.0
PKG_LICENSE_FILES:=LICENSE
PKG_CPE_ID:=cpe:/a:pocoproject:poco
+PKG_BUILD_DEPENDS:=postgresql
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(_PKG_VERSION)
TITLE:=Poco C++ libraries
URL:=https://www.pocoproject.org/
DEPENDS:=+libstdcpp +libpthread +librt @!arc
- MAINTAINER:=Jean-Michel Julien <jean-michel.julien@trilliantinc.com>
VARIANT:=minimal
endef
--- a/Foundation/src/Error.cpp
+++ b/Foundation/src/Error.cpp
-@@ -70,7 +70,7 @@ namespace Poco {
+@@ -64,7 +64,7 @@ namespace Poco {
#if (_XOPEN_SOURCE >= 600) || POCO_OS == POCO_OS_ANDROID || __APPLE__
setMessage(strerror_r(err, _buffer, sizeof(_buffer)));
include $(TOPDIR)/rules.mk
PKG_NAME:=spdlog
-PKG_VERSION:=1.8.3
+PKG_VERSION:=1.8.5
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/gabime/spdlog/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=6f5b88ca4c9b96264e6c961716fec6f1a7b94c80a5edce667c3e42507caa8a82
+PKG_HASH:=944d0bd7c763ac721398dca2bb0f3b5ed16f67cef36810ede5061f35a543b4b8
PKG_MAINTAINER:=
PKG_LICENSE:=MIT
define Build/InstallDev
$(call Build/InstallDev/cmake,$(1))
$(SED) '/^prefix=\|^exec_prefix=/s|/usr|$(STAGING_DIR)/usr|' $(1)/usr/bin/taglib-config
+ $(SED) '/^includedir=/s|/usr|$(STAGING_DIR)/usr|' $(1)/usr/bin/taglib-config
+ $(SED) '/^libdir=/s|/usr|$(STAGING_DIR)/usr|' $(1)/usr/bin/taglib-config
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/taglib.pc
$(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/taglib.pc
$(INSTALL_DIR) $(2)/bin
include $(TOPDIR)/rules.mk
PKG_NAME:=vips
-PKG_VERSION:=8.10.5
-PKG_RELEASE:=2
+PKG_VERSION:=8.10.6
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/libvips/libvips/releases/download/v$(PKG_VERSION)
-PKG_HASH:=a4eef2f5334ab6dbf133cd3c6d6394d5bdb3e76d5ea4d578b02e1bc3d9e1cfd8
+PKG_HASH:=2468088d958e0e2de1be2991ff8940bf45664a826c0dad12342e1804e2805a6e
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_LICENSE:=LGPL-2.1-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=yubico-pam
-PKG_VERSION:=2.26
-PKG_RELEASE:=3
+PKG_VERSION:=2.27
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=pam_yubico-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://developers.yubico.com/yubico-pam/Releases
-PKG_HASH:=2de96495963fefd72b98243952ca5d5ec513e702c596e54bc667ef6b5e252966
+PKG_HASH:=63d02788852644d871746e1a7a1d16c272c583c226f62576f5ad232a6a44e18c
PKG_BUILD_DIR:=$(BUILD_DIR)/pam_yubico-$(PKG_VERSION)
PKG_MAINTAINER:=Stuart B. Wilkins <stuwilkins@mac.com>
PKG_NAME:=fdm
PKG_VERSION:=2.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/nicm/fdm/releases/download/$(PKG_VERSION)
--- /dev/null
+--- a/configure.ac
++++ b/configure.ac
+@@ -11,9 +11,6 @@ AC_CANONICAL_HOST
+
+ : ${CFLAGS=""}
+
+-CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+-LDFLAGS="$LDFLAGS -L/usr/local/lib"
+-
+ AC_PROG_CC
+ AM_PROG_CC_C_O
+ AC_PROG_INSTALL
include $(TOPDIR)/rules.mk
PKG_NAME:=gerbera
-PKG_VERSION:=1.7.0
+PKG_VERSION:=1.8.0
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/gerbera/gerbera/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=6d40b840d015ba5c512f41442957c1c0fdbba07c18724cf00a45e0a579ddeb7f
+PKG_HASH:=02044abd1363c5f5604c5830e560b102ac456179afbf3be60e65847f47f4c599
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-or-later
PKG_NAME:=minisatip
PKG_VERSION:=1.0.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/catalinii/minisatip/tar.gz/$(PKG_VERSION)?
PKG_LICENSE:=GPL-2.0-or-later
PKG_BUILD_PARALLEL:=1
+PKG_CONFIG_DEPENDS:= \
+ CONFIG_BUILD_PATENTED \
+ CONFIG_MINISATIP_AES \
+ CONFIG_MINISATIP_CLIENT
include $(INCLUDE_DIR)/package.mk
URL:=https://github.com/catalinii/minisatip
SECTION:=multimedia
CATEGORY:=Multimedia
- DEPENDS:=+MINISATIP_AES:libopenssl
+ DEPENDS:=+MINISATIP_AES:libopenssl +BUILD_PATENTED:libdvbcsa
endef
define Package/minisatip/config
endif
endef
-ifeq ($(CONFIG_MINISATIP_AES),)
- CONFIGURE_ARGS += --disable-dvbaes
-endif
-
-ifeq ($(CONFIG_MINISATIP_CLIENT),)
- CONFIGURE_ARGS += --disable-satipc
-endif
+CONFIGURE_ARGS += \
+ --$(if $(CONFIG_BUILD_PATENTED),en,dis)able-dvbcsa \
+ --$(if $(CONFIG_MINISATIP_AES),en,dis)able-dvbaes \
+ --$(if $(CONFIG_MINISATIP_CLIENT),en,dis)able-satipc
define Package/minisatip/install
$(INSTALL_DIR) $(1)/usr/bin
include $(TOPDIR)/rules.mk
PKG_NAME:=youtube-dl
-PKG_VERSION:=2021.2.10
+PKG_VERSION:=2021.4.7
PKG_RELEASE:=1
PYPI_NAME:=youtube_dl
-PKG_HASH:=b390cddbd4d605bd887d0d4063988cef0fa13f916d2e1e3564badbb22504d754
+PKG_HASH:=34a034d9b2062e428710d4cd6365db7a64cd388e51a3f9ab74058179c95d8654
PKG_MAINTAINER:=Josef Schlehofer <pepe.schlehofer@gmail.com>
PKG_LICENSE:=Unlicense
PKG_NAME:=adblock
PKG_VERSION:=4.1.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_LICENSE:=GPL-3.0-or-later
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
"descurl": "https://github.com/Perflyst/PiHoleBlocklist"
},
"games_tracking": {
- "url": "https://raw.githubusercontent.com/KodoPengin/GameIndustry-hosts-Template/master/Main%20template/hosts",
+ "url": "https://raw.githubusercontent.com/KodoPengin/GameIndustry-hosts-Template/master/Main-Template/hosts",
"rule": "/^0\\.0\\.0\\.0[[:space:]]+([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($2)}",
"size": "S",
"focus": "tracking",
PKG_NAME:=banip
PKG_VERSION:=0.7.6
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=GPL-3.0-or-later
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
then
for dev in ${ban_ipdevs}
do
- if [ ! -f "${ban_tmpfile}.${src_name}.delete" ]
+ if [ "${src_name}" = "maclist" ]
then
- > "${ban_tmpfile}.${src_name}.delete"
- if [ "${src_name}" = "maclist" ]
- then
- f_iptrule "-D" "${ban_chain}" "-o ${dev} -m set --match-set ${src_name} src -j RETURN"
- elif [ "${src_name%_*}" = "whitelist" ]
- then
- f_iptrule "-D" "${ban_chain}" "-i ${dev} -m set --match-set ${src_name} src -j RETURN"
- f_iptrule "-D" "${ban_chain}" "-o ${dev} -m set --match-set ${src_name} dst -j RETURN"
- else
- f_iptrule "-D" "${ban_chain}" "-i ${dev} -m set --match-set ${src_name} src -j ${ban_logtarget_src}"
- f_iptrule "-D" "${ban_chain}" "-o ${dev} -m set --match-set ${src_name} dst -j ${ban_logtarget_dst}"
- f_iptrule "-D" "${ban_chain}" "-i ${dev} -m set --match-set ${src_name} src -j ${ban_logchain_src}"
- f_iptrule "-D" "${ban_chain}" "-o ${dev} -m set --match-set ${src_name} dst -j ${ban_logchain_dst}"
- fi
+ f_iptrule "-D" "${ban_chain}" "-o ${dev} -m set --match-set ${src_name} src -j RETURN"
+ elif [ "${src_name%_*}" = "whitelist" ]
+ then
+ f_iptrule "-D" "${ban_chain}" "-i ${dev} -m set --match-set ${src_name} src -j RETURN"
+ f_iptrule "-D" "${ban_chain}" "-o ${dev} -m set --match-set ${src_name} dst -j RETURN"
+ else
+ f_iptrule "-D" "${ban_chain}" "-i ${dev} -m set --match-set ${src_name} src -j ${ban_logtarget_src}"
+ f_iptrule "-D" "${ban_chain}" "-o ${dev} -m set --match-set ${src_name} dst -j ${ban_logtarget_dst}"
+ f_iptrule "-D" "${ban_chain}" "-i ${dev} -m set --match-set ${src_name} src -j ${ban_logchain_src}"
+ f_iptrule "-D" "${ban_chain}" "-o ${dev} -m set --match-set ${src_name} dst -j ${ban_logchain_dst}"
fi
done
fi
include $(TOPDIR)/rules.mk
PKG_NAME:=proto-bonding
-PKG_VERSION:=2020-03-30
+PKG_VERSION:=2021-04-09
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0
proto_config_add_string "bonding_policy"
proto_config_add_string "link_monitoring"
- proto_config_add_string "slaves"
+ proto_config_add_array "slaves"
proto_config_add_string "all_slaves_active"
proto_config_add_string "min_links"
proto_config_add_string "use_carrier"
}
+proto_bonding_add_slave() {
+ local slave=$1
+ local idx=$2
+ local cfg=$3
+ local link=$4
+
+ if [ ! -e "/sys/class/net/$slave" ]; then
+ echo "$cfg" "No slave device $slave found"
+ proto_notify_error "$cfg" NO_DEVICE
+ proto_block_restart "$cfg"
+ return
+ fi
+
+ ip link set dev "$slave" down
+
+ sleep 1
+
+ echo "+$slave" > /sys/class/net/"$link"/bonding/slaves
+
+ ip link set dev "$slave" up
+}
+
proto_bonding_setup() {
local cfg="$1"
local link="bonding-$cfg"
# Add slaves to bonding interface
local slaves
json_get_vars slaves
-
- for slave in $slaves; do
-
- if [ "$(cat /proc/net/dev |grep "$slave")" == "" ]; then
- echo "$cfg" "No slave device $slave found"
- proto_notify_error "$cfg" NO_DEVICE
- proto_block_restart "$cfg"
- return
- fi
-
- ifconfig "$slave" down
-
- sleep 1
-
- echo "+$slave" > /sys/class/net/"$link"/bonding/slaves
-
- ifconfig "$slave" up
- done
+ json_for_each_item proto_bonding_add_slave slaves "$cfg" "$link"
[ -n "$all_slaves_active" ] && echo "$all_slaves_active" > /sys/class/net/"$link"/bonding/all_slaves_active
PKG_NAME:=clamav
PKG_VERSION:=0.103.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.clamav.net/downloads/production/
define Package/clamav/Default
SECTION:=net
- DEPENDS:=+libstdcpp +libpthread +zlib +libbz2 +libxml2 +libcurl +libjson-c +libmilter-sendmail +libopenssl +libltdl +libpcre2
+ DEPENDS:=+libstdcpp +libpthread +zlib +libbz2 +libxml2 +libcurl +libjson-c +libmilter-sendmail +libopenssl +libltdl +libpcre2 $(ICONV_DEPENDS)
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
TITLE:=ClamAV
include $(TOPDIR)/rules.mk
PKG_NAME:=git-lfs
-PKG_VERSION:=2.13.2
+PKG_VERSION:=2.13.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/git-lfs/git-lfs/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=782e6275df9ca370730945112e16a0b8c64b9819f0b61fae52ba1ebbc8dce2d5
+PKG_HASH:=f8bd7a06e61e47417eb54c3a0db809ea864a9322629b5544b78661edab17b950
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=MIT
include $(TOPDIR)/rules.mk
PKG_NAME:=haproxy
-PKG_VERSION:=2.2.11
+PKG_VERSION:=2.2.13
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.haproxy.org/download/2.2/src
-PKG_HASH:=173a98506472bb1ba5a4a7f3a281125163f78bab5793bf6ba1f1d50853eb5f23
+PKG_HASH:=9e3e51441c70bedfb494fc9d4b4d3389a71be9a3c915ba3d6f7e8fd9a57ce160
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.11
+BASE_TAG=v2.2.13
TMP_REPODIR=tmprepo
PATCHESDIR=patches
include $(TOPDIR)/rules.mk
PKG_NAME:=hcxdumptool
-PKG_VERSION:=6.0.1
-PKG_RELEASE:=1
+PKG_VERSION:=6.1.6
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/zerbea/hcxdumptool/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=32bc07b692f5682792dcfd1d5dcae749e5fed4a65a2a05d815ed59adc9b64b02
+PKG_HASH:=e3212bd808e228c28ecfeeb4a9709480aa178b2e8b15c0a7d96733b648f8da85
PKG_MAINTAINER:=Andreas Nilsen <adde88@gmail.com>
PKG_LICENSE:=MIT
--- /dev/null
+--- a/hcxdumptool.c
++++ b/hcxdumptool.c
+@@ -480,10 +480,6 @@ if(rebootflag == true)
+ }
+ }
+
+-EVP_cleanup();
+-CRYPTO_cleanup_all_ex_data();
+-ERR_free_strings();
+-
+ if(errorcount != 0) exit(EXIT_FAILURE);
+ if(totflag == true) exit(USER_EXIT_TOT);
+ exit(EXIT_SUCCESS);
+@@ -7270,8 +7266,6 @@ return true;
+ /*===========================================================================*/
+ static inline bool tlsinit()
+ {
+-SSL_load_error_strings();
+-OpenSSL_add_ssl_algorithms();
+ if((tlsctx = SSL_CTX_new(SSLv23_server_method())) == NULL)
+ {
+ fprintf(stderr, "OpenSSl can't create SSL context\n");
+@@ -7290,7 +7284,6 @@ if(SSL_CTX_use_PrivateKey_file(tlsctx, e
+ if((eaptlsctx = (eaptlsctx_t*)malloc(EAPTLSCTX_SIZE)) == NULL) return false;
+ memset(eaptlsctx, 0, EAPTLSCTX_SIZE);
+ SSL_CTX_set_session_cache_mode(tlsctx, SSL_SESS_CACHE_OFF);
+-SSL_CTX_set_ecdh_auto(tlsctx, 1);
+ SSL_CTX_set_verify(tlsctx, (SSL_VERIFY_PEER|SSL_VERIFY_CLIENT_ONCE), eap_tls_clientverify_cb);
+ #if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+ SSL_CTX_set_min_proto_version(tlsctx, TLS1_VERSION);
+@@ -7364,8 +7357,6 @@ if(gpiostatusled > 0)
+ }
+
+
+-ERR_load_crypto_strings();
+-OpenSSL_add_all_algorithms();
+ opensslversion = OpenSSL_version_num();
+ opensslversionmajor = (opensslversion & 0x10000000L) >> 28;
+ opensslversionminor = (opensslversion & 0x01100000L) >> 20;
--- /dev/null
+From 63012853a81aa623f09304baf1f5b0b69f1ebfbd Mon Sep 17 00:00:00 2001
+From: Tristian <2220506+Tristian@users.noreply.github.com>
+Date: Tue, 16 Mar 2021 16:17:07 -0400
+Subject: [PATCH] fix assignment of read-only variable 'stdout'
+
+- stdout cannot be reassigned on some systems i.e OpenWRT on mipsel
+---
+ hcxdumptool.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/hcxdumptool.c
++++ b/hcxdumptool.c
+@@ -7958,7 +7958,7 @@ while((auswahl = getopt_long(argc, argv,
+ else
+ {
+ fd_pcapng = fileno(stdout);
+- stdout = fopen("/dev/null", "w");
++ freopen("/dev/null", "w", stdout);
+ }
+ }
+ pcapngoutname = optarg;
include $(TOPDIR)/rules.mk
PKG_NAME:=hcxtools
-PKG_VERSION:=5.3.0
-PKG_RELEASE:=1
+PKG_VERSION:=6.1.6
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/zerbea/hcxtools/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=bc3465eb3b97c4db849af41ae3fa7c812d4683eb9e493f090ac82e922ba8a36d
+PKG_HASH:=27b1b1ad722b9d82f8e92c6bec92d081159e5b8225bd2a477bf8d304ff4aeb03
PKG_MAINTAINER:=Andreas Nilsen <adde88@gmail.com>
PKG_LICENSE:=MIT
CFLAGS="$(TARGET_CFLAGS)"
endef
-define Package/hcxtools-custom/install
+define Package/hcxtools/install
$(INSTALL_DIR) $(1)/sbin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxpcapngtool $(1)/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxeiutool $(1)/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxessidtool $(1)/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxhash2cap $(1)/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxhashcattool $(1)/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxhashtool $(1)/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxmactool $(1)/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxpcapngtool $(1)/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxpmkidtool $(1)/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxpmktool $(1)/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxpsktool $(1)/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxwltool $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlancap2wpasec $(1)/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/whoismac $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxpmkidtool $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlanhcx2john $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxpcaptool $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxhashcattool $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxmactool $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxessidtool $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/hcxhash2cap $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlanhc2hcx $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlanwkp2hcx $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlanhcxinfo $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlanhcx2ssid $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlanhcxcat $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlanpmk2hcx $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlanjohn2hcx $(1)/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlancow2hcxpmk $(1)/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlancap2wpasec $(1)/sbin/
endef
$(eval $(call BuildPackage,hcxtools))
--- /dev/null
+--- a/hcxhashtool.c
++++ b/hcxhashtool.c
+@@ -104,9 +104,6 @@ static void closelists()
+ {
+ if(hashlist != NULL) free(hashlist);
+ if(ouilist != NULL) free(ouilist);
+-EVP_cleanup();
+-CRYPTO_cleanup_all_ex_data();
+-ERR_free_strings();
+ return;
+ }
+ /*===========================================================================*/
+@@ -125,8 +122,6 @@ eapolwrittencount = 0;
+ essidwrittencount = 0;
+ hccapxwrittencount = 0;
+ hccapwrittencount = 0;
+-ERR_load_crypto_strings();
+-OpenSSL_add_all_algorithms();
+ if((hashlist = (hashlist_t*)calloc(hashlistcount, HASHLIST_SIZE)) == NULL) return false;
+ if((ouilist = (ouilist_t*)calloc(ouilistcount, OUILIST_SIZE)) == NULL) return false;
+ return true;
+--- a/hcxpcapngtool.c
++++ b/hcxpcapngtool.c
+@@ -358,9 +358,6 @@ if(eapmschapv2msglist != NULL) free(eapm
+ if(eapmschapv2hashlist != NULL) free(eapmschapv2hashlist);
+ if(tacacsplist != NULL) free(tacacsplist);
+
+-EVP_cleanup();
+-CRYPTO_cleanup_all_ex_data();
+-ERR_free_strings();
+ return;
+ }
+ /*===========================================================================*/
+@@ -369,8 +366,6 @@ static bool initlists()
+ static unsigned long opensslversion;
+ static const char nastring[] = { "N/A" };
+
+-ERR_load_crypto_strings();
+-OpenSSL_add_all_algorithms();
+ opensslversion = OpenSSL_version_num();
+ opensslversionmajor = (opensslversion & 0x10000000L) >> 28;
+ opensslversionminor = (opensslversion & 0x01100000L) >> 20;
+--- a/hcxpmktool.c
++++ b/hcxpmktool.c
+@@ -920,8 +920,6 @@ while((auswahl = getopt_long(argc, argv,
+ }
+ }
+
+-ERR_load_crypto_strings();
+-OpenSSL_add_all_algorithms();
+ printf("\n");
+ if((essidstring != NULL) && (pskstring != NULL) && (pmkstring == NULL) && (hashlinestring == NULL))
+ {
+@@ -953,9 +951,6 @@ else if((essidstring != NULL) && (pskstr
+ }
+
+ printf("\n");
+-EVP_cleanup();
+-CRYPTO_cleanup_all_ex_data();
+-ERR_free_strings();
+ return EXIT_SUCCESS;
+ }
+ /*===========================================================================*/
+--- a/hcxpsktool.c
++++ b/hcxpsktool.c
+@@ -61,8 +61,6 @@ essidglen = 32;
+ t = time(NULL);
+ tm = localtime(&t);
+ thisyear = tm->tm_year +1900;
+-ERR_load_crypto_strings();
+-OpenSSL_add_all_algorithms();
+ return;
+ }
+ /*===========================================================================*/
+@@ -2770,10 +2768,6 @@ if(pskname != NULL)
+ fclose(fhpsk);
+ }
+
+-EVP_cleanup();
+-CRYPTO_cleanup_all_ex_data();
+-ERR_free_strings();
+-
+ return EXIT_SUCCESS;
+ }
+ /*===========================================================================*/
PKG_NAME:=https-dns-proxy
PKG_VERSION:=2021-01-17
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/aarond10/https_dns_proxy
procd_open_data
json_add_array firewall
for c in $forceDNSPorts; do
- if netstat -tuln | grep LISTEN | grep ":${c}" >/dev/null 2>&1; then
+ if netstat -tuln | grep 'LISTEN' | grep ":${c}" >/dev/null 2>&1 || [ "$c" = "53" ]; then
json_add_object ""
json_add_string type redirect
json_add_string target DNAT
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=jool
-PKG_VERSION:=4.1.4
+PKG_VERSION:=4.1.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/NICMx/Jool/releases/download/v$(PKG_VERSION)
-PKG_HASH:=84e294f880986ef13fc17d7ddb96aac5d88b7d47932c843eb621647235191fab
+PKG_HASH:=ec130a3659acff5450e74924d5f9da52540539fc213b5842fb3a8fd7d919ccf9
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-only
include $(TOPDIR)/rules.mk
PKG_NAME:=knot-resolver
-PKG_VERSION:=5.3.0
+PKG_VERSION:=5.3.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://secure.nic.cz/files/knot-resolver
-PKG_HASH:=fb6cb2c03f4fffbdd8a0098127383d03b14cf7d6abf3a0cd229fb13ff68ee33e
+PKG_HASH:=9d4d6b7bcdf114acc948e5ee68c83fcbb3944f48a13b9751dbbbc190cdd729c9
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=GPL-3.0-later
include $(TOPDIR)/rules.mk
PKG_NAME:=ksmbd-tools
-PKG_VERSION:=3.3.7
+PKG_VERSION:=3.3.8
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/cifsd-team/ksmbd-tools/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=0bc56272fee87579a552b4b749e8def31c875cf1770452e5bdb42b77c3f84876
+PKG_HASH:=fb8cef085c740c72700ccee324fb1510774602c43ed1d32a5453c05f5d117188
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
logger -p daemon.notice -t 'ksmbd' "Starting Ksmbd userspace service."
procd_open_instance
- procd_add_mdns "smb" "tcp" "445"
+ procd_add_mdns "smb" "tcp" "445" "daemon=ksmbd"
procd_set_param command /usr/sbin/ksmbd.mountd --n
procd_set_param file /etc/ksmbd/smb.conf
procd_set_param limits nofile=16384
include $(TOPDIR)/rules.mk
PKG_NAME:=mosquitto
-PKG_VERSION:=2.0.9
+PKG_VERSION:=2.0.10
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:=1b8553ef64a1cf5e4f4cfbe098330ae612adccd3d37f35b2db6f6fab501b01d4
+PKG_HASH:=0188f7b21b91d6d80e992b8d6116ba851468b3bd154030e8a003ed28fb6f4a44
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=netifyd
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_MAINTAINER:=Darryl Sokoloski <darryl@egloo.ca>
PKG_LICENSE:=GPL-3.0-or-later
option autoconfig 1
# option internal_if 'eth0'
# option external_if 'eth1'
+# option filter 'not (udp and dst 239.255.255.250 and dst port 1900 and src 192.168.1.5)'
[ ! -d /var/run/netifyd ] && mkdir -p /var/run/netifyd
config_get_bool autoconfig "$instance" autoconfig 1
+ config_get filter "$instance" filter
if [ "$autoconfig" -gt 0 ] ; then
source /usr/share/netifyd/functions.sh
NETIFYD_OPTS="-E $external_if -I $internal_if"
fi
+
procd_open_instance
procd_set_param command $PROG -R $NETIFYD_OPTS
+ [ -n "$filter" ] && procd_append_param command -F "$filter"
procd_set_param file /etc/netifyd.conf
procd_set_param respawn
procd_close_instance
include $(TOPDIR)/rules.mk
PKG_NAME:=ngircd
-PKG_VERSION:=26
-PKG_RELEASE:=1
+PKG_VERSION:=26.1
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://ngircd.barton.de/pub/ngircd
-PKG_HASH:=56dcc6483058699fcdd8e54f5010eecee09824b93bad7ed5f18818e550d855c6
+PKG_HASH:=55c16fd26009f6fc6a007df4efac87a02e122f680612cda1ce26e17a18d86254
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0
PKG_NAME:=nut
PKG_VERSION:=2.7.4
-PKG_RELEASE:=21
+PKG_RELEASE:=22
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.networkupstools.org/source/2.7/
mount -o remount,ro /overlay /overlay
mount -o remount,ro / /
- . ${IPKG_INSTOOT}/lib/functions.sh
+ . ${IPKG_INSTROOT}/lib/functions.sh
if [ -f /etc/config/nut_server ]; then
config_load nut_server
config OCSERV_SECCOMP
bool "enable seccomp"
+ depends on !arc
default n
config OCSERV_RADIUS
PKG_NAME:=ocserv
PKG_VERSION:=1.1.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_USE_MIPS16:=0
PKG_BUILD_DIR :=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
--- /dev/null
+#
+# Copyright (C) 2021 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=onionshare-cli
+PKG_VERSION:=2.3.1
+PKG_RELEASE:=1
+
+PYPI_NAME:=onionshare-cli
+PYPI_SOURCE_NAME:=onionshare_cli
+PKG_HASH:=47320a5f270b3629586c249fb2ae1c2f67682cb53c5013a8af9702d0d6e50193
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=GPL-3.0-or-later
+PKG_LICENSE_FILES:=LICENSE
+
+HOST_PYTHON3_PACKAGE_BUILD_DEPENDS:=setuptools-scm toml
+
+include ../../lang/python/pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/python/python3-package.mk
+
+define Package/onionshare-cli
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=Secure chat, web and file sharing
+ URL:=https://onionshare.org/
+ DEPENDS:= \
+ +python3-light \
+ +python3-psutil \
+ +python3-click \
+ +python3-flask \
+ +python3-flask-httpauth \
+ +python3-flask-socketio \
+ +python3-pysocks \
+ +python3-requests \
+ +python3-stem \
+ +python3-eventlet \
+ +python3-unidecode \
+ +python3-cryptodome \
+ +python3-urllib3 \
+ +tor
+endef
+
+define Package/onionshare-cli/description
+ OnionShare is an open source tool that lets you securely and
+ anonymously share files, host websites, and chat with friends using the Tor network.
+endef
+
+$(eval $(call Py3Package,onionshare-cli))
+$(eval $(call BuildPackage,onionshare-cli))
+$(eval $(call BuildPackage,onionshare-cli-src))
include $(TOPDIR)/rules.mk
PKG_NAME:=ooniprobe
-PKG_VERSION:=3.8.0
+PKG_VERSION:=3.9.2
PKG_RELEASE:=1
PKG_SOURCE:=probe-cli-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ooni/probe-cli/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=65bc4e592cadb99530be713798308d6950f67240bff6d90f2760fde11d750a83
+PKG_HASH:=d34dc096dfdebceaa027716fdf675eb9ab7f0085defb4235f52685d064bd5afa
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=BSD-3-Clause
Probe Command Line Interface.
endef
-define Build/Configure
- $(call GoPackage/Build/Configure)
- cd $(PKG_BUILD_DIR) && $(STAGING_DIR_HOSTPKG)/bin/go run $(PKG_BUILD_DIR)/internal/cmd/getresources/getresources.go
-endef
-
$(eval $(call GoBinPackage,ooniprobe))
$(eval $(call BuildPackage,ooniprobe))
PKG_NAME:=openvpn-easy-rsa
PKG_VERSION:=3.0.8
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE_URL:=https://codeload.github.com/OpenVPN/easy-rsa/tar.gz/v$(PKG_VERSION)?
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_HASH:=fd6b67d867c3b8afd53efa2ca015477f6658a02323e1799432083472ac0dd200
/etc/easy-rsa/vars
/etc/easy-rsa/openssl-1.0.cnf
/etc/easy-rsa/openssl-easyrsa.cnf
+/etc/profile.d/50-$(PKG_NAME).sh
endef
define Build/Configure
include $(TOPDIR)/rules.mk
PKG_NAME:=overture
-PKG_VERSION:=1.6.1
+PKG_VERSION:=1.7
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/shawn1m/overture/tar.gz/v${PKG_VERSION}?
-PKG_HASH:=916ddbc4e8ee3cd008e281ba768c1502ad7b3ad71073f5e587b187e371eedd2b
+PKG_HASH:=d3912fe53d2f6a60d20767a8dc5041333f8b5386b7d23d959b4de872d12b5024
PKG_MAINTAINER:=Richard Yu <yurichard3839@gmail.com>
PKG_LICENSE:=MIT
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/main $(1)/usr/bin/overture
$(INSTALL_DIR) $(1)/etc/overture
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/config.sample.json $(1)/etc/overture/config.json
- $(SED) 's@"\.\(/[^"]\{1,\}_sample\)"@"/etc/overture\1"@g;s/":53"/"127.0.0.3:53"/' $(1)/etc/overture/config.json
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/config.sample.yml $(1)/etc/overture/config.yml
+ $(SED) 's@\.\(/[^[:space:]]\{1,\}_sample\)@/etc/overture\1@g;s/^\(bindAddress:[[:space:]]\{0,\}\)[^[:space:]]\{0,\}$$$$/\1127.0.0.3:53/' $(1)/etc/overture/config.yml
$(INSTALL_DATA) ./files/*_sample $(1)/etc/overture
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/overture.init $(1)/etc/init.d/overture
start_service() {
procd_open_instance
- procd_set_param command /usr/bin/overture -c /etc/overture/config.json
+ procd_set_param command /usr/bin/overture -c /etc/overture/config.yml
procd_set_param file /etc/overture/config.json
procd_set_param stdout 1
procd_set_param stderr 1
--- /dev/null
+--- a/go.sum
++++ b/go.sum
+@@ -91,6 +91,7 @@ github.com/cncf/udpa/go v0.0.0-201912090
+ github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
+ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
+ github.com/coredns/caddy v1.1.0/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4=
++github.com/coredns/coredns v1.8.0 h1:U6Z6Ljuy5D8VKDquF1dUotUtFeoNt0PVCwSfIVYFC6s=
+ github.com/coredns/coredns v1.8.0/go.mod h1:R/TQ2yPVKdafwpVXOh6NFN13ikgto21kOMPvOeFPS8o=
+ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
+ github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
include $(TOPDIR)/rules.mk
PKG_NAME:=ovsd
-PKG_VERSION:=2020-10-12
+PKG_SOURCE_DATE:=2020-12-08
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://gitlab.hhi.fraunhofer.de/wn-ina/ovsd.git
-PKG_SOURCE_VERSION:=e6a07f27dd8a5893eb6110c69922077995b9b26a
-PKG_MIRROR_HASH:=9d903b3fecd8a3e102e1477efe479fc3851b1814ea0852e1dae39065b88cd157
-
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_SOURCE_URL:=https://gitlab.hhi.fraunhofer.de/wn-ina/ovsd
+PKG_SOURCE_VERSION:=3a03476e2fececed3752ba4e68c92e71160c7db1
+PKG_MIRROR_HASH:=306e0cfa675299260142831e7a16c77e6e9e52ad7067bf20362f06af4faad69c
PKG_MAINTAINER:=Arne Kappen <akappen@inet.tu-berlin.de>
-PKG_LICENSE:=GPL-2.0
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=LICENSE
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
-
define Package/ovsd
SECTION:=net
SUBMENU:=Open vSwitch
CATEGORY:=Network
- DEPENDS:=+openvswitch +libubox +libubus +netifd
TITLE:=Open vSwtich configuration daemon for netifd
- MAINTAINER:=Arne Kappen <akappen@inet.tu-berlin.de>
+ URL:=https://gitlab.hhi.fraunhofer.de/wn-ina/ovsd
+ DEPENDS:=+openvswitch +libubox +libubus +netifd
endef
define Package/ovsd/description
USE_PROCD=1
start_service() {
- procd_open_instance
- procd_set_param command /sbin/ovsd
- procd_set_param respawn
+ procd_open_instance
+ procd_set_param command /sbin/ovsd
+ procd_set_param respawn
procd_set_param watch ovs
-
- procd_close_instance
-}
\ No newline at end of file
+ procd_close_instance
+}
PKG_NAME:=restic-rest-server
PKG_VERSION:=0.9.7
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_BUILD_DIR:=$(BUILD_DIR)/rest-server-$(PKG_VERSION)
PKG_SOURCE:=rest-server-$(PKG_VERSION).tar.gz
config rest-server
option enabled '0'
option path '/mnt/backup' # data directory (default "/tmp/restic")
- #option append-only '1' # enable append only mode
+ #option append_only '1' # enable append only mode
#option cpuprofile '/mnt/backup/cpuprofile' # write CPU profile to file
#option debug '1' # output debug messages
#option listen ':8000' # listen address (default ":8000")
#option log '/mnt/backup/http.log' # log HTTP requests in the combined log format
- #option private-repos '1' # users can only access their private repo
+ #option private_repos '1' # users can only access their private repo
#option prometheus '1' # enable Prometheus metrics
#option tls '1' # turn on TLS support
- #option tls-cert '/mnt/backup/public_key' # TLS certificate path
- #option tls-key '/mnt/backup/private_key' # TLS key path
+ #option tls_cert '/mnt/backup/public_key' # TLS certificate path
+ #option tls_key '/mnt/backup/private_key' # TLS key path
PKG_NAME:=rp-pppoe
PKG_VERSION:=3.14
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://dianne.skoll.ca/projects/rp-pppoe/download
TARGET_CFLAGS += -I$(PKG_BUILD_DIR)/src/libevent -isystem $(PKG_BUILD_DIR)/missing-headers -D_BSD_SOURCE
CONFIGURE_PATH := ./src
CONFIGURE_ARGS += ac_cv_path_PPPD=/usr/sbin/pppd --enable-plugin=$(STAGING_DIR)/usr/include/
-MAKE_FLAGS := DESTDIR="$(PKG_INSTALL_DIR)" PLUGIN_PATH=rp-pppoe.so install
+MAKE_FLAGS := DESTDIR="$(PKG_INSTALL_DIR)" PLUGIN_PATH=pppoe.so install
MAKE_PATH := ./src
define Build/Prepare
include $(TOPDIR)/rules.mk
PKG_NAME:=safe-search
-PKG_VERSION:=2.0.0
-PKG_RELEASE:=3
+PKG_VERSION:=2.0.1
+PKG_RELEASE:=$(AUTORELEASE)
PKG_LICENSE:=MIT
PKG_MAINTAINER:=Gregory L. Dietsche <Gregory.Dietsche@cuw.edu>
define Package/safe-search/postinst
#!/bin/sh
if [ -z "$${IPKG_INSTROOT}" ]; then
+ crontab -l | grep -v "safe-search-maintenance" | sort | uniq | crontab -
echo "1 1 * * 1 /bin/nice /usr/sbin/safe-search-maintenance>/dev/null 2>&1">>/etc/crontabs/root
/etc/init.d/cron restart
fi
PKG_NAME:=simple-adblock
PKG_VERSION:=1.8.7
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
PKG_LICENSE:=GPL-3.0-or-later
CATEGORY:=Network
TITLE:=Simple AdBlock Service
URL:=https://docs.openwrt.melmac.net/simple-adblock/
- DEPENDS:=+jshn
+ DEPENDS:=+jshn +wget
PKGARCH:=all
endef
$(INSTALL_BIN) ./files/simple-adblock.init $(1)/etc/init.d/simple-adblock
$(SED) "s|^\(PKG_VERSION\).*|\1='$(PKG_VERSION)-$(PKG_RELEASE)'|" $(1)/etc/init.d/simple-adblock
$(INSTALL_CONF) ./files/simple-adblock.conf $(1)/etc/config/simple-adblock
- $(INSTALL_CONF) ./files/simple-adblock.conf.update $(1)/tmp/simple-adblock.conf.update
+ $(INSTALL_DATA) ./files/simple-adblock.conf.update $(1)/tmp/simple-adblock.conf.update
endef
define Package/simple-adblock/postinst
if is_present 'curl'; then
dl_command="curl --insecure --retry $curlRetry --connect-timeout $dlTimeout --silent"
dl_flag="-o"
+ elif is_present '/usr/libexec/wget-ssl'; then
+ dl_command="/usr/libexec/wget-ssl --no-check-certificate --timeout $dlTimeout -q"
+ dl_flag="-O"
elif is_present wget && wget --version 2>/dev/null | grep -q "+https"; then
dl_command="wget --no-check-certificate --timeout $dlTimeout -q"
dl_flag="-O"
if [ "$forceDNS" -ne 0 ]; then
for c in $forceDNSPorts; do
if netstat -tuln | grep LISTEN | grep ":${c}" >/dev/null 2>&1; then
- json_add_object ''
- json_add_string type 'redirect'
- json_add_string target 'DNAT'
- json_add_string src 'lan'
- json_add_string proto 'tcp udp'
+ json_add_object ""
+ json_add_string type redirect
+ json_add_string target DNAT
+ json_add_string src lan
+ json_add_string proto "tcp udp"
json_add_string src_dport "$c"
json_add_string dest_port "$c"
- json_add_string reflection '0'
+ json_add_boolean reflection 0
json_close_object
else
- json_add_object ''
- json_add_string type 'rule'
- json_add_string src 'lan'
- json_add_string dest '*'
- json_add_string proto 'tcp udp'
+ json_add_object ""
+ json_add_string type rule
+ json_add_string src lan
+ json_add_string dest "*"
+ json_add_string proto "tcp udp"
json_add_string dest_port "$c"
- json_add_string target 'REJECT'
+ json_add_string target REJECT
json_close_object
fi
done
fi
if [ "$targetDNS" = 'dnsmasq.ipset' ]; then
- json_add_object ''
- json_add_string type 'ipset'
- json_add_string name 'adb'
- json_add_string match 'dest_net'
- json_add_string storage 'hash'
+ json_add_object ""
+ json_add_string type ipset
+ json_add_string name adb
+ json_add_string match dest_net
+ json_add_string storage hash
json_close_object
- json_add_object ''
- json_add_string type 'rule'
- json_add_string ipset 'adb'
- json_add_string src 'lan'
- json_add_string dest '*'
- json_add_string proto 'tcp udp'
- json_add_string target 'REJECT'
+ json_add_object ""
+ json_add_string type rule
+ json_add_string ipset adb
+ json_add_string src lan
+ json_add_string dest "*"
+ json_add_string proto "tcp udp"
+ json_add_string target REJECT
json_close_object
fi
json_close_array
service_started() { procd_set_config_changed firewall; }
service_stopped() { procd_set_config_changed firewall; }
+
restart_service() { rc_procd start_service 'restart'; }
-reload_service() { restart_service; }
-restart() { restart_service; }
-reload() { restart_service; }
+reload_service() { rc_procd start_service 'restart'; }
dl() { rc_procd start_service 'download'; }
+
killcache() {
rm -f "$addnhostsCache" "$addnhostsGzip"
rm -f "$dnsmasqCache" "$dnsmasqGzip"
include $(TOPDIR)/rules.mk
PKG_NAME:=squid
-PKG_VERSION:=4.13
-PKG_RELEASE:=1
+PKG_VERSION:=4.14
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www3.us.squid-cache.org/Versions/v4/ \
http://www2.pl.squid-cache.org/Versions/v4/ \
http://www.squid-cache.org/Versions/v4/
-PKG_HASH:=6891a0f540e60779b4f24f1802a302f813c6f473ec7336a474ed68c3e2e53ee0
+PKG_HASH:=f1097daa6434897c159bc100978b51347c0339041610845d0afa128151729ffc
PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
PKG_LICENSE:=GPL-2.0-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=strongswan
-PKG_VERSION:=5.9.1
-PKG_RELEASE:=6
+PKG_VERSION:=5.9.2
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://download.strongswan.org/ https://download2.strongswan.org/
-PKG_HASH:=a337c9fb63d973b8440827755c784031648bf423b7114a04918b0b00fd42cafb
+PKG_HASH:=61c72f741edb2c1295a7b7ccce0317a104b3f9d39efd04c52cd05b01b55ab063
PKG_LICENSE:=GPL-2.0-or-later
PKG_MAINTAINER:=Philip Prindeville <philipp@redfish-solutions.com>, Noel Kuntze <noel.kuntze@thermi.consulting>
PKG_CPE_ID:=cpe:/a:strongswan:strongswan
agent \
attr \
attr-sql \
+ bliss \
blowfish \
ccm \
+ chapoly \
cmac \
constraints \
connmark \
nonce \
md4 \
md5 \
+ mgf1 \
mysql \
+ newhope \
+ ntru \
openssl \
pem \
pgp \
revocation \
sha1 \
sha2 \
+ sha3 \
smp \
socket-default \
socket-dynamic \
+strongswan-charon \
+strongswan-charon-cmd \
+strongswan-ipsec \
+ +strongswan-libnttfft \
+strongswan-mod-addrblock \
+strongswan-mod-aes \
+strongswan-mod-af-alg \
+strongswan-mod-agent \
+strongswan-mod-attr \
+strongswan-mod-attr-sql \
+ +strongswan-mod-bliss \
+strongswan-mod-blowfish \
+strongswan-mod-ccm \
+ +strongswan-mod-chapoly \
+strongswan-mod-cmac \
+strongswan-mod-constraints \
+strongswan-mod-connmark \
+strongswan-mod-nonce \
+strongswan-mod-md4 \
+strongswan-mod-md5 \
+ +strongswan-mod-mgf1 \
+strongswan-mod-mysql \
+ +strongswan-mod-newhope \
+ +strongswan-mod-ntru \
+strongswan-mod-openssl \
+strongswan-mod-pem \
+strongswan-mod-pgp \
+strongswan-mod-revocation \
+strongswan-mod-sha1 \
+strongswan-mod-sha2 \
+ +strongswan-mod-sha3 \
+strongswan-mod-smp \
+strongswan-mod-socket-default \
+strongswan-mod-sql \
This package contains the ipsec utility.
endef
+define Package/strongswan-libnttfft
+$(call Package/strongswan/Default)
+ TITLE+= nttfft library
+ DEPENDS:= strongswan
+endef
+
+define Package/strongswan-libnttfft/description
+$(call Package/strongswan/description/Default)
+ This package contains the Number Theoretic Transforms library.
+endef
+
define Package/strongswan-pki
$(call Package/strongswan/Default)
TITLE+= PKI tool
This package contains the swanctl utility.
endef
+define Package/strongswan-gencerts
+$(call Package/strongswan/Default)
+ TITLE+= X.509 certificate generation utility
+ DEPENDS:= strongswan +strongswan-pki bash
+endef
+
+define Package/strongswan-gencerts/description
+$(call Package/strongswan/description/Default)
+ This package contains the X.509 certificate generation utility.
+endef
+
define Package/strongswan-libtls
$(call Package/strongswan/Default)
TITLE+= libtls
}
endef
+define Package/strongswan-libnttfft/install
+ $(INSTALL_DIR) $(1)/usr/lib/ipsec
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ipsec/libnttfft.so.* $(1)/usr/lib/ipsec/
+endef
+
define Package/strongswan-pki/install
$(INSTALL_DIR) $(1)/etc/strongswan.d
$(CP) $(PKG_INSTALL_DIR)/etc/strongswan.d/pki.conf $(1)/etc/strongswan.d/
endef
define Package/strongswan-swanctl/install
+ $(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/etc/swanctl/{bliss,conf.d,ecdsa,pkcs{12,8},private,pubkey,rsa}
$(INSTALL_DIR) $(1)/etc/swanctl/x509{,aa,ac,ca,crl,ocsp}
$(CP) $(PKG_INSTALL_DIR)/etc/swanctl/swanctl.conf $(1)/etc/swanctl/
+ echo "include /var/swanctl/swanctl.conf" >> $(1)/etc/swanctl/swanctl.conf
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/swanctl $(1)/usr/sbin/
+ $(INSTALL_BIN) ./files/swanctl.init $(1)/etc/init.d/swanctl
+endef
+
+define Package/strongswan-gencerts/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) ./files/gencerts.sh $(1)/usr/bin/gencerts
endef
define Package/strongswan-libtls/install
$(eval $(call BuildPackage,strongswan-charon))
$(eval $(call BuildPackage,strongswan-charon-cmd))
$(eval $(call BuildPackage,strongswan-ipsec))
+$(eval $(call BuildPackage,strongswan-libnttfft))
$(eval $(call BuildPackage,strongswan-pki))
$(eval $(call BuildPackage,strongswan-scepclient))
$(eval $(call BuildPackage,strongswan-swanctl))
+$(eval $(call BuildPackage,strongswan-gencerts))
$(eval $(call BuildPackage,strongswan-libtls))
$(eval $(call BuildPlugin,addrblock,RFC 3779 address block constraint support,))
$(eval $(call BuildPlugin,aes,AES crypto,))
$(eval $(call BuildPlugin,agent,SSH agent signing,))
$(eval $(call BuildPlugin,attr,file based config,))
$(eval $(call BuildPlugin,attr-sql,SQL based config,+strongswan-charon))
+$(eval $(call BuildPlugin,bliss,BLISS crypto,+strongswan-libnttfft +strongswan-mod-mgf1 +strongswan-mod-hmac))
$(eval $(call BuildPlugin,blowfish,Blowfish crypto,))
$(eval $(call BuildPlugin,ccm,CCM AEAD wrapper crypto,))
+$(eval $(call BuildPlugin,chapoly,ChaCha20-Poly1305 AEAD crypto,))
$(eval $(call BuildPlugin,cmac,CMAC crypto,))
$(eval $(call BuildPlugin,connmark,netfilter connection marking,))
$(eval $(call BuildPlugin,constraints,advanced X509 constraint checking,))
$(eval $(call BuildPlugin,nonce,nonce genereation,))
$(eval $(call BuildPlugin,md4,MD4 crypto,))
$(eval $(call BuildPlugin,md5,MD5 crypto,))
+$(eval $(call BuildPlugin,mgf1,MGF1 crypto,))
$(eval $(call BuildPlugin,mysql,MySQL database interface,+strongswan-mod-sql +PACKAGE_strongswan-mod-mysql:libmysqlclient-r))
+$(eval $(call BuildPlugin,newhope,New Hope crypto,+strongswan-libnttfft +strongswan-mod-chapoly +strongswan-mod-sha3))
+$(eval $(call BuildPlugin,ntru,NTRU crypto,+strongswan-mod-mgf1))
$(eval $(call BuildPlugin,openssl,OpenSSL crypto,+PACKAGE_strongswan-mod-openssl:libopenssl))
$(eval $(call BuildPlugin,pem,PEM decoding,))
$(eval $(call BuildPlugin,pgp,PGP key decoding,))
$(eval $(call BuildPlugin,revocation,X509 CRL/OCSP revocation,))
$(eval $(call BuildPlugin,sha1,SHA1 crypto,))
$(eval $(call BuildPlugin,sha2,SHA2 crypto,))
+$(eval $(call BuildPlugin,sha3,SHA3 and SHAKE crypto,))
$(eval $(call BuildPlugin,smp,SMP configuration and control interface,+PACKAGE_strongswan-mod-smp:libxml2))
$(eval $(call BuildPlugin,socket-default,default socket implementation for charon,))
$(eval $(call BuildPlugin,socket-dynamic,dynamic socket implementation for charon,))
--- /dev/null
+#!/bin/sh
+
+#
+# see:
+# https://www.howtoforge.com/tutorial/strongswan-based-ipsec-vpn-using-certificates-and-pre-shared-key-on-ubuntu-16-04/
+#
+
+PROG=$(basename "$0")
+
+[ -z "$EUID" ] && EUID=$(id -u)
+
+if [ $# -lt 5 ]; then
+ echo "Usage: $PROG { -s | -c | -u } country domain organization identities [ ... ]" >&2
+ exit 1
+fi
+
+case "$1" in
+-s)
+ S_OPT=1 ;;
+-c)
+ C_OPT=1 ;;
+-u)
+ U_OPT=1 ;;
+*)
+ echo "$PROG: require an option specifying server/client/user credential type" >&2
+ exit 1
+ ;;
+esac
+shift
+
+C="$1"; shift
+DOMAIN="$1"; shift
+SHORT_DOMAIN="${DOMAIN%%.*}"
+ORG="$1"; shift
+
+# invariants...
+STRONGSWANDIR=/etc
+SWANCTL_DIR=$STRONGSWANDIR/swanctl
+: ${KEYINFO:="rsa:4096"}
+: ${CADAYS:=3650}
+: ${CRTDAYS:=730}
+
+makeDN()
+{
+ printf "C=%s, O=%s, CN=%s" "$1" "$2" "$3"
+}
+
+field()
+{
+ local arg="$1"
+ local nth="$2"
+
+ echo "$arg" | cut -d ':' -f "$nth"
+}
+
+genmasterkey()
+{
+ local keytype keybits
+
+ keytype=$(field "$KEYINFO" 1)
+ keybits=$(field "$KEYINFO" 2)
+
+ pki --gen --type "$keytype" --size "$keybits" --outform pem > "$SWANCTL_DIR/private/$SHORT_DOMAIN.key"
+ chmod 0400 "$SWANCTL_DIR/private/$SHORT_DOMAIN.key"
+}
+
+genca()
+{
+ local keytype
+
+ keytype=$(field "$KEYINFO" 1)
+
+ pki --self --ca --lifetime "$CADAYS" --in "$SWANCTL_DIR/private/$SHORT_DOMAIN.key" --type "$keytype" \
+ --dn "$ROOTDN" --outform pem > "$SWANCTL_DIR/x509ca/$SHORT_DOMAIN.crt"
+ chmod 0444 "$SWANCTL_DIR/cacerts/$SHORT_DOMAIN.crt"
+}
+
+genclientkey()
+{
+ local name="$1" keytype keybits
+
+ keytype=$(field "$KEYINFO" 1)
+ keybits=$(field "$KEYINFO" 2)
+
+ pki --gen --type "$keytype" --size "$keybits" --outform pem > "$SWANCTL_DIR/private/$name.key"
+ chmod 0400 "$SWANCTL_DIR/private/$name.key"
+}
+
+gendevcert()
+{
+ local dn="$1"
+ local san="$2"
+ local name="$3"
+
+ # reads key from input
+ pki --issue --lifetime "$CRTDAYS" \
+ --cacert "$SWANCTL_DIR/x509ca/$SHORT_DOMAIN.crt" \
+ --cakey "$SWANCTL_DIR/private/$SHORT_DOMAIN.key" \
+ --dn "$dn" --san "$san" \
+ ${S_OPT:+--flag serverAuth} \
+ ${S_OPT:---flag clientAuth} \
+ --flag ikeIntermediate \
+ --outform pem > "$SWANCTL_DIR/x509/$name.crt"
+ chmod 0444 "$SWANCTL_DIR/x509/$name.crt"
+}
+
+gendev()
+{
+ local keytype
+
+ keytype=$(field "$KEYINFO" 1)
+
+ [ -f "$SWANCTL_DIR/private/$NAME.key" ] || genclientkey "$NAME"
+
+ [ -f "$SWANCTL_DIR/x509/$NAME.crt" ] || \
+ pki --pub --in "$SWANCTL_DIR/private/$NAME.key" --type "$keytype" \
+ | gendevcert "$DEVDN" "$DEVSAN" "$NAME"
+}
+
+setparams()
+{
+ NAME="$1"
+
+ if [ -n "$U_OPT" ]; then
+ DEVSAN="$NAME@$DOMAIN"
+ DEVDN="$(makeDN "$C" "$ORG" "$DEVSAN")"
+ else
+ DEVSAN="$NAME.$DOMAIN"
+ DEVDN="$(makeDN "$C" "$ORG" "$NAME")"
+ fi
+}
+
+umask 077
+
+[ "$EUID" -eq 0 ] || { echo "Must run as root!" >&2 ; exit 1; }
+
+ROOTDN="$(makeDN "$C" "$ORG" "Root CA")"
+
+[ -f "$SWANCTL_DIR/private/$SHORT_DOMAIN.key" ] || genmasterkey
+
+[ -f "$SWANCTL_DIR/x509ca/$SHORT_DOMAIN.crt" ] || genca
+
+PARENT="$STRONGSWANDIR"
+BASEDIR="${SWANCTL_DIR##$PARENT/}"
+
+for name in "$@"; do
+ setparams "$name"
+ gendev
+
+ tar -zcf "$name-certs.tar.gz" -C "$PARENT" "$BASEDIR/x509ca/$SHORT_DOMAIN.crt" "$BASEDIR/x509/$name.crt" "$BASEDIR/private/$name.key"
+ chmod 600 "$name-certs.tar.gz"
+ echo "Generated as $name-certs.tar.gz"
+done
+
+exit 0
start
}
+stop_service() {
+ ipsec_reset
+ swan_reset
+ secret_reset
+}
+
check_ipsec_interface() {
local intf
start_service() {
prepare_env
+ warning "Strongswan is deprecating the ipsec CLI; please migrate to swanctl."
+
[ $WAIT_FOR_INTF -eq 1 ] && return
procd_open_instance
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=90
+STOP=10
+
+USE_PROCD=1
+PROG=/usr/lib/ipsec/starter
+
+. $IPKG_INSTROOT/lib/functions.sh
+. $IPKG_INSTROOT/lib/functions/network.sh
+
+STRONGSWAN_CONF_FILE=/etc/strongswan.conf
+STRONGSWAN_VAR_CONF_FILE=/var/ipsec/strongswan.conf
+
+SWANCTL_CONF_FILE=/etc/swanctl/swanctl.conf
+SWANCTL_VAR_CONF_FILE=/var/swanctl/swanctl.conf
+
+WAIT_FOR_INTF=0
+
+CONFIG_FAIL=0
+
+time2seconds()
+{
+ local timestring="$1"
+ local multiplier number suffix
+
+ suffix="${timestring//[0-9 ]}"
+ number="${timestring%%$suffix}"
+ [ "$number$suffix" != "$timestring" ] && return 1
+ case "$suffix" in
+ ""|s)
+ multiplier=1 ;;
+ m)
+ multiplier=60 ;;
+ h)
+ multiplier=3600 ;;
+ d)
+ multiplier=86400 ;;
+ *)
+ return 1 ;;
+ esac
+ echo $(( number * multiplier ))
+}
+
+seconds2time()
+{
+ local seconds="$1"
+
+ if [ $seconds -eq 0 ]; then
+ echo "0s"
+ elif [ $((seconds % 86400)) -eq 0 ]; then
+ echo "$((seconds / 86400))d"
+ elif [ $((seconds % 3600)) -eq 0 ]; then
+ echo "$((seconds / 3600))h"
+ elif [ $((seconds % 60)) -eq 0 ]; then
+ echo "$((seconds / 60))m"
+ else
+ echo "${seconds}s"
+ fi
+}
+
+file_reset() {
+ : > "$1"
+}
+
+xappend() {
+ local file="$1"
+ shift
+
+ echo "$@" >> "$file"
+}
+
+swan_reset() {
+ file_reset "$STRONGSWAN_VAR_CONF_FILE"
+}
+
+swan_xappend() {
+ xappend "$STRONGSWAN_VAR_CONF_FILE" "$@"
+}
+
+swan_xappend0() {
+ swan_xappend "$@"
+}
+
+swan_xappend1() {
+ swan_xappend " ""$@"
+}
+
+swan_xappend2() {
+ swan_xappend " ""$@"
+}
+
+swan_xappend3() {
+ swan_xappend " ""$@"
+}
+
+swan_xappend4() {
+ swan_xappend " ""$@"
+}
+
+swanctl_reset() {
+ file_reset "$SWANCTL_VAR_CONF_FILE"
+}
+
+swanctl_xappend() {
+ xappend "$SWANCTL_VAR_CONF_FILE" "$@"
+}
+
+swanctl_xappend0() {
+ swanctl_xappend "$@"
+}
+
+swanctl_xappend1() {
+ swanctl_xappend " ""$@"
+}
+
+swanctl_xappend2() {
+ swanctl_xappend " ""$@"
+}
+
+swanctl_xappend3() {
+ swanctl_xappend " ""$@"
+}
+
+swanctl_xappend4() {
+ swanctl_xappend " ""$@"
+}
+
+warning() {
+ echo "WARNING: $@" >&2
+}
+
+fatal() {
+ echo "ERROR: $@" >&2
+ CONFIG_FAIL=1
+}
+
+is_aead() {
+ local cipher="$1"
+
+ case "$cipher" in
+ aes*gcm*|aes*ccm*|aes*gmac*)
+ return 0 ;;
+ chacha20poly1305)
+ return 0 ;;
+ esac
+
+ return 1
+}
+
+add_esp_proposal() {
+ local encryption_algorithm
+ local hash_algorithm
+ local dh_group
+
+ config_get encryption_algorithm "$1" encryption_algorithm
+ config_get hash_algorithm "$1" hash_algorithm
+ config_get dh_group "$1" dh_group
+
+ # check for AEAD and clobber hash_algorithm if set
+ if is_aead "$encryption_algorithm" && [ -n "$hash_algorithm" ]; then
+ fatal "Can't have $hash_algorithm with $encryption_algorithm"
+ hash_algorithm=
+ fi
+
+ [ -n "$encryption_algorithm" ] && \
+ crypto="${crypto:+${crypto},}${encryption_algorithm}${hash_algorithm:+-${hash_algorithm}}${dh_group:+-${dh_group}}"
+}
+
+parse_esp_proposal() {
+ local conf="$1"
+ local var="$2"
+
+ local crypto=""
+
+ config_list_foreach "$conf" crypto_proposal add_esp_proposal
+
+ export -n "$var=$crypto"
+}
+
+add_ike_proposal() {
+ local encryption_algorithm
+ local hash_algorithm
+ local dh_group
+ local prf_algorithm
+
+ config_get encryption_algorithm "$1" encryption_algorithm
+ config_get hash_algorithm "$1" hash_algorithm
+ config_get dh_group "$1" dh_group
+ config_get prf_algorithm "$1" prf_algorithm
+
+ # check for AEAD and clobber hash_algorithm if set
+ if is_aead "$encryption_algorithm" && [ -n "$hash_algorithm" ]; then
+ fatal "Can't have $hash_algorithm with $encryption_algorithm"
+ hash_algorithm=
+ fi
+
+ [ -n "$encryption_algorithm" ] && \
+ crypto="${crypto:+${crypto},}${encryption_algorithm}${hash_algorithm:+-${hash_algorithm}}${prf_algorithm:+-${prf_algorithm}}${dh_group:+-${dh_group}}"
+}
+
+parse_ike_proposal() {
+ local conf="$1"
+ local var="$2"
+
+ local crypto=""
+
+ config_list_foreach "$conf" crypto_proposal add_ike_proposal
+
+ export -n "$var=$crypto"
+}
+
+config_conn() {
+ # Generic ipsec conn section shared by tunnel and transport
+ local config_name="$1"
+ local mode="$2"
+
+ local local_subnet
+ local local_nat
+ local updown
+ local firewall
+ local remote_subnet
+ local remote_sourceip
+ local lifetime
+ local dpdaction
+ local closeaction
+ local startaction
+ local if_id
+ local rekeytime
+
+ config_get startaction "$1" startaction "route"
+ config_get local_subnet "$1" local_subnet ""
+ config_get local_nat "$1" local_nat ""
+ config_get updown "$1" updown ""
+ config_get firewall "$1" firewall ""
+ config_get remote_subnet "$1" remote_subnet ""
+ config_get remote_sourceip "$1" remote_sourceip ""
+ config_get lifetime "$1" lifetime ""
+ config_get dpdaction "$1" dpdaction "none"
+ config_get closeaction "$1" closeaction "none"
+ config_get if_id "$1" if_id ""
+ config_get rekeytime "$1" rekeytime ""
+
+ local esp_proposal
+ parse_esp_proposal "$1" esp_proposal
+
+ # translate from ipsec to swanctl
+ case "$startaction" in
+ add)
+ startaction="none" ;;
+ route)
+ startaction="trap" ;;
+ start|none|trap)
+ # already using new syntax
+ ;;
+ *)
+ fatal "Startaction $startaction unknown"
+ startaction=
+ ;;
+ esac
+
+ case "$closeaction" in
+ none|clear)
+ closeaction="none" ;;
+ hold)
+ closeaction="trap" ;;
+ restart)
+ closeaction="start" ;;
+ trap|start)
+ # already using new syntax
+ ;;
+ *)
+ fatal "Closeaction $closeaction unknown"
+ closeaction=
+ ;;
+ esac
+
+ [ -n "$closeaction" -a "$closeaction" != "none" ] && warning "Closeaction $closeaction can cause instability"
+
+ case "$dpdaction" in
+ none)
+ dpddelay="0s"
+ dpdaction=
+ ;;
+ clear)
+ ;;
+ hold)
+ dpdaction="trap" ;;
+ restart)
+ dpdaction="start" ;;
+ trap|start)
+ # already using new syntax
+ ;;
+ *)
+ fatal "Dpdaction $dpdaction unknown"
+ dpdaction=
+ ;;
+ esac
+
+ [ -n "$local_nat" ] && local_subnet="$local_nat"
+
+ swanctl_xappend3 "$config_name {"
+
+ [ -n "$local_subnet" ] && swanctl_xappend4 "local_ts = $local_subnet"
+ [ -n "$remote_subnet" ] && swanctl_xappend4 "remote_ts = $remote_subnet"
+ [ -n "$if_id" ] && { swanctl_xappend4 "if_id_in = $if_id" ; swanctl_xappend4 "if_id_out = $if_id" ; }
+ [ -n "$startaction" -a "$startaction" != "none" ] && swanctl_xappend4 "start_action = $startaction"
+ [ -n "$closeaction" -a "$closeaction" != "none" ] && swanctl_xappend4 "close_action = $closeaction"
+ swanctl_xappend4 "esp_proposals = $esp_proposal"
+ swanctl_xappend4 "mode = $mode"
+
+ if [ -n "$lifetime" ]; then
+ swanctl_xappend4 "life_time = $lifetime"
+ elif [ -n "$rekeytime" ]; then
+ swanctl_xappend4 "life_time = $(seconds2time $(((110 * $(time2seconds $rekeytime)) / 100)))"
+ fi
+ [ -n "$rekeytime" ] && swanctl_xappend4 "rekey_time = $rekeytime"
+
+ [ -n "$updown" ] && swanctl_xappend4 "updown = $updown"
+ [ -n "$dpdaction" ] && swanctl_xappend4 "dpd_action = $dpdaction"
+
+ swanctl_xappend3 "}"
+}
+
+config_tunnel() {
+ config_conn "$1" "tunnel"
+}
+
+config_transport() {
+ config_conn "$1" "transport"
+}
+
+config_remote() {
+ local config_name="$1"
+
+ local enabled
+ local gateway
+ local local_gateway
+ local local_sourceip
+ local local_leftip
+ local remote_gateway
+ local pre_shared_key
+ local auth_method
+ local keyingtries
+ local dpddelay
+ local inactivity
+ local keyexchange
+ local reqid
+ local packet_marker
+ local fragmentation
+ local mobike
+ local local_cert
+ local local_key
+ local ca_cert
+ local rekeytime
+
+ config_get_bool enabled "$1" enabled 0
+ [ $enabled -eq 0 ] && return
+
+ config_get gateway "$1" gateway
+ config_get pre_shared_key "$1" pre_shared_key
+ config_get auth_method "$1" authentication_method
+ config_get local_identifier "$1" local_identifier ""
+ config_get remote_identifier "$1" remote_identifier ""
+ config_get local_sourceip "$1" local_sourceip ""
+ config_get local_leftip "$1" local_leftip "%any"
+ config_get keyingtries "$1" keyingtries "3"
+ config_get dpddelay "$1" dpddelay "30s"
+ config_get inactivity "$1" inactivity
+ config_get keyexchange "$1" keyexchange "ikev2"
+ config_get reqid "$1" reqid
+ config_get packet_marker "$1" packet_marker
+ config_get fragmentation "$1" fragmentation "yes"
+ config_get_bool mobike "$1" mobike 1
+ config_get local_cert "$1" local_cert ""
+ config_get local_key "$1" local_key ""
+ config_get ca_cert "$1" ca_cert ""
+ config_get rekeytime "$1" rekeytime
+ config_get overtime "$1" overtime
+
+ case "$fragmentation" in
+ 0)
+ fragmentation="no" ;;
+ 1)
+ fragmentation="yes" ;;
+ yes|accept|force|no)
+ # already using new syntax
+ ;;
+ *)
+ fatal "Fragmentation $fragmentation not supported"
+ fragmentation=
+ ;;
+ esac
+
+ [ "$gateway" = "any" ] && remote_gateway="%any" || remote_gateway="$gateway"
+
+ [ -z "$local_gateway" ] && {
+ local ipdest
+
+ [ "$remote_gateway" = "%any" ] && ipdest="1.1.1.1" || ipdest="$remote_gateway"
+ local_gateway=`ip -o route get $ipdest | awk '/ src / { gsub(/^.* src /,""); gsub(/ .*$/, ""); print $0}'`
+ }
+
+ local ike_proposal
+ parse_ike_proposal "$1" ike_proposal
+
+ [ -n "$firewall" ] && fatal "Firewall not supported"
+
+ swanctl_xappend0 "# config for $config_name"
+ swanctl_xappend0 "connections {"
+ swanctl_xappend1 "$config_name {"
+ swanctl_xappend2 "local_addrs = $local_leftip"
+ swanctl_xappend2 "remote_addrs = $remote_gateway"
+
+ [ -n "$local_sourceip" ] && swanctl_xappend2 "vips = $local_sourceip"
+ [ -n "$fragmentation" ] && swanctl_xappend2 "fragmentation = $fragmentation"
+
+ swanctl_xappend2 "local {"
+ swanctl_xappend3 "auth = $auth_method"
+
+ [ -n "$local_identifier" ] && swanctl_xappend3 "id = \"$local_identifier\""
+ [ "$auth_method" = pubkey ] && swanctl_xappend3 "certs = $local_cert"
+ swanctl_xappend2 "}"
+
+ swanctl_xappend2 "remote {"
+ swanctl_xappend3 "auth = $auth_method"
+ [ -n "$remote_identifier" ] && swanctl_xappend3 "id = \"$remote_identifier\""
+ swanctl_xappend2 "}"
+
+ swanctl_xappend2 "children {"
+
+ config_list_foreach "$1" tunnel config_tunnel
+
+ config_list_foreach "$1" transport config_transport
+
+ swanctl_xappend2 "}"
+
+ case "$keyexchange" in
+ ike)
+ ;;
+ ikev1)
+ swanctl_xappend2 "version = 1" ;;
+ ikev2)
+ swanctl_xappend2 "version = 2" ;;
+ *)
+ fatal "Keyexchange $keyexchange not supported"
+ keyexchange=
+ ;;
+ esac
+
+ [ $mobike -eq 1 ] && swanctl_xappend2 "mobike = yes" || swanctl_xappend2 "mobike = no"
+
+ if [ -n "$rekeytime" ]; then
+ swanctl_xappend2 "rekey_time = $rekeytime"
+
+ if [ -z "$overtime" ]; then
+ overtime=$(seconds2time $(($(time2seconds $rekeytime) / 10)))
+ fi
+ fi
+ [ -n "$overtime" ] && swanctl_xappend2 "over_time = $overtime"
+
+ swanctl_xappend2 "proposals = $ike_proposal"
+ [ -n "$dpddelay" ] && swanctl_xappend2 "dpd_delay = $dpddelay"
+ [ "$keyingtries" = "%forever" ] && swanctl_xappend2 "keyingtries = 0" || swanctl_xappend2 "keyingtries = $keyingtries"
+
+ swanctl_xappend1 "}"
+ swanctl_xappend0 "}"
+
+ if [ "$auth_method" = pubkey ]; then
+ swanctl_xappend0 ""
+
+ swanctl_xappend0 "secrets {"
+ swanctl_xappend1 "rsa {"
+ swanctl_xappend2 "filename = $local_key"
+ swanctl_xappend1 "}"
+ swanctl_xappend0 "}"
+
+ swanctl_xappend0 ""
+
+ if [ -n "$ca_cert" ]; then
+ swanctl_xappend0 "authorities {"
+ swanctl_xappend1 "$config_name {"
+ swanctl_xappend2 "cacert = $ca_cert"
+ swanctl_xappend1 "}"
+ swanctl_xappend0 "}"
+ fi
+
+ elif [ "$auth_method" = psk ]; then
+ swanctl_xappend0 ""
+
+ swanctl_xappend0 "secrets {"
+ swanctl_xappend1 "ike {"
+ swanctl_xappend2 "secret = $pre_shared_key"
+ if [ -z "$local_id" ]; then
+ swanctl_xappend2 "id1 = $local_id"
+ if [ -z "$remote_id" ]; then
+ swanctl_xappend2 "id2 = $remote_id"
+ fi
+ fi
+ else
+ fatal "AuthenticationMode $auth_mode not supported"
+ fi
+
+ swanctl_xappend0 ""
+}
+
+do_preamble() {
+ swanctl_xappend0 "# generated by /etc/init.d/swanctl"
+}
+
+config_ipsec() {
+ local debug
+ local rtinstall_enabled
+ local routing_tables_ignored
+ local routing_table
+ local routing_table_id
+ local interface
+ local device_list
+
+ swan_reset
+ swanctl_reset
+ do_preamble
+
+ config_get debug "$1" debug 0
+ config_get_bool rtinstall_enabled "$1" rtinstall_enabled 1
+ [ $rtinstall_enabled -eq 1 ] && install_routes=yes || install_routes=no
+
+ # prepare extra charon config option ignore_routing_tables
+ for routing_table in $(config_get "$1" "ignore_routing_tables"); do
+ if [ "$routing_table" -ge 0 ] 2>/dev/null; then
+ routing_table_id=$routing_table
+ else
+ routing_table_id=$(sed -n '/[ \t]*[0-9]\+[ \t]\+'$routing_table'[ \t]*$/s/[ \t]*\([0-9]\+\).*/\1/p' /etc/iproute2/rt_tables)
+ fi
+
+ [ -n "$routing_table_id" ] && append routing_tables_ignored "$routing_table_id"
+ done
+
+ local interface_list=$(config_get "$1" "interface")
+ if [ -z "$interface_list" ]; then
+ WAIT_FOR_INTF=0
+ else
+ for interface in $interface_list; do
+ network_get_device device $interface
+ [ -n "$device" ] && append device_list "$device" ","
+ done
+ [ -n "$device_list" ] && WAIT_FOR_INTF=0 || WAIT_FOR_INTF=1
+ fi
+
+ swan_xappend0 "# generated by /etc/init.d/swanctl"
+ swan_xappend0 "charon {"
+ swan_xappend1 "install_routes = $install_routes"
+ [ -n "$routing_tables_ignored" ] && swan_xappend1 "ignore_routing_tables = $routing_tables_ignored"
+ [ -n "$device_list" ] && swan_xappend1 "interfaces_use = $device_list"
+ swan_xappend1 "start-scripts {"
+ swan_xappend2 "load-all = /usr/sbin/swanctl --load-all --noprompt"
+ swan_xappend1 "}"
+ swan_xappend1 "syslog {"
+ swan_xappend2 "identifier = ipsec"
+ swan_xappend2 "daemon {"
+ swan_xappend3 "default = $debug"
+ swan_xappend2 "}"
+ swan_xappend1 "}"
+ swan_xappend0 "}"
+}
+
+prepare_env() {
+ mkdir -p /var/ipsec /var/swanctl
+ config_load ipsec
+ config_foreach config_ipsec ipsec
+ config_foreach config_remote remote
+}
+
+service_running() {
+ swanctl --stats > /dev/null 2>&1
+}
+
+reload_service() {
+ running && {
+ prepare_env
+ [ $WAIT_FOR_INTF -eq 0 ] && {
+ swanctl --load-all --noprompt
+ return
+ }
+ }
+
+ start
+}
+
+stop_service() {
+ swan_reset
+ swanctl_reset
+}
+
+service_triggers() {
+ procd_add_reload_trigger "ipsec"
+ config load "ipsec"
+}
+
+start_service() {
+ prepare_env
+
+ [ $WAIT_FOR_INTF -eq 1 ] && return
+
+ if [ $CONFIG_FAIL -ne 0 ]; then
+ procd_set_param error "Invalid configuration"
+ return
+ fi
+
+ procd_open_instance
+
+ procd_set_param command $PROG --daemon charon --nofork
+
+ procd_set_param file $SWANCTL_CONF_FILE
+ procd_append_param file /etc/swanctl/conf.d/*.conf
+ procd_append_param file $STRONGSWAN_CONF_FILE
+
+ procd_set_param respawn
+
+ procd_close_instance
+}
#include <sys/socket.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
+--- a/src/libstrongswan/plugins/bliss/bliss_huffman.c
++++ b/src/libstrongswan/plugins/bliss/bliss_huffman.c
+@@ -17,6 +17,8 @@
+ #include "bliss_param_set.h"
+
+ #include <library.h>
++#undef fprintf
++#undef printf
+
+ #include <stdio.h>
+ #include <math.h>
ARG_DISBL_SET([curve25519], [disable Curve25519 Diffie-Hellman plugin.])
ARG_DISBL_SET([hmac], [disable HMAC crypto implementation plugin.])
ARG_ENABL_SET([md4], [enable MD4 software implementation plugin.])
-@@ -1473,6 +1474,7 @@ ADD_PLUGIN([botan], [s ch
+@@ -1478,6 +1479,7 @@ ADD_PLUGIN([botan], [s ch
ADD_PLUGIN([af-alg], [s charon scepclient pki scripts medsrv attest nm cmd aikgen])
ADD_PLUGIN([fips-prf], [s charon nm cmd])
ADD_PLUGIN([gmp], [s charon scepclient pki scripts manager medsrv attest nm cmd aikgen fuzz])
ADD_PLUGIN([curve25519], [s charon pki scripts nm cmd])
ADD_PLUGIN([agent], [s charon nm cmd])
ADD_PLUGIN([keychain], [s charon cmd])
-@@ -1614,6 +1616,7 @@ AM_CONDITIONAL(USE_SHA3, test x$sha3 = x
+@@ -1619,6 +1621,7 @@ AM_CONDITIONAL(USE_SHA3, test x$sha3 = x
AM_CONDITIONAL(USE_MGF1, test x$mgf1 = xtrue)
AM_CONDITIONAL(USE_FIPS_PRF, test x$fips_prf = xtrue)
AM_CONDITIONAL(USE_GMP, test x$gmp = xtrue)
AM_CONDITIONAL(USE_CURVE25519, test x$curve25519 = xtrue)
AM_CONDITIONAL(USE_RDRAND, test x$rdrand = xtrue)
AM_CONDITIONAL(USE_AESNI, test x$aesni = xtrue)
-@@ -1891,6 +1894,7 @@ AC_CONFIG_FILES([
+@@ -1896,6 +1899,7 @@ AC_CONFIG_FILES([
src/libstrongswan/plugins/mgf1/Makefile
src/libstrongswan/plugins/fips_prf/Makefile
src/libstrongswan/plugins/gmp/Makefile
+ ../gmp/gmp_diffie_hellman.c ../gmp/gmp_diffie_hellman.h
+
+
-+libstrongswan_gmpdh_la_LDFLAGS = -module -avoid-version -Wl,-Bstatic -Wl,-lgmp -Wl,-Bdynamic -Wl,--as-needed
++libstrongswan_gmpdh_la_LDFLAGS = -module -avoid-version -Wl,-Bstatic -Wl,-lgmp -Wl,-Bdynamic -Wl,--as-needed $(FPIC)
+libstrongswan_gmpdh_la_LIBADD =
--- /dev/null
+++ b/src/libstrongswan/plugins/gmpdh/gmpdh_plugin.c
UPDATE_HAPROXY=$update_haproxy
USER_CLEANUP=$user_cleanup
- [ "$enabled" -eq "1" ] || return
+ [ "$enabled" -eq "1" ] || return 0
if [ "$APP" = "uacme" ]; then
[ "$DEBUG" -eq "1" ] && debug="--verbose --verbose"
if [ -n "$user_setup" ] && [ -f "$user_setup" ]; then
log "Running user-provided setup script from $user_setup."
- "$user_setup" "$main_domain" || return 1
+ "$user_setup" "$main_domain" || return 2
else
- [ -n "$webroot" ] || [ -n "$dns" ] || pre_checks "$main_domain" || return 1
+ [ -n "$webroot" ] || [ -n "$dns" ] || pre_checks "$main_domain" || return 2
fi
log "Running $APP for $main_domain"
if [ -f "$STATE_DIR/$main_domain/cert.pem" ]; then
log "Found previous cert config, use staging=$use_staging. Issuing renew."
export CHALLENGE_PATH="$webroot"
- $ACME $debug --confdir "$STATE_DIR" $staging --never-create issue $domains --hook=$HPROGRAM && ret=0 || ret=1
+ $ACME $debug --confdir "$STATE_DIR" $staging --never-create issue $domains --hook=$HPROGRAM; ret=$?
post_checks
return $ret
fi
mv "$STATE_DIR/$main_domain" "$STATE_DIR/$main_domain.staging"
else
log "Found previous cert config. Issuing renew."
- $ACME --home "$STATE_DIR" --renew -d "$main_domain" "$acme_args" && ret=0 || ret=1
+ $ACME --home "$STATE_DIR" --renew -d "$main_domain" "$acme_args"; ret=$?
post_checks
return $ret
fi
acme_args="$acme_args --dns $dns"
else
log "Using dns mode, dns-01 is not wrapped yet"
- return 1
+ return 2
# uacme_args="$uacme_args --dns $dns"
fi
elif [ -z "$webroot" ]; then
acme_args="$acme_args --standalone --listen-v6"
else
log "Standalone not supported by $APP"
- return 1
+ return 2
fi
else
if [ ! -d "$webroot" ]; then
err "$main_domain: Webroot dir '$webroot' does not exist!"
post_checks
- return 1
+ return 2
fi
log "Using webroot dir: $webroot"
if [ "$APP" = "uacme" ]; then
else
workdir="--home"
fi
- if ! $ACME $debug $workdir "$STATE_DIR" $staging issue $acme_args $HOOK; then
+
+ $ACME $debug $workdir "$STATE_DIR" $staging issue $acme_args $HOOK; ret=$?
+ if [ "$ret" -ne 0 ]; then
failed_dir="$STATE_DIR/${main_domain}.failed-$(date +%s)"
err "Issuing cert for $main_domain failed. Moving state to $failed_dir"
[ -d "$STATE_DIR/$main_domain" ] && mv "$STATE_DIR/$main_domain" "$failed_dir"
[ -d "$STATE_DIR/private/$main_domain" ] && mv "$STATE_DIR/private/$main_domain" "$failed_dir"
post_checks
- return 1
+ return $ret
fi
if [ -e /etc/init.d/uhttpd ] && [ "$update_uhttpd" -eq "1" ]; then
post_checks
}
+issue_cert_with_retries() {
+ local section="$1"
+ local use_staging
+ local retries
+ local infinite_retries
+ config_get_bool use_staging "$section" use_staging
+ config_get retries "$section" retries
+
+ [ -z "$retries" ] && retries=1
+ [ "$retries" -eq "0" ] && infinite_retries=1
+
+ while true; do
+ issue_cert "$1"; ret=$?
+
+ if [ "$ret" -eq "2" ]; then
+ # An error occurred while retrieving the certificate.
+ retries="$((retries-1))"
+
+ if [ -z "$infinite_retries" ] && [ "$retries" -lt "1" ]; then
+ log "An error occurred while retrieving the certificate. Retries exceeded."
+ return "$ret"
+ fi
+
+ if [ "$use_staging" -eq "1" ]; then
+ # The "Failed Validations" limit of LetsEncrypt is 60 per hour. This
+ # means one failure every minute. Here we wait 2 minutes to be within
+ # limits for sure.
+ sleeptime=120
+ else
+ # There is a "Failed Validation" limit of LetsEncrypt is 5 failures per
+ # account, per hostname, per hour. This means one failure every 12
+ # minutes. Here we wait 25 minutes to be within limits for sure.
+ sleeptime=1500
+ fi
+
+ log "An error occurred while retrieving the certificate. Retrying in $sleeptime seconds."
+ sleep "$sleeptime"
+ continue
+ else
+ return "$ret";
+ fi
+ done
+}
+
load_vars()
{
local section="$1"
DEBUG=$(config_get "$section" debug)
}
-check_cron
-[ -n "$CHECK_CRON" ] && exit 0
-[ -e "/var/run/acme_boot" ] && rm -f "/var/run/acme_boot" && exit 0
+if [ -z "$INCLUDE_ONLY" ]; then
+ check_cron
+ [ -n "$CHECK_CRON" ] && exit 0
+ [ -e "/var/run/acme_boot" ] && rm -f "/var/run/acme_boot" && exit 0
+fi
config_load acme
config_foreach load_vars acme
trap err_out HUP TERM
trap int_out INT
-config_foreach issue_cert cert
+if [ -z "$INCLUDE_ONLY" ]; then
+ config_foreach issue_cert_with_retries cert
-exit 0
+ exit 0
+fi
PKG_NAME:=xinetd
PKG_VERSION:=2.3.15
-PKG_RELEASE:=10
+PKG_RELEASE:=11
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/xinetd-org/xinetd/archive
#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org
-. /lib/functions.sh
+. ${IPKG_INSTROOT}/lib/functions.sh
START=50
STOP=10
include $(TOPDIR)/rules.mk
PKG_NAME:=xray-core
-PKG_VERSION:=1.4.1
+PKG_VERSION:=1.4.2
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/XTLS/Xray-core/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=0dfedb6e133f431e9588a84b7a36112e058bf09ced2d10ffe603ab0db6610430
+PKG_HASH:=565255d8c67b254f403d498b9152fa7bc097d649c50cb318d278c2be644e92cc
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
PKG_LICENSE:=MPL-2.0
/etc/config/xray
endef
-GEOIP_VER:=202103250007
+GEOIP_VER:=202104010913
GEOIP_FILE:=geoip.dat.$(GEOIP_VER)
define Download/geoip
URL:=https://github.com/v2fly/geoip/releases/download/$(GEOIP_VER)/
URL_FILE:=geoip.dat
FILE:=$(GEOIP_FILE)
- HASH:=eca0b25e528167dbdec6c130b6a5240284ce20b28158d1448f8dbeddace2e8cf
+ HASH:=f94e464f7f37e6f3c88c2aa5454ab02a4b840bc44c75c5001719a618916906cf
endef
-GEOSITE_VER:=20210330120529
+GEOSITE_VER:=20210401091829
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
define Download/geosite
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
URL_FILE:=dlc.dat
FILE:=$(GEOSITE_FILE)
- HASH:=e7f41feadae73854a2e2103aa5e09f3e8d6ed924391e3963d3b1a67ef61d6ad2
+ HASH:=ee9778dc00b703905ca1f400ad13dd462eae52c5aee6465f0a7543b0232c9d08
endef
define Build/Prepare
option confdir '/etc/xray'
list conffiles '/etc/xray/config.json'
option datadir '/usr/share/xray'
+ option dialer ''
option format 'json'
local confdir
local conffiles
local datadir
+ local dialer
local format
local fullcone
config_get confdir "config" "confdir"
config_get conffiles "config" "conffiles"
config_get datadir "config" "datadir" "/usr/share/xray"
+ config_get dialer "config" "dialer"
config_get format "config" "format" "json"
config_get fullcone "enabled" "fullcone" "0"
procd_append_param command -config "$i"
done
}
- procd_append_param command -format "$format"
+ [ -n "$format" ] && procd_append_param command -format "$format"
+ [ -n "$dialer" ] && procd_set_param env XRAY_BROWSER_DIALER="$dialer"
[ "$fullcone" -eq "0" ] && procd_set_param env XRAY_CONE_DISABLED="true"
procd_set_param env XRAY_LOCATION_ASSET="$datadir"
procd_set_param file $conffiles
include $(TOPDIR)/rules.mk
PKG_NAME:=yggdrasil
-PKG_VERSION:=0.3.15
+PKG_VERSION:=0.3.16
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/yggdrasil-network/yggdrasil-go/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=25ea85399a142aa7a3d6f6886fd4e0d215116c4c8c33453de43999787d735565
+PKG_HASH:=e03595b78906b171155aaa11c922be3418bd056f8547e4d9f5123b6047316eac
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-go-$(PKG_VERSION)
PKG_MAINTAINER:=William Fleurant <meshnet@protonmail.com>
PKG_NAME:=pulseaudio
PKG_VERSION:=14.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://freedesktop.org/software/pulseaudio/releases
--- /dev/null
+--- a/meson.build
++++ b/meson.build
+@@ -698,7 +698,6 @@ check_dep = dependency('check', version
+
+ # Subdirs
+
+-subdir('doxygen')
+ subdir('po')
+ if get_option('man')
+ subdir('man')
include $(TOPDIR)/rules.mk
PKG_NAME:=upmpdcli
-PKG_VERSION:=1.5.9
+PKG_VERSION:=1.5.11
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.lesbonscomptes.com/upmpdcli/downloads
-PKG_HASH:=9fda0b59db8a8b4f283333a89dcca19d70fb8820286d3d071b7c80de38eb7116
+PKG_HASH:=7c8c6ab866114699405223c60457448dcce35fc13e1e374f68b60eefc55f4f04
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
PKG_NAME:=atheepmgr
PKG_VERSION:=2.1.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_VERSION:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_PROTO:=git
MAKE_VARS += \
OS=Linux \
- HAVE_LIBPCIACCESS=n \
+ CONFIG_CON_PCI=n \
CONFIG_I_KNOW_WHAT_I_AM_DOING=$(CONFIG_ATHEEPMGR_DANGEROUS_FUNCTIONS) \
define Package/atheepmgr/install
+++ /dev/null
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=autopart
-PKG_VERSION:=0.1
-PKG_RELEASE:=$(AUTORELEASE)
-
-PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
-PKG_LICENSE:=GPL-2.0-or-later
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/autopart
- SECTION:=utils
- CATEGORY:=Utilities
- SUBMENU:=Disc
- TITLE:=Automatically initialize LVM partition
- DEPENDS:=+lvm2 +partx-utils +sfdisk
- PKGARCH=all
-endef
-
-define Package/autopart/description
- Automatically allocate the GPT partition for LVM and initialize it
- on first boot.
-endef
-
-define Build/Prepare
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-endef
-
-define Package/autopart/install
- $(INSTALL_DIR) $(1)/etc/uci-defaults
- $(INSTALL_BIN) ./files/autopart $(1)/etc/uci-defaults/30-autopart
-endef
-
-$(eval $(call BuildPackage,autopart))
+++ /dev/null
-#!/bin/sh
-
-. /lib/functions.sh
-. /lib/upgrade/common.sh
-
-OWRT_VOLUMES=owrt-volumes
-
-part_fixup() {
- echo "write" | sfdisk --force -q -w never $1
-}
-
-get_free_area() {
- local found=
- sfdisk -q -F "$1" 2>/dev/null | while read start end sectors size; do
- case $start in
- *"Unpartitioned"* | *"Units:"* | *"Sector"* | *"Start"* )
- continue
- ;;
- [0-9]*)
- case "$size" in
- *"M")
- [ "${size%%M}" -lt 100 ] && continue
- ;;
- *"G" | *"T")
- ;;
- *"k" | *"b")
- continue
- ;;
- esac
- [ "$found" ] || echo "start=$start, size=$((end - start))"
- found=1
- ;;
- esac
- done
-}
-
-create_lvm_part() {
- local disk=$1
- local freepart
-
- freepart="$(get_free_area $disk)"
- if [ "$freepart" ]; then
- echo "$freepart, type=lvm, name=$OWRT_VOLUMES" | sfdisk --force -w never -a $disk
- partx -a $disk 1>/dev/null 2>/dev/null || true
- return 0
- else
- return 1
- fi
-}
-
-lvm_init() {
- lvm pvcreate -f $1
- lvm vgcreate "$2" $1
- lvm vgs
-}
-
-autopart_init() {
- local diskdev
- local lvmpart
- local diskserial
-
- export_bootdevice && export_partdevice diskdev 0
-
- [ "$diskdev" ] || return
-
- [ -e "/sys/class/block/$diskdev/device/serial" ] && diskserial=$(cat /sys/class/block/$diskdev/device/serial)
-
- part_fixup /dev/$diskdev
- create_lvm_part /dev/$diskdev || return
- lvmpart=$(get_partition_by_name $diskdev $OWRT_VOLUMES)
-
- [ "$lvmpart" ] || return
- lvm_init /dev/$lvmpart "${OWRT_VOLUMES}${diskserial}"
-}
-
-autopart_init
-exit 0
PKG_NAME:=bash
PKG_VERSION:=5.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/bash
--- /dev/null
+--- a/lib/sh/strtod.c
++++ b/lib/sh/strtod.c
+@@ -41,6 +41,8 @@ extern int errno;
+
+ #include <bashansi.h>
+
++#include <stdc.h>
++
+ #ifndef NULL
+ # define NULL 0
+ #endif
include $(TOPDIR)/rules.mk
PKG_NAME:=cache-domains
-PKG_VERSION:=2.2.0
+PKG_VERSION:=2.2.1
PKG_RELEASE:=1
PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
CACHE_DOMAINS_SRC="https://api.github.com/repos/uklans/cache-domains/tarball/master"
CACHE_DOMAINS_DIR="/var/cache-domains"
-CACHE_DOMAINS_HOSTS_DIR="${CACHE_DOMAINS_DIR}/scripts/output/dnsmasq"
+CACHE_DOMAINS_HOSTS_DIR="${CACHE_DOMAINS_DIR}/scripts/output/dnsmasq/hosts"
CONFIG_FILE="/etc/cache-domains.json"
uci_changes() {
INITIAL_DIR="$(pwd)"
cd "${CACHE_DOMAINS_DIR}/scripts/"
cp "${CONFIG_FILE}" "config.json"
- ./create-dnsmasq.sh
- rm "config.json" "${CACHE_DOMAINS_HOSTS_DIR}/lancache.conf"
+ ./create-dnsmasq.sh > /dev/null
+ rm "config.json" "${CACHE_DOMAINS_HOSTS_DIR}/../lancache.conf"
cd "${INITIAL_DIR}"
while uci_get "dhcp" "@dnsmasq[${I}]" > /dev/null; do
PKG_NAME:=collectd
PKG_VERSION:=5.12.0
-PKG_RELEASE:=8
+PKG_RELEASE:=9
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://collectd.org/files/ \
$(eval $(call BuildPlugin,conntrack,connection tracking table size input,conntrack,))
$(eval $(call BuildPlugin,contextswitch,context switch input,contextswitch,))
$(eval $(call BuildPlugin,cpu,CPU input,cpu,))
-$(eval $(call BuildPlugin,cpufreq,CPU Freq input,cpufreq,@(TARGET_x86||TARGET_x86_64||TARGET_mvebu||TARGET_ipq806x||TARGET_armvirt||TARGET_ipq40xx||TARGET_bcm27xx_bcm2709))) # Only enable on targets with CPUs supporting frequency scaling
+$(eval $(call BuildPlugin,cpufreq,CPU Freq input,cpufreq,@(TARGET_x86||TARGET_x86_64||TARGET_mvebu||TARGET_ipq806x||TARGET_armvirt||TARGET_ipq40xx||TARGET_bcm27xx_bcm2709||TARGET_rockchip))) # Only enable on targets with CPUs supporting frequency scaling
$(eval $(call BuildPlugin,csv,CSV output,csv,))
$(eval $(call BuildPlugin,curl,cURL input,curl,+PACKAGE_collectd-mod-curl:libcurl))
#$(eval $(call BuildPlugin,dbi,relational database input,dbi,+PACKAGE_collectd-mod-dbi:libdbi))
--- /dev/null
+--- a/src/ubi.c
++++ b/src/ubi.c
+@@ -84,9 +84,8 @@ static void ubi_submit(const char *dev_n
+ plugin_dispatch_values(&vl);
+ } /* void ubi_submit */
+
+-static int ubi_read_dev_attr(const char *dev_name, const char *attr) {
++static int ubi_read_dev_attr(const char *dev_name, const char *attr, int *value) {
+ FILE *f;
+- int val;
+ char
+ str[sizeof(SYS_PATH) + strlen(dev_name) + sizeof("/") + strlen(attr) + 1];
+ int n;
+@@ -98,7 +97,7 @@ static int ubi_read_dev_attr(const char
+ return -1;
+ }
+
+- n = fscanf(f, "%d", &val);
++ n = fscanf(f, "%d", value);
+ fclose(f);
+
+ if (n != 1) {
+@@ -106,17 +105,39 @@ static int ubi_read_dev_attr(const char
+ return -1;
+ }
+
+- ubi_submit(dev_name, attr, (gauge_t)val);
+-
+ return 0;
+ } /* int ubi_read_dev_attr */
+
+ static inline int ubi_read_dev_bad_count(const char *dev_name) {
+- return ubi_read_dev_attr(dev_name, DEV_BAD_COUNT);
++ int ret;
++ int value;
++
++ ret = ubi_read_dev_attr(dev_name, DEV_BAD_COUNT, &value);
++
++ if (ret != 0) {
++ ERROR(PLUGIN_NAME " : Unable to read bat_peb_count");
++ return -1;
++ }
++
++ ubi_submit(dev_name, DEV_BAD_COUNT, (gauge_t)value);
++
++ return 0;
+ } /* int ubi_read_dev_bad_count */
+
+ static inline int ubi_read_max_ec(const char *dev_name) {
+- return ubi_read_dev_attr(dev_name, MAXIMUM_ERASE);
++ int ret;
++ int value;
++
++ ret = ubi_read_dev_attr(dev_name, MAXIMUM_ERASE, &value);
++
++ if (ret != 0) {
++ ERROR(PLUGIN_NAME " : Unable to read max_ec");
++ return -1;
++ }
++
++ ubi_submit(dev_name, MAXIMUM_ERASE, (gauge_t)value);
++
++ return 0;
+ } /* int ubi_read_max_ec */
+
+ static int ubi_read(void) {
--- /dev/null
+--- a/src/ubi.c
++++ b/src/ubi.c
+@@ -35,6 +35,9 @@
+ #define DEV_BAD_COUNT \
+ "bad_peb_count" // Count of bad physical eraseblocks on the underlying MTD
+ // device.
++// Value reserved for bad block
++#define DEV_RESERVED_BAD_BLOCK "reserved_for_bad"
++
+ #define MAXIMUM_ERASE "max_ec" // Current maximum erase counter value
+
+ /*
+@@ -140,6 +143,35 @@ static inline int ubi_read_max_ec(const
+ return 0;
+ } /* int ubi_read_max_ec */
+
++static inline int ubi_read_percent(const char *dev_name) {
++ int ret;
++ int bcount;
++ int bblock;
++
++ ret = ubi_read_dev_attr(dev_name, DEV_BAD_COUNT, &bcount);
++
++ if (ret != 0) {
++ ERROR(PLUGIN_NAME " : Unable to read bad_peb_count");
++ return -1;
++ }
++
++ ret = ubi_read_dev_attr(dev_name, DEV_RESERVED_BAD_BLOCK, &bblock);
++
++ if (ret != 0) {
++ ERROR(PLUGIN_NAME " : Unable to read reserved_for_bad");
++ return -1;
++ }
++
++ if (bblock == 0) {
++ ERROR(PLUGIN_NAME " : Percentage value cannot be determined (reserved_for_bad = 0)");
++ return -2;
++ }
++
++ ubi_submit(dev_name, "percent", (gauge_t)((float_t)bcount / (float_t)bblock * 100.0));
++
++ return 0;
++} /* int ubi_read_percent */
++
+ static int ubi_read(void) {
+ DIR *dir;
+ struct dirent *dirent;
+@@ -155,6 +187,7 @@ static int ubi_read(void) {
+
+ ubi_read_dev_bad_count(dirent->d_name);
+ ubi_read_max_ec(dirent->d_name);
++ ubi_read_percent(dirent->d_name);
+ }
+
+ closedir(dir);
CATEGORY:=Utilities
TITLE:=crun
URL:=https://github.com/containers/crun
- DEPENDS:=+libseccomp +libcap
+ DEPENDS:=@!arc +libseccomp +libcap
endef
define Package/crun/description
include $(TOPDIR)/rules.mk
PKG_NAME:=dbus
-PKG_VERSION:=1.13.12
-PKG_RELEASE:=1
+PKG_VERSION:=1.13.18
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://dbus.freedesktop.org/releases/dbus
-PKG_HASH:=7588649b56dd257c6a5f85a8c45aa2dfdf9e99f4de3983710f452081ca43eca6
+PKG_HASH:=8078f5c25e34ab907ce06905d969dc8ef0ccbec367e1e1707c7ecf8460f4254e
PKG_MAINTAINER:=
PKG_LICENSE:=AFL-2.1
PKG_CPE_ID:=cpe:/a:freedesktop:dbus
-PKG_BUILD_PARALLEL:=1
-PKG_INSTALL:=1
-
include $(INCLUDE_DIR)/package.mk
+include ../../devel/ninja/ninja-cmake.mk
define Package/dbus/Default
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Simple interprocess messaging system
- URL:=http://dbus.freedesktop.org/
+ URL:=https://dbus.freedesktop.org/
endef
define Package/dbus/Default/description
This package contains D-Bus utilities.
endef
-CONFIGURE_ARGS += \
- --disable-maintainer-mode \
- --disable-developer \
- --enable-debug=no \
- --enable-shared \
- --disable-static \
- --disable-verbose-mode \
- --disable-asserts \
- --disable-xml-docs \
- --disable-doxygen-docs \
- --disable-ducktype-docs \
- --disable-selinux \
- --disable-apparmor \
- --disable-libaudit \
- --enable-inotify \
- --disable-kqueue \
- --disable-console-owner-file \
- --disable-systemd \
- --disable-tests \
- --disable-code-coverage \
- --disable-x11-autolaunch \
- --with-session-socket-dir=/tmp \
- --with-system-socket=/var/run/dbus/system_bus_socket \
- --with-system-pid-file=/var/run/dbus.pid \
- --with-dbus-user=root \
- --without-x
+CMAKE_OPTIONS += \
+ -DDBUS_BUILD_TESTS=OFF \
+ -DDBUS_LINUX=ON \
+ -DDBUS_DISABLE_ASSERT=ON \
+ -DBUS_ENABLE_STATS=OFF \
+ -DDBUS_ENABLE_CONTAINERS=OFF \
+ -DENABLE_SYSTEMD=OFF \
+ -DDBUS_BUS_ENABLE_SYSTEMD=OFF \
+ -DHAVE_SYSTEMD=OFF \
+ -DDBUS_WITH_GLIB=OFF \
+ -DDBUS_ENABLE_VERBOSE_MODE=OFF \
+ -DDBUS_DISABLE_CHECKS=ON \
+ -DDBUS_BUILD_X11=OFF \
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(PKG_INSTALL_DIR)/usr/lib/dbus-1.0/include/dbus/*.h \
$(1)/usr/lib/dbus-1.0/include/dbus/
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libdbus-1.{so*,la} \
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libdbus-1.so* \
$(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/dbus-1.0 $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dbus-uuidgen $(1)/usr/bin/
$(INSTALL_BIN) ./files/dbus-launch $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/dbus-daemon-launch-helper $(1)/usr/lib/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/dbus-daemon-launch-helper $(1)/usr/lib/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/dbus.init $(1)/etc/init.d/dbus
$(INSTALL_DIR) $(1)/usr/share/dbus-1
include $(TOPDIR)/rules.mk
PKG_NAME:=docker-compose
-PKG_VERSION:=1.28.6
+PKG_VERSION:=1.29.1
PKG_RELEASE:=1
PYPI_NAME:=docker-compose
-PKG_HASH:=1d44906f7ab738ba2d1785130ed31b16111eee6dc5a1dbd7252091dae48c5281
+PKG_HASH:=d2064934f5084db8a0c4805e226447bf1fd0c928419be95afb6bd1866838c1f1
PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
PKG_LICENSE:=Apache-2.0
endef
-define Package/libdevmapper-normal
+define Package/libdevmapper
$(call Package/libdevmapper/Default)
VARIANT := normal
- PROVIDES := libdevmapper
endef
define Package/libdevmapper-selinux
PROVIDES := libdevmapper
endef
-define Package/libdevmapper-normal/description
+define Package/libdevmapper/description
The device-mapper is a component of the 2.6 linux kernel that supports logical
volume management. It is required by LVM2 and EVMS.
endef
define Package/libdevmapper-selinux/description
-$(call Package/libdevmapper-normal/description)
+$(call Package/libdevmapper/description)
This variant supports SELinux
endef
DEPENDS:=+libreadline +libncurses +libaio
endef
-define Package/lvm2-normal
+define Package/lvm2
$(call Package/lvm2/default)
VARIANT := normal
- DEPENDS += +libdevmapper-normal
- PROVIDES := lvm2
+ DEPENDS += +libdevmapper
endef
define Package/lvm2-selinux
PROVIDES := lvm2
endef
-define Package/lvm2-normal/description
+define Package/lvm2/description
LVM2 refers to a new userspace toolset that provide logical volume management
facilities on linux. It is reasonably backwards-compatible with the original
LVM toolset.
endef
define Package/lvm2-selinux/description
-$(call Package/lvm2-normal/description)
+$(call Package/lvm2/description)
This variant supports SELinux
endef
$(CP) $(PKG_BUILD_DIR)/libdm/libdevmapper.pc $(1)/usr/lib/pkgconfig
endef
-define Package/libdevmapper-normal/install
+define Package/libdevmapper/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libdevmapper.so.* $(1)/usr/lib
endef
-Package/libdevmapper-selinux/install = $(Package/libdevmapper-normal/install)
+Package/libdevmapper-selinux/install = $(Package/libdevmapper/install)
-define Package/lvm2-normal/install
+define Package/lvm2/install
$(INSTALL_DIR) $(1)/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/lvm $(1)/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dmsetup $(1)/sbin
$(FIND) $(PKG_INSTALL_DIR)/usr/sbin/ -type l -exec $(CP) -a {} $(1)/sbin/ \;
endef
-Package/lvm2-selinux/install = $(Package/lvm2-normal/install)
+Package/lvm2-selinux/install = $(Package/lvm2/install)
-define Package/lvm2-normal/conffiles
+define Package/lvm2/conffiles
/etc/lvm/lvm.conf
endef
Package/lvm2-selinux/conffiles = $(Package/lvm2/conffiles)
-$(eval $(call BuildPackage,libdevmapper-normal))
+$(eval $(call BuildPackage,libdevmapper))
$(eval $(call BuildPackage,libdevmapper-selinux))
-$(eval $(call BuildPackage,lvm2-normal))
+$(eval $(call BuildPackage,lvm2))
$(eval $(call BuildPackage,lvm2-selinux))
include $(TOPDIR)/rules.mk
PKG_NAME:=stm32flash
-PKG_VERSION:=0.5
-PKG_RELEASE:=3
+PKG_VERSION:=0.6
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_HASH:=97aa9422ef02e82f7da9039329e21a437decf972cb3919ad817f70ac9a49e306
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
+PKG_HASH:=ee9b40d4d3e5cd28b993e08ae2a2c3c559b6bea8730cd7e1d40727dedb1dda09
+
PKG_MAINTAINER:=Christian Pointner <equinox@spreadspace.org>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=gpl-2.0.txt
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
include $(INCLUDE_DIR)/package.mk
define Package/stm32flash
define Package/stm32flash/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/stm32flash $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/stm32flash $(1)/usr/bin/
endef
$(eval $(call BuildPackage,stm32flash))
+++ /dev/null
---- a/dev_table.c
-+++ b/dev_table.c
-@@ -90,6 +90,8 @@ const stm32_dev_t devices[] = {
- {0x434, "STM32F469xx" , 0x20003000, 0x20060000, 0x08000000, 0x08200000, 1, f4db , 0x1FFEC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0},
- /* F7 */
- {0x449, "STM32F74xxx/75xxx" , 0x20004000, 0x20050000, 0x08000000, 0x08100000, 1, f7 , 0x1FFF0000, 0x1FFF001F, 0x1FF00000, 0x1FF0EDC0, 0},
-+ /* G4 */
-+ {0x468, "STM32G431xx/441xx" , 0x20000000, 0x20004000, 0x08000000, 0x08020000, 1, p_2k , 0x1FFF7800, 0x1FFF780F, 0x1FFF0000, 0x1FFF7000, 0},
- /* L0 */
- {0x425, "STM32L031xx/041xx" , 0x20001000, 0x20002000, 0x08000000, 0x08008000, 32, p_128 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, 0},
- {0x417, "STM32L05xxx/06xxx" , 0x20001000, 0x20002000, 0x08000000, 0x08010000, 32, p_128 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, 0},
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=uvol
+PKG_VERSION:=0.2
+PKG_RELEASE:=$(AUTORELEASE)
+
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+PKG_LICENSE:=GPL-2.0-or-later
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/autopart
+ SECTION:=utils
+ CATEGORY:=Utilities
+ SUBMENU:=Disc
+ TITLE:=Automatically initialize LVM partition
+ DEPENDS:=+lvm2 +partx-utils +sfdisk
+ PKGARCH=all
+endef
+
+define Package/autopart/description
+ Automatically allocate the GPT partition for LVM and initialize it
+ on first boot.
+endef
+
+define Package/uvol
+ SECTION:=utils
+ CATEGORY:=Utilities
+ SUBMENU:=Disc
+ TITLE:=OpenWrt UBI/LVM volume abstraction
+ PKGARCH=all
+endef
+
+define Package/uvol/description
+ 'uvol' is tool to automate storage volume handling on embedded
+ devices in a generic way.
+ Also install the 'autopart' package to easily make use of 'uvol' on
+ block-storage based devices.
+
+ Examples:
+ uvol create example_volume_1 256MiB rw
+ uvol up example_volume_1
+ uvol device example_volume_1
+
+ uvol create example_volume_2 9812733 ro
+ cat example_volume_2.squashfs | uvol write example_volume_2 9812733
+ uvol up example_volume_2
+ uvol device example_volume_2
+endef
+
+define Build/Prepare
+endef
+
+define Build/Configure
+endef
+
+define Build/Compile
+endef
+
+define Package/autopart/install
+ $(INSTALL_DIR) $(1)/etc/uci-defaults
+ $(INSTALL_BIN) ./files/autopart.defaults $(1)/etc/uci-defaults/30-autopart
+endef
+
+define Package/uvol/install
+ $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/libexec/uvol
+ $(INSTALL_BIN) ./files/uvol $(1)/usr/sbin
+ $(INSTALL_BIN) ./files/ubi.sh $(1)/usr/libexec/uvol/20-ubi.sh
+ $(INSTALL_BIN) ./files/lvm.sh $(1)/usr/libexec/uvol/50-lvm.sh
+endef
+
+$(eval $(call BuildPackage,autopart))
+$(eval $(call BuildPackage,uvol))
--- /dev/null
+#!/bin/sh
+
+. /lib/functions.sh
+. /lib/upgrade/common.sh
+
+OWRT_VOLUMES=owrt-volumes
+
+part_fixup() {
+ echo "write" | sfdisk --force -q -w never $1
+}
+
+get_free_area() {
+ local found=
+ sfdisk -q -F "$1" 2>/dev/null | while read start end sectors size; do
+ case $start in
+ *"Unpartitioned"* | *"Units:"* | *"Sector"* | *"Start"* )
+ continue
+ ;;
+ [0-9]*)
+ case "$size" in
+ *"M")
+ [ "${size%%M}" -lt 100 ] && continue
+ ;;
+ *"G" | *"T")
+ ;;
+ *"k" | *"b")
+ continue
+ ;;
+ esac
+ [ "$found" ] || echo "start=$start, size=$((end - start))"
+ found=1
+ ;;
+ esac
+ done
+}
+
+create_lvm_part() {
+ local disk=$1
+ local freepart
+
+ freepart="$(get_free_area $disk)"
+ if [ "$freepart" ]; then
+ echo "$freepart, type=lvm, name=$OWRT_VOLUMES" | sfdisk --force -w never -a $disk
+ partx -a $disk 1>/dev/null 2>/dev/null || true
+ return 0
+ else
+ return 1
+ fi
+}
+
+lvm_init() {
+ lvm pvcreate -f $1
+ lvm vgcreate "$2" $1
+ lvm vgs
+}
+
+autopart_init() {
+ local diskdev
+ local lvmpart
+ local diskserial
+
+ export_bootdevice && export_partdevice diskdev 0
+
+ [ "$diskdev" ] || return
+
+ [ -e "/sys/class/block/$diskdev/device/serial" ] && diskserial=$(cat /sys/class/block/$diskdev/device/serial)
+
+ part_fixup /dev/$diskdev
+ create_lvm_part /dev/$diskdev || return
+ lvmpart=$(get_partition_by_name $diskdev $OWRT_VOLUMES)
+
+ [ "$lvmpart" ] || return
+ lvm_init /dev/$lvmpart "${OWRT_VOLUMES}${diskserial:+-${diskserial:2}}"
+}
+
+autopart_init
+exit 0
--- /dev/null
+#!/bin/sh
+
+cmd="$1"
+shift
+
+if [ "$cmd" = "name" ]; then
+ echo "LVM"
+ return 0
+fi
+
+command -v lvm >/dev/null || return 1
+
+. /lib/functions.sh
+. /lib/upgrade/common.sh
+. /usr/share/libubox/jshn.sh
+
+export_bootdevice
+[ "$BOOTDEV_MAJOR" ] || return 1
+export_partdevice rootdev 0
+[ "$rootdev" ] || return 1
+
+case "$rootdev" in
+ mtd*|\
+ ram*|\
+ ubi*)
+ return 1
+esac
+
+lvm_cmd() {
+ local cmd="$1"
+ shift
+ LVM_SUPPRESS_FD_WARNINGS=1 lvm "$cmd" "$@"
+}
+
+pvs() {
+ lvm_cmd pvs --reportformat json --units b "$@"
+}
+
+vgs() {
+ lvm_cmd vgs --reportformat json --units b "$@"
+}
+
+lvs() {
+ lvm_cmd lvs --reportformat json --units b "$@"
+}
+
+freebytes() {
+ echo $(($vg_free_count * $vg_extent_size * 1024))
+}
+
+totalbytes() {
+ echo $(($vg_extent_count * $vg_extent_size * 1024))
+}
+
+existvol() {
+ [ "$1" ] || return 1
+ test -e "/dev/$vg_name/ro_$1" || test -e "/dev/$vg_name/rw_$1"
+ return $?
+}
+
+vg_name=
+exportpv() {
+ local reports rep pv pvs
+ vg_name=
+ json_init
+ json_load "$(pvs -o vg_name -S "pv_name=~^/dev/$rootdev.*\$")"
+ json_select report
+ json_get_keys reports
+ for rep in $reports; do
+ json_select "$rep"
+ json_select pv
+ json_get_keys pvs
+ for pv in $pvs; do
+ json_select "$pv"
+ json_get_vars vg_name
+ json_select ..
+ break
+ done
+ json_select ..
+ break
+ done
+}
+
+vg_extent_size=
+vg_extent_count=
+vg_free_count=
+exportvg() {
+ local reports rep vg vgs
+ vg_extent_size=
+ vg_extent_count=
+ vg_free_count=
+ json_init
+ json_load "$(vgs -o vg_extent_size,vg_extent_count,vg_free_count -S "vg_name=$vg_name")"
+ json_select report
+ json_get_keys reports
+ for rep in $reports; do
+ json_select "$rep"
+ json_select vg
+ json_get_keys vgs
+ for vg in $vgs; do
+ json_select "$vg"
+ json_get_vars vg_extent_size vg_extent_count vg_free_count
+ vg_extent_size=${vg_extent_size%B}
+ json_select ..
+ break
+ done
+ json_select ..
+ break
+ done
+}
+
+lv_full_name=
+lv_path=
+lv_dm_path=
+lv_size=
+exportlv() {
+ local reports rep lv lvs
+ lv_full_name=
+ lv_path=
+ lv_dm_path=
+ lv_size=
+ json_init
+
+ json_load "$(lvs -o lv_full_name,lv_size,lv_path,lv_dm_path -S "lv_name=~^[rw][ow]_$1\$ && vg_name=$vg_name")"
+ json_select report
+ json_get_keys reports
+ for rep in $reports; do
+ json_select "$rep"
+ json_select lv
+ json_get_keys lvs
+ for lv in $lvs; do
+ json_select "$lv"
+ json_get_vars lv_full_name lv_size lv_path lv_dm_path
+ lv_size=${lv_size%B}
+ json_select ..
+ break
+ done
+ json_select ..
+ break
+ done
+}
+
+getdev() {
+ existvol "$1" || return 1
+ exportlv "$1"
+ echo $lv_dm_path
+}
+
+getsize() {
+ exportlv "$1"
+ [ "$lv_size" ] && echo $lv_size
+}
+
+activatevol() {
+ exportlv "$1"
+ case "$lv_path" in
+ /dev/*/wo_*)
+ return 22
+ ;;
+ *)
+ lvm_cmd lvchange -a y "$lv_full_name"
+ return 0
+ ;;
+ esac
+}
+
+disactivatevol() {
+ exportlv "$1"
+ lvm_cmd lvchange -a n "$lv_full_name"
+}
+
+getstatus() {
+ exportlv "$1"
+ [ "$lv_full_name" ] || return 2
+ existvol "$1" || return 1
+ return 0
+}
+
+createvol() {
+ local mode lvmode ret
+ local volsize=$(($2))
+ [ "$volsize" ] || return 22
+ exportlv "$1"
+ [ "$lv_size" ] && return 17
+ size_ext=$((volsize / vg_extent_size))
+ [ $((size_ext * vg_extent_size)) -lt $volsize ] && size_ext=$((size_ext + 1))
+
+ case "$3" in
+ ro|wo)
+ lvmode=r
+ mode=wo
+ ;;
+ rw)
+ lvmode=rw
+ mode=rw
+ ;;
+ *)
+ return 22
+ ;;
+ esac
+
+ lvm_cmd lvcreate -p $lvmode -a n -y -W n -Z n -n "${mode}_${1}" -l "$size_ext" $vg_name
+ ret=$?
+ if [ ! $ret -eq 0 ] || [ "$lvmode" = "r" ]; then
+ return $ret
+ fi
+ exportlv "$1"
+ [ "$lv_full_name" ] || return 22
+ lvm_cmd lvchange -a y "$lv_full_name" || return 1
+ if [ $lv_size -gt $(( 100 * 1024 * 1024 )) ]; then
+ mkfs.f2fs -f -l "$1" "$lv_path" || return 1
+ else
+ mke2fs -F -L "$1" "$lv_path" || return 1
+ fi
+ return 0
+}
+
+removevol() {
+ exportlv "$1"
+ [ "$lv_full_name" ] || return 2
+ lvm_cmd lvremove -y "$lv_full_name"
+}
+
+updatevol() {
+ exportlv "$1"
+ [ "$lv_full_name" ] || return 2
+ [ $lv_size -ge $2 ] || return 27
+ case "$lv_path" in
+ /dev/*/wo_*)
+ lvm_cmd lvchange -a y -p rw "$lv_full_name"
+ dd of=$lv_path
+ lvm_cmd lvchange -p r "$lv_full_name"
+ lvm_cmd lvrename "$lv_full_name" "${lv_full_name%%/*}/ro_$1"
+ return 0
+ ;;
+ default)
+ return 22
+ ;;
+ esac
+}
+
+listvols() {
+ local reports rep lv lvs lv_name lv_size lv_mode volname
+ volname=${1:-.*}
+ json_init
+ json_load "$(lvs -o lv_name,lv_size -S "lv_name=~^[rw][ow]_$volname\$ && vg_name=$vg_name")"
+ json_select report
+ json_get_keys reports
+ for rep in $reports; do
+ json_select "$rep"
+ json_select lv
+ json_get_keys lvs
+ for lv in $lvs; do
+ json_select "$lv"
+ json_get_vars lv_name lv_size
+ lv_mode="${lv_name:0:2}"
+ lv_name="${lv_name:3}"
+ lv_size=${lv_size%B}
+ echo "$lv_name $lv_mode $lv_size"
+ json_select ..
+ done
+ json_select ..
+ break
+ done
+}
+
+exportpv
+exportvg
+
+case "$cmd" in
+ align)
+ echo "$vg_extent_size"
+ ;;
+ free)
+ freebytes
+ ;;
+ total)
+ totalbytes
+ ;;
+ list)
+ listvols "$@"
+ ;;
+ create)
+ createvol "$@"
+ ;;
+ remove)
+ removevol "$@"
+ ;;
+ device)
+ getdev "$@"
+ ;;
+ size)
+ getsize "$@"
+ ;;
+ up)
+ activatevol "$@"
+ ;;
+ down)
+ disactivatevol "$@"
+ ;;
+ status)
+ getstatus "$@"
+ ;;
+ write)
+ updatevol "$@"
+ ;;
+ *)
+ echo "unknown command"
+ return 1
+ ;;
+esac
--- /dev/null
+#!/bin/sh
+
+cmd="$1"
+shift
+
+if [ "$cmd" = "name" ]; then
+ echo "UBI"
+ return 0
+fi
+
+test -e /sys/class/ubi/version || return 0
+read ubiver < /sys/class/ubi/version
+[ "$ubiver" = "1" ] || return 1
+test -e /sys/devices/virtual/ubi || return 0
+
+ubidev=$(ls -1 /sys/devices/virtual/ubi | head -n 1)
+
+read ebsize < "/sys/devices/virtual/ubi/${ubidev}/eraseblock_size"
+
+freebytes() {
+ read availeb < "/sys/devices/virtual/ubi/${ubidev}/avail_eraseblocks"
+ echo $((availeb * ebsize))
+}
+
+totalbytes() {
+ read totaleb < "/sys/devices/virtual/ubi/${ubidev}/total_eraseblocks"
+ echo $((totaleb * ebsize))
+}
+
+getdev() {
+ local voldir volname devname
+ for voldir in /sys/devices/virtual/ubi/${ubidev}/${ubidev}_*; do
+ read volname < "${voldir}/name"
+ [ "$volname" = "uvol-ro-$1" ] || [ "$volname" = "uvol-wp-$1" ] || [ "$volname" = "uvol-rw-$1" ] || [ "$volname" = "uvol-wo-$1" ] || continue
+ basename "$voldir"
+ done
+}
+
+vol_is_mode() {
+ local voldev="$1"
+ local volname
+ read volname < "/sys/devices/virtual/ubi/${ubidev}/${voldev}/name"
+ case "$volname" in
+ uvol-$2-*)
+ return 0
+ ;;
+ esac
+ return 1
+}
+
+getstatus() {
+ local voldev=$(getdev "$@")
+ [ "$voldev" ] || return 2
+ vol_is_mode $voldev wo && return 1
+ vol_is_mode $voldev ro && [ ! -e "/dev/ubiblock${voldev:3}" ] && return 1
+ return 0
+}
+
+getsize() {
+ local voldev
+ voldev=$(getdev "$@")
+ [ "$voldev" ] || return 2
+ cat /sys/devices/virtual/ubi/${ubidev}/${voldev}/data_bytes
+}
+
+getuserdev() {
+ local voldev=$(getdev "$@")
+ [ "$voldev" ] || return 2
+ if vol_is_mode $voldev ro ; then
+ echo "/dev/ubiblock${voldev:3}"
+ elif vol_is_mode $voldev rw ; then
+ echo "/dev/$voldev"
+ fi
+}
+
+createvol() {
+ local mode ret
+ local existdev=$(getdev "$@")
+ [ "$existdev" ] && return 17
+ case "$3" in
+ ro|wo)
+ mode=wo
+ ;;
+ rw)
+ mode=wp
+ ;;
+ *)
+ return 22
+ ;;
+ esac
+ ubimkvol /dev/$ubidev -N "uvol-$mode-$1" -s "$2"
+ ret=$?
+ [ $ret -eq 0 ] || return $ret
+ ubiupdatevol -t /dev/$(getdev "$@")
+ [ "$mode" = "wp" ] || return 0
+ local tmp_mp=$(mktemp -d)
+ mount -t ubifs /dev/$(getdev "$@") $tmp_mp
+ umount $tmp_mp
+ rmdir $tmp_mp
+ ubirename /dev/$ubidev uvol-wp-$1 uvol-rw-$1
+}
+
+removevol() {
+ local voldev=$(getdev "$@")
+ [ "$voldev" ] || return 2
+ local volnum=${voldev#${ubidev}_}
+ ubirmvol /dev/$ubidev -n $volnum
+}
+
+activatevol() {
+ local voldev=$(getdev "$@")
+ [ "$voldev" ] || return 2
+ vol_is_mode $voldev wo || return 1
+ vol_is_mode $voldev ro || return 0
+ [ -e "/dev/ubiblock${voldev:3}" ] && return 0
+ ubiblock --create /dev/$voldev
+}
+
+disactivatevol() {
+ local voldev=$(getdev "$@")
+ [ "$voldev" ] || return 2
+ vol_is_mode $voldev ro || return 0
+ [ -e "/dev/ubiblock${voldev:3}" ] || return 0
+ ubiblock --remove /dev/$voldev
+}
+
+updatevol() {
+ local voldev=$(getdev "$@")
+ [ "$voldev" ] || return 2
+ [ "$2" ] || return 22
+ vol_is_mode $voldev wo || return 22
+ ubiupdatevol -s $2 /dev/$voldev -
+ ubirename /dev/$ubidev uvol-wo-$1 uvol-ro-$1
+}
+
+listvols() {
+ local volname volmode volsize
+ for voldir in /sys/devices/virtual/ubi/${ubidev}/${ubidev}_*; do
+ read volname < $voldir/name
+ case "$volname" in
+ uvol-r[wo]*)
+ read volsize < $voldir/data_bytes
+ ;;
+ *)
+ continue
+ ;;
+ esac
+ volmode=${volname:5:2}
+ volname=${volname:8}
+ echo "$volname $volmode $volsize"
+ done
+}
+
+case "$cmd" in
+ align)
+ echo "$ebsize"
+ ;;
+ free)
+ freebytes
+ ;;
+ total)
+ totalbytes
+ ;;
+ list)
+ listvols "$@"
+ ;;
+ create)
+ createvol "$@"
+ ;;
+ remove)
+ removevol "$@"
+ ;;
+ device)
+ getuserdev "$@"
+ ;;
+ size)
+ getsize "$@"
+ ;;
+ up)
+ activatevol "$@"
+ ;;
+ down)
+ disactivatevol "$@"
+ ;;
+ status)
+ getstatus "$@"
+ ;;
+ write)
+ updatevol "$@"
+ ;;
+ *)
+ echo "unknown command"
+ return 1
+ ;;
+esac
--- /dev/null
+#!/bin/sh
+
+# uvol prototype
+# future development roadmap (aka. to-do):
+# * re-implement in C (use libubox, execve lvm/ubi*)
+# * add atomic batch processing for use by container/package manager
+
+if [ -z "$1" ]; then cat <<EOF
+uvol storage volume manager
+
+syntax: uvol command ...
+
+commands:
+ free show number of bytes available
+ total show total number of bytes
+ align show sector size in bytes
+ list [volname] list volumes
+ create volname type size create new volume
+ type: 'ro' or 'rw'
+ size: in bytes
+ remove volname delete volume
+ device volname show block device for mounting
+ size volname show size of volume
+ up volname get volume ready for mounting
+ down volname take volume down after unmounting
+ status volname return status of volume
+ return code: 0 - volume is ready for use
+ 1 - volume is not ready for use
+ 2 - volume doesn'y exist
+ write volname size write to volume from stdin, size in bytes
+EOF
+ return 22
+fi
+
+uvol_backend=
+backends_tried=
+
+for backend in /usr/libexec/uvol/*.sh; do
+ total=$($backend total)
+ backends_tried="$backends_tried $($backend name)"
+ [ "$total" ] && uvol_backend=$backend
+done
+
+if [ -z "$uvol_backend" ]; then
+ echo "No backend available. (tried:$backends_tried)"
+ echo "To setup devices with block storage install 'autopart'."
+ return 2
+fi
+
+flock -x /tmp/run/uvol.lock $uvol_backend "$@"