Sms server ��� linux

SMS Сервер на базе ОС Linux

Эта статья будет интересна IT-администраторам и руководителям, кому интересна идея централизованого оповещения своих работников или клиентов о различных новостях или событиях. Стоит отметить, что используется исключительно открытое програмное обеспечение.

Предисловие

Написать статью побудило отсутствие подобного в русскоязычном интернете. По крайней мере поиски не привели к успеху и информацию приходилось собирать по крупицам из различных источников. Многие вещи были получены экспериментально, косвенно или вообще шестое чувство подсказало 🙂
Статья скорее всего будет пополняться и корректироваться по мере непосредственного использования решения. Также я планирую в рамках этой статьи разместить описание интерфейса для формировки очереди сообщений.
Также оговорюсь, что решение протестировано с использованием связи от Мегафон-Северный Кавказ. Допускаю, что другие операторы могут как-то иначе работать с теми же кодировками.

Постановка задачи

  • Адресаты могут отказаться отдальнейшей рассылки, отправив определенное слово на номер модема
  • Отправка сообщений кириллицей
  • Удобный интерфейс пользователя

Реализация

Из апаратной части был использован стандартный GPRS-модем с COM-портом. Для начала устанавливаем app-mobilephone/smstools3 из нашего оверлея. Пакет app-mobilephone/smstools из основного дерева портежей не позволяет обрабатывать длинные составные сообщения в UNICODE. Перед установкой пакет необходимо размаскировать в /etc/portage/package.keywords

Перед запуском демона обязательно создаем файл черного списка

Скрипт добавления адресатов в черный список(им сообщения отправляться не будут). Для его срабатывания необходимо отправить цифру 0 на номер модема.

Скрипт формиовки сообщений и постановки в очередь отправки. Здесь было уделено внимание формированию тела письма и указаню кодировки в шапке письма. Без явного указания кодировки тело не верно декодируется на телефоне. Для работы необходима утилита iconv.

Для формирования сообщений использовался интефейс написаный Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. с использованием библиотеки Qt.

Программа генерирует в определенной директории файлы для отправки. Скрипт генерации очереди перекодирует их в нужную кодировку и отдаёт для отправки демону smsd, который осуществляет рассылку через модем. Если адресат не хочет больше получать рассылку, то он отправляет 0 в ответ. Скрипт sms_event.sh добавляет его номер в файл blacklist. Больше ему сообщения отправляться не будут. Задача решена. Приятной работы 🙂

Статья размещена с разрешения автора , впервые статья была размещена тут .

Источник

Sms server ��� linux

Copy raw contents

Copy raw contents

SMS Server Tools 3 installation from source on Ubuntu

In this tutorial we will be using SMS Server Tools 3 version 3.1.15 source package.

Here we have 10 steps that you need to follow one step at a time and in order.

Please stop, do not continue to the next step, and post questions in playSMS Forum when you experienced difficulties or found error during following this manual.

Make sure you have root access

Install required packages for building SMS Server Tools 3 from source in Ubuntu

Get source package and extract it

Download smstools3-3.1.15.tar.gz from http://smstools3.kekekasvi.com and save it in /usr/local/src

Enter the extracted source codes directory and execute make to compile followed by installing smstools3

Create required directories

  • The directory names are case-sensitive

Setup SMS Server Tools 3 spool directories owner and permission

In this example your webserver’s user and group is www-data

You can also set files and folders permission to world-writable

Get example of smsd.conf and copy to /etc/

  • Before continue to the next step you have to take a look at /etc/smsd.conf and edit the file accordingly
  • You may need to adjust queues and modems options
  • Mostly you do not need to change other options but queues and modems
  • Do not change the file or directory paths
  • Modem name must be the same as SMSC name in playSMS
Читайте также:  Windows 10 usb boot device driver windows

Источник

Прием и отправка SMS в Linux

Прием и отправка SMS в Linux Для организации автоматизации приема и отправки SMS в Linux можно использовать пакет gnokii и подключенный к системе телефон. В простейшем случае можно использовать возможность консольной утилиты gnokii из пакета gnokii-cli, но при необходимости более сложной автоматизации имеет смысл воспользоваться Perl-модулем GSM::SMS или GSMD::Gnokii.

Устанавливаем gnokii, для Debian/Ubuntu:

где gnokii-cli — интерфейс командной строки, gnokii-smsd демон для работы с SMS, а xgnokii — GUI интерфейс. Последние два ставим на свое усмотрение.

Подключаем телефон через USB-порт. Смотрим в /var/log/messages к какому устройству осуществилась привязка (например, /dev/ttyACM0)

Создаем файл конфигурации /home/mc/.gnokiirc

где model — тип устройства: AT — для большинства телефонов, series40 — для телефонов Nokia с системой series40, gnapplet для старых телефонов Nokia Series60.

connection — тип соединения serial — USB/RS-232, irda — инфракрасный порт, bluetooth — Bluetooth.

port — порт, для USB — /dev/ttyACM0 или /dev/ttyUSB0, для Bluetooth указываем адрес устройства («aa:bb:cc:dd:ee:ff»).

Для USB-устройств также можно попробовать сочетание connection=dku2libusb и port = N, где N — номер устройства.

Проверяем поддерживается ли телефон:

Для мониторинга активности:

Возможности gnokii позволяют достаточно полно контролировать телефон, но нас интересует работа с SMS.

где тип_памяти: SM — для SIM-карты, ME — для внутренней памяти и MT для комбинированных хранилищ, IN — inbox, OU — outbox. Посмотреть какое хранилище используется на телефоне можно командой «gnokii —showsmsfolderstatus» старт — начальная позиция сообщения cтоп — конечная позиция сообщения, если не указать будет прочитано одно сообщение, если указать «end» будут выведены все сообщения до конечной позиции

Пример для вывода всех сохраненных SMS:

Для отправки SMS можно использовать команду:

Другой способ отправки: в комплекте с Perl-модулем SMS::Send поставляется утилита xpl-sender, которую можно использовать не только как пример для написания скриптов, но и отправлять через неё сообщения:

Вывод содержимого адресной книги:

Адресную книгу можно сохранить, а затем восстановить:

В состав gnokii входит демон SMSD, который позволяет организовать работу полноценного SMS-шлюза, на лету обрабатывающего входящие SMS. Для хранения отправляемых и получаемых сообщений SMSD может использовать СУБД MySQL, PostgreSQL (плагины gnokii-smsd-mysql и gnokii-smsd-pgsql) или файловое хранилище (—module file).

Ставим недостающие пакеты:

Создаем структуру БД, используя поставляемый в комплекте с gnokii-smsd-mysql пример:

в результате будут созданы три простые таблицы inbox, outbox и multipartinbox, структура которых имеет следующий вид:

где «-u» — имя пользователя БД, «-d» — имя базы, «-с» — хост, а «-m» — модуль хранения.

Отправив теперь SMS на подключенный к компьютеру телефон, smsd сразу перехватит его и запишет в базу.

выполнив «select * from inbox;» увидим примерно такое:

Для отправки сообщения достаточно добавить новую запись в таблицу outbox, smsd сразу его подхватит его и отправит. Например:

В заключение можно отметить, что smsd может работать без СУБД, используя файловое хранилище. Пример запуска:

Для отправки SMS в spool-директории нужно создать файл с любым именем в формате:

после успешной отправки файл будет удален.

Через опцию «-u» можно указать путь к скрипту, который будет выполняться при каждом получении SMS. Иначе входящие сообщения будут выводиться в стандартный выходной поток в формате «действие номер дата См. также

Читайте также:  Linux mint отличия версий

Источник

Приём и обработка SMS-сообщений на Linux-машине

В одном из наших свежих проектов команде разработчиков была поставлена задача собрать максимально реальные контактные данные о пользователях нашего сайта. Жаркое обсуждение правильных и неправильных форм регистрации, одно- и двушаговые, дополнение информации по мере пользования сайтом… Казалось поток идей не остановится. Однако ни одна из них не гарантировала, что в результате мы не получим кучу никчемных данных. Валидировать? Можно, но разве все предусмотришь? Активация учетной записи через почтовый ящик для его валидации? Но куча сервисов типа 10 Minute Mail сводят на нет эффект. К тому же, специфика проекта не позволяла слишком растягивать процесс регистрации. Решено было, что пользователь должен зайти, сделать своё дело, а потом уже активировать или нет свою учетную запись. В конце концов прозвучала фраза «А давайте активировать по SMS!». Поиск провайдеров, изучение прайс-листов и отказ от идеи взвалить обработку SMS на стороннюю контору… Стало понятно, что принимать и обрабатывать их придется самим.

Скромный опыт работы с VOIP/Asterisk и подбора оборудования для VOIP-шлюза имелся. Полез по старым ссылкам к китайским братьям искать SMS-gateway. Но во-первых время поджимало, во-вторых по опыту работы с ними с первого раза редко что-то выходит, поэтому стало интересно, сможет ли обычный USB GSM-модем справиться. И, забегая вперед, скажу что это решение было правильным. По крайней мере на данном этапе.

Настройка сервера

Итак, ко мне в руки попал модемчик Huawei E1750 (HSPA USB Stick) с контрактом. Первое с чем столкнется человек взявшийся за подобную задачу, это то, что все свежие модели GSM-модемов, в угоду пользователям Windows, опознаются в системе сначала как устройство хранения данных (SCSI CD-ROM). С него запускается autorun, который установит драйвера и переключит модем в режим модема (о как!). Сразу как я узнал это, я решил «приехали». Однако еще полчаса, и была найдена утилита usb_modeswitch, которая выполняет переключение режимов модема. Только после этого модем заработает по его прямому назначению. Запускается и настраивается она просто, тут писать особо нечего.

Ну, с богом! Информации к этому моменту уже было нарыто не сказать чтоб много, но достаточно, чтобы копать в нужном направлении. Существующие решения были отфильтрованы по признаку «работает как демон», в итоге остался один кандидат — SMS Server Tools. Нужно отметить, что оригинальный пакет уже не развивается, но его продолжение SMS Server Tools 3 не только развивается, но и отлично поддерживается своим создателем Mr. Keijo «Keke» Kasvi.

К сожалению, в моей любимой Gentoo не нашлось ebuild-а для свежей версии, последняя имеющаяся версия 2.2.20. Но, недолго погуглив, я нашел уже готовый ebuild для 3-й версии, который и скомпилировал после небольшой его правки. На данный момент у меня установлена и стабильно работает версия 3.1.14.

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

Структура файла конфигурации тоже понятна до безобразия (viva unix-way!). В начале файла прописываем глобальные настройки демона, а затем в секциях описываем настройки наших устройств:
# Глобальные настройки демона
.
.

# Наш модем и его настройки
[Huawei E1750 ]
.

# И еще одно устройство, если оно у нас есть, со своими настройками
[AnotherModem]
.

Глобальные настройки

Самый важный параметр, это какие устройства демон будет опрашивать на предмет наличия новых сообщений. Если у вас всего одно устройство, как у меня, просто пропишите devices = HuaweiE1750 , если их у Вас несколько, перечислите их тут через запятую.

Читайте также:  Linux set owner and group

Еще два важных параметра — это user = smsd и group = sms . Людям, знакомым с линукс, объяснять их значение не надо, я же ограничусь лишь напоминанием о правильных правах на все ресурсы, к которым демон должен иметь доступ. Ну и упомяну про такие инструкции, как pidfile = /var/run/smsd/smsd.pid , logfile = /var/log/smsd/smsd.log , значение которых тоже должно быть понятно. Кстати, на момент отладки рекомендую вставить в конфигурацию также инструкцию loglevel = 7 , это позволит Вам отслеживать, что же происходит внутри демона. В дальнейшем я выставил loglevel = 5 .

Настройки модема

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

Одной проблемой стало жгучее желание модема все время соскочить на новое устройство. Один раз он определялся как /dev/ttyUSB0 , в другой раз под другим номером. Такое положение дел не устраивало меня. Поэтому, я стал искать как писать udev правила для устройств. Однако, когда я уже был готов внести свои изменения, обнаружилось, что ebuild usb_modeswitch уже сделал это за меня добавив в систему файл /lib64/udev/rules.d/40-usb_modeswitch.rules , согласно которому в системе появлялся симлинк на девайс по адресу /dev/gsmmodem . Его мы и пропишем в конфигурации.

Второй проблемой стало зависание модема время от времени. К сожалению, вычитывать матчасть времени уже не было, да и гугл выдал такое количество вариантов, что пробовать их все не имело смысла. Поэтому, не особо рассчитывая на помощь, я пополз на форум smstools3. Каковы же были мои удивление и радость, когда keke ответил на мой пост через жалких 2-3 часа. Нет, точного решения он не давал, однако две строки которые он рекомендовал добавить в конфиг раз и навсегда избавили меня от зависаний. Для меня до сих пор остаётся загадкой, где брать значения для них, я не нашел технической документации по модему:
check_memory_method = 1
memory_start = 0

Ну, и третьей проблемой, из-за которой затевался весь сыр-бор, стало написание обработчика SMS. Для этого в конфиг была добавлена инструкция eventhandler = /usr/local/scripts/activate , внутри которого происходила отправка на сервер проекта запроса на активацию учетной записи. Скрипт, получает два параметра — тип события и файл сообщения. Выдергивает из него нужные нам данные, и отсылает на сервер.

Итого, получили вот такой короткий конфиг:
devices = Huawei
loglevel = 5

user = smsd
group = sms
logfile = /var/log/smsd/smsd.log
infofile = /var/run/smsd/smsd.running
pidfile = /var/run/smsd/smsd.pid

alarmlevel = 7
alarmhandler = /usr/local/scripts/activate/smsd-alarm

[Huawei]
device = /dev/gsmmodem
baudrate = 115200
pin = 1111
incoming = high
cmgl_value = 0
check_memory_method = 1
memory_start = 0
eventhandler = /usr/local/scripts/activate

Неожиданный profit

Изначально форма регистрации содержала поле Мобильный телефон — это было в требованиях проекта. Пришедшее SMS должно было быть отправлено с указанного телефона, и учетная запись с этим телефоном активировалась. Однако, как оказалось, пользователи становятся в тупик, когда им в сообщении ничего не надо писать. Сначала после регистрации появилась инструкция «Отправьте на номер 12345678 сообщение с текстом «F»». Потом родилась другая, гениальная как сейчас кажется, идея: из формы было убрано поле Мобильный телефон, после короткой регистрации (Имя, Фамилия, E-mail/login, Пароль), пользователю выдается код, который он должен отправить на указанный номер. По этому коду находится учетная запись, а телефон, с которого пришла СМС-ка заносится в профиль пользователя. Вуаля, у нас есть пользователь, есть его реальный телефон, есть возможность добавить кучу телефонов в свой профиль, и сменить номер телефона в профиле в случае утери старого, отправив еще одну СМС и удалив старый номер.

Источник

Оцените статью