| SNPP Sever | |||
Все права собственности принадлежат: | Igor Vaskov | |||
Добавлена возможность прямого IP соединения с SMS-центром провайдера сотовой связи для организации двунаправленного гейта. | Идея и алгоритм: | Igor Vaskov | ||
Протокол: | Allan Gwinn | |||
Расширения протокола: | Igor Vaskov |
Данная программа представляет собой комбинацию 2-х комуникационных серверов.
SNPP с поддержкой протокола версии 2 для приема пейджинговых сообщений и SMPP для
приема и отправки SMS. В комплект опционально может входить модуль, позволяющий
отправлять SMS и пейджинговые сообщения, принятые по протоколам SNPP, SMPP и полученные
от систем NUCLON, CRUSO, GRANIT через подключенный к компьютеру мобильный телефон.
Обрабатываемые программой информационные потоки и интерфейсы представлены на схеме:
На схеме видно, что сервер может получать сообщения через сеть интернет (IP) по протоколам SMPP и SNPP, а также непосредственно от систем персонального радиовызова (СПРВ) через локальную вычислительную сеть (ЛВС).
Дальнейшая обработка зависит от параметра Зона (COVE). Сервер может отправить сообщение в эфир через сотовый телефон, подключенный к компьютеру, связаться с СПРВ и передать сообщение в систему для излучения через пейджинговый передатчик или отправки по каналам роуминга или отправить его через интернет провайдеру сотовой телефонии на CMC-центр по протоколу SMPP.
Таким образом SNPPD может выполнять большинство функции Вашей СПРВ, связанных с SMS гейтованием и, возможно, роумингом. С точки зрения провайдера сотовой телефонии SNPPD - это еще одна базовая станция. Поскольку протокол SMPP двустороннй, можно построить полноценный SMS-гейт сотовой сети с пейджинговой. Тогда владелец сотового телефона сможет отправлять сообщение на пейджер не прибегая к услугам операторской, а просто отправив SMS-сообщение.
Интерфейсная часть не задействует функций графической подсистемы, таким образом
запуск приложения может быть осуществлен в detach режиме.
Принятые сообщения складываются в ниже указанном текстовом формате в заданный Вами каталог и
доступны для обработки любыми средствами, включая Rexx. В том случае, если требуется
интеграция с уже установленной пейджинговой системой Вы можете обратиться к автору за
поддержкой.
При запуске на текстовый экран будет выдана информация о считанных настройках
системы, а в процессе работы по мере осуществления соединений - информация об
установленных связях с IP адресами удаленных систем. Выход из программы
может быть осуществлен комбинацией Ctrl-X. Программа корректно обрабатывает
большинство ошибочных ситуаций. Для повышения надежности автопилотных систем
рекомендуется перевести OS/2 систему в режим PROTECT ONLY и написать *.CMD
файл вызывающий SNPP Server по кругу.
Минимальные 386DX-25 8Mb RAM. Оптимальные Pentium 133 16Mb RAM.
Желательно OS/2 сконфигурировать для работы на HPFS диске.
База данных может занимать на диске довольно много места по 42 байта на один
номер.
Программа пользуется переменной окружения ETC. Перед началом работы,
проверьте установлена ли эта переменная и в какое значение. Да, чуть не
забыл. Обязательно должна быть инсталлирована поддержка TCPIP :)
После чего необходимо в каталоге, указанном в переменной ETC, создать
следующие файлы:
SNPPD.PWD - пароли на сессию
SNPPD.CFG - конфигурация сервера (весьма запутанная)
SNPPD.ID - база данных с возможностью алиаса (не обязателен)
Содержимое файла | Примечание |
SNPPD.PWD | |
Login1 Password1 Login2 Password2 | Для обычных юзеров. |
Login3 Password3 * |
Для администратора |
SNPPD.CFG | |
ROBOT 001 ROBOT 002 ... ROBOT 999 |
Позволяет использовать в сети несколько роботов по приему сообщений. Код 3 знака. |
SWAPDIR X:\NOW\ |
До версии 1.02. Указание куда складывать полученное, если не задана, берется из коммандной строки запуска. В версии 1.03 и старше перенесена в файл PAGEINT.CFG. |
LOCALBASE ON LOCALBASE OFF |
Использовать или не использовать базу данных из SNPPD.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%\SNPPD.LOG |
MESSAGEFLAGNAME X:\NOW\!MSG!.FLG |
В версии 1.02 введена переменная, которая позволяет указать путь и имя флага, который будет создаваться при появлении в директории указанной в SWAPDIR файла содержащего сообщение. Если переменная не инициализирована, флаг при приеме сообщений не создается. В версии 1.03 и старше перенесена в файл PAGEINT.CFG. |
SMSCOVE1 21 SMSCOVE2 22 SMSCOVE3 23 SMSCOVE4 24 |
Версия 1.12 и далее. Зоны (COVE) , при указании которых программа будет отправлять сообщения через подключенный сотовый телефон. |
SMSCCOVE1 31 SMSCCOVE2 32 SMSCCOVE3 33 SMSCCOVE4 34 |
Версия 1.14 и далее. Зоны (COVE) , при указании которых программа будет отправлять сообщения через SMS-центр провайдера сотовой связи по протоколу SMPP. |
!!!ВНИМАНИЕ!!! Начиная с версии 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 и далее. Где искать сообщения предназначенные на роуминг. Каталог связи с СПРВ. |
SNPPD.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 | Перечитать SNPPD.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.).
Есть программа-клиент к серверу SNPP
(WIN16-версия,
OS/2-версия)
совмещающая в себе возможность отправлять
сообщения, сканируя определенную директорию на предмет поступления файлов,
содержащих текст, а также работать как полноценное рабочее место орератора.
WIN16-версия работает под всем семейством Windows, начиная от 3.1.
Есть DLL под OS/2
реализующая SNPP V.1 и V.2, а также небольшая тестовая
утилита к ней, позволяющая послать текстовый файл на пейджер из коммандной
строки. Незаменимая вещь для автоматизаторов, интеграторов и админов крупных
серверов.
! - нововведения; # - исправленные баги; % - изменения. Версия 1.02 ! Появился флаг наличия сообщения. # Ошибка хелпа по комманде Hold # Ошибка в реализации комманды REPEat. Версия 1.03 ! Появилась функция автоматической перезагрузки приложения в случае необработанной ошибки. Многократно повышает живучесть автопилотной системы. ! Появилась поддержка национальных кодовых страниц (Win-1251, KOI-8 & etc.). В некоммерческой версии возможно использовать только 2 первые в порядке написания в файле snppd.cp. Формат файла:<Последовательность_символов_для_этой_кодовой_страницы> Файл должен находиться в директории заданной в переменной ETC. Преобразование идет всегда к первой строке,т.е. если у вас основная рабочая кодирока DOS866 необходимо первой поместить строку именно с этим набором символов. ! Добавилась комманда CHCP . CodePage_name - должна совпадать с имеющимися в snppd.cp в противном случае будет выдано сообщение об ошибке. Пример: CHCP 1251 % Изменилась компоновка. Все части программы, ответственные за взаимодействие с пейджинговой системой вынесены в отдельную DLL. % Изменения в конфигурационных файлах. Переменные SWAPDIR и MESSAGEFLAGNAME вынесенны в файл PAGEINT.CFG, расположенный в каталоге, указанном в переменной ETC. Версия 1.04 ! На радость хакерам появился еще один уровень защиты. В SNPPD.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.