• Change socket type to unblocked.
  • Optimize code.
All the property rights belong to:Igor Vaskov
Idea and algorithm:Igor Vaskov
Protocol SNPP:Allan Gwinn
Protocol extensions:Igor Vaskov


This program is a combination of 3 communication servers:

The package can include as an option the module allowing to send SMS and paging messages accepted by SNPP, SMPP protocols and received from systems NUCLON, CRUSO, GRANIT through a cell phone connected to the computer. Information flows and interfaces processed by the program are shown in the scheme:

he scheme also shows that the server can receive messages through the Internet (IP) via protocols SMPP and SNPP, and also directly from the paging systems (PS) via the local network (LN).

Further processing depends on the parameter Zone (COVE). The server can send a message to the air via a cell phone connected to the computer, get connected to the paging system and send the message to the system for emitting through the paging transmitter or for sending via roaming channels, or send it via the Internet to the provider of cell telephony to the SMS-center via the protocol SMPP.

Thus SMSD can fulfill most of the functions of Your paging system related to SMS gating and possibly roaming. From the point of view of the cell telephony provider, SMSD is another base station. Since the SMPP protocol is duplex, one can create a SMS-gate of full value for cell network with the paging one. Then the owner of a cell phone will be able to send a message to the pager without resorting to the services of operator's communication but simply sending an SMS-message.

The interface part does not enable the functions of the graphics subsystem, thus the start of an application can be realized in the detach mode.

The received messages are put in the text format stated below in the directory specified by You and are available for processing by all the means including Rexx. In case if integration with the paging system which is already installed is required, You can seek the author's assistance.

At the start the information on the read system settings will be displayed on the screen, and during the operation, as connections occur, - the information on the established connections with IP addresses of remote systems. The program exit can be made with the combination Ctrl-X. The program processes most of error situations correctly. To increase the reliability of autopilot systems it is recommended to transfer the OS/2 system to the PROTECT ONLY mode and write an *.CMD file requesting the SNPP Server cyclewise.

Hardware requirements

The minimum requirements are 486DX2-66 16Mb RAM. The optimal requirements are Pentium 266 32Mb RAM. It is desirable to configure OS/2 for operation on the HPFS disc. The data base may occupy fairly much space on the disc - 42 byes for one number.


The program makes use of the environment variable ETC. Before you start the work, make sure that this variable is set and check up its value. The TCPIP support must be necessarily installed. After that it is necessary to create the following files in the directory set forth in the environment variable ETC:
SMSD.PWD - passwords for the session
SMSD.CFG - server configuration (rather complicated)
SMSD.ID - data base with the possibility of alias (optional)

File structure
File contentNote
Login1 Password1 0 866 1000 7
Login2 Password2 0 * 1251 1000 0

For users account

  • 0 - Access level (from 0 to 9).
  • - user IP for this account. If - "*" , then any.
  • 866 - National code page.
  • 1000 - Limit messages on one connection.
  • 7 - Default Cove for this account.
Login3 Password3 9 866 1000 0

For administrator account


Allows the use in the net of several robots for receiving messages. The code is three signs.


Prior to version 1.02. If the specification where to put the received is not specified, it is taken from the start command line. In version 1.03 and higher it is transferred to file PAGEINT.CFG.


To use or not to use the data base from SMSD.ID.


In what succession the local and the global data bases should be addressed (the support of the global base is possible only for systems PageLink and GRANIT and only in the full version)


What to do if IDPage is not found in the base (I stress - just not found, and not non-active). ACCEPT - the pager will be deemed active (requests will be processed).


The level of detalization of the LOG which You will find in %ETC%\SMSD.LOG


In version 1.02 the variable is introduced which allows to indicate the path and name of the flag that will be created on appearance in the directory specified in SWAPDIR of the file containing the message. If the variable is not initialized, the flag is not created while receiving messages. In versions 1.03 and higher it is transferred to the PAGEINT.CFG file.


Version 1.12 and higher. Zones (COVErage), indicating which the program will send messages through the connected cell phone.


Version 1.14 and higher. Zones (COVErage), indicating which the program will send messages through SMS-center of the cell communication provider via the SMPP protocol.

Version 3.28 and higher. IP adress MySQL server.
Version 3.28 and higher. Login MySQL server.
Version 3.28 and higher. Pasword MySQL server.
Version 3.30 and higher. Load/not load SMS32.DLL. If SMS32.DLL load then COM port lock.
Version 3.30 and higher. Strat/not start async SNPP service. Required connect to MySQL.
Version 3.30 and higher. Strat/not start async direct send service over GSM phone. Required connect to MySQL.
Version 3.30 and higher. Default coverage for SMPP message.
Version 3.30 and higher. Default coverage for UCP message.
Starting from version 1.03 a new configuration file has been introduced which contains the settings necessary for the interaction with Your paging system:


The indication where to put the received, if not specified, is taken from the start command line.


Allows to specify the path and the name of the flag that will be created on appearance in the directory specified in SWAPDIR of the file containing the message. If the variable is not initialized, the flag will not be created while receiving messages.


Starting from version 1.06 (version PAGEINT.DLL Page-Link Extended Interface v.0.02) the variable is added which allows to specify the name and location of the batch file that will be started while receiving a message after forming a file with a message. As an argument the first parameter transfers the path and the name of the work file.


Version 1.09 and higher. Where to put messages with the indication CapCode and all the necessary information for transmission (message transmission is via CapCode, not the pager number). Directory of connection with the paging system.


Version 1.09 and higher. Where to look for the messages intended for roaming. Directory of connection with the paging system.

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

The lines are sorted to increase of the first field, but not as numbers and exactly as lines. As a unit there is a base built on this principle for 1 thousand of subscribers. From the first position comes the pager number, it can be alphabetical-numerical for 12 positions. From the 14th position comes the individual password of a subscriber for sending messages, 12 positions. The 27th position is a sign of activity: A shall mean active, any other shall mean inactive, a blank should not be used. From the 29th position comes the pager number used in Your system, 12 symbols. This number will be inserted in the output file on the receipt of a message on the number indicated in the beginning of a line. Thus it is possible to convert alphabetical-numerical numbers used when addressing the SNPP server, into numerical ones which are appropriate in Your system. All the lines have the length of 40 symbols and end with a standard chain CRLF.

After all the said actions are fulfilled - it should work.

User manual (very brief).

  1. Read RFC1645.
  2. Additional commands:
    REPEat [n {m}]Repeat the message n time, the interval of m minutes.
    RELOadRe-read SMSD.PWD (only for the administrator account).
    GETU [Login]Supply information about the user (only for the administrator account).
    OtherNot documented :)
  3. Use command HELP [command_name]
  4. The format of the create‚ files (in the SWAPDIR directory) corresponds to the format of exchange through Gate of the Nuclon program, the developer is PageLink Corp.
    &112 27-01-00 12:10:15 1 5 0 PINCODE * * userid password 09-04-99 17:30:13 This is message.
    |--- -------- -------- | | | ------- --- ------ -------- ----------------- ---------------
    | |      |        |    | | | |       |   |      |        |                 |
    | |      |        |    | | | |       |   |      |        |                 Message before 
    | |      |        |    | | | |       |   |      |        |                 CRLF.
    | |      |        |    | | | |       |   |      |        Date and time of the message receipt.
    | |      |        |    | | | |       |   |      Sender's password.
    | |      |        |    | | | |       |   Sender's login.
    | |      |        |    | | | |       Technical parameters
    | |      |        |    | | | |       (v. 1.03+ IP and Host of the sending party).
    | |      |        |    | | | Individual password for message sending from this pager.
    | |      |        |    | | Sending zone (Coverage).
    | |      |        |    | Interval in minutes.
    | |      |        |    Number of repetitions.
    | |      |        Time of message sending (hh:mm:ss).
    | |      Date of message sending (dd-mm-yy).
    | Pager number.
    The format sign. Always &.
    Unused and blank fields can be replaced with the * symbol.

    If you have failed to understand anything in the format, contact the author (how to contact the author is shown below).

  5. Staring from version PageInt.DLL Page-Link Extended Interface 0.02 after forming a file with a message, it is possible to start a batch file OS/2. As a parameter the path and the name of a file-message are communicated to it.
    Note 1. The program is not waiting for the end of the batch file operation. If you need to know the result of processing, contact the author and acquire the commercial version of the program where all the necessary tools are available.
    Note 2. If you use the option of start of batch files, the author is not liable for reliability and stability of the operation of Your system.
  6. Later, I do hope, the manual will be enhanced.

Limitations of the non-commercial version.
  1. Only 3 pairs login-password.
  2. No more than 3 simultaneous users on-line.
  3. The message length is 80 symbols.
  4. Limitations in the processing of the interaction with the Nuclon program (PageLink Corp.).

Free unregistered OS/2 SMSD. For registration mail to Igor Vaskov.

And what else?

There is a client program to the server SNPP (WIN16-version, OS/2-version) combining the possibility of sending messages scanning the appropriate directory regarding the arrival of files containing text, and also operating as a valuable work seat of an operator. WIN16-version operates under the whole Windows family starting from 3.1.
There is DLL under OS/2 which realizes SNPP V.1 and V.2, and also a small test utility to it allowing to send a text file to the pager from the command line. It is an indispensable thing for automators, integrators and administrators of large servers.

Bug Fix and News
! - new;
# - fixed bug;
% - modifications.

Version 1.02

! Flag of an available message appeared.
# Help error on Hold command
# Error in the execution of the REPEat command.

Version 1.03

! The function of automatic reload of the application in case of an unprocessed 
  error. It multiply increases the durability of the autopilot system.
! Support of national code pages appeared (Win-1251, KOI-8 & etc.).
  In the non-commercial version it is possible to use only the first two ones in the 
  order of writing in the SMSD.cp file. The file format:
  The file must be located in the directory specified in the variable ETC.
  Conversion always takes place in the first line, that is if your main working 
  encoding is DOS866, it is necessary to place first the bar with this symbol set.  
! The CHCP command is added. CodePage_name must concur with those which are in 
  SMSD.cp, otherwise an error message will appear.  

  CHCP 1251

% The arrangement is changed. All the parts of the program responsible for 
  the interaction with the paging system are removed to a separate DLL.
% Changes in the configuration files. Variables SWAPDIR and MESSAGEFLAGNAME are 
  removed to the PAGEINT.CFG file located in the directory specified in the ETC 

Version 1.04

! To the pleasure of hackers one more level of protection appeared. 
  In regard to the addition in the user account of his IP address, the 
  format of the SNPP.PWD file changed.
  Now it looks like this:
  userid password * IP_address

  userid password * ;Administrator from a local computer.
  userid password 0 ;Common user from a local computer.
  user psw 0     ;Common user.
  * * 0         ;Common user, IPONLY registration.

Version 1.05

# Freezing of a thread with the full load of the processor in case of 
  session breakaway with the execution of the DATA command.
% More efficient libraries of standard functions are used. 

Version 1.06

! The keyboard monitoring diabled.
% The timer and keyboard monitor code is changed to a more efficient one.
  Now every monitor is executed in a separate thread.
! User registration. You can learn more details from the author.
! Execution of the .cmd file after receipt of a message.

Version 1.07

# Leakage of file descriptors in the mode of authentification IPOnly.
% The code of file operations is changed. Efficiency incrementation 
  with the simultaneous work with several users. Accidental and 
  unstable errors are likely to have disappeared.
% The code of thread generation is changed.

Version 1.09

% Change to a new compiler (Virtual Pascal 2.0).
% In the authorization list not the "administrator" 
  sign but the access level is indicated. 
! The LIST command is added. It provides the list of those registered in 
  the PagerID base. This was done for compatibility with the Super Pager 
  v.1.8. package.
  This command operates for the SNPP users with the access level 1 and higher.
! The format of delivery PagerID from Super Pager v.1.8 is supported.
% The requirements to the depth of the stack for PageInt.dll are reduced.

Version 1.10

% Change for a new compiler (Virtual Pascal 2.1).
% The algorithm of work with sockets is completely rewritten. The size of 
  the code is reduced, the operating speed is increased. 
% There is a new version of PageInt.dll as a unit - the universal interface 
  of connection with three different paging systems.
% Optimization  for Pentium.

Version 1.11

# A bug in the work with memory in PageInt.Dll is fixed.
! The possibility of sending messages to SMS is added. Into the distributive 
  SMS32.DLL is included which allows to send messages via a cell phone. 

Version 1.12

# A bug is fixed in the SMS gate with the simultaneous work of several users. 
! The possibility of zone selection for sending SMS is added. 

Version 1.14

! The possibility of direct IP connection with the SMS-center of the cell 
  communication provider is added for organization of the duplex gate via 
  the SMPP protocol.

Version 2.15

% The name of the program is changed.
! The EMI/UCP server was added for operation in test mode.
How to contact the author (Igor Vaskov).
Fido: 2:5020/207.27 (Igor Vaskov).
E-mail: Igor Vaskov