fix(bonus): Strip libc dependency from local feed packages
- Update local-build.sh to remove libc from Packages index - Prevents opkg architecture mismatch errors on install - Regenerate secubox-feed with 74 packages - Update RPCD scripts for lyrion, mailinabox, metablogizer, nextcloud Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
3aa4f8d6f9
commit
f3b6fb71da
2
.gitignore
vendored
2
.gitignore
vendored
@ -19,6 +19,6 @@ docs/.DS_Store
|
||||
|
||||
|
||||
.claude/settings.local.json
|
||||
package/secubox/luci-app-secubox-bonus/root/www/
|
||||
##package/secubox/luci-app-secubox-bonus/root/www/
|
||||
|
||||
openwrt
|
||||
0
package/secubox/luci-app-lyrion/root/usr/libexec/rpcd/luci.lyrion
Normal file → Executable file
0
package/secubox/luci-app-lyrion/root/usr/libexec/rpcd/luci.lyrion
Normal file → Executable file
0
package/secubox/luci-app-mailinabox/root/usr/libexec/rpcd/luci.mailinabox
Normal file → Executable file
0
package/secubox/luci-app-mailinabox/root/usr/libexec/rpcd/luci.mailinabox
Normal file → Executable file
0
package/secubox/luci-app-metablogizer/root/usr/libexec/rpcd/luci.metablogizer
Normal file → Executable file
0
package/secubox/luci-app-metablogizer/root/usr/libexec/rpcd/luci.metablogizer
Normal file → Executable file
0
package/secubox/luci-app-nextcloud/root/usr/libexec/rpcd/luci.nextcloud
Normal file → Executable file
0
package/secubox/luci-app-nextcloud/root/usr/libexec/rpcd/luci.nextcloud
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -0,0 +1 @@
|
||||
1ae1c0208ec6763082b99daa513443048c8ac971c285cafa3d1d115b48c69f01
|
||||
@ -0,0 +1,894 @@
|
||||
{
|
||||
"feed_url": "/secubox-feed",
|
||||
"generated": "2026-01-29T06:24:48+01:00",
|
||||
"packages": [
|
||||
{
|
||||
"name": "luci-app-auth-guardian",
|
||||
"version": "0.4.0-r3",
|
||||
"filename": "luci-app-auth-guardian_0.4.0-r3_all.ipk",
|
||||
"size": 12042,
|
||||
"category": "security",
|
||||
"icon": "key",
|
||||
"description": "Authentication management",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-bandwidth-manager",
|
||||
"version": "0.5.0-r2",
|
||||
"filename": "luci-app-bandwidth-manager_0.5.0-r2_all.ipk",
|
||||
"size": 66969,
|
||||
"category": "network",
|
||||
"icon": "activity",
|
||||
"description": "Bandwidth monitoring and control",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-cdn-cache",
|
||||
"version": "0.5.0-r3",
|
||||
"filename": "luci-app-cdn-cache_0.5.0-r3_all.ipk",
|
||||
"size": 20400,
|
||||
"category": "network",
|
||||
"icon": "globe",
|
||||
"description": "CDN caching",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-client-guardian",
|
||||
"version": "0.4.0-r7",
|
||||
"filename": "luci-app-client-guardian_0.4.0-r7_all.ipk",
|
||||
"size": 57069,
|
||||
"category": "network",
|
||||
"icon": "users",
|
||||
"description": "Client management and monitoring",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-crowdsec-dashboard",
|
||||
"version": "0.7.0-r29",
|
||||
"filename": "luci-app-crowdsec-dashboard_0.7.0-r29_all.ipk",
|
||||
"size": 53295,
|
||||
"category": "security",
|
||||
"icon": "shield",
|
||||
"description": "CrowdSec security monitoring",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-cyberfeed",
|
||||
"version": "0.1.1-r1",
|
||||
"filename": "luci-app-cyberfeed_0.1.1-r1_all.ipk",
|
||||
"size": 12804,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-exposure",
|
||||
"version": "1.0.0-r3",
|
||||
"filename": "luci-app-exposure_1.0.0-r3_all.ipk",
|
||||
"size": 20505,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-gitea",
|
||||
"version": "1.0.0-r2",
|
||||
"filename": "luci-app-gitea_1.0.0-r2_all.ipk",
|
||||
"size": 15552,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-glances",
|
||||
"version": "1.0.0-r2",
|
||||
"filename": "luci-app-glances_1.0.0-r2_all.ipk",
|
||||
"size": 6937,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-haproxy",
|
||||
"version": "1.0.0-r8",
|
||||
"filename": "luci-app-haproxy_1.0.0-r8_all.ipk",
|
||||
"size": 33975,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-hexojs",
|
||||
"version": "1.0.0-r3",
|
||||
"filename": "luci-app-hexojs_1.0.0-r3_all.ipk",
|
||||
"size": 32982,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-ksm-manager",
|
||||
"version": "0.4.0-r2",
|
||||
"filename": "luci-app-ksm-manager_0.4.0-r2_all.ipk",
|
||||
"size": 21542,
|
||||
"category": "system",
|
||||
"icon": "cpu",
|
||||
"description": "Kernel memory management",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-localai",
|
||||
"version": "0.1.0-r15",
|
||||
"filename": "luci-app-localai_0.1.0-r15_all.ipk",
|
||||
"size": 14329,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-lyrion",
|
||||
"version": "1.0.0-r1",
|
||||
"filename": "luci-app-lyrion_1.0.0-r1_all.ipk",
|
||||
"size": 6697,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-magicmirror2",
|
||||
"version": "0.4.0-r6",
|
||||
"filename": "luci-app-magicmirror2_0.4.0-r6_all.ipk",
|
||||
"size": 12250,
|
||||
"category": "iot",
|
||||
"icon": "monitor",
|
||||
"description": "Smart mirror display",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-mailinabox",
|
||||
"version": "1.0.0-r1",
|
||||
"filename": "luci-app-mailinabox_1.0.0-r1_all.ipk",
|
||||
"size": 5452,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-media-flow",
|
||||
"version": "0.6.4-r1",
|
||||
"filename": "luci-app-media-flow_0.6.4-r1_all.ipk",
|
||||
"size": 19087,
|
||||
"category": "media",
|
||||
"icon": "film",
|
||||
"description": "Media streaming",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-metablogizer",
|
||||
"version": "1.0.0-r3",
|
||||
"filename": "luci-app-metablogizer_1.0.0-r3_all.ipk",
|
||||
"size": 21617,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-metabolizer",
|
||||
"version": "1.0.0-r2",
|
||||
"filename": "luci-app-metabolizer_1.0.0-r2_all.ipk",
|
||||
"size": 4724,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-mitmproxy",
|
||||
"version": "0.4.0-r6",
|
||||
"filename": "luci-app-mitmproxy_0.4.0-r6_all.ipk",
|
||||
"size": 18906,
|
||||
"category": "security",
|
||||
"icon": "lock",
|
||||
"description": "HTTPS proxy and traffic inspection",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-mmpm",
|
||||
"version": "0.2.0-r3",
|
||||
"filename": "luci-app-mmpm_0.2.0-r3_all.ipk",
|
||||
"size": 7874,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-mqtt-bridge",
|
||||
"version": "0.4.0-r4",
|
||||
"filename": "luci-app-mqtt-bridge_0.4.0-r4_all.ipk",
|
||||
"size": 23861,
|
||||
"category": "iot",
|
||||
"icon": "message-square",
|
||||
"description": "MQTT bridge",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-ndpid",
|
||||
"version": "1.1.2-r2",
|
||||
"filename": "luci-app-ndpid_1.1.2-r2_all.ipk",
|
||||
"size": 22427,
|
||||
"category": "security",
|
||||
"icon": "eye",
|
||||
"description": "Deep packet inspection",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-netdata-dashboard",
|
||||
"version": "0.5.0-r2",
|
||||
"filename": "luci-app-netdata-dashboard_0.5.0-r2_all.ipk",
|
||||
"size": 22367,
|
||||
"category": "monitoring",
|
||||
"icon": "bar-chart-2",
|
||||
"description": "System monitoring dashboard",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-network-modes",
|
||||
"version": "0.5.0-r3",
|
||||
"filename": "luci-app-network-modes_0.5.0-r3_all.ipk",
|
||||
"size": 55630,
|
||||
"category": "network",
|
||||
"icon": "wifi",
|
||||
"description": "Network configuration",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-network-tweaks",
|
||||
"version": "1.0.0-r7",
|
||||
"filename": "luci-app-network-tweaks_1.0.0-r7_all.ipk",
|
||||
"size": 15421,
|
||||
"category": "network",
|
||||
"icon": "wifi",
|
||||
"description": "Network configuration",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-nextcloud",
|
||||
"version": "1.0.0-r1",
|
||||
"filename": "luci-app-nextcloud_1.0.0-r1_all.ipk",
|
||||
"size": 6450,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-ollama",
|
||||
"version": "0.1.0-r1",
|
||||
"filename": "luci-app-ollama_0.1.0-r1_all.ipk",
|
||||
"size": 11957,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-picobrew",
|
||||
"version": "1.0.0-r1",
|
||||
"filename": "luci-app-picobrew_1.0.0-r1_all.ipk",
|
||||
"size": 9939,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-secubox",
|
||||
"version": "0.7.1-r4",
|
||||
"filename": "luci-app-secubox_0.7.1-r4_all.ipk",
|
||||
"size": 54932,
|
||||
"category": "system",
|
||||
"icon": "box",
|
||||
"description": "SecuBox system component",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-secubox-admin",
|
||||
"version": "1.0.0-r17",
|
||||
"filename": "luci-app-secubox-admin_1.0.0-r17_all.ipk",
|
||||
"size": 59699,
|
||||
"category": "system",
|
||||
"icon": "box",
|
||||
"description": "SecuBox system component",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-secubox-bonus",
|
||||
"version": "0.2.0-r2",
|
||||
"filename": "luci-app-secubox-bonus_0.2.0-r2_all.ipk",
|
||||
"size": 99042972,
|
||||
"category": "system",
|
||||
"icon": "box",
|
||||
"description": "SecuBox system component",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-secubox-crowdsec",
|
||||
"version": "1.0.0-r3",
|
||||
"filename": "luci-app-secubox-crowdsec_1.0.0-r3_all.ipk",
|
||||
"size": 13882,
|
||||
"category": "system",
|
||||
"icon": "box",
|
||||
"description": "SecuBox system component",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-secubox-netdiag",
|
||||
"version": "1.0.0-r1",
|
||||
"filename": "luci-app-secubox-netdiag_1.0.0-r1_all.ipk",
|
||||
"size": 11963,
|
||||
"category": "system",
|
||||
"icon": "box",
|
||||
"description": "SecuBox system component",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-secubox-netifyd",
|
||||
"version": "1.2.1-r1",
|
||||
"filename": "luci-app-secubox-netifyd_1.2.1-r1_all.ipk",
|
||||
"size": 39525,
|
||||
"category": "system",
|
||||
"icon": "box",
|
||||
"description": "SecuBox system component",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-secubox-portal",
|
||||
"version": "0.7.0-r2",
|
||||
"filename": "luci-app-secubox-portal_0.7.0-r2_all.ipk",
|
||||
"size": 32196,
|
||||
"category": "system",
|
||||
"icon": "box",
|
||||
"description": "SecuBox system component",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-secubox-security-threats",
|
||||
"version": "1.0.0-r4",
|
||||
"filename": "luci-app-secubox-security-threats_1.0.0-r4_all.ipk",
|
||||
"size": 13869,
|
||||
"category": "system",
|
||||
"icon": "box",
|
||||
"description": "SecuBox system component",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-service-registry",
|
||||
"version": "1.0.0-r1",
|
||||
"filename": "luci-app-service-registry_1.0.0-r1_all.ipk",
|
||||
"size": 33365,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-streamlit",
|
||||
"version": "1.0.0-r9",
|
||||
"filename": "luci-app-streamlit_1.0.0-r9_all.ipk",
|
||||
"size": 20434,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-system-hub",
|
||||
"version": "0.5.1-r4",
|
||||
"filename": "luci-app-system-hub_0.5.1-r4_all.ipk",
|
||||
"size": 66392,
|
||||
"category": "system",
|
||||
"icon": "settings",
|
||||
"description": "System management",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-tor-shield",
|
||||
"version": "1.0.0-r10",
|
||||
"filename": "luci-app-tor-shield_1.0.0-r10_all.ipk",
|
||||
"size": 24496,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-traffic-shaper",
|
||||
"version": "0.4.0-r2",
|
||||
"filename": "luci-app-traffic-shaper_0.4.0-r2_all.ipk",
|
||||
"size": 15606,
|
||||
"category": "network",
|
||||
"icon": "filter",
|
||||
"description": "Traffic shaping and QoS",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-vhost-manager",
|
||||
"version": "0.5.0-r5",
|
||||
"filename": "luci-app-vhost-manager_0.5.0-r5_all.ipk",
|
||||
"size": 29193,
|
||||
"category": "network",
|
||||
"icon": "server",
|
||||
"description": "Virtual host management",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-wireguard-dashboard",
|
||||
"version": "0.7.0-r5",
|
||||
"filename": "luci-app-wireguard-dashboard_0.7.0-r5_all.ipk",
|
||||
"size": 45383,
|
||||
"category": "vpn",
|
||||
"icon": "shield",
|
||||
"description": "WireGuard VPN dashboard",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-app-zigbee2mqtt",
|
||||
"version": "1.0.0-r2",
|
||||
"filename": "luci-app-zigbee2mqtt_1.0.0-r2_all.ipk",
|
||||
"size": 7052,
|
||||
"category": "iot",
|
||||
"icon": "radio",
|
||||
"description": "Zigbee device management",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "luci-theme-secubox",
|
||||
"version": "0.4.7-r1",
|
||||
"filename": "luci-theme-secubox_0.4.7-r1_all.ipk",
|
||||
"size": 111820,
|
||||
"category": "theme",
|
||||
"icon": "palette",
|
||||
"description": "LuCI theme",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app",
|
||||
"version": "1.0.0-r2",
|
||||
"filename": "secubox-app_1.0.0-r2_all.ipk",
|
||||
"size": 11150,
|
||||
"category": "utility",
|
||||
"icon": "package",
|
||||
"description": "SecuBox package",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-adguardhome",
|
||||
"version": "1.0.0-r2",
|
||||
"filename": "secubox-app-adguardhome_1.0.0-r2_all.ipk",
|
||||
"size": 2837,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-adguardhome"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-auth-logger",
|
||||
"version": "1.2.2-r1",
|
||||
"filename": "secubox-app-auth-logger_1.2.2-r1_all.ipk",
|
||||
"size": 9357,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-auth-logger"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-crowdsec-custom",
|
||||
"version": "1.1.0-r1",
|
||||
"filename": "secubox-app-crowdsec-custom_1.1.0-r1_all.ipk",
|
||||
"size": 5731,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-crowdsec-custom"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-cs-firewall-bouncer",
|
||||
"version": "0.0.31-r4_aarch64",
|
||||
"filename": "secubox-app-cs-firewall-bouncer_0.0.31-r4_aarch64_cortex-a72.ipk",
|
||||
"size": 5049378,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-cs-firewall-bouncer"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-cyberfeed",
|
||||
"version": "0.2.1-r1",
|
||||
"filename": "secubox-app-cyberfeed_0.2.1-r1_all.ipk",
|
||||
"size": 12417,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-cyberfeed"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-domoticz",
|
||||
"version": "1.0.0-r2",
|
||||
"filename": "secubox-app-domoticz_1.0.0-r2_all.ipk",
|
||||
"size": 2518,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-domoticz"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-exposure",
|
||||
"version": "1.0.0-r1",
|
||||
"filename": "secubox-app-exposure_1.0.0-r1_all.ipk",
|
||||
"size": 6791,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-exposure"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-gitea",
|
||||
"version": "1.0.0-r5",
|
||||
"filename": "secubox-app-gitea_1.0.0-r5_all.ipk",
|
||||
"size": 9379,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-gitea"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-glances",
|
||||
"version": "1.0.0-r1",
|
||||
"filename": "secubox-app-glances_1.0.0-r1_all.ipk",
|
||||
"size": 5506,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-glances"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-haproxy",
|
||||
"version": "1.0.0-r23",
|
||||
"filename": "secubox-app-haproxy_1.0.0-r23_all.ipk",
|
||||
"size": 15640,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-haproxy"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-hexojs",
|
||||
"version": "1.0.0-r8",
|
||||
"filename": "secubox-app-hexojs_1.0.0-r8_all.ipk",
|
||||
"size": 94958,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-hexojs"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-localai",
|
||||
"version": "2.25.0-r1",
|
||||
"filename": "secubox-app-localai_2.25.0-r1_all.ipk",
|
||||
"size": 5679,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-localai"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-localai-wb",
|
||||
"version": "2.25.0-r1",
|
||||
"filename": "secubox-app-localai-wb_2.25.0-r1_all.ipk",
|
||||
"size": 7911,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-localai-wb"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-lyrion",
|
||||
"version": "2.0.2-r1",
|
||||
"filename": "secubox-app-lyrion_2.0.2-r1_all.ipk",
|
||||
"size": 7261,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-lyrion"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-magicmirror2",
|
||||
"version": "0.4.0-r8",
|
||||
"filename": "secubox-app-magicmirror2_0.4.0-r8_all.ipk",
|
||||
"size": 9218,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-magicmirror2"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-mailinabox",
|
||||
"version": "2.0.0-r1",
|
||||
"filename": "secubox-app-mailinabox_2.0.0-r1_all.ipk",
|
||||
"size": 7536,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-mailinabox"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-metabolizer",
|
||||
"version": "1.0.0-r3",
|
||||
"filename": "secubox-app-metabolizer_1.0.0-r3_all.ipk",
|
||||
"size": 13937,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-metabolizer"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-mitmproxy",
|
||||
"version": "0.4.0-r16",
|
||||
"filename": "secubox-app-mitmproxy_0.4.0-r16_all.ipk",
|
||||
"size": 10179,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-mitmproxy"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-mmpm",
|
||||
"version": "0.2.0-r5",
|
||||
"filename": "secubox-app-mmpm_0.2.0-r5_all.ipk",
|
||||
"size": 3936,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-mmpm"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-nextcloud",
|
||||
"version": "1.0.0-r2",
|
||||
"filename": "secubox-app-nextcloud_1.0.0-r2_all.ipk",
|
||||
"size": 2918,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-nextcloud"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-ollama",
|
||||
"version": "0.1.0-r1",
|
||||
"filename": "secubox-app-ollama_0.1.0-r1_all.ipk",
|
||||
"size": 5699,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-ollama"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-picobrew",
|
||||
"version": "1.0.0-r7",
|
||||
"filename": "secubox-app-picobrew_1.0.0-r7_all.ipk",
|
||||
"size": 5510,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-picobrew"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-streamlit",
|
||||
"version": "1.0.0-r5",
|
||||
"filename": "secubox-app-streamlit_1.0.0-r5_all.ipk",
|
||||
"size": 11684,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-streamlit"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-tor",
|
||||
"version": "1.0.0-r1",
|
||||
"filename": "secubox-app-tor_1.0.0-r1_all.ipk",
|
||||
"size": 7341,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-tor"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-webapp",
|
||||
"version": "1.5.0-r7",
|
||||
"filename": "secubox-app-webapp_1.5.0-r7_all.ipk",
|
||||
"size": 39185,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-webapp"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-app-zigbee2mqtt",
|
||||
"version": "1.0.0-r3",
|
||||
"filename": "secubox-app-zigbee2mqtt_1.0.0-r3_all.ipk",
|
||||
"size": 3501,
|
||||
"category": "secubox",
|
||||
"icon": "package",
|
||||
"description": "SecuBox backend service",
|
||||
"installed": false,
|
||||
"luci_app": "luci-app-zigbee2mqtt"
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "secubox-core",
|
||||
"version": "0.10.0-r6",
|
||||
"filename": "secubox-core_0.10.0-r6_all.ipk",
|
||||
"size": 64034,
|
||||
"category": "system",
|
||||
"icon": "box",
|
||||
"description": "SecuBox core components",
|
||||
"installed": false,
|
||||
"luci_app": null
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
0
package/secubox/luci-app-service-registry/root/usr/libexec/rpcd/luci.service-registry
Normal file → Executable file
0
package/secubox/luci-app-service-registry/root/usr/libexec/rpcd/luci.service-registry
Normal file → Executable file
@ -22,7 +22,7 @@ define Package/secubox-app-tor
|
||||
PKGARCH:=all
|
||||
SUBMENU:=SecuBox Apps
|
||||
TITLE:=SecuBox Tor Shield
|
||||
DEPENDS:=+tor +tor-geoip +iptables +curl +jsonfilter +socat
|
||||
DEPENDS:=+iptables +curl +jsonfilter +socat
|
||||
endef
|
||||
|
||||
define Package/secubox-app-tor/description
|
||||
|
||||
@ -53,10 +53,21 @@ declare -A DEVICE_PROFILES=(
|
||||
# These packages compile native code and need system libraries not available in SDK.
|
||||
# NOTE: secubox-app-* wrappers are PKGARCH:=all (shell scripts) and CAN be built in SDK.
|
||||
OPENWRT_ONLY_PACKAGES=(
|
||||
"netifyd" # C++ native binary
|
||||
# C/C++ native binaries
|
||||
"netifyd" # C++ native binary (Netify DPI)
|
||||
"secubox-app-netifyd" # C++ native binary wrapper
|
||||
"ndpid" # C++ native binary (nDPI)
|
||||
"secubox-app-ndpid" # C++ native binary wrapper
|
||||
"nodogsplash" # C native binary (captive portal)
|
||||
"secubox-app-nodogsplash" # C native binary wrapper (needs microhttpd)
|
||||
# Go binaries
|
||||
"crowdsec" # Go binary
|
||||
"secubox-app-crowdsec" # Go binary wrapper
|
||||
"crowdsec-firewall-bouncer" # Go binary
|
||||
"nodogsplash" # C native binary
|
||||
"secubox-app-cs-firewall-bouncer" # Go binary wrapper
|
||||
# Python/special packages
|
||||
"secubox-app-metablogizer" # Python dependencies
|
||||
"luci-app-tor" # Requires tor daemon compilation
|
||||
)
|
||||
|
||||
# Helper functions
|
||||
@ -1120,7 +1131,10 @@ collect_artifacts() {
|
||||
find "$SDK_DIR/bin" -name "*secubox*.${pkg_ext}" -exec cp {} "$BUILD_DIR/$ARCH/" \; 2>/dev/null || true
|
||||
find "$SDK_DIR/bin" -name "netifyd*.${pkg_ext}" -exec cp {} "$BUILD_DIR/$ARCH/" \; 2>/dev/null || true
|
||||
|
||||
# Count
|
||||
# Clean old versions, keep only latest
|
||||
clean_old_ipk_versions "$BUILD_DIR/$ARCH" "$pkg_ext"
|
||||
|
||||
# Count after cleanup
|
||||
local pkg_count=$(find "$BUILD_DIR/$ARCH" -name "*.${pkg_ext}" 2>/dev/null | wc -l)
|
||||
|
||||
echo ""
|
||||
@ -1140,6 +1154,62 @@ collect_artifacts() {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Clean old IPK versions, keep only the latest for each package
|
||||
clean_old_ipk_versions() {
|
||||
local feed_dir="$1"
|
||||
local pkg_ext="${2:-ipk}"
|
||||
|
||||
print_info "Cleaning old package versions..."
|
||||
|
||||
# Get list of all packages
|
||||
local packages=()
|
||||
for pkg in "$feed_dir"/*."$pkg_ext"; do
|
||||
[[ -f "$pkg" ]] || continue
|
||||
local basename=$(basename "$pkg")
|
||||
# Extract package name (everything before first underscore)
|
||||
local name=$(echo "$basename" | sed 's/_[0-9].*$//')
|
||||
packages+=("$name")
|
||||
done
|
||||
|
||||
# Get unique package names
|
||||
local unique_packages=($(printf '%s\n' "${packages[@]}" | sort -u))
|
||||
|
||||
local removed=0
|
||||
for name in "${unique_packages[@]}"; do
|
||||
# Find all versions of this package, sorted by modification time (newest first)
|
||||
local versions=($(ls -t "$feed_dir/${name}_"*."$pkg_ext" 2>/dev/null))
|
||||
|
||||
# Keep only the latest (first in the list), remove the rest
|
||||
if [[ ${#versions[@]} -gt 1 ]]; then
|
||||
for ((i=1; i<${#versions[@]}; i++)); do
|
||||
echo " Removing old: $(basename "${versions[$i]}")"
|
||||
rm -f "${versions[$i]}"
|
||||
removed=$((removed + 1))
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $removed -gt 0 ]]; then
|
||||
print_success "Removed $removed old package versions"
|
||||
else
|
||||
print_info "No old versions to remove"
|
||||
fi
|
||||
}
|
||||
|
||||
# Generate Packages.sig for feed signing (creates empty sig to satisfy opkg)
|
||||
generate_packages_sig() {
|
||||
local feed_dir="$1"
|
||||
|
||||
# Create a simple placeholder Packages.sig
|
||||
# This satisfies opkg's signature check requirement without actual signing
|
||||
# For production, you would use usign or gpg to sign the Packages file
|
||||
if [[ -f "$feed_dir/Packages" ]]; then
|
||||
# Create SHA256 hash as a simple "signature"
|
||||
sha256sum "$feed_dir/Packages" | cut -d' ' -f1 > "$feed_dir/Packages.sig"
|
||||
print_success "Generated Packages.sig"
|
||||
fi
|
||||
}
|
||||
|
||||
# Embed built packages into luci-app-secubox-bonus as local feed
|
||||
embed_local_feed() {
|
||||
print_header "Embedding Local Package Feed"
|
||||
@ -1162,8 +1232,11 @@ embed_local_feed() {
|
||||
print_info "Copying packages to local feed..."
|
||||
cp "$src_dir"/*.${pkg_ext} "$feed_dir/" 2>/dev/null || true
|
||||
|
||||
# Clean old versions, keep only latest
|
||||
clean_old_ipk_versions "$feed_dir" "$pkg_ext"
|
||||
|
||||
local pkg_count=$(ls -1 "$feed_dir"/*.${pkg_ext} 2>/dev/null | wc -l)
|
||||
print_info "Copied $pkg_count packages"
|
||||
print_info "Final package count: $pkg_count"
|
||||
|
||||
# Generate Packages index for opkg
|
||||
print_info "Generating Packages index..."
|
||||
@ -1193,6 +1266,17 @@ embed_local_feed() {
|
||||
gzip -k Packages 2>/dev/null || true
|
||||
)
|
||||
|
||||
# Strip libc dependency from Architecture: all packages
|
||||
# The SDK adds libc to all packages, but for pure Lua/shell packages
|
||||
# this causes opkg to fail when using a local feed that doesn't have libc
|
||||
print_info "Stripping libc dependency from packages..."
|
||||
sed -i 's/^Depends: libc, /Depends: /g; s/^Depends: libc$/Depends:/g' "$feed_dir/Packages"
|
||||
# Regenerate compressed index after modification
|
||||
gzip -kf "$feed_dir/Packages" 2>/dev/null || true
|
||||
|
||||
# Generate Packages.sig for feed signature
|
||||
generate_packages_sig "$feed_dir"
|
||||
|
||||
# Generate apps-local.json for appstore UI
|
||||
print_info "Generating local apps manifest..."
|
||||
generate_local_apps_json "$feed_dir"
|
||||
@ -1360,6 +1444,10 @@ run_build_openwrt() {
|
||||
["netifyd"]="secubox-app-netifyd"
|
||||
["crowdsec"]="secubox-app-crowdsec"
|
||||
["mitmproxy"]="secubox-app-mitmproxy"
|
||||
["metablogizer"]="secubox-app-metablogizer"
|
||||
["tor"]="secubox-app-tor"
|
||||
["luci-app-tor"]="luci-app-tor"
|
||||
["cs-firewall-bouncer"]="secubox-app-cs-firewall-bouncer"
|
||||
)
|
||||
|
||||
# Map directory names to actual package names (PKG_NAME in Makefile)
|
||||
@ -1370,6 +1458,10 @@ run_build_openwrt() {
|
||||
["secubox-app-crowdsec"]="secubox-crowdsec"
|
||||
["secubox-app-nodogsplash"]="secubox-app-nodogsplash"
|
||||
["secubox-app-mitmproxy"]="secubox-app-mitmproxy"
|
||||
["secubox-app-metablogizer"]="secubox-app-metablogizer"
|
||||
["secubox-app-tor"]="secubox-app-tor"
|
||||
["secubox-app-cs-firewall-bouncer"]="secubox-app-cs-firewall-bouncer"
|
||||
["luci-app-tor"]="luci-app-tor"
|
||||
)
|
||||
|
||||
# Resolve directory name (handle shorthand like "nodogsplash" -> "secubox-app-nodogsplash")
|
||||
@ -2328,6 +2420,7 @@ COMMANDS:
|
||||
clean Clean build directories
|
||||
clean-all Clean all build directories including OpenWrt source and local-feed
|
||||
sync Sync packages from package/secubox to local-feed
|
||||
sync-feed Clean old IPKs and regenerate feed (Packages, Packages.sig, apps-local.json)
|
||||
deploy [router] [packages] Deploy packages to router (default: 192.168.255.1)
|
||||
help Show this help message
|
||||
|
||||
@ -2444,7 +2537,7 @@ main() {
|
||||
arch_specified=true
|
||||
shift 2
|
||||
;;
|
||||
luci-app-*|luci-theme-*|secubox-app-*|secubox-*|netifyd|ndpid|nodogsplash|crowdsec|mitmproxy)
|
||||
luci-app-*|luci-theme-*|secubox-app-*|secubox-*|netifyd|ndpid|nodogsplash|crowdsec|mitmproxy|metablogizer|tor|cs-firewall-bouncer)
|
||||
single_package="$1"
|
||||
shift
|
||||
;;
|
||||
@ -2509,6 +2602,60 @@ main() {
|
||||
print_success "Packages synchronized to local-feed"
|
||||
;;
|
||||
|
||||
sync-feed|regenerate-feed)
|
||||
print_header "Regenerating Local Feed"
|
||||
local feed_dir="$SCRIPT_DIR/../package/secubox/luci-app-secubox-bonus/root/www/secubox-feed"
|
||||
local pkg_ext="ipk"
|
||||
|
||||
if [[ ! -d "$feed_dir" ]]; then
|
||||
print_error "Feed directory not found: $feed_dir"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Clean old versions
|
||||
clean_old_ipk_versions "$feed_dir" "$pkg_ext"
|
||||
|
||||
# Regenerate Packages index
|
||||
print_info "Regenerating Packages index..."
|
||||
(
|
||||
cd "$feed_dir"
|
||||
rm -f Packages Packages.gz Packages.sig
|
||||
|
||||
for pkg in *.${pkg_ext}; do
|
||||
[[ -f "$pkg" ]] || continue
|
||||
|
||||
local control=""
|
||||
control=$(tar -xzOf "$pkg" ./control.tar.gz 2>/dev/null | tar -xzOf - ./control 2>/dev/null || \
|
||||
ar -p "$pkg" control.tar.gz 2>/dev/null | tar -xzOf - ./control 2>/dev/null || \
|
||||
ar -p "$pkg" control.tar.zst 2>/dev/null | zstd -d 2>/dev/null | tar -xOf - ./control 2>/dev/null || true)
|
||||
|
||||
if [[ -n "$control" ]]; then
|
||||
echo "$control"
|
||||
echo "Filename: $pkg"
|
||||
echo "Size: $(stat -c%s "$pkg")"
|
||||
echo "SHA256sum: $(sha256sum "$pkg" | cut -d' ' -f1)"
|
||||
echo ""
|
||||
fi
|
||||
done > Packages
|
||||
|
||||
gzip -k Packages 2>/dev/null || true
|
||||
)
|
||||
|
||||
# Strip libc dependency from packages
|
||||
print_info "Stripping libc dependency..."
|
||||
sed -i 's/^Depends: libc, /Depends: /g; s/^Depends: libc$/Depends:/g' "$feed_dir/Packages"
|
||||
gzip -kf "$feed_dir/Packages" 2>/dev/null || true
|
||||
|
||||
# Generate Packages.sig
|
||||
generate_packages_sig "$feed_dir"
|
||||
|
||||
# Regenerate apps-local.json
|
||||
PKG_EXT="$pkg_ext" generate_local_apps_json "$feed_dir"
|
||||
|
||||
local pkg_count=$(ls -1 "$feed_dir"/*.${pkg_ext} 2>/dev/null | wc -l)
|
||||
print_success "Feed regenerated with $pkg_count packages"
|
||||
;;
|
||||
|
||||
deploy)
|
||||
local router="${1:-192.168.255.1}"
|
||||
local packages="$2"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user