Программные проекты

Параллельно с инфраструктурными активностями, у меня есть личные PET проекты программного уровня.
На текущий момент я имею некоторый опыт в части языка TypeScript (JS) и WEB фреймворка Vue под UI.
Немного личных проектов под железо на C и C++, но пока они не стоят внимания.

Какие-то проекты имеют публичное размещение, какие-то приватное.

Тут я просто хотел бы поделиться своими наработками. Возможно кому-то они окажутся полезными, как с точки зрения кода, так и с точки зрения идей или простой эксплуатации под свои нужды.

Ни на что не претендую, какой-либо специализации в этом не имею, все на уровне любительского использования. Воспринимаю конструктивную критику.

Больше информации можно найти в README.md файлах проектов.

Gost NR — Голосовое управление умным домом через Node-RED и Яндекс Алису

Главная суть это управлять голосом устройствами, которые напрямую в Яндекс Умный Дом прокинуть либо невозможно, либо вы заядлый приверженец приоритета локального умного дома.

Крупный личный проект нескольких лет вынашивания, который начинался с попыток написать сервер на базе Typescript, который в итоге получилось реализовать полноценно уже на базе Python.

Под капотом сервер на котором размещены:

  • firewall ufw — помимо firewall хостера
  • nginx — как proxy, лимитер, балансировщик простых запросов
  • Nats.io — простой брокер, нужен для постоянного обмена между клиентскими модулями в Node-RED и сервером. Умеет в кластер и внешние механизмы авторизации.
  • База MySQL — хранимые процедуры, партиционирование и прочее.
  • Приложение авторизации на Python — занимается обработкой запросов авторизации приходящих на брокер и выдает права и ограничивает клиентов между собой.
  • Главное приложение на Python занимающееся обработкой авторизаций, сообщений, обменом с Яндексом и persisting.
  • certbot — для апдейта сертификатов

На капоте, отдельный модуль для Node-RED:

Собственно основной модуль через который авторизуемся и взаимодействуем с яндексом через сервер

https://www.npmjs.com/package/@gregory-gost/node-red-contrib-gost-yandex-alice

Ну и сам сайт https://iot.gregory-gost.ru/

Также в процессе была написана заглушка эмулирующая Yandex сторону. Созданы и проведены нагрузочные и E2E тесты.

Version Tagger

GitHub Action для поддержки версионности в репозитории для собственных проектов.

Попробовал использовать различные уже существующие из маркетплейса. Столкнулся с рядом нестыковок, которые не могли покрыть мои хотелки.
Написал свой, используя готовый TypeScript шаблон проекта от команды GitHub

https://github.com/marketplace/actions/version-tagger

https://github.com/GregoryGost/version-tagger

Transmission Daemon torrent processing

Отдельные приложения для обработки файлов фильмов и сериалов после их скачивания.

Имеют судьбу развития из простого Bash скрипта до Node.JS приложения.
Создавалось под эгидой статьи Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE

Кстати, как альтернативное решение, можно использовать приложения sonarr и radarr

Transmission Torrent Done

Данное приложение производит обработку файла после завершения скачивания. Распределяет файлы по папкам исходя из их именования.

https://github.com/GregoryGost/transmission-torrentdone

Transmission Torrent Clear

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

https://github.com/GregoryGost/transmission-torrentclear

GOST RDPR — Domain resolver

Приложение на Python для преобразования доменов в IP адреса и дальнейшего добавления их в firewall-list и routing таблицу в маршрутизаторах MikroTik на базе RouterOS v7. В последствии эти адреса могут транслироваться по BGP на конечные устройства в их таблицы маршрутизации.

Является HTTP REST API приложением.
Поддерживает OpenAPI документацию доступную по WEB, метрики prometheus для мониторинга.

Доступные методы

  • Home — проверка состояния
  • DNS Servers — работа с DNS серверами, которые будут применяться для получения IP адресов доменов
  • Domains Lists — работа со списками доменов. Добавляются ссылки на файлы, которые потом скачиваются и все найденные в них домены попадают в базу.
  • Domains — работа с доменами. Можно отслеживать состояние добавленных доменов, добавлять новые, по одному или пачкой.
  • IP Address Lists — работа со списками IP адресов. Добавляются ссылки на файлы, которые потом скачиваются и все найденные в них IP адреса попадают в базу.
  • IP address — работа с IP адресами. Можно отслеживать состояние добавленных IP адресов, добавлять новые, по одному или пачкой.
  • RoS Configs — работа с целевыми устройствами, на которые затем адресуются IP адреса в базе приложения.
  • Commands — запуск команд. Запуск процессов загрузки списков доменов или списков IP адресов, процесса резолвинга доменов, процесса обновления в RouterOS.

Использует базу данных SQLite

https://github.com/GregoryGost/gost-rdpr

Размещен на Docker Hub — https://hub.docker.com/r/gregorygost/gost-rdpr

Калькулятор крафт ресурсов для игры Dune Awakening

https://dunecalc.ru

Фанатский статический русскоязычный калькулятор крафта для онлайн игры Dune: Awakening.

Калькулятор позволяет собрать несколько целей, выбрать профили станций, учесть имеющиеся ресурсы и получить дерево изготовления с общим списком материалов. План сохраняется локально в IndexedDB; все данные обрабатываются исключительно в браузере. Backend и сторонние runtime API не используются.

Используемый стек: Vue 3, TypeScript, Vite, Vue Router, Pinia, VueUse, Tailwind CSS 4 и SCSS.

GREGORY GOST