From 5dcd7f0d75d39236145af370c93eb00ab94e7a33 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Thu, 21 Aug 2025 23:30:12 +0300 Subject: [PATCH 01/16] Rename and reformat pve-fake-subscription to fake-proxmox-subscription --- scripts/postinst | 46 +++++---- scripts/postrm | 13 +-- scripts/prerm | 26 ++--- ...subscription => fake-proxmox-subscription} | 94 ++++++++++++------- .../fake-proxmox-subscription.preset | 1 + .../pve-fake-subscription.preset | 1 - .../system/fake-proxmox-subscription.service | 6 ++ ....timer => fake-proxmox-subscription.timer} | 2 +- .../system/pve-fake-subscription.service | 6 -- 9 files changed, 116 insertions(+), 79 deletions(-) rename usr/bin/{pve-fake-subscription => fake-proxmox-subscription} (62%) create mode 100644 usr/lib/systemd/system-preset/fake-proxmox-subscription.preset delete mode 100644 usr/lib/systemd/system-preset/pve-fake-subscription.preset create mode 100644 usr/lib/systemd/system/fake-proxmox-subscription.service rename usr/lib/systemd/system/{pve-fake-subscription.timer => fake-proxmox-subscription.timer} (67%) delete mode 100644 usr/lib/systemd/system/pve-fake-subscription.service diff --git a/scripts/postinst b/scripts/postinst index da7c9c6..ad8ed91 100755 --- a/scripts/postinst +++ b/scripts/postinst @@ -1,39 +1,44 @@ #!/bin/sh -after_upgrade() { - : +DEBSYSTEMCTL=$(command -v deb-systemd-invoke || echo systemctl) +after_upgrade() { if command -v systemctl >/dev/null; then systemctl --system daemon-reload >/dev/null || true - debsystemctl=$(command -v deb-systemd-invoke || echo systemctl) - if ! systemctl is-enabled pve-fake-subscription.timer >/dev/null - then - : # Ensure this if-clause is not empty. If it were empty, and we had an 'else', then it is an error in shell syntax - systemctl preset pve-fake-subscription.timer >/dev/null || true - $debsystemctl start pve-fake-subscription.timer >/dev/null || true + + if ! systemctl is-enabled fake-proxmox-subscription.timer >/dev/null; then + # Ensure this if-clause is not empty. + # If it was empty, and we had an 'else', then it is an error in shell syntax. + systemctl preset fake-proxmox-subscription.timer >/dev/null || true + $DEBSYSTEMCTL start fake-proxmox-subscription.timer >/dev/null || true + else - $debsystemctl restart pve-fake-subscription.timer >/dev/null || true + $DEBSYSTEMCTL restart fake-proxmox-subscription.timer >/dev/null || true + fi + else - ln -sf /usr/bin/pve-fake-subscription /etc/cron.hourly/pve-fake-subscription + ln -sf /usr/bin/fake-proxmox-subscription /etc/cron.hourly/fake-proxmox-subscription + fi - pve-fake-subscription + # Execute the fake-proxmox-subscription script: + /usr/bin/fake-proxmox-subscription } after_install() { - : - if command -v systemctl >/dev/null; then systemctl --system daemon-reload >/dev/null || true - debsystemctl=$(command -v deb-systemd-invoke || echo systemctl) - systemctl preset pve-fake-subscription.timer >/dev/null || true - $debsystemctl start pve-fake-subscription.timer >/dev/null || true + systemctl preset fake-proxmox-subscription.timer >/dev/null || true + $DEBSYSTEMCTL start fake-proxmox-subscription.timer >/dev/null || true + else - ln -sf /usr/bin/pve-fake-subscription /etc/cron.hourly/pve-fake-subscription + ln -sf /usr/bin/fake-proxmox-subscription /etc/cron.hourly/fake-proxmox-subscription + fi - pve-fake-subscription + # Execute the fake-proxmox-subscription script: + /usr/bin/fake-proxmox-subscription } if { [ "${1}" = "configure" ] && [ -z "${2}" ]; } || [ "${1}" = "abort-remove" ]; then @@ -42,15 +47,18 @@ if { [ "${1}" = "configure" ] && [ -z "${2}" ]; } || [ "${1}" = "abort-remove" ] # In that case, this script, which should be idemptoent, is run # to ensure a clean roll-back of the removal. after_install + elif [ "${1}" = "configure" ] && [ -n "${2}" ]; then - upgradeFromVersion="${2}" + UPGRADEDFROMVERSION="${2}" # "after upgrade" here # NOTE: This slot is also used when deb packages are removed, # but their config files aren't, but a newer version of the # package is installed later, called "Config-Files" state. # basically, that still looks a _lot_ like an upgrade to me. after_upgrade "${2}" + elif echo "${1}" | grep -E -q "(abort|fail)"; then echo "Failed to install before the post-installation script was run." >&2 exit 1 + fi diff --git a/scripts/postrm b/scripts/postrm index 77de063..003c242 100755 --- a/scripts/postrm +++ b/scripts/postrm @@ -1,21 +1,18 @@ #!/bin/sh after_remove() { - : - rm -f /etc/subscription rm -f /etc/pmg/subscription rm -f /etc/proxmox-backup/subscription - - rm -f /etc/cron.hourly/pve-fake-subscription + rm -f /etc/cron.hourly/fake-proxmox-subscription } after_purge() { - : + true } dummy() { - : + true } if [ "${1}" = "remove" ] || [ "${1}" = "abort-install" ]; then @@ -24,11 +21,13 @@ if [ "${1}" = "remove" ] || [ "${1}" = "abort-install" ]; then # In that case, this script, which should be idemptoent, is run # to ensure a clean roll-back of the installation. after_remove + elif [ "${1}" = "purge" ] && [ -z "${2}" ]; then # like "on remove", but executes after dpkg deletes config files # 'apt-get purge' runs 'on remove' section, then this section. # There is no equivalent in RPM or ARCH. after_purge + elif [ "${1}" = "upgrade" ]; then # This represents the case where the old package's postrm is called after # the 'preinst' script is called. @@ -37,7 +36,9 @@ elif [ "${1}" = "upgrade" ]; then # upgrade, not the uninstalled one, since it can't anticipate what new # things it will have to do to upgrade for the new version. dummy + elif echo "${1}" | grep -E -q '(fail|abort)'; then echo "Failed to install before the post-removal script was run." >&2 exit 1 + fi diff --git a/scripts/prerm b/scripts/prerm index fdb3552..9b8b9d0 100755 --- a/scripts/prerm +++ b/scripts/prerm @@ -1,29 +1,31 @@ #!/bin/sh -before_remove() { - : +DEBSYSTEMCTL=$(command -v deb-systemd-invoke || echo systemctl) - debsystemctl=$(command -v deb-systemd-invoke || echo systemctl) - $debsystemctl stop pve-fake-subscription.timer >/dev/null || true - systemctl disable pve-fake-subscription.timer >/dev/null || true +before_remove() { + $DEBSYSTEMCTL stop fake-proxmox-subscription.timer >/dev/null || true + systemctl disable fake-proxmox-subscription.timer >/dev/null || true systemctl --system daemon-reload >/dev/null || true } dummy() { - : + true } if [ "${1}" = "remove" ] && [ -z "${2}" ]; then - # "before remove" goes here + # "before remove" goes here: before_remove + elif [ "${1}" = "upgrade" ]; then - # Executed before the old version is removed - # upon upgrade. - # We should generally not do anything here. The newly installed package - # should do the upgrade, not the uninstalled one, since it can't anticipate - # what new things it will have to do to upgrade for the new version. + # This section is executed before the old version is removed upon upgrade. + # Generally, we should not be doing anything here for the purposes of this + # package. The newly installed package should do the upgrade, not the + # uninstalled one. This is mainly because the uninstalled one cannot + # anticipate what the updated package will change. dummy + elif echo "${1}" | grep -E -q "(fail|abort)"; then echo "Failed to install before the pre-removal script was run." >&2 exit 1 + fi diff --git a/usr/bin/pve-fake-subscription b/usr/bin/fake-proxmox-subscription similarity index 62% rename from usr/bin/pve-fake-subscription rename to usr/bin/fake-proxmox-subscription index 41e1798..550fb25 100755 --- a/usr/bin/pve-fake-subscription +++ b/usr/bin/fake-proxmox-subscription @@ -1,8 +1,16 @@ #!/usr/bin/env python3 -# Pollute Proxmox software subscription cache so it won't alert you on dashboard login -# Should be scheduled to run every few hours with a timer to prevent cache from expiring -# If you need to prevent it checking keys against a server, please block "shop.maurer-it.com" in your hosts file +""" +Pollutes the Proxmox software subscription cache so it won't doesn't nag you +on login. + +The script should be scheduled to run every few hours using a timer to prevent +the cache from expiring. + +If you need to prevent it from checking keys against a server, block +"shop.maurer-it.com" in your /etc/hosts file (or block network traffic to the +host) +""" from __future__ import print_function import hashlib @@ -14,38 +22,46 @@ import sys import os from datetime import datetime, timedelta + # PVE & PMG: /usr/share/perl5/PVE/Subscription.pm -# PBS: /usr/lib/x86_64-linux-gnu/proxmox-backup/* (source code at `https://git.proxmox.com/git/proxmox-backup.git`) +# PBS: /usr/lib/x86_64-linux-gnu/proxmox-backup/* +# (Source code available at https://git.proxmox.com/?p=proxmox-backup.git) shared_key_data = "kjfdlskfhiuewhfk947368" server_key_file = "/etc/ssh/ssh_host_rsa_key.pub" -# Default license keys -lic_pve = "pve8p-1145141919" -lic_pmg = "pmgp-1145141919" -lic_pbs = "pbst-1145141919" +# Default license keys: +license_pve = "pve8p-1145141919" +license_pmg = "pmgp-1145141919" +license_pbs = "pbst-1145141919" + +# UI customization: +ui_product_name = "Proxmox" +ui_message = "Jamesits and Arszilla has got your back" +ui_url = "https://github.com/Arszilla/fake-proxmox-subscription" -# UI customization -ui_product_name = "YajuuSenpai" -ui_message = "Yajuu Senpai has got your back" -ui_url = "https://github.com/Jamesits/pve-fake-subscription" def get_timestamp(): return int(time.time()) -# Perl's md5_base64 implementation -def md5_base64_perl(x): - return base64.b64encode(hashlib.md5(x.encode()).digest()).strip(b'=').decode() -# Rust's `base64::encode(tools::md5sum("something")?);` +# Perl's md5_base64 implementation: +def md5_base64_perl(x): + return base64.b64encode(hashlib.md5(x.encode()).digest()).strip(b"=").decode() + + +# Rust's 'base64::encode(tools::md5sum("something")?);': def md5_base64_rs(x): return base64.b64encode(hashlib.md5(x.encode()).digest()).decode() + def generate_server_id(key): return hashlib.md5(key.encode()).hexdigest().upper() + def dt_string(format, offset_secs=0): return (datetime.now() + timedelta(seconds=offset_secs)).strftime(format) + def generate_subscription_pve_pmg(key, server_ids, product_name=ui_product_name): localinfo = { "checktime": get_timestamp(), @@ -63,74 +79,84 @@ def generate_subscription_pve_pmg(key, server_ids, product_name=ui_product_name) return key + "\n" + csum + "\n" + data + "\n" -# key_pattern can be find in /usr/share/perl5/{PVE,PMG}/API2/Subscription.pm -# PVE5+: r'pve([1248])([cbsp])-[0-9a-f]{10}' -# PVE3/4: r'pve([124])([cbsp])-[0-9a-f]{10}' -# PMG: r'pmg([cbsp])-[0-9a-f]{10}' + +# key_pattern can be found in /usr/share/perl5/{PVE,PMG}/API2/Subscription.pm +# PVE5+: r'pve([1248])([cbsp])-[0-9a-f]{10}' +# PVE3/4: r'pve([124])([cbsp])-[0-9a-f]{10}' +# PMG: r'pmg([cbsp])-[0-9a-f]{10}' def activate_pve_pmg(key, subscription_file, *args, **kwargs): - # check if the key format is correct + # Check if the key format is correct: # pattern = re.compile(key_pattern) # if not pattern.match(key): # print("key format error", file=sys.stderr) # sys.exit(1) - # get machine ID + # Get machine ID: server_id = "" with open(server_key_file, "r") as f: server_id = generate_server_id(f.read()) - # generate a license file + # Generate a license file: subscription = generate_subscription_pve_pmg(key, [server_id], *args, **kwargs) - # write license file + # Write the license file: with open(subscription_file, "w") as f: f.write(subscription) + def generate_subscription_pbs(key, server_ids, product_name=ui_product_name, message=ui_message, url=ui_url): localinfo = { - "status": "active", # PBS: `new`, `notfound`, `active`, `invalid` + # Possible values for "status" in PBS: + # - new + # - notfound + # - active + # - invalid + "status": "active", "serverid": ",".join(server_ids), "checktime": get_timestamp(), "key": key, "message": message, "productname": product_name, "regdate": dt_string("%Y-%m-%d %H:%M:%S"), - "nextduedate": dt_string("%Y-%m-%d", 1296000), # 1296000: MAX_LOCAL_KEY_AGE in src/tools/subscription.rs + # 1296000 is the MAX_LOCAL_KEY_AGE in src/tools/subscription.rs + "nextduedate": dt_string("%Y-%m-%d", 1296000), "url": url, } data = base64.standard_b64encode(json.dumps(localinfo).encode()).decode() cat = str(localinfo["checktime"]) + data + shared_key_data - csum = md5_base64_rs(cat) + checksum = md5_base64_rs(cat) + + return key + "\n" + checksum + "\n" + data + "\n" - return key + "\n" + csum + "\n" + data + "\n" # Key pattern: pbst-xxxxxxxxxx def activate_pbs(key, subscription_file, *args, **kwargs): - # get machine ID + # Get machine ID: server_id = "" with open(server_key_file, "r") as f: server_id = generate_server_id(f.read()) - # generate a license file + # Generate a license file: subscription = generate_subscription_pbs(key, [server_id], *args, **kwargs) - # write license file + # Write the license file: with open(subscription_file, "w") as f: f.write(subscription) + if __name__ == "__main__": # Proxmox VE if os.path.exists("/etc/pve"): print("Activating Proxmox VE...") - activate_pve_pmg(lic_pve, "/etc/subscription") + activate_pve_pmg(license_pve, "/etc/subscription") # Proxmox Mail Gateway if os.path.exists("/etc/pmg"): print("Activating Proxmox Mail Gateway...") - activate_pve_pmg(lic_pmg, "/etc/pmg/subscription") + activate_pve_pmg(license_pmg, "/etc/pmg/subscription") # Proxmox Backup Server if os.path.exists("/etc/proxmox-backup"): print("Activating Proxmox Backup Server...") - activate_pbs(lic_pbs, "/etc/proxmox-backup/subscription") + activate_pbs(license_pbs, "/etc/proxmox-backup/subscription") diff --git a/usr/lib/systemd/system-preset/fake-proxmox-subscription.preset b/usr/lib/systemd/system-preset/fake-proxmox-subscription.preset new file mode 100644 index 0000000..7a0e5f1 --- /dev/null +++ b/usr/lib/systemd/system-preset/fake-proxmox-subscription.preset @@ -0,0 +1 @@ +enable fake-proxmox-subscription.timer diff --git a/usr/lib/systemd/system-preset/pve-fake-subscription.preset b/usr/lib/systemd/system-preset/pve-fake-subscription.preset deleted file mode 100644 index b9e8888..0000000 --- a/usr/lib/systemd/system-preset/pve-fake-subscription.preset +++ /dev/null @@ -1 +0,0 @@ -enable pve-fake-subscription.timer diff --git a/usr/lib/systemd/system/fake-proxmox-subscription.service b/usr/lib/systemd/system/fake-proxmox-subscription.service new file mode 100644 index 0000000..34289b6 --- /dev/null +++ b/usr/lib/systemd/system/fake-proxmox-subscription.service @@ -0,0 +1,6 @@ +[Unit] +Description=Fake Proxmox Subscription - Service + +[Service] +Type=oneshot +ExecStart=/usr/bin/fake-proxmox-subscription diff --git a/usr/lib/systemd/system/pve-fake-subscription.timer b/usr/lib/systemd/system/fake-proxmox-subscription.timer similarity index 67% rename from usr/lib/systemd/system/pve-fake-subscription.timer rename to usr/lib/systemd/system/fake-proxmox-subscription.timer index f609151..2589e75 100644 --- a/usr/lib/systemd/system/pve-fake-subscription.timer +++ b/usr/lib/systemd/system/fake-proxmox-subscription.timer @@ -1,5 +1,5 @@ [Unit] -Description=Refresh fake Proxmox VE subscription cache every day +Description=Fake Proxmox Subscription - Refresher [Timer] OnActiveSec=0s diff --git a/usr/lib/systemd/system/pve-fake-subscription.service b/usr/lib/systemd/system/pve-fake-subscription.service deleted file mode 100644 index 46eb64d..0000000 --- a/usr/lib/systemd/system/pve-fake-subscription.service +++ /dev/null @@ -1,6 +0,0 @@ -[Unit] -Description=Fake a Proxmox VE subscription - -[Service] -Type=oneshot -ExecStart=/usr/bin/pve-fake-subscription From 8c788a88c80f76f6704a2df402ca19380e6f3938 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:05:35 +0300 Subject: [PATCH 02/16] Replace old packaging with proper Debian packaging files --- debian/changelog | 5 +++ debian/control | 22 ++++++++++ debian/copyright | 42 +++++++++++++++++++ debian/fake-proxmox-subscription.install | 3 ++ .../fake-proxmox-subscription.postinst | 4 +- .../fake-proxmox-subscription.postrm | 0 .../fake-proxmox-subscription.prerm | 0 debian/rules | 15 +++++++ debian/source/format | 1 + debian/upstream/metadata | 5 +++ nfpm.yaml | 40 ------------------ package.sh | 16 ------- usr/share/doc/pve-fake-subscription/copyright | 7 ---- 13 files changed, 95 insertions(+), 65 deletions(-) create mode 100644 debian/changelog create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/fake-proxmox-subscription.install rename scripts/postinst => debian/fake-proxmox-subscription.postinst (96%) rename scripts/postrm => debian/fake-proxmox-subscription.postrm (100%) rename scripts/prerm => debian/fake-proxmox-subscription.prerm (100%) create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 debian/upstream/metadata delete mode 100644 nfpm.yaml delete mode 100755 package.sh delete mode 100644 usr/share/doc/pve-fake-subscription/copyright diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..8595927 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +fake-proxmox-subscription (1.0.0-1) trixie; urgency=medium + + * Initial release + + -- Arslan Masood Wed, 21 Aug 2025 23:30:35 +0300 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..c9dde99 --- /dev/null +++ b/debian/control @@ -0,0 +1,22 @@ +Source: fake-proxmox-subscription +Section: misc +Priority: optional +Maintainer: Arslan Masood +Uploaders: Arslan Masood +Rules-Requires-Root: no +Build-Depends: + debhelper-compat (= 13), +Standards-Version: 4.7.0 +Homepage: https://github.com/Arszilla/fake-proxmox-subscription +Vcs-Browser: https://github.com/Arszilla/fake-proxmox-subscription +Vcs-Git: https://github.com/Arszilla/fake-proxmox-subscription.git + +Package: fake-proxmox-subscription +Architecture: all +Depends: + ${misc:Depends}, + ${shlibs:Depends}, + python3:any, +Description: Remove "No valid subscription" dialog box in Proxmox products + A package to disables the "No valid subscription" dialog on all Proxmox + products (in theory), regardless of their version. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..27f6f3e --- /dev/null +++ b/debian/copyright @@ -0,0 +1,42 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Source: https://github.com/Arszilla/fake-proxmox-subscription +Upstream-Name: fake-proxmox-subscription +Upstream-Contact: Arslan Masood + +Files: usr/* +Copyright: + 2025 Arslan Masood + 2019-2024 Jamesits +License: GLWTS + +Files: debian/* +Copyright: 2025 Arslan Masood +License: GLWTS + +License: GLWTS + GLWTS(Good Luck With That Shit) Public License + Copyright (c) Every-fucking-one, except the Author + . + Everyone is permitted to copy, distribute, modify, merge, sell, publish, + sublicense or whatever the fuck they want with this software but at their + OWN RISK. + . + Preamble + . + The author has absolutely no fucking clue what the code in this project + does. It might just fucking work or not, there is no third option. + . + . + GOOD LUCK WITH THAT SHIT PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND MODIFICATION + . + 0. You just DO WHATEVER THE FUCK YOU WANT TO as long as you NEVER LEAVE + A FUCKING TRACE TO TRACK THE AUTHOR of the original product to blame for + or held responsible. + . + IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + . + Good luck and Godspeed. diff --git a/debian/fake-proxmox-subscription.install b/debian/fake-proxmox-subscription.install new file mode 100644 index 0000000..d9b9c21 --- /dev/null +++ b/debian/fake-proxmox-subscription.install @@ -0,0 +1,3 @@ +usr/bin/fake-proxmox-subscription usr/bin/ +usr/lib/systemd/system/fake-proxmox-subscription.service usr/lib/systemd/system/ +usr/lib/systemd/system/fake-proxmox-subscription.timer usr/lib/systemd/system/ diff --git a/scripts/postinst b/debian/fake-proxmox-subscription.postinst similarity index 96% rename from scripts/postinst rename to debian/fake-proxmox-subscription.postinst index ad8ed91..87a35fa 100755 --- a/scripts/postinst +++ b/debian/fake-proxmox-subscription.postinst @@ -23,7 +23,7 @@ after_upgrade() { fi # Execute the fake-proxmox-subscription script: - /usr/bin/fake-proxmox-subscription + fake-proxmox-subscription } after_install() { @@ -38,7 +38,7 @@ after_install() { fi # Execute the fake-proxmox-subscription script: - /usr/bin/fake-proxmox-subscription + fake-proxmox-subscription } if { [ "${1}" = "configure" ] && [ -z "${2}" ]; } || [ "${1}" = "abort-remove" ]; then diff --git a/scripts/postrm b/debian/fake-proxmox-subscription.postrm similarity index 100% rename from scripts/postrm rename to debian/fake-proxmox-subscription.postrm diff --git a/scripts/prerm b/debian/fake-proxmox-subscription.prerm similarity index 100% rename from scripts/prerm rename to debian/fake-proxmox-subscription.prerm diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..1a08679 --- /dev/null +++ b/debian/rules @@ -0,0 +1,15 @@ +#!/usr/bin/make -f + +# output every command that modifies files on the build system. +#export DH_VERBOSE = 1 + +%: + dh $@ + +override_dh_install: + dh_install + + chmod 0755 usr/bin/fake-proxmox-subscription + chmod 0644 usr/lib/systemd/system/fake-proxmox-subscription.service + chmod 0644 usr/lib/systemd/system/fake-proxmox-subscription.timer + diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/upstream/metadata b/debian/upstream/metadata new file mode 100644 index 0000000..08b7637 --- /dev/null +++ b/debian/upstream/metadata @@ -0,0 +1,5 @@ +--- +Bug-Database: https://github.com/Arszilla/fake-proxmox-subscription/issues +Bug-Submit: https://github.com/Arszilla/fake-proxmox-subscription/issues/new +Repository-Browse: https://github.com/Arszilla/fake-proxmox-subscription +Repository: https://github.com/Arszilla/fake-proxmox-subscription.git diff --git a/nfpm.yaml b/nfpm.yaml deleted file mode 100644 index db06427..0000000 --- a/nfpm.yaml +++ /dev/null @@ -1,40 +0,0 @@ -name: "pve-fake-subscription" -arch: "all" -platform: "linux" -version: "0.0.11" -version_schema: "semver" -version_metadata: "git" - -epoch: 0 -release: 1 -section: "admin" -priority: "optional" - -maintainer: "Nobody " - -depends: -- python3 -description: | - Pollute the subscription cache of Proxmox VE (>=5.0), Proxmox Mail Gateway (>=5.0) & Proxmox Backup Server (>=1.0) so it won't alert you on dashboard login -vendor: "none" -homepage: "https://github.com/Jamesits/pve-fake-subscription" -license: "GLWTS(Good Luck With That Shit) Public License" - -contents: -- src: "./usr/bin/pve-fake-subscription" - dst: "/usr/bin/pve-fake-subscription" - file_info: - mode: 0755 -- src: "./usr/lib/systemd" - dst: "/usr/lib/systemd" - file_info: - mode: 0644 -- src: "./usr/share/doc/pve-fake-subscription" - dst: "/usr/share/doc/pve-fake-subscription" - file_info: - mode: 0644 - -scripts: - postinstall: "./scripts/postinst" - preremove: "./scripts/prerm" - postremove: "./scripts/postrm" diff --git a/package.sh b/package.sh deleted file mode 100755 index 21d60da..0000000 --- a/package.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -set -Eeuo pipefail -cd "$( dirname "${BASH_SOURCE[0]}" )" || exit 1 - -OUT_DIR="out" - -rm -rf "${OUT_DIR}" -mkdir -p "${OUT_DIR}" - -# build package -nfpm pkg --packager deb --target "${OUT_DIR}" - -# generate checksum -pushd "${OUT_DIR}" >/dev/null -sha256sum -b -- * > sha256sum.txt -popd >/dev/null diff --git a/usr/share/doc/pve-fake-subscription/copyright b/usr/share/doc/pve-fake-subscription/copyright deleted file mode 100644 index 2f77829..0000000 --- a/usr/share/doc/pve-fake-subscription/copyright +++ /dev/null @@ -1,7 +0,0 @@ -Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: pve-fake-subscription -Source: https://github.com/Jamesits/pve-fake-subscription - -Files: * -Copyright: 2019 Nobody -License: GLWTS(Good Luck With That Shit) Public License From e9c2beee52f71cd5c0e0aa996d8055b07602d749 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:08:36 +0300 Subject: [PATCH 03/16] Add Dockerfile --- Dockerfile | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..05da59f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM docker.io/library/debian:stable-slim AS base + +ENV FOLDER=/opt/fake-proxmox-subscription + +WORKDIR /opt/fake-proxmox-subscription + +RUN apt-get update && \ + apt-get install -y --no-install-recommends build-essential debhelper dpkg-dev + +COPY . $FOLDER + +RUN dpkg-buildpackage -us -uc -b From 9c8542c3413294f73d64d578b4a5dc727ba475fc Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:08:44 +0300 Subject: [PATCH 04/16] Add whitespace at the end of the LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index b7cc35b..8d8761c 100644 --- a/LICENSE +++ b/LICENSE @@ -23,4 +23,4 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Good luck and Godspeed. \ No newline at end of file +Good luck and Godspeed. From f24e2138fd9bc8cef445bec44c3c724744615af7 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:08:50 +0300 Subject: [PATCH 05/16] Update README.md --- README.md | 129 ++++++++++++++++++++++-------------------------------- 1 file changed, 52 insertions(+), 77 deletions(-) diff --git a/README.md b/README.md index 1337e5f..e8f9a1e 100644 --- a/README.md +++ b/README.md @@ -1,98 +1,73 @@ -# pve-fake-subscription +## fake-proxmox-subscription +A Debian package to disables the "No valid subscription" dialog on all Proxmox +products (in theory), regardless of their version. -![JavaScript free](https://img.shields.io/badge/JavaScript-free-%09%23f7df1e "No JavaScript is involved in this project. ") +Based on [Jamesits/fake-pve-subscription][1] -Disables the "No valid subscription" dialog on all Proxmox products. +This package was created to provide that the package is built via CI/CD and be +transparent about it - because you'd be installing it on your server afterall, +and who'd install a random `.deb` package on it? -> I am really poor and I can't afford a license. I just want to get rid of the annoying dialog. - -## Features - -Works for: - -- Proxmox VE (5.x or later; 3.x and 4.x [require some manual actions](#compatibility-information-for-old-proxmox-ve-versions)) +### Features +This package should work and patch: +- Proxmox VE (5.x or later - 3.x and 4.x requires some manual actions) - Proxmox Mail Gateway (5.x or later) - Proxmox Backup Server (1.x or later) -Highlights: +What this package does is: +1. **Non-Intrusive**: Performs 0 modification to the system files. +2. **Future-Proof**: Requires no adjustments between system updates & major +upgrades. +3. **Hassle-Free**: Install or uninstall with ease, just 1 command and done. +4. **Debian-ized**: Comes as a proper Debian package, fresh from GitLab CI/CD +to provide transparency to its delivery. +5. **Fuck JavaScript**: No JavaScript is involved in the whole process, because +fuck JavaScript. -- Non-intrusive: zero modification of any system file -- Future-proof: persists between system updates & major upgrades -- Hassle-free: you can uninstall at any time -- Comes with standard Debian package, easy to manage and automate -- **No JavaScript is involved** in the whole process, as I believe JavaScript is harmful to developers +### Usage +#### Installation +Download the [latest `.deb`][2] file found under [releases][2] and install it +with `apt` or `apt-get`: -## Usage - -### Installation - -1. [Download the latest release](https://github.com/Jamesits/pve-fake-subscription/releases/latest) -1. Install: run `dpkg -i pve-fake-subscription_*.deb` as root on every node -1. (Optional) `echo "127.0.0.1 shop.maurer-it.com" | sudo tee -a /etc/hosts` to prevent fake keys from being checked against the Proxmox servers - -Notes: - -After installation, please refrain yourself from clicking the "check" button on the "Subscription" page. It will invalidate the cache and temporary revert your instance into an unlicensed status. - -The fake subscription status doesn't grant you free access to the enterprise repository. You should switch to the no-subscription repository if not already done. Use the following method: - -- [Proxmox VE (PVE)](https://pve.proxmox.com/wiki/Package_Repositories#sysadmin_no_subscription_repo) -- [Proxmox Mail Gateway (PMG)](https://pmg.proxmox.com/pmg-docs/pmg-admin-guide.html#pmg_package_repositories) -- [Proxmox Backup Server (PBS)](https://pbs.proxmox.com/docs/installation.html#proxmox-backup-no-subscription-repository) +``` +# curl -s https://api.github.com/repos/arszilla/fake-proxmox-subscription/releases/latest | grep "browser_download_url.*deb" | cut -d : -f 2,3 | tr -d \" | wget -i - -O fake-proxmox-subscription.deb +# apt install ./fake-proxmox-subscription.deb +``` ### Uninstallation +Just run `apt` or `apt-get` with the `remove` flag: -Run as root: - -```shell -apt purge pve-fake-subscription +``` +# apt remove fake-proxmox-subscription ``` -This will revert your system to a "no subscription key" status. +### Build It Yourself +You can easily build the package yourself, assuming you have a *Debian*-based +system: -## Development Notes - -### Building the Package - -Install [nFPM](https://nfpm.goreleaser.com/install/), then: - -```shell -./package.sh +``` +$ sudo apt-get update +$ sudo apt-get install -y --no-install-recommends build-essential debhelper dpkg-dev +$ git clone https://github.com/Arszilla/fake-proxmox-subscription +$ cd fake-proxmox-subscription/ +$ dpkg-buildpackage -us -uc -b +$ ls -al ../fake-proxmox-subscription_* ``` -### Compatibility Information for Old Proxmox VE Versions +You can view and validate the contents of your newly build `.deb` while at it: -#### PVE 4.x - -After installation or updates, run: -```shell -sed -i'' -e's/pve8p/pve4p/g' /usr/bin/pve-fake-subscription -pve-fake-subscription +``` +$ dpkg-deb --info ../fake-proxmox-subscription_*.deb +$ dpkg-deb --contents ./fake-proxmox-subscription_*.deb ``` -#### PVE 3.x +Alternatively, a `Dockerfile` is available if you want to use `podman` or +`docker` to build the packages. Just transfer the generated file from `/opt/`. -Installation with `dpkg -i` will not work because of missing dependencies. Use the following script to install manually: -```shell -# extract the deb package -mkdir -p /tmp/pve-fake-subscription -dpkg-deb -x pve-fake-subscription_*.deb /tmp/pve-fake-subscription +I couldn't be really arsed with it or bother - I mainly used the `Dockerfile` +to validate my packaging, but reckoned someone might want to use it. -# patch and install the script -sed -i'' -e's/python3/python/g' -e's/pve8p/pve4p/g' /tmp/pve-fake-subscription/usr/bin/pve-fake-subscription -mv /tmp/pve-fake-subscription/usr/bin/pve-fake-subscription /usr/local/bin/ - -# install the timer -ln -sf /usr/local/bin/pve-fake-subscription /etc/cron.hourly/pve-fake-subscription - -# invoke it once -/usr/local/bin/pve-fake-subscription - -# remove temporary files -rm -rf /tmp/pve-fake-subscription -``` - -Removal: -```shell -rm -f /usr/local/bin/pve-fake-subscription /etc/cron.hourly/pve-fake-subscription /etc/subscription -``` +[1]: https://github.com/Jamesits/pve-fake-subscription +[2]: https://github.com/Arszilla/fake-proxmox-subscription/releases/latest +[3]: https://github.com/Arszilla/fake-proxmox-subscription/releases +[4]: https://github.com/Jamesits From 9a6b31e082d8b552f4e1d541486b539986278382 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:10:33 +0300 Subject: [PATCH 06/16] Update .gitignore --- .gitignore | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 7842801..c50dd2e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ -*.deb -/out/ +# Debian packaging files +debian/*.debhelper* +debian/fake-proxmox-subscription/ +debian/debhelper-build-stamp +debian/fake-proxmox-subscription.substvars +debian/files # Created by https://www.gitignore.io/api/macos,python,windows,visualstudiocode # Edit at https://www.gitignore.io/?templates=macos,python,windows,visualstudiocode From 88f4bbff3a05ecfc0a0473ed7d1e982ba02776b5 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:10:39 +0300 Subject: [PATCH 07/16] Add GitHub Actions workflow --- .github/workflows/main.yml | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..7170c54 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,39 @@ +name: Build and release package + +on: + push: + tags: + - "v*" + +jobs: + build: + name: Build and release package + runs-on: ubuntu-latest + + outputs: + package_version: ${{ steps.get_version.outputs.PACKAGE_VERSION }} + + steps: + - name: Checkout repository + id: checkout_repository + uses: actions/checkout@v4 + + - name: Build package + id: build_package + uses: jtdor/build-deb-action@v1 + env: + DEB_BUILD_OPTIONS: noautodbgsym + with: + buildpackage-opts: -us -uc -b + + - name: Get package version + id: get_version + run: echo "PACKAGE_VERSION=$(echo debian/artifacts/fake-proxmox-subscription_*_all.deb | awk -F'[_]' '{ print $2 }')" >> $GITHUB_OUTPUT + + - name: Publish release + id: publish_release + uses: ncipollo/release-action@v1 + if: github.ref_type == 'tag' + with: + name: v${{ steps.get_version.outputs.package_version }} + artifacts: debian/artifacts/fake-proxmox-subscription_${{ steps.get_version.outputs.package_version }}_all.deb From a4c80092fbd1d525bf3031ec691b39bdba951ea0 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:27:44 +0300 Subject: [PATCH 08/16] Fix typo I initially was going to fork the package over on GitLab, but changed to GitHub Actions last minute. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e8f9a1e..e1ba17c 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ What this package does is: 2. **Future-Proof**: Requires no adjustments between system updates & major upgrades. 3. **Hassle-Free**: Install or uninstall with ease, just 1 command and done. -4. **Debian-ized**: Comes as a proper Debian package, fresh from GitLab CI/CD +4. **Debian-ized**: Comes as a proper Debian package, fresh from GitHub CI/CD to provide transparency to its delivery. 5. **Fuck JavaScript**: No JavaScript is involved in the whole process, because fuck JavaScript. From a4b1a9d58d2be0a6048dc21b64a3fd183d75bf67 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:32:54 +0300 Subject: [PATCH 09/16] Update Dockerfile --- Dockerfile | 2 ++ README.md | 15 +++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 05da59f..9dd05e7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,3 +10,5 @@ RUN apt-get update && \ COPY . $FOLDER RUN dpkg-buildpackage -us -uc -b +RUN mkdir debian/artifacts +RUN mv /opt/fake-proxmox-subscription_* $FOLDER/debian/artifacts/ diff --git a/README.md b/README.md index e1ba17c..8ef52de 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,18 @@ A Debian package to disables the "No valid subscription" dialog on all Proxmox products (in theory), regardless of their version. -Based on [Jamesits/fake-pve-subscription][1] +Based on [Jamesits/fake-pve-subscription][1]'s work. There are a few key +differences between his repository and this repository: -This package was created to provide that the package is built via CI/CD and be -transparent about it - because you'd be installing it on your server afterall, -and who'd install a random `.deb` package on it? +1. `pve-fake-subscription` has been ditched in favor of +`fake-proxmox-subscription` name. This should have been done in the first +place, as the script covers all 3 Proxmox products. +2. Added proper Debian packaging (instead of that JavaScript abomination). +3. Added GitHub Actions workflow to build and then publish `.deb` packages. + +I believe 3. is the most critical change here. Because you wouldn't download +and install a `.deb` that you can't verify that it has been not been altered +with, would you? ### Features This package should work and patch: From 82e20429a6e1ee3abeb25e2edc510752ffae6d02 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:35:09 +0300 Subject: [PATCH 10/16] Update README.md --- README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8ef52de..c3b42a6 100644 --- a/README.md +++ b/README.md @@ -69,9 +69,17 @@ $ dpkg-deb --contents ./fake-proxmox-subscription_*.deb ``` Alternatively, a `Dockerfile` is available if you want to use `podman` or -`docker` to build the packages. Just transfer the generated file from `/opt/`. +`docker` to build the packages. -I couldn't be really arsed with it or bother - I mainly used the `Dockerfile` +``` +$ podman build -t fake-proxmox-subscription . +$ podman run -it fake-proxmox-subscription:latest /bin/bash -c "ls -al /opt/fake-proxmox-subscription/debian/artifacts/" +``` + +Afterwards, just transfer the generated `.deb` from +`/opt/fake-proxmox-subscription/debian/artifacts/`. + +The `Dockerfile` is basic and not really used as I mainly used it to validate my packaging, but reckoned someone might want to use it. [1]: https://github.com/Jamesits/pve-fake-subscription From 68938c8e565338cc7009307fe52097afdc246474 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:41:20 +0300 Subject: [PATCH 11/16] Fix grammatical errors --- README.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c3b42a6..5914f86 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## fake-proxmox-subscription -A Debian package to disables the "No valid subscription" dialog on all Proxmox -products (in theory), regardless of their version. +A Debian package that disables the "No valid subscription" dialog on all +Proxmox products (in theory), regardless of their version. Based on [Jamesits/fake-pve-subscription][1]'s work. There are a few key differences between his repository and this repository: @@ -33,7 +33,7 @@ fuck JavaScript. ### Usage #### Installation -Download the [latest `.deb`][2] file found under [releases][2] and install it +Download the [latest `.deb`][2] file from the [releases][2] page and install it with `apt` or `apt-get`: ``` @@ -42,7 +42,8 @@ with `apt` or `apt-get`: ``` ### Uninstallation -Just run `apt` or `apt-get` with the `remove` flag: +To uninstall, simply run `apt` or `apt-get` with the `remove` flag and the +package name: ``` # apt remove fake-proxmox-subscription @@ -61,15 +62,15 @@ $ dpkg-buildpackage -us -uc -b $ ls -al ../fake-proxmox-subscription_* ``` -You can view and validate the contents of your newly build `.deb` while at it: +While at it, you can view and validate the contents of your newly built `.deb`: ``` $ dpkg-deb --info ../fake-proxmox-subscription_*.deb $ dpkg-deb --contents ./fake-proxmox-subscription_*.deb ``` -Alternatively, a `Dockerfile` is available if you want to use `podman` or -`docker` to build the packages. +Alternatively, if you want to use `podman` or `docker` to build the `.deb`, a +`Dockerfile` is available: ``` $ podman build -t fake-proxmox-subscription . @@ -79,8 +80,9 @@ $ podman run -it fake-proxmox-subscription:latest /bin/bash -c "ls -al /opt/fake Afterwards, just transfer the generated `.deb` from `/opt/fake-proxmox-subscription/debian/artifacts/`. -The `Dockerfile` is basic and not really used as I mainly used it -to validate my packaging, but reckoned someone might want to use it. +The `Dockerfile` is basic and was not really used besides build testing, +validating packaging, etc. I've only kept it in case someone might be +interested in using it. [1]: https://github.com/Jamesits/pve-fake-subscription [2]: https://github.com/Arszilla/fake-proxmox-subscription/releases/latest From afb19deaa7765d485a4d7961b5c4ca8658a0fe6e Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:47:37 +0300 Subject: [PATCH 12/16] Fix typo --- debian/control | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index c9dde99..2144368 100644 --- a/debian/control +++ b/debian/control @@ -18,5 +18,5 @@ Depends: ${shlibs:Depends}, python3:any, Description: Remove "No valid subscription" dialog box in Proxmox products - A package to disables the "No valid subscription" dialog on all Proxmox - products (in theory), regardless of their version. + A Debian package that disables the "No valid subscription" dialog on all + Proxmox products (in theory), regardless of their version. From bcbef78fe6a4aaaab55af7d079da1b278f6dd5ee Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 00:49:06 +0300 Subject: [PATCH 13/16] Update changelog --- debian/changelog | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 8595927..3d5be69 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,12 @@ +fake-proxmox-subscription (1.0.0-2) trixie; urgency=medium + + * Update changelog + * Fix typo + + -- Arslan Masood Fri, 22 Aug 2025 00:45:35 +0300 + fake-proxmox-subscription (1.0.0-1) trixie; urgency=medium * Initial release - -- Arslan Masood Wed, 21 Aug 2025 23:30:35 +0300 + -- Arslan Masood Thu, 21 Aug 2025 23:30:35 +0300 From b319c6d17d83bca98524a804c2c5251eb8e05a27 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Fri, 22 Aug 2025 11:24:29 +0300 Subject: [PATCH 14/16] Update phrasing --- README.md | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 5914f86..122bb89 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,16 @@ Proxmox products (in theory), regardless of their version. Based on [Jamesits/fake-pve-subscription][1]'s work. There are a few key differences between his repository and this repository: -1. `pve-fake-subscription` has been ditched in favor of -`fake-proxmox-subscription` name. This should have been done in the first -place, as the script covers all 3 Proxmox products. -2. Added proper Debian packaging (instead of that JavaScript abomination). +1. The name `pve-fake-subscription` has been replaced with +`fake-proxmox-subscription`. This should have been done in the first place +since the package covers all 3 Proxmox products. +2. Added proper Debian packaging so that `dpkg-buildpackage` could be used +instead of `nFPM` nonsense. 3. Added GitHub Actions workflow to build and then publish `.deb` packages. -I believe 3. is the most critical change here. Because you wouldn't download -and install a `.deb` that you can't verify that it has been not been altered -with, would you? +The 3rd point above is the most critical change here. This is because you +wouldn't download and install a .deb that you can't verify has not been +altered with, would you? ### Features This package should work and patch: @@ -22,12 +23,12 @@ This package should work and patch: - Proxmox Backup Server (1.x or later) What this package does is: -1. **Non-Intrusive**: Performs 0 modification to the system files. +1. **Non-Intrusive**: Performs 0 modifications to the system files. 2. **Future-Proof**: Requires no adjustments between system updates & major upgrades. -3. **Hassle-Free**: Install or uninstall with ease, just 1 command and done. -4. **Debian-ized**: Comes as a proper Debian package, fresh from GitHub CI/CD -to provide transparency to its delivery. +3. **Hassle-Free**: Install (or uninstall) with ease. +4. **Debian-ized**: `fake-proxmox-license` is delivered as a proper Debian +package, fresh from GitHub CI/CD to provide transparency and automation. 5. **Fuck JavaScript**: No JavaScript is involved in the whole process, because fuck JavaScript. @@ -42,8 +43,8 @@ with `apt` or `apt-get`: ``` ### Uninstallation -To uninstall, simply run `apt` or `apt-get` with the `remove` flag and the -package name: +To uninstall, run `apt` or `apt-get` with the `remove` flag and the package +name: ``` # apt remove fake-proxmox-subscription @@ -77,10 +78,10 @@ $ podman build -t fake-proxmox-subscription . $ podman run -it fake-proxmox-subscription:latest /bin/bash -c "ls -al /opt/fake-proxmox-subscription/debian/artifacts/" ``` -Afterwards, just transfer the generated `.deb` from +Afterwards, transfer the generated `.deb` from `/opt/fake-proxmox-subscription/debian/artifacts/`. -The `Dockerfile` is basic and was not really used besides build testing, +The `Dockerfile` is basic and was primarily used for build testing, validating packaging, etc. I've only kept it in case someone might be interested in using it. From c99a79b7cb99719cb36a46c29ad3bb2fe2540b51 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Mon, 25 Aug 2025 08:25:42 +0300 Subject: [PATCH 15/16] Add "Conflicts" header to debian/control --- debian/control | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/control b/debian/control index 2144368..bc752bf 100644 --- a/debian/control +++ b/debian/control @@ -17,6 +17,8 @@ Depends: ${misc:Depends}, ${shlibs:Depends}, python3:any, +Conflicts: + pve-fake-subscription, Description: Remove "No valid subscription" dialog box in Proxmox products A Debian package that disables the "No valid subscription" dialog on all Proxmox products (in theory), regardless of their version. From 1a12a0aefddec361076d9276da8f0c9559a57de6 Mon Sep 17 00:00:00 2001 From: Arszilla Date: Mon, 25 Aug 2025 08:26:08 +0300 Subject: [PATCH 16/16] Update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 3d5be69..b44af00 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +fake-proxmox-subscription (1.0.0-3) trixie; urgency=medium + + * Update changelog + * Add "Conflicts" header to debian/control + + -- Arslan Masood Mon, 25 Aug 2025 08:10:55 +0300 + fake-proxmox-subscription (1.0.0-2) trixie; urgency=medium * Update changelog