SMS Gate
Проект создан при прохождении курса от Mail.Ru Group Углубленное программирование на C/C++ на Stepic.org.
Особенности и задачи:
-
Замена для сервисов отправки СМС. Web сервис позволяющий отправить СМС на базе RaspberryPi или аналога.
-
Непосредственно для работы с модемом используем пакет smstools.
-
Web интерфейс позволяющий отправить СМС через REST API с минимальной авторизацией или без нее.
-
Простейшая веб админка для просмотра отправленных и принятых СМС.
Send SMS через USBmodem
Для отправки используем GSM модем и пакет smstools.
Отправка SMS с 3G/GSM модема Управляем сервером посредством СМС
Два варианта получения информации о входящей СМС - проверка каталога и получение события из демона, можно например организовать пользовательский сигнал.
На debian:
apt-get install smstools usb-modeswitch minicom
Актуальные параметры настройки для модема ZTE MF180
#/etc/smsd.conf
[MF180]
device = /dev/ttyUSB1
incoming = yes
baudrate = 115200
# for switching in the modem only mode
#init = at+zcdrun=8
init = at+cpms="me","me",""
# without this circling checking memory with errors
check_memory_method=2
Целевая платформа arm. Debian пакет smstool для arm не содержит скрипты sendsms. Они есть только в версии amd64, были найдены при поиске скрипта sendsms по содержимому всех пакетов. Эти скрипты не устанавливаются в систему, нужно копировать в ручную. Пришлось подставлять их в систему отдельно.
Админка
Планировал прицепить админку на базе Node.js, в рамках курса попробую сделать это дело на С++.
Встраиваемый HTTP server mongoose.
UML
Вторая диаграмма нарисована в draw.io:
Первая диаграмма нарисована в StarUML - SMSGate_Domain_Model_step1.mdi:
Дополнительные библиотеки
-
Test framework google test
-
Command line parser boost::program_options
-
Small, safe and fast formatting library fmt
-
Very fast, header only, C++ logging library spdlog
-
Embedded Web Server mongoose
-
Планируется JSON for Modern C++
Пакетный менеджер hunter
cmake -H. -B_builds -DHUNTER_STATUS_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug
cmake --build _builds
sonarqube
Одно из заданий проверка при помощи статического анализатора кода
Установил sonarqube, но для CPP плагин платный, бесплатно проверяют открытые проекты расположенные на GitHub.
Нужно авторизоваться на sonarqube.com через github и получить token. После этого можно проверять проект, результаты появятся в dashboard.
brew install sonar-runner
Кроме sonar-runner нужен build-wrapper от sonarqube. Загрузить https://sonarqube.com/static/cpp/build-wrapper-macosx-x86.zip, в настоящий момент возможна только ручная установка. Теперь можно проверить проект.
Глобальные настройки находятся в файле /usr/local/Cellar/sonar-runner/2.8/libexec/conf/sonar-runner.properties специфичные для проекта настройки в sonar-project.properties
# sonar-project.properties
# SonarQube server for open source projects
sonar.host.url=https://sonarqube.com
# token for github from sonarqube.com dashboard
sonar.login=3155f83fdb2ead3aa6706d3ff532b599987c4576
build-wrapper-macosx-x86 --out-dir bw-outputs cmake --build _builds
sonar-runner
https://sonarqube.com/dashboard/index/org.sonarqube:sms-gate-sq-scanner