Skip to content

On1x/HiddenEngine

Repository files navigation

Что такое HiddenEngine?

Hidden Engine это легкий движок для сайтов и приложений специализированных для блокчейна Steem/Golos.

Статус разработки

Текущая версия: v0.0.5

GitHub: https://github.com/On1x/HiddenEngine

Веб-страница: https://goldvoice.club/@hiddenengine/

Что сделано в последнем релизе

Добавлена поддержка отложенных действий в очереди. Эта возможность внедрена и в интерфейс, теперь там можно указать delay в секундах.

Теперь не нужно запускать и настраивать nginx для проксирования запросов на определенный порт. HiddenEngine запускается на 80 и 443 порту с поддержкой SSL-сертификатов. При инсталяции генерируется новый сертификат с помощью openssl. Работает перенаправление с 80 порта на 443, чтобы исключить передачу незащищенного трафика в приложении. Пароль в json формате теперь не хранится (хранится только md5-hash).

Полностью внедрена поддержка быстрой установки всех зависимых пакетов через npm. Параллельная работа очередей Steem и Golos (нагрузка на процессор почти нулевая, возрастает только при трансляции транзакций в блокчейн).

Планы на будущее

Написать механизм автоматического курирования постов авторов из списка с указанием задержки во времени и силой голоса.

Отдельный модуль для делегатов: выполнение publish_feed, слежение за пропущенными блоками, интерфейс для запуска/паузы на подпись блоков.

Модуль E-mail оповещений, очередь писем.

Разработка

Легкая модульная подсистема позволяет расширять сайт или приложение отдельными файлами-модулями. Порог входа программистов снижен интуитивной структурой:

  • index.js — Основной каркас приложения, который подготавливает окружение, выполняет модуль и завершает соединение (по-умолчанию включена поддержка gzip-сжатия);
  • /class/ содержит классы:
    • global.js — предустановка переменных при запуске (логин и пароль по-умолчанию: admin);
    • template.js — легкий класс для html-шаблонов;
    • watchers.js — класс наблюдателя, который следит за выполнением операций из очереди;
  • /module/ содержит исполняемые модули:
    • prepare.js — выполняется автоматически для каждого запроса, содержит предопределенные настройки сайта и подготовительные операции (такие как проверка авторизации администратора);
    • login.js — форма авторизации;
    • logout.js — выход;
    • change-admin.js — смена пароля администратора;
    • accounts.js — управление базой аккаунтов;
    • watch-control.js — управление наблюдателями (steem/golos);
    • upvote-circle.js — управление связкой аккаунтов, добавление в очередь задач по upvote, флагам и голосованию за делегата;
    • index.js — главный файл доступный из корня сайта, содержит служебное меню;
  • /templates/ содержит html-шаблоны;
  • /ssl/ содержит ssl-сертификат (генерируется автоматически при первичной установке, если есть действующий SSL-сертификат, то bundle.crt следует записать в ssl.crt, а server.key в ssl.key);
  • /public/ — для публичных файлов (css/js/img);
  • /uploads/ — для загружаемых файлов.

Установка

HiddenEngine при установке запишется в автозапуск pm2, что позволит восстановить работу и состояние приложения после перезагрузки сервера.

cd ~
curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh
bash install_nvm.sh
source ~/.profile
nvm ls-remote
nvm install 8.5.0
node -v
sudo apt-get install nodejs-legacy
npm install npm -g
npm install pm2 -g
git clone https://github.com/On1x/HiddenEngine.git
cd HiddenEngine
apt-get install openssl
mkdir ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ssl/ssl.key -out ./ssl/ssl.crt -subj "/C=HE/ST=HE/L=HE/O=HE"
npm install

Управление состоянием приложения

npm stop
npm start
npm restart
pm2 monit hiddenengine