Files
vue-pult/server/api/update-admins.js
sasha 3e90269b0b Initial commit: Vue.js тир управления система
- Клиентская часть Vue 3 + Vite
- Серверная часть Node.js + WebSocket
- Система авторизации и смен
- Управление игровыми портами
- Поддержка тем (светлая/темная)
- Адаптивный дизайн

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-19 12:24:22 +03:00

90 lines
4.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"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: "Внутренняя ошибка сервера"
}));
}
};