Skip to content
/ qbot Public

Manage your stuff behind NATS and firewalls by public messengers, emails etc. Python

License

Notifications You must be signed in to change notification settings

qdrin/qbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Как его зовут: qbot Зачем он: - Контроль и управление удаленными/изолированными системами и устройствами без необходимости использовать "белые" IP-адреса и фронтенды в Интернет Что ему нужно: - Доступ к одному из общедоступных каналов: Telegram, ВКонтакте, Email, SMS, Telnet в локальной сети (список может быть пополнен) - Операционную систему Linux c systemd. Тестировался на Ubuntu 18.04, Raspbian. Должен неплохо жить и на других дистрибутивах - Python 3. С уверенностью можно сказать, что он работает на 3.5 и 3.6 - Несколько дополнительных пакетов Python Что он может: - Выполнять любые определенные Вами команды и возвращает результат их выполнения. - Посылать оповещения о значимых для Вас событиях. - Команды, события и оповещения могут быть заданы как в коде новых модулей, так и в YAML-конфигах - Принимать и присылать файлы - Принимать и ставить присланные Вами по рабочим каналам обновления, не требуя Вашего присутствия - Выдавать определяемый Вами help Особенности характера: - "Зациклен" на отказоустойчивости. Иногда в ущерб скорости и эффективности - Дает Вам полную свободу в редактировании своего поведения (определение команд, алертов) - При этом дает неплохие инструменты для реализации своих идей: модульная архитектура дает возможность на основе имеющихся создавать новые модули- коннекторы и модули-менеджеры, реализовывая новые каналы связи и новые модули управления всем, с чем способен работать Python 3.5+ - Единое поле команд и событий для всех каналов доступа - Безопасность (пока) не его конёк. Реализовано ограничение доступа по белому списку контактов, также можно пользоваться стандартными методами соответствующих мессенджеров. В любом случае, большая свобода предполагает большую ответственность и Вы сами имеете возможность создавать безопасные модули - Двойной механизм отката обновлений: при отсутствии подтверждения со стороны хозяина и при неудачном старте - Запуск в тестовой конфигурации при наличии в корневом каталоге файла isTest. Для тестирования оченно полезно - Пишет все в лог, находящийся home directory

Структура каталогов: ./ (work directory) - скрипты запуска/остановки службы systemd, log-файл, флаги апдейта и тестовой конфигурации backup - хранение бэкапов рабочих файлов (в основном, run), созданных при апдейтах или вручную download - Загрузки lib - библиотеки, необходимые для работы модулей управления. Ядру и коннекторам не нужен run - рабочие файлы (ядро, модули, базы данных модулей и т.д) run/conf - конфигурационные файлы tmp - pid-файл, прочие временные файлы (пока их нет, прочих) update - сюда выкладывать апдейты (затираются после применения) upload - для симметричности с download. Не используется ботом (пока?) Содержимое ./: - start_qbot.sh - старт-скрипт для systemd - stop_qbot.sh - стоп-скрипт для systemd - update_flad - флаг режима апдейта (цифра в файле показывает количество запусков qbot в этом режиме) - isTest - флаг тестовой конфигурации (содержимое неважно) Содержимое run/: - qbot.py - модуль ядра - qmessenger.py - базовый модуль для коннекторов - qvkmessenger.py - коннектор ВКонтакте - qsmsmessenger.py - коннектор SMS - qtelegrammessenger.py - коннектор Telegram (иногда требует соединения через tor) - qconsolemessenger.py - консольный коннектор (из локальной сети, порт 49049, если Вы не настроите другой) - qemailmessenger.py - Email коннектор - qbasemanager.py - базовый модуль для модулей управления - qrpimanager.py - реализация модуля управления для системы из 4 реле, 3 радиорозеток 433Мгц и двух датчиков DS18B20 на базе Raspberry Pi 3 - conf/qbot.yaml - конфиг ядра - conf/commands.yaml - описание команд - conf/qrpimanager.yaml - конфиг для qrpimanager.py с командами и алертами Архитектура: - Открытая модульная. Модули 2 видов: коннекторы и модули управления - Коннекторы реализованы в виде отдельных потоков threading.Thread с единой очередью команд. Интерфейс классов задан модулем qmessenger - Модули управления - в виде отдельных процессов multiprocessing, общение с главным модулем производится при помощи двух пар Pipe-объектов, один - для передачи команд и ответов на них, другой - для передачи событий сгенерированных самим модулем (алертов) - Коннекторы и модули - динамически подгружаемые, их состав определяет файлом конфигурации - Задача центрального модуля - принять команду от коннектора, проверить валидность отправителя, выполнить ее и отправить результат тем же транспортом. Также принять алерт от модуля(ей) управления, и отправить его прописанным контактам через дефолтные коннекторы

About

Manage your stuff behind NATS and firewalls by public messengers, emails etc. Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published