diff --git a/package/secubox/nodogsplash/Makefile b/package/secubox/nodogsplash/Makefile new file mode 100644 index 00000000..50a44c18 --- /dev/null +++ b/package/secubox/nodogsplash/Makefile @@ -0,0 +1,77 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=nodogsplash +PKG_VERSION:=5.0.2 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://github.com/nodogsplash/nodogsplash/archive/refs/tags +PKG_HASH:=908d3674e93726fdcefb4c3b6705c745753435df9d46425781a57e3f6b417797 +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) +PKG_BUILD_PARALLEL:=1 + +PKG_MAINTAINER:=CyberMind +PKG_LICENSE:=GPL-2.0-or-later +PKG_LICENSE_FILES:=COPYING + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) + SECTION:=net + CATEGORY:=Network + SUBMENU:=Captive Portals + TITLE:=Nodogsplash captive portal + URL:=https://github.com/nodogsplash/nodogsplash + DEPENDS:=+libmicrohttpd +libjson-c +iptables-nft +endef + +define Package/$(PKG_NAME)/description + Nodogsplash provides a simple captive portal solution that intercepts HTTP + traffic and serves a customizable splash page before granting network access. + This build ships the nodogsplash daemon, ndsctl utility, default templates, + and an OpenWrt-style init script compatible with procd. +endef + +TARGET_CFLAGS += -ffunction-sections -fdata-sections +TARGET_LDFLAGS += -Wl,--gc-sections + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) \ + CC="$(TARGET_CC)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + STRIP=no \ + ENABLE_STATE_FILE=yes \ + all + $(MAKE) -C $(PKG_BUILD_DIR) \ + CC="$(TARGET_CC)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + STRIP=no \ + ENABLE_STATE_FILE=yes \ + DESTDIR="$(PKG_INSTALL_DIR)" \ + install +endef + +define Package/$(PKG_NAME)/conffiles +/etc/nodogsplash/nodogsplash.conf +/etc/nodogsplash/htdocs/splash.html +/etc/nodogsplash/htdocs/status.html +endef + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/nodogsplash $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ndsctl $(1)/usr/bin/ + + $(INSTALL_DIR) $(1)/etc/nodogsplash/htdocs/images + $(CP) $(PKG_INSTALL_DIR)/etc/nodogsplash/nodogsplash.conf $(1)/etc/nodogsplash/ + $(CP) $(PKG_INSTALL_DIR)/etc/nodogsplash/htdocs/* $(1)/etc/nodogsplash/htdocs/ + + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/nodogsplash.init $(1)/etc/init.d/nodogsplash +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/package/secubox/nodogsplash/files/nodogsplash.init b/package/secubox/nodogsplash/files/nodogsplash.init new file mode 100644 index 00000000..de0516f0 --- /dev/null +++ b/package/secubox/nodogsplash/files/nodogsplash.init @@ -0,0 +1,27 @@ +#!/bin/sh /etc/rc.common +# Nodogsplash captive portal + +START=95 +STOP=15 +USE_PROCD=1 + +PROG=/usr/bin/nodogsplash +CONF=/etc/nodogsplash/nodogsplash.conf + +start_service() { + [ -x "$PROG" ] || return 1 + if [ ! -f "$CONF" ]; then + logger -t nodogsplash "Missing $CONF" + return 1 + fi + + procd_open_instance + procd_set_param command "$PROG" -f "$CONF" + procd_set_param file "$CONF" + procd_set_param respawn 2000 3 5 + procd_close_instance +} + +service_triggers() { + procd_add_reload_trigger nodogsplash +} diff --git a/secubox-tools/local-build.sh b/secubox-tools/local-build.sh index 84db85e9..7789aab4 100755 --- a/secubox-tools/local-build.sh +++ b/secubox-tools/local-build.sh @@ -593,6 +593,15 @@ copy_packages() { echo " ✓ Fixed Makefile include path" fi done + + # Copy core packages (non-LuCI) + for pkg in ../../package/secubox/nodogsplash/; do + if [[ -d "$pkg" && -f "${pkg}Makefile" ]]; then + local pkg_name=$(basename "$pkg") + echo " 📁 $pkg_name" + cp -r "$pkg" "$feed_dir/" + fi + done fi echo "" @@ -629,6 +638,15 @@ copy_packages() { ./scripts/feeds install "$pkg_name" 2>&1 | grep -v "WARNING:" || true fi done + + # Install core packages (non-LuCI) + for pkg in "$feed_dir"/nodogsplash/; do + if [[ -d "$pkg" ]]; then + local pkg_name=$(basename "$pkg") + echo " Installing $pkg_name..." + ./scripts/feeds install "$pkg_name" 2>&1 | grep -v "WARNING:" || true + fi + done fi cd - > /dev/null @@ -1030,6 +1048,16 @@ copy_secubox_to_openwrt() { fi done + # Copy additional core packages (non-LuCI) + for pkg in ../../package/secubox/nodogsplash/; do + if [[ -d "$pkg" ]]; then + local pkg_name=$(basename "$pkg") + echo " ✅ $pkg_name" + cp -r "$pkg" package/secubox/ + pkg_count=$((pkg_count + 1)) + fi + done + cd - > /dev/null print_success "Copied $pkg_count SecuBox packages"