Axion Платформа Скачать
Documentation · Engine · 03

Конфигурация движка

Параметры инициализации, каталоги данных, хранилище секретов и политика permissions.

03 Конфигурация движка

Все параметры задаются через EngineOptions при инициализации. Движок создаёт и управляет каталогами самостоятельно.

3.1EngineOptions

ПолеТипОписание
data_dirPathBufКорневой каталог данных: пакеты, состояние, permissions, секреты
secretsOption<Secrets>Хранилище секретов. Если None — используется файловый backend в data_dir/secrets.json
use axion_engine::EngineOptions;
use axion_secrets::Secrets;
use std::path::Path;

let data_dir = Path::new("/home/user/.axion");
let options = EngineOptions {
    data_dir: data_dir.to_path_buf(),
    secrets: Some(my_secrets),
};

3.2Каталоги данных

Внутри data_dir Engine создаёт следующую структуру:

data_dir/
├── apps/              # распакованные .axn-пакеты
├── index.json         # индекс установленных приложений (metadata + state)
├── data/
│   └── {app_id}/
│       └── storage.json  # персистентное хранилище приложения
├── icons/             # сгенерированные .ico из icon.png
├── permissions.json   # политика permissions (default deny)
└── secrets.json       # защищённое хранилище (dev-режим)

При первом запуске создаётся data_dir и файл permissions.json (пустая политика).

3.3Секреты

Хранилище секретов предназначено для токенов, API-ключей и учётных данных. В dev-режиме используется файловый backend:

// Чтение и запись секретов
engine.secrets().set("github_token", "ghp_...")?;
let token = engine.secrets().get("github_token")?;
engine.secrets().remove("github_token")?;

В production-среде системное хранилище подключается через поле secrets в EngineOptions и может опираться на системные механизмы ОС (Keychain Windows/macOS, Secret Service Linux).

Важно. Секреты не доступны приложению напрямую через файловую систему. Доступ только через window.axion.secrets с проверкой capabilities secrets.read / secrets.write.

3.4Политика permissions

Политика хранится в permissions.json и определяет, какие capabilities разрешены/запрещены/ожидают подтверждения:

{
  "my_app": {
    "filesystem.read": "granted",
    "filesystem.write": "denied",
    "network.connect": "pending"
  }
}

Движок загружает политику при AxionEngine::init() и сохраняет при каждом grant() или revoke().

// Ручное управление (CLI или оболочка)
engine.grant("my_app", "filesystem.read", Some("workspace".into()));
engine.revoke("my_app", "network.connect");
Узнайте, как работает WebView
WebView