!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 28.64 GB of 117.98 GB (24.28%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     scriptwarn.pl (3.91 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl
# Check for any virtual server scripts that are out of date, and email
# their domain owners / other people

package virtual_server;
$main::no_acl_check++;
require './virtual-server-lib.pl';
&foreign_require("mailboxes");

if ($ARGV[0] eq "-debug" || $ARGV[0] eq "--debug") {
    $debug_mode = 1;
    }

# Find domains
@doms = grep { !$_->{'disabled'} } &list_domains();
if ($config{'scriptwarn_servers'} =~ /^\!(.*)$/) {
    %servers = map { $_, 1 } split(/\s+/, $1);
    @doms = grep { !$servers{$_->{'id'}} } @doms;
    }
elsif ($config{'scriptwarn_servers'}) {
    %servers = map { $_, 1 } split(/\s+/, $config{'scriptwarn_servers'});
    @doms = grep { $servers{$_->{'id'}} } @doms;
    }

# Find scripts that need updating
@updates = &list_script_upgrades(\@doms);
foreach my $u (@updates) {
    $u->{'key'} = join("/", $u->{'dom'}->{'dom'}, $u->{'sinfo'}->{'name'},
                 $u->{'ver'});
    }

# Filter out notifications that have already been sent, on a per domain, script
# and version basis.
&read_file($script_warnings_file, \%warnsent);
if ($config{'scriptwarn_notify'}) {
    @updates = grep { !$warnsent{$_->{'key'}} } @updates;
    }

# Send out an email for each domain
%email = map { $_, 1 } split(/\s+/, $config{'scriptwarn_email'});
($other) = grep { /\@/ } (keys %email);
if (@updates) {
    if (!$email{'owner'} && !$email{'reseller'}) {
        # Just send one for all domains
        $email = $text{'scriptwarn_header'}."\n\n";
        $fmt = "%-30.30s %-25.25s %-11.11s %-11.11s\n";
        $email .= sprintf $fmt, $text{'scriptwarn_dom'},
                    $text{'scriptwarn_script'},
                    $text{'scriptwarn_oldver'},
                    $text{'scriptwarn_ver'};
        $email .= sprintf $fmt, ("-" x 30), ("-" x 25),
                    ("-" x 11), ("-" x 11);
        foreach $u (@updates) {
            $email .= sprintf $fmt,
                $u->{'dom'}->{'dom'},
                $u->{'script'}->{'desc'},
                $u->{'sinfo'}->{'version'},
                $u->{'ver'};
            }
        $email .= "\n";
        $url = &get_virtualmin_url($d)."/$module_name/".
               "edit_newscripts.cgi?mode=upgrade";
        $email .= &text('scriptwarn_where3', $url)."\n\n";
        $email =~ s/\\n/\n/g;
        &send_scriptwarn_email($email, [ $other ]);
        }
    else {
        # Send one per domain with any notifications
        foreach $d (@doms) {
            # Construct the message
            @dupdates = grep { $_->{'dom'} eq $d } @updates;
            next if (!@dupdates);
            $email = &text('scriptwarn_header2', $d->{'dom'}).
                 "\n\n";
            $fmt = "%-48.48s %-15.15s %-15.15s\n";
            $email .= sprintf $fmt, $text{'scriptwarn_script'},
                        $text{'scriptwarn_oldver'},
                        $text{'scriptwarn_ver'};
            $email .= sprintf $fmt,
                    ("-" x 48), ("-" x 15), ("-" x 15);
            foreach $u (@dupdates) {
                $email .= sprintf $fmt,
                    $u->{'script'}->{'desc'},
                    $u->{'sinfo'}->{'version'},
                    $u->{'ver'};
                }
            $email .= "\n";
            $email .= &text('scriptwarn_where2',
                &get_virtualmin_url($d)."/$module_name/".
                "list_scripts.cgi?dom=$d->{'id'}")."\n\n";
            $email =~ s/\\n/\n/g;

            # Mail it off
            @emailto = ( );
            if ($email{'owner'}) {
                # Add owner email
                push(@emailto, $d->{'emailto'});
                }
            if ($email{'reseller'} && $d->{'reseller'}) {
                # Add emails from all resellers
                foreach my $r (split(/\s+/, $d->{'reseller'})) {
                    $resel = &get_reseller($r);
                    if ($resel &&
                        $resel->{'acl'}->{'email'}) {
                        push(@emailto,
                           $resel->{'acl'}->{'email'});
                        }
                    }
                }
            if ($other) {
                push(@emailto, $other);
                }
            &send_scriptwarn_email($email, \@emailto, $d);
            }
        }
    }

# Save sent notifications, for filtering
foreach my $u (@updates) {
    $warnsent{$u->{'key'}} ||= time();
    }
&write_file($script_warnings_file, \%warnsent);

sub send_scriptwarn_email
{
local ($text, $emailto, $d) = @_;
if ($debug_mode) {
    print STDERR "Sending to ",join(", ", @$emailto),"\n";
    print STDERR "Sending from ",&get_global_from_address($d),"\n";
    print STDERR $text,"\n";
    }
else {
    &mailboxes::send_text_mail(&get_global_from_address($d),
                   join(", ", &unique(@$emailto)),
                   undef,
                   $text{'scriptwarn_subject'},
                   $text);
    }
}


:: 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.004 ]--