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>
86 lines
2.6 KiB
Makefile
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))
|