SMSD: SNPP, SMPP, EMI/UCP, SMS сервер



DOWNLOAD SMSD v.3.39
  
  • Изменен алгоритм обработки сокетов.
  • Проведена оптимизация кода с целью снижения ресурсоемкости.
Все права собственности принадлежат:Igor Vaskov
Идея и алгоритм:Igor Vaskov
Протокол SNPP:Allan Gwinn
Расширения протокола:Igor Vaskov


Описание

Данная программа представляет собой комбинацию 3-х комуникационных серверов:

В комплект опционально может входить модуль, позволяющий отправлять SMS и пейджинговые сообщения, принятые по протоколам SNPP, SMPP и полученные от систем NUCLON, CRUSO, GRANIT через подключенный к компьютеру мобильный телефон. Обрабатываемые программой информационные потоки и интерфейсы представлены на схеме:

На схеме видно, что сервер может получать сообщения через сеть интернет (IP) по протоколам SMPP и SNPP, а также непосредственно от систем персонального радиовызова (СПРВ) через локальную вычислительную сеть (ЛВС).

Дальнейшая обработка зависит от параметра Зона (COVE). Сервер может отправить сообщение в эфир через сотовый телефон, подключенный к компьютеру, связаться с СПРВ и передать сообщение в систему для излучения через пейджинговый передатчик или отправки по каналам роуминга или отправить его через интернет провайдеру сотовой телефонии на CMC-центр по протоколу SMPP.

Таким образом SMSD может выполнять большинство функции Вашей СПРВ, связанных с SMS гейтованием и, возможно, роумингом. С точки зрения провайдера сотовой телефонии SMSD - это еще одна базовая станция. Поскольку протокол SMPP двустороннй, можно построить полноценный SMS-гейт сотовой сети с пейджинговой. Тогда владелец сотового телефона сможет отправлять сообщение на пейджер не прибегая к услугам операторской, а просто отправив SMS-сообщение.

Интерфейсная часть не задействует функций графической подсистемы, таким образом запуск приложения может быть осуществлен в detach режиме.
Принятые сообщения складываются в ниже указанном текстовом формате в заданный Вами каталог и доступны для обработки любыми средствами, включая Rexx. В том случае, если требуется интеграция с уже установленной пейджинговой системой Вы можете обратиться к автору за поддержкой.

При запуске на текстовый экран будет выдана информация о считанных настройках системы, а в процессе работы по мере осуществления соединений - информация об установленных связях с IP адресами удаленных систем. Выход из программы может быть осуществлен комбинацией Ctrl-X. Программа корректно обрабатывает большинство ошибочных ситуаций. Для повышения надежности автопилотных систем рекомендуется перевести OS/2 систему в режим PROTECT ONLY и написать *.CMD файл вызывающий SNPP Server по кругу.

Требования к аппаратуре

Минимальные 486DX2-66 16Mb RAM. Оптимальные Pentium 266 32Mb RAM. Желательно OS/2 сконфигурировать для работы на HPFS диске. База данных может занимать на диске довольно много места по 42 байта на один номер.

Установка

Программа пользуется переменной окружения ETC. Перед началом работы, проверьте установлена ли эта переменная и в какое значение. Обязательно должна быть инсталлирована поддержка TCPIP. После чего необходимо в каталоге, указанном в переменной ETC, создать следующие файлы:
SMSD.PWD - пароли на сессию
SMSD.CFG - конфигурация сервера (весьма запутанная)
SMSD.ID - база данных с возможностью алиаса (не обязателен)

Структура файлов
Содержимое файлаПримечание
SMSD.PWD
Login1 Password1 0 127.0.0.1 866 1000 7
Login2 Password2 0 * 1251 1000 0

Для обычных юзеров.

  • 0 - уровень доступа (от 0 до 9).
  • 127.0.0.1 - IP с которого разрешен доступ с этой учетной записью. Если - "*" , то с любого.
  • 866 - кодировка сообщений по умолчанию для этой учетной записи.
  • 1000 - лимит сообщений за 1 сеанс связи.
  • 7 - Зона (Cove) по умолчанию для этой учетной записи.
Login3 Password3 9 127.0.0.1 866 1000 0

Для администратора

SMSD.CFG
ROBOT 001
ROBOT 002
...
ROBOT 999

Позволяет использовать в сети несколько роботов по приему сообщений. Код 3 знака.

SWAPDIR X:\NOW\

До версии 1.02. Указание куда складывать полученное, если не задана, берется из коммандной строки запуска. В версии 1.03 и старше перенесена в файл PAGEINT.CFG.

LOCALBASE ON
LOCALBASE OFF

Использовать или не использовать базу данных из SMSD.ID.

TYPEIDCHECK LOCALBASEONLY
TYPEIDCHECK REQUESTONLY
TYPEIDCHECK LOCALBASEBEFOREREQUEST
TYPEIDCHECK REQUESTBEFORELOCALBASE

В какой последовательности обращаться к локальной и глобальной базам данных (поддержка глобальной базы возможна только для систем PageLink и GRANIT и только в полной версии)

NOTINBASES ACCEPT
NOTINBASES REJECT

Что делать если IDPage в базе не найден (подчеркиваю именно не найден, а не не активен). ACCEPT - пейджер будет считаться активным (запросы будут обработаны).

LOGLEVEL 1
LOGLEVEL 2
LOGLEVEL 3

Уровень детализации LOG-a, который вы найдете в %ETC%\SMSD.LOG

MESSAGEFLAGNAME X:\NOW\!MSG!.FLG

В версии 1.02 введена переменная, которая позволяет указать путь и имя флага, который будет создаваться при появлении в директории указанной в SWAPDIR файла содержащего сообщение. Если переменная не инициализирована, флаг при приеме сообщений не создается. В версии 1.03 и старше перенесена в файл PAGEINT.CFG.

SMSCOVE1 21
SMSCOVE2 22
SMSCOVE3 23
SMSCOVE4 24

Версия 1.12 и далее. Зоны (COVErage) , при указании которых программа будет отправлять сообщения через подключенный сотовый телефон.

SMSCCOVE1 31
SMSCCOVE2 32
SMSCCOVE3 33
SMSCCOVE4 34

Версия 1.14 и далее. Зоны (COVErage) , при указании которых программа будет отправлять сообщения через SMS-центр провайдера сотовой связи по протоколу SMPP.

MYSQLIP
Версия 3.28 и далее. IP адрес сервера MySQL.
MYSQLOGIN
Версия 3.28 и далее. Логин сервера MySQL.
MYSQLPASSWORD
Версия 3.28 и далее. Пароль сервера MySQL.
DLLSMS32LOAD YES
DLLSMS32LOAD NO
Версия 3.30 и далее. Включение/отключение загрузки SMS32.DLL. При загрузке DLL в память автоматически занимается COM-порт, указанный в конфигурации DLL.
SENDSNPPSERVICE YES
SENDSNPPSERVICE NO
Версия 3.30 и далее. Запускать/не запускать асинхронный сервис отправки сообщений по протоколу SNPP. Для всех асинхронных серверов обязательно наличие подключения к базе MySQL.
SENDSMSDIRECTSERVICE YES
SENDSMSDIRECTSERVICE NO
Версия 3.30 и далее. Запускать/не запускать асинхронный сервис отправки SMS сообщений через сотовый телефон подключенный к компьютеру. Для всех асинхронных серверов обязательно наличие подключения к базе MySQL.
SMPPDEFCOVE 7
Версия 3.32 и далее. Зона по умолчанию для сообщений, пришедших по SMPP.
UCPDEFCOVE 7
Версия 3.32 и далее. Зона по умолчанию для сообщений, пришедших по UCP.
!!!ВНИМАНИЕ!!!
Начиная с версии 1.03 введен новый конфигурационный файл, где содержатся
настройки необходимые для взаимодействия с Вашей пейджинговой системой:
PAGEINT.CFG
SWAPDIR X:\NOW\

Указание куда складывать полученное, если не задана берется из коммандной строки запуска.

MESSAGEFLAGNAME X:\NOW\!MSG!.FLG

Позволяет указать путь и имя флага, который будет создаваться при появлении в директории указанной в SWAPDIR файла содержащего сообщение. Если переменная не инициализирована, флаг при приеме сообщений не создается.

MESSAGECMD X:\NOW\MYCMD.CMD

Начиная с версии 1.06 (весия PAGEINT.DLL Page-Link Extended Interface v.0.02) добавлена переменная, которая позволяет указать имя и расположение коммандного файла, который будет запущен при приеме сообщения после формирования файла с сообщением. В качестве аргумента первым параметром передается путь и имя рабочего файла.

CAPSWAPDIR X:\NUCLON\TNPP\OUT\

Версия 1.09 и далее. Куда складывать сообщения с указанием CapCode и всей необходимой для передачи информации (передача сообщений по CapCode, а не по номеру пейджера). Каталог связи с СПРВ.

INPUTDIR X:\NUCLON\TNPP\IN\

Версия 1.09 и далее. Где искать сообщения предназначенные на роуминг. Каталог связи с СПРВ.

SMSD.ID
1            PINCODE      A 1
10                        A 10
100                       A 100
1000                      A 1000
10000                     A 10000
10001                     A 10001
10002                     A 10002
10003                     A 10003
10009                     A 10009
1001         PINCODE      A 1001
10010                     A 10010
10011                     A 10011
10012                     A 10012
10013                     A 10013
10019                     A 10019
1002                      A 1002
10020                     A 10020
10021                     A 10021
1003                      A 1003

Строки отсортированы по первому полю по возрастанию, но не как числа, а именно как строки. В комплекте имеется база построенная по этому принципу на 1 тыс. Абонентов. С 1-ой позиции идет номер пейджера может быть алфавитно-цифровой 12 позиций. C 14-ой позиции идет индивидуальный пароль абонента на отправку сообщений 12 позиций. 27-ая позиция признак активности A - активен, любое другое - не активен, пробел не следует употреблять. С 29 позиции номер пейджера, используемый в вашей системе 12 символов. Этот номер будет подставлен в выходной файл при приеме сообщения на номер указанный в начале строки. Таким образом возможно перевести алфавитно-цифровые номера, используемые при обращении к серверу SNPP, в цифровые, принятые в вашей системе. Все строки имеют длину 40 символов и оканчиваются стандартной последовательнотью CRLF.


После выпонения всех указанных действий - должно работать.

Руководство пользователя(очень краткое).

  1. Прочитайте RFC1645.
  2. Дополнительные комманды:
    КоммандаОписание
    REPEat [n {m}]Повторить сообщение n раз интервал m минут.
    RELOadПеречитать SMSD.PWD (только для администратора).
    GETU [Login]Дать информацию об пользователе (только для администратора).
    ОстальныеНе документировано :)
  3. Пользуйтесь HELP [command_name]
  4. Формат создаваемых файлов(в директории SWAPDIR) - соответсвует формату обмена через Gate программы Nuclon разработчик PageLink.
    &112 27-01-00 12:10:15 1 5 0 PINCODE * * userid password 09-04-99 17:30:13 This is message.
    |--- -------- -------- | | | ------- --- ------ -------- ----------------- ---------------
    | |      |        |    | | | |       |   |      |        |                 |
    | |      |        |    | | | |       |   |      |        |                 Cообщение 
    | |      |        |    | | | |       |   |      |        |                 до CRLF.
    | |      |        |    | | | |       |   |      |        Дата и время приема сообщения.
    | |      |        |    | | | |       |   |      Пароль отправителя.
    | |      |        |    | | | |       |   Логин отправителя.
    | |      |        |    | | | |       Технические параметры
    | |      |        |    | | | |       (v. 1.03+ IP и Host передающей стороны).
    | |      |        |    | | | Индивидуальный пароль на отправку сообщения для этого пейджера.
    | |      |        |    | | Зона отправки.
    | |      |        |    | Интервал в минутах.
    | |      |        |    Сколько раз повтрорить.
    | |      |        Время отправки сообщения.
    | |      Дата отправки сообщения.
    | Номер пейджера.
    Признак формата. Всегда &.
    
    Неиспользуемые и пустые поля могут быть заменены символом *
    

    Если чего-либо в формате вы не поняли, - свяжитесь с автором (как связаться - ниже).

  5. Начиная с версии PageInt.DLL Page-Link Extended Interface 0.02 после формирования файла с сообщением есть возможность запустить коммандный файл OS/2. В качестве параметра ему передается путь и имя файла-сообщения.
    Примечание 1. Программа не ждет завершения работы коммандного файла. Если вам необходимо знать результат обработки, свяжитесь с автором и приобретите коммерческую версию программы в которой необходимые механизмы присутствуют.
    Примечание 2. Если вы используете возможность запуска коммандных файлов, автор не несет ответственности за надежность и стабильность работы вашей ситемы.
  6. Позже, надеюсь, руководство будет расширено.

Ограничения не коммерческой версии.
  1. Только 3 пары login-password.
  2. Не более 3-х одновременных пользователей on-line.
  3. Длина сообщения 80 символов.
  4. Ограничения в обработке взаимодействия с программой Nuclon (PageLink Corp.).
Download

Свободно распространяется не зарегистрированная OS/2-версия SMSD. Для регистрации программы свяжитесь с автором Igor Vaskov.

А что еще есть?

Есть программа-клиент к серверу SNPP (WIN16-версия, OS/2-версия) совмещающая в себе возможность отправлять сообщения, сканируя определенную директорию на предмет поступления файлов, содержащих текст, а также работать как полноценное рабочее место орератора. WIN16-версия работает под всем семейством Windows, начиная от 3.1.
Есть DLL под OS/2 реализующая SNPP V.1 и V.2, а также небольшая тестовая утилита к ней, позволяющая послать текстовый файл на пейджер из коммандной строки. Незаменимая вещь для автоматизаторов, интеграторов и админов крупных серверов.

Bug Fix and News
! - нововведения;
# - исправленные баги;
% - изменения.

Версия 1.02
! Появился флаг наличия сообщения.
# Ошибка хелпа по комманде Hold
# Ошибка в реализации комманды REPEat.

Версия 1.03
! Появилась функция автоматической перезагрузки приложения в случае
  необработанной ошибки. Многократно повышает живучесть автопилотной системы.
! Появилась поддержка национальных кодовых страниц (Win-1251, KOI-8 & etc.).
  В некоммерческой версии возможно использовать только 2 первые в порядке
  написания в файле SMSD.cp. Формат файла:
   <Последовательность_символов_для_этой_кодовой_страницы>
  Файл должен находиться в директории заданной в переменной ETC.
  Преобразование идет всегда к первой строке,т.е. если у вас основная рабочая
  кодирока DOS866 необходимо первой поместить строку именно с этим набором
  символов.
! Добавилась комманда CHCP  . CodePage_name - должна совпадать
  с имеющимися в SMSD.cp в противном случае будет выдано сообщение об ошибке.
  Пример:

  CHCP 1251

% Изменилась компоновка. Все части программы, ответственные за взаимодействие
  с пейджинговой системой вынесены в отдельную DLL.
% Изменения в конфигурационных файлах. Переменные SWAPDIR и MESSAGEFLAGNAME
  вынесенны в файл PAGEINT.CFG, расположенный в каталоге, указанном в
  переменной ETC.

Версия 1.04
! На радость хакерам появился еще один уровень защиты. В SMSD.CFG добавилась
  комманда USER [IPONLY,IPANDLOGIN,LOGINONLY]  . В связи с добавлением в
  учетную запись пользователя его IP адреса, изменился фрмат файла SNPP.PWD.
  Теперь он выглядит так:
  userid password * IP_address
  Примеры:
  userid password * 127.0.0.1 ;Администратор с локальной машины.
  userid password 0 127.0.0.1 ;Обыкновенный пользователь с локальной машины.
  user psw 0 199.12.48.55     ;Обыкновенный пользователь.
  * * 0 121.166.23.15         ;Обыкновенный пользователь, регистрация IPONLY.

Версия 1.05
# Зависание треда с полной загрузкой процессора в случае обрыва сессии при
  исполнения комманды DATA.
% Используются более производительные библиотеки стандартных функций.

Версия 1.06
! Отключение мониторинга клавиатуры.
% Изменен код таймера и монитора клавиатуры на более производительный.
  Теперь каждый монитор выполняется в отдельной нитке.
! Регистрация пользователя. Подробнее можно узнать связавшись с автором.
! Выполнение .cmd файла после приема сообщения.

Версия 1.07
# Утечка файловых описателей в режиме аутонтификации IPOnly.
% Изменен код файловых операций. Прирост производительности при работе
  одновременно с несколькими пользователями. Возможно исчезли некоторые
  случайные и нестабильные ошибки.
% Изменен код генерации тредов.

Версия 1.09
% Перешли на новый компилятор (Virtual Pascal 2.0).
% В списке авторизации указывается не признак "аднминистратора", 
  а уровень доступа.
! Добавлена комманда LIST. Выдает список зарегистрированных в базе
  PagerID. Сделано для совместимости с пакетом Super Pager v.1.8.
  Эта комманда работает для пользоваелей SNPP с уровнем доступа 1 и выше.
! Поддерживается формат выдачи PagerID от Super Pager v.1.8.
% Уменьшены требования к глубине стека для PageInt.dll.

Версия 1.10
% Перешли на новый компилятор (Virtual Pascal 2.1).
% Алгоритм работы с сокетами полностью переписан. Сократился объем кода,
  увеличилось быстродействие. 
% В комплекте новая версия PageInt.dll - универсального интерфейса связи
  с тремя различными пейджинговыми системами.
% Оптимизация под Pentium.

Версия 1.11
# Исправлена ошибка в работе с памятью в PageInt.Dll.
! Добавлена возможность отправки сообщений на SMS. В дистрибутив включена
  SMS32.DLL, которая позволяет отправлять сообщения через сотовый телефон.

Версия 1.12
# Исправлена ошибка в SMS гейте при одновременной работе нескольких пользователей.
! Добавлена возможность выбора зоны для отправки SMS сообщений.

Версия 1.14
! Добавлена возможность прямого IP соединения с SMS-центром провайдера сотовой 
  связи для организации двунаправленного гейта по протоколу SMPP.

Версия 2.15
% Изменилось название программы.
! Добавлен EMI/UCP сервер для работы в тестовом режиме.

Как связаться c автором (Игорь Васьков).
Fido: 2:5020/207.27 (Igor Vaskov).
E-mail: Igor Vaskov
Домой