Skip to content
wiki.fftac.org

Site Health Guard - Source Excerpt 03

Back to Site Health Guard

Summary

This source excerpt preserves a bounded section of Antichrist.net/wp-content/plugins/uaix-locale-router/includes/site-health-guard.php so readers can inspect the evidence without opening the full source file.

**Source path:** Antichrist.net/wp-content/plugins/uaix-locale-router/includes/site-health-guard.php

if ( jai_site_health_guard_is_frontend_request() ) {
		$last_success = jai_site_health_guard_read_state( 'last-success' );
		if ( ! is_array( $last_success ) || empty( $last_success['updated_epoch'] ) || time() - (int) $last_success['updated_epoch'] > 60 ) {
			jai_site_health_guard_write_state(
				'last-success',
				array(
					'status'      => $status,
					'duration_ms' => $duration,
					'path'        => jai_site_health_guard_request_path(),
				)
			);
		}
	}
}

function jai_site_health_guard_token_from_request( $request ) {
	$token = '';
	if ( is_object( $request ) && method_exists( $request, 'get_header' ) ) {
		$token = (string) $request->get_header( 'x-site-health-token' );
	}

	if ( '' === $token && is_object( $request ) && method_exists( $request, 'get_param' ) ) {
		$token = (string) $request->get_param( 'token' );
	}

	return $token;
}

function jai_site_health_guard_expected_token() {
	if ( defined( 'JAI_SITE_HEALTH_GUARD_TOKEN' ) && JAI_SITE_HEALTH_GUARD_TOKEN ) {
		return (string) JAI_SITE_HEALTH_GUARD_TOKEN;
	}

	$env = getenv( 'JAI_SITE_HEALTH_GUARD_TOKEN' );

	return is_string( $env ) ? $env : '';
}

function jai_site_health_guard_can_read_logs( $request ) {
	if ( function_exists( 'current_user_can' ) && current_user_can( 'manage_options' ) ) {
		return true;
	}

	$expected = jai_site_health_guard_expected_token();
	$actual   = jai_site_health_guard_token_from_request( $request );

	return '' !== $expected && '' !== $actual && hash_equals( $expected, $actual );
}

function jai_site_health_guard_recent_events( $limit ) {
	$dir   = jai_site_health_guard_log_dir();
	$files = glob( $dir . '/events-*.php' );

	if ( ! is_array( $files ) ) {
		return array();
	}

	rsort( $files );
	$events = array();

	foreach ( $files as $file ) {
		$lines = @file( $file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
		if ( ! is_array( $lines ) ) {
			continue;
		}

		foreach ( array_reverse( $lines ) as $line ) {
			if ( 0 === strpos( $line, '<?php' ) ) {
				continue;
			}

			$decoded = json_decode( $line, true );
			if ( is_array( $decoded ) ) {
				$events[] = $decoded;
			}

			if ( count( $events ) >= $limit ) {
				break 2;
			}
		}
	}

	return $events;
}

function jai_site_health_guard_delete_state( $name ) {
	$file = jai_site_health_guard_state_path( $name );
	if ( is_file( $file ) ) {
		@unlink( $file );
	}
}

add_action(
	'rest_api_init',
	static function () {
		register_rest_route(
			'site-health-guard/v1',
			'/ping',
			array(
				'methods'             => 'GET',
				'permission_callback' => '__return_true',
				'callback'            => static function () {
					return array(
						'ok'               => true,
						'timestamp'        => gmdate( 'c' ),
						'guard_version'    => JAI_SITE_HEALTH_GUARD_VERSION,
						'loaded_file'      => jai_site_health_guard_clean_path( __FILE__ ),
						'must_use'         => defined( 'WPMU_PLUGIN_DIR' ) && 0 === strpos( str_replace( '\\', '/', __FILE__ ), str_replace( '\\', '/', WPMU_PLUGIN_DIR ) ),
						'wp_cache'         => defined( 'WP_CACHE' ) ? (bool) WP_CACHE : null,
						'recovery_signal'  => jai_site_health_guard_recovery_signal(),
						'plugin_isolation' => defined( 'JAI_SITE_HEALTH_GUARD_PLUGIN_ISOLATION' ) && JAI_SITE_HEALTH_GUARD_PLUGIN_ISOLATION,
						'theme_isolation'  => defined( 'JAI_SITE_HEALTH_GUARD_THEME_ISOLATION' ) && JAI_SITE_HEALTH_GUARD_THEME_ISOLATION,
					);
				},
			)
		);

		register_rest_route(
			'site-health-guard/v1',
			'/recent',
			array(
				'methods'             => 'GET',
				'permission_callback' => 'jai_site_health_guard_can_read_logs',
				'callback'            => static function ( $request ) {
					$limit = is_object( $request ) && method_exists( $request, 'get_param' ) ? (int) $request->get_param( 'limit' ) : 25;
					$limit = max( 1, min( 100, $limit ) );

					return array(
						'ok'       => true,
						'states'   => array(
							'last_fatal'    => jai_site_health_guard_read_state( 'last-fatal' ),
							'last_recovery' => jai_site_health_guard_read_state( 'last-recovery' ),
							'last_success'  => jai_site_health_guard_read_state( 'last-success' ),
						),
						'flags'    => array(
							'frontdoor_recovery' => jai_site_health_guard_read_flag( 'frontdoor-recovery.flag' ),
							'disable_plugins'    => jai_site_health_guard_read_flag( 'disable-plugins.flag' ),
							'disable_theme'      => jai_site_health_guard_read_flag( 'disable-theme.flag' ),
						),
						'events'   => jai_site_health_guard_recent_events( $limit ),
						'log_path' => 'wp-content/site-health-logs/*.php',
					);
				},
			)
		);

		register_rest_route(
			'site-health-guard/v1',
			'/clear',
			array(
				'methods'             => 'POST',
				'permission_callback' => 'jai_site_health_guard_can_read_logs',
				'callback'            => static function () {
					jai_site_health_guard_delete_state( 'last-fatal' );
					jai_site_health_guard_delete_state( 'last-recovery' );
					jai_site_health_guard_log( 'state_cleared', array( 'source' => 'rest_clear' ) );

					return array(
						'ok'        => true,
						'timestamp' => gmdate( 'c' ),
					);
				},
			)
		);
	}
);

jai_site_health_guard_disable_active_plugins_if_needed();
jai_site_health_guard_disable_active_theme_if_needed();
jai_site_health_guard_maybe_recover();
jai_site_health_guard_maybe_serve_recovery_page();
register_shutdown_function( 'jai_site_health_guard_shutdown' );
}