"use strict"; const fs = require('node:fs/promises'); const path = require('path'); exports.go = async (req, res, postData, urlParsed) => { try { console.log('[api/update-admins] Запрос принудительного обновления администраторов'); // Проверяем соединение с внешним сервером if (!global.conn_to_server) { console.error('[api/update-admins] Нет соединения с внешним сервером'); return res.end(JSON.stringify({ success: false, error: "Нет соединения с сервером" })); } console.log('[api/update-admins] Запрашиваем данные администраторов с внешнего сервера'); // Запрашиваем данные администраторов с внешнего сервера const serverResponse = await global.send_to_server({do: "admin/pult"}); console.log('[api/update-admins] Получен ответ от сервера:', { do: serverResponse.do, admins: serverResponse.admins ? serverResponse.admins.length + ' администраторов' : 'нет данных', ver: serverResponse.ver || 'нет версии', error: serverResponse.err || 'нет ошибок' }); if (serverResponse.err) { console.error('[api/update-admins] Ошибка от внешнего сервера:', serverResponse.err); return res.end(JSON.stringify({ success: false, error: "Ошибка сервера: " + serverResponse.err })); } if (serverResponse.do === "admin/pult" && serverResponse.admins) { console.log('[api/update-admins] Обновляем локальный файл администраторов'); // Формируем файл администраторов в правильном формате let avt_file = {}; for (let i = 0; i < serverResponse.admins.length; i++) { const admin = serverResponse.admins[i]; avt_file[admin.tel] = admin; } // Сохраняем файл администраторов await fs.writeFile(path.join(__dirname, '../data/avt.ini'), JSON.stringify(avt_file, null, 2)); // Обновляем версию let ver = {}; try { ver = JSON.parse(await fs.readFile(path.join(__dirname, '../data/ver.ini'), 'utf8')); } catch (error) { console.warn('[api/update-admins] Не удалось прочитать ver.ini, создаем новый'); } ver.admin = serverResponse.ver || Date.now(); await fs.writeFile(path.join(__dirname, '../data/ver.ini'), JSON.stringify(ver)); console.log('[api/update-admins] Данные администраторов успешно обновлены'); console.log('[api/update-admins] Загружено администраторов:', Object.keys(avt_file).length); console.log('[api/update-admins] Новая версия:', ver.admin); res.end(JSON.stringify({ success: true, message: "Данные администраторов обновлены", adminsCount: Object.keys(avt_file).length, version: ver.admin, admins: Object.keys(avt_file) })); } else { console.error('[api/update-admins] Неверный ответ от сервера'); res.end(JSON.stringify({ success: false, error: "Неверный ответ от сервера" })); } } catch (error) { console.error('[api/update-admins] Критическая ошибка:', error); res.end(JSON.stringify({ success: false, error: "Внутренняя ошибка сервера" })); } };