secubox-openwrt/package/secubox/secubox-app-ndpid/Makefile
CyberMind-FR e4a553a6d5 feat: Add nDPId package for lightweight DPI (alternative to netifyd)
- Add secubox-app-ndpid: nDPId daemon with bundled libndpi 5.x
- Add luci-app-ndpid: LuCI web interface for nDPId management
- Add migration documentation from netifyd to nDPId
- Uses git dev branch for latest libndpi API compatibility
- Builds nDPId + nDPIsrvd event broker for microservice architecture

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 09:32:23 +01:00

123 lines
3.2 KiB
Makefile

#
# Copyright (C) 2025 CyberMind.fr (SecuBox Integration)
#
# This is free software, licensed under the GNU General Public License v3.
#
# nDPId - Lightweight Deep Packet Inspection Daemon
# Builds nDPId with bundled libndpi (requires >= 5.0, OpenWrt has 4.8)
#
include $(TOPDIR)/rules.mk
PKG_NAME:=ndpid
PKG_VERSION:=1.7.1
PKG_RELEASE:=1
# Use git dev branch for latest libndpi compatibility
# Version 1.7 (Oct 2023) has API incompatibilities with current libndpi
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/utoni/nDPId.git
PKG_SOURCE_VERSION:=f712dbacfbe80f5a3a30e784f59616a2dc63727f
PKG_MIRROR_HASH:=skip
PKG_MAINTAINER:=CyberMind <contact@cybermind.fr>
PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_BUILD_PARALLEL:=1
# Out-of-source build required by nDPId
CMAKE_BINARY_SUBDIR:=build
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
# Fix: CMake passes ninja as MAKE_PROGRAM but libndpi uses autotools (make)
define Build/Prepare
$(call Build/Prepare/Default)
$(SED) 's|MAKE_PROGRAM=.*CMAKE_MAKE_PROGRAM.*|MAKE_PROGRAM=make|' \
$(PKG_BUILD_DIR)/CMakeLists.txt
endef
define Package/ndpid
SECTION:=net
CATEGORY:=Network
TITLE:=nDPId - Lightweight Deep Packet Inspection Daemon
URL:=https://github.com/utoni/nDPId
DEPENDS:=+libpcap +libjson-c +libpthread +zlib +libstdcpp
endef
define Package/ndpid/description
nDPId is a set of daemons and tools to capture, process and classify
network traffic using nDPI. It provides a lightweight alternative to
netifyd with a microservice architecture.
Components:
- nDPId: Traffic capture and DPI daemon
- nDPIsrvd: Event distribution broker
Note: Builds with bundled libndpi 5.x (OpenWrt feeds have 4.8 which is too old)
endef
define Package/ndpid/conffiles
/etc/config/ndpid
/etc/ndpid.conf
endef
# Build with bundled nDPI (fetches and builds libndpi automatically)
CMAKE_OPTIONS += \
-DBUILD_NDPI=ON \
-DENABLE_SYSTEMD=OFF \
-DENABLE_ZLIB=ON \
-DBUILD_EXAMPLES=OFF \
-DBUILD_DAEMON=ON \
-DENABLE_MEMORY_PROFILING=OFF \
-DENABLE_SANITIZER=OFF \
-DENABLE_COVERAGE=OFF
define Package/ndpid/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/build/nDPId $(1)/usr/sbin/ndpid
$(INSTALL_BIN) $(PKG_BUILD_DIR)/build/nDPIsrvd $(1)/usr/sbin/ndpisrvd
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/build/nDPId-test $(1)/usr/bin/ndpid-test 2>/dev/null || true
$(INSTALL_DIR) $(1)/etc
$(INSTALL_CONF) ./files/ndpid.conf $(1)/etc/ndpid.conf
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/ndpid.config $(1)/etc/config/ndpid
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/ndpid.init $(1)/etc/init.d/ndpid
$(INSTALL_BIN) ./files/ndpisrvd.init $(1)/etc/init.d/ndpisrvd
$(INSTALL_DIR) $(1)/usr/share/ndpid
$(INSTALL_DATA) ./files/functions.sh $(1)/usr/share/ndpid/
endef
define Package/ndpid/postinst
#!/bin/sh
[ -n "$${IPKG_INSTROOT}" ] || {
mkdir -p /var/run/ndpid
/etc/init.d/ndpisrvd enable
/etc/init.d/ndpid enable
echo "nDPId installed. Start with: /etc/init.d/ndpid start"
}
exit 0
endef
define Package/ndpid/prerm
#!/bin/sh
[ -n "$${IPKG_INSTROOT}" ] || {
/etc/init.d/ndpid stop
/etc/init.d/ndpisrvd stop
/etc/init.d/ndpid disable
/etc/init.d/ndpisrvd disable
}
exit 0
endef
$(eval $(call BuildPackage,ndpid))