From 180633e4c6f8d7002376155f41302f136138d515 Mon Sep 17 00:00:00 2001 From: arglebargle <28817345+foundObjects@users.noreply.github.com> Date: Mon, 15 Apr 2019 01:03:25 -0700 Subject: [PATCH] Initial code import --- README.md | 19 ++++++++++++ install.sh | 79 +++++++++++++++++++++++++++++++++++++++++++++++ pve-nag-buster.sh | 49 +++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 README.md create mode 100644 install.sh create mode 100644 pve-nag-buster.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..83145b3 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +pve-nag-buster +Persistent license nag removal for Proxmox VE 5.x + +A bash script and dpkg pre/post install hooks to persistently remove the license nags from Proxmox VE 5.x. + +The main script does two things: it removes the "unlicensed node" popup nag from the web gui and it switches repositories from pve-enterprise to pve-no-subscription. The script is called every time a package updates the web gui or the +pve-enterprise source list and will only run if packages containing those files are changed. There are no external dependencies beyond the base packages installed with PVE by default (awk, sed, grep, wget). + +For your convenience the install script also contains a base64 encoded copy of pve-nag-buster.sh for use offline. I'd have just packed everything into install.sh by default but making everyone download, unxz and base64 decode a HEREDOC to look at my code seemed rude. + +To install: + +``` +wget https://raw.githubusercontent.com/foundObjects/pve-nag-buster/master/install.sh +# Read the script +chmod +x install.sh && ./install.sh +``` + +Please get in touch if you find a way to improve anything, otherwise enjoy! diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..572066b --- /dev/null +++ b/install.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# pve-nag-buster (v01) https://github.com/foundObjects/pve-nag-buster +# Copyright (C) 2019 /u/seaQueue (reddit.com/u/seaQueue) +# +# Removes Proxmox VE license nags, with persistence, and switches to free repo +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# create dpkg pre/post install hooks for persistence + +cat <<'EOF' >/etc/apt/apt.conf.d/86pve-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"; +}; + +DPkg::Post-Invoke { + "[ -f /tmp/.pve-nag-buster ] && /usr/share/pve-nag-buster.sh && rm -f /tmp/.pve-nag-buster; exit 0"; +}; +EOF + +# fetch the post-install patch script, patches license nag and switches to pve-no-subscription repository as needed + +if true ; then + wget https://raw.githubusercontent.com/foundObjects/pve-nag-buster/master/pve-nag-buster.sh \ + -O "/usr/share/pve-nag-buster.sh" && \ + chmod +x "/usr/share/pve-nag-buster.sh" && \ + /usr/share/pve-nag-buster.sh + + exit 0 +fi + +# this is the end, example offline code below + +# Example code for inclusion into host provisioning scripts offline: this is just pve-nag-buster.sh +# run through "xz -z -9 -c pve-nag-buster.sh | base64" to avoid needing to fetch the script from github +# To use this installer offline just nuke the entire if block above. + +# Important: if you're not me you should probably decode this and read it to make sure I'm not doing +# something malicious like mining dogecoin or stealing your valuable cat pictures + +# pve-nag-buster.sh (v01) inline: + +base64 -d <<"YEET"| unxz > "/usr/share/pve-nag-buster.sh" && \ + chmod +x "/usr/share/pve-nag-buster.sh" && \ + /usr/share/pve-nag-buster.sh +/Td6WFoAAATm1rRGAgAhARwAAAAQz1jM4AbbA/9dABGIQkY99Bhqpmevep/kIs9shoiNvzAP074w +LI3FnbhLtpij4weS6JtWQK59Kz5tjbWnQyPF33jFXvJXaoUNWDu1jNCPGEbx8L/Xao1oj9pvY3Kg +1uiwbnqiftvfLzce1BEOAIUfKx6NxUsQw0yWhAv0JKdDQzr3V0epamt9elk5d70l1zQjzdqBel0n +MCOUBTlwqQOktYeTk/xN+kDwaypdomKFT1+9ww5z5LXzOkyejfyOHwymxN4PPyp5+gK4KoqWPtf6 +l7uUpjOP/ZG8zQpLV7Or6U2aVfS+fL9XM8ggm+FuxVYUUzDpEMvIhmuCtwPNMkCNkE4kRIVA9zMZ +SA6DY0RQm0XtBzYYUogh9DoomwVHoe6JCldYK1ONpwkM8fV7Te2L4MX8P8L7CykAP1/gmKfG7lWG +YsVyaKPaXqSEC4wmJyAYoPUTzUjDgkbNPq27NGwsoDL6nfLZvcgsjnm9iUMPK14Cumy1+lQkFRBY +RIA7QsrUdgzbAW2ziFI+mNpLhvjPzqARyUseY+Cfe4JQ8XTQ6pjUyWNsXEr417d1ZWE89TjvwD4r +BLVtmDBL9A9XOpyBqyD89YjSt5HQ4WGG91uyal00SAQuG14QKbDcbivdxomt4SaCKfsbjUoJNQgj +ILc+eM0aRtbfVvs0zbQXedNThuYWI/prka5Rbj3X8xGH9vS9//N4jzYiP9NJHrs0YedsN+FJqMop +iot3j+ur19Ag+f5ZSn+lS6Cd3opxlbOZzDTL8hf2YFKv7z7A0lcdOw5KA6lHk0rDmIZQYYB/tj8l +ELTO2MDPxgVquEl/FUEYy5mUV6pE6aBYmedYVY5ytDoWJJGfPjsSZ6lvb13Y1c4z35kXB4eod8PN +lcfepv9xS3DcozMaDEebsNcnGGyeWpwHGcwMPnB3TxtbD91O8fEbvK9SxmoW2fCUl8onI1LinqaR +bxvUSoA2LJiePaM0cxRSZr4ZrHiPq4RzzPgbkDnxR1/MYEFrVshR1W3VJt7sTPhC6aTiusUWM32p +/E6Y3lTngiNTMyneJBty0pSZR8SgNwhMJ3Raz5IpdFyfzt/Npl6xNBSBiTvdWVkYFV9zsun2U50F +FVnRHqi1sh32eLKyKWiBycpuJY5xxgCeyPlVvP5SbXckeOwcXzHYMsA6WcqSae7OWH+RxMi9quwH +LgF8djkl0IwanR3SvkJyaNrpter3uxL42XPFw87UhSEswd5VYSCrzRdS1YXmTOO6wPvpS8t1FRMP +Sai0j7ok3zAz9108x5K6lVLW/4294nKTP1w86AtTG5i1rrgZiAwCSS8CFzegOp+PzMu1upRIDdjP +dQ7DHmJLOfhz8DjgDGYl6W2D/fEZ29rAhPpTOQAAoYLMaRbKxHsAAZsI3A0AAO7s3uCxxGf7AgAA +AAAEWVo= +YEET diff --git a/pve-nag-buster.sh b/pve-nag-buster.sh new file mode 100644 index 0000000..460841d --- /dev/null +++ b/pve-nag-buster.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# +# pve-nag-buster.sh (v01) https://github.com/foundObjects/pve-nag-buster +# Copyright (C) 2019 /u/seaQueue (reddit.com/u/seaQueue) +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +RELEASE=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release) +NAGTOKEN="data.status !== 'Active'" +NAGFILE="/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js" + +# disable license nag: https://johnscs.com/remove-proxmox51-subscription-notice/ + +if $(grep -q "$NAGTOKEN" "$NAGFILE") ; then + echo "$0: Removing Nag ..." + sed -i.orig "s/$NAGTOKEN/false/g" "$NAGFILE" + systemctl restart pveproxy.service +fi + +PAID_BASE="/etc/apt/sources.list.d/pve-enterprise" +FREE_LIST="/etc/apt/sources.list.d/pve-no-subscription.list" + +# switch to pve-no-subscription repo + +if [ -f "$PAID_BASE.list" ]; then + echo "$0: Updating PVE repo lists ..." + mv -f "$PAID_BASE.list" "$PAID_BASE.disabled" + cat <"$FREE_LIST" +# .list file automatically generated by $0 at $(date) +# +# Do not edit this file by hand, it will be overwritten +# + +deb http://download.proxmox.com/debian/pve $RELEASE pve-no-subscription +EOF + +fi