<?php

class CSM_Base {

    
    /**
     * كائن Logger
     * @var CSM_Logger
     */
    protected  $logger;
    
    /**
     * إعدادات النظام
     * @var array
     */
    protected  $settings;
    

    public function __construct() {
        $this->load_settings();
    }

        /**
     * تحميل إعدادات النظام
     */
    protected function load_settings() {
        $default_settings = [
            'ips_remote_url' => 'https://slaveauth.r-m.dev/allowed-ips.php?pass=mySuperSecurePassword',
            // 'ips_remote_url' => 'http://localhost/allowed-ips.php?pass=mySuperSecurePassword&a',
            'enable_ip_restriction' => true,
            'enable_rate_limiting' => true,
            'requests_per_minute' => 60, // طلب في الدقيقة
            'requests_per_hour' => 60, // طلب في الساعة
            'API_KEY_EXPIRY' => 86400,
            'API_KEY_LENGTH' => 64,
            'enable_request_logging' => true,
            'max_failed_attempts' => 5,
            'lockout_duration' => 3600 // ساعة واحدة
        ];
        
        $saved_settings = get_option('csm_auth_settings', []);
        $this->settings = wp_parse_args($saved_settings, $default_settings);
    }



    /**
     * الحصول على الإعدادات الحالية
     * 
     * @return array
     */
    public function get_settings() {
        return $this->settings;
    }
    

    

    
    /**
     * توليد مفتاح آمن
     * 
     * @param int $length
     * @return string
     */
    protected function generate_secure_key($length = 32) {
        if (function_exists('random_bytes')) {
            return bin2hex(random_bytes($length / 2));
        } elseif (function_exists('openssl_random_pseudo_bytes')) {
            return bin2hex(openssl_random_pseudo_bytes($length / 2));
        } else {
            // fallback أقل أماناً
            return substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/62))), 0, $length);
        }
    }


    /**
     * تسجيل معلومات
     */
    protected function log_info($operation, $message, $context = []) {
        if ($this->logger) {
            $this->logger->log('info', $message, array_merge(['operation' => $operation], $context));
        }
    }
    
    /**
     * تسجيل تحذير
     */
    protected function log_warning($operation, $message, $context = []) {
        if ($this->logger) {
            $this->logger->log('warning', $message, array_merge(['operation' => $operation], $context));
        }
    }
    
    /**
     * تسجيل خطأ
     */
    protected function log_error($operation, $message, $context = []) {
        if ($this->logger) {
            $this->logger->log('error', $message, array_merge(['operation' => $operation], $context));
        }
        
        // تسجيل إضافي في error_log للأخطاء الحرجة
        error_log("CSM Auth Error [{$operation}]: {$message} - " . json_encode($context));
    }
}