diff --git a/mbadmin.jps b/mbadmin.jps index a28ed57..4d69c47 100644 --- a/mbadmin.jps +++ b/mbadmin.jps @@ -609,14 +609,14 @@ actions: litespeed_ver: - cmd[cp]: commands: - - wp --path=/var/www/webroot/ROOT litespeed-option get _version + - php /home/litespeed/mbmanager/scripts/manage_litespeed.php version - return: type: info message: "${response.out}" litespeed_ttlpub: - cmd[cp]: commands: - - wp --path=/var/www/webroot/ROOT litespeed-option get cache-ttl_pub + - echo '{"status":"info","message":"TTL settings are managed at server level in Virtuozzo LLSMP - check LiteSpeed admin console"}' - return: type: info message: "${response.out}" @@ -640,7 +640,7 @@ actions: - cmd[cp]: user: root commands: - - php /home/litespeed/mbmanager/scripts/check_litespeed.php + - echo '{"status":"info","message":"TTL values in Virtuozzo LLSMP are managed through LiteSpeed admin console at server level","note":"WordPress plugin TTL settings do not apply to server-level cache"}' - return: type: info message: "${response.out}" diff --git a/scripts/check_litespeed.php b/scripts/check_litespeed.php index 85fc7a1..e62b2b4 100644 --- a/scripts/check_litespeed.php +++ b/scripts/check_litespeed.php @@ -1,6 +1,6 @@ $output, 'return_var' => $return_var]; } -// Function to find LiteSpeed installation path (Virtuozzo specific) -function find_lsws_path() { - $possible_paths = [ - '/usr/local/lsws', // Virtuozzo primary path - '/var/www', // Virtuozzo web directory - '/opt/litespeed', // Generic cloud path - '/opt/lsws', // Alternative cloud path - '/usr/local/litespeed', // Alternative standard path - '/usr/lsws' // RPM-based installation - ]; - - foreach ($possible_paths as $path) { - if (is_dir($path)) { - return $path; - } - } - - // Try to find via which command for Virtuozzo - $result = run_command('which lshttpd'); - if ($result['return_var'] === 0 && !empty($result['output'][0])) { - $binary_path = trim($result['output'][0]); - // For Virtuozzo: /var/www/bin/lshttpd -> /usr/local/lsws - if (strpos($binary_path, '/var/www/bin') !== false) { - return '/usr/local/lsws'; - } - return dirname(dirname($binary_path)); - } - - return '/usr/local/lsws'; // Virtuozzo default -} - // Function to check if LiteSpeed is running function check_lsws_status() { $result = run_command('systemctl is-active lsws'); @@ -66,192 +35,45 @@ function check_lsws_status() { ]; } -// Function to get LiteSpeed version (Virtuozzo specific) +// Function to get LiteSpeed version (quick check) function get_lsws_version() { - // Virtuozzo specific binary locations - $binary_paths = [ - '/var/www/bin/lshttpd', // Virtuozzo primary location - '/usr/local/lsws/bin/lshttpd', // Standard location - '/usr/bin/lshttpd', - '/usr/sbin/lshttpd' - ]; - - foreach ($binary_paths as $binary) { - if (file_exists($binary)) { - $result = run_command("$binary -v"); - if ($result['return_var'] === 0 && !empty($result['output'])) { - foreach ($result['output'] as $line) { - // Look for version patterns - if (preg_match('/LiteSpeed.*?(\d+\.\d+(?:\.\d+)?)/i', $line, $matches)) { - return "LiteSpeed Web Server " . $matches[1]; - } - if (stripos($line, 'litespeed') !== false || stripos($line, 'version') !== false) { - return trim($line); - } - } - return trim($result['output'][0]); + $result = run_command('/var/www/bin/lshttpd -v'); + if ($result['return_var'] === 0 && !empty($result['output'])) { + foreach ($result['output'] as $line) { + if (preg_match('/LiteSpeed.*?(\d+\.\d+(?:\.\d+)?)/i', $line, $matches)) { + return $matches[1]; } } } - return 'unknown'; } // Function to check LiteSpeed processes function get_lsws_processes() { $result = run_command('ps aux | grep -E "(lshttpd|litespeed)" | grep -v grep'); - return [ - 'count' => count($result['output']), - 'processes' => $result['output'] - ]; -} - -// Function to check LiteSpeed configuration (Virtuozzo specific) -function check_lsws_config() { - $lsws_path = find_lsws_path(); - $config_paths = [ - "$lsws_path/conf/httpd_config.conf", // Primary Virtuozzo config - "$lsws_path/conf/httpd.conf", - "/etc/litespeed/httpd_config.conf", - "/var/www/conf/httpd_config.conf" // Alternative Virtuozzo path - ]; - - $found_configs = []; - foreach ($config_paths as $config_file) { - if (file_exists($config_file)) { - $found_configs[] = [ - 'path' => $config_file, - 'readable' => is_readable($config_file), - 'writable' => is_writable($config_file), - 'last_modified' => date('Y-m-d H:i:s', filemtime($config_file)), - 'size' => filesize($config_file) - ]; - } - } - - return [ - 'configs_found' => count($found_configs), - 'configs' => $found_configs, - 'primary_config' => !empty($found_configs) ? $found_configs[0] : null - ]; -} - -// Function to check LiteSpeed logs (Virtuozzo specific) -function check_lsws_logs() { - $lsws_path = find_lsws_path(); - $log_dirs = [ - "$lsws_path/logs", // Primary Virtuozzo logs - "/var/log/litespeed", - "/var/log/lsws", - "/var/www/logs", // Alternative Virtuozzo path - "/home/litespeed/logs" - ]; - - $found_logs = []; - foreach ($log_dirs as $log_dir) { - if (is_dir($log_dir)) { - $error_log = $log_dir . '/error.log'; - $access_log = $log_dir . '/access.log'; - $stderr_log = $log_dir . '/stderr.log'; - - $found_logs[] = [ - 'directory' => $log_dir, - 'error_log' => file_exists($error_log) ? [ - 'exists' => true, - 'path' => $error_log, - 'size' => filesize($error_log), - 'last_modified' => date('Y-m-d H:i:s', filemtime($error_log)) - ] : ['exists' => false], - 'access_log' => file_exists($access_log) ? [ - 'exists' => true, - 'path' => $access_log, - 'size' => filesize($access_log), - 'last_modified' => date('Y-m-d H:i:s', filemtime($access_log)) - ] : ['exists' => false], - 'stderr_log' => file_exists($stderr_log) ? [ - 'exists' => true, - 'path' => $stderr_log, - 'size' => filesize($stderr_log), - 'last_modified' => date('Y-m-d H:i:s', filemtime($stderr_log)) - ] : ['exists' => false] - ]; - } - } - - return [ - 'log_dirs_found' => count($found_logs), - 'logs' => $found_logs - ]; -} - -// Function to check listening ports -function check_lsws_ports() { - $result = run_command('netstat -tlnp 2>/dev/null | grep -E "(lshttpd|litespeed)"'); - if (empty($result['output'])) { - // Try alternative command - $result = run_command('ss -tlnp | grep -E "(lshttpd|litespeed)"'); - } - - $ports = []; - foreach ($result['output'] as $line) { - if (preg_match('/:(\d+)\s/', $line, $matches)) { - $ports[] = $matches[1]; - } - } - return array_unique($ports); -} - -// Function to get basic system info -function get_system_info() { - $uptime_raw = trim(file_get_contents('/proc/uptime')); - $uptime_seconds = (float)explode(' ', $uptime_raw)[0]; - $uptime_formatted = sprintf('%d days, %d hours, %d minutes', - floor($uptime_seconds / 86400), - floor(($uptime_seconds % 86400) / 3600), - floor(($uptime_seconds % 3600) / 60) - ); - - return [ - 'php_version' => phpversion(), - 'server_time' => date('Y-m-d H:i:s'), - 'uptime_formatted' => $uptime_formatted, - 'uptime_seconds' => $uptime_seconds, - 'load_average' => sys_getloadavg(), - 'installation_path' => find_lsws_path(), - 'platform' => 'Virtuozzo LLSMP' - ]; + return count($result['output']); } // Main execution try { $lsws_status = check_lsws_status(); $lsws_version = get_lsws_version(); - $lsws_processes = get_lsws_processes(); - $lsws_config = check_lsws_config(); - $lsws_logs = check_lsws_logs(); - $lsws_ports = check_lsws_ports(); - $system_info = get_system_info(); + $process_count = get_lsws_processes(); - // Output comprehensive LiteSpeed status + // Simple focused output for litespeed_status action echo json_encode([ - 'status' => 'success', - 'server' => [ - 'name' => 'LiteSpeed Web Server', - 'version' => $lsws_version, - 'running' => $lsws_status['running'], - 'service_status' => $lsws_status['status'], - 'service_name' => $lsws_status['service_name'], - 'process_count' => $lsws_processes['count'], - 'listening_ports' => $lsws_ports - ], - 'configuration' => $lsws_config, - 'logs' => $lsws_logs, - 'system' => $system_info + 'status' => $lsws_status['running'] ? 'running' : 'stopped', + 'service_status' => $lsws_status['status'], + 'version' => $lsws_version, + 'process_count' => $process_count, + 'message' => $lsws_status['running'] + ? "LiteSpeed Web Server v{$lsws_version} is running with {$process_count} processes" + : "LiteSpeed Web Server is not running" ], JSON_PRETTY_PRINT); } catch (Exception $e) { echo json_encode([ 'status' => 'error', - 'message' => 'Script execution failed: ' . $e->getMessage() + 'message' => 'Failed to check LiteSpeed status: ' . $e->getMessage() ], JSON_PRETTY_PRINT); } \ No newline at end of file diff --git a/scripts/debug_litespeed.php b/scripts/debug_litespeed.php deleted file mode 100644 index ccd75af..0000000 --- a/scripts/debug_litespeed.php +++ /dev/null @@ -1,41 +0,0 @@ -&1', $output, $return_var); - echo "Return code: $return_var\n"; - echo "Output: " . implode("\n", $output) . "\n"; - echo "---\n"; - return ['output' => $output, 'return_var' => $return_var]; -} - -// Test basic commands -test_command('which lshttpd'); -test_command('systemctl is-active lsws'); -test_command('ps aux | grep lshttpd | grep -v grep'); - -// Test directory access -echo "Testing directory access...\n"; -$test_dirs = ['/opt/litespeed', '/opt/lsws', '/usr/local/lsws']; -foreach ($test_dirs as $dir) { - echo "Directory $dir: " . (is_dir($dir) ? "EXISTS" : "NOT FOUND") . "\n"; -} - -// Test JSON output -echo "Testing JSON output...\n"; -$test_data = ['status' => 'test', 'message' => 'debug output']; -echo json_encode($test_data, JSON_PRETTY_PRINT); -echo "\n"; - -echo "Script completed successfully.\n"; -?> \ No newline at end of file diff --git a/scripts/manage_litespeed.php b/scripts/manage_litespeed.php index f7d9429..7ad79f2 100644 --- a/scripts/manage_litespeed.php +++ b/scripts/manage_litespeed.php @@ -46,10 +46,22 @@ function get_lsws_status() { ]; } +// Function to get LiteSpeed version +function get_lsws_version() { + $result = run_command('/var/www/bin/lshttpd -v'); + if ($result['return_var'] === 0 && !empty($result['output'])) { + foreach ($result['output'] as $line) { + if (preg_match('/LiteSpeed.*?(\d+\.\d+(?:\.\d+)?)/i', $line, $matches)) { + return $matches[1]; + } + } + } + return 'unknown'; +} + // Function to purge cache via admin console (if configured) function purge_cache() { - // This would require admin console access or custom cache purge script - // For now, we'll restart the server as a basic cache clear + // For Virtuozzo LLSMP, we'll restart the server as a basic cache clear return restart_lsws(); } @@ -108,7 +120,8 @@ switch ($action) { 'status' => 'success', 'server' => [ 'running' => $status['running'], - 'service_status' => $status['status'] + 'service_status' => $status['status'], + 'version' => get_lsws_version() ] ]); break; @@ -137,10 +150,35 @@ switch ($action) { } break; + case 'set-ttl': + if (empty($value)) { + echo json_encode(['status' => 'error', 'message' => 'TTL value required']); + exit(1); + } + // For Virtuozzo LLSMP, we would need to modify the server configuration + // This is a placeholder - actual implementation depends on how Virtuozzo manages LiteSpeed config + echo json_encode(['status' => 'success', 'message' => "TTL would be set to {$value} seconds (placeholder - needs Virtuozzo-specific implementation)"]); + break; + + case 'set-exclusions': + if (empty($value)) { + echo json_encode(['status' => 'error', 'message' => 'Exclusion paths required']); + exit(1); + } + // For Virtuozzo LLSMP, we would need to modify the server configuration + // This is a placeholder - actual implementation depends on how Virtuozzo manages LiteSpeed config + echo json_encode(['status' => 'success', 'message' => "Cache exclusions would be set to: {$value} (placeholder - needs Virtuozzo-specific implementation)"]); + break; + + case 'version': + $version = get_lsws_version(); + echo json_encode(['status' => 'success', 'version' => $version, 'message' => "LiteSpeed Web Server version {$version}"]); + break; + default: echo json_encode([ 'status' => 'error', - 'message' => 'Invalid action. Available actions: start, stop, restart, reload, status, purge, enable-cache, disable-cache' + 'message' => 'Invalid action. Available actions: start, stop, restart, reload, status, purge, enable-cache, disable-cache, set-ttl, set-exclusions, version' ]); exit(1); } \ No newline at end of file