'pass','n'=>$n,'d'=>$d];}elseif($ok==='warn'){$W++;$R[]=['s'=>'warn','n'=>$n,'d'=>$d];}else{$F++;$R[]=['s'=>'fail','n'=>$n,'d'=>$d];}} function h($u,$to=8){$ch=curl_init($u);curl_setopt_array($ch,[CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>$to,CURLOPT_FOLLOWLOCATION=>1]);$b=curl_exec($ch);$c=curl_getinfo($ch,CURLINFO_HTTP_CODE);curl_close($ch);return['code'=>$c,'body'=>$b];} $start=microtime(true); // S204 $pg=@pg_connect("host=127.0.0.1 port=5432 dbname=wevia_db user=admin password=W3v4l_2026_S3cur3");t('PostgreSQL',$pg!==false);if($pg)pg_close($pg); t('PHP',true,phpversion()); $nd=h('http://127.0.0.1:3001/api/actualites');t('Node.js',$nd['code']==200); $pm=@fsockopen('127.0.0.1',25,$e,$es,3);t('PMTA',$pm!==false);if($pm)fclose($pm); // S95 $s95a=h('http://10.1.0.3:5890/');t('S95 Arsenal',$s95a['code']>0); $s95i=h('http://10.1.0.3:5821/');t('S95 iResponse',$s95i['code']>0); $ed=json_decode(h('http://10.1.0.3:5890/api/ethica-api.php?action=dashboard')['body'],true); t('Ethica DB',isset($ed['contacts_total']),($ed['contacts_total']??'').''); t('Ethica 3 pays',count($ed['contacts_by_pays']??[])>=3); t('Ethica >40K',($ed['contacts_total']??0)>40000); $ec=json_decode(h('http://10.1.0.3:5890/api/ethica-api.php?action=consent_stats')['body'],true); t('Consent API',isset($ec['stats'])); $es2=json_decode(h('http://10.1.0.3:5890/api/ethica-api.php?action=senders')['body'],true); t('Senders',count($es2['senders']??[])>=3,count($es2['senders']??[]).''); // WEVIA $ch=curl_init("http://127.0.0.1/api/weval-ia-full");curl_setopt_array($ch,[CURLOPT_POST=>1,CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>25,CURLOPT_HTTPHEADER=>["Content-Type: application/json"],CURLOPT_POSTFIELDS=>json_encode(["message"=>"test","mode"=>"full"])]);$wb=curl_exec($ch);curl_close($ch);$wd=json_decode($wb,true); t('WEVIA',strlen($wd['response']??'')>5,strlen($wd['response']??'').'c'); t('Provider',!empty($wd['provider']??''),$wd['provider']??''); t('Brain',count(glob('/opt/wevia-brain/*.php'))>=5,count(glob('/opt/wevia-brain/*.php')).''); $ac=file_get_contents('/var/www/weval/wevia-ia/weval-chatbot-api.php'); t('Injection',strpos($ac,'INJECTION_FILTER')!==false);t('RateLimiter',strpos($ac,'rate-limiter')!==false); t('Groq',substr_count($ac,'gsk_')>=1);t('Cerebras',substr_count($ac,'csk-')>=2); // Pages foreach(['/','/solutions','/contact-us','/wevia.html','/pricing.html','/ecosysteme-ia-maroc.html','/trust-center.html','/solution-finder.html','/products/workspace.html'] as $p){$r=h('http://127.0.0.1'.$p);t(basename($p?:'/'),$r['code']==200);} foreach(['email-platform','medreach-api','wevia-agency','healthcare-crm','ia-arabe','ai-sdr','email-whitelabel','consulting'] as $p){$r=h('http://127.0.0.1/products/'.$p.'.html');t($p,$r['code']==200);} // Security $ch=curl_init('https://weval-consulting.com/');curl_setopt_array($ch,[CURLOPT_RETURNTRANSFER=>1,CURLOPT_NOBODY=>1,CURLOPT_HEADER=>1,CURLOPT_TIMEOUT=>8]);$hr=strtolower(curl_exec($ch));curl_close($ch); t('HSTS',strpos($hr,'strict-transport')!==false);t('X-Frame',strpos($hr,'x-frame')!==false);t('X-Content',strpos($hr,'x-content-type')!==false);t('Permissions',strpos($hr,'permissions-policy')!==false);t('Referrer',strpos($hr,'referrer-policy')!==false); t('ZeroToxic',trim(shell_exec("grep -ril 'collecte de donnees' /var/www/html/index.html /var/www/html/products/*.html 2>/dev/null | wc -l"))=='0'); t('Schema',strpos(file_get_contents('/var/www/html/index.html'),'ld+json')!==false); // Workspace $ws=file_get_contents('/var/www/html/products/workspace.html'); t('62 products',strpos($ws,'62')!==false);t('Sidebar',strpos($ws,'toggleGroup')!==false);t('JSblocker',strpos(file_get_contents('/var/www/html/weval-translate.js'),'_secFetchPatched')!==false); // External $con=h('https://consent.wevup.app/ethica-consent-landing.html?id=1');t('Consent',$con['code']==200); $tg=json_decode(h('https://api.telegram.org/bot8544624912:AAEm9ttXK6JeFqAL-gcvB5sreCBhXzzQwrs/getMe')['body'],true);t('Telegram',($tg['ok']??false)==true); $at=h('http://10.1.0.3:5890/api/products/auth.php');t('Auth',$at['code']==200); $elapsed=round((microtime(true)-$start)*1000);$TOT=$P+$F+$W; echo json_encode(['pass'=>$P,'fail'=>$F,'warn'=>$W,'total'=>$TOT,'sigma'=>$F==0?'6':'<6','elapsed_ms'=>$elapsed,'tests'=>$R],JSON_PRETTY_PRINT);