Содержание

Файл менеджер

🗺️ Общая архитектурная схема проекта

       [ ПОЛЬЗОВАТЕЛЬ / БОТ / ХАКЕР ]
                     │
                     ▼
  ┌────────────────────────────────────────────────────────┐
  │ 1. index.php (Главный шлюз приложения)                 │
  │    - Проверяет сессию                                  │
  │    - Если первый запуск ➔ перенаправляет на установку │
  └──────────────────┬─────────────────────────────────────┘
                     │
                     ▼
  ┌────────────────────────────────────────────────────────┐
  │ 2. backend/core/initializer.php (Динамический корень)  │
  │    - Вычисляет APP_ROOT через __DIR__                  │
  │    - Создает папки: config/, storage/, system_logs/    │
  └──────────────────┬─────────────────────────────────────┘
                     │
                     ▼
  ┌────────────────────────────────────────────────────────┐
  │ 3. backend/auth/check_ip.php (Первый рубеж защиты)     │
  │    - Сверяет IP с config/ip_blacklist.txt              │
  │    - Бан на месте: die()                               │
  └──────────────────┬─────────────────────────────────────┘
                     │
                     ├────────────────────────┐
                     ▼ (Если не авторизован)  ▼ (Если авторизован)
  ┌────────────────────────────────────────┐ ┌──────────────────────────────────────┐
  │ 4. ЭКРАН АВТОРИЗАЦИИ / ИНИЦИАЛИЗАЦИИ   │ │ 5. ГЛАВНЫЙ ИНТЕРФЕЙС (ДВА ОКНА)      │
  │    - Поля: Логин / Пароль              │ │                                      │
  │    - Скрытое поле: Honeypot (Ловушка)  │ │ ┌──────────────────────────────────┐ │
  │    - Восстановление: Строка из книги   │ │ │ ВЕРХНЕЕ ОКНО                     │ │
  │                                        │ │ │ [Имя / Путь] [Релизы ▼] [ZIP]    │ │
  │    backend/auth/validate_input.php     │ │ ├──────────────────────────────────┤ │
  │    - Вырезает XSS / Path Traversal     │ │ │ Список файлов релиза             │ │
  │                                        │ │ │ (Имя | Примечание | Дата/Время)  │ │
  │    backend/auth/login.php/ register.php│ │ └──────────────────────────────────┘ │
  │    - Хэширует пароли и текст книги     │ │ ┌──────────────────────────────────┐ │
  │    - Генерирует случайный 8-значный ID │ │ │ НИЖНЕЕ ОКНО                      │ │
  │    - Сортирует и перетасовывает базу   │ │ │ [README] [Лицензия] [Комментарий]│ │
  │                                        │ │ │ [Лог действий (для админа)]      │ │
  │                                        │ │ ├──────────────────────────────────┤ │
  │                                        │ │ │ Динамический текст (Fetch API)   │ │
  │                                        │ │ └──────────────────────────────────┘ │
  └────────────────────────────────────────┘ └──────────────────┬───────────────────┘
                                                                │
                                                                ▼ (Любое действие)
                                             ┌──────────────────────────────────────┐
                                             │ 6. backend/router.php                │
                                             │    - Принимает AJAX / Fetch          │
                                             │    - Ставит "Маяки" при затыках      │
                                             └──────────────────┬───────────────────┘
                                                                │
                                            ┌───────────────────┴───────────────────┐
                                            ▼ (Действия Админа)                     ▼ (Логи системы)
                               ┌─────────────────────────┐             ┌─────────────────────────┐
                               │ backend/actions/        │             │ storage/system_logs/    │
                               │ - list.php              │             │ - app_errors.log        │
                               │ - mkdir.php             │             │  (Маяки отладки для нас)│
                               │ - delete.php            │             │ - admins_activity.log   │
                               └─────────────────────────┘             └─────────────────────────┘

🧩 Карта маскировки данных в backend/config/

Поскольку мы закладываем параноидальную защиту, вот схема того, как скрыты наши конфигурационные файлы, к которым имеет доступ только серверный PHP:

backend/config/
│
├── salt.php           ───► [Возвращает: Секретный токен Супера (16 симв.)]
│                           [          Секретный токен Админа  (16 симв.)]
│                           (Хакер в коде видит только шум, роли замаскированы)
│
├── email.php          ───► [Возвращает: настоящий_email@супера.com]
│                           (Спрятан от парсеров, выводится только при ошибке админа)
│
├── ip_blacklist.txt   ───► [Список забаненных IP-адресов]
│
└── users.json         ───► [ База данных - Перетасованный массив ]
                            ┌──────────────────────────────────────────────┐
                            │ ID: 85910432 (Рандомный, отсортирован)       │
                            │ Пароль: $2y$10$... (Защищенный хэш)          │
                            │ Роль: x7R9wQ2pM4zL1vK8 (Случайный шум)       │
                            │ Книга: $2y$10$... (Хэш контрольной строки)   │
                            └──────────────────────────────────────────────┘

📂 Карта песочницы на диске (storage/)

Абсолютно безликая структура. Никаких названий компаний и имен. Только цифровые идентификаторы, сгенерированные нашей системой тасования.

storage/
│
├── 85910432/                 ───► Личная папка Супер-админа (или Главного Админа)
│   ├── .system/
│   │   └── activity.log      ───► Локальный лог действий на 100 строк (Ротация)
│   │
│   ├── Релиз_v1.0_Стабильный/ ───► Папка, которая отобразится в выпадающем списке
│   │   ├── app.exe           ───► Файл для скачивания
│   │   ├── readme.txt        ───► Текст для вкладки README
│   │   ├── license.txt       ───► Текст для вкладки Лицензия
│   │   ├── comment.txt       ───► Текст для вкладки Комментарий
│   │   └── .meta.json        ───► Кто, что и когда правил в этом релизе
│   │
│   └── Релиз_v2.0_Бета/
│
├── 10294811/                 ───► Личная папка Обычного Администратора №2
│   └── ...
│
└── system_logs/              ───► Доступ только для Токена Супер-админа
    ├── admins_activity.log   ───► Кто из админов что делал в системе
    └── app_errors.log        ───► Все наши технические маяки для отладки

Создаем файл backend/config/paths.php

Этот файл использует магические константы PHP и глобальные массивы сервера, чтобы автоматически подстроиться под любое окружение.



backend/config/salt.php

Этот файл будет создаваться автоматически при самом первом запуске приложения. Он сгенерирует случайные 16-значные строки для ролей, которые заменят стандартные понятия super_admin и admin. Ни хакер, ни сторонний наблюдатель, заглянув в код, не смогут понять, какими правами обладает пользователь. Шаг 1. Серверный генератор солей (backend/core/salt_generator.php)Этот скрипт проверяет, существует ли уже файл salt.php. Если файла нет, он использует современную и безопасную функцию random_bytes(), генерирует два уникальных токена ролей и упаковывает их в чистый PHP-формат, возвращающий массив.Создаем файл backend/core/salt_generator.php: