add: server status
This commit is contained in:
@ -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 };
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user