- Клиентская часть Vue 3 + Vite - Серверная часть Node.js + WebSocket - Система авторизации и смен - Управление игровыми портами - Поддержка тем (светлая/темная) - Адаптивный дизайн 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
90 lines
4.2 KiB
JavaScript
90 lines
4.2 KiB
JavaScript
"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: "Внутренняя ошибка сервера"
|
||
}));
|
||
}
|
||
};
|