Проект создан при прохождении курса от Mail.Ru Group Углубленное программирование на C/C++ на Stepic.org.
Особенности и задачи:
-
Замена для сервисов отправки СМС. Web сервис позволяющий отправить СМС на базе RaspberryPi или аналога.
-
Непосредственно для работы с модемом используем пакет smstools.
-
Web интерфейс позволяющий отправить СМС через REST API с минимальной авторизацией или без нее.
-
Простейшая веб админка для просмотра отправленных и принятых СМС.
Для отправки используем 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.
Вторая диаграмма нарисована в 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++
cmake -H. -B_builds -DHUNTER_STATUS_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug
cmake --build _builds
Одно из заданий проверка при помощи статического анализатора кода
Установил 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