!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/usr/share/webmin/virtual-server/   drwxrwxr-x
Free 29.42 GB of 117.98 GB (24.93%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     feature-status.pl (10.57 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# Functions for setting up web status monitoring for a domain

sub require_status
{
return if ($require_status++);
&foreign_require("status");
}

sub check_depends_status
{
local ($d) = @_;
if (!&domain_has_website($d)) {
    return $text{'setup_edepstatus'};
    }
return undef;
}

# check_status_clash()
# No need to check for clashes ..
sub check_status_clash
{
return 0;
}

# setup_status(&domain)
# Creates a new status monitor for this domain's website
sub setup_status
{
my ($d) = @_;

&$first_print($text{'setup_status'});
&require_status();
local $tmpl = &get_template($d->{'template'});

# Create website monitor
local $serv = &make_monitor($d, 0);
&status::save_service($serv);
&$second_print($text{'setup_done'});

if (&domain_has_ssl($d)) {
    # Add SSL website monitor too
    &$first_print($text{'setup_statusssl'});
    local $serv = &make_monitor($d, 1);
    &status::save_service($serv);
    &$second_print($text{'setup_done'});
    }

if (&domain_has_ssl($d) && $tmpl->{'statussslcert'}) {
    # Add SSL cert monitor
    &$first_print($text{'setup_statussslcert'});
    local $certserv = &make_sslcert_monitor($d);
    &status::save_service($certserv);
    &$second_print($text{'setup_done'});
    }
return 1;
}

# make_monitor(&domain, ssl)
# Returns a hash ref for a status object for monitoring a webserver
sub make_monitor
{
local ($d, $ssl) = @_;
local $tmpl = &get_template($d->{'template'});
local $host = &get_domain_http_hostname($d);
local $serv = { 'id' => $d->{'id'}.($ssl ? "_ssl" : "_web"),
        'type' => 'http',
        'desc' => $ssl ? "Website $host (SSL)" 
                   : "Website $host",
        'fails' => 2,
        'email' => &monitor_email($d),
        'host' => $host,
        'port' => $ssl ? $d->{'web_sslport'} : $d->{'web_port'},
        'nosched' => 0,
        'ssl' => $ssl,
        'alarm' => $tmpl->{'statustimeout'},
        'tmpl' => $tmpl->{'statustmpl'},
        'page' => '/',
        'virtualmin' => $d->{'id'},
          };
return $serv;
}

# make_sslcert_monitor(&domain)
# Returns a hash ref for a status object for monitoring an SSL domain's cert
sub make_sslcert_monitor
{
local ($d) = @_;
local $tmpl = &get_template($d->{'template'});
local $host = &get_domain_http_hostname($d);
local $serv = { 'id' => $d->{'id'}."_sslcert",
        'type' => 'sslcert',
        'desc' => "SSL cert $host",
        'fails' => 2,
        'email' => &monitor_email($d),
        'url' => 'https://'.$host.':'.$d->{'web_sslport'}.'/',
            'days' => 7,
        'mismatch' => $tmpl->{'statussslcert'} == 2 ? 1 : 0,
        'nosched' => 0,
        'alarm' => $tmpl->{'statustimeout'},
        'tmpl' => $tmpl->{'statustmpl'},
        'virtualmin' => $d->{'id'},
          };
return $serv;
}

# monitor_email(&domain)
# Returns the addresses to send email to for a monitor
sub monitor_email
{
local ($d) = @_;
local $tmpl = &get_template($d->{'template'});
local @rv;
if ($tmpl->{'status'} ne 'none') {
    push(@rv, $tmpl->{'status'});
    }
if (!$tmpl->{'statusonly'}) {
    push(@rv, &extract_address_parts($d->{'emailto'}));
    }
return join(",", @rv);
}

# modify_status(&domain, &olddomain)
# Possible update the hostname of the web server
sub modify_status
{
my ($d, $oldd) = @_;
&require_status();

if ($d->{'dom'} ne $oldd->{'dom'} ||
    $d->{'emailto'} ne $oldd->{'emailto'}) {
    # Update HTTP monitor
    &$first_print($text{'save_status'});
    local $serv = &status::get_service($d->{'id'}."_web");
    local $host = &get_domain_http_hostname($d);
    if ($serv) {
        $serv->{'host'} = $host;
        $serv->{'desc'} = "Website $host";
        $serv->{'email'} = &monitor_email($d);
        &status::save_service($serv);
        &$second_print($text{'setup_done'});
        }
    else {
        &$second_print($text{'delete_nostatus'});
        }

    if (&domain_has_ssl_cert($d)) {
        # Update cert monitor
        local $certserv = &status::get_service($d->{'id'}."_sslcert");
        if ($certserv) {
            &$first_print($text{'save_statussslcert'});
            $certserv->{'url'} =
                'https://'.$host.':'.$d->{'web_sslport'}.'/',
            $certserv->{'desc'} = "SSL cert $host";
            $certserv->{'email'} = $d->{'emailto'};
            &status::save_service($certserv);
            &$second_print($text{'setup_done'});
            }
        }

    if (&domain_has_ssl($d)) {
        # Update HTTPS monitor
        &$first_print($text{'save_statusssl'});
        local $serv = &status::get_service($d->{'id'}."_ssl");
        if ($serv) {
            $serv->{'host'} = $host;
            $serv->{'desc'} = "Website $host (SSL)";
            $serv->{'email'} = $d->{'emailto'};
            &status::save_service($serv);
            &$second_print($text{'setup_done'});
            }
        else {
            &$second_print($text{'delete_nostatus'});
            }
        }
    }

if (&domain_has_ssl($d) && !&domain_has_ssl($oldd)) {
    # Turned on SSL .. add monitor
    &$first_print($text{'setup_status'});
    local $serv = &make_monitor($d, 1);
    &status::save_service($serv);
    &$second_print($text{'setup_done'});
    }
elsif (!&domain_has_ssl($d) && &domain_has_ssl($oldd)) {
    # Turned off SSL .. remove monitor (but not the cert monitor)
    &$first_print($text{'delete_statusssl'});
    local $serv = &status::get_service($d->{'id'}."_ssl");
    if ($serv) {
        &status::delete_service($serv);
        &$second_print($text{'setup_done'});
        }
    else {
        &$second_print($text{'delete_nostatus'});
        }
    }

if (&domain_has_ssl_cert($d) && !&domain_has_ssl_cert($oldd)) {
    # Added a cert ... add monitor
    &$first_print($text{'setup_status'});
    local $certserv = &make_sslcert_monitor($d);
    &status::save_service($certserv);
    &$second_print($text{'setup_done'});
    }
}

# delete_status(&domain)
# Just delete the status monitor for this domain
sub delete_status
{
my ($d) = @_;

# Remove HTTP status monitor
&$first_print($text{'delete_status'});
&require_status();
local $serv = &status::get_service($d->{'id'}."_web");
if ($serv) {
    &status::delete_service($serv);
    &$second_print($text{'setup_done'});
    }
else {
    &$second_print($text{'delete_nostatus'});
    }

if (&domain_has_ssl($d)) {
    # Remove HTTPS status monitor
    &$first_print($text{'delete_statusssl'});
    local $serv = &status::get_service($d->{'id'}."_ssl");
    if ($serv) {
        &status::delete_service($serv);
        &$second_print($text{'setup_done'});
        }
    else {
        &$second_print($text{'delete_nostatus'});
        }
    }

if (&domain_has_ssl_cert($d)) {
    # Remove SSL cert monitor
    &$first_print($text{'delete_statussslcert'});
    local $certserv = &status::get_service($d->{'id'}."_sslcert");
    if ($certserv) {
        &status::delete_service($certserv);
        }
    &$second_print($text{'setup_done'});
    }
return 1;
}

# validate_status(&domain)
# Check for the required monitors
sub validate_status
{
local ($d) = @_;
&require_status();
local $serv = &status::get_service($_[0]->{'id'}."_web");
return &text('validate_estatusweb') if (!$serv);
if (&domain_has_ssl($d)) {
    local $serv = &status::get_service($_[0]->{'id'}."_ssl");
    return &text('validate_estatusssl') if (!$serv);
    }
return undef;
}

# disable_status(&domain)
# Turns off the status monitor for this domain
sub disable_status
{
# Disable HTTP status monitor
&$first_print($text{'disable_status'});
&require_status();
local $serv = &status::get_service($_[0]->{'id'}."_web");
if ($serv) {
    $serv->{'nosched'} = 1;
    &status::save_service($serv);
    &$second_print($text{'setup_done'});
    }
else {
    &$second_print($text{'delete_nostatus'});
    }

# Disable HTTPS status monitor
if (domain_has_ssl($_[0])) {
    &$first_print($text{'disable_statusssl'});
    local $certserv = &status::get_service($_[0]->{'id'}."_sslcert");
    if ($certserv) {
        $certserv->{'nosched'} = 1;
        &status::save_service($certserv);
        }
    local $serv = &status::get_service($_[0]->{'id'}."_ssl");
    if ($serv) {
        $serv->{'nosched'} = 1;
        &status::save_service($serv);
        &$second_print($text{'setup_done'});
        }
    else {
        &$second_print($text{'delete_nostatus'});
        }
    }
return 1;
}

# enable_status(&domain)
# Turns on the status monitor for this domain
sub enable_status
{
# Enable HTTP status monitor
&$first_print($text{'enable_status'});
&require_status();
local $serv = &status::get_service($_[0]->{'id'}."_web");
if ($serv) {
    $serv->{'nosched'} = 0;
    &status::save_service($serv);
    &$second_print($text{'setup_done'});
    }
else {
    &$second_print($text{'delete_nostatus'});
    }

# Disable HTTPS status monitor
if (&domain_has_ssl($_[0])) {
    &$first_print($text{'enable_statusssl'});
    local $certserv = &status::get_service($_[0]->{'id'}."_sslcert");
    if ($certserv) {
        $certserv->{'nosched'} = 0;
        &status::save_service($certserv);
        }
    local $serv = &status::get_service($_[0]->{'id'}."_ssl");
    if ($serv) {
        $serv->{'nosched'} = 0;
        &status::save_service($serv);
        &$second_print($text{'setup_done'});
        }
    else {
        &$second_print($text{'delete_nostatus'});
        }
    }
return 1;
}

# show_template_status(&tmpl)
# Outputs HTML for editing status monitoring related template options
sub show_template_status
{
local ($tmpl) = @_;
&require_status();

local @status_fields = ( "status", "statusonly", "statustimeout",
             "statustimeout_def", "statussslcert", "statustmpl" );
print &ui_table_row(
    &hlink($text{'tmpl_status'}, "template_status"),
    &none_def_input("status", $tmpl->{'status'},
            $text{'tmpl_statusemail'}, 0, 0, undef,
            \@status_fields, 1)."\n".
    &ui_textbox("status", $tmpl->{'status'} eq "none" ? undef :
                $tmpl->{'status'}, 50));

# Send email to server owner
print &ui_table_row(
    &hlink($text{'tmpl_statusonly'}, "template_statusonly"),
    &ui_radio("statusonly", int($tmpl->{'statusonly'}),
          [ [ 0, $text{'yes'} ], [ 1, $text{'no'} ] ]));

# Default HTTP check timeout
print &ui_table_row(
    &hlink($text{'tmpl_statustimeout'}, "template_statustimeout"),
    &ui_opt_textbox("statustimeout", $tmpl->{'statustimeout'},
            5, &text('tmpl_statustimeoutdef', 10)));

# Check SSL cert too
print &ui_table_row(
        &hlink($text{'tmpl_statussslcert'}, "template_statussslcert"),
    &ui_radio("statussslcert", $tmpl->{'statussslcert'},
          [ [ 0, $text{'no'} ],
            [ 1, $text{'tmpl_statussslcert1'} ],
            [ 2, $text{'tmpl_statussslcert2'} ] ]));

# Default email template
local @stmpls = &status::list_templates();
print &ui_table_row(
    &hlink($text{'tmpl_statustmpl'}, "template_statustmpl"),
    &ui_select("statustmpl", $tmpl->{'statustmpl'},
           [ [ '', "<$status::text{'mon_notmpl'}>" ],
             map { [ $_->{'id'}, $_->{'desc'} ] } @stmpls ]));
}

# parse_template_status(&tmpl)
# Updates status monitoring related template options from %in
sub parse_template_status
{
local ($tmpl) = @_;

# Save status monitoring settings
$tmpl->{'status'} = &parse_none_def("status");
if ($in{'status_mode'} != 1) {
    if ($in{'status_mode'} == 2) {
        $in{'status'} =~ /\S/ || &error($text{'tmpl_estatus'});
        }
    $tmpl->{'statusonly'} = $in{'statusonly'};
    $in{'statustimeout_def'} || $in{'statustimeout'} =~ /^\d+$/ ||
        &error($text{'tmpl_estatustimeout'});
    $tmpl->{'statustimeout'} = $in{'statustimeout_def'} ? undef :
                    $in{'statustimeout'};
    if (defined($in{'statustmpl'})) {
        $tmpl->{'statustmpl'} = $in{'statustmpl'};
        }
    $tmpl->{'statussslcert'} = $in{'statussslcert'};
    }
}

$done_feature_script{'status'} = 1;

1;


:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0037 ]--