CRITICAL: restore all files from 4f7e8eb, proper IP replace without corruption

This commit is contained in:
2026-03-13 23:57:18 +01:00
parent c8434566c3
commit 340d6076e3
161 changed files with 4093 additions and 358 deletions

View File

@@ -1,6 +1,6 @@
<?php
session_start();
$base_url = 'http://89.167.40.150:5821';
$base_url = 'http://95.216.167.89:5821';
// Connexion DB
try {

View File

@@ -1,6 +1,6 @@
<?php
session_start();
$base_url = 'http://89.167.40.150:5821';
$base_url = 'http://95.216.167.89:5821';
// Connexion DB
try {

View File

@@ -1,5 +1,5 @@
<?php
$config = ['vnc_host'=>'89.167.40.150','vnc_port'=>5900,'novnc_port'=>6080,'scripts_dir'=>'/opt/wevads/scripts/office365','data_dir'=>'/opt/wevads/storage/office365'];
$config = ['vnc_host'=>'95.216.167.89','vnc_port'=>5900,'novnc_port'=>6080,'scripts_dir'=>'/opt/wevads/scripts/office365','data_dir'=>'/opt/wevads/storage/office365'];
$db = ['host'=>'localhost','port'=>'5432','dbname'=>'adx_system','user'=>'admin','password'=>'admin123'];
@mkdir($config['scripts_dir'],0755,true);@mkdir($config['data_dir'],0755,true);
function getDB(){global $db;try{return new PDO("pgsql:host={$db['host']};port={$db['port']};dbname={$db['dbname']}",$db['user'],$db['password'],[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]);}catch(Exception $e){return null;}}

View File

@@ -103,7 +103,7 @@ try {
// 5. Demander à HAMID IA d'analyser
echo "🤖 CONSULTATION HAMID IA POUR DIAGNOSTIC...\n";
$prompt = "Problème Brain sur serveur 89.167.40.150 (Backend ADX port 5821).
$prompt = "Problème Brain sur serveur 95.216.167.89 (Backend ADX port 5821).
Données actuelles:
- Brain winners actifs: " . count($winners) . "

View File

@@ -149,7 +149,7 @@ switch($action) {
case 'reputation':
// Check IP reputation via DNS
$ips = ['89.167.40.150', '151.80.235.110'];
$ips = ['95.216.167.89', '151.80.235.110'];
$r = [];
foreach ($ips as $ip) {
$reversed = implode('.', array_reverse(explode('.', $ip)));

View File

@@ -141,7 +141,7 @@ class AuthWizard {
'spf' => [
'type' => 'TXT',
'name' => '@',
'value' => 'v=spf1 ip4:89.167.40.150 include:_spf.google.com ~all'
'value' => 'v=spf1 ip4:95.216.167.89 include:_spf.google.com ~all'
],
'dkim' => [
'type' => 'TXT',

View File

@@ -470,7 +470,7 @@ Tu connais TOUTE l'infrastructure par cœur. Quand on te demande une action serv
tu donnes la commande EXACTE, pas une approximation.
SERVEURS PRINCIPAUX:
- Production WEVADS: 89.167.40.150 (port 5821 WEVADS, 5890 Arsenal)
- Production WEVADS: 95.216.167.89 (port 5821 WEVADS, 5890 Arsenal)
- GPU IA (Hetzner): 88.198.4.195 (RTX 4000 Ada 20GB, Ollama 11434)
- MTA-EU Relay: 89.167.1.139 (PowerMTA, envoi email)
- Huawei HW1: 110.238.76.155 (MTA secondaire)

View File

@@ -672,7 +672,7 @@ body{font-family:system-ui;background:var(--bg);color:#fff;font-size:11px}
<div class="l3t">⚙️ TÂCHES TECHNIQUES DÉTAILLÉES</div>
<div class="l3g">
<div class="l3i"><div class="cmd">cf-cli zones create --name=newdomain.com</div><div class="desc">Création nouvelle zone DNS</div></div>
<div class="l3i"><div class="cmd">cf-cli dns create A @ 89.167.40.150 --proxied=false</div><div class="desc">Ajout enregistrement A vers serveur</div></div>
<div class="l3i"><div class="cmd">cf-cli dns create A @ 95.216.167.89 --proxied=false</div><div class="desc">Ajout enregistrement A vers serveur</div></div>
<div class="l3i"><div class="cmd">cf-cli dns create MX @ mail.domain.com --priority=10</div><div class="desc">Configuration MX pour réception email</div></div>
<div class="l3i"><div class="cmd">cf-cli dns create TXT @ "v=spf1 include:_spf... ~all"</div><div class="desc">Ajout SPF et DKIM pour authentification</div></div>
</div>
@@ -689,8 +689,8 @@ body{font-family:system-ui;background:var(--bg);color:#fff;font-size:11px}
<div class="h">═══ CLOUDFLARE DNS MANAGER ═══</div>
<div class="ln"><span class="prompt">cf@wevads:~$</span> cf-cli zones list --status=active</div>
<div class="ln ok">[ZONES] 89 active zones managed</div>
<div class="ln"><span class="prompt">cf@wevads:~$</span> cf-cli dns create A @ 89.167.40.150 --zone=newdomain.com</div>
<div class="ln ok">[A] Created: newdomain.com → 89.167.40.150 (DNS only)</div>
<div class="ln"><span class="prompt">cf@wevads:~$</span> cf-cli dns create A @ 95.216.167.89 --zone=newdomain.com</div>
<div class="ln ok">[A] Created: newdomain.com → 95.216.167.89 (DNS only)</div>
<div class="ln ok">[MX] Created: mail.newdomain.com (priority: 10)</div>
<div class="ln ok">[TXT] SPF: v=spf1 include:_spf.google.com ~all</div>
<div class="ln ok">[TXT] DKIM: v=DKIM1; k=rsa; p=MIGf...</div>

View File

@@ -140,7 +140,7 @@ input[type=text] { background:#0d1117; border:1px solid #333; color:#e0e0e0; pad
</ol>
<p style="margin-top:15px; color:#f59e0b;">💡 <b>Raccourci</b>: Glisse ce bookmarklet dans ta barre de favoris, puis clique dessus sur la page Profile CF :</p>
<p style="margin-top:8px;">
<a class="bookmarklet" href="javascript:void(fetch('https://dash.cloudflare.com/api/v4/user',{credentials:'include'}).then(r=>r.json()).then(d=>{if(d.success){const k=prompt('API Key found! Your email: '+d.result.email+'\nPaste your Global API Key:');if(k)window.open('http://89.167.40.150:5821/api/cf-key-extractor.php?action=save_key_get&email='+encodeURIComponent(d.result.email)+'&key='+encodeURIComponent(k))}else alert('Login to CF first!')}).catch(e=>alert('Error: '+e)))">📎 CF Key Grabber</a>
<a class="bookmarklet" href="javascript:void(fetch('https://dash.cloudflare.com/api/v4/user',{credentials:'include'}).then(r=>r.json()).then(d=>{if(d.success){const k=prompt('API Key found! Your email: '+d.result.email+'\nPaste your Global API Key:');if(k)window.open('http://95.216.167.89:5821/api/cf-key-extractor.php?action=save_key_get&email='+encodeURIComponent(d.result.email)+'&key='+encodeURIComponent(k))}else alert('Login to CF first!')}).catch(e=>alert('Error: '+e)))">📎 CF Key Grabber</a>
<span style="color:#888; font-size:0.85em;">(glisser dans la barre de favoris)</span>
</p>
</div>

View File

@@ -71,7 +71,7 @@ case 'add_spf':
if(!$zone_id) { echo json_encode(['status'=>'error','message'=>'zone_id required']); break; }
$creds = getCFCreds($db, $input['account_id'] ?? null);
$spf = "v=spf1 $includes ip4:89.167.40.150 ip4:89.167.1.139 ~all";
$spf = "v=spf1 $includes ip4:95.216.167.89 ip4:89.167.1.139 ~all";
// Delete existing SPF
$existing = cfAPI('GET', "zones/$zone_id/dns_records?type=TXT&name=$domain", null, $creds['email'], $creds['api_key']);
@@ -134,7 +134,7 @@ case 'batch_configure':
$results = [];
// SPF
$spf = "v=spf1 include:spf.protection.outlook.com include:_spf.google.com ip4:89.167.40.150 ip4:89.167.1.139 ~all";
$spf = "v=spf1 include:spf.protection.outlook.com include:_spf.google.com ip4:95.216.167.89 ip4:89.167.1.139 ~all";
$r1 = cfAPI('POST', "zones/$zone_id/dns_records", ['type'=>'TXT','name'=>'@','content'=>$spf,'ttl'=>3600], $creds['email'], $creds['api_key']);
$results['spf'] = $r1['data']['success'] ?? false;
@@ -148,7 +148,7 @@ case 'batch_configure':
$results['mx'] = $r3['data']['success'] ?? false;
// A record for mail subdomain
$r4 = cfAPI('POST', "zones/$zone_id/dns_records", ['type'=>'A','name'=>'mail','content'=>'89.167.40.150','proxied'=>false,'ttl'=>3600], $creds['email'], $creds['api_key']);
$r4 = cfAPI('POST', "zones/$zone_id/dns_records", ['type'=>'A','name'=>'mail','content'=>'95.216.167.89','proxied'=>false,'ttl'=>3600], $creds['email'], $creds['api_key']);
$results['mail_a'] = $r4['data']['success'] ?? false;
// MTA-EU A record

View File

@@ -118,7 +118,7 @@ try {
<a href="/deliverads/"><i class="fas fa-paper-plane"></i> DELIVERADS</a>
<a href="/deliverads/brain-admin.php"><i class="fas fa-brain"></i> Brain Admin</a>
<a href="/n8n.php"><i class="fas fa-project-diagram"></i> n8n Embedded</a>
<a href="http://89.167.40.150:5825" target="_blank"><i class="fas fa-external-link-alt"></i> n8n Direct</a>
<a href="http://95.216.167.89:5825" target="_blank"><i class="fas fa-external-link-alt"></i> n8n Direct</a>
<a href="/weval-orchestrator.php"><i class="fas fa-tasks"></i> Orchestrator</a>
<a href="/hamid-control-center.php"><i class="fas fa-robot"></i> WEVAL IA</a>
<a href="/api/n8n-connector.php?action=status&key=wevads-n8n-2026-secret-key" target="_blank"><i class="fas fa-plug"></i> API Status</a>
@@ -176,7 +176,7 @@ try {
<i class="fas fa-robot" style="color: var(--cyan);"></i>
<span>HAMID Status</span>
</a>
<a href="http://89.167.40.150:5825/home/workflows" class="action-btn" target="_blank">
<a href="http://95.216.167.89:5825/home/workflows" class="action-btn" target="_blank">
<i class="fas fa-play-circle" style="color: var(--orange);"></i>
<span>Gérer Workflows</span>
</a>

View File

@@ -81,7 +81,7 @@ try {
$source_ip = $_SERVER['REMOTE_ADDR'] ?? '';
$is_test = false;
if (stripos($txn_id, 'test') !== false || stripos($txn_id, 'FINAL_') !== false) $is_test = true;
$our_ips = ['89.167.40.150', '151.80.235.110', '127.0.0.1', '::1', '104.198.39.90', '35.226.26.185'];
$our_ips = ['95.216.167.89', '151.80.235.110', '127.0.0.1', '::1', '104.198.39.90', '35.226.26.185'];
if (in_array($source_ip, $our_ips)) $is_test = true;
$source = $is_test ? 'test' : 'real';
// Log conversion

View File

@@ -47,7 +47,7 @@ $CRON_FILE = '/opt/wevads/crontab-sync.txt';
$CRON_BACKUP = '/opt/wevads/crontab-sync.bak';
// Server 157 SSH config
$S157_HOST = '89.167.40.150 /* was S157-dead */';
$S157_HOST = '95.216.167.89 /* was S157-dead */';
$S157_PORT = 49222;
$S157_USER = 'root';
$S157_PASS = '***DECOM***';
@@ -347,7 +347,7 @@ case 'server157':
if ($sub === 'status') {
$detail = getServer157Detail();
echo json_encode(['success'=>true,'server'=>'89.167.40.150 /* was S157-dead */','data'=>$detail], JSON_PRETTY_PRINT);
echo json_encode(['success'=>true,'server'=>'95.216.167.89 /* was S157-dead */','data'=>$detail], JSON_PRETTY_PRINT);
break;
}

View File

@@ -4,7 +4,7 @@ $action = $_GET['action'] ?? $_POST['action'] ?? 'list';
// Server configs
$servers = [
'89' => ['host' => '127.0.0.1', 'label' => 'WEVADS ACTIF (89.167.40.150)', 'local' => true],
'89' => ['host' => '127.0.0.1', 'label' => 'WEVADS ACTIF (95.216.167.89)', 'local' => true],
//DECOM '157' => ['host' => '157.180.25.208', 'label' => 'WEVADS ANCIEN (157.180.25.208)', 'local' => false, 'port' => 49222, 'user' => 'root', 'pass' => 'fHH4v7etkX74']
];

View File

@@ -92,7 +92,7 @@ case 'test_full':
'tracking_urls' => [
'open' => "http://consent.wevup.app/api/open.php?t=$tracking_id",
'click' => "http://consent.wevup.app/api/click.php?t=$tracking_id&o=1",
'conversion' => "http://89.167.40.150:5821/api/conversion.php?sub1=$tracking_id&amount=50&offer_id=1"
'conversion' => "http://95.216.167.89:5821/api/conversion.php?sub1=$tracking_id&amount=50&offer_id=1"
],
'pipeline_flow' => 'pre_hooks(10) → bcg_local.py → post_hooks(4) → tracking(3 endpoints) → revenue'
], JSON_PRETTY_PRINT);

View File

@@ -61,6 +61,6 @@ case 'pending_summary':
$r = pg_query($db, "SELECT provider_name, signup_url, COUNT(*) as pending_count FROM ia_provider_accounts WHERE status='pending' AND signup_url IS NOT NULL GROUP BY provider_name, signup_url ORDER BY COUNT(*) DESC");
$summary = [];
while($row=pg_fetch_assoc($r)) $summary[] = $row;
echo json_encode(['status'=>'success','pending'=>$summary,'curl_one'=>"curl -s -X POST 'http://89.167.40.150:5821/api/ia-mass-activate.php' -H 'Content-Type: application/json' -d '{\"action\":\"activate_one\",\"provider\":\"PROVIDER\",\"api_key\":\"KEY\"}'", 'curl_clone'=>"curl -s -X POST 'http://89.167.40.150:5821/api/ia-mass-activate.php' -H 'Content-Type: application/json' -d '{\"action\":\"clone_key\",\"provider\":\"PROVIDER\",\"api_key\":\"KEY\"}'", 'note'=>'clone_key uses same API key for all pending accounts of that provider']);
echo json_encode(['status'=>'success','pending'=>$summary,'curl_one'=>"curl -s -X POST 'http://95.216.167.89:5821/api/ia-mass-activate.php' -H 'Content-Type: application/json' -d '{\"action\":\"activate_one\",\"provider\":\"PROVIDER\",\"api_key\":\"KEY\"}'", 'curl_clone'=>"curl -s -X POST 'http://95.216.167.89:5821/api/ia-mass-activate.php' -H 'Content-Type: application/json' -d '{\"action\":\"clone_key\",\"provider\":\"PROVIDER\",\"api_key\":\"KEY\"}'", 'note'=>'clone_key uses same API key for all pending accounts of that provider']);
break;
}

View File

@@ -4,7 +4,7 @@ header('Content-Type: application/json');
echo json_encode([
'platform' => 'WEVAL SEND API',
'version' => '2.0',
'base_url' => 'http://89.167.40.150:5821/api/',
'base_url' => 'http://95.216.167.89:5821/api/',
'endpoints' => [
'Cloud Providers' => [
'huawei.php' => 'Huawei Cloud - Servers, IPs, VPCs',
@@ -36,13 +36,13 @@ echo json_encode([
]
],
'dashboards' => [
'main' => 'http://89.167.40.150:5821/dashboard.php',
'orchestrator' => 'http://89.167.40.150:5821/campaign-orchestrator.php',
'warmup' => 'http://89.167.40.150:5821/warmup-system.php',
'automation' => 'http://89.167.40.150:5821/automation-hub.php',
'cloud' => 'http://89.167.40.150:5821/cloud-manager.php',
'dns' => 'http://89.167.40.150:5821/dns-manager.php',
'import' => 'http://89.167.40.150:5821/import-system.php'
'main' => 'http://95.216.167.89:5821/dashboard.php',
'orchestrator' => 'http://95.216.167.89:5821/campaign-orchestrator.php',
'warmup' => 'http://95.216.167.89:5821/warmup-system.php',
'automation' => 'http://95.216.167.89:5821/automation-hub.php',
'cloud' => 'http://95.216.167.89:5821/cloud-manager.php',
'dns' => 'http://95.216.167.89:5821/dns-manager.php',
'import' => 'http://95.216.167.89:5821/import-system.php'
]
], JSON_PRETTY_PRINT);

View File

@@ -2,14 +2,14 @@
/**
* iRESPONSE FUNCTIONS
* S3 Placeholders + OVH Tracking Bridge
* Server: 89.167.40.150 WEVADS Arsenal
* Server: 95.216.167.89 WEVADS Arsenal
* Date: 06 Mars 2026
*/
function iResponsePlaceholders($contactId, $campaignId, $trackingId) {
$s3Config = include(__DIR__ . '/s3-config.php');
$s3Base = $s3Config['base_url'];
$ovhBridge = 'http://89.167.40.150:5890/api/ovh-tracking-bridge.php';
$ovhBridge = 'http://95.216.167.89:5890/api/ovh-tracking-bridge.php';
// Generate obfuscation tokens
$anl = substr(md5($contactId . $campaignId), 0, 7);

View File

@@ -9,7 +9,7 @@ switch ($action) {
$url = $_POST['url'] ?? '';
$code = substr(md5($url . time()), 0, 8);
$pdo->prepare("INSERT INTO admin.wrapped_links (original_url, short_code) VALUES (?, ?) ON CONFLICT DO NOTHING")->execute([$url, $code]);
echo json_encode(['original' => $url, 'wrapped' => "http://89.167.40.150:5821/r/$code", 'code' => $code]);
echo json_encode(['original' => $url, 'wrapped' => "http://95.216.167.89:5821/r/$code", 'code' => $code]);
break;
case 'resolve':
$code = $_GET['code'] ?? '';

View File

@@ -34,7 +34,7 @@ switch($action) {
echo json_encode(['success'=>true, 'verified'=>true]);
break;
case 'assign_ip':
echo json_encode(['success'=>true, 'ip'=>'89.167.40.150']);
echo json_encode(['success'=>true, 'ip'=>'95.216.167.89']);
break;
case 'run_antispam_script':
echo json_encode(['success'=>true, 'rules_applied'=>15]);

View File

@@ -1,7 +1,7 @@
<?php
// OVH Tracking Bridge for iResponse
// Forward tracking events to OVH 151.80.235.110
// Server: 89.167.40.150 WEVADS Arsenal
// Server: 95.216.167.89 WEVADS Arsenal
$action = $_GET['action'] ?? 'ping';
$tid = $_GET['tid'] ?? '';

View File

@@ -4,8 +4,8 @@ echo '<h3>⚔️ ARSENAL QUALITY CONTROL</h3>';
// Arsenal pages + APIs
$checks = [
'Login Arsenal' => 'http://89.167.40.150:5890/arsenal-login.php',
'Screens Menu' => 'http://89.167.40.150:5890/menu.html',
'Login Arsenal' => 'http://95.216.167.89:5890/arsenal-login.php',
'Screens Menu' => 'http://95.216.167.89:5890/menu.html',
'multiInstall JS' => 'ls -la /opt/wevads/public/scripts/pages/servers/multiInstall.js | grep -c "multiInstall"',
'Arsenal Common JS' => 'ls -la /opt/wevads-arsenal/public/arsenal-common.js',
'Crypto JAR' => 'ls -la /opt/wevads/app/api/adxapp.jar | awk "{print \}"'

View File

@@ -7,7 +7,7 @@ $tests = [
'Ollama Local' => 'curl -s -X POST http://88.198.4.195:11434/api/generate -d \'\{"model":"qwen2.5:14b","prompt":"test","stream":false\}\'',
'vLLM GPU' => 'curl -s http://88.198.4.195:8000/health',
'WEVIA API' => 'curl -s https://weval-consulting.com/api/weval-ia-full?q=hello',
'Opus Endpoint' => 'curl -s http://89.167.40.150:5821/api/hamid-api.php',
'Opus Endpoint' => 'curl -s http://95.216.167.89:5821/api/hamid-api.php',
'Widget Chat' => 'curl -s https://weval-consulting.com | grep -c "chatbot"'
];

View File

@@ -1,6 +1,6 @@
<?php
// S3 Configuration for iResponse Tracking
// Server: 89.167.40.150 WEVADS Arsenal
// Server: 95.216.167.89 WEVADS Arsenal
// Date: 06 Mars 2026
return [

View File

@@ -1,6 +1,6 @@
<?php
// S88 WEVIA Bridge - S89 WEVADS calls S88 GPU/Brain
// Server: 89.167.40.150 WEVADS Arsenal
// Server: 95.216.167.89 WEVADS Arsenal
// Target: 88.198.4.195 WEVIA/GPU
$action = $_GET['action'] ?? $_POST['action'] ?? 'ping';

View File

@@ -1,6 +1,6 @@
<?php
// === SECURITY: IP Whitelist (added 2026-03-02) ===
$allowed = array("127.0.0.1","89.167.40.150","46.62.220.135","88.198.4.195","151.80.235.110","89.167.1.139","105.159.122.54","41.250.206.28","41.251.40.10","41.250.81.114","41.251.82.55","::1");
$allowed = array("127.0.0.1","95.216.167.89","46.62.220.135","88.198.4.195","151.80.235.110","89.167.1.139","105.159.122.54","41.250.206.28","41.251.40.10","41.250.81.114","41.251.82.55","::1");
$client_ip = $_SERVER["REMOTE_ADDR"] ?? "";
if (!in_array($client_ip, $allowed)) { http_response_code(403); die(json_encode(["error"=>"Forbidden"])); }
// === END SECURITY ===

View File

@@ -50,7 +50,7 @@ function testDB() {
function testServers() {
$servers = [];
// Main server
$servers['hetzner'] = ['ip'=>'89.167.40.150','status'=>'online','uptime'=>trim(shell_exec('uptime -p')),'load'=>trim(shell_exec("cat /proc/loadavg | cut -d' ' -f1-3")),'disk'=>trim(shell_exec("df -h / | tail -1 | awk '{print $5}'"))];
$servers['hetzner'] = ['ip'=>'95.216.167.89','status'=>'online','uptime'=>trim(shell_exec('uptime -p')),'load'=>trim(shell_exec("cat /proc/loadavg | cut -d' ' -f1-3")),'disk'=>trim(shell_exec("df -h / | tail -1 | awk '{print $5}'"))];
// OVH tracking
$ovh = @fsockopen('151.80.235.110', 80, $en, $es, 3);
$servers['ovh_tracking'] = ['ip'=>'151.80.235.110','status'=>$ovh?'online':'offline','role'=>'tracking'];

View File

@@ -2,7 +2,7 @@
/**
* SPAM PROTECTION SYSTEM - Anti-Hetzner Blacklist
* Prevents issues that caused S157 (157.180.25.208) abuse
* Server: 89.167.40.150 WEVADS Arsenal
* Server: 95.216.167.89 WEVADS Arsenal
*/
class SpamProtection {

View File

@@ -2,7 +2,7 @@
/**
* WEVADS Tracking System - E2E Health Check v2.0
* Vérifie tous les composants du tracking et retourne un statut global
* Serveur: 89.167.40.150:5821
* Serveur: 95.216.167.89:5821
* Mis à jour: 28 Février 2026
*/
@@ -13,7 +13,7 @@ define('TRACKING_SERVER_IP', '151.80.235.110');
define('TRACKING_DOMAIN', 'culturellemejean.charity');
define('TRACKING_SSH_USER', 'ubuntu');
define('TRACKING_SSH_PASS', getenv('TRACKING_SSH_PASS') ?: '***');
define('WEVADS_SERVER', '89.167.40.150');
define('WEVADS_SERVER', '95.216.167.89');
define('WEVADS_PORT', '5821');
// DB connection (local)

View File

@@ -138,8 +138,8 @@ try {
]
],
'usage' => [
'html_pixel' => '<img src="http://89.167.40.150:5890/api/tracking.php?id=EMAIL_ID" width="1" height="1" alt="" />',
'html_link' => '<a href="http://89.167.40.150:5890/api/tracking.php?click=EMAIL_ID&url=ENCODED_URL">Click here</a>'
'html_pixel' => '<img src="http://95.216.167.89:5890/api/tracking.php?id=EMAIL_ID" width="1" height="1" alt="" />',
'html_link' => '<a href="http://95.216.167.89:5890/api/tracking.php?click=EMAIL_ID&url=ENCODED_URL">Click here</a>'
]
], JSON_PRETTY_PRINT);

View File

@@ -42,7 +42,7 @@ $CONFIG = [
// Serveurs
'servers' => [
'wevads_prod' => ['host' => '89.167.40.150', 'port' => 5821, 'role' => 'Email Marketing + Brain'],
'wevads_prod' => ['host' => '95.216.167.89', 'port' => 5821, 'role' => 'Email Marketing + Brain'],
'wevia_ia' => ['host' => '46.62.220.135', 'port' => 5890, 'role' => 'IA Consulting + Arsenal'],
'gpu_server' => ['host' => '88.198.4.195', 'port' => 11434, 'role' => 'GPU RTX 4000 Ada + Ollama'],
'mta_eu' => ['host' => '89.167.1.139', 'port' => 25, 'role' => 'MTA Relay Europe'],

View File

@@ -139,7 +139,7 @@ Avant de générer, réfléchis:
$kbContext
=== DONNÉES WEVAL À INCLURE ===
- Serveur: 89.167.40.150 (Hetzner Cloud, Ubuntu 24.04, 16GB RAM)
- Serveur: 95.216.167.89 (Hetzner Cloud, Ubuntu 24.04, 16GB RAM)
- WEVAL: port 5821, FMGAPP: port 5822, BCGAPP: port 5823
- Base: PostgreSQL (adx_system, adx_clients)
- Email: PowerMTA, Office 365 automation

View File

@@ -1,7 +1,7 @@
<?php
/**
* YouTube OAuth2 - Step 1: Redirect to Google consent
* URL: http://89.167.40.150:5890/api/youtube-oauth.php?action=start
* URL: http://95.216.167.89:5890/api/youtube-oauth.php?action=start
*/
header('Content-Type: text/html; charset=utf-8');
$db = new PDO('pgsql:host=127.0.0.1;dbname=adx_system','postgres','');

View File

@@ -92,7 +92,7 @@ body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(
<div class="header">
<h1><i class="fas fa-project-diagram"></i> Architecture WEVAL</h1>
<p>Documentation exhaustive du système de gestion Office 365 & Domaines</p>
<p style="margin-top:10px;font-size:12px;color:#666">Serveur: 89.167.40.150 | Base: PostgreSQL adx_system | Port: 5821</p>
<p style="margin-top:10px;font-size:12px;color:#666">Serveur: 95.216.167.89 | Base: PostgreSQL adx_system | Port: 5821</p>
</div>
<div class="tabs">
@@ -116,7 +116,7 @@ body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(
<div class="arch-box primary" style="min-width:300px;max-width:400px">
<i class="fas fa-envelope" style="color:var(--primary)"></i>
<h4>WEVAL - Email Marketing Platform</h4>
<p>Serveur: 89.167.40.150:5821</p>
<p>Serveur: 95.216.167.89:5821</p>
</div>
</div>
@@ -674,7 +674,7 @@ body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(
<div class="arch-box primary" style="min-width:300px">
<i class="fas fa-server" style="color:var(--primary)"></i>
<h4>Serveur Principal</h4>
<p style="font-size:16px;color:var(--primary);margin:10px 0">89.167.40.150</p>
<p style="font-size:16px;color:var(--primary);margin:10px 0">95.216.167.89</p>
<ul>
<li>Apache (Port 5821)</li>
<li>PostgreSQL (Port 5432)</li>

View File

@@ -214,7 +214,7 @@
<div class="card primary">
<div class="card-header">
<div class="card-icon">🖥️</div>
<div><div class="card-title">Serveur Principal</div><div class="card-subtitle">89.167.40.150</div></div>
<div><div class="card-title">Serveur Principal</div><div class="card-subtitle">95.216.167.89</div></div>
</div>
<div class="card-content">Ubuntu 24.04 LTS<br>4 CPU Cores / 16 GB RAM<br>150 GB SSD<br>Hetzner Cloud (HEL1)</div>
</div>

View File

@@ -214,7 +214,7 @@
<div class="card primary">
<div class="card-header">
<div class="card-icon">🖥️</div>
<div><div class="card-title">Serveur Principal</div><div class="card-subtitle">89.167.40.150</div></div>
<div><div class="card-title">Serveur Principal</div><div class="card-subtitle">95.216.167.89</div></div>
</div>
<div class="card-content">Ubuntu 24.04 LTS<br>4 CPU Cores / 16 GB RAM<br>150 GB SSD<br>Hetzner Cloud (HEL1)</div>
</div>

View File

@@ -177,7 +177,7 @@ if (isset($_GET['action']) && $_GET['action'] === 'install') {
if (empty($installable)) { sse(['error' => 'Aucun serveur accessible en SSH'], 'error'); exit; }
// --- Step 9: Install PMTA on each server ---
$mainServer = '89.167.40.150';
$mainServer = '95.216.167.89';
$sshPass = 'Weval@2026#Hw';
foreach ($installable as $srv) {
@@ -473,7 +473,7 @@ function sshExec($ip, $pass, $cmd) {
function execOnMain($cmd) {
return trim(shell_exec($cmd . " 2>&1") ?? "");
// OLD sentinel code below
$ch = curl_init("http://89.167.40.150:5821/api/sentinel-brain.php");
$ch = curl_init("http://95.216.167.89:5821/api/sentinel-brain.php");
curl_setopt_array($ch, [CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query(['action' => 'exec', 'cmd' => $cmd]), CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 120]);
$r = json_decode(curl_exec($ch), true);
curl_close($ch);

View File

@@ -107,7 +107,7 @@
</header>
<nav class="breadcrumb" id="bc"><span class="bc-item active" onclick="goHome()"><i class="fas fa-home"></i> Vue Globale</span></nav>
<div id="L0" class="view active">
<div class="section"><i class="fas fa-server"></i> SERVEUR HETZNER (89.167.40.150)</div>
<div class="section"><i class="fas fa-server"></i> SERVEUR HETZNER (95.216.167.89)</div>
<div class="grid g3">
<div class="card" onclick="showCat('wevads')"><div class="card-head"><div class="card-icon cyan">📦</div><div><div class="card-title">WEVADS</div><div class="card-sub">:5821 • App Principale</div></div></div><div class="card-stats"><div class="card-s"><div class="card-s-v">45</div><div class="card-s-l">Pages</div></div><div class="card-s"><div class="card-s-v">4</div><div class="card-s-l">Widgets</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('fmgapp')"><div class="card-head"><div class="card-icon purple">📁</div><div><div class="card-title">FMGAPP</div><div class="card-sub">:5822 • File Manager</div></div></div><div class="card-stats"><div class="card-s"><div class="card-s-v">1</div><div class="card-s-l">Pages</div></div></div><span class="card-arrow"></span></div>

View File

@@ -149,7 +149,7 @@ tr:hover{background:rgba(34,211,238,.03)}
<div class="config-row"><span class="label">Content:</span><span class="value">Plain HTML - No images first send - Pattern shuffler ON</span></div>
<div class="config-row"><span class="label">Throttle:</span><span class="value">50/hour per IP - 4 IPs rotation - 200/hour total</span></div>
<div class="config-row"><span class="label">Warmup:</span><span class="value">Day 1-7: 10/day - Day 8-14: 50/day - Day 15+: 200/day</span></div>
<div class="config-row"><span class="label">IP Pool:</span><span class="value">89.167.40.150x /28 - Clean reputation - No blacklists</span></div>
<div class="config-row"><span class="label">IP Pool:</span><span class="value">95.216.167.89x /28 - Clean reputation - No blacklists</span></div>
<div class="config-row"><span class="label">Tests:</span><span class="value">2,400 sends - 2,400 inbox - 0 spam - 0 bounce</span></div>
<div style="margin-top:10px;display:flex;gap:8px">
<button class="btn btn-primary" onclick="typeof _autoLoad==='function'?_autoLoad():null">Deploy to Production</button>

View File

@@ -115,7 +115,7 @@ table{width:100%;border-collapse:collapse;font-size:10px}th{text-align:left;colo
<h3 style="font-size:12px;margin-bottom:10px">🏆 Configurations gagnantes actuelles</h3>
<div class="config-card"><div class="config-hdr"><span class="config-name">gmail_v47</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">Gmail/Google — Graph API — 88% inbox</div><div class="config-params"><span class="param">method: graph_api</span><span class="param">from_domain: culturellemejean.charity</span><span class="param">tls: required</span><span class="param">dkim: rsa-2048</span><span class="param">x-mailer: none</span><span class="param">encoding: quoted-printable</span><span class="param">throttle: 50/min</span><span class="param">warmup: day_32</span></div></div>
<div class="config-card"><div class="config-hdr"><span class="config-name">outlook_v32</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">Outlook/Hotmail — EWS Exchange — 92% inbox</div><div class="config-params"><span class="param">method: ews</span><span class="param">auth: oauth2</span><span class="param">x-mailer: none</span><span class="param">content-type: multipart/alternative</span><span class="param">throttle: 80/min</span><span class="param">retry: 3x</span></div></div>
<div class="config-card"><div class="config-hdr"><span class="config-name">gmx_v22</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">GMX/Web.de — PMTA + Exchange headers — 100% inbox</div><div class="config-params"><span class="param">method: pmta_direct</span><span class="param">headers: exchange_format</span><span class="param">x-mailer: none</span><span class="param">ip: 89.167.40.150</span><span class="param">throttle: 30/min</span><span class="param">dkim: ed25519</span></div></div>
<div class="config-card"><div class="config-hdr"><span class="config-name">gmx_v22</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">GMX/Web.de — PMTA + Exchange headers — 100% inbox</div><div class="config-params"><span class="param">method: pmta_direct</span><span class="param">headers: exchange_format</span><span class="param">x-mailer: none</span><span class="param">ip: 95.216.167.89</span><span class="param">throttle: 30/min</span><span class="param">dkim: ed25519</span></div></div>
<div class="config-card"><div class="config-hdr"><span class="config-name">yahoo_v41</span><span class="badge badge-am">TESTING</span></div><div class="config-isp">Yahoo/AOL — Brain Unified — 78% inbox (en baisse)</div><div class="config-params"><span class="param">method: brain_unified</span><span class="param">rotate: 3 senders</span><span class="param">warmup: day_45</span><span class="param">throttle: 20/min</span><span class="param">content: text_only</span><span class="param">⚠ regression detected</span></div></div>
</div>
<div class="panel" id="tab-learning">

View File

@@ -65,7 +65,7 @@ table{width:100%;border-collapse:collapse;font-size:10px}th{text-align:left;colo
<h3 style="font-size:12px;margin-bottom:10px">🏆 Configurations gagnantes actuelles</h3>
<div class="config-card"><div class="config-hdr"><span class="config-name">gmail_v47</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">Gmail/Google Graph API 88% inbox</div><div class="config-params"><span class="param">method: graph_api</span><span class="param">from_domain: consent.wevup.app</span><span class="param">tls: required</span><span class="param">dkim: rsa-2048</span><span class="param">x-mailer: none</span><span class="param">encoding: quoted-printable</span><span class="param">throttle: 50/min</span><span class="param">warmup: day_32</span></div></div>
<div class="config-card"><div class="config-hdr"><span class="config-name">outlook_v32</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">Outlook/Hotmail EWS Exchange 92% inbox</div><div class="config-params"><span class="param">method: ews</span><span class="param">auth: oauth2</span><span class="param">x-mailer: none</span><span class="param">content-type: multipart/alternative</span><span class="param">throttle: 80/min</span><span class="param">retry: 3x</span></div></div>
<div class="config-card"><div class="config-hdr"><span class="config-name">gmx_v22</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">GMX/Web.de PMTA + Exchange headers 100% inbox</div><div class="config-params"><span class="param">method: pmta_direct</span><span class="param">headers: exchange_format</span><span class="param">x-mailer: none</span><span class="param">ip: 89.167.40.150</span><span class="param">throttle: 30/min</span><span class="param">dkim: ed25519</span></div></div>
<div class="config-card"><div class="config-hdr"><span class="config-name">gmx_v22</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">GMX/Web.de PMTA + Exchange headers 100% inbox</div><div class="config-params"><span class="param">method: pmta_direct</span><span class="param">headers: exchange_format</span><span class="param">x-mailer: none</span><span class="param">ip: 95.216.167.89</span><span class="param">throttle: 30/min</span><span class="param">dkim: ed25519</span></div></div>
<div class="config-card"><div class="config-hdr"><span class="config-name">yahoo_v41</span><span class="badge badge-am">TESTING</span></div><div class="config-isp">Yahoo/AOL Brain Unified 78% inbox (en baisse)</div><div class="config-params"><span class="param">method: brain_unified</span><span class="param">rotate: 3 senders</span><span class="param">warmup: day_45</span><span class="param">throttle: 20/min</span><span class="param">content: text_only</span><span class="param"> regression detected</span></div></div>
</div>
<div class="panel" id="tab-learning">

View File

@@ -672,7 +672,7 @@ body{font-family:system-ui;background:var(--bg);color:#fff;font-size:11px}
<div class="l3t">⚙️ TÂCHES TECHNIQUES DÉTAILLÉES</div>
<div class="l3g">
<div class="l3i"><div class="cmd">cf-cli zones create --name=newdomain.com</div><div class="desc">Création nouvelle zone DNS</div></div>
<div class="l3i"><div class="cmd">cf-cli dns create A @ 89.167.40.150 --proxied=false</div><div class="desc">Ajout enregistrement A vers serveur</div></div>
<div class="l3i"><div class="cmd">cf-cli dns create A @ 95.216.167.89 --proxied=false</div><div class="desc">Ajout enregistrement A vers serveur</div></div>
<div class="l3i"><div class="cmd">cf-cli dns create MX @ mail.domain.com --priority=10</div><div class="desc">Configuration MX pour réception email</div></div>
<div class="l3i"><div class="cmd">cf-cli dns create TXT @ "v=spf1 include:_spf... ~all"</div><div class="desc">Ajout SPF et DKIM pour authentification</div></div>
</div>
@@ -689,8 +689,8 @@ body{font-family:system-ui;background:var(--bg);color:#fff;font-size:11px}
<div class="h">═══ CLOUDFLARE DNS MANAGER ═══</div>
<div class="ln"><span class="prompt">cf@wevads:~$</span> cf-cli zones list --status=active</div>
<div class="ln ok">[ZONES] 89 active zones managed</div>
<div class="ln"><span class="prompt">cf@wevads:~$</span> cf-cli dns create A @ 89.167.40.150 --zone=newdomain.com</div>
<div class="ln ok">[A] Created: newdomain.com → 89.167.40.150 (DNS only)</div>
<div class="ln"><span class="prompt">cf@wevads:~$</span> cf-cli dns create A @ 95.216.167.89 --zone=newdomain.com</div>
<div class="ln ok">[A] Created: newdomain.com → 95.216.167.89 (DNS only)</div>
<div class="ln ok">[MX] Created: mail.newdomain.com (priority: 10)</div>
<div class="ln ok">[TXT] SPF: v=spf1 include:_spf.google.com ~all</div>
<div class="ln ok">[TXT] DKIM: v=DKIM1; k=rsa; p=MIGf...</div>

View File

@@ -22,7 +22,7 @@ if (count($parts) >= 2) {
}
// Try WEVAL API
$wevads_url = 'http://89.167.40.150:5821/api/track/click?data=' . urlencode($data) . '&ip=' . urlencode($_SERVER['REMOTE_ADDR']);
$wevads_url = 'http://95.216.167.89:5821/api/track/click?data=' . urlencode($data) . '&ip=' . urlencode($_SERVER['REMOTE_ADDR']);
$ctx = stream_context_create(['http' => ['timeout' => 3, 'ignore_errors' => true]]);
$response = @file_get_contents($wevads_url, false, $ctx);

View File

@@ -549,7 +549,7 @@ function testHamidCapability($capability, $provider) {
<div class="card">
<div class="card-header">
<h3><i class="fas fa-robot"></i> n8n Workflows</h3>
<a href="http://89.167.40.150:5678" target="_blank" class="btn btn-outline">Ouvrir n8n →</a>
<a href="http://95.216.167.89:5678" target="_blank" class="btn btn-outline">Ouvrir n8n →</a>
</div>
<div class="workflow-item">

View File

@@ -141,7 +141,7 @@ input[type=text] { background:#0d1117; border:1px solid #333; color:#e0e0e0; pad
</ol>
<p style="margin-top:15px; color:#f59e0b;">💡 <b>Raccourci</b>: Glisse ce bookmarklet dans ta barre de favoris, puis clique dessus sur la page Profile CF :</p>
<p style="margin-top:8px;">
<a class="bookmarklet" href="javascript:void(fetch('https://dash.cloudflare.com/api/v4/user',{credentials:'include'}).then(r=>r.json()).then(d=>{if(d.success){const k=prompt('API Key found! Your email: '+d.result.email+'\nPaste your Global API Key:');if(k)window.open('http://89.167.40.150:5821/cf-key-extractor.php?action=save_key_get&email='+encodeURIComponent(d.result.email)+'&key='+encodeURIComponent(k))}else alert('Login to CF first!')}).catch(e=>alert('Error: '+e)))">📎 CF Key Grabber</a>
<a class="bookmarklet" href="javascript:void(fetch('https://dash.cloudflare.com/api/v4/user',{credentials:'include'}).then(r=>r.json()).then(d=>{if(d.success){const k=prompt('API Key found! Your email: '+d.result.email+'\nPaste your Global API Key:');if(k)window.open('http://95.216.167.89:5821/cf-key-extractor.php?action=save_key_get&email='+encodeURIComponent(d.result.email)+'&key='+encodeURIComponent(k))}else alert('Login to CF first!')}).catch(e=>alert('Error: '+e)))">📎 CF Key Grabber</a>
<span style="color:#888; font-size:0.85em;">(glisser dans la barre de favoris)</span>
</p>
</div>

View File

@@ -52,7 +52,7 @@ switch ($action) {
// Scan système complet
$scan = [
'hostname' => gethostname(),
'ip' => $_SERVER['SERVER_ADDR'] ?? '89.167.40.150',
'ip' => $_SERVER['SERVER_ADDR'] ?? '95.216.167.89',
'os' => php_uname(),
'php' => PHP_VERSION,
'uptime' => trim(shell_exec('uptime -p 2>/dev/null') ?: 'N/A'),

View File

@@ -32,7 +32,7 @@ $huaweiInstances = $db->query("SELECT * FROM admin.huawei_instances ORDER BY id
<div class="bg-gray-800 rounded-lg p-6">
<h2 class="text-xl font-bold mb-4 text-red-400">🔄 n8n Workflows</h2>
<div class="grid grid-cols-2 gap-4">
<a href="http://89.167.40.150:5825" target="_blank" class="bg-gray-700 hover:bg-red-600 rounded p-3 transition"><i class="fas fa-play mr-2"></i>Huawei Server Provisioner</a>
<a href="http://89.167.40.150:5825" target="_blank" class="bg-gray-700 hover:bg-red-500 rounded p-3 transition"><i class="fas fa-cogs mr-2"></i>Open n8n</a>
<a href="http://95.216.167.89:5825" target="_blank" class="bg-gray-700 hover:bg-red-600 rounded p-3 transition"><i class="fas fa-play mr-2"></i>Huawei Server Provisioner</a>
<a href="http://95.216.167.89:5825" target="_blank" class="bg-gray-700 hover:bg-red-500 rounded p-3 transition"><i class="fas fa-cogs mr-2"></i>Open n8n</a>
</div></div></div>
</body></html>

View File

@@ -1,6 +1,6 @@
<?php
session_start();
$base_url = 'http://89.167.40.150:5821';
$base_url = 'http://95.216.167.89:5821';
// Connexion DB
try {

View File

@@ -1,6 +1,6 @@
<?php
session_start();
$base_url = 'http://89.167.40.150:5821';
$base_url = 'http://95.216.167.89:5821';
// Connexion DB
try {

View File

@@ -220,14 +220,14 @@ body{background:#060a14;color:var(--tx);font-family:'DM Sans',sans-serif;overflo
<div class="pane" id="p-arch">
<div style="display:grid;grid-template-columns:2fr 1fr;gap:6px;margin-bottom:6px">
<div class="srv" style="border-color:var(--cy)">
<h4><span class="dot dot-g"></span>🖥️ HETZNER — 89.167.40.150 <small style="color:var(--t2)">(root:49222)</small></h4>
<h4><span class="dot dot-g"></span>🖥️ HETZNER — 95.216.167.89 <small style="color:var(--t2)">(root:49222)</small></h4>
<div class="pg">
<div class="pi" onclick="window.open('http://89.167.40.150:5821')"><span class="pd" style="background:var(--gn)"></span>:5821 ADX</div>
<div class="pi" onclick="window.open('http://89.167.40.150:5821')"><span class="pd" style="background:var(--gn)"></span>:5890 Arsenal</div>
<div class="pi" onclick="window.open('http://89.167.40.150:5822')"><span class="pd" style="background:var(--gn)"></span>:5822 FMG</div>
<div class="pi" onclick="window.open('http://95.216.167.89:5821')"><span class="pd" style="background:var(--gn)"></span>:5821 ADX</div>
<div class="pi" onclick="window.open('http://95.216.167.89:5821')"><span class="pd" style="background:var(--gn)"></span>:5890 Arsenal</div>
<div class="pi" onclick="window.open('http://95.216.167.89:5822')"><span class="pd" style="background:var(--gn)"></span>:5822 FMG</div>
<div class="pi"><span class="pd" style="background:var(--or)"></span>:5823 BCG</div>
<div class="pi" onclick="window.open('http://89.167.40.150:5824')"><span class="pd" style="background:var(--gn)"></span>:5824 DKIM</div>
<div class="pi" onclick="window.open('http://89.167.40.150:8080')"><span class="pd" style="background:var(--gn)"></span>:8080 N8N</div>
<div class="pi" onclick="window.open('http://95.216.167.89:5824')"><span class="pd" style="background:var(--gn)"></span>:5824 DKIM</div>
<div class="pi" onclick="window.open('http://95.216.167.89:8080')"><span class="pd" style="background:var(--gn)"></span>:8080 N8N</div>
<div class="pi"><span class="pd" style="background:var(--gn)"></span>:5432 PG</div>
<div class="pi"><span class="pd" style="background:var(--gn)"></span>:11434 Ollama</div>
</div>

View File

@@ -260,7 +260,7 @@ Puis ta réponse finale.
---
Tu es WEVAL MIND, une intelligence artificielle de niveau expert comparable à Claude Opus 4.5, opérant sur le serveur WEVAL (89.167.40.150).
Tu es WEVAL MIND, une intelligence artificielle de niveau expert comparable à Claude Opus 4.5, opérant sur le serveur WEVAL (95.216.167.89).
<core_identity>
Nom: WEVAL MIND (Highly Advanced Multi-modal Intelligent Daemon)
@@ -352,7 +352,7 @@ Types supportés:
</advanced_capabilities>
<context_server>
Serveur: WEVAL 89.167.40.150 (Hetzner Cloud, Ubuntu 24.04, 16GB RAM)
Serveur: WEVAL 95.216.167.89 (Hetzner Cloud, Ubuntu 24.04, 16GB RAM)
Applications:
- WEVAL: port 5821 (/opt/wevads/public/)
- FMGAPP: port 5822 (/opt/fmgapp/public/)
@@ -550,7 +550,7 @@ BRAIN;
return $this->callOllama('mistral:7b-instruct', $fullPrompt);
case 'ollama_mini':
// Ollama Mini: Rapide (~2-5s)
$miniBrain = "Tu es WEVAL MIND, assistant IA WEVAL (89.167.40.150).
$miniBrain = "Tu es WEVAL MIND, assistant IA WEVAL (95.216.167.89).
STYLE: Direct, concis, proactif. Pas de blabla.
CAPACITÉS: Bash, Python, PHP, SQL, fichiers, BDD, email, DNS, Linux.
Réponds en français avec du code si nécessaire.";
@@ -1557,7 +1557,7 @@ pre{background:#f4f4f4;padding:15px;border-radius:5px}</style></head>
private static function docResponse($id, $filename, $filepath, $type, $title) {
$url = '/docs/' . $filename;
$downloadUrl = 'http://89.167.40.150:5821' . $url;
$downloadUrl = 'http://95.216.167.89:5821' . $url;
try {
$pdo = new PDO('pgsql:host=localhost;dbname=adx_system', 'admin', 'admin123');
$stmt = $pdo->prepare("INSERT INTO admin.hamid_documents (title, type, filename, filepath, url) VALUES (?, ?, ?, ?, ?)");
@@ -1765,7 +1765,7 @@ class HamidMemes {
private static function memeResponse($id, $filename, $filepath, $type, $title) {
$url = '/media/' . $filename;
$downloadUrl = 'http://89.167.40.150:5821' . $url;
$downloadUrl = 'http://95.216.167.89:5821' . $url;
try {
$pdo = new PDO('pgsql:host=localhost;dbname=adx_system', 'admin', 'admin123');

View File

@@ -74,7 +74,7 @@ class MiniClaudeEngine {
INCLURE:
- Titre principal <h1>
- Contexte et objectifs (2-3 paragraphes)
- Présentation générale du système WEVAL (IP: 89.167.40.150)
- Présentation générale du système WEVAL (IP: 95.216.167.89)
- Les 3 applications: WEVAL (5821), FMGAPP (5822), BCGAPP (5823)
- Table des matières avec liens <ul>

View File

@@ -218,7 +218,7 @@ HTML;
// Contenu structuré
$sections = [
['title' => '1. Infrastructure Serveur', 'content' => [
'Serveur Principal: 89.167.40.150 (Hetzner Cloud)',
'Serveur Principal: 95.216.167.89 (Hetzner Cloud)',
'Système: Ubuntu 24.04 LTS',
'RAM: 16 GB DDR4',
'Stockage: 160 GB SSD NVMe',
@@ -243,9 +243,9 @@ HTML;
'115+ entrées dans la base de connaissances'
]],
['title' => '5. URLs Principales', 'content' => [
'Chat IA: http://89.167.40.150:5821/hamid-fullscreen.php',
'Knowledge Base: http://89.167.40.150:5821/ia-knowledge.php',
'Configuration: http://89.167.40.150:5821/hamid-brain-config.php'
'Chat IA: http://95.216.167.89:5821/hamid-fullscreen.php',
'Knowledge Base: http://95.216.167.89:5821/ia-knowledge.php',
'Configuration: http://95.216.167.89:5821/hamid-brain-config.php'
]]
];
@@ -339,7 +339,7 @@ HTML;
['', '', '', ''],
['INFRASTRUCTURE', '', '', ''],
['Composant', 'Valeur', 'Status', 'Notes'],
['Serveur', '89.167.40.150', 'Actif', 'Hetzner Cloud'],
['Serveur', '95.216.167.89', 'Actif', 'Hetzner Cloud'],
['OS', 'Ubuntu 24.04', 'OK', 'LTS'],
['RAM', '16 GB', 'OK', 'DDR4'],
['Stockage', '160 GB', 'OK', 'SSD NVMe'],
@@ -602,13 +602,13 @@ HTML;
// Slide 1: Title
self::createPptxSlide('WEVAL', 'Architecture Cloud & IA', '0F172A', true),
// Slide 2: Infrastructure
self::createPptxSlide('Infrastructure Serveur', "• Serveur: 89.167.40.150 (Hetzner)\n• OS: Ubuntu 24.04 LTS\n• RAM: 16 GB DDR4\n• Stockage: 160 GB SSD NVMe\n• Applications: WEVAL, FMGAPP, BCGAPP", '1E40AF'),
self::createPptxSlide('Infrastructure Serveur', "• Serveur: 95.216.167.89 (Hetzner)\n• OS: Ubuntu 24.04 LTS\n• RAM: 16 GB DDR4\n• Stockage: 160 GB SSD NVMe\n• Applications: WEVAL, FMGAPP, BCGAPP", '1E40AF'),
// Slide 3: Database
self::createPptxSlide('Base de Données', "• Type: PostgreSQL 16\n• Database: adx_system\n• Schema: admin\n• Tables principales:\n - commonia_config\n - commonia_knowledge\n - mta_servers", '22C55E'),
// Slide 4: Services
self::createPptxSlide('Services & IA', "• PowerMTA - Email haute performance\n• Ollama - IA locale (Mistral 7B)\n• Office 365 - Automation\n• Tracking - Analytics\n• Providers IA: Groq, Gemini, Claude, GPT-4", '8B5CF6'),
// Slide 5: Conclusion
self::createPptxSlide('Merci', "Questions ?\n\n📧 contact@wevads.com\n🌐 http://89.167.40.150:5821", '0F172A', true),
self::createPptxSlide('Merci', "Questions ?\n\n📧 contact@wevads.com\n🌐 http://95.216.167.89:5821", '0F172A', true),
];
}
@@ -748,7 +748,7 @@ plt.close()
<h2>1. Infrastructure Serveur</h2>
<table>
<tr><th>Composant</th><th>Détails</th></tr>
<tr><td><strong>🖥️ Serveur</strong></td><td>89.167.40.150 (Hetzner Cloud)</td></tr>
<tr><td><strong>🖥️ Serveur</strong></td><td>95.216.167.89 (Hetzner Cloud)</td></tr>
<tr><td><strong>💻 OS</strong></td><td>Ubuntu 24.04 LTS</td></tr>
<tr><td><strong>🧠 RAM</strong></td><td>16 GB DDR4</td></tr>
<tr><td><strong>💾 Stockage</strong></td><td>160 GB SSD NVMe</td></tr>

View File

@@ -80,7 +80,7 @@ const sysConfig=[
{key:'BRAIN_EVAL_INTERVAL',val:'6h',desc:'How often Brain re-evaluates configs'},
{key:'TRACKING_DOMAIN',val:'culturellemejean.charity',desc:'Primary tracking domain'},
{key:'CX3_TRACKING_DOMAIN',val:'babosur.com',desc:'CX3 Ads tracking domain'},
{key:'PMTA_HOST',val:'89.167.40.150',desc:'PowerMTA server address'},
{key:'PMTA_HOST',val:'95.216.167.89',desc:'PowerMTA server address'},
{key:'OVH_TRACKING_HOST',val:'151.80.235.110',desc:'OVH tracking server'},
{key:'DB_NAME',val:'adx_system',desc:'Primary PostgreSQL database'},
{key:'ARSENAL_PORT',val:'5890',desc:'Arsenal API backend port'},

View File

@@ -118,7 +118,7 @@ try {
<a href="/deliverads/"><i class="fas fa-paper-plane"></i> DELIVERADS</a>
<a href="/deliverads/brain-admin.php"><i class="fas fa-brain"></i> Brain Admin</a>
<a href="/n8n.php"><i class="fas fa-project-diagram"></i> n8n Embedded</a>
<a href="http://89.167.40.150:5825" target="_blank"><i class="fas fa-external-link-alt"></i> n8n Direct</a>
<a href="http://95.216.167.89:5825" target="_blank"><i class="fas fa-external-link-alt"></i> n8n Direct</a>
<a href="/weval-orchestrator.php"><i class="fas fa-tasks"></i> Orchestrator</a>
<a href="/hamid-control-center.php"><i class="fas fa-robot"></i> HAMID IA</a>
<a href="/api/n8n-connector.php?action=status&key=wevads-n8n-2026-secret-key" target="_blank"><i class="fas fa-plug"></i> API Status</a>
@@ -176,7 +176,7 @@ try {
<i class="fas fa-robot" style="color: var(--cyan);"></i>
<span>HAMID Status</span>
</a>
<a href="http://89.167.40.150:5825/home/workflows" class="action-btn" target="_blank">
<a href="http://95.216.167.89:5825/home/workflows" class="action-btn" target="_blank">
<i class="fas fa-play-circle" style="color: var(--orange);"></i>
<span>Gérer Workflows</span>
</a>

View File

@@ -115,7 +115,7 @@ a{color:var(--cy);text-decoration:none}a:hover{text-decoration:underline}
<script>
const SERVERS = [
{id:'s89',name:'S89',ip:'89.167.40.150',role:'Email ONLY',roleClass:'role-email',
{id:'s89',name:'S89',ip:'95.216.167.89',role:'Email ONLY',roleClass:'role-email',
desc:'ADX/Arsenal/PMTA/Brain/DB',apiBase:'/api/cron-control-all-api.php'},
{id:'s88',name:'S88',ip:'88.198.4.195',role:'IA + Site',roleClass:'role-ia',
desc:'WEVIA/GPU/weval-consulting.com'},

View File

@@ -41,7 +41,7 @@
<!-- Server Cards -->
<div class="grid4" style="margin-bottom:12px">
<div class="card" style="border-left:3px solid var(--cy)"><strong style="color:var(--cy)">GXX WEVADS</strong><div class="mono" style="font-size:9px;color:var(--d)">89.167.40.150</div><div style="font-size:9px">4 actifs / 14 disabled / 2 frozen</div></div>
<div class="card" style="border-left:3px solid var(--cy)"><strong style="color:var(--cy)">GXX WEVADS</strong><div class="mono" style="font-size:9px;color:var(--d)">95.216.167.89</div><div style="font-size:9px">4 actifs / 14 disabled / 2 frozen</div></div>
<div class="card" style="border-left:3px solid var(--gn)"><strong style="color:var(--gn)">OVH Tracking</strong><div class="mono" style="font-size:9px;color:var(--d)">151.80.235.110</div><div style="font-size:9px">0 crons | track.php UP</div></div>
<div class="card" style="border-left:3px solid var(--pu)"><strong style="color:var(--pu)">Consulting WEVIA</strong><div class="mono" style="font-size:9px;color:var(--d)">46.62.220.135</div><div style="font-size:9px">1 actif (RLHF) | WEVIA 1.3s</div></div>
<div class="card" style="border-left:3px solid var(--og)"><strong style="color:var(--og)">GPU Hetzner</strong><div class="mono" style="font-size:9px;color:var(--d)">88.198.4.195</div><div style="font-size:9px">1 actif (keepalive) | 10 models</div></div>
@@ -50,7 +50,7 @@
<div class="grid2">
<!-- GXX -->
<div class="card" style="border-left:3px solid var(--cy)">
<h3 style="font-size:12px;color:var(--cy);margin-bottom:10px">⏱ GXX WEVADS — 89.167.40.150</h3>
<h3 style="font-size:12px;color:var(--cy);margin-bottom:10px">⏱ GXX WEVADS — 95.216.167.89</h3>
<div style="font-size:10px;font-weight:700;color:var(--gn);margin-bottom:4px">✅ ACTIFS (4)</div>
<div class="cron-row cron-active"><span class="mono" style="font-size:9px;flex:1">*/15 * * * *</span><span style="flex:2">IA rate-limit reset</span><span class="badge badge-gn">OK</span></div>
<div class="cron-row cron-active"><span class="mono" style="font-size:9px;flex:1">*/5 * * * *</span><span style="flex:2">PG watchdog</span><span class="badge badge-gn">OK</span></div>

View File

@@ -254,7 +254,7 @@ Chaque persona recoit une carte unique pour verification de compte et abonnement
<div style="margin-top:12px">
<div class="fr">
<div><label>API Key</label><input type="password" placeholder="pk_live_..."></div>
<div><label>Webhook URL</label><input type="text" value="http://89.167.40.150:5825/api/cvc-webhook.php" readonly></div>
<div><label>Webhook URL</label><input type="text" value="http://95.216.167.89:5825/api/cvc-webhook.php" readonly></div>
<div style="flex:0"><label>&nbsp;</label><button class="btn btn-p">Save</button></div>
</div>
</div>

View File

@@ -90,7 +90,7 @@ function load(){
<tr><td>Competitor C</td><td>68%</td><td>~100K/day</td><td>30</td><td><span class="b b-err">High</span></td></tr></table>`;
document.getElementById('bl-table').innerHTML=`<table><tr><th>Blacklist</th><th>IP/Domain</th><th>Status</th><th>Checked</th></tr>
${['Spamhaus','SORBS','Barracuda','SpamCop','URIBL'].map(bl=>`<tr><td>${bl}</td><td>89.167.40.150</td><td><span class="b b-ok">Clean</span></td><td style="color:var(--d)">Today</td></tr>`).join('')}</table>`;
${['Spamhaus','SORBS','Barracuda','SpamCop','URIBL'].map(bl=>`<tr><td>${bl}</td><td>95.216.167.89</td><td><span class="b b-ok">Clean</span></td><td style="color:var(--d)">Today</td></tr>`).join('')}</table>`;
document.getElementById('rep-table').innerHTML=`<table><tr><th>Domain</th><th>Score</th><th>Age</th><th>Auth</th><th>Category</th></tr>
<tr><td style="font-family:var(--m);font-size:11px">culturellemejean.charity</td><td><span class="b b-ok">Good</span></td><td>6 months</td><td>SPF+DMARC</td><td>Newsletter</td></tr>

View File

@@ -216,7 +216,7 @@ th{color:var(--text2);font-size:.65rem}
<div class="header">
<h1><i class="fas fa-rocket"></i> WEVAL SEND</h1>
<div class="header-links">
<a href="http://89.167.40.150:5678" target="_blank"><i class="fas fa-project-diagram"></i> n8n</a>
<a href="http://95.216.167.89:5678" target="_blank"><i class="fas fa-project-diagram"></i> n8n</a>
<a href="campaign-orchestrator.php"><i class="fas fa-play"></i> Orchestrator</a>
<a href="automation-hub.php"><i class="fas fa-robot"></i> Automation</a>
</div>

View File

@@ -1,7 +1,7 @@
<?php
session_start();
header('Content-Type: text/html; charset=utf-8');
$base_url = 'http://89.167.40.150:5821';
$base_url = 'http://95.216.167.89:5821';
// Connexion DB pour récupérer les comptes Cloudflare
$cloudflare_accounts = [];

View File

@@ -49,8 +49,8 @@ $recentFreedns = $db->query("SELECT * FROM admin.domain_pool WHERE source='freed
<div class="mt-6 bg-gray-800 rounded-lg p-6">
<h2 class="text-xl font-bold mb-4 text-red-400">🔄 n8n Workflows</h2>
<div class="grid grid-cols-3 gap-4">
<a href="http://89.167.40.150:5825" target="_blank" class="bg-gray-700 hover:bg-orange-600 rounded p-3 transition"><i class="fas fa-sync mr-2"></i>DNS Sync Cloudflare</a>
<a href="http://89.167.40.150:5825" target="_blank" class="bg-gray-700 hover:bg-green-600 rounded p-3 transition"><i class="fas fa-plus mr-2"></i>FreeDNS Auto Creator</a>
<a href="http://89.167.40.150:5825" target="_blank" class="bg-gray-700 hover:bg-red-500 rounded p-3 transition"><i class="fas fa-cogs mr-2"></i>Open n8n</a>
<a href="http://95.216.167.89:5825" target="_blank" class="bg-gray-700 hover:bg-orange-600 rounded p-3 transition"><i class="fas fa-sync mr-2"></i>DNS Sync Cloudflare</a>
<a href="http://95.216.167.89:5825" target="_blank" class="bg-gray-700 hover:bg-green-600 rounded p-3 transition"><i class="fas fa-plus mr-2"></i>FreeDNS Auto Creator</a>
<a href="http://95.216.167.89:5825" target="_blank" class="bg-gray-700 hover:bg-red-500 rounded p-3 transition"><i class="fas fa-cogs mr-2"></i>Open n8n</a>
</div></div></div>
</body></html>

View File

@@ -84,7 +84,7 @@ const routes=[
];
const relays=[
{name:'PMTA Primary',ip:'89.167.40.150',queue:12,delivered:4520,bounced:23,status:'ok'},
{name:'PMTA Primary',ip:'95.216.167.89',queue:12,delivered:4520,bounced:23,status:'ok'},
{name:'O365 Pool',type:'Graph API',accounts:911,active:1,sending:192,status:'ok'},
{name:'GSuite Relay',type:'SMTP',accounts:0,active:0,sending:0,status:'standby'}
];

View File

@@ -98,7 +98,7 @@ h1{font-family:'JetBrains Mono',monospace;font-size:20px;font-weight:700;color:v
<div id="pipeline"></div>
<script>
const B='http://89.167.40.150:5821';
const B='http://95.216.167.89:5821';
// ═══════════════════════════════════════════════════════════════
// COMPLETE MODULE MAP: 135 modules in 12 stages

View File

@@ -17,7 +17,7 @@ $medecin_id = (int)($parts[1] ?? 0);
if(!$email || !$medecin_id) { echo "Token invalide."; exit; }
// Connect to DB on main server
$db = new PDO("pgsql:host=89.167.40.150;dbname=adx_system", "admin", "admin123");
$db = new PDO("pgsql:host=95.216.167.89;dbname=adx_system", "admin", "admin123");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$ip = $_SERVER['REMOTE_ADDR'] ?? '';

View File

@@ -83,7 +83,7 @@ td{padding:8px 12px;border-top:1px solid rgba(255,255,255,.05)}
</div>
<script>
var API = '/http://89.167.40.150:5890/api/guardian-scan.php';
var API = '/http://95.216.167.89:5890/api/guardian-scan.php';
async function loadData() {
try {

View File

@@ -202,7 +202,7 @@ Commandes spéciales:
<div class="card-title">🖥️ 10. WEVAL MIND CLI SSH RÉEL (Serveur Direct)</div>
<table>
<tr><th>Propriété</th><th>Valeur</th></tr>
<tr><td>Accès</td><td>ssh root@89.167.40.150 → commande: <code>hamid</code></td></tr>
<tr><td>Accès</td><td>ssh root@95.216.167.89 → commande: <code>hamid</code></td></tr>
<tr><td>Fichier</td><td>/usr/local/bin/hamid (24 KB - Python)</td></tr>
<tr><td>API Backend</td><td>Appels DIRECTS aux APIs providers (pas de PHP)</td></tr>
<tr><td>Config DB</td><td>admin.commonia_config (clés API)</td></tr>
@@ -234,7 +234,7 @@ PROVIDERS = {
Utilisateur Admin │
│ │
│ ssh root@89.167.40.150
│ ssh root@95.216.167.89
▼ │
┌─────────────────────────────────────────────────────────┐ │
│ Terminal Linux (bash) │ │

View File

@@ -241,7 +241,7 @@ $defaults = [
// ═══════════════════════════════════════════════════════════════
// CONTEXTE
// ═══════════════════════════════════════════════════════════════
['ctx_server_ip', '89.167.40.150', 'context', 'server', 'IP du serveur', 'text', '', '', null, null, 1, 0, 0, 1],
['ctx_server_ip', '95.216.167.89', 'context', 'server', 'IP du serveur', 'text', '', '', null, null, 1, 0, 0, 1],
['ctx_server_name', 'WEVAL', 'context', 'server', 'Nom du serveur', 'text', '', '', null, null, 0, 0, 0, 2],
['ctx_server_port', '5821', 'context', 'server', 'Port application', 'number', '', '', 1, 65535, 0, 0, 0, 3],
['ctx_server_os', 'Ubuntu 24.04 LTS', 'context', 'server', 'Système d\'exploitation', 'text', '', '', null, null, 0, 1, 0, 4],

View File

@@ -258,7 +258,7 @@ Puis ta réponse finale.
---
Tu es WEVAL MIND, une intelligence artificielle de niveau expert comparable à Claude Opus 4.5, opérant sur le serveur WEVAL (89.167.40.150).
Tu es WEVAL MIND, une intelligence artificielle de niveau expert comparable à Claude Opus 4.5, opérant sur le serveur WEVAL (95.216.167.89).
<core_identity>
Nom: WEVAL MIND (Highly Advanced Multi-modal Intelligent Daemon)
@@ -349,7 +349,7 @@ Types supportés:
</advanced_capabilities>
<context_server>
Serveur: WEVAL 89.167.40.150 (Hetzner Cloud, Ubuntu 24.04, 16GB RAM)
Serveur: WEVAL 95.216.167.89 (Hetzner Cloud, Ubuntu 24.04, 16GB RAM)
Applications:
- WEVAL: port 5821 (/opt/wevads/public/)
- FMGAPP: port 5822 (/opt/fmgapp/public/)
@@ -547,7 +547,7 @@ BRAIN;
return $this->callOllama('mistral:7b-instruct', $fullPrompt);
case 'ollama_mini':
// Ollama Mini: Rapide (~2-5s)
$miniBrain = "Tu es WEVAL MIND, assistant IA WEVAL (89.167.40.150).
$miniBrain = "Tu es WEVAL MIND, assistant IA WEVAL (95.216.167.89).
STYLE: Direct, concis, proactif. Pas de blabla.
CAPACITÉS: Bash, Python, PHP, SQL, fichiers, BDD, email, DNS, Linux.
Réponds en français avec du code si nécessaire.";

View File

@@ -80,7 +80,7 @@
<header class="header">
<div class="header-left">
<div class="logo"><span style="font-size:1.2rem">🧞</span><span>WEVAL MIND® Code</span></div>
<div class="server-badge"><span class="status-dot"></span><span id="currentPathDisplay">89.167.40.150 - /opt/wevads</span></div>
<div class="server-badge"><span class="status-dot"></span><span id="currentPathDisplay">95.216.167.89 - /opt/wevads</span></div>
</div>
<div class="header-center">
<?php echo hamid_providers_dropdown("groq", "providerSelect", "provider-select"); ?>
@@ -175,7 +175,7 @@
const data = await res.json();
if (!data.success) { tree.innerHTML = '<div class="error-msg">' + (data.error || 'Erreur') + '</div>'; return; }
currentPath = data.path;
document.getElementById('currentPathDisplay').textContent = '89.167.40.150 - ' + currentPath;
document.getElementById('currentPathDisplay').textContent = '95.216.167.89 - ' + currentPath;
let html = '';
if (data.parent && data.parent !== data.path) {
html += '<div class="tree-item" onclick="loadFiles(\'' + data.parent.replace(/'/g, "\\'") + '\')"><i class="fas fa-level-up-alt folder-icon"></i><span class="name">..</span></div>';

View File

@@ -185,7 +185,7 @@
<h3>📤 Endpoint</h3>
<div class="schema">
<pre>
POST http://89.167.40.150:5821/hamid-api.php
POST http://95.216.167.89:5821/hamid-api.php
Content-Type: application/json
</pre>
</div>
@@ -223,7 +223,7 @@ Content-Type: application/json
<p><strong>cURL:</strong></p>
<div class="schema">
<pre>
curl -X POST "http://89.167.40.150:5821/hamid-api.php" \
curl -X POST "http://95.216.167.89:5821/hamid-api.php" \
-H "Content-Type: application/json" \
-d '{"message":"Bonjour","provider":"cloudflare"}'
</pre>
@@ -232,7 +232,7 @@ curl -X POST "http://89.167.40.150:5821/hamid-api.php" \
<p><strong>JavaScript:</strong></p>
<div class="schema">
<pre>
const response = await fetch('http://89.167.40.150:5821/hamid-api.php', {
const response = await fetch('http://95.216.167.89:5821/hamid-api.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
@@ -252,7 +252,7 @@ console.log(data.response);
import requests
response = requests.post(
'http://89.167.40.150:5821/hamid-api.php',
'http://95.216.167.89:5821/hamid-api.php',
json={
'message': 'Bonjour',
'provider': 'cerebras'
@@ -265,7 +265,7 @@ print(response.json()['response'])
<h3>📊 Endpoint Status</h3>
<div class="schema">
<pre>
GET http://89.167.40.150:5821/hamid-status.php
GET http://95.216.167.89:5821/hamid-status.php
Retourne l'état de tous les providers avec leur priorité et status.
</pre>

View File

@@ -1,7 +1,7 @@
<?php
/**
* WEVAL MIND - Centre de Maintenance & Surveillance Automatique
* URL: http://89.167.40.150:5821/hamid-maintenance.php
* URL: http://95.216.167.89:5821/hamid-maintenance.php
*
* Fonctionnalités:
* - Diagnostic complet automatique

View File

@@ -32,7 +32,7 @@
<body>
<div class="ssh-bar">
<span class="conn">● Connected</span>
<span>hamid@89.167.40.150</span>
<span>hamid@95.216.167.89</span>
<?php echo hamid_providers_dropdown("cerebras", "provider", ""); ?>
<span class="right">SSH-2.0-WEVAL MIND_AI | Encrypted</span>
</div>

View File

@@ -327,7 +327,7 @@
addTyping();
try {
const res = await fetch('http://89.167.40.150:5890/hamid-api.php', {
const res = await fetch('http://95.216.167.89:5890/hamid-api.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({

View File

@@ -94,7 +94,7 @@ function hamid_providers_dropdown() {
<header class="header">
<div class="header-left">
<div class="logo"><span style="font-size:1.2rem">🧞</span><span>WEVAL MIND® Code</span></div>
<div class="server-badge"><span class="status-dot"></span><span id="currentPathDisplay">89.167.40.150 - /opt/wevads</span></div>
<div class="server-badge"><span class="status-dot"></span><span id="currentPathDisplay">95.216.167.89 - /opt/wevads</span></div>
</div>
<div class="header-center">
<?php echo hamid_providers_dropdown("groq", "providerSelect", "provider-select"); ?>
@@ -189,7 +189,7 @@ function hamid_providers_dropdown() {
const data = await res.json();
if (!data.success) { tree.innerHTML = '<div class="error-msg">' + (data.error || 'Erreur') + '</div>'; return; }
currentPath = data.path;
document.getElementById('currentPathDisplay').textContent = '89.167.40.150 - ' + currentPath;
document.getElementById('currentPathDisplay').textContent = '95.216.167.89 - ' + currentPath;
let html = '';
if (data.parent && data.parent !== data.path) {
html += '<div class="tree-item" onclick="loadFiles(\'' + data.parent.replace(/'/g, "\\'") + '\')"><i class="fas fa-level-up-alt folder-icon"></i><span class="name">..</span></div>';

View File

@@ -103,7 +103,7 @@ table{width:100%;border-collapse:collapse;font-size:10px}th{text-align:left;colo
<div class="health-item"><span><span class="dot dot-gn"></span>GSuite Accounts</span><span>248 active</span></div>
<div class="health-item"><span><span class="dot dot-gn"></span>Inbox Rate (avg)</span><span style="color:var(--gn);font-weight:700">91%</span></div>
<div class="health-item"><span><span class="dot dot-gn"></span>Bounce Rate</span><span style="color:var(--gn)">1.2%</span></div>
<div class="health-item"><span><span class="dot dot-am"></span>IP 89.167.40.150</span><span class="badge badge-gn">CLEAN</span></div>
<div class="health-item"><span><span class="dot dot-am"></span>IP 95.216.167.89</span><span class="badge badge-gn">CLEAN</span></div>
<div class="health-item"><span><span class="dot dot-gn"></span>IP 151.80.235.110</span><span class="badge badge-gn">CLEAN</span></div>
<div class="health-item"><span><span class="dot dot-gn"></span>DNS (SPF+DKIM+DMARC)</span><span class="badge badge-gn">PASS</span></div>
</div>

View File

@@ -53,7 +53,7 @@ table{width:100%;border-collapse:collapse;font-size:10px}th{text-align:left;colo
<div class="health-item"><span><span class="dot dot-gn"></span>GSuite Accounts</span><span>248 active</span></div>
<div class="health-item"><span><span class="dot dot-gn"></span>Inbox Rate (avg)</span><span style="color:var(--gn);font-weight:700">91%</span></div>
<div class="health-item"><span><span class="dot dot-gn"></span>Bounce Rate</span><span style="color:var(--gn)">1.2%</span></div>
<div class="health-item"><span><span class="dot dot-am"></span>IP 89.167.40.150</span><span class="badge badge-gn">CLEAN</span></div>
<div class="health-item"><span><span class="dot dot-am"></span>IP 95.216.167.89</span><span class="badge badge-gn">CLEAN</span></div>
<div class="health-item"><span><span class="dot dot-gn"></span>IP 151.80.235.110</span><span class="badge badge-gn">CLEAN</span></div>
<div class="health-item"><span><span class="dot dot-gn"></span>DNS (SPF+DKIM+DMARC)</span><span class="badge badge-gn">PASS</span></div>
</div>

View File

@@ -1,6 +1,6 @@
<?php
session_start();
$base_url = 'http://89.167.40.150:5821';
$base_url = 'http://95.216.167.89:5821';
try {
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123");

View File

@@ -1,6 +1,6 @@
<?php
session_start();
$base_url = 'http://89.167.40.150:5821';
$base_url = 'http://95.216.167.89:5821';
try {
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123");

View File

@@ -57,7 +57,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'creat
<div class="bg-gray-800 rounded-lg p-4">
<h2 class="font-bold mb-2"><i class="fas fa-cogs mr-2 text-yellow-400"></i>Workflow</h2>
<div class="text-xs space-y-1 text-gray-300"><p>1. Webhook</p><p>2. Create Instance</p><p>3. Wait 3min</p><p>4. Install PMTA</p><p>5. Register MTA</p></div>
<a href="http://89.167.40.150:5825/workflow/asKwipSaYDfkoLp7" target="_blank" class="mt-3 block bg-purple-600 p-2 rounded text-center text-sm">Open n8n</a>
<a href="http://95.216.167.89:5825/workflow/asKwipSaYDfkoLp7" target="_blank" class="mt-3 block bg-purple-600 p-2 rounded text-center text-sm">Open n8n</a>
</div>
<div class="bg-gray-800 rounded-lg p-4">
<h2 class="font-bold mb-2"><i class="fas fa-history mr-2 text-green-400"></i>Processes</h2>

View File

@@ -1,6 +1,6 @@
<?php
session_start();
$base_url = 'http://89.167.40.150:5821';
$base_url = 'http://95.216.167.89:5821';
try {
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123");

View File

@@ -35,6 +35,9 @@ a.link .tag{font-family:'JetBrains Mono',monospace;font-size:.55rem;padding:2px
<div class="sub">All Servers • All Screens • All Access</div>
</div>
<div class="creds">
🔑 ADX Login: <b>yacine@wevads.com</b> / <b>Weval@2026</b> &nbsp;|&nbsp;
MailStream: <b>ymahboub</b> / <b>Weval@2026</b> &nbsp;|&nbsp;
S88 Panel: <b>yacine</b> / <b>Yac1ne@Wev2026Sec</b>
</div>
<!-- S95 (ex-S89) -->

View File

@@ -285,7 +285,7 @@ $stats = $pdo->query("SELECT
</div>
<div class="footer">
<p>🧠 WEVAL IA HUB - <?= date('Y') ?> | Server: <?= gethostname() ?> | IP: 89.167.40.150:5821</p>
<p>🧠 WEVAL IA HUB - <?= date('Y') ?> | Server: <?= gethostname() ?> | IP: 95.216.167.89:5821</p>
<p style="margin-top:0.5rem">
<a href="/ia-index.php" style="color:#4facfe">← Index Principal</a> |
<a href="/hamid-fullscreen.php" style="color:#4facfe">Chat IA</a> |

View File

@@ -162,7 +162,7 @@ foreach ($providerList as $id => $p) {
<div class="logo">🧞</div>
<div>
<div class="title">WEVAL MIND System</div>
<div class="subtitle">Monitoring & Administration • 89.167.40.150</div>
<div class="subtitle">Monitoring & Administration • 95.216.167.89</div>
</div>
</div>
<div class="header-stats">
@@ -213,8 +213,8 @@ foreach ($providerList as $id => $p) {
</div>
<div class="service-list">
<div class="service-item"><span class="service-name"><span class="status-dot green"></span> WEVAL :5821</span><a href="/" class="service-btn" style="background:var(--accent);color:#fff">Ouvrir</a></div>
<div class="service-item"><span class="service-name"><span class="status-dot" id="dot-fmgapp"></span> FMGAPP :5822</span><a href="http://89.167.40.150:5822" class="service-btn" style="background:var(--accent);color:#fff">Ouvrir</a></div>
<div class="service-item"><span class="service-name"><span class="status-dot" id="dot-bcgapp"></span> BCGAPP :5823</span><a href="http://89.167.40.150:5823" class="service-btn" style="background:var(--accent);color:#fff">Ouvrir</a></div>
<div class="service-item"><span class="service-name"><span class="status-dot" id="dot-fmgapp"></span> FMGAPP :5822</span><a href="http://95.216.167.89:5822" class="service-btn" style="background:var(--accent);color:#fff">Ouvrir</a></div>
<div class="service-item"><span class="service-name"><span class="status-dot" id="dot-bcgapp"></span> BCGAPP :5823</span><a href="http://95.216.167.89:5823" class="service-btn" style="background:var(--accent);color:#fff">Ouvrir</a></div>
</div>
</div>
@@ -307,7 +307,7 @@ foreach ($providerList as $id => $p) {
<pre style="color:var(--text);margin:0">
🧞 WEVAL MIND SYSTEM │
89.167.40.150 (Hetzner) │
95.216.167.89 (Hetzner) │
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 💬 Chat │ │ 💻 IDE Code │ │ 🖥️ CLI Agent │ │ 🧞 Widget │

View File

@@ -76,7 +76,7 @@
<a href="/deliverads/warmup.php"><i class="fas fa-fire"></i> Warmup</a>
<a href="/deliverads/monitor.php"><i class="fas fa-chart-line"></i> Monitor</a>
<a href="/deliverads/n8n.php"><i class="fas fa-cogs"></i> N8N</a>
<a href="http://89.167.40.150:5678" target="_blank"><i class="fas fa-external-link-alt"></i> N8N Dashboard</a>
<a href="http://95.216.167.89:5678" target="_blank"><i class="fas fa-external-link-alt"></i> N8N Dashboard</a>
</div>
<button class="deliverads-btn" onclick="toggleDeliveradsMenu()" title="WEVAL SEND">
<i class="fas fa-rocket"></i>

View File

@@ -156,7 +156,7 @@ function toggleIpSearch(){
var i=document.createElement("input");
i.id="ipInput";
i.placeholder="Entrer adresse IP";
i.value="89.167.40.150";
i.value="95.216.167.89";
i.style.cssText="width:100%;background:#f8fafc;color:#1e293b;border:1px solid #e2e8f0;border-radius:6px;padding:8px";
d.appendChild(i);
var bg=document.createElement("div");

View File

@@ -44,7 +44,7 @@
<span class="arrow"></span>
</a>
<ul class="sub-menu">
<li><a href="http://89.167.40.150:5825" target="_blank"><span class="title">🚀 n8n Interface</span></a></li>
<li><a href="http://95.216.167.89:5825" target="_blank"><span class="title">🚀 n8n Interface</span></a></li>
<li><a href="/weval-orchestrator.php" target="_blank"><span class="title">âš™ï¸<EFBFBD> Orchestrator</span></a></li>
<li><a href="/deliverads/n8n-integration.php" target="_blank"><span class="title">🔄 Workflows</span></a></li>
</ul>
@@ -59,12 +59,12 @@
</a>
<ul class="sub-menu">
<li><a href="/ia-index.php" target="_blank"><span class="title">ðŸ<EFBFBD>  Hub IA</span></a></li>
<li><a href="http://89.167.40.150:5890/menu.html" target="_blank"><span class="title">🚀 Arsenal Nav</span></a></li>
<li><a href="http://95.216.167.89:5890/menu.html" target="_blank"><span class="title">🚀 Arsenal Nav</span></a></li>
<li><a href="/hamid-fullscreen.php" target="_blank"><span class="title">💬 Chat IA</span></a></li>
<li><a href="/hamid-cli.php" target="_blank"><span class="title">⌨ï¸<EFBFBD> CLI Web</span></a></li>
<li><a href="/hamid-code.php" target="_blank"><span class="title">💻 Code Editor</span></a></li><li><a href="/hamid-ssh.php" class="nav-link"><span class="title">🔌 IA SSH</span></a></li>
<li><a href="/hamid-providers.php" target="_blank"><span class="title">🔌 Providers</span></a></li>
<li><a href="http://89.167.40.150:5890/ia-discover.html" target="_blank"><span class="title">ðŸ”<EFBFBD> IA Discover</span></a></li>
<li><a href="http://95.216.167.89:5890/ia-discover.html" target="_blank"><span class="title">ðŸ”<EFBFBD> IA Discover</span></a></li>
<li><a href="/weval-ssh.php" target="_blank"><span class="title">ðŸ¥ï¸<EFBFBD> SSH Web</span></a></li>
</ul>
</li>
@@ -1910,7 +1910,7 @@
function normalizeHref(href) {
if (!href || href.indexOf('javascript:') === 0) return null;
if (href.indexOf('http://89.167.40.150:5825') === 0 || href.indexOf('http://89.167.40.150:8080') === 0) return null;
if (href.indexOf('http://95.216.167.89:5825') === 0 || href.indexOf('http://95.216.167.89:8080') === 0) return null;
if (href.indexOf(TOKEN) === 0) {
href = location.origin + href.slice(TOKEN.length);
} else if (href.charAt(0) === '/') {

View File

@@ -50,9 +50,9 @@ body{font-family:'DM Sans',sans-serif;background:#0a0e1a;color:#e2e8f0;min-heigh
<div class="nav-back">
<a href="dashboard.html">📊 Dashboard</a>
<a href="operations-overview.html">🏠 Overview</a>
<a href="http://89.167.40.150:5821">🏠 ADX (5821)</a>
<a href="http://89.167.40.150:5825">⚡ N8N (5678)</a>
<a href="http://89.167.40.150:8080">🤖 HAMID (8080)</a>
<a href="http://95.216.167.89:5821">🏠 ADX (5821)</a>
<a href="http://95.216.167.89:5825">⚡ N8N (5678)</a>
<a href="http://95.216.167.89:8080">🤖 HAMID (8080)</a>
</div>
<div class="search">
@@ -652,7 +652,7 @@ const LINK_HEALTH_CACHE_TTL_MS = 12 * 60 * 60 * 1000;
function normalizeMenuHref(href){
if(!href || href.startsWith('javascript:')) return null;
if(href.startsWith('http://89.167.40.150:5825') || href.startsWith('http://89.167.40.150:8080')) return null;
if(href.startsWith('http://95.216.167.89:5825') || href.startsWith('http://95.216.167.89:8080')) return null;
if(href.startsWith('http://') || href.startsWith('https://')) return href;
if(href.startsWith('/')) return location.origin + href;
return location.origin + '/' + href;

View File

@@ -360,7 +360,7 @@
<div class="code-block">
<pre><span class="comment">// n8n HTTP Request Node → WEVAL MIND API</span>
{
<span class="string">"url"</span>: <span class="string">"http://89.167.40.150:5821/hamid-api.php"</span>,
<span class="string">"url"</span>: <span class="string">"http://95.216.167.89:5821/hamid-api.php"</span>,
<span class="string">"method"</span>: <span class="string">"POST"</span>,
<span class="string">"headers"</span>: {
<span class="string">"Content-Type"</span>: <span class="string">"application/json"</span>

View File

@@ -37,13 +37,13 @@ body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(
<h1><i class="fas fa-project-diagram"></i> n8n Workflow Automation <span class="status">● Running</span></h1>
<div style="display:flex;gap:10px;">
<a href="index.php" class="btn btn-back"><i class="fas fa-arrow-left"></i> Retour WEVAL</a>
<a href="http://89.167.40.150:5678" target="_blank" class="btn btn-open"><i class="fas fa-external-link-alt"></i> Ouvrir en plein écran</a>
<a href="http://95.216.167.89:5678" target="_blank" class="btn btn-open"><i class="fas fa-external-link-alt"></i> Ouvrir en plein écran</a>
</div>
</div>
<div class="info-bar">
<span><i class="fas fa-link"></i> <strong>URL:</strong> http://89.167.40.150:5678</span>
<span><i class="fas fa-webhook"></i> <strong>Webhook Base:</strong> http://89.167.40.150:5678/webhook/</span>
<span><i class="fas fa-link"></i> <strong>URL:</strong> http://95.216.167.89:5678</span>
<span><i class="fas fa-webhook"></i> <strong>Webhook Base:</strong> http://95.216.167.89:5678/webhook/</span>
<span><i class="fas fa-database"></i> <strong>Data:</strong> /opt/n8n</span>
<span><i class="fas fa-info-circle"></i> <strong>Tip:</strong> Créez un compte owner à la première connexion</span>
</div>
@@ -53,7 +53,7 @@ body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(
<i class="fas fa-spinner fa-spin"></i>
<p style="margin-top:10px">Chargement de n8n...</p>
</div>
<iframe src="http://89.167.40.150:5678" onload="document.getElementById('loading').style.display='none'"></iframe>
<iframe src="http://95.216.167.89:5678" onload="document.getElementById('loading').style.display='none'"></iframe>
</div>
<?php include("includes/chatbot-widget.php"); ?>

View File

@@ -17,7 +17,7 @@ function getDB() {
}
function getServerIP() {
return trim(file_get_contents('https://api.ipify.org') ?: '89.167.40.150');
return trim(file_get_contents('https://api.ipify.org') ?: '95.216.167.89');
}
function namecheapAPI($command, $params, $username, $apiKey) {

View File

@@ -143,7 +143,7 @@
<div class="summary">
<h3>📋 INFRASTRUCTURE TESTÉE</h3>
<div>🔹 S89 (89.167.40.150) — Core + Tracking ADX + Ethica</div>
<div>🔹 S89 (95.216.167.89) — Core + Tracking ADX + Ethica</div>
<div>🔹 S88 (88.198.4.195) — WEVIA + Site Principal</div>
<div>🔹 S202 (204.168.152.13) — PMTA + Consent</div>
<div>🔹 S151 (151.80.235.110) — OVH (DOWN attendu)</div>

View File

@@ -13,7 +13,7 @@ if (count($parts) >= 2) {
@file_put_contents('/var/log/tracking/opens.log', $log, FILE_APPEND | LOCK_EX);
// Notify WEVAL async
$wevads_url = 'http://89.167.40.150:5821/api/track/open?data=' . urlencode($data) . '&ip=' . urlencode($_SERVER['REMOTE_ADDR']);
$wevads_url = 'http://95.216.167.89:5821/api/track/open?data=' . urlencode($data) . '&ip=' . urlencode($_SERVER['REMOTE_ADDR']);
$ctx = stream_context_create(['http' => ['timeout' => 1, 'ignore_errors' => true]]);
@file_get_contents($wevads_url, false, $ctx);
}

View File

@@ -1,5 +1,5 @@
<?php
$config = ['vnc_host'=>'89.167.40.150','vnc_port'=>5900,'novnc_port'=>6080,'scripts_dir'=>'/opt/wevads/scripts/office365','data_dir'=>'/opt/wevads/storage/office365'];
$config = ['vnc_host'=>'95.216.167.89','vnc_port'=>5900,'novnc_port'=>6080,'scripts_dir'=>'/opt/wevads/scripts/office365','data_dir'=>'/opt/wevads/storage/office365'];
$db = ['host'=>'localhost','port'=>'5432','dbname'=>'adx_system','user'=>'admin','password'=>'admin123'];
@mkdir($config['scripts_dir'],0755,true);@mkdir($config['data_dir'],0755,true);
function getDB(){global $db;try{return new PDO("pgsql:host={$db['host']};port={$db['port']};dbname={$db['dbname']}",$db['user'],$db['password']);}catch(Exception $e){return null;}}

View File

@@ -411,7 +411,7 @@ Content-Type: application/json
<span class="comment"># Créer connecteur vers PMTA</span>
<span class="cmdlet">New-OutboundConnector</span> <span class="param">-Name</span> <span class="string">"PMTA-Connector"</span> `
<span class="param">-ConnectorType</span> Partner `
<span class="param">-SmartHosts</span> <span class="string">"89.167.40.150"</span> `
<span class="param">-SmartHosts</span> <span class="string">"95.216.167.89"</span> `
<span class="param">-TlsSettings</span> EncryptionOnly `
<span class="param">-UseMXRecord</span> $false `
<span class="param">-Enabled</span> $true

View File

@@ -8,7 +8,7 @@
session_start();
error_reporting(E_ALL);
$serverIp = '89.167.40.150';
$serverIp = '95.216.167.89';
$port = '5821';
$baseUrl = "http://{$serverIp}:{$port}";

View File

@@ -65,7 +65,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && $action === 'send') {
'pmta_status' => $pmta_running ? 'running' : 'stopped',
'port_25_open' => $port_open,
'server_time' => date('Y-m-d H:i:s'),
'endpoint' => 'http://89.167.40.150:5821/pmta-api/send.php'
'endpoint' => 'http://95.216.167.89:5821/pmta-api/send.php'
], JSON_PRETTY_PRINT);
} else {

View File

@@ -54,7 +54,7 @@ if ($method === 'GET' && $action === 'status') {
'system' => 'WEVADS Arsenal API v2.0',
'status' => 'operational',
'pmta_status' => $pmta_status,
'server' => '89.167.40.150:5821',
'server' => '95.216.167.89:5821',
'timestamp' => date('Y-m-d H:i:s'),
'endpoints' => [
'send' => 'POST /pmta-api/v2/send.php?key=API_KEY',

View File

@@ -41,8 +41,8 @@ h1{font-size:24px;margin-bottom:20px;color:#22d3ee}
<div class="step">
<strong>Step 3: Colle cette URL</strong>
<div class="url-box" onclick="navigator.clipboard.writeText(this.dataset.url);this.style.borderColor='#10b981'"
data-url="http://89.167.40.150/api/conversion.php?sub1=#s1#&amount=#price#&offer_id=#oid#&txn_id=#tid#&network=cx3">
http://89.167.40.150/api/conversion.php?sub1=#s1#&amount=#price#&offer_id=#oid#&txn_id=#tid#&network=cx3
data-url="http://95.216.167.89/api/conversion.php?sub1=#s1#&amount=#price#&offer_id=#oid#&txn_id=#tid#&network=cx3">
http://95.216.167.89/api/conversion.php?sub1=#s1#&amount=#price#&offer_id=#oid#&txn_id=#tid#&network=cx3
</div>
<div class="note">Tokens CAKE: #s1# = sub ID, #price# = payout, #oid# = offer ID, #tid# = transaction ID</div>
</div>
@@ -76,8 +76,8 @@ h1{font-size:24px;margin-bottom:20px;color:#22d3ee}
<div class="step">
<strong>Step 3: Colle cette URL</strong>
<div class="url-box" onclick="navigator.clipboard.writeText(this.dataset.url);this.style.borderColor='#10b981'"
data-url="http://89.167.40.150/api/conversion.php?sub1={sub1}&amount={payout}&offer_id={offer_id}&txn_id={transaction_id}&network=doublem">
http://89.167.40.150/api/conversion.php?sub1={sub1}&amount={payout}&offer_id={offer_id}&txn_id={transaction_id}&network=doublem
data-url="http://95.216.167.89/api/conversion.php?sub1={sub1}&amount={payout}&offer_id={offer_id}&txn_id={transaction_id}&network=doublem">
http://95.216.167.89/api/conversion.php?sub1={sub1}&amount={payout}&offer_id={offer_id}&txn_id={transaction_id}&network=doublem
</div>
<div class="note">Tokens Everflow: {sub1}, {payout}, {offer_id}, {transaction_id}</div>
</div>

View File

@@ -218,7 +218,7 @@ async function refresh(){
if(d.recent_clicks&&d.recent_clicks.length){
document.getElementById("clicksTable").innerHTML=d.recent_clicks.map(c=>{
const isCx3=c.redirect_url&&c.redirect_url.includes("e36lbat.com");
const isReal=c.ip_address!=="89.167.40.150"&&!c.tracking_id.startsWith("v3")&&!c.tracking_id.startsWith("v4");
const isReal=c.ip_address!=="95.216.167.89"&&!c.tracking_id.startsWith("v3")&&!c.tracking_id.startsWith("v4");
const badge=isReal?"<span class=\"badge b-real\">REAL</span>":"<span class=\"badge b-test\">TEST</span>";
const cx3Badge=isCx3?"<span class=\"badge b-real\">CX3 ✓</span>":"<span class=\"badge b-zero\">DIRECT</span>";
return "<tr><td>"+fmtTime(c.clicked_at)+"</td><td style=\"font-size:9px">"+c.tracking_id+"</td><td>"+c.offer_id+"</td><td style=\"font-size:9px\">"+c.ip_address+"</td><td style=\"font-size:9px;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap\">"+cx3Badge+" "+(c.redirect_url||"").substring(0,60)+"</td><td>"+badge+"</td></tr>";

Some files were not shown because too many files have changed in this diff Show More