403Webshell
Server IP : 208.122.213.31  /  Your IP : 216.73.216.185
Web Server : Apache
System : Linux msd6191.mjhst.com 4.18.0-553.137.1.el8_10.x86_64 #1 SMP Wed Jun 24 11:40:24 UTC 2026 x86_64
User : WHMCS_MIA_382 ( 1001)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/httpd/html/baberankings.com.bak/cgi-bin/tgp/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/httpd/html/baberankings.com.bak/cgi-bin/tgp/mysql.pl
## http://www.jmbsoft.com/license.php


$DB = new SQL(Hostname => $HOSTNAME, Username => $USERNAME, Password => $PASSWORD, Database => $DATABASE);


package SQL;


use DBI;


sub new
{
    my $type = shift;
    my %params = @_;
    my $self = {};

    $self->{'Handle'} = undef;
    $self->{'Queries'} = 0;
    $self->{'Hostname'} = $params{'Hostname'};
    $self->{'Username'} = $params{'Username'};
    $self->{'Password'} = $params{'Password'};
    $self->{'Database'} = $params{'Database'};

    bless($self);

    return $self;
}



sub DESTROY
{
    my $self = shift;

    $self->Disconnect();
}



sub Connect
{
    my $self = shift;
    my $connect_string = "DBI:mysql:$self->{'Database'}:$self->{'Hostname'}";

    if( !$self->{'Handle'} )
    {
        $self->{'Handle'} = DBI->connect($connect_string, $self->{'Username'}, $self->{'Password'}, {'PrintError' => 0}) || Error(DBI->errstr(), 'MySQL Connection');
    }
}



sub Disconnect
{
    my $self = shift;

    if( $self->{'Handle'} )
    {
        $self->{'Handle'}->disconnect();
        $self->{'Handle'} = undef;
    }
}



sub Reconnect
{
    my $self = shift;

    $self->Disconnect();
    $self->Connect();
}



sub Count
{
    my $self = shift;
    my $query = shift;
    my $bind_values = shift || [];

    Error('No MySQL Database Connection', $query) if( !$self->{'Handle'} );

    my $result = $self->Query($query, $bind_values);
    my $count = $result->fetchrow();

    $self->Free($result);
  
    return $count;
}



sub Row
{
    my $self = shift;
    my $query = shift;
    my $bind_values = shift || [];

    Error('No MySQL Database Connection', $query) if( !$self->{'Handle'} );

    my $result = $self->Query($query, $bind_values);
    my $row = $self->NextRow($result);

    $self->Free($result);
  
    return $row;
}



sub Query
{
    my $self = shift;
    my $query = shift;
    my $bind_values = shift || [];
    my $sth = undef;

    Error('No MySQL Database Connection', $query) if( !$self->{'Handle'} );

    $sth = $self->{'Handle'}->prepare($query) || Error($self->{'Handle'}->errstr(), $query);
    $sth->execute(@$bind_values) || Error($self->{'Handle'}->errstr(), $query);

    $self->{'Queries'}++;

    return $sth;
}



sub NextRow
{
    my $self = shift;
    my $sth = shift;

    if( $sth )
    {
        return $sth->fetchrow_hashref();
    }

    return undef;
}



sub NextRowArray
{
    my $self = shift;
    my $sth = shift;

    if( $sth )
    {
        return $sth->fetchrow_arrayref;
    }

    return undef;
}



sub Columns
{
    my $self = shift;
    my $table = shift;
    my $columns = {};

    Error('No MySQL Database Connection', $query) if( !$self->{'Handle'} );

    my $result = $self->Query("DESCRIBE `$table`");
    while( $row = $self->NextRow($result) )
    {
        $columns->{$row->{'Field'}} = 1;
    }
    $self->Free($result);

    return $columns;
}



sub Free
{
    my $self = shift;
    my $sth = shift;

    if( $sth )
    {
        $sth->finish();
    }
}



sub InsertID
{
    my $self = shift;

    return $self->{'Handle'}->{'mysql_insertid'};
}



sub NumRows
{
    my $self = shift;
    my $sth = shift;

    if( $sth )
    {
        return $sth->rows();
    }

    return undef;
}



sub Insert
{
    my $self = shift;
    my $query = shift;
    my $bind_values = shift || [];
    my $rows = undef;

    Error('No MySQL Database Connection', $query) if( !$self->{'Handle'} );

    $rows = $self->{'Handle'}->do($query, undef, @$bind_values) || Error($self->{'Handle'}->errstr(), $query);

    $self->{'Queries'}++;

    return $rows;
}



sub BackupTables
{
    my $self = shift;
    my $tables = shift;
    my $backup_file = shift;
    my $replacements = shift;

    open(TABLES, ">$backup_file");
    flock(TABLES, 2);

    if( !ref($tables) )
    {
        $tables = [$tables];
    }

    for( @$tables )
    {
        my $table = $_;

        print TABLES "DELETE FROM $table;\n";

        my $result = $self->Query("SELECT * FROM $table");

        while( $row = $self->NextRowArray($result) )
        {
            $self->EscapeArray($row);

            $query = "INSERT INTO $table VALUES (" . join(',', @$row) . ");\n";

            for( keys %$replacements )
            {
                $query =~ s/$_/$replacements->{$_}/gi;
            }

            print TABLES $query;
        }

        $self->Free($result);
    }

    flock(TABLES, 8);
    close(TABLES);

    ::Mode(0666, $backup_file);
}



sub RestoreTables
{
    my $self = shift;
    my $backup_file = shift;
    my $replacements = shift;

    open(TABLES, "<$backup_file");
    flock(TABLES, 1);

    for( <TABLES> )
    {
        my $query = $_;

        ## Skip if empty line
        next if( ::IsEmptyString($query) );

        ## Remove trailing ; character
        $query =~ s/;$//;

        for( keys %$replacements )
        {
            $query =~ s/$_/$replacements->{$_}/gi;
        }

        $self->{'Handle'}->do($query) || LogError($self->{'Handle'}->errstr(), $query);
    }

    flock(TABLES, 8);
    close(TABLES);
}



sub EscapeArray
{
    my $self = shift;
    my $array = shift;

    for( @$array )
    {
        $_ = $self->{'Handle'}->quote($_);
    }
}



sub Update
{
    return shift->Insert(shift, shift);
}



sub Delete
{
    return shift->Insert(shift, shift);
}



sub LogError
{
    my $message = shift;
    my $query = shift;

    open(ERRLOG, ">>$::DDIR/error_log");
    flock(ERRLOG, 2);    
    print ERRLOG scalar(localtime()) . "\n\tError: $message\n\tQuery: $query\n\n";
    flock(ERRLOG, 8);
    close(ERRLOG);
}



sub Error
{
    my $message = shift;
    my $query   = shift;

    if( $::ERROR_LOG )
    {
        ::FileAppend("$::DDIR/error_log", scalar(localtime()) . "\n\tError: $message\n\tQuery: $query\n\n");
    }

    ::Header("Content-type: text/html\n\n");
    
    if( $ENV{'REQUEST_METHOD'} )
    {
        print <<"        HTML";
        <div align="center">
        <font face='Arial' size='2'>
        <h2>MySQL Error</h2>
        </font>

        <table width="500" cellspacing="2">
        <tr>
        <td valign="top">
        <font face='Arial' size='2'>
        <b>Error</b><br />
        </font>
        </td>
        <td>
        <font face='Arial' size='2'>
        <span id="Error">
        $message
        </span>
        <br />
        </font>
        </td>
        </tr>
        <tr>
        <td>
        <font face='Arial' size='2'>
        <b>Query</b><br />
        </font>
        </td>
        <td>
        <font face='Arial' size='2'>
        $query<br />
        </font>
        </td>
        </tr>
        </table>

        </div>
        HTML
    }
    else
    {
        print "\n\tError: $message\n";
        print "\tQuery: $query\n\n";
    }

    exit;
}

Youez - 2016 - github.com/yon3zu
LinuXploit