| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1962,11 +1962,32 @@ sub DefineConfigToCLIConversion {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        name => 'httpd',
 | 
					 | 
					 | 
					 | 
					        name => 'httpd',
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        configKeys => [
 | 
					 | 
					 | 
					 | 
					        configKeys => [
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          KasmVNC::ConfigKey->new({
 | 
					 | 
					 | 
					 | 
					          KasmVNC::ConfigKey->new({
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            name => "server.advanced.httpd_directory",
 | 
					 | 
					 | 
					 | 
					            name => "server.http.httpd_directory",
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            type => KasmVNC::ConfigKey::ANY
 | 
					 | 
					 | 
					 | 
					            type => KasmVNC::ConfigKey::ANY
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          })
 | 
					 | 
					 | 
					 | 
					          })
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ]
 | 
					 | 
					 | 
					 | 
					        ]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }),
 | 
					 | 
					 | 
					 | 
					    }),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    KasmVNC::CliOption->new({
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        name => 'http-header',
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        configKeys => [
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          KasmVNC::ConfigKey->new({
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            name => "server.http.headers",
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            type => KasmVNC::ConfigKey::ANY
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          })
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        ],
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        toStringSub => sub {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          $self = shift;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          my @values = @{ listify($self->configValues()) };
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          my $valuesStr = "";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          foreach $value (@values) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            $valuesStr = $valuesStr . "-http-header '$value' "
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          chop($valuesStr);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          return $valuesStr;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    }),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    KasmVNC::CliOption->new({
 | 
					 | 
					 | 
					 | 
					    KasmVNC::CliOption->new({
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        name => 'IgnoreClientSettingsKasm',
 | 
					 | 
					 | 
					 | 
					        name => 'IgnoreClientSettingsKasm',
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        configKeys => [
 | 
					 | 
					 | 
					 | 
					        configKeys => [
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -2199,6 +2220,24 @@ sub DefineConfigToCLIConversion {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        isActiveSub => sub {
 | 
					 | 
					 | 
					 | 
					        isActiveSub => sub {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          $self = shift;
 | 
					 | 
					 | 
					 | 
					          $self = shift;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          my $value = $self->configValue();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          isPresent($value) && $value ne 'auto';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    }),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    KasmVNC::CliOption->new({
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        name => 'StunServer',
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        configKeys => [
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          KasmVNC::ConfigKey->new({
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            name => "network.udp.stun_server",
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            validator => KasmVNC::PatternValidator->new({
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              pattern => qr/^(auto|\S+)$/,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              errorMessage => "must be 'auto' or an IP address/hostname"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            }),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          })
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        ],
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        isActiveSub => sub {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          $self = shift;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          my $value = $self->configValue();
 | 
					 | 
					 | 
					 | 
					          my $value = $self->configValue();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          isPresent($value) && $value ne 'auto';
 | 
					 | 
					 | 
					 | 
					          isPresent($value) && $value ne 'auto';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -2644,7 +2683,9 @@ sub ConfigToCmd {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  %optFromConfig = %{ ConstructOptFromConfig() };
 | 
					 | 
					 | 
					 | 
					  %optFromConfig = %{ ConstructOptFromConfig() };
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  my @cmd = map { $cliArgMap{$_}->toString() } (keys %optFromConfig);
 | 
					 | 
					 | 
					 | 
					  my @cmd = map { $cliArgMap{$_}->toString() } (keys %optFromConfig);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  " " . join " ", @cmd;
 | 
					 | 
					 | 
					 | 
					  my $cmdStr = " " . join " ", @cmd;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  return $cmdStr;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					sub ValidateConfig {
 | 
					 | 
					 | 
					 | 
					sub ValidateConfig {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |