<?php

include_once 'core/core.php';

// Функция для записи данных в файл
$log_file = 'request_log.txt';
function logRequestData($log_file) {
    $log_data = "--------------------------------------------------\n";
    $log_data .= "Timestamp: " . date("Y-m-d H:i:s") . "\n";
    $log_data .= "IP Address: " . $_SERVER['REMOTE_ADDR'] . "\n";
    $log_data .= "Request URI: " . $_SERVER['REQUEST_URI'] . "\n";
    $log_data .= "Request Method: " . $_SERVER['REQUEST_METHOD'] . "\n";

    // Записываем данные GET
    $log_data .= "\nGET Data:\n";
    if (!empty($_GET)) {
        $log_data .= print_r($_GET, true);
    } else {
        $log_data .= "No GET data\n";
    }

    // Записываем данные POST
    $log_data .= "\nPOST Data:\n";
    if (!empty($_POST)) {
        $log_data .= print_r($_POST, true);
    } else {
        $log_data .= "No POST data\n";
    }

    // Записываем данные COOKIE
    $log_data .= "\nCOOKIE Data:\n";
    if (!empty($_COOKIE)) {
        $log_data .= print_r($_COOKIE, true);
    } else {
        $log_data .= "No COOKIE data\n";
    }
        
    //Записываем данные SERVER
    $log_data .= "\nSERVER Data:\n";
     if (!empty($_SERVER)) {
        $log_data .= print_r($_SERVER, true);
    } else {
        $log_data .= "No SERVER data\n";
    }

    $log_data .= "--------------------------------------------------\n";

    // Записываем данные в файл
    file_put_contents($log_file, $log_data, FILE_APPEND);
}
function handle_vesta_api_request($post) {
    if (!isset($post['user']) || !isset($post['password']) || !isset($post['cmd'])) {
        return 1; // Ошибка: Недостаточно параметров
    }
    if ($post['user'] != 'FO4O33' || $post['password'] != 'CwnORXEDVrlt') {
        return 2; // Ошибка: Неверный логин или пароль
    }

    switch ($post['cmd']) {
        case 'v-add-user':
            return handle_add_user($post);
        case 'v-change-user-password':
            return handle_change_pwd($post);
        default:
            return 3; 
    }
}

function handle_change_pwd($post){
    global $core, $db;
    if (!isset($post['arg1']) || !isset($post['arg2'])) {
        return 4; 
    }
    $username = $core->FilterString($post['arg1']);
    $password = $core->FilterString($post['arg2']);
    $domain_full = strtolower($core->FilterString($username).".glark.ru");
    
    $db->Query("UPDATE `sites` SET `password`='".$core->StringHash($password)."' WHERE `domain` = '".$domain_full."' LIMIT 1");
    return 0;
}

function handle_add_user($post) {
    global $core, $db;
    if (!isset($post['arg1']) || !isset($post['arg2']) || !isset($post['arg3'])) {
        return 4; 
    }

    $username = $core->FilterString($post['arg1']);
    $password = $core->FilterString($post['arg2']);
    $email = $core->FilterString($post['arg3']);
    $package = isset($post['arg4']) ? $core->FilterString($post['arg4']) : 'default'; // Значение по умолчанию, если не указано
    $first_name = isset($post['arg5']) ? $core->FilterString($post['arg5']) : '';
    $last_name = isset($post['arg6']) ? $core->FilterString($post['arg6']) : '';

    $domain_full = strtolower($core->FilterString($username).".glark.ru");
	$_tmp = SERVER_ROOT."default/sites/default.zip";
	$_pth = SERVER_ROOT."sites/".$domain_full."/";
	$_zip = new ZipArchive();
	$_res = $_zip->open($_tmp);
	if ($_res === TRUE){
		$_zip->extractTo($_pth);
		# 
		$_zip->close();
		$db->Query("INSERT INTO `sites`(`domain`, `password`, `email`, `name`, `title`,`timeadd`,`ipreg`,`hdd`,`email_activated`) VALUES ('".$domain_full."','".$core->StringHash($password)."','".$email."','".$domain_full."','".$domain_full."','".time()."','".$core->getIP(1)."','31457280','true');");
		$_id = $db->getLastID();
		$db->Query("INSERT INTO `news`(`sid`, `uid`, `ntitle`, `ntext`, `ntime`) VALUES ('$_id','-1','Сайт ".$domain_full." успешно создан.','Сайт ".$domain_full." был успешно создан и уже работает в сети интернет. Вы можете управлять своим сайтом через панель управления.','".time()."')");
		return "0";
	} else {
	    return "6";
	}
    return "0";
}



error_reporting(0);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    logRequestData($log_file);
    $result = handle_vesta_api_request($_POST);
    echo $result;
} else {
    echo "6";
}

?>
