const axios = require('axios');
const mysql = require('mysql2');
const fs = require('fs');

// Função para ler os valores de app_url e app_dns
const readConfig = () => {
  const urlServer = fs.readFileSync('../app_url', 'utf-8');
  const dns = fs.readFileSync('../app_dns', 'utf-8');
  return { urlServer, dns };
};

// Função para enviar a requisição de teste para o servidor
const createTestAccount = async (macAddress) => {
  const { urlServer, dns } = readConfig();

  const jsonPayload = JSON.stringify({
    mac_address: macAddress,
    // outros dados podem ser adicionados aqui conforme necessário
  });

  try {
    const response = await axios.post(urlServer, jsonPayload, {
      headers: {
        'Content-Type': 'application/json',
        'Content-Length': jsonPayload.length,
      },
    });

    // Extrair username e password da resposta
    let username = '';
    let password = '';
    const jsonRetorno = response.data;

    if (jsonRetorno.username && jsonRetorno.password) {
      username = jsonRetorno.username;
      password = jsonRetorno.password;
    }

    // Se não encontrar os dados, tentar a chave 'message'
    if (!username && !password && jsonRetorno.data && jsonRetorno.data[0].message) {
      const userPass = jsonRetorno.data[0].message.split('|');
      if (userPass[0] && userPass[1]) {
        username = userPass[0];
        password = userPass[1];
      }
    }

    // Se os dados foram encontrados, inserir no banco
    if (username && password) {
      const expireDate = '2050-01-01';
      const url = `${dns}/get.php?username=${username}&password=${password}&type=m3u_plus&output=ts`;

      insertIntoDatabase(macAddress, username, password, expireDate, 'NOVO*** (TESTE CADASTRADO)', url);
    } else {
      const expireDateDefault = '2050-01-01';
      insertIntoDatabase(macAddress, 'NOVO*** (SEM DNS, USUARIO E SENHA)', '', expireDateDefault, '', '');
    }

  } catch (error) {
    console.error('Erro ao criar conta de teste:', error);
  }
};

// Função para inserir no banco de dados
const insertIntoDatabase = (macAddress, username, password, expireDate, title, url) => {
  const connection = mysql.createConnection({
    host: 'localhost', // ou seu host de banco de dados
    user: 'thefullnet', // seu usuário de banco de dados
    password: 'asder123Ww@', // sua senha de banco de dados
    database: 'thefullnet', // o nome do banco de dados
  });

  const query = `
    INSERT INTO ibo (mac_address, username, password, expire_date, title, url, type)
    VALUES (?, ?, ?, ?, ?, ?, 1)
  `;

  connection.execute(query, [macAddress, username, password, expireDate, title, url], (err, results) => {
    if (err) {
      console.error('Erro ao inserir dados no banco:', err);
    } else {
      console.log('Conta de teste criada com sucesso:', results);
    }
  });

  connection.end();
};

// Exemplo de uso
const macAddress = '00:14:22:01:23:45'; // Altere para o MAC Address que deseja testar
createTestAccount(macAddress);
