add: server status

This commit is contained in:
2025-07-07 02:53:21 +05:00
parent 2eda1d7806
commit 261b9ac253
6 changed files with 208 additions and 36 deletions

View File

@ -18,12 +18,8 @@ import { spawn } from 'child_process';
import { AuthService } from './auth-service';
// Константы
const COMFORT_DOWNLOAD_URL =
'https://github.com/DIKER0K/Comfort/releases/latest/download/Comfort.zip';
const GITHUB_API_RELEASE_URL =
'https://api.github.com/repos/DIKER0K/Comfort/releases/latest';
const COMFORT_VERSION_FILE = 'comfort_version.txt';
const AUTHLIB_INJECTOR_FILENAME = 'authlib-injector-1.2.5.jar';
const MCSTATUS_API_URL = 'https://api.mcstatus.io/v2/status/java/';
// Создаем экземпляр сервиса аутентификации
const authService = new AuthService();
@ -769,3 +765,44 @@ export function initAuthHandlers() {
},
);
}
// Функция для получения статуса сервера
export function initServerStatusHandler() {
ipcMain.handle('get-server-status', async (event, { host, port }) => {
try {
// Формируем адрес с портом, если указан
const serverAddress = port ? `${host}:${port}` : host;
console.log(
`Запрос статуса сервера: ${MCSTATUS_API_URL}${serverAddress}`,
);
// Делаем запрос к API mcstatus.io
const response = await fetch(`${MCSTATUS_API_URL}${serverAddress}`);
// Проверяем статус ответа
if (!response.ok) {
const errorText = await response.text();
throw new Error(`API вернул ошибку ${response.status}: ${errorText}`);
}
const data = await response.json();
console.log('Получен ответ от API:', data);
if (data.online) {
return {
success: true,
online: data.players?.online || 0,
max: data.players?.max || 0,
version: data.version?.name_clean || 'Unknown',
icon: data.icon || null, // Возвращаем иконку
motd: data.motd?.clean || '', // Название сервера
};
} else {
return { success: false, error: 'Сервер не доступен' };
}
} catch (error) {
console.error('Ошибка при получении статуса сервера:', error);
return { success: false, error: error.message };
}
});
}