403Webshell
Server IP : 188.114.96.3  /  Your IP : 216.73.216.143
Web Server : Apache
System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64
User :  ( 3194769)
PHP Version : 8.5.12
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /polana/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /polana/admin/polana-v1815-diagnostyka.php
<?php
declare(strict_types=1);
require_once dirname(__DIR__).'/includes/functions.php';
require_admin_role();
$root=dirname(__DIR__);
require_once $root.'/includes/polana_v1815_nav.php';
$groups=pv1815_map();
$missing=[]; $present=[];
foreach ($groups as $name=>$entries) foreach ($entries as $it) {
    $row=['group'=>$name,'label'=>$it[0],'path'=>'admin/'.$it[1],'exists'=>is_file($root.'/admin/'.$it[1])];
    if ($row['exists']) $present[]=$row; else $missing[]=$row;
}
$checkFiles=['includes/functions.php','admin/reservations.php','admin/reservation.php','includes/reservations.php','admin/polana-kalendarz.php','includes/polana_google_calendar_v173.php','includes/polana_calendar_v173.php'];
$checks=[];
foreach ($checkFiles as $file) {
    $full=$root.'/'.$file;
    if (!is_file($full)) {$checks[]=['file'=>$file,'exists'=>false,'calendar_signals'=>[]];continue;}
    $code=(string)@file_get_contents($full);
    $signals=[];
    foreach (['pg173_sync','pg173_sync_batch','reservation_update_status','calendar_sync','google_calendar_sync','sync_reservation'] as $word) if (strpos($code,$word)!==false) $signals[]=$word;
    $checks[]=['file'=>$file,'exists'=>true,'calendar_signals'=>$signals];
}
$header=(string)@file_get_contents($root.'/includes/functions.php');
$navOld=(bool)strpos($header,'<nav id="admin-main-nav"');
$navNew=(bool)strpos($header,'POLANA_V1815_NAV_ACTIVE');
$cssFile=is_file($root.'/assets/css/polana-v1815-nav.css');
$report=['time'=>date('c'),'version'=>'18.15-diagnostic-readonly','nav'=>['recognized'=>$navOld,'v1815_active'=>$navNew,'css_v1815_exists'=>$cssFile], 'summary'=>['present'=>count($present),'missing'=>count($missing)],'present'=>$present,'missing'=>$missing,'calendar_code_signals'=>$checks,
'notes'=>['Plik i ciąg znaków w kodzie nie dowodzą, że synchronizacja Google uruchamia się po zmianie statusu.','Nie badano ani nie wysyłano wiadomości, nie zmieniono bazy ani rezerwacji.']];
if (($_GET['format']??'')==='json') {
 header('Content-Type: application/json; charset=utf-8');
 header('Content-Disposition: attachment; filename="POLANA_V18_15_diagnostyka.json"');
 header('Cache-Control: private, no-store');
 echo json_encode($report,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);exit;
}
render_admin_header('POLANA V18.15 — Diagnostyka');
?>
<style>.pv1815d{max-width:1150px;margin:0 auto}.pv1815d .cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:15px}.pv1815d .cardx{border:1px solid #ddd;background:white;border-radius:16px;padding:17px;margin-bottom:12px}.pv1815d table{width:100%;border-collapse:collapse}.pv1815d th,.pv1815d td{padding:10px;border-bottom:1px solid #e5e5e5;text-align:left}.pv1815d th{font-size:13px}.pv1815d details{margin-top:12px}.pv1815d .warning{background:#fff4d6;padding:12px;border-radius:10px}.pv1815d code{word-break:break-all}</style>
<div class="pv1815d"><h1>Diagnostyka POLANA V18.15</h1><p>Raport wyłącznie do odczytu. Bez haseł, tokenów, zapisu w bazie i wysyłki e-maili.</p>
<div class="cards"><div class="cardx"><strong><?=count($present)?></strong><p>Istniejących modułów w katalogu</p></div><div class="cardx"><strong><?=count($missing)?></strong><p>Brakujących ścieżek z mapy modułów (mogą być opcjonalne)</p></div><div class="cardx"><strong><?=$navNew?'TAK':'NIE'?></strong><p>Nowe menu aktywne</p></div></div>
<p><a href="?format=json">Pobierz raport JSON bez sekretów</a> · <a href="/admin/polana-v1815-menu-instalator.php">Instalacja / rollback nowego menu</a></p>
<div class="cardx"><h2>Moduły i przyciski</h2><table><thead><tr><th>Sekcja</th><th>Funkcja</th><th>Plik</th><th>Stan</th></tr></thead><tbody>
<?php foreach(array_merge($missing,$present) as $r): ?><tr><td><?=htmlspecialchars($r['group'],ENT_QUOTES,'UTF-8')?></td><td><?=htmlspecialchars($r['label'],ENT_QUOTES,'UTF-8')?></td><td><code><?=htmlspecialchars($r['path'],ENT_QUOTES,'UTF-8')?></code></td><td><?=$r['exists']?'OK':'Brak pliku'?></td></tr><?php endforeach; ?></tbody></table></div>
<div class="cardx"><h2>Rezerwacje i kalendarz — analiza kodu</h2><p class="warning">To kontrola statyczna. Obecność <code>pg173_sync</code> nie jest dowodem, że Google otrzymuje wydarzenie po kliknięciu „Potwierdź”. Test wykonujemy na jednej rezerwacji testowej.</p><table><thead><tr><th>Plik</th><th>Istnieje</th><th>Wykryte wywołania / nazwy</th></tr></thead><tbody>
<?php foreach($checks as $r):?><tr><td><code><?=htmlspecialchars($r['file'],ENT_QUOTES,'UTF-8')?></code></td><td><?=$r['exists']?'TAK':'BRAK'?></td><td><?=htmlspecialchars(implode(', ',$r['calendar_signals']) ?: 'brak rozpoznanych sygnałów',ENT_QUOTES,'UTF-8')?></td></tr><?php endforeach;?></tbody></table></div>
<p>Jeżeli automatyczna synchronizacja wciąż nie działa, potrzebne będą aktualne <code>includes/reservations.php</code>, <code>admin/reservation.php</code> i biblioteka Google Calendar. Nie instaluj kolejnych hooków w ciemno.</p>
</div><?php render_admin_footer(); ?>

Youez - 2016 - github.com/yon3zu
LinuXploit