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 <noreply@anthropic.com>
This commit is contained in:
shuki
2026-03-05 00:34:43 +02:00
parent c05a0293b0
commit a87ca4a823
3 changed files with 13 additions and 6 deletions

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"