!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux acloudg.aryanict.com 4.18.0-513.9.1.lve.el8.x86_64 #1 SMP Mon Dec 4 15:01:22 UTC
2023 x86_64
 

uid=1095(katebhospital) gid=1098(katebhospital) groups=1098(katebhospital) 

Safe-mode: OFF (not secure)

/var/softaculous/sitepad/editor/site-data/plugins/speedycache-pro/main/   drwxr-xr-x
Free 290.38 GB of 429.69 GB (67.58%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     googlefonts.php (5.57 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
* SPEEDYCACHE
* https://speedycache.com/
* (c) SpeedyCache Team
*/

namespace SpeedyCache;

if(!
defined('ABSPATH')){
    die(
'Hacking Attempt');
}

class 
GoogleFonts{

    
// Plucks out the google font urls from the content
    
static function get($content){

        
preg_match_all('/<link.*href=(["\'])(.*fonts\.googleapis\.com\/css.*?)\1/m'$content$font_rels);

        
//We just need the index 2
        
if(empty($font_rels[2])){
            return 
$content;
        }
        
        
$fonts = array();
        
        for(
$i 0$i count($font_rels[2]); $i++){
            if(empty(
$font_rels[2][$i])){
                continue;
            }
        
            
$fonts[md5($font_rels[2][$i])] = $font_rels[2][$i];
        }
        
        if(empty(
$fonts)){
            return;
        }

        
self::fetch($fonts);
    }

    
// Reads the font css and saves it to /speedycache/fonts/font-name/
    
static function fetch($fonts){
        
        
$html '<!DOCTYPE html>
<html>
<body>
<a href="https://speedycache.com">SpeedyCache</a>
</body>
</html>'
;
        

        foreach(
$fonts as $font_name => $url){
            
$url esc_url($url);

            if(
substr($url02) === '//'){
                
$url 'https:' $url;
            }

            
$response wp_remote_get($url, array('user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'));
            
            if(
is_wp_error($response) || !is_array($response)){
                continue;
            }
            
            
$css wp_remote_retrieve_body($response);
            
            if(
is_wp_error($css) || empty($css)){
                continue;
            }
            
            if(!
file_exists(speedycache_cache_path('fonts'))){
                @
mkdir(speedycache_cache_path('fonts'));
            }
            
            if(!
file_exists(speedycache_cache_path('fonts/index.html'))){
                
file_put_contents(speedycache_cache_path('fonts/index.html'), $html);
            }

            if(!
file_exists(speedycache_cache_path('fonts/').$font_name)){
                @
mkdir(speedycache_cache_path('fonts/').$font_name);
            }
            
            if(!
file_exists(speedycache_cache_path('fonts/').$font_name '/index.html')){
                
file_put_contents(speedycache_cache_path('fonts/').$font_name '/index.html'$html);
            }

            
preg_match_all('/url\((.*?)\)/m'$response['body'], $urls); // Get URL from the CSS we got

            
if(empty($urls) || empty($urls[1])){
                continue;
            }
            
            foreach(
$urls[1] as $url){
                
$file_name basename($url);
                
                if(
file_exists(speedycache_cache_path('fonts/') . $font_name '/' $file_name)){
                    continue;
                }

                if(
strpos($url'display=swap') === FALSE){
                    
$url_to_hit add_query_arg(array('display' => 'swap'), $url);
                }

                
$response wp_remote_get($url_to_hit);

                if(
is_wp_error($response) || !is_array($response)){
                    continue;
                }
                
                
$font wp_remote_retrieve_body($response);

                if(
is_wp_error($font) || empty($font)){
                    continue;
                }

                
file_put_contents(speedycache_cache_path('fonts/').$font_name.'/'.$file_name$font); // Creating the font file
                
$css str_replace($urlSPEEDYCACHE_CACHE_URL .'/'SPEEDYCACHE_SERVER_HOST '/fonts/'$font_name .'/'$file_name$css);
            }

            if(
file_exists(speedycache_cache_path('fonts/').$font_name.'/'.$font_name '.css')){
                return;
            }

            
//If we need to add swap then either we failed to add display=swap to the url or it didnt return what we expected.
            
if(strpos($css'swap') === FALSE){
                
$css preg_replace('/(^@font-face\s{)/m'"$1\n  font-display: swap;"$css);
            }
            
            
file_put_contents(speedycache_cache_path('fonts/').$font_name.'/'.$font_name '.css'$css);
        }
    }

    
// Replaces font url to the local font url
    
static function replace($content){
        
        
$cache_dir speedycache_cache_path();
        
        if(!
is_dir($cache_dir '/fonts')){
            @
mkdir($cache_dir '/fonts'0755true);
        }

        
$fonts array_diff(@scandir($cache_dir 'fonts'), array('..''.'));
        
        if(empty(
$fonts)){
            return 
$content;
        }

        
// To remove any preload or dns-fetch or preconnect for google fonts
        
preg_match_all('/<link(?:[^>]+)?href=(["\'])([^>]*?fonts\.(gstatic|googleapis)\.com.*?)\1.*?>/i'$content$google_linksPREG_SET_ORDER);
            
        if(!empty(
$google_links)){
            foreach(
$google_links as $google_link){

                
preg_match('/rel=(["\'])(.*?(preload|preconnect|dns-fetch).*?)\1/i'$google_link[2], $removeable_link);

                if(!empty(
$removeable_link)){
                    
$content str_replace($google''$html);
                }
            }
        }
        
        
/**
          * Our Font css name is in md5(created from the font URL) and we dont have URL in this function to get
          * all the google fonts url to replace the fonts .
        */
        
preg_match_all('/<link.*href=(["\'])(.*fonts\.googleapis\.com\/css.*?)\1/m'$content$font_rels);
        
        if(empty(
$font_rels[2])){
            return 
$content;
        }
        
        foreach(
$font_rels[2] as $url){
            foreach(
$fonts as $font){

                if(
in_array($font, array('.''..'))){
                    continue;
                }
                
                if(!
file_exists($cache_dir 'fonts/' $font '/' $font '.css')){
                    continue;
                }
                
                
$css_url SPEEDYCACHE_CACHE_URL .'/'SPEEDYCACHE_SERVER_HOST '/fonts/' $font '/' $font '.css';
                
                if(
md5($url) === $font){
                    
$content preg_replace('/<link(.*)href=(["\'])(.*fonts\.googleapis\.com\/css.*?)\2/m''<link$1 href="'.$css_url .'" '$content);
                }
            }
        }
        
        return 
$content;
    }
    
    static function 
add_swap($content){    
        
$content str_replace('&#038;display=swap'''$content);
        
$content str_replace('&display=swap'''$content);

        
// Add font-display=swap as a querty parameter to Google fonts
        
$content str_replace('googleapis.com/css?family''googleapis.com/css?display=swap&family'$content);
        
        return 
$content;
    }

}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

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

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0045 ]--