HEX
Server: LiteSpeed
System: Linux emerald.serverdnsnetwork.com 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: mahdetej (1135)
PHP: 8.1.34
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open
Upload Files
File: /home/mahdetej/public_html/wp-content/plugins/Melli-shild/admin/views/page-settings.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

$ui       = Melli_Shield_Admin_UI::instance();
$settings = new Melli_Shield_Settings();
$opt_name = Melli_Shield_Config::OPTION_SETTINGS;

$blockers = array(
	'block_fonts'     => array( __( 'فونت خارجی', 'melli-shield' ), __( 'Google Fonts، Typekit، Font Awesome', 'melli-shield' ) ),
	'block_cdn'       => array( __( 'CDN خارجی', 'melli-shield' ), __( 'cdnjs، jsDelivr، unpkg', 'melli-shield' ) ),
	'block_analytics' => array( __( 'آنالیتیک', 'melli-shield' ), __( 'Analytics، GTM، Hotjar', 'melli-shield' ) ),
	'block_updates'   => array( __( 'آپدیت وردپرس', 'melli-shield' ), __( 'بررسی آپدیت هسته و افزونه', 'melli-shield' ) ),
	'block_gravatar'  => array( __( 'Gravatar', 'melli-shield' ), __( 'آواتار محلی به‌جای Gravatar', 'melli-shield' ) ),
	'block_embeds'    => array( __( 'Embed', 'melli-shield' ), __( 'YouTube، Vimeo، Twitter', 'melli-shield' ) ),
	'block_recaptcha' => array( __( 'کپچا', 'melli-shield' ), __( 'reCAPTCHA، hCaptcha، Turnstile', 'melli-shield' ) ),
	'block_heartbeat' => array( __( 'Heartbeat', 'melli-shield' ), __( 'کاهش polling ادمین', 'melli-shield' ) ),
	'block_email'     => array( __( 'ایمیل آفلاین', 'melli-shield' ), __( 'ثبت به‌جای ارسال', 'melli-shield' ) ),
	'allow_messenger' => array( __( 'پیام‌رسان', 'melli-shield' ), __( 'تلگرام، اسلک، دیسکورد', 'melli-shield' ) ),
);
?>
<div class="wrap">
<?php $ui->header( Melli_Shield_Config::PAGE_SETTINGS ); ?>
<?php $ui->page_title( __( 'تنظیمات', 'melli-shield' ), __( 'بلاکرها، سرویس‌های مجاز و گزارش‌گیری', 'melli-shield' ) ); ?>

<?php
if ( function_exists( 'settings_errors' ) ) {
	settings_errors( Melli_Shield_Config::SETTINGS_GROUP );
}
?>

<form method="post" action="options.php" class="msh-settings-form">
	<?php settings_fields( Melli_Shield_Config::SETTINGS_GROUP ); ?>

	<div class="msh-card msh-card--accent">
		<h2 class="msh-card__title"><?php esc_html_e( 'بلاکرها', 'melli-shield' ); ?></h2>
		<p class="msh-card__hint">
			<?php
			printf(
				/* translators: %s: dashboard link */
				esc_html__( 'حالت سپر (عادی / ملی / آفلاین) را از %s تغییر دهید.', 'melli-shield' ),
				'<a href="' . esc_url( Melli_Shield_Config::admin_url() ) . '">' . esc_html__( 'داشبورد', 'melli-shield' ) . '</a>'
			);
			?>
		</p>
		<div class="msh-settings-grid">
			<?php foreach ( $blockers as $key => $info ) :
				$val = Melli_Shield_Utils::get_setting( $key, 0 );
				?>
			<div class="msh-toggle-row">
				<div>
					<div class="msh-toggle-row__label"><?php echo esc_html( $info[0] ); ?></div>
					<div class="msh-toggle-row__desc"><?php echo esc_html( $info[1] ); ?></div>
				</div>
				<label class="msh-toggle">
					<input type="checkbox" name="<?php echo esc_attr( $opt_name ); ?>[<?php echo esc_attr( $key ); ?>]" value="1" <?php checked( 1, $val ); ?> />
					<span class="msh-toggle__slider"></span>
				</label>
			</div>
			<?php endforeach; ?>
		</div>
	</div>

	<div class="msh-grid-2">
		<div class="msh-card">
			<h2 class="msh-card__title"><?php esc_html_e( 'گزارش‌گیری', 'melli-shield' ); ?></h2>
			<?php
			$log_on = Melli_Shield_Utils::get_setting( 'log_enabled', 1 );
			$ret    = Melli_Shield_Utils::get_setting( 'log_retention', 30 );
			?>
			<div class="msh-toggle-row">
				<div>
					<div class="msh-toggle-row__label"><?php esc_html_e( 'فعال‌سازی لاگ', 'melli-shield' ); ?></div>
					<div class="msh-toggle-row__desc"><?php esc_html_e( 'ثبت درخواست‌های مسدود و مجاز', 'melli-shield' ); ?></div>
				</div>
				<label class="msh-toggle">
					<input type="checkbox" name="<?php echo esc_attr( $opt_name ); ?>[log_enabled]" value="1" <?php checked( 1, $log_on ); ?> />
					<span class="msh-toggle__slider"></span>
				</label>
			</div>
			<div class="msh-form-field msh-field msh-mt-md">
				<label for="msh-log-retention"><?php esc_html_e( 'نگهداری لاگ (روز)', 'melli-shield' ); ?></label>
				<input type="number" id="msh-log-retention" class="msh-input" style="max-width:120px;"
					name="<?php echo esc_attr( $opt_name ); ?>[log_retention]"
					value="<?php echo esc_attr( (int) $ret ); ?>" min="1" max="365" />
			</div>
			<p class="msh-card__hint msh-mt-md" style="margin-bottom:0;">
				<a href="<?php echo esc_url( Melli_Shield_Config::admin_url( Melli_Shield_Config::PAGE_LOG ) ); ?>"><?php esc_html_e( 'مشاهده گزارش', 'melli-shield' ); ?></a>
			</p>
		</div>

		<div class="msh-card">
			<h2 class="msh-card__title"><?php esc_html_e( 'راهنمای سریع', 'melli-shield' ); ?></h2>
			<ul class="msh-list msh-list--muted">
				<li><?php esc_html_e( 'بلاکرها در هر سه حالت فعال می‌شوند.', 'melli-shield' ); ?></li>
				<li><?php esc_html_e( 'سرویس‌های مجاز حتی در آفلاین کار می‌کنند.', 'melli-shield' ); ?></li>
				<li><?php esc_html_e( 'لیست سفید برای استثنای عمومی است.', 'melli-shield' ); ?></li>
			</ul>
		</div>
	</div>

	<div class="msh-card">
		<h2 class="msh-card__title"><?php esc_html_e( 'دامنه‌های سرویس مجاز', 'melli-shield' ); ?></h2>
		<p class="msh-card__hint"><?php esc_html_e( 'درگاه پرداخت، SMS، API تلگرام و سرویس‌های ضروری — در همه حالت‌ها مجاز.', 'melli-shield' ); ?></p>
		<?php $settings->render_services(); ?>
	</div>

	<div class="msh-form-actions">
		<?php submit_button( __( 'ذخیره تنظیمات', 'melli-shield' ), 'primary msh-btn msh-btn--gold', 'submit', false ); ?>
		<span class="msh-text-sm msh-text-muted"><?php esc_html_e( 'تغییرات پس از ذخیره اعمال می‌شوند.', 'melli-shield' ); ?></span>
	</div>
</form>

<div class="msh-card msh-mt-md">
	<h2 class="msh-card__title"><?php esc_html_e( 'لاگ دیباگ موقت', 'melli-shield' ); ?></h2>
	<p class="msh-card__hint"><?php esc_html_e( 'برای عیب‌یابی مشکلات CSS، فعال‌سازی و بارگذاری فایل‌ها. پس از رفع مشکل غیرفعال کنید.', 'melli-shield' ); ?></p>
	<p class="msh-text-sm"><code><?php echo esc_html( Melli_Shield_Debug::log_file() ); ?></code></p>
	<?php if ( Melli_Shield_Debug::is_wp_config_forced() ) : ?>
		<p class="msh-card__hint msh-mt-md" style="margin-bottom:0;">
			<?php esc_html_e( 'دیباگ با MELLI_SHIELD_DEBUG در wp-config.php روشن است و از این صفحه قابل خاموش کردن نیست.', 'melli-shield' ); ?>
		</p>
	<?php endif; ?>
	<form method="post" action="<?php echo esc_url( Melli_Shield_Debug::form_action_url() ); ?>" class="msh-btn-row msh-mt-md">
		<input type="hidden" name="action" value="msh_debug_toggle" />
		<?php wp_nonce_field( 'msh_debug_settings' ); ?>
		<?php if ( Melli_Shield_Debug::enabled() ) : ?>
			<?php if ( ! Melli_Shield_Debug::is_wp_config_forced() ) : ?>
			<button type="submit" name="msh_debug_action" value="disable" class="msh-btn msh-btn--ghost"><?php esc_html_e( 'غیرفعال کردن لاگ', 'melli-shield' ); ?></button>
			<?php endif; ?>
			<button type="submit" name="msh_debug_action" value="clear" class="msh-btn msh-btn--ghost"><?php esc_html_e( 'پاک کردن فایل لاگ', 'melli-shield' ); ?></button>
		<?php else : ?>
			<button type="submit" name="msh_debug_action" value="enable" class="msh-btn"><?php esc_html_e( 'فعال کردن لاگ دیباگ', 'melli-shield' ); ?></button>
		<?php endif; ?>
	</form>
	<?php if ( Melli_Shield_Debug::enabled() ) :
		$tail = Melli_Shield_Debug::tail( 40 );
		if ( ! empty( $tail ) ) : ?>
	<pre class="msh-log-viewer msh-mt-md" style="max-height:280px;overflow:auto;background:var(--ms-surface-2);padding:12px;border-radius:8px;font-size:12px;direction:ltr;text-align:left;"><?php echo esc_html( implode( "\n", $tail ) ); ?></pre>
		<?php endif;
	endif; ?>
</div>

<?php $ui->footer(); ?>
</div>