Tang is lightweight server for binding data to network presence. --- Tang's source: https://github.com/latchset/tang Maintainer: @Tiboris Compile tested: (mips, TL-WR842N, 17.01.4, r3560-79f57e422d) **Tang requires a few other software libraries:** 1. libhttp-parser 2. xinetd's socket activation 3. jose >= 8 **Two new files compared to tang upstream:** - tangdx : configuration file for xinetd - tangdw : wrapper for tangd service - puts timestamp when service activated, and - redirects stderr to log file in /var/log/ **Removed systemd requirement** Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>lilik-openwrt-22.03
@ -0,0 +1,68 @@ | |||||
# | |||||
# Author: Tibor Dudlák | |||||
# | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
# | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=tang | |||||
PKG_VERSION:=6 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 | |||||
PKG_SOURCE_URL:=https://github.com/latchset/$(PKG_NAME)/releases/download/v$(PKG_VERSION)/ | |||||
PKG_HASH:=1df78b48a52d2ca05656555cfe52bd4427c884f5a54a2c5e37a7b39da9e155e3 | |||||
PKG_INSTALL:=1 | |||||
PKG_BUILD_PARALLEL:=1 | |||||
PKG_FIXUP:=autoreconf | |||||
include $(INCLUDE_DIR)/package.mk | |||||
define Package/tang | |||||
SECTION:=utils | |||||
TITLE:=tang v$(PKG_VERSION) - daemon for binding data to the presence of a third party | |||||
DEPENDS:=+libhttp-parser +xinetd +jose +bash | |||||
URL:=https://github.com/latchset/tang | |||||
MAINTAINER:=Tibor Dudlák <tibor.dudlak@gmail.com> | |||||
endef | |||||
define Package/tang/description | |||||
Tang is a small daemon for binding data to the presence of a third party. | |||||
endef | |||||
define Package/tang/conffiles | |||||
/etc/xinetd.d/tangdx | |||||
/usr/share/tang/db/ | |||||
endef | |||||
define Package/tang/install | |||||
$(INSTALL_DIR) $(1)/usr/libexec | |||||
$(INSTALL_DIR) $(1)/etc/xinetd.d/ | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/tangd* $(1)/usr/libexec/ | |||||
$(INSTALL_BIN) ./files/tangdw $(1)/usr/libexec/ | |||||
$(CP) ./files/tangdx $(1)/etc/xinetd.d/ | |||||
endef | |||||
define Package/tang/postinst | |||||
#!/bin/sh | |||||
if [ -z "$${IPKG_INSTROOT}" ]; then | |||||
mkdir -p /usr/share/tang/db && mkdir -p /usr/share/tang/cache | |||||
KEYS=$(find /usr/share/tang/db/ -name "*.jw*" -maxdepth 1 | wc -l) | |||||
if [ "${KEYS}" = "0" ]; then # if db is empty generate new key pair | |||||
/usr/libexec/tangd-keygen /usr/share/tang/db/ | |||||
elif [ "${KEYS}" = "1" ]; then # having 1 key should not happen | |||||
(>&2 echo "Please check the Tang's keys in /usr/share/tang/db \ | |||||
and regenate cache using /usr/libexec/tangd-update script.") | |||||
else | |||||
/usr/libexec/tangd-update /usr/share/tang/db/ /usr/share/tang/cache/ | |||||
fi | |||||
(cat /etc/services | grep -E "tangd.*8888\/tcp") > /dev/null \ | |||||
|| echo -e "tangd\t\t8888/tcp" >> /etc/services | |||||
fi | |||||
endef | |||||
$(eval $(call BuildPackage,tang)) |
@ -0,0 +1,4 @@ | |||||
#!/bin/sh | |||||
echo "==================================" >> /var/log/tangd.log | |||||
echo `date`: >> /var/log/tangd.log | |||||
/usr/libexec/tangd $1 2>> /var/log/tangd.log |
@ -0,0 +1,12 @@ | |||||
service tangd | |||||
{ | |||||
port = 8888 | |||||
socket_type = stream | |||||
wait = no | |||||
user = root | |||||
server = /usr/libexec/tangdw | |||||
server_args = /usr/share/tang/cache | |||||
log_on_success += USERID | |||||
log_on_failure += USERID | |||||
disable = no | |||||
} |
@ -0,0 +1,45 @@ | |||||
diff --git a/Makefile.am b/Makefile.am | |||||
index 14bf91d..dfa6d07 100644 | |||||
--- a/Makefile.am | |||||
+++ b/Makefile.am | |||||
@@ -1,5 +1,3 @@ | |||||
-DISTCHECK_CONFIGURE_FLAGS = --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir) | |||||
- | |||||
AM_CFLAGS = @TANG_CFLAGS@ @jose_CFLAGS@ | |||||
LDADD = @jose_LIBS@ @http_parser_LIBS@ | |||||
@@ -7,21 +5,11 @@ nagiosdir = $(libdir)/nagios/plugins | |||||
cachedir = $(localstatedir)/cache/$(PACKAGE_NAME) | |||||
jwkdir = $(localstatedir)/db/$(PACKAGE_NAME) | |||||
-nodist_systemdsystemunit_DATA = \ | |||||
- units/tangd@.service \ | |||||
- units/tangd.socket \ | |||||
- units/tangd-update.path \ | |||||
- units/tangd-update.service \ | |||||
- units/tangd-keygen.service | |||||
- | |||||
dist_libexec_SCRIPTS = src/tangd-update src/tangd-keygen | |||||
libexec_PROGRAMS = src/tangd | |||||
-nagios_PROGRAMS = src/tang | |||||
-man1_MANS = doc/tang-nagios.1 | |||||
man8_MANS = doc/tang.8 | |||||
src_tangd_SOURCES = src/http.c src/http.h src/tangd.c | |||||
-src_tang_SOURCES = src/nagios.c | |||||
%: %.in | |||||
$(AM_V_GEN)mkdir -p "`dirname "$@"`" | |||||
@@ -32,11 +20,9 @@ src_tang_SOURCES = src/nagios.c | |||||
$(srcdir)/$@.in > $@ | |||||
AM_TESTS_ENVIRONMENT = SD_ACTIVATE="@SD_ACTIVATE@" PATH=$(srcdir)/src:$(builddir)/src:$(PATH) | |||||
-TESTS = tests/adv tests/rec tests/nagios | |||||
+TESTS = tests/adv tests/rec | |||||
-CLEANFILES = $(nodist_systemdsystemunit_DATA) | |||||
EXTRA_DIST = \ | |||||
- $(foreach unit,$(nodist_systemdsystemunit_DATA),$(unit).in) \ | |||||
COPYING \ | |||||
$(TESTS) \ | |||||
$(man1_MANS) \ |
@ -0,0 +1,37 @@ | |||||
diff --git a/configure.ac b/configure.ac | |||||
index b51bb31..4b37d30 100644 | |||||
--- a/configure.ac | |||||
+++ b/configure.ac | |||||
@@ -27,32 +27,6 @@ AC_CHECK_LIB([http_parser], [http_parser_execute], | |||||
[AC_MSG_ERROR([http-parser required!])]) | |||||
PKG_CHECK_MODULES([jose], [jose >= 8]) | |||||
-PKG_CHECK_MODULES([systemd], [systemd]) | |||||
- | |||||
-AC_ARG_WITH([systemdsystemunitdir], | |||||
- [AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])], | |||||
- [], | |||||
- [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)]) | |||||
- | |||||
-AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir]) | |||||
- | |||||
-for ac_prog in systemd-socket-activate systemd-activate; do | |||||
- AC_CHECK_PROG([SD_ACTIVATE], [$ac_prog], [$as_dir/$ac_prog], [], | |||||
- [$PATH$PATH_SEPARATOR$($PKG_CONFIG --variable=systemdutildir systemd)]) | |||||
- test -n "$SD_ACTIVATE" && break | |||||
-done | |||||
- | |||||
-test -n "$SD_ACTIVATE" || AC_MSG_ERROR([systemd-socket-activate required!]) | |||||
- | |||||
-AC_MSG_CHECKING([systemd-socket-activate inetd flag]) | |||||
-if $SD_ACTIVATE --help | grep -q inetd; then | |||||
- SD_ACTIVATE="$SD_ACTIVATE --inetd" | |||||
- AC_MSG_RESULT([--inetd]) | |||||
-else | |||||
- AC_MSG_RESULT([(default)]) | |||||
-fi | |||||
- | |||||
-AC_SUBST(SD_ACTIVATE) | |||||
TANG_CFLAGS="\ | |||||
-Wall \ |
@ -0,0 +1,15 @@ | |||||
diff --git a/src/tangd-update b/src/tangd-update | |||||
index 652dbef..01aa842 100755 | |||||
--- a/src/tangd-update | |||||
+++ b/src/tangd-update | |||||
@@ -33,8 +33,8 @@ fi | |||||
[ ! -d "$2" ] && mkdir -p -m 0700 "$2" | |||||
-src=`realpath "$1"` | |||||
-dst=`realpath "$2"` | |||||
+src=`readlink -f "$1"` | |||||
+dst=`readlink -f "$2"` | |||||
payl=() | |||||
sign=() |