Files
vServer/Backend/admin/frontend/assets/js/api/wails.js
Falknat 02ae56b78c Большое обновление GUI интерфейс
Большое обновление GUI интерфейс

- Добавлен фраемворr Walles
- Удалена консольная версия
- Проработан интерфейс и дизайн
- Добавлено кеширование для быстрой реакции.
- Сделан .ps1 сборщик для удобной сборки проекта.
- Обновлён Readme
2025-11-14 08:40:25 +07:00

144 lines
4.1 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.

/* ============================================
Wails API Wrapper
Обёртка над Wails API
============================================ */
import { isWailsAvailable, log } from '../utils/helpers.js';
/**
* Базовый класс для работы с Wails API
*/
class WailsAPI {
constructor() {
this.available = isWailsAvailable();
}
/**
* Проверка доступности API
*/
checkAvailability() {
if (!this.available) {
log('Wails API недоступен', 'warn');
return false;
}
return true;
}
/**
* Получить статус всех сервисов
*/
async getAllServicesStatus() {
if (!this.checkAvailability()) return null;
try {
return await window.go.admin.App.GetAllServicesStatus();
} catch (error) {
log(`Ошибка получения статуса сервисов: ${error.message}`, 'error');
return null;
}
}
/**
* Получить список сайтов
*/
async getSitesList() {
if (!this.checkAvailability()) return [];
try {
return await window.go.admin.App.GetSitesList();
} catch (error) {
log(`Ошибка получения списка сайтов: ${error.message}`, 'error');
return [];
}
}
/**
* Получить список прокси
*/
async getProxyList() {
if (!this.checkAvailability()) return [];
try {
return await window.go.admin.App.GetProxyList();
} catch (error) {
log(`Ошибка получения списка прокси: ${error.message}`, 'error');
return [];
}
}
/**
* Получить правила vAccess
*/
async getVAccessRules(host, isProxy) {
if (!this.checkAvailability()) return { rules: [] };
try {
return await window.go.admin.App.GetVAccessRules(host, isProxy);
} catch (error) {
log(`Ошибка получения правил vAccess: ${error.message}`, 'error');
return { rules: [] };
}
}
/**
* Сохранить правила vAccess
*/
async saveVAccessRules(host, isProxy, configJSON) {
if (!this.checkAvailability()) return 'Error: API недоступен';
try {
return await window.go.admin.App.SaveVAccessRules(host, isProxy, configJSON);
} catch (error) {
log(`Ошибка сохранения правил vAccess: ${error.message}`, 'error');
return `Error: ${error.message}`;
}
}
/**
* Запустить сервер
*/
async startServer() {
if (!this.checkAvailability()) return;
try {
await window.go.admin.App.StartServer();
} catch (error) {
log(`Ошибка запуска сервера: ${error.message}`, 'error');
}
}
/**
* Остановить сервер
*/
async stopServer() {
if (!this.checkAvailability()) return;
try {
await window.go.admin.App.StopServer();
} catch (error) {
log(`Ошибка остановки сервера: ${error.message}`, 'error');
}
}
/**
* Проверить готовность сервисов
*/
async checkServicesReady() {
if (!this.checkAvailability()) return false;
try {
return await window.go.admin.App.CheckServicesReady();
} catch (error) {
return false;
}
}
/**
* Открыть папку сайта
*/
async openSiteFolder(host) {
if (!this.checkAvailability()) return;
try {
await window.go.admin.App.OpenSiteFolder(host);
} catch (error) {
log(`Ошибка открытия папки: ${error.message}`, 'error');
}
}
}
// Экспортируем единственный экземпляр
export const api = new WailsAPI();