ChameleonLab: как мы создаём сайт для desktop-приложения на PHP без баз данных и CMS, с планами на Python API

Привет, Хабр! Мы — команда проекта ChameleonLab, и это история о том, как мы начали создавать полномасштабный образовательный центр по стеганографии и криптографии, отправной точкой которого стал наш desktop-инструмент.

По просьбам пользователей мы начали трансформацию в онлайн-сервис. Расскажем, как мы создали сайт на собственном микро-движке, который работает на JSON-файлах, почему отказались от популярных CMS и как планируем переносить сложную логику с Python в веб.

От Desktop-приложения к образовательному центру

ChameleonLab — это наша попытка сделать сложные концепции стеганографии доступными для всех. Это desktop-приложение для Windows и macOS, которое позволяет не просто прятать данные в файлы (от картинок до DOCX), но и анализировать их, визуализировать LSB-слои, оценивать стойкость паролей и даже слушать музыку, «зашитую» в изображение.

Программа "ChameleonLab"

Программа «ChameleonLab»

Проект тепло встретили, но почти сразу появился главный запрос от пользователей: «А будет ли онлайн-версия?». Люди хотели иметь доступ к инструментам без установки ПО. Это стало для нас главной мотивацией для создания сайта chalab.ru, который должен стать не просто визиткой, а полноценным образовательным центром.

Сайт проекта "ChameleonLab"

Сайт проекта «ChameleonLab»

Технологии: свой PHP-движок на JSON-файлах

Мы сразу отказались от готовых CMS.

Почему не WordPress или любая другая CMS?

  1. Безопасность. Из нашего опыта разработки, взлом CMS — это просто бич. Из-за огромной кодовой базы и популярности, они становятся главной целью для атак. Сайты постоянно заражают вирусами через уязвимости в плагинах и темах. Наш подход с минималистичным движком и отсутствием базы данных на порядок снижает поверхность атаки.
  2. Чистота кода. Готовые CMS несут в себе тонны унаследованного кода, тысячи настроек и функций, из которых нам понадобилось бы не больше 5%. Это лишний балласт, который замедляет сайт и усложняет поддержку.
  3. Отказоустойчивость. Сайт, работающий на файлах, практически невозможно «положить» высокой нагрузкой. У него нет узкого горлышка в виде лимита подключений к базе данных. Каждый запрос обрабатывается независимо, что делает систему крайне стабильной. Такой сайт будет работать даже на самом дешевом хостинге. А его восстановление после сбоя — это простое копирование файлов, без необходимости возиться с дампами баз данных.

Наш собственный микро-движок на PHP построен на нескольких ключевых принципах:

1. Уникальная файловая структура

Весь контент сайта — статьи блога, статические страницы, категории и даже переводы — хранится в JSON-файлах. Это наша единственная «база данных».

  • /articles/ — содержит .json файлы для каждой статьи.
  • /pages/.json файлы для статичных страниц, таких как документация.
  • /data/ — здесь лежат категории, счётчики и другие глобальные данные.
  • /lang/ — файлы с переводами интерфейса.

Уникальность подхода в том, что для добавления новой статьи нам даже не нужна админ-панель (хотя она и есть для удобства). Достаточно просто создать новый JSON-файл с нужной структурой и загрузить его в папку /articles/ по FTP. Сайт тут же его «подхватит» и отобразит.

2. Мультиязычность «на лету»

Аналитика показала, что большинство пользователей нашего приложения — англоязычная аудитория. Поэтому мультиязычность стала для нас приоритетом №1. Мы создали систему, которая позволяет переключать язык сайта «на лету», без перезагрузки и сложных запросов.

Тексты интерфейса хранятся в файлах lang/ru.php и lang/en.php. А контент самих статей структурирован по языкам внутри JSON-файлов.

Главное преимущество такой технологии в том, что для добавления нового языка (например, немецкого или испанского) нам не нужно менять код движка. Достаточно просто добавить файлы lang/de.php, lang/es.php и перевести текстовое содержимое в JSON-файлах. Это позволяет в кратчайшие сроки сделать сайт по-настоящему международным.

3. Как это работает: фрагмент кода

Вот упрощенный пример того, как наш движок загружает статью. Всё предельно просто:

// Получаем ID статьи и язык
$article_id = $_GET['id'];
$lang = $_SESSION['lang'] ?? 'ru';

// Читаем нужный JSON-файл
$json_data = file_get_contents("articles/{$article_id}.json");
$article = json_decode($json_data, true);

// Извлекаем заголовок и контент для нужного языка
$title = $article[$lang]['title'];
$content = $article[$lang]['content'];

// ...дальше просто выводим переменные в HTML-шаблон

Никаких сложных запросов, ORM или кеширования. Просто и быстро.

4. SEO-функционал «из коробки»

Мы сразу реализовали несколько важных SEO-инструментов:

  • Генератор sitemap.xml: Скрипт, который автоматически сканирует папки с контентом и создает карту сайта для обеих языковых версий.
  • RSS-ленты: Файл rss.php на лету создает RSS-поток для русского и английского языков (rss.php?lang=en).
  • robots.txt: Правильно настроен для поисковиков.

Планы на будущее: Философия переноса в веб

Наша конечная цель — не просто сайт, а полноценное веб-приложение. Desktop-версия ChameleonLab написана на Python, и мы не собираемся переписывать всю сложную логику анализа изображений и криптографии на PHP. Наша философия — использовать правильный инструмент для каждой задачи.

Поэтому мы выбрали следующий путь:

  1. Создание Web API на Python. Мы возьмем ключевые модули из нашего desktop-приложения и «обернем» их в API с помощью легкого фреймворка, такого как Flask. Этот API будет принимать файл, выполнять над ним операции и возвращать результат в формате JSON.
  2. Интерактивный фронтенд. Наш существующий PHP-сайт будет дополнен JavaScript-компонентами. Пользователь будет загружать файл через интерфейс сайта, JavaScript будет отправлять его на наш Python API, получать результат и наглядно отображать его на странице.

Такой подход позволит нам сохранить всю мощь и производительность Python для сложных вычислений, используя при этом наш легкий PHP-движок для отображения контента. В нашем блоге мы обязательно опубликуем серию статей о технических деталях этого процесса, где подробно расскажем о создании API на Flask и его интеграции с сайтом.

Заключение

ChameleonLab 1.5 — это результат нашего стремления создать интуитивно понятный и мощный инструмент для работы с цифровыми файлами. Мы верим, что он будет полезен как профессионалам в области информационной безопасности, так и энтузиастам, которые только начинают свой путь в увлекательном мире стеганографии.

Спасибо, что остаетесь с нами. Мы постоянно получаем идеи и сообщения об ошибках в нашем Telegram-канале, что позволяет нам постоянно улучшать продукт.

Последнюю версию программы ChameleonLab для Windows и macOS можно скачать на нашем официальном сайте. Программа также доступна на популярных торрент-трекерах.

 

Источник: https://habr.com/ru/articles/948956/

Опубликовано в категории: Статьи