From 02ef620f6780b4a2a7445206b785979267aba28d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 6 Oct 2021 23:44:35 +1300 Subject: [PATCH] vncserver: print browser url to connect to Add 0.0.0.0 as default interface. Xvnc fails if -interface isn't passed. --- unix/vncserver | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/unix/vncserver b/unix/vncserver index 8c234a7..67b1604 100755 --- a/unix/vncserver +++ b/unix/vncserver @@ -61,6 +61,8 @@ if (! $skipxstartup) { &RunXstartup(); } +PrintBrowserUrl(); + exit; ############################################################################### @@ -817,6 +819,7 @@ sub SetReasonabeDefaults { $default_opts{websocketPort} = $websocketPort; $default_opts{fp} = $fontPath if ($fontPath); $default_opts{pn} = ""; + $default_opts{interface} = "0.0.0.0"; } sub LoadSystemThenUserThenMandatoryConfigs { @@ -1107,6 +1110,11 @@ sub ParseAndProcessCliOptions { &CheckCliOptionsForBeingValid(); } +sub CheckBrowserHostDefined { + DeduceBrowserHost() || \ + die "-interface has no default value and wasn't passed by user"; +} + sub PrepareDefaultsForPassingToXvnc { # We set some reasonable defaults. Config file settings # override these where present. @@ -1118,6 +1126,7 @@ sub PrepareDefaultsForPassingToXvnc { &SetReasonabeDefaults(); &LoadSystemThenUserThenMandatoryConfigs(); + CheckBrowserHostDefined(); } sub EnsureAtLeastOneKasmUserExists { @@ -1183,6 +1192,37 @@ sub PrintLogFilenameAndConfiguredUsersAndStuff { warn "Log file is $desktopLog\n\n"; } +sub PrintBrowserUrl { + my $browserUrl = ConstructBrowserUrl(); + warn "\nPaste this url in your browser: $browserUrl\n" +} + +sub IsAllInterfaces { + my $interface = shift; + + $interface eq "0.0.0.0"; +} + +sub DeduceBrowserHost { + my $browserHost = $host; + my $interface = $opt{"-interface"} || $default_opts{interface}; + + if (IsAllInterfaces($interface)) { + $browserHost = $host; + } else { + $browserHost = $interface; + } + + $browserHost; +} + +sub ConstructBrowserUrl { + my $browserHost = DeduceBrowserHost(); + my $browserPort = $websocketPort; + + "https://$browserHost:$browserPort"; +} + sub IsThisSystemBinary { $0 =~ m!^/usr!; }