<?php
ini_set('display_errors', 1);
include(__DIR__ . '/../includes/functions.php');

$jsonIn = file_get_contents('php://input');
$resonse = json_decode($jsonIn, true);
$decoded = base64_decode($resonse['data']);
$authData = json_decode($decoded, true);
$portal = [];

// Caminho do arquivo JSON onde as device_keys serão armazenadas
$jsonFilePath = __DIR__ . '/device_keys.json';

// Função para ler o arquivo JSON e retornar os dados
function readDeviceKeys($filePath) {
    if (file_exists($filePath)) {
        $jsonData = file_get_contents($filePath);
        return json_decode($jsonData, true);
    }
    return [];
}

// Função para salvar as device_keys no arquivo JSON
function saveDeviceKeys($filePath, $data) {
    file_put_contents($filePath, json_encode($data, JSON_PRETTY_PRINT));
}

// Lógica para formatar o endereço MAC
if ($authData['app_device_id']) {
    $macAddress = (base64_decode($authData['app_device_id']));
    $macAddress = substr($macAddress, 0, 16);
    $formattedMac = strtoupper(implode(':', array_slice(explode(':', preg_replace('/..(?!$)/', '$0:', $macAddress)), 0, 6)));

} else {
    $formattedMac = strtoupper($authData['mac_address']);
}

// Carregar as device_keys existentes
$deviceKeys = readDeviceKeys($jsonFilePath);

// Verificar se já existe uma device_key para o endereço MAC
if (isset($deviceKeys[$formattedMac])) {
    // Usar a chave existente
    $device_key = $deviceKeys[$formattedMac];
} else {
    // Gerar uma nova chave se não existir
    $device_key = substr(md5($formattedMac), 0, 8);
    
    // Salvar a nova chave no arquivo JSON
    $deviceKeys[$formattedMac] = $device_key;
    saveDeviceKeys($jsonFilePath, $deviceKeys);
}

// Consultas ao banco de dados
$res = $db->select('dns', '*', '', '');

foreach ($res as $row) {
    $result = $db->select('playlist', '*', 'dns_id = :dns_id AND mac_address = :mac_address', '', [':dns_id' => $row['id'], ':mac_address' => $formattedMac]);
    if (!empty($result)) {
        $portal[] = [
            'is_protected' => 0,
            'id' => $row['id'],
            'url' => $row['url'] . '/get.php?username=' . $result[0]['username'] . '&password=' . $result[0]['password'] . '&type=m3u_plus&output=ts',
            'name' => $row['title'],
            'playlist_name' => $row['title'],
            'type' => 'xc',
            'created_at' => '2023-03-26 16:42:48',
            'updated_at' => '2023-03-26 16:42:48'
        ];
    }
}

$settings = $db->select('settings', '*', 'id = :id', '', [':id' => 1]);
$result_pin = $db->select('playlist', '*', 'mac_address = :mac_address', '', [':mac_address' => $formattedMac]);

$response = [
    'android_version_code' => '1.0.0',
    'apk_url'              => '',
    'app_version'          => '3.1',
    'device_key'           => $device_key, // Aqui você utiliza a chave gerada ou carregada
    'expire_date'          => '2034-03-26',
    'is_google_paid'       => true,
    'is_trial'             => 0,
    'languages'            => json_decode(file_get_contents('language.json'), true),
    'mac_registered'       => true,
    'themes'               => [],
    'trial_days'           => 7,
    'plan_id'              => '36269518',
    'mac_address'          => $formattedMac,
    'pin'                  => $result_pin[0]['pin'] ?? '0000',
    'price'                => '7.99',
    'apk_link'             => '',
    'urls'                 => $portal,
    'note_title'           => $settings[0]['note_title'],
    'note_content'         => $settings[0]['note_content'],
    'qr_url'               => '',
    'qr_url_short'         => '',
    'home_mode'            => null,
    'home_url1'           => 'http://b3tx3.co.uk/test/sportsv2/main.php',
    'home_url2'           => 'http://b3tx3.co.uk/test/sportsv2/main.php',
    'has_own_playlist'     => true
];

echo (Encryption::run(json_encode($response), "VU/Cinema"));
?>
