# Changelog: Clear Config Plugin - ng-helpers Integration

**Дата обновления:** 29 января 2026 г.
**Версия ng-helpers:** v0.2.2
**Версия плагина:** 0.04
**PHP совместимость:** 7.0+

---

## Версия 0.04 - Добавление функционала бэкапа и восстановления

### Новые возможности

#### Создание резервных копий (backup)

- **Функция:** `backup()`
- **Описание:** Создаёт ZIP-архив всей папки `/engine/conf/`
- **Расположение:** `/engine/backups/conf_backup_YYYY-MM-DD_HH-mm-ss.zip`
- **Особенности:**
  - Рекурсивное архивирование всех файлов конфигурации
  - Отображение количества файлов и размера архива
  - Логирование операции с IP-адресом
  - Обработка ошибок с детальными сообщениями

#### Восстановление из резервных копий (restore)

- **Функции:** `restore()`, `restore_confirm()`
- **Описание:** Восстанавливает конфигурацию из выбранного архива
- **Безопасность:**
  - Двухэтапное подтверждение восстановления
  - Автоматическое создание бэкапа перед восстановлением (`conf_auto_before_restore_*.zip`)
  - Проверка существования файла бэкапа
  - Полное удаление старых файлов перед распаковкой
- **Логирование:**
  - Запись всех операций восстановления
  - IP tracking для аудита
  - Уведомления об успехе/ошибках

#### Интерфейс

- **Список доступных бэкапов:** Таблица с информацией о всех архивах
  - Имя файла
  - Размер (KB)
  - Дата создания
  - Кнопка "Восстановить" для каждого бэкапа
- **Улучшенные предупреждения:**
  - Красная карточка с мерами предосторожности
  - Кнопка создания бэкапа
  - Отображение путей к конфигурациям и бэкапам
  - Синяя карточка с рекомендациями по работе

### Технические детали

**Требования:**

- PHP расширение ZipArchive
- Права на запись в `/engine/backups/`

**Форматы файлов бэкапов:**

- Ручной бэкап: `conf_backup_YYYY-MM-DD_HH-mm-ss.zip`
- Автоматический (перед восстановлением): `conf_auto_before_restore_YYYY-MM-DD_HH-mm-ss.zip`

**Логирование операций бэкапа:**

```php
logger('Config backup created: ' . $filename . ', files=' . $count . ', size=' . $size . 'KB, IP=' . get_ip(), 'info', 'clear_config.log');
logger('Config restored from backup: ' . $filename . ', files=' . $count . ', IP=' . get_ip(), 'info', 'clear_config.log');
logger('Auto-backup created before restore: ' . $filename . ', IP=' . get_ip(), 'info', 'clear_config.log');
```

### Статистика новых функций

- **Новые action обработчики:** 3 (backup, restore, restore_confirm)
- **Новые функции:** 2 (backup, restore, restore_confirm)
- **Дополнительные переменные шаблона:** 3 (backup_path, backups, has_backups)
- **Логирование бэкапов:** 3 типа событий (создание, восстановление, авто-бэкап)

---

## Версия 0.03 - Первичная интеграция ng-helpers

### Добавленные функции

#### 1. logger() - Аудит удаления конфигураций

- **Использование:**
  ```php
  logger('Cleared active config for plugin: ' . sanitize($id, 'string') . ', IP=' . get_ip(), 'info', 'clear_config.log');
  logger('Clear config failed: missing id or conf parameter, IP=' . get_ip(), 'warning', 'clear_config.log');
  ```
- **Локации:** 6 точек логирования для всех типов удаления
  - active: удаление из активных плагинов
  - actions: удаление действий плагина
  - installed: удаление из установленных
  - libs: удаление библиотек
  - config: удаление конфигурации
  - urlcmd: удаление URL команд

- **Преимущества:**
  - Полный аудит изменений конфигурации плагинов
  - Отслеживание администраторов, удаляющих настройки
  - IP tracking для безопасности
  - Возможность восстановления по логам
  - Выявление случайных или злонамеренных удалений

#### 2. array_get() - Безопасный доступ к параметрам

- **Использование:**
  ```php
  switch (array_get($_REQUEST, 'action', '')) {
  $id = secure_html(convert(array_get($_REQUEST, 'id', '')));
  $conf = secure_html(convert(array_get($_REQUEST, 'conf', '')));
  ```
- **Локации:**
  - Строка 6: `$_REQUEST['action']` → `array_get($_REQUEST, 'action', '')`
  - Строка 94: `$_REQUEST['id']` → `array_get($_REQUEST, 'id', '')`
  - Строка 95: `$_REQUEST['conf']` → `array_get($_REQUEST, 'conf', '')`

- **Преимущества:**
  - Устранены undefined index notices
  - Безопасная обработка отсутствующих параметров
  - Защита от некорректных запросов

#### 3. sanitize() - Очистка данных для логов

- **Использование:**
  ```php
  logger('Cleared ... for plugin: ' . sanitize($id, 'string') . ...', 'info', 'clear_config.log');
  ```
- **Локации:** Все 6 точек логирования успешного удаления

- **Преимущества:**
  - Защита от log injection через имена плагинов
  - Безопасное логирование пользовательских данных
  - Предотвращение log poisoning

#### 4. get_ip() - Отслеживание источника изменений

- **Использование:**
  ```php
  logger('... IP=' . get_ip(), 'info', 'clear_config.log');
  ```
- **Локации:** Все 7 точек логирования (6 успешных + 1 ошибка)

- **Преимущества:**
  - Аудит изменений с IP-адресами
  - Выявление несанкционированного доступа
  - Поддержка прокси и CloudFlare
  - Географический анализ административных действий

---

## Применение

### Логирование операций

Каждое удаление конфигурации теперь логируется:

- **Уровень info:** успешные операции
- **Уровень warning:** ошибки (отсутствие параметров)
- **Формат:** `Cleared [type] config for plugin: [name], IP=[address]`

### Безопасность

- Все параметры запроса обрабатываются через array_get
- Имена плагинов очищаются через sanitize перед логированием
- IP-адреса записываются для всех операций

### Аудит

Лог-файл `clear_config.log` содержит:

- Дату и время удаления
- Тип удалённой конфигурации (active/actions/installed/libs/config/urlcmd)
- Имя плагина
- IP-адрес администратора

---

## Примеры логов

```
[2026-01-29 14:23:45] INFO: Cleared active config for plugin: old_plugin, IP=192.168.1.100
[2026-01-29 14:24:12] INFO: Cleared urlcmd config for plugin: deprecated_mod, IP=192.168.1.100
[2026-01-29 14:25:03] WARNING: Clear config failed: missing id or conf parameter, IP=192.168.1.50
```

---

## Статистика применения

- **logger()**: 7 вызовов (6 info + 1 warning)
- **array_get()**: 3 замены прямого доступа к $\_REQUEST
- **sanitize()**: 6 применений для имён плагинов
- **get_ip()**: 7 применений для аудита

**Покрытие безопасностью:** 100% операций удаления логируются с IP tracking
