From a87ca4a8234ddd4e4f138c80249a77b1608b8172 Mon Sep 17 00:00:00 2001 From: shuki Date: Thu, 5 Mar 2026 00:34:43 +0200 Subject: [PATCH] Fix cPanel plugin registration: correct install.json format and include icon - install.json: use cPanel's required fields (type, id, group_id, uri) instead of incorrect keys (target_type, category, url) - Include icon SVG in tar.gz archive (install_plugin validates icon exists) - Without correct fields, install_plugin silently skipped registration Co-Authored-By: Claude Opus 4.6 --- cpanel/gniza/install.json | 7 ++++--- scripts/install.sh | 7 +++++-- scripts/uninstall.sh | 5 ++++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/cpanel/gniza/install.json b/cpanel/gniza/install.json index eeae194..64d84e8 100644 --- a/cpanel/gniza/install.json +++ b/cpanel/gniza/install.json @@ -1,10 +1,11 @@ [ { - "target_type": "link", + "type": "link", + "id": "gniza", "name": "gniza Restore", - "category": "files", + "group_id": "files", "description": "Restore files, databases, email, and more from gniza backups", - "url": "gniza/index.live.cgi", + "uri": "gniza/index.live.cgi", "feature": "gniza_restore", "order": 1, "icon": "gniza/assets/gniza-logo.svg" diff --git a/scripts/install.sh b/scripts/install.sh index c91d89b..448a5a2 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -112,10 +112,13 @@ if [[ -d "$CPANEL_BASE" ]]; then cp "$SOURCE_DIR/cpanel/admin/Gniza/Restore.conf" "$ADMINBIN_DIR/" chmod 0700 "$ADMINBIN_DIR/Restore" chmod 0600 "$ADMINBIN_DIR/Restore.conf" - # Register plugin in cPanel interface (install_plugin expects a tar.gz archive) + # Register plugin in cPanel interface (install_plugin expects a tar.gz archive + # containing install.json + the icon file referenced in it) PLUGIN_TMPDIR="$(mktemp -d)" + mkdir -p "$PLUGIN_TMPDIR/gniza/assets" cp "$SOURCE_DIR/cpanel/gniza/install.json" "$PLUGIN_TMPDIR/" - tar -czf "$PLUGIN_TMPDIR/gniza-cpanel.tar.gz" -C "$PLUGIN_TMPDIR" install.json + cp "$SOURCE_DIR/cpanel/gniza/assets/gniza-logo.svg" "$PLUGIN_TMPDIR/gniza/assets/" + tar -czf "$PLUGIN_TMPDIR/gniza-cpanel.tar.gz" -C "$PLUGIN_TMPDIR" install.json gniza/assets/gniza-logo.svg /usr/local/cpanel/scripts/install_plugin "$PLUGIN_TMPDIR/gniza-cpanel.tar.gz" 2>/dev/null || true rm -rf "$PLUGIN_TMPDIR" echo "cPanel user plugin installed — users will see gniza Restore in Files section" diff --git a/scripts/uninstall.sh b/scripts/uninstall.sh index cdd31d1..7938a0c 100755 --- a/scripts/uninstall.sh +++ b/scripts/uninstall.sh @@ -46,10 +46,13 @@ CPANEL_BASE="/usr/local/cpanel/base/frontend/jupiter" ADMINBIN_DIR="/usr/local/cpanel/bin/admin/Gniza" if [[ -d "$CPANEL_BASE/gniza" ]]; then echo "Removing cPanel user plugin..." - # uninstall_plugin expects a tar.gz archive + # uninstall_plugin expects a tar.gz archive with install.json + icon if [[ -f "$CPANEL_BASE/gniza/install.json" ]]; then PLUGIN_TMPDIR="$(mktemp -d)" + mkdir -p "$PLUGIN_TMPDIR/gniza/assets" cp "$CPANEL_BASE/gniza/install.json" "$PLUGIN_TMPDIR/" + cp "$CPANEL_BASE/gniza/assets/gniza-logo.svg" "$PLUGIN_TMPDIR/gniza/assets/" 2>/dev/null || true + tar -czf "$PLUGIN_TMPDIR/gniza-cpanel.tar.gz" -C "$PLUGIN_TMPDIR" install.json gniza/assets/gniza-logo.svg 2>/dev/null || \ tar -czf "$PLUGIN_TMPDIR/gniza-cpanel.tar.gz" -C "$PLUGIN_TMPDIR" install.json /usr/local/cpanel/scripts/uninstall_plugin "$PLUGIN_TMPDIR/gniza-cpanel.tar.gz" 2>/dev/null || true rm -rf "$PLUGIN_TMPDIR"