--- /dev/null
+#!/bin/sh
+
+case $1 in
+ start)
+ if [ -e /var/etc/.crond ]; then
+ crond
+ fi
+ ;;
+ stop)
+ if [ -e /var/etc/.crond ]; then
+ trap "" INT
+ kill -INT $(pidof crond)
+ fi
+ ;;
+ *)
+ echo "[$BASENAME] Usage: $0 {start|stop}"
+ ;;
+esac
--- /dev/null
+#!/bin/sh
+
+case $1 in
+ start)
+ if [ -e /var/etc/.djmount ]; then
+ modprobe fuse
+ mkdir -p /media/00upnp
+ djmount -o iocharset=utf-8 /media/00upnp 2>&1 > /dev/null
+ fi
+ ;;
+ stop)
+ if [ -e /var/etc/.djmount ]; then
+ fusermount -u /media/00upnp
+ fi
+ ;;
+ restart)
+ if [ -e /var/etc/.djmount ]; then
+ $0 stop
+ $0 start
+ fi
+ ;;
+ *)
+ echo "[${BASENAME}] Usage: $0 {start|restart|stop}"
+ ;;
+esac
--- /dev/null
+#!/bin/sh
+
+timeout=20
+if [ "$2" = "1" ]; then
+ timeout=0
+fi
+
+start() {
+ [ -e /var/etc/.minidlnad ] && { sleep $timeout; minidlnad; } &
+}
+
+stop() {
+ if [ -e /var/etc/.minidlnad ]; then
+ trap "" INT
+ kill -TERM $(pidof minidlnad)
+ fi
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+
+ *)
+ echo "[$BASENAME] Usage: $0 {start|stop}"
+ ;;
+esac
--- /dev/null
+--- a/chipmunk/netop.c
++++ b/chipmunk/netop.c
+@@ -53,16 +53,24 @@
+
+ extern const char IPv4_ALL[];
+
+- assert( (port > 0) && sockfd && ipaddr );
++ int socktype = 0;
++ socklen_t socktypelen = sizeof(socktype);
++ int inetd = !getsockopt(0, SOL_SOCKET, SO_TYPE, &socktype, &socktypelen) && socktype == SOCK_STREAM;
++
++ assert( (!inetd || port > 0) && sockfd && ipaddr );
+ (void)IPv4_ALL;
+ TRACE( (void)tmfprintf( g_flog, "Setting up listener for [%s:%d]\n",
+ ipaddr[0] ? ipaddr : IPv4_ALL, port) );
+
+ rc = ERR_INTERNAL;
+ do {
++ if (inetd)
++ lsock = 0;
++ else
+ lsock = socket( AF_INET, SOCK_STREAM, 0 );
+ if( -1 == lsock ) break;
+
++ if (!inetd) {
+ (void) memset( &servaddr, 0, sizeof(servaddr) );
+ servaddr.sin_family = AF_INET;
+ servaddr.sin_port = htons( (short)port );
+@@ -87,6 +95,7 @@
+ __func__);
+ break;
+ }
++ }
+
+ #define NONBLOCK 1
+ rc = set_nblock (lsock, NONBLOCK);
+@@ -102,8 +111,10 @@
+ break;
+ }
+
++ if (!inetd) {
+ rc = bind( lsock, (struct sockaddr*)&servaddr, sizeof(servaddr) );
+ if( 0 != rc ) break;
++ }
+
+ rc = listen (lsock, (bklog > 0 ? bklog : 1));
+ if( 0 != rc ) break;
+--- a/chipmunk/udpxy.c
++++ b/chipmunk/udpxy.c
+@@ -1391,7 +1391,12 @@
+ openlog( g_udpxy_app, LOG_CONS | LOG_PID, LOG_LOCAL0 );
+
+ do {
+- if( (argc < 2) || (port <= 0) || (rc != 0) ) {
++ int socktype = 0;
++ socklen_t socktypelen = sizeof(socktype);
++ int inetd = !getsockopt(0, SOL_SOCKET, SO_TYPE, &socktype, &socktypelen) && socktype == SOCK_STREAM;
++ if (inetd)
++ no_daemon = 1;
++ if( !inetd && ((argc < 2) || (port <= 0) || (rc != 0)) ) {
+ usage( argv[0], stderr );
+ rc = ERR_PARAM; break;
+ }
--- /dev/null
+diff --git a/udpxrec.c b/udpxrec.c
+index c58ceb5..eb186f3 100644
+--- a/chipmunk/udpxrec.c
++++ b/chipmunk/udpxrec.c
+@@ -604,9 +604,9 @@ int udpxrec_main( int argc, char* const argv[] )
+ }
+ else {
+ if( g_recopt.bg_time < now ) {
+- (void)strncpy( now_buf, Zasctime(localtime( &now )),
++ (void)memcpy( now_buf, Zasctime(localtime( &now )),
+ sizeof(now_buf) );
+- (void)strncpy( sel_buf,
++ (void)memcpy( sel_buf,
+ Zasctime(localtime( &g_recopt.bg_time )),
+ sizeof(sel_buf) );
+
+@@ -634,9 +634,9 @@ int udpxrec_main( int argc, char* const argv[] )
+ }
+ else {
+ if( g_recopt.end_time < now ) {
+- (void)strncpy( now_buf, Zasctime(localtime( &now )),
++ (void)memcpy( now_buf, Zasctime(localtime( &now )),
+ sizeof(now_buf) );
+- (void)strncpy( sel_buf,
++ (void)memcpy( sel_buf,
+ Zasctime(localtime( &g_recopt.end_time )),
+ sizeof(sel_buf) );
+
--- /dev/null
+diff --git a/chipmunk/rparse.c b/chipmunk/rparse.c
+index 8cbdda5..560e50d 100644
+--- a/chipmunk/rparse.c
++++ b/chipmunk/rparse.c
+@@ -175,7 +175,7 @@ parse_udprelay( const char* opt, size_t optlen,
+
+ assert( opt && s_addr && s_addrlen && addr && addrlen && port );
+
+- (void) strncpy( s, opt, MAX_OPTLEN );
++ (void) snprintf(s, MAX_OPTLEN, "%s", opt);
+ s[ MAX_OPTLEN - 1 ] = '\0';
+
+ do {
--- /dev/null
+#!/bin/sh
+
+case $1 in
+ start)
+ if [ -e /var/etc/.udpxy ]; then
+ udpxy -p 4022
+ fi
+ ;;
+ stop)
+ if [ -e /var/etc/.udpxy ]; then
+ trap "" INT
+ kill -INT $(pidof udpxy)
+ fi
+ ;;
+ *)
+ echo "[$BASENAME] Usage: $0 {start|stop}"
+ ;;
+esac
--- /dev/null
+#!/bin/sh
+set -x
+
+timeout=10
+if [ $2 = 1 ]; then
+ timeout=0
+fi
+echo $timeout
+
+case $1 in
+ start)
+ [ -e /var/etc/.ushare ] && { sleep $timeout; ushare -D -n $(hostname); } &
+ ;;
+ stop)
+ if [ -e /var/etc/.ushare ]; then
+ trap "" INT
+ kill -INT $(pidof ushare)
+ fi
+ ;;
+ *)
+ echo "[$BASENAME] Usage: $0 {start|stop}"
+ ;;
+esac
--- /dev/null
+#!/bin/sh
+
+timeout=25
+if [ "$2" = "1" ]; then
+ timeout=0
+fi
+
+case $1 in
+ start)
+ [ -e /var/etc/.xupnpd ] && {
+ rm -rf /tmp/xupnpd-*;
+ rm -f /tmp/xupnpd.pid;
+ sleep $timeout;
+ xupnpd; } &
+
+ ;;
+ stop)
+ if [ -e /var/etc/.xupnpd ]; then
+ trap "" INT
+ kill -INT $(pidof xupnpd)
+ fi
+ ;;
+ restart)
+ if [ -e /var/etc/.xupnpd ]; then
+ $0 stop
+ $0 start
+ fi
+ ;;
+ *)
+ echo "[$BASENAME] Usage: $0 {start|restart|stop}"
+ ;;
+esac
cp $(PATCHES)/$(BB_CONFIG) .config && \
$(BUSYBOX_MAKE_ENV) $(MAKE) busybox $(BUSYBOX_MAKE_OPTS) && \
$(BUSYBOX_MAKE_ENV) $(MAKE) install $(BUSYBOX_MAKE_OPTS)
- $(TARGET)-strip $(TARGETPREFIX)/bin/busybox
+ $(TARGET)-strip $(TARGETPREFIX)/bin/busybox
+ install -m 755 $(PATCHES)/busybox/crond.init $(TARGETPREFIX)/etc/init.d/crond
+ pushd $(TARGETPREFIX)/etc/init.d
+ ln -sf crond $(TARGETPREFIX)/etc/init.d/S75crond
+ ln -sf crond $(TARGETPREFIX)/etc/init.d/K75crond
$(REMOVE)/busybox-$(BUSYBOX_VER)
$(TOUCH)
$(REMOVE)/vsftpd-$(VSFTPD_VER)
$(TOUCH)
+$(D)/minidlna: $(D)/zlib $(D)/sqlite $(D)/libexif $(D)/libjpeg $(D)/libid3tag $(D)/libogg $(D)/libvorbis $(D)/flac $(D)/ffmpeg $(ARCHIVE)/minidlna-$(MINIDLNA_VER).tar.gz | $(TARGETPREFIX)
+ $(START_BUILD)
+ $(UNTAR)/minidlna-$(MINIDLNA_VER).tar.gz
+ set -e; cd $(BUILD_TMP)/minidlna-$(MINIDLNA_VER); \
+ $(PATCH)/minidlna-$(MINIDLNA_VER).patch; \
+ autoreconf -fi; \
+ $(CONFIGURE) \
+ --prefix=/ \
+ ; \
+ $(MAKE); \
+ $(MAKE) install prefix=/ DESTDIR=$(TARGETPREFIX)
+ install -m 755 $(PATCHES)/minidlna/minidlna.init $(TARGETPREFIX)/etc/init.d/minidlna
+ pushd $(TARGETPREFIX)/etc/init.d
+ ln -sf minidlna $(TARGETPREFIX)/etc/init.d/S75minidlna
+ ln -sf minidlna $(TARGETPREFIX)/etc/init.d/K75minidlna
+ $(REMOVE)/minidlna-$(MINIDLNA_VER)
+ $(TOUCH)
$(D)/strace: $(ARCHIVE)/strace-4.6.tar.xz | $(TARGETPREFIX)
$(START_BUILD)
LIBS="-Wl,--rpath-link -Wl,$(TARGETPREFIX)/lib" \
./configure -C prefix=$(TARGETPREFIX) --with-fuse-prefix=$(TARGETPREFIX) --build=$(BUILD) --host=$(TARGET) && \
$(MAKE) && \
- $(MAKE) install && \
+ $(MAKE) install;
+ install -m 755 $(PATCHES)/djmount/djmount.init $(TARGETPREFIX)/etc/init.d/djmount
+ pushd $(TARGETPREFIX)/etc/init.d
+ ln -sf djmount $(TARGETPREFIX)/etc/init.d/S75djmount
+ ln -sf djmount $(TARGETPREFIX)/etc/init.d/K75djmount
$(REMOVE)/djmount-0.71
$(TOUCH)
cp $(BUILD_TMP)/ushare-$(USHARE_VER)/config.h $(BUILD_TMP)/ushare-$(USHARE_VER)/src/config.h && \
$(MAKE) && \
$(MAKE) install && \
- cp $(BUILD_TMP)/ushare-$(USHARE_VER)/scripts/ushare.conf $(TARGETPREFIX)/etc/ushare.conf
- rm -f $(TARGETPREFIX)/etc/init.d/ushare
+ install -m 644 $(BUILD_TMP)/ushare-$(USHARE_VER)/scripts/ushare.conf $(TARGETPREFIX)/etc/ushare.conf
+ install -m 755 $(PATCHES)/ushare/ushare.init $(TARGETPREFIX)/etc/init.d/crond
+ pushd $(TARGETPREFIX)/etc/init.d
+ ln -sf ushare $(TARGETPREFIX)/etc/init.d/S75ushare
+ ln -sf ushare $(TARGETPREFIX)/etc/init.d/K75ushare
$(REMOVE)/ushare-$(USHARE_VER)
$(TOUCH)
cp -f $(BUILD_TMP)/xupnpd-git-$(XUPNPD_GIT)/src/*.lua $(TARGETPREFIX)/share/xupnpd/
mv $(TARGETPREFIX)/share/xupnpd/xupnpd.lua $(TARGETPREFIX)/var/tuxbox/config
ln -sf /var/tuxbox/config/xupnpd.lua $(TARGETPREFIX)/share/xupnpd/xupnpd.lua
+ install -m 755 $(PATCHES)/minidlna/minidlnad.init $(TARGETPREFIX)/etc/init.d/minidlnad
+ pushd $(TARGETPREFIX)/etc/init.d
+ ln -sf minidlna $(TARGETPREFIX)/etc/init.d/S75minidlna
+ ln -sf minidlna $(TARGETPREFIX)/etc/init.d/K75minidlna
$(REMOVE)/xupnpd-git-$(XUPNPD_GIT)
$(TOUCH)
-$(D)/udpxy: $(ARCHIVE)/udpxy.1.0.23-7-prod.tar.gz | $(TARGETPREFIX)
- $(START_BUILD)
- $(UNTAR)/udpxy.1.0.23-7-prod.tar.gz
- pushd $(BUILD_TMP)/udpxy-1.0.23-7 && \
- $(MAKE) CC=$(TARGET)-gcc&& \
- cp -f $(BUILD_TMP)/udpxy-1.0.23-7/udpxy $(TARGETPREFIX)/bin/ && \
- $(REMOVE)/udpxy-1.0.23-7
+UDPXY_PATCH = 0001-udpxy.patch
+UDPXY_PATCH += 0002-fix-build-with-gcc8.patch
+UDPXY_PATCH += 0003-fix-build-with-gcc9.patch
+
+$(D)/udpxy: $(ARCHIVE)/$(UDPXY_VER).tar.gz | $(TARGETPREFIX)
+ $(START_BUILD)
+ $(REMOVE)/udpxy-$(UDPXY_VER)
+ $(UNTAR)/$(UDPXY_VER).tar.gz
+ pushd $(BUILD_TMP)/udpxy-$(UDPXY_VER); \
+ $(call apply_patches, $(addprefix udpxy/, $(UDPXY_PATCH))); \
+ pushd $(BUILD_TMP)/udpxy-$(UDPXY_VER)/chipmunk && \
+ $(MAKE) NO_UDPXREC=yes CC=$(TARGET)-gcc; \
+ $(MAKE) NO_UDPXREC=yes install DESTDIR=$(TARGETPREFIX) PREFIX= MANPAGE_DIR=./remove;
+ install -m 755 $(PATCHES)/udpxy/udpxy.init $(TARGETPREFIX)/etc/init.d/udpxy
+ pushd $(TARGETPREFIX)/etc/init.d
+ ln -sf udpxy $(TARGETPREFIX)/etc/init.d/S75udpxy
+ ln -sf udpxy $(TARGETPREFIX)/etc/init.d/K75udpxy
+ $(REMOVE)/udpxy-$(UDPXY_VER)
$(TOUCH)
$(D)/portmap: $(ARCHIVE)/portmap-$(PORTMAP_VER).tgz
$(ARCHIVE)/ushare-$(USHARE_VER).tar.bz2:
$(WGET) https://sourceforge.net/projects/ushare/files/$(notdir $@)
-$(ARCHIVE)/udpxy.1.0.23-7-prod.tar.gz:
- $(WGET) http://www.fhloston-paradise.de/udpxy.1.0.23-7-prod.tar.gz
+$(ARCHIVE)/$(UDPXY_VER).tar.gz:
+ $(WGET) https://github.com/pcherenkov/udpxy/archive/refs/tags/$(UDPXY_VER).tar.gz
$(ARCHIVE)/inadyn-mt.v.$(INADYN_VER).tar.gz:
$(WGET) https://sourceforge.net/projects/inadyn-mt/files/inadyn-mt/inadyn-mt.v.$(INADYN_VER)/$(notdir $@)
$(MAKE) PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1 SCPPROGRESS=1 && \
$(MAKE) PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1 SCPPROGRESS=1 install DESTDIR=$(BUILD_TMP)/extras
$(TARGET)-strip $(BUILD_TMP)/extras/var/bin/dropbearmulti
+ install -m 755 $(PATCHES)/dropbear/dropbear.init $(TARGETPREFIX)/etc/init.d/dropbear
+ pushd $(TARGETPREFIX)/etc/init.d
+ ln -sf dropbear $(TARGETPREFIX)/etc/init.d/S60dropbear
+ ln -sf dropbear $(TARGETPREFIX)/etc/init.d/K60dropbear
$(REMOVE)/extras/.remove
# $(REMOVE)/dropbear-$(DROPBEAR_VER)
# $(TOUCH)
$(REMOVE)/libogg-$(LIBOGG_VER)
$(TOUCH)
-#
-# minidlna
-#
-$(D)/minidlna: $(D)/zlib $(D)/sqlite $(D)/libexif $(D)/libjpeg $(D)/libid3tag $(D)/libogg $(D)/libvorbis $(D)/flac $(D)/ffmpeg $(ARCHIVE)/minidlna-$(MINIDLNA_VER).tar.gz | $(TARGETPREFIX)
- $(START_BUILD)
- $(UNTAR)/minidlna-$(MINIDLNA_VER).tar.gz
- set -e; cd $(BUILD_TMP)/minidlna-$(MINIDLNA_VER); \
- $(PATCH)/minidlna-$(MINIDLNA_VER).patch; \
- autoreconf -fi; \
- $(CONFIGURE) \
- --prefix=/ \
- ; \
- $(MAKE); \
- $(MAKE) install prefix=/ DESTDIR=$(TARGETPREFIX)
- $(REMOVE)/minidlna-$(MINIDLNA_VER)
- $(TOUCH)
-
#
# libexif
#
# u-boot; an universal boot loader
U-BOOT_VER=2014.04
+# udpxy is a UDP-to-HTTP multicast traffic relay daemon: it forwards UDP traffic from a given multicast subscription to the requesting HTTP client.
+UDPXY_VER = 1.0-25.1
+
# uClibc-ng; a C library for developing embedded Linux systems
UCLIBC_VER=1.0.41