Viewing File: /usr/local/cpanel/whostmgr/docroot/cgi/sshcheck.cgi

#!/usr/local/cpanel/3rdparty/bin/perl

# cpanel - whostmgr/docroot/cgi/sshcheck.cgi       Copyright 2022 cPanel, L.L.C.
#                                                           All rights reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited

use Cpanel::Encoder::Tiny ();
use Cpanel::Form          ();
use Whostmgr::ACLS        ();
use IO::Socket::INET      ();

Whostmgr::ACLS::init_acls();

my %FORM = Cpanel::Form::parseform();

print "Content-type: text/html\r\n\r\n";

if ( !Whostmgr::ACLS::hasroot() ) {
    print "Access Denied\n";
    exit;
}

my $server      = $FORM{'server'};
my $safe_server = Cpanel::Encoder::Tiny::safe_html_encode_str($server);
my $port        = int $FORM{'port'} || 22;
my $failreason  = 'Connection Timeout';
my $fail        = 1;
my $sshver;
eval {
    $SIG{'__DIE__'} = 'DEFAULT';
    local $SIG{'ALRM'} = sub { die; };
    alarm(12);

    my $sock = IO::Socket::INET->new(
        'Proto'    => 'tcp',
        'PeerAddr' => $server,
        'PeerPort' => $port,
        'Blocking' => 1,
        'Timeout'  => 10
    );
    if ( !$sock ) {
        $failreason = "Unable to connect to $safe_server:$port: $!";
        die;
    }
    $sshver = readline($sock);
    close($sock);
};

my $safe_sshver = Cpanel::Encoder::Tiny::safe_html_encode_str($sshver);

if ( $sshver eq '' ) {
    print qq{<span class="error">Connecting to Remote Server Failed: $failreason\n</span>};
}
elsif ( $sshver =~ /ssh/i ) {
    print "Remote Server Ok: $safe_sshver\n";
}
else {
    print qq{<span class="error">Remote Server not running ssh on port $port ?!?!: $safe_sshver</span>\n};
}
Back to Directory File Manager