Nag screen removal
This commit is contained in:
parent
a02b30ff93
commit
e3ab9c4496
152
pve-mod-nag-screen.sh
Normal file
152
pve-mod-nag-screen.sh
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# This bash script installs a modification to the Proxmox Virtual Environment (PVE) web user interface (UI) which deactivates the subscription nag screen.
|
||||||
|
#
|
||||||
|
|
||||||
|
################### Configuration #############
|
||||||
|
|
||||||
|
# This script's working directory
|
||||||
|
SCRIPT_CWD="$(dirname "$(readlink -f "$0")")"
|
||||||
|
|
||||||
|
# Files backup location
|
||||||
|
BACKUP_DIR="$SCRIPT_CWD/backup"
|
||||||
|
|
||||||
|
# File paths
|
||||||
|
proxmoxlibjs="/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js"
|
||||||
|
proxmoxlibminjs="/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.min.js"
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
|
||||||
|
# Helper functions
|
||||||
|
function msg {
|
||||||
|
echo -e "\e[0m$1\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
#echo message in bold
|
||||||
|
function msgb {
|
||||||
|
echo -e "\e[1m$1\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
function warn {
|
||||||
|
echo -e "\e[0;33m[warning] $1\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
function err {
|
||||||
|
echo -e "\e[0;31m[error] $1\e[0m"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
# End of helper functions
|
||||||
|
|
||||||
|
# Function to display usage information
|
||||||
|
function usage {
|
||||||
|
msgb "\nUsage:\n$0 [install | uninstall]\n"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function restart_proxy {
|
||||||
|
# Restart pveproxy
|
||||||
|
msg "\nRestarting PVE proxy..."
|
||||||
|
systemctl restart pveproxy
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_mod {
|
||||||
|
msg "\nPreparing mod installation..."
|
||||||
|
|
||||||
|
local timestamp=$(date '+%Y-%m-%d_%H-%M-%S')
|
||||||
|
local restart=false
|
||||||
|
|
||||||
|
if (! grep -q "// disable subscription nag screen" "$proxmoxlibjs"); then
|
||||||
|
if [ -f "$proxmoxlibjs" ]; then
|
||||||
|
mkdir -p "$BACKUP_DIR" || err "Error creating backup directory."
|
||||||
|
|
||||||
|
# Create backup of original file
|
||||||
|
msg "Saving current version of \"$proxmoxlibjs\" to \"$BACKUP_DIR/proxmoxlib.js.$timestamp\"."
|
||||||
|
cp -P "$proxmoxlibjs" "$BACKUP_DIR/proxmoxlib.js.$timestamp" || err "Error creating backup."
|
||||||
|
|
||||||
|
msg "Deactivating the nag screen..."
|
||||||
|
sed -i "/Ext.define('Proxmox.Utils',/ {
|
||||||
|
:a;
|
||||||
|
/checked_command:\s*function(orig_cmd)\s*{/!{N;ba;}
|
||||||
|
a\
|
||||||
|
\\
|
||||||
|
// disable subscription nag screen\n\
|
||||||
|
orig_cmd();\n\
|
||||||
|
return;
|
||||||
|
}" "$proxmoxlibjs"
|
||||||
|
fi
|
||||||
|
restart=true
|
||||||
|
else
|
||||||
|
warn "Nag screen already deactivated."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -h "$proxmoxlibminjs" ]; then
|
||||||
|
msg "Disabling minified front-end library file..."
|
||||||
|
(mv "$proxmoxlibminjs" "$BACKUP_DIR/proxmoxlib.min.js.$timestamp" && \
|
||||||
|
ln -s "$proxmoxlibjs" "$proxmoxlibminjs") || err "Error disabling minified front-end library file."
|
||||||
|
restart=true
|
||||||
|
else
|
||||||
|
warn "Minified front-end library file already disabled."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $restart = true ]; then
|
||||||
|
restart_proxy
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function uninstall_mod {
|
||||||
|
msg "\nRestoring modified files..."
|
||||||
|
|
||||||
|
local restart=false
|
||||||
|
|
||||||
|
# Find the latest backup file of proxmoxlib.js
|
||||||
|
local latest_proxmoxlibjs=$(find "$BACKUP_DIR" -name "proxmoxlib.js.*" -type f -printf '%T+ %p\n' 2>/dev/null | sort -r | head -n 1 | awk '{print $2}')
|
||||||
|
|
||||||
|
if [ -z "$latest_proxmoxlibjs" ]; then
|
||||||
|
warn "No proxmoxlib.js backup files found."
|
||||||
|
else
|
||||||
|
# Remove the latest proxmoxlib.js file
|
||||||
|
msg "Restoring \"$proxmoxlibjs\" from the latest backup file."
|
||||||
|
cp "$latest_proxmoxlibjs" "$proxmoxlibjs"
|
||||||
|
restart=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
local latest_proxmoxlibminjs=$(find "$BACKUP_DIR" -name "proxmoxlib.min.js.*" -type f -printf '%T+ %p\n' 2>/dev/null | sort -r | head -n 1 | awk '{print $2}')
|
||||||
|
|
||||||
|
if [ -z "$latest_proxmoxlibminjs" ]; then
|
||||||
|
warn "No proxmoxlib.min.js backup files found."
|
||||||
|
else
|
||||||
|
# Remove the latest proxmoxlib.min.js file
|
||||||
|
msg "Restoring \"$proxmoxlibminjs\" from the latest backup file."
|
||||||
|
rm "$proxmoxlibminjs" && cp "$latest_proxmoxlibminjs" "$proxmoxlibminjs"
|
||||||
|
restart=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $restart = true ]; then
|
||||||
|
restart_proxy
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Process the arguments using a while loop and a case statement
|
||||||
|
executed=0
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
install)
|
||||||
|
executed=$(($executed + 1))
|
||||||
|
msgb "\nInstalling the Proxmox VE nag screen mod..."
|
||||||
|
install_mod
|
||||||
|
echo # add a new line
|
||||||
|
;;
|
||||||
|
uninstall)
|
||||||
|
executed=$(($executed + 1))
|
||||||
|
msgb "\nUninstalling the Proxmox VE nag screen mod..."
|
||||||
|
uninstall_mod
|
||||||
|
echo # add a new line
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# If no arguments were provided or all arguments have been processed, print the usage message
|
||||||
|
if [[ $executed -eq 0 ]]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
Loading…
Reference in New Issue
Block a user