Skip to content

sv99/sms_gate

Repository files navigation

SMS Gate

travic-ci

Проект создан при прохождении курса от Mail.Ru Group Углубленное программирование на C/C++ на Stepic.org.

Особенности и задачи:

  1. Замена для сервисов отправки СМС. Web сервис позволяющий отправить СМС на базе RaspberryPi или аналога.

  2. Непосредственно для работы с модемом используем пакет smstools.

  3. Web интерфейс позволяющий отправить СМС через REST API с минимальной авторизацией или без нее.

  4. Простейшая веб админка для просмотра отправленных и принятых СМС.

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: Draw.io Domain Model Diagram

Первая диаграмма нарисована в StarUML - SMSGate_Domain_Model_step1.mdi: StarUML Domain Model Diagram

Дополнительные библиотеки

  1. Test framework google test

  2. Command line parser boost::program_options

  3. Small, safe and fast formatting library fmt

  4. Very fast, header only, C++ logging library spdlog

  5. Embedded Web Server mongoose

  6. Планируется JSON for Modern C++

Пакетный менеджер hunter

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