Files
vServer/Backend/admin/API.md
2026-02-08 05:37:13 +07:00

11 KiB
Raw Blame History

📡 vServer Admin API

API панели управления vServer. Все методы вызываются через Wails IPC биндинги.

Доступ из фронтенда: window.go.admin.App.MethodName()


📋 Содержание


🔧 Сервисы

GetAllServicesStatus()

Возвращает статусы всех сервисов.

  • Параметры: нет
  • Возвращает: AllServicesStatus
{
  "http":  { "name": "HTTP",  "status": true,  "port": "80",  "info": "" },
  "https": { "name": "HTTPS", "status": true,  "port": "443", "info": "" },
  "mysql": { "name": "MySQL", "status": true,  "port": "3306","info": "" },
  "php":   { "name": "PHP",   "status": true,  "port": "8000","info": "" },
  "proxy": { "name": "Proxy", "status": false, "port": "",    "info": "" }
}

CheckServicesReady()

Проверяет, готовы ли все основные сервисы (HTTP, HTTPS, MySQL, PHP).

  • Параметры: нет
  • Возвращает: bool

StartServer()

Запускает все сервисы (HTTP, HTTPS, PHP, MySQL, SSL).

  • Параметры: нет
  • Возвращает: string"Server started"

StopServer()

Останавливает все сервисы.

  • Параметры: нет
  • Возвращает: string"Server stopped"

RestartAllServices()

Перезапускает все сервисы с перезагрузкой конфига и сертификатов.

  • Параметры: нет
  • Возвращает: string"All services restarted"

StartHTTPService() / StopHTTPService()

Управление HTTP сервером (порт 80).

  • Параметры: нет
  • Возвращает: string"HTTP started" / "HTTP stopped"

StartHTTPSService() / StopHTTPSService()

Управление HTTPS сервером (порт 443).

  • Параметры: нет
  • Возвращает: string"HTTPS started" / "HTTPS stopped"

StartMySQLService() / StopMySQLService()

Управление MySQL сервером.

  • Параметры: нет
  • Возвращает: string"MySQL started" / "MySQL stopped"

StartPHPService() / StopPHPService()

Управление PHP FastCGI пулом.

  • Параметры: нет
  • Возвращает: string"PHP started" / "PHP stopped"

EnableProxyService() / DisableProxyService()

Включение/отключение прокси-сервиса. Сохраняет изменение в конфиг.

  • Параметры: нет
  • Возвращает: string"Proxy enabled" / "Proxy disabled"

EnableACMEService() / DisableACMEService()

Включение/отключение ACME (Let's Encrypt). Сохраняет изменение в конфиг.

  • Параметры: нет
  • Возвращает: string"ACME enabled" / "ACME disabled"

🌐 Сайты

GetSitesList()

Получает список всех сайтов.

  • Параметры: нет
  • Возвращает: []SiteInfo
[
  {
    "name": "My Site",
    "host": "example.com",
    "alias": ["www.example.com"],
    "status": "active",
    "root_file": "index.html",
    "root_file_routing": false,
    "auto_create_ssl": true
  }
]

CreateNewSite(siteJSON)

Создаёт новый сайт. Создаёт папку, конфиг и шаблон index.html.

  • Параметры: siteJSON: string — JSON строка с данными SiteInfo
  • Возвращает: string"Site created successfully" или "Error: ..."

DeleteSite(host)

Удаляет сайт (папку и запись из конфига).

  • Параметры: host: string — домен сайта
  • Возвращает: string"Site deleted successfully" или "Error: ..."

UpdateSiteCache()

Обновляет кэш статусов сайтов.

  • Параметры: нет
  • Возвращает: string"Cache updated"

OpenSiteFolder(host)

Открывает папку сайта в проводнике Windows.

  • Параметры: host: string — домен сайта
  • Возвращает: string"Folder opened" или "Error: ..."

🔀 Прокси

GetProxyList()

Получает список всех прокси-сервисов.

  • Параметры: нет
  • Возвращает: []ProxyInfo
[
  {
    "enable": true,
    "external_domain": "app.example.com",
    "local_address": "127.0.0.1",
    "local_port": "3000",
    "service_https_use": false,
    "auto_https": true,
    "auto_create_ssl": true,
    "status": "active"
  }
]

🔒 Сертификаты

GetCertInfo(domain)

Получает информацию о сертификате для домена.

  • Параметры: domain: string
  • Возвращает: CertInfo
{
  "domain": "example.com",
  "issuer": "Let's Encrypt",
  "not_before": "2025-01-01T00:00:00Z",
  "not_after": "2025-03-31T00:00:00Z",
  "days_left": 60,
  "is_expired": false,
  "has_cert": true,
  "dns_names": ["example.com", "www.example.com"]
}

GetAllCertsInfo()

Получает информацию о всех сертификатах.

  • Параметры: нет
  • Возвращает: []CertInfo

ObtainSSLCertificate(domain)

Получает SSL сертификат через Let's Encrypt для указанного домена.

  • Параметры: domain: string
  • Возвращает: string"SSL certificate obtained successfully for ..." или "Error: ..."

ObtainAllSSLCertificates()

Получает сертификаты для всех доменов с флагом auto_create_ssl: true.

  • Параметры: нет
  • Возвращает: string"Completed: X success, Y errors"

UploadCertificate(host, certType, certDataBase64)

Загружает сертификат вручную.

  • Параметры:
    • host: string — домен
    • certType: string — тип файла ("cert" или "key")
    • certDataBase64: string — содержимое файла в Base64
  • Возвращает: string"Certificate uploaded successfully" или "Error: ..."

DeleteCertificate(domain)

Удаляет сертификат для домена.

  • Параметры: domain: string
  • Возвращает: string"Certificate deleted successfully" или "Error: ..."

ReloadSSLCertificates()

Перезагружает все SSL сертификаты.

  • Параметры: нет
  • Возвращает: string"SSL certificates reloaded"

⚙️ Конфигурация

GetConfig()

Возвращает текущую конфигурацию сервера.

  • Параметры: нет
  • Возвращает: object — полный объект конфигурации

SaveConfig(configJSON)

Сохраняет конфигурацию в файл и перезагружает.

  • Параметры: configJSON: string — JSON строка с конфигурацией
  • Возвращает: string"Config saved" или "Error: ..."

ReloadConfig()

Перезагружает конфигурацию из файла.

  • Параметры: нет
  • Возвращает: string"Config reloaded"

🛡️ vAccess

GetVAccessRules(host, isProxy)

Получает правила доступа для сайта или прокси.

  • Параметры:
    • host: string — домен
    • isProxy: booltrue для прокси, false для сайта
  • Возвращает: VAccessConfig
{
  "rules": [
    {
      "type": "allow",
      "type_file": [".php", ".html"],
      "path_access": ["/admin"],
      "ip_list": ["192.168.1.0/24"],
      "exceptions_dir": ["/public"],
      "url_error": "/403.html"
    }
  ]
}

SaveVAccessRules(host, isProxy, configJSON)

Сохраняет правила доступа.

  • Параметры:
    • host: string — домен
    • isProxy: booltrue для прокси, false для сайта
    • configJSON: string — JSON строка с VAccessConfig
  • Возвращает: string"vAccess saved" или "Error: ..."

📦 Типы данных

ServiceStatus

{
  "name":   "string",
  "status": "bool",
  "port":   "string",
  "info":   "string"
}

AllServicesStatus

{
  "http":  "ServiceStatus",
  "https": "ServiceStatus",
  "mysql": "ServiceStatus",
  "php":   "ServiceStatus",
  "proxy": "ServiceStatus"
}

SiteInfo

{
  "name":              "string",
  "host":              "string",
  "alias":             ["string"],
  "status":            "string",
  "root_file":         "string",
  "root_file_routing": "bool",
  "auto_create_ssl":   "bool"
}

ProxyInfo

{
  "enable":            "bool",
  "external_domain":   "string",
  "local_address":     "string",
  "local_port":        "string",
  "service_https_use": "bool",
  "auto_https":        "bool",
  "auto_create_ssl":   "bool",
  "status":            "string"
}

CertInfo

{
  "domain":     "string",
  "issuer":     "string",
  "not_before": "string",
  "not_after":  "string",
  "days_left":  "int",
  "is_expired": "bool",
  "has_cert":   "bool",
  "dns_names":  ["string"]
}

VAccessRule

{
  "type":           "string",
  "type_file":      ["string"],
  "path_access":    ["string"],
  "ip_list":        ["string"],
  "exceptions_dir": ["string"],
  "url_error":      "string"
}

VAccessConfig

{
  "rules": ["VAccessRule"]
}

📡 События (Wails Events)

service:changed

Эмитится каждые 500мс с текущими статусами сервисов.

  • Данные: AllServicesStatus

server:already_running

Эмитится при запуске, если vServer уже запущен в другом экземпляре.

  • Данные: booltrue