From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 85CB01FF0AB for ; Wed, 23 Sep 2026 13:38:23 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 3914C214C5; Wed, 23 Sep 2026 13:38:23 +0200 (CEST) From: Dominik Csapak To: pve-devel@lists.proxmox.com Subject: [PATCH manager 1/3] api: factor out read_pwt_version and pwt_base_dir Date: Wed, 23 Sep 2026 13:35:01 +0200 Message-ID: <20260923113757.2202858-2-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260923113757.2202858-1-d.csapak@proxmox.com> References: <20260923113757.2202858-1-d.csapak@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.445 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: 3I6OFGZ2D55NOEQETBP6LUTCWSC4O4SD X-Message-ID-Hash: 3I6OFGZ2D55NOEQETBP6LUTCWSC4O4SD X-MailFrom: d.csapak@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Getting the pwt version will be useful in other places later, so factor it out into API2Tools. While at it, change it to use 'PVE::File' and handle missing pwt file by providing the default '' (to avoid a perl warning in that case). Signed-off-by: Dominik Csapak --- PVE/API2Tools.pm | 12 ++++++++++++ PVE/Service/pveproxy.pm | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/PVE/API2Tools.pm b/PVE/API2Tools.pm index bca21aa5..63d50fd5 100644 --- a/PVE/API2Tools.pm +++ b/PVE/API2Tools.pm @@ -11,6 +11,7 @@ use URI; use PVE::Cluster; use PVE::DataCenterConfig; # so we can cfs-read datacenter.cfg +use PVE::File; use PVE::Exception qw(raise_param_exc); use PVE::INotify; use PVE::RPCEnvironment; @@ -272,4 +273,15 @@ sub get_resource_pool_guest_members { return $pool_members; } +sub pwt_base_dir { + return '/usr/share/javascript/proxmox-widget-toolkit'; +} + +sub read_pwt_version { + my $base_dir = pwt_base_dir(); + my $wtversionraw = PVE::File::file_read_first_line("$base_dir/proxmoxlib.js") // ''; + my $wtversion = $wtversionraw =~ m|^// (.*)$| ? $1 : ''; + return $wtversion; +} + 1; diff --git a/PVE/Service/pveproxy.pm b/PVE/Service/pveproxy.pm index dfdd014c..9ff0770b 100755 --- a/PVE/Service/pveproxy.pm +++ b/PVE/Service/pveproxy.pm @@ -11,6 +11,7 @@ use URI::QueryParam; use URI; use PVE::API2; +use PVE::API2Tools; use PVE::APIServer::AnyEvent; use PVE::APIServer::Formatter::HTML; use PVE::APIServer::Formatter::Standard; @@ -56,7 +57,7 @@ my $basedirs = { novnc => '/usr/share/novnc-pve', yew_mobile => '/usr/share/pve-yew-mobile-gui', i18n_yew => '/usr/share/pve-yew-mobile-i18n', - widgettoolkit => '/usr/share/javascript/proxmox-widget-toolkit', + widgettoolkit => PVE::API2Tools::pwt_base_dir(), xtermjs => '/usr/share/pve-xtermjs', }; @@ -254,8 +255,7 @@ sub get_index { my $version = PVE::pvecfg::version(); - my $wtversionraw = PVE::Tools::file_read_firstline("$basedirs->{widgettoolkit}/proxmoxlib.js"); - my $wtversion = $wtversionraw =~ m|^// (.*)$| ? $1 : ''; + my $wtversion = PVE::API2Tools::read_pwt_version(); # while we could use the actual pkg version (e.g., shipped as pkg-version file in each # respective package's /usr/share/ folder, this way it should also work when using make -- 2.47.3