secubox-openwrt/package/secubox/secubox-master-link/Makefile
CyberMind-FR 62c0850829 feat(master-link): Add secure mesh onboarding packages
Implement secubox-master-link (backend) and luci-app-master-link (LuCI
frontend) for secure node onboarding into the SecuBox mesh via
HMAC-SHA256 join tokens, blockchain-backed peer trust, and gigogne
(nested) hierarchy with depth limiting.

Backend provides: token management, join/approve/reject protocol, IPK
bundle serving, CGI API endpoints, and a dark-themed landing page for
new nodes. Frontend provides a 3-tab LuCI view (overview, join requests,
mesh tree) with RPCD integration.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 06:15:47 +01:00

86 lines
2.6 KiB
Makefile

include $(TOPDIR)/rules.mk
PKG_NAME:=secubox-master-link
PKG_VERSION:=1.0.0
PKG_RELEASE:=1
PKG_ARCH:=all
PKG_MAINTAINER:=CyberMind Studio <contact@cybermind.fr>
PKG_LICENSE:=Apache-2.0
include $(INCLUDE_DIR)/package.mk
define Package/secubox-master-link
SECTION:=utils
CATEGORY:=Utilities
PKGARCH:=all
SUBMENU:=SecuBox Apps
TITLE:=SecuBox Master-Link Mesh Onboarding
DEPENDS:=+secubox-p2p +openssl-util +curl
endef
define Package/secubox-master-link/description
Secure mesh onboarding for SecuBox nodes via master/peer link.
Features:
- One-time HMAC-SHA256 join tokens with configurable TTL
- Blockchain-backed peer trust (join, approve, reject, promote)
- IPK bundle serving for new node provisioning
- Gigogne (nested) hierarchy with depth limiting
- Landing page for new nodes to join the mesh
- CGI API endpoints for token, join, approve, status, ipk
Configure in /etc/config/master-link.
endef
define Package/secubox-master-link/conffiles
/etc/config/master-link
endef
define Build/Compile
endef
define Package/secubox-master-link/install
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/etc/config/master-link $(1)/etc/config/master-link
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/etc/init.d/master-link $(1)/etc/init.d/master-link
$(INSTALL_DIR) $(1)/usr/lib/secubox
$(INSTALL_DATA) ./files/usr/lib/secubox/master-link.sh $(1)/usr/lib/secubox/master-link.sh
$(INSTALL_DIR) $(1)/www/api/master-link
$(INSTALL_BIN) ./files/www/api/master-link/token $(1)/www/api/master-link/token
$(INSTALL_BIN) ./files/www/api/master-link/join $(1)/www/api/master-link/join
$(INSTALL_BIN) ./files/www/api/master-link/approve $(1)/www/api/master-link/approve
$(INSTALL_BIN) ./files/www/api/master-link/status $(1)/www/api/master-link/status
$(INSTALL_BIN) ./files/www/api/master-link/ipk $(1)/www/api/master-link/ipk
$(INSTALL_DIR) $(1)/www/master-link
$(INSTALL_DATA) ./files/www/master-link/index.html $(1)/www/master-link/index.html
endef
define Package/secubox-master-link/postinst
#!/bin/sh
[ -n "$${IPKG_INSTROOT}" ] || {
echo ""
echo "============================================"
echo " SecuBox Master-Link Installed"
echo "============================================"
echo ""
echo "Quick Start:"
echo " 1. Enable: uci set master-link.main.enabled=1"
echo " 2. Set role: uci set master-link.main.role=master"
echo " 3. Commit: uci commit master-link"
echo " 4. Start: /etc/init.d/master-link start"
echo ""
echo "Generate a join token via LuCI or:"
echo " . /usr/lib/secubox/master-link.sh"
echo " ml_token_generate"
echo ""
}
exit 0
endef
$(eval $(call BuildPackage,secubox-master-link))