Server IP : 195.201.23.43 / Your IP : 3.139.108.138 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/webmin/xterm/ |
Upload File : |
# allocate_miniserv_websocket() # Allocate a new websocket and # stores it miniserv.conf file sub allocate_miniserv_websocket { # Find ports already in use &lock_file(&get_miniserv_config_file()); my %miniserv; &get_miniserv_config(\%miniserv); my %inuse; foreach my $k (keys %miniserv) { if ($k =~ /^websockets_/ && $miniserv{$k} =~ /port=(\d+)/) { $inuse{$1} = 1; } } # Pick a port and configure Webmin to proxy it my $port = $config{'base_port'} || 555; while(1) { if (!$inuse{$port}) { &open_socket("127.0.0.1", $port, my $fh, \$err); last if ($err); close($fh); } $port++; } my $wspath = "/$module_name/ws-".$port; my $now = time(); $miniserv{'websockets_'.$wspath} = "host=127.0.0.1 port=$port wspath=/ user=$remote_user time=$now"; &put_miniserv_config(\%miniserv); &unlock_file(&get_miniserv_config_file()); &reload_miniserv(); return $port; } # remove_miniserv_websocket(port) # Remove old websocket # from miniserv.conf sub remove_miniserv_websocket { my ($port) = @_; my %miniserv; if ($port) { &lock_file(&get_miniserv_config_file()); &get_miniserv_config(\%miniserv); my $wspath = "/$module_name/ws-".$port; if ($miniserv{'websockets_'.$wspath}) { delete($miniserv{'websockets_'.$wspath}); &put_miniserv_config(\%miniserv); &reload_miniserv(); } &unlock_file(&get_miniserv_config_file()); } } # cleanup_miniserv_websockets([&skip-ports]) # Called by scheduled status collection to remove any # websockets in miniserv.conf that are no longer used sub cleanup_miniserv_websockets { my ($skip) = @_; $skip ||= [ ]; &lock_file(&get_miniserv_config_file()); my %miniserv; &get_miniserv_config(\%miniserv); my $now = time(); my @clean; foreach my $k (keys %miniserv) { $k =~ /^websockets_\/$module_name\/ws-(\d+)$/ || next; my $port = $1; next if (&indexof($port, @$skip) >= 0); my $when = 0; if ($miniserv{$k} =~ /time=(\d+)/) { $when = $1; } if ($now - $when > 60) { # Has been open for a while, check if the port is still in use? my $err; &open_socket("127.0.0.1", $port, my $fh, \$err); if ($err) { # Closed now, can clean up push(@clean, $k); } else { # Still active close($fh); } } } if (@clean) { foreach my $k (@clean) { delete($miniserv{$k}); } &put_miniserv_config(\%miniserv); &reload_miniserv(); } &unlock_file(&get_miniserv_config_file()); } 1;Private