HiddenEngine v0.0.5 - Starter pack (Golos/Steem+SSL+Delay support)
Что такое 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