On some occasions e.g. license checking, the manufacturer string in the
SMBIOS settings edit has to allow characters such as whitespaces.
https://forum.proxmox.com/threads/proxmox-and-windows-rok-license-for-dell.53236/

Use URI encoding for format string in order to allow for such cases.

Signed-off-by: Christian Ebner <c.eb...@proxmox.com>
---
Version 2:
    - Changed format verification to url encoded
 PVE/QemuServer.pm | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 9d560ec..8b2fd49 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -2369,43 +2369,43 @@ my $smbios1_fmt = {
     },
     version => {
        type => 'string',
-       pattern => '\S+',
-       format_description => 'string',
+       format => 'urlencoded',
+       format_description => 'URI encoded string',
         description => "Set SMBIOS1 version.",
        optional => 1,
     },
     serial => {
        type => 'string',
-       pattern => '\S+',
-       format_description => 'string',
+       format => 'urlencoded',
+       format_description => 'URI encoded string',
         description => "Set SMBIOS1 serial number.",
        optional => 1,
     },
     manufacturer => {
        type => 'string',
-       pattern => '\S+',
-       format_description => 'string',
+       format => 'urlencoded',
+       format_description => 'URI encoded string',
         description => "Set SMBIOS1 manufacturer.",
        optional => 1,
     },
     product => {
        type => 'string',
-       pattern => '\S+',
-       format_description => 'string',
+       format => 'urlencoded',
+       format_description => 'URI encoded string',
         description => "Set SMBIOS1 product ID.",
        optional => 1,
     },
     sku => {
        type => 'string',
-       pattern => '\S+',
-       format_description => 'string',
+       format => 'urlencoded',
+       format_description => 'URI encoded string',
         description => "Set SMBIOS1 SKU string.",
        optional => 1,
     },
     family => {
        type => 'string',
-       pattern => '\S+',
-       format_description => 'string',
+       format => 'urlencoded',
+       format_description => 'URI encoded string',
         description => "Set SMBIOS1 family string.",
        optional => 1,
     },
@@ -3524,7 +3524,13 @@ sub config_to_command {
     push @$cmd, '-daemonize';
 
     if ($conf->{smbios1}) {
-       push @$cmd, '-smbios', "type=1,$conf->{smbios1}";
+       my $smbios_conf = parse_smbios1($conf->{smbios1});
+       my $smbios_string = "";
+       foreach my $key (keys %$smbios_conf) {
+           my $value = uri_unescape($smbios_conf->{$key});
+           $smbios_string .= "," . $key . "=" . $value if $value;
+       }
+       push @$cmd, '-smbios', "type=1" . $smbios_string;
     }
 
     if ($conf->{vmgenid}) {
-- 
2.11.0

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to