2026-07-19 20:17:37 +02:00
|
|
|
#!/usr/bin/env php
|
2026-07-15 13:57:05 +02:00
|
|
|
<?php
|
2026-07-19 20:17:37 +02:00
|
|
|
/**
|
|
|
|
|
* ZapMachine Reset Script
|
|
|
|
|
*
|
|
|
|
|
* CLI only. Resets the current session and optionally purges all session
|
|
|
|
|
* folders. Confirmation is required before any destructive action.
|
|
|
|
|
*
|
|
|
|
|
* Usage:
|
|
|
|
|
* php cli_scripts/reset.php Reset current session only
|
|
|
|
|
* php cli_scripts/reset.php --all Purge all session folders (with prompt)
|
|
|
|
|
* php cli_scripts/reset.php --all -f Purge all session folders, no prompt
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if (php_sapi_name() !== 'cli') {
|
|
|
|
|
die('This script can only be run from the command line.' . PHP_EOL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Make sure relative paths in init.php resolve against the project root
|
|
|
|
|
chdir(__DIR__);
|
|
|
|
|
|
|
|
|
|
require_once __DIR__ . '/../conf/init.php';
|
|
|
|
|
|
|
|
|
|
// Start a session so reset/destroy have something to work with
|
|
|
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
|
|
|
session_start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// --- Session reset ---
|
|
|
|
|
Session::reset();
|
|
|
|
|
|
|
|
|
|
echo 'Session reset.' . PHP_EOL;
|
|
|
|
|
|
|
|
|
|
// --- Optional: purge all session folders ---
|
|
|
|
|
$purgeAll = in_array('--all', $argv);
|
|
|
|
|
|
|
|
|
|
if ($purgeAll) {
|
|
|
|
|
$force = in_array('-f', $argv);
|
|
|
|
|
|
|
|
|
|
if (!$force) {
|
|
|
|
|
echo 'WARNING: This will permanently delete ALL session folders.' . PHP_EOL;
|
|
|
|
|
echo 'Are you sure? (type "yes" to confirm): ';
|
|
|
|
|
$handle = fopen('php://stdin', 'r');
|
|
|
|
|
$input = trim(fgets($handle));
|
|
|
|
|
fclose($handle);
|
|
|
|
|
|
|
|
|
|
if (strtolower($input) !== 'yes') {
|
|
|
|
|
echo 'Aborted.' . PHP_EOL;
|
|
|
|
|
exit(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sessionsDir = ZAP_APP_BASE_DIR . DIRECTORY_SEPARATOR . ZAP_SESSIONS_DIR;
|
|
|
|
|
$folders = glob($sessionsDir . DIRECTORY_SEPARATOR . '*');
|
|
|
|
|
$count = 0;
|
|
|
|
|
|
|
|
|
|
foreach ($folders as $folder) {
|
|
|
|
|
if (!is_dir($folder)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
$files = glob($folder . DIRECTORY_SEPARATOR . '*');
|
|
|
|
|
foreach ($files as $file) {
|
|
|
|
|
if (is_file($file)) {
|
|
|
|
|
unlink($file);
|
|
|
|
|
}
|
2026-07-15 13:57:05 +02:00
|
|
|
}
|
|
|
|
|
rmdir($folder);
|
2026-07-19 20:17:37 +02:00
|
|
|
$count++;
|
2026-07-15 13:57:05 +02:00
|
|
|
}
|
2026-07-19 20:17:37 +02:00
|
|
|
|
|
|
|
|
echo "Purged $count session folder(s)." . PHP_EOL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Only destroy if a session was actually started
|
|
|
|
|
if (session_status() === PHP_SESSION_ACTIVE) {
|
|
|
|
|
Session::destroy();
|
|
|
|
|
echo 'Session destroyed.' . PHP_EOL;
|
2026-07-15 13:57:05 +02:00
|
|
|
}
|
|
|
|
|
|
2026-07-19 20:17:37 +02:00
|
|
|
exit(0);
|