|
|
|
|
@ -27,6 +27,25 @@ PATH=/usr/sbin:/usr/bin:/sbin:/bin
|
|
|
|
|
|
|
|
|
|
# installer main body:
|
|
|
|
|
_main() {
|
|
|
|
|
# detect environment
|
|
|
|
|
PVE=$(systemctl show pveproxy.service --no-page | grep 'LoadState=' | cut -f2 -d=)
|
|
|
|
|
PMG=$(systemctl show pmgproxy.service --no-page | grep 'LoadState=' | cut -f2 -d=)
|
|
|
|
|
PBS=$(systemctl show proxmox-backup-proxy.service --no-page | grep 'LoadState=' | cut -f2 -d=)
|
|
|
|
|
if [ "$PVE" = "loaded" ]; then
|
|
|
|
|
SERVICE="pve"
|
|
|
|
|
SERVICE_MANAGER="pve-manager"
|
|
|
|
|
elif [ "$PMG" = "loaded" ]; then
|
|
|
|
|
SERVICE="pmg"
|
|
|
|
|
SERVICE_MANAGER="pmg-manager"
|
|
|
|
|
elif [ "$PBS" = "loaded" ]; then
|
|
|
|
|
SERVICE="pbs"
|
|
|
|
|
SERVICE_MANAGER="proxmox-backup-manager"
|
|
|
|
|
else
|
|
|
|
|
echo "No Proxmox service detected; exiting."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ensure $1 exists so 'set -u' doesn't error out
|
|
|
|
|
{ [ "$#" -eq "0" ] && set -- ""; } > /dev/null 2>&1
|
|
|
|
|
|
|
|
|
|
@ -52,17 +71,18 @@ _main() {
|
|
|
|
|
_usage
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
exit 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_uninstall() {
|
|
|
|
|
set -x
|
|
|
|
|
[ -f "/etc/apt/apt.conf.d/86pve-nags" ] &&
|
|
|
|
|
rm -f "/etc/apt/apt.conf.d/86pve-nags"
|
|
|
|
|
[ -f "/usr/share/pve-nag-buster.sh" ] &&
|
|
|
|
|
rm -f "/usr/share/pve-nag-buster.sh"
|
|
|
|
|
[ -f "/etc/apt/apt.conf.d/86${SERVICE}-nags" ] &&
|
|
|
|
|
rm -f "/etc/apt/apt.conf.d/86${SERVICE}-nags"
|
|
|
|
|
[ -f "/usr/share/${SERVICE}-nag-buster.sh" ] &&
|
|
|
|
|
rm -f "/usr/share/${SERVICE}-nag-buster.sh"
|
|
|
|
|
|
|
|
|
|
echo "Script and dpkg hooks removed, please manually remove /etc/apt/sources.list.d/pve-no-subscription.list if desired"
|
|
|
|
|
echo "Script and dpkg hooks removed, please manually remove /etc/apt/sources.list.d/${SERVICE}-no-subscription.list if desired"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_install() {
|
|
|
|
|
@ -77,26 +97,26 @@ _install() {
|
|
|
|
|
RELEASE=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release)
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# create the pve-no-subscription list
|
|
|
|
|
echo "Creating PVE no-subscription repo list ..."
|
|
|
|
|
cat <<- EOF > "/etc/apt/sources.list.d/pve-no-subscription.list"
|
|
|
|
|
# .list file automatically generated by pve-nag-buster at $(date)
|
|
|
|
|
# create the ${SERVICE}-no-subscription list
|
|
|
|
|
echo "Creating ${SERVICE} no-subscription repo list ..."
|
|
|
|
|
cat <<- EOF > "/etc/apt/sources.list.d/${SERVICE}-no-subscription.list"
|
|
|
|
|
# .list file automatically generated by ${SERVICE}-nag-buster at $(date)
|
|
|
|
|
#
|
|
|
|
|
# If pve-nag-buster is installed again this file will be overwritten
|
|
|
|
|
# If ${SERVICE}-nag-buster is installed again this file will be overwritten
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
deb http://download.proxmox.com/debian/pve $RELEASE pve-no-subscription
|
|
|
|
|
deb http://download.proxmox.com/debian/${SERVICE} $RELEASE ${SERVICE}-no-subscription
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
# create dpkg pre/post install hooks for persistence
|
|
|
|
|
echo "Creating dpkg hooks in /etc/apt/apt.conf.d ..."
|
|
|
|
|
cat <<- 'EOF' > "/etc/apt/apt.conf.d/86pve-nags"
|
|
|
|
|
cat <<- EOF > "/etc/apt/apt.conf.d/86${SERVICE}-nags"
|
|
|
|
|
DPkg::Pre-Install-Pkgs {
|
|
|
|
|
"while read -r pkg; do case $pkg in *proxmox-widget-toolkit* | *pve-manager*) touch /tmp/.pve-nag-buster && exit 0; esac done < /dev/stdin";
|
|
|
|
|
"while read -r pkg; do case \$pkg in *proxmox-widget-toolkit* | *${SERVICE_MANAGER}*) touch /tmp/.${SERVICE}-nag-buster && exit 0; esac done < /dev/stdin";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
DPkg::Post-Invoke {
|
|
|
|
|
"[ -f /tmp/.pve-nag-buster ] && { /usr/share/pve-nag-buster.sh; rm -f /tmp/.pve-nag-buster; }; exit 0";
|
|
|
|
|
"[ -f /tmp/.${SERVICE}-nag-buster ] && { /usr/share/${SERVICE}-nag-buster.sh; rm -f /tmp/.${SERVICE}-nag-buster; }; exit 0";
|
|
|
|
|
};
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
@ -106,23 +126,23 @@ _install() {
|
|
|
|
|
# packed script requested
|
|
|
|
|
temp="$(mktemp)" && trap "rm -f $temp" EXIT
|
|
|
|
|
emit_script > "$temp"
|
|
|
|
|
elif [ -f "pve-nag-buster.sh" ]; then
|
|
|
|
|
elif [ -f "${SERVICE}-nag-buster.sh" ]; then
|
|
|
|
|
# local copy available
|
|
|
|
|
temp="pve-nag-buster.sh"
|
|
|
|
|
temp="${SERVICE}-nag-buster.sh"
|
|
|
|
|
else
|
|
|
|
|
# fetch from github
|
|
|
|
|
echo "Fetching hook script from GitHub ..."
|
|
|
|
|
tempd="$(mktemp -d)" &&
|
|
|
|
|
trap "echo 'Cleaning up temporary files ...'; rm -f $tempd/*; rmdir $tempd" EXIT
|
|
|
|
|
temp="$tempd/pve-nag-buster.sh"
|
|
|
|
|
wget https://raw.githubusercontent.com/foundObjects/pve-nag-buster/master/pve-nag-buster.sh \
|
|
|
|
|
temp="$tempd/${SERVICE}-nag-buster.sh"
|
|
|
|
|
wget https://raw.githubusercontent.com/foundObjects/pve-nag-buster/master/${SERVICE}-nag-buster.sh \
|
|
|
|
|
-q --show-progress -O "$temp"
|
|
|
|
|
fi
|
|
|
|
|
echo "Installing hook script as /usr/share/pve-nag-buster.sh"
|
|
|
|
|
install -o root -m 0550 "$temp" "/usr/share/pve-nag-buster.sh"
|
|
|
|
|
echo "Installing hook script as /usr/share/${SERVICE}-nag-buster.sh"
|
|
|
|
|
install -o root -m 0550 "$temp" "/usr/share/${SERVICE}-nag-buster.sh"
|
|
|
|
|
|
|
|
|
|
echo "Running patch script"
|
|
|
|
|
/usr/share/pve-nag-buster.sh
|
|
|
|
|
/usr/share/${SERVICE}-nag-buster.sh
|
|
|
|
|
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
@ -139,26 +159,20 @@ _install() {
|
|
|
|
|
# pve-nag-buster.sh (v04) encoded below:
|
|
|
|
|
|
|
|
|
|
emit_script() {
|
|
|
|
|
base64 -d << 'YEET' | unxz
|
|
|
|
|
/Td6WFoAAATm1rRGAgAhARwAAAAQz1jM4AYGA5ZdABGIQkY99BY0cwoNj8U0dcgowbs41qLC+aej
|
|
|
|
|
mGQYj9kDeUYQYXlWIuqhoJLO08e8hIe8MoGJqvcVxM5VQehFNPqq4OH1KhbHgYGz5QSdcYFBPv2D
|
|
|
|
|
jY49io85pCEdBXRw6wLkkTOpm7NoQQs6ZJ5F+vtHWz70HmnRfNhHpjrb16GcK0ERg/VLAx58EUIU
|
|
|
|
|
t9OVgypxnKVdJL7/XxL/nUYLT65sn6ZQvKn4HpuPvK5eKgjZfBYJ3Q0CPDeFlXWIew43sqJTwmlX
|
|
|
|
|
drWBSOlU6yMbmhWTJvfLpK9UfBAh6Qwp6UJ6i0Hbwe+d8qKO/SQ1Ciz6qDbM/cLTIENPYvVjlqzV
|
|
|
|
|
jDmBtzdGMfqXXuFbtNB1uIJVUd3o1rRgH0Pau7yYXZVjDxJ5a32NnSwbbxsYqvcDc5QARfe321vH
|
|
|
|
|
ICPQMtds3p/nuCpmMNex8SorApU6X0jvw18w9uMIF7dE2tk0Ge58qiIOH/+V2uVZzAUAUpTa7Gb8
|
|
|
|
|
0aKWiai6f4bMXfLwvUOiDOucGAW2mMzXClpI7m4jrBy+TjSjPSR1JvS2e9ppcVH2vwcXdUOxxybB
|
|
|
|
|
aDCozlkd9DecONOygFJz7J+V323Oe/kocpUmrZjsQTv0kIveFoPKTTkVYX7JPhePK4FJ884pSafp
|
|
|
|
|
D+KYD3iGv3QqUt0rJBFP1IHhCKsRBNAGgDEaWUUCpT7XVRgGnhXcbQYyegBik+zenQOK6VV/t61Y
|
|
|
|
|
S4Jy/U332GBwLIFRjJotutij5xQmly2AnADFu5LauI9Ud8/JaR9A/AnY05eP8LbotD5oAZf973pI
|
|
|
|
|
UJ5kAdMn+tgw4OP26QC35iaDK/EPWNOyz+1pjrfY/cybwBjwstmu4BaTdbNzb3im39wIX7wOcX8e
|
|
|
|
|
NCixn7Q/gi9gDK+i0Ulfi5R20+QenkgNssOJ3kLfhuutsj5mYJ6wYeEE0mshgzDuXK2fW+ehHqtS
|
|
|
|
|
SOTIUn3cTl74GhjX9tlotUaFGdt/yR/8N8TDzc9dRd7As9Eg4gKfP6pnZJnutTB7k7feponsA+3h
|
|
|
|
|
Qbgm0NdjrxL93IdmB6cgJnMUm/A6GJTv5UynUDYwjZO82rUl3zkVGfu5nNKyEWN7K5gfRBi2l5oQ
|
|
|
|
|
kckHNZJwTLt7Vta4OAfd5fraF37aRquLfrI0TGU+wHAqKpwoBpU3YOZ7o5//2CEVk7vrz5O4N6e4
|
|
|
|
|
erl0B2a6XTQ2u/ICDkCLaA2q4FIbMtlCsNHjkKPV5xQO+/maKQAAABUX772XxF0fAAGyB4cMAABV
|
|
|
|
|
zeNfscRn+wIAAAAABFla
|
|
|
|
|
YEET
|
|
|
|
|
pve_script="IyEvYmluL3NoCiMKIyBwdmUtbmFnLWJ1c3Rlci5zaCAodjA1KSBodHRwczovL2dpdGh1Yi5jb20vZm91bmRPYmplY3RzL3B2ZS1uYWctYnVzdGVyCiMgQ29weXJpZ2h0IChDKSAyMDE5IC91L3NlYVF1ZXVlIChyZWRkaXQuY29tL3Uvc2VhUXVldWUpCiMKIyBSZW1vdmVzIFByb3htb3ggVkUgNi54KyBsaWNlbnNlIG5hZ3MgYXV0b21hdGljYWxseSBhZnRlciB1cGRhdGVzCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgojIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxLCBVU0EuCgpOQUdUT0tFTj0iZGF0YS5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPT0gJ2FjdGl2ZSciCk5BR0ZJTEU9Ii91c3Ivc2hhcmUvamF2YXNjcmlwdC9wcm94bW94LXdpZGdldC10b29sa2l0L3Byb3htb3hsaWIuanMiClNDUklQVD0iJChiYXNlbmFtZSAiJDAiKSIKUEFJRF9CQVNFPSIvZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9wdmUtZW50ZXJwcmlzZSIKCiMgZGlzYWJsZSBwYWlkIHJlcG8gbGlzdAoKaWYgWyAtZiAiJFBBSURfQkFTRS5saXN0IiBdOyB0aGVuCiAgZWNobyAiJFNDUklQVDogRGlzYWJsaW5nIFBWRSBwYWlkIHJlcG8gbGlzdCAuLi4iCiAgbXYgLWYgIiRQQUlEX0JBU0UubGlzdCIgIiRQQUlEX0JBU0UuZGlzYWJsZWQiCmZpCgoKIyBkaXNhYmxlIGxpY2Vuc2UgbmFnOiBodHRwczovL2pvaG5zY3MuY29tL3JlbW92ZS1wcm94bW94NTEtc3Vic2NyaXB0aW9uLW5vdGljZS8KCmlmIGdyZXAgLXFzICIkTkFHVE9LRU4iICIkTkFHRklMRSIgPiAvZGV2L251bGwgMj4mMTsgdGhlbgogIGVjaG8gIiRTQ1JJUFQ6IFJlbW92aW5nIE5hZyAuLi4iCiAgc2VkIC1pLm9yaWcgInMvJE5BR1RPS0VOL2ZhbHNlL2ciICIkTkFHRklMRSIKICBzeXN0ZW1jdGwgcmVzdGFydCBwdmVwcm94eS5zZXJ2aWNlCmZp"
|
|
|
|
|
pmg_script="IyEvYmluL3NoCiMKIyBwbWctbmFnLWJ1c3Rlci5zaCAodjA1KSBodHRwczovL2dpdGh1Yi5jb20vZm91bmRPYmplY3RzL3B2ZS1uYWctYnVzdGVyCiMgQ29weXJpZ2h0IChDKSAyMDE5IC91L3NlYVF1ZXVlIChyZWRkaXQuY29tL3Uvc2VhUXVldWUpCiMKIyBSZW1vdmVzIFByb3htb3ggTWFpbCBHYXRld2F5IGxpY2Vuc2UgbmFncyBhdXRvbWF0aWNhbGx5IGFmdGVyIHVwZGF0ZXMKIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyCiMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KCk5BR1RPS0VOPSJkYXRhLnN0YXR1cy50b0xvd2VyQ2FzZSgpICE9PSAnYWN0aXZlJyIKTkFHRklMRT0iL3Vzci9zaGFyZS9qYXZhc2NyaXB0L3Byb3htb3gtd2lkZ2V0LXRvb2xraXQvcHJveG1veGxpYi5qcyIKU0NSSVBUPSIkKGJhc2VuYW1lICIkMCIpIgpQQUlEX0JBU0U9Ii9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL3BtZy1lbnRlcnByaXNlIgoKIyBkaXNhYmxlIHBhaWQgcmVwbyBsaXN0CgppZiBbIC1mICIkUEFJRF9CQVNFLmxpc3QiIF07IHRoZW4KICBlY2hvICIkU0NSSVBUOiBEaXNhYmxpbmcgUE1HIHBhaWQgcmVwbyBsaXN0IC4uLiIKICBtdiAtZiAiJFBBSURfQkFTRS5saXN0IiAiJFBBSURfQkFTRS5kaXNhYmxlZCIKZmkKCiMgZGlzYWJsZSBsaWNlbnNlIG5hZzogaHR0cHM6Ly9qb2huc2NzLmNvbS9yZW1vdmUtcHJveG1veDUxLXN1YnNjcmlwdGlvbi1ub3RpY2UvCgppZiBncmVwIC1xcyAiJE5BR1RPS0VOIiAiJE5BR0ZJTEUiID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KICBlY2hvICIkU0NSSVBUOiBSZW1vdmluZyBOYWcgLi4uIgogIHNlZCAtaS5vcmlnICJzLyROQUdUT0tFTi9mYWxzZS9nIiAiJE5BR0ZJTEUiCiAgc3lzdGVtY3RsIHJlc3RhcnQgcG1ncHJveHkuc2VydmljZQpmaQ=="
|
|
|
|
|
pbs_script="IyEvYmluL3NoCiMKIyBwYnMtbmFnLWJ1c3Rlci5zaCAodjA1KSBodHRwczovL2dpdGh1Yi5jb20vZm91bmRPYmplY3RzL3B2ZS1uYWctYnVzdGVyCiMgQ29weXJpZ2h0IChDKSAyMDE5IC91L3NlYVF1ZXVlIChyZWRkaXQuY29tL3Uvc2VhUXVldWUpCiMKIyBSZW1vdmVzIFByb3htb3ggQmFja3VwIFNlcnZlciBsaWNlbnNlIG5hZ3MgYXV0b21hdGljYWxseSBhZnRlciB1cGRhdGVzCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgojIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxLCBVU0EuCgpOQUdUT0tFTj0iZGF0YS5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPT0gJ2FjdGl2ZSciCk5BR0ZJTEU9Ii91c3Ivc2hhcmUvamF2YXNjcmlwdC9wcm94bW94LXdpZGdldC10b29sa2l0L3Byb3htb3hsaWIuanMiClNDUklQVD0iJChiYXNlbmFtZSAiJDAiKSIKUEFJRF9CQVNFPSIvZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9wYnMtZW50ZXJwcmlzZSIKCiMgZGlzYWJsZSBwYWlkIHJlcG8gbGlzdAoKaWYgWyAtZiAiJFBBSURfQkFTRS5saXN0IiBdOyB0aGVuCiAgZWNobyAiJFNDUklQVDogRGlzYWJsaW5nIFBWRSBwYWlkIHJlcG8gbGlzdCAuLi4iCiAgbXYgLWYgIiRQQUlEX0JBU0UubGlzdCIgIiRQQUlEX0JBU0UuZGlzYWJsZWQiCmZpCgojIGRpc2FibGUgbGljZW5zZSBuYWc6IGh0dHBzOi8vam9obnNjcy5jb20vcmVtb3ZlLXByb3htb3g1MS1zdWJzY3JpcHRpb24tbm90aWNlLwoKaWYgZ3JlcCAtcXMgIiROQUdUT0tFTiIgIiROQUdGSUxFIiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgZWNobyAiJFNDUklQVDogUmVtb3ZpbmcgTmFnIC4uLiIKICBzZWQgLWkub3JpZyAicy8kTkFHVE9LRU4vZmFsc2UvZyIgIiROQUdGSUxFIgogIHN5c3RlbWN0bCByZXN0YXJ0IHByb3htb3gtYmFja3VwLXByb3h5LnNlcnZpY2UKZmk="
|
|
|
|
|
case "$SERVICE" in
|
|
|
|
|
"pve")
|
|
|
|
|
echo ${pve_script} | base64 -d
|
|
|
|
|
;;
|
|
|
|
|
"pmg")
|
|
|
|
|
echo ${pmg_script} | base64 -d
|
|
|
|
|
;;
|
|
|
|
|
"pbs")
|
|
|
|
|
echo ${pbs_script} | base64 -d
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
assert_root() { [ "$(id -u)" -eq '0' ] || { echo "This action requires root." && exit 1; }; }
|
|
|
|
|
|