|
Project SMSLink - Changelog
smslink-0.56b-3 (October 2nd, 2006)
SERVER:
- Fixed multiple send of DB queued messages by limiting the number
of concurrent OBC child processes to 1 (instead of 'ngsmdevs'). Since the
queue items are not locked during processing, the same item could be
selected by more than one child process. Bug reported by Tony S. Sykes.
The current fix is not optimal. I should implement a proper locking
mechanism, and return to multiple concurrent OBC child processes to
maximize throughput.
- Memory corruption fix (string overflow
through unchecked strcpy() in db_outbox_check()) in the processing of
messages queued in the 'outbox' DB table (reported by Gabriele Zappi). Added a few
missing terminating NULLs in other calls to strncpy().
- Improved the output of the 'qstat' command by requesting the 'stored' column in
formatted form (in db_list_queue()).
- Integrated a fix contributed by Peter Forgac that restores compatibility with FreeBSD 6
(sigignore() replaced with signal(...,SIG_IGN) in
./server/mbchecker.c). Also added
a comment in the server Makefile to use the FREEBSD platform when
compiling on FreeBSD 6.1 instead of FREEBSD5.
- Integrated changes contributed by Tony S. Sykes. They add proper support for MySQL v5.0.
Bumped database schema version from 4 to 5. Also created a small SQL
script to automate the migration of an existing installation to schema
version 5. Placed it in a new ./varia/database directory. Moved the
database creation script (database.sql) there as well.
- Added support for the Ericsson F251m GSM modem (in
./server/gsmcaps). Contributed by Miguel Armas.
- Cosmetic update to fatal() function (./server/stuff.c).
SMS2MAILGW:
- Bumped sms2mailgw version to 0.20b.
- Plugged a memory leak in mailbox_run() (./server/gw_stuff.c).
The variable called "iboxentry" got allocated but never freed. Also added
a free() call for two variables in sms2mailgw.c, but those are mostly
cosmetic, since that code is never reached.
smslink-0.56b-2 (April 6th, 2006)
SERVER:
SMS2MAILGW:
- Added PID file generation and removal code to the server
module, in order to ease integration with System V init scripts
as used under SuSE linux (among others). PID file name would be
/var/run/sms2mailgw.pid by default, but can be set through
a new command line option (-i). Man pages and online help adapted
accordingly. Cosmetics.
- Solved the "can't move new inbox file - system() failed" crash
(reported by Mark Pollock, Steven Delport and Johan Kotze) by removing the
'ignore' on SIGCHLD (in ./server/sms2mailgw.c).
This prevented proper execution of the system() call on systems
with more recent versions of glibc (and was unnecessary anyway).
- Improved error checking in mailbox_run() (./server/gw_stuff.c).
- Fixed a bug in mailbox_run() (./server/gw_stuff.c)
that would lose the first line(s) of a multiline, non-mail inbox entry if it
came after mail entries. Cosmetics.
- Fixed the bug that caused a segfault in resolve()
(./server/smtp.c) on the x86_64 platform when called
with a hostname in debug mode.
- Fixed a major bug (missing {}'s around an 'if' block) and
improved error checking in resolve()
(./server/smtp.c) + some code readability
improvements.
- Improved on-line help message in ./server/sms2mailgw.c.
- Fixed a compilation problem on FreeBSD 5 in
./server/smtp.c (thanks to Piet
Ruyssinck for alerting me to the problem and providing the bugfix).
- Replaced the dump_string() debugging function in ./server/stuff.c
with a vastly improved version (see server section for more details). Adds -lm
to the gateway build.
CLIENT:
- Improved error reporting in the client (sendsms).
MISC.:
- Added sample System V init scripts for SuSE in the new directory
./varia/scripts/SuSE.
- Added the mail to sms forwarding trick contributed by Steven
Delport (in a new directory ./contrib/mail2sms).
- Fixed an ugly oversight in ./varia/database.sql (the DB
creation script hadn't been updated to take all changes specific to
schema ver. 4 into account). Thanks a lot to
Marty
Lee for spotting that one.
smslink-0.56b (June 11th, 2004)
SERVER:
- Improved the "interactive interface" command parser behaviour in case
of a "parse error". Once a "parse error" message has been emitted, the rest
of the input buffer is now discarded, which
avoids the need to press the [return] key several times to clear the buffer.
This bug has been present since the first released version of SMSLink.
I'm really glad I eventually got rid of it ;-)
Beware: the solution to this bug might make
the lexer dependent on the GNU version of lex (i.e. flex(1)).
- Added support in the Makefile for a "debug-enabled" compilation of the lexer.
Uncomment the line that defines the FLDEBUG variable to enabled it.
- Added a "processed" column in the inbox table. This column is initially filled with
'n' by the sms_serv process, and is then supposed to be set to 'y' by the (user-supplied)
external application that will further process incoming messages.
- Added a "purge" command to the interactive interface, that removes sent
messages from the outbox table and / or processed messages from the inbox
table. This command is available only when the "db" backend is enabled.
Purging processed messages from the outbox will only be possible provided the
(user-supplied) external application that will further process incoming messages
actually sets the "processed" column appropriately.
- Added support for a prioritisation of queued items. Priorities by default range
from 1 (highest) to 5 (lowest). Default priority is 3. The user is now able to
select his/her message priority at submission time. Messages are listed and processed
ordered by priority. This feature is most usefull in conjunction with the limit
on messages processed per queue run ('-l' option). Added the "set prio", "show prio"
and "clear prio" commands to the interactive interface. Adapted "qstat" output and
on-line help accordingly. This feature had been requested
by Andrew Goldschmidt.
This feature required adding a new "priority" column to the outbox table. It works
with both the "db" backend and the "file" backend (although only the "db" backend
currently garantees FIFO ordering of the messages within any given priority).
- Fixed a silly bug in dequalify(), affecting the determination of the DNS domain
the server is working for.
- Implemented a child process monitoring system, to avoid starting a second outbox
check while the previous one is still running (typically seen with a tight '-o' loop
and no '-l' option set). There is still room for improvement
here, since the current technique doesn't make proper use of multiple GSM devices
in parallel when available (more precisely, multiple child processes could be started
in this case, but they might all process the same messages, meaning multiple send).
- Added '-X' command-line option, to allow setting the name of the external
program / script that should be called during inbox runs when the "prog" flag is
set without needing to recompile the server.
- Added support for Nokia 30 Connectivity Terminal and for Motorola A008 / 6288
(contributed by
Nicki de Wet).
- Corrected the set of defines for TPDU header fields in
./server/pdu.h. In previous versions, I misunderstood the ETSI specs
and completely mixed-up headers from different PDU types (mainly
SMS-SUBMIT and SMS-DELIVER). Those types are now
properly identified, and all matching header fields are provided. Adapted usage in
./server/pdu.c accordingly. This change is purely cosmetic for now --
the actual values, once compiled, don't change.
- Added '\t' to the list of characters that would be edited out by the trim()
function (in ./server/stuff.c). Affects the processing of some parameters
by the interactive interface parser and the handling of incoming messages.
- Improved debugging info.
- Adapted the man pages accordingly.
SMS2MAILGW:
- Fixed a silly bug in dequalify(), affecting the determination of the DNS domain
the server is working for.
- Improved debugging info.
CLIENT:
- Improved the error reporting in the client, in the case where the client requests
server-side queueing of the message and the server doesn't support that feature. The
client used to report a plain "sending failed". It will now report the real cause
("queueing disabled") and return with exit code 105.
- Added support for the queued item priority feature to the client ('-e' option).
- Re-arranged client on-line help output ('-h' option).
- Adapted the man pages accordingly.
smslink-0.55b-2 (October 10th, 2003)
SERVER:
- In ./server/dbaccess.c and ./server/mbchecker.c,
corrected a bug where the "outbox.stored" database column would get reset to
NOW() on update. Thanks to Andrew
Goldschmidt for pointing it out.
- Fixed a compilation error on FreeBSD 4.8 due to some missing includes. Thanks
to Nicki de Wet for the patch.
smslink-0.55b (August 8th, 2003)
SERVER:
- Outbound messages queueing support. Queued messages are processed by
an "outbox check" child process, started at (admin-settable) interval
by the server. Contributed by
Ing. Andrea Vettori.
- Two different queueing method are provided: through the use of files
or in a back-end database. The implementation design is modular, so
adding new queueing methods in the future should be easy.
- New commands have been added to the server that take advantage of this
queueing feature: in addition to the usual send, you can
now also use the new queue and post.
queue will simply store the message in the outbound queue
for later delivery, while post will attempt a single immediate
"send". If this fails, the message is queued for later delivery.
- The queueing mechanism now supports queued items obsolescence. The
administrator can set a maximum number of times each queue item will
undergo an attempted send. When all allowed attempts have failed,
the item will be removed from the queue (files are removed, database
entries are just flagged "failed"), and an email message is sent to
the administrator ("postmaster" by default).
- Two new commands in the interactive interface allow for the outbound
queue to be managed. Those are qstat (lists queue entries,
their IDs and queue run count) and qdel (removes an entry
from the queue).
- The server module now features support for a MySQL back-end database.
This support is related to, but independant of the queueing support. A
new db option can be included in the
/etc/gsmdevices file to indicate that incoming messages
should be stored in the DB (you can use any combination of
inbox, prog and db options).
If the outbox check feature is enabled (-o server
command-line option) and DB access is enabled (valid MySQl credentials),
then the DB will be polled for outgoing messages (irrespective of
whether or not queueing is enabled -- based on the principle that the
database instance can be managed entirely outside of SMSLink).
Contributed by Ing. Andrea
Vettori.
- Warning: For those of you already
using an earlier pre-release version of sms_serv 0.55b, please note
that the table layout of the database has slightly changed since then.
Please refer to the provided database creation script
(./varia/database.sql) for details on the new layout.
- The smsstore database now features a new
schema table that will hold a schema version number.
This schema version will be checked at server startup to make sure the
database layout is in-line with the server expectations.
- DB instances can be setup on the same host where the SMSLink
server runs, or anywhere on the network.
- A new mode has been added: init. In your
/etc/gsmdevices file, use either poll,
dd or init. The purpose of
init is to fully initialize the specified GSM module
at server startup (the server will feed it all "configuration" AT+
commands). Then, during message processing (incoming or outgoing),
only those commands will be issued that may vary for each user request.
This speeds up the message delivery considerably, of course, but at the
cost of some robustness: when using init mode, the
server won't be able to recover from a power-cycle on the GSM device.
Contributed by Ing. Andrea
Vettori.
- More command-line options. Most features that used to be set at
compile-time through #define can now be set at runtime through
command-line options. Have a look at
sms_serv(1) or type
sms_serv -h for more details.
- Implemented the stats command in the interactive
interface. Reports on the number of messages sent and received and the
amount of failed attempts since the server is up. And all this per
attached device, of course.
- Added a long option to the devicelist
command in the interactive interface. Displays the full information
for each device, including the driver name and all counters.
- In earlier pre-releases of sms_serv, dl l used to
also display the PIN and PUK code. I'm now hiding this for security
reasons, and will re-enable it when an admin enable mode will
have been implemented.
- File suffix and port number command-line options support. This allows
you to run multiple instances of the server on the same host.
Contributed by Ing. Andrea
Vettori.
- Preliminary support for the default GSM alphabet (on the GSM side)
and various ISO charsets on the server side. This should allow for
correct processing of non-ASCII7 foreign characters (such as found
in french, german, etc.). Works both for sending and receiving
(beware: this feature is meaningfull in PDU mode
only). Currently only supports ISO-8859-1 and ISO-8859-15, but it's
easy to add more charsets.
- Warning: Changed the format
of the /etc/gsmdevices file. Added a new field called
PINpause. I noticed that the amount of time required
by the GSM network to process a login request (what happens "behind the
scene" when you provide your PIN code) could vary wildly from one
provider to the next. So I made this configurable. See
gsmdevices(5) for
more details.
- Added support for <numplan> #C8.
- Expanded the #defined "PUKLEN" value to 16 chars (in
./server/sms_serv.h), as a user reported using a 15-char
long PUK string.
- Started work on solving Victor Tan's problem (parallel
access to multiple devices when all of them are in dd mode). Also
made some generic improvements to dd_spawn() (memory allocation and
cleanup for struct symbols, error reporting). Also found out that,
as it is currently implemented, the dd mode will only support the
send command (what about post and
queue ?). Added the dd_busy field in the
struct gsms_def - modified gsmdevcpy()
accordingly.
- Worked on solving a weakness in mbparse() (in
./server/mbchecker.c), where only the first line of a multi-line
message would be saved (due to an earlier, misguided, design
decision). The parsing code should now allow for multiple [<CR>]<LF>
characters in the text of the message. Those will then be trimmed
out to be replaced by spaces (in order for the incoming messages to
be saved on a single line in the inbox file). Problem resolution
contributed by Marcel P..
- New end-of-string
detection strategy in packed8toascii7(): added a
<tpudl> parameter, moved the "trailing '@'" check within
packed8toascii7().
- Fixed broken support for FreeBSD 4.8 and added support for FreeBSD 5.0
with the help of
Greg May. Added the GNU getopt code
in the (new) ./libs directory, for use on those platforms
that don't use glibc. Added two variables IEXTRA and
LEXTRA that make it easier for the user to specify extra
include and library paths when needed (e.g. when the MySQL libs are in a
non-standard location).
- Code cleanup in the GSM modem dialogue (removed much duplication,
made it a lot more modular). Implemented on the whole code the technique
shown by Ing. Andrea Vettori.
- Improved Makefile readability. Altered CFLAGS handling in the Makefiles.
Makes it possible to get a debug build by first exporting CFLAGS="-g" and
then running make.
- Added support for the following hardware:
SMS2MAILGW:
- Now shipping version 0.16b.
- Warning: For those already using
version 0.12b or higher: some of the gateway module command-line options
were changed to keep them in line with the equivalent options on the
server module (-r became -M; -D became -F).
Please adapt your scripts accordingly.
- Added the --mbchkinterval command-line parameter to allow
this daemon to synchronize with sms_serv(1).
- Replaced the old (incorrect) domain determination strategy that involved
NIS by a more technically correct approach based on DNS only. Added the
--defaultdomain= command-line option for easy override.
- Added the --smtprelay= command-line option for added
flexibility in mail routing setup.
- In ./server/gw_stuff.c (now in
./server/smtp.c), in send_mail() function,
replaced all <lf> by <cr><lf> sequences
in the dialog with the SMTP server, as per RFC 822bis, section 2.3 (see
http://cr.yp.to/docs/smtplf.html
for details). Caused problems when talking to qmail. Thanks a lot to
Nathan Thomas for letting me know.
- Added a call to dequalify() on variable localhost to
prevent the domain name to appear twice in the From: address.
- Moved everything email-related to ./server/smtp.[ch]
(to be able to share it with the server module).
- Corrected a bug that prevented multi-line inbox entries from being
successfully processed. Those are now supported, whether they be mail or
non-mail entries.
- In the Makefile, removed 2 useless libs from the link line of the
sms2mailgw(1) module
(-lnsl & -lresolv).
- Updated man page accordingly.
CLIENT:
- Now shipping version 0.22b.
- Adds support for the new server-side commands (post
and queue). The desired command can be selected on the
client side by a command-line option. See
sendsms(1) for details.
- Added support for FreeBSD 5.0 (contributed by
Greg May).
- Replaced outdated use of sys_errlist[] and
sys_nerr by calls to strerror(). Thanks to
Greg May for reporting the bug
(spotted on RH 9.0).
- Improved Makefile readability.
- Updated man page.
PDU-TOOLS:
- Now shipping version 0.04b of
gsmts0338(1).
- Added support for default GSM alphabet + command-line option
to select the local character set.
- Added handling of new <tpudl< param to packed8toascii7()
(for better support of the trailing '@' case). Play with it through the
-l command-line option.
- Updated man page.
- Added 2 new utilities:
encode_pdu(1) [shipping
version 0.03b] and decode_pdu(1)
[shipping version 0.05b].
- Adapted ./pdu-tools/Makefile to better handle the
dependency beween the tools and some objects from the server directory.
MISC.:
- In ./varia, an SQL script is provided (called
database.sql) that can be used to create the
back-end MySQL database and its related tables.
- Included a new GUI-based Win32 VB client contributed by
Alex Cooper. Created a directory
called SMS-VB below ./contrib to keep the
sources and the README file.
smslink-0.54b-8 (December 10, 2001)
SERVER:
- In ./server/pdu.c, added proper support for a variety of numplans, usually
seen in messages received from internet websites. Thanks a ton to
Thomas Gutzler for all the data he gathered
for me, and for his great help in testing the new features. For more details on the
actual numplans now supported, their
meaning or the sites they were coming from, please refer to my new
PDU format support page.
- Also in ./server/pdu.c, modified the numplan switch
cases to hex values. Made the <OA> byteswap conditional to
<numplan> value. Fixed a bug where the msg->fromgsm
string was not always properly terminated.
- In ./server/dd.c, ./server/mbchecker.c and ./server/server.y,
replaced calls to blopen_mdm_line() by calls to lopen_mdm_line()
(those functions are exported in the libmodem API). Advantage being that this version
uses the max. speed supported by the device by default (the one defined in
/etc/modems). I'm now down to 11 secs per SMS in "poll,fast" mode.
CLIENT:
- Upgraded to version 0.19b. For the mods, see below.
MISC.:
- Added a ./pdu-tools directory, containing the gmsts0338(1)
utility. This small program allows you to convert strings to and from the ETSI
GSM TS 03.38 alphabet (the one used in the PDU format). The
./pdu-tools directory will be used to store all utilities that could help in
further developping support for the various features and quircks of the PDU format.
To compile and install, just make; make install, and for usage
info, man gsmts0338.
sendsms-0.19b (October 8, 2001)
CLIENT:
- Implemented a finer granularity in the acquisition loop by moving to usleep().
Allows the client to sleep by slices of 100 millisecs (instead of a full second). The
overall timeout value for each step of the dialogue with the server wasn't altered. A bit
heavier on the CPU, but offers the promise of small performance gains against
current versions of the server. Will be required to take advantage of the speed
improvement that will be featured in the next minor release of the server.
smslink-0.54b-7 (September 27, 2001)
SERVER:
- Altered the "OK string" and "line separator" fields in the driver
file (/etc/gsmcaps) for the SM20, in order to properly
support "fast" mode on it. Thanks to
Paul Schaap
for his debug traces ;-).
- In decode_pdu() (./server/pdu.c), added a debug
level that would accept any numplan, print a warning and go ahead,
e.g. for numplan #85 [reserved] (requested by
Thomas Gutzler).
To activate the feature, run the server with "-d 16" switch (or plain
"-d", of course).
Changed numplan processing to a switch structure to make it easier
supporting more numplans in the future.
CLIENT:
- Upgraded to version 0.18b. For the mods, see below.
sendsms-0.18b (September 24, 2001)
CLIENT:
- Complete re-engineering of the main function implementing the dialogue between client
and server (get_gsm_answer()). Thanks to this, the average sending time is now down
to between 14" and 16" against a server running in "poll,fast" mode, and 11" against a
server running in "dd,fast" mode. A significant improvement in performance is also felt
when sending through a server using the regular (= "slow") mode.
- Fixed the dialogue with the server to also accept as successful the message sent
out by a server in "dd" mode. Silly oversight of mine. Thanks to
Paul Schaap for the fix.
- Since the distinction between slurp_n_catch() and get_gsm_answer() was
completely useless and artificial, I merged both functions into get_gsm_answer().
- A few new command-line options: -g for debugging, -r for reporting (the device
name used for sending and the message ID on the server when available [thanks to
Paul Schaap for the idea]), -p for
the connection port on the server, when a non-standard one is used.
- I changed the way the communication port is handled. If a port is requested via
the -p command-line option, that one is used. If not, the program attempts to get
the port number through a call to getservbyname() for service "sms". Only when this
fails is the compiled-in default used.
- Made the allocation of the sendlog buffer sully dynamic. No more artificial limit on
how long the dialogue with the server can be.
- Improved error reporting.
- Updated the man page accordingly.
smslink-0.54b-6 (May 9, 2001)
SERVER:
- Added a 20 secs pause in send_sms() (./server/server.y),
mbcheck() (./server/mbchecker.c) and
dd_init() (./server/dd.c) after initial PIN processing
when using the "fast modem response" mode, to try and solve the
"+CMS ERROR: 515" message I was getting on the
WMOD2B module. CMS 515 means the module is still busy processing
the last command, so it looks like "fast" mode was a bit too fast
indeed.
This pause will only hit you in "fast" mode, and then only on the
first access to the module after it underwent a power cycle. If this
bugs you and you feel it's not necessary with the brand you're using,
give me a note and I'll isolate that behaviour through a driver flag.
- Added cpl_list de-allocation code in send_sms()
(./server/server.y) -- back-ported from the upcoming 0.55b.
- Modified dd_init() (./server/dd.c) to also use the
new get_gsm_resp() calls and related cpl_list structure
when checking for the PIN code.
- Modified the "OK string" and "line seperator" fields in the
gsmcaps file for devices of type FA1, FA2 and GENSM2
after a live test.
smslink-0.54b-5 (May 5, 2001)
SERVER:
- Solved a bug in send_sms() for GSM devices having
SUBPROMPT_IN_CMGS when using "fast modem response" mode.
smslink-0.54b-4 (May 5, 2001)
SERVER:
- Improved handling of the values returned by the AT+CREG?
command in send_sms(), mbcheck(), dd_clear_msgs()
and dd_send_sms(). The <mode> field is
now properly ignored (the server INSTALL
page has been modified to recommend setting the mode to disabled),
and the <stat> field is now analysed and reported
for easier troubleshooting. Parsing of the +CREG: answer is implemented
in getregstat(), in server/serv_stuff.c.
Thanks to Norbert Lataille
for bringing this issue to my attention.
smslink-0.54b-3 (April 6, 2001)
SERVER:
- Warning: I modified
/etc/gsmcaps format to include the "modem_okay"
string and the line separator character(s). Please copy
the new file manually in place.
Adapted translatemodname() and gsmdevcpy()
to handle those new fields.
Modified the man page accordingly.
- In send_sms() and mbcheck(), replaced the
call to get_gsm_answer() by one to get_gsm_resp()
in order to allow for detection of a "multiple choice" of
catch phrases.
- In server/serv_stuff.c, replaced the char *
parameter by a cpl_list parameter in get_gsm_resp(),
get_gsm_answer() and get_gsm_fast().
- Added all needed functions to handle this new cpl_list
structure in server/serv_stuff.c.
- In server/stuff.c, added a function spchar_pp()
that translates special characters in printf() format
as read from /etc/gsmcaps to their appropriate
ascii value.
- In server/sms_serv.c, added a test for negative debug level
values, and generated a log entry when the debug is active.
- In server/accessctrl.c, removed an old
inconsistency where debug messages were sent to stdout instead
of stderr.
smslink-0.54b-2 (March 30, 2001)
SERVER:
- Added hexdump of modem answer in get_gsm_sleep() and
get_gsm_fast() to help debug problems with "fast modem
response" mode on some devices.
Moved dump_string() from mbchecker.c to
stuff.c. Added a separate debug level to support it
(DEBUG_HEXDUMP).
smslink-0.54b (March 12, 2001)
SERVER:
(Note: this release was mostly dedicated to merging huge changes brought
by Andrew Worsley,
namely the support for the Ericsson GM-12, a "dedicated daemon" mode that
can speed up processing of incoming messages, a "fast modem response"
mode that can speed up modem dialog, the ability to feed incoming messages
to some arbitrary external program / script, device-level flags controlling
which of those features are enabled or not, etc. I wanted to aknowledge
those here. They are a tremendous asset to this project. All of those
changes will be marked with [Andrew] in the list
below. Some additional changes were brought by others - those will
be attributed in the log below.)
- Added support for the Ericsson GM-12 (and GM-22 - same driver -
that change was also submitted by
Ing. Andrea Vettori)
[Andrew].
- Modified /etc/gsmdevices format by adding an optional
field that would hold a list of comma separated flags used to
enable or disable each of the new features on a per-device
level. Adapted demangle_gsm_entry() to take it into account
[Andrew].
- Added a new "dedicated daemon" mode (handled by the functions
in server/dd.c and hooks in main()) meant to
speed up processing of incoming messages in the cases where those
have higher priority than outgoing ones, or where one of the devices
hooked to a server that has many can be dedicated to handling incoming
messages. In this case, the master daemon will spawn a child process
dedicated to listening to the device. If all other devices are
busy, the dedicated one(s) can also be used to send
[Andrew].
- Modified the dumptofile() function so that it is now
possible to feed incoming messages to arbitrary external
programs / scripts to be further processed. A sample script is
provided that would forward all incoming messages to a
predefined mailbox (varia/scripts/sms-recv.pl).
A device-level flag controls whether the message
has to be stored in the inbox, fed to a program, or both
[Andrew].
- Modified get_gsm_answer() function to exit early as soon
as a catch-phrase is received. This speeds up the dialog with the
modem considerably, by avoiding a useless wait() call. Use of this
feature, dubbed "fast modem response", is controlled by a
device-level flag (fast) [Andrew].
- Modified mbcheck() to read all messages from the SIM
(and then delete them) instead of just reading the unread ones.
Purpose of it being to make sure that no half-processed message
may get stuck in the SIM memory, thereby clogging it and preventing
further message reception [Andrew]. I isolated this
feature on a device-level flag (r4).
- Added a global variable to define the concept of "debug level".
Isolated logging of modem dialog on 2 of those levels
[Andrew]. I used this opportunity (triggered by
Andrew's advice) to move to another debug level all the debug info
that was previously controlled by compile-time defines.
- Added a few commands to the interactive interface command language
to allow control of this debug level ('show debug', 'set debug = x',
'clear debug'). Impact limited to the current session, of course.
Modified on-line help accordingly.
- Added command-line parameters to handle (for the mean time) the
setting of the debug level. I improved on Andrew's input by also
merging part of
Ing. Andrea Vettori's
upcoming patch, thereby using GNU getopt() function to
parse the command-line. This include support for long and short
version of the options.
- Modified mbparsePDU() to continue processing when dealing
with an invalid PDU string (to remove it from the SIM)
[Andrew].
- Modified packed8toascii7() so that it would return in
error in case a non-ascii7 character is found [Andrew].
- Added function trChar() in stuff.c
[Andrew].
- Adapted all the man pages accordingly.
- Eliminated a slew of gcc warnings in server.y.
- In server.y, mbchecker.c and dd.c,
modified the routine for the selection of a new PIN in the case of
a failure that brings us to the use of the PUK. Now tries to use
the stored PIN value, instead of randomly choosing a new one.
Thanks to Shay
Kalderon for showing me the light.
- Fixed the "driver flags" for the WMOD2B (I just got one :-), kudos
to Shay).
Contrary to what was believed, it does have a subprompt. If this
was not the case for earlier versions of the command parser (the
one I have is using version 4.10), please let me know.
- Corrected a minor error in the gsmcaps entry that
Andrew provided for the GM-12 (HAS_CSDH_1 should be set to '0' -
N/A since this model doesn't support text-mode).
SMS2MAILGW:
- Added a global variable to define the concept of "debug level".
Moved to that mechanism all the debug info
that was previously controlled by compile-time defines.
- Added command-line parameters to handle (for the mean time) the
setting of the debug level. Used GNU getopt() function to
parse the command-line, to match what was done in the server. This
include support for long and short version of the options.
smslink-0.52b-3 (February 13, 2001)
CLIENT:
- Compilation of the command-line client was broken for the Solaris
platform. Thanks to Cristian Llaras
for noticing the problem and providing the fix.
smslink-0.52b-2 (December 30, 2000)
SERVER:
- Improved the driver definitions for the Wavecom devices (and some
Falcom ones whose core is Wavecom-based). Only the /etc/gsmcaps
file was modified. No change in the code. Thanks to
David Martinez from
Wavecom France for his excellent
technical advice.
Warning: some Wavecom devices
were renamed (what I thought to be a zero was in fact an "Oh", as in
WMO2). If you're using one such device, please make sure to
modify your /etc/gsmdevices according to the new device
codes defined in /etc/gsmcaps when upgrading.
smslink-0.52b (November 30, 2000)
SERVER:
- Just incremented the server module version to reflect the package
version. No change in the code.
CLIENT:
- Port to the Win32 + Cygwin1 platform. Requires the use of the
latest nightly snapshot of the Cygwin libs, but it works. Click
here
for detailed install instructions. Due to some bug in the
cygwin1.dll,
the client program will exit with an error when the SMS server
parameter is given as an IP address (using hostnames works fine,
provided DNS is properly configured on the client, of course). This
has been reported and should be fixed in some future snapshot of
the Cygwin libs.
Update: this bug has been fixed in
the nightly snapshot released Dec. 1st. Please install
cygwin-inst-20001201.tar.bz2 or later. Thanks a lot to
Corinna Vinschen for her
prompt reaction.
- Added a new contrib/ directory in the project distribution
file. It currently contains two different contributed native Win32
clients.
The first one, called ClientSMS is GUI-based and requires
Visual Basic to compile. I've not been able to evaluate it yet.
Contributed by Dimitri
Bellini.
The second, called send_sms, is command-line based and
requires Borland C++ to compile. It might compile under other
Windows-based C++ compilers. I tested it, and it works very well,
being actually faster than the native client (I'll sure have things to
learn, here !). Contributed by
Melle Sprenger.
Huge thanks to both of them.
- For a discussion of the various Win32 clients requirements
and their raison d'être,
please read this bit.
smslink-0.51b (November 27, 2000)
SERVER:
- Added support for the Siemens S25 / S35 GSM modules. Contributed
by Thomas Omerzu. Those models
only support PDU-mode.
- Finalized PDU-mode support: PDU-mode SMS reception is now working
(tested on the FA1, GENSM2 and PCFF900). Please test it on yours
as well.
- Preliminary support for the "Option FirstFone GSM 900 PCcard".
Kudos to Bernard Willemot
for lending me the hardware. Reception works fine both in text and PDU
mode. Sending in text mode works, but sometimes returns with an error
even though the message was successfully sent. Sending in PDU mode
behaves the same, but what's more, the destination phone will get
garbage.
Support for this hardware lead me to always quote the PIN code
when sent to the devices (in sendsms() and mbcheck()). Should be
closer to the standard -- I just hope it doesn't break support for
any other model. Please test and let me know if it does.
- WARNING: Please upgrade your
/etc/gsmcaps file with the one provided in this release, as
the capacity matrix was changed for all previously supported
models.
Failure to do so might affect text-mode reception.
smslink-0.50b-2 (November 10, 2000)
SERVER:
- Added support for the "Ericsson F151s Business" mobile phone
(with FD10 Data Adaptor). No change to the code, just an updated
version of /etc/gsmcaps. Thanks to
Dimitri Bellini
for his help in making this work.
smslink-0.50b (November 3, 2000)
SERVER:
- Port to the FreeBSD platform (contributed by
Stanley
Hopcroft).
- Added a signal handling function for SIGCHLD that would reap
the exit status of child processes and prevent zombie formation
(limited to the FreeBSD port, due to it causing server's
untimely death on Linux). Contributed by
Stanley
Hopcroft.
- Improved error checking in send_sms() when parsing the module's
reply after +CMGS. Thanks to
Stanley
Hopcroft for pointing that out.
CLIENT:
- Port to the FreeBSD platform (contributed by
Stanley
Hopcroft).
- Improved the sendsms(1) man file to document the various
possible exit codes returned by the client.
SMS2MAILGW:
smslink-0.48b-4 (September 13, 2000)
SERVER:
- Bugfix release: Fixes a bug
when parsing incoming SMS in text mode on the WM02 (and possibly the
FA2 as well). The problem was that this model uses <LF> characters
to separate the SMS message from its headers instead of the <CR>
used by the other models. I included the unixify() function in
server/stuff.c to normalize the messages and standardize on
the <LF> characters. Both delimiters (and any combination of
them) will now be accepted in the input.
Thanks to Guido Dolci for
helping me track this issue.
- Improved the debug information output by the server when
compiled with -DINCL_DEBUG_CODE. It will now spew an hexdump
of the incoming SMS.
smslink-0.48b-3 (September 7, 2000)
SERVER:
- Bugfix release: Fixes a problem
when using a Siemens M20 (added support for a sub-prompt when sending,
both in text and PDU mode). Thanks to
Silvano Menegoni for the
fine tests he made on his equipment.
- Added support for different date formats in the SMS timestamps when
read in text mode. This also meant a change in /etc/gsmcaps format.
Adapted gsmcaps(5) accordingly.
Thanks to Pierluigi Mangani for
pointing that out.
- Also thanks to Pierluigi Mangani,
improved support for incoming SMS by making the parser accept
a variable number of fields. Improved error reporting in mbparse().
smslink-0.48b-2 (June 8, 2000)
SERVER:
- Bugfix release: Fixes a problem
preventing the server program to communicate properly with Wavecom
WM02 modules. Those modules have a case-sensitive AT command parser
and hence accept only capitalized AT commands. Changed send_sms()
(in server.y) and mbcheck() (in mbchecker.c)
accordingly. Thanks to Andrea
Vettori and Frank Friel
for letting me know.
- Adapted gsmdev.h to include a "capability" denoting this
behaviour. Adapted gsmcaps to flag the WM02 with it.
smslink-0.48b (May 24, 2000)
SERVER:
- WARNING: The format of one of the configuration files
(/etc/gsmdevices) has changed again due to the improvement described
below. Please adapt your config. file accordingly (add the "model"
field between the "defmode" and "provider" fields). See gsmdevices(5)
or the example config. file header for more details.
- Included support for sending SMS in PDU mode on all supported
modules. SMS reception in PDU mode is not implemented yet.
- Started to implement some sort of flags-based drivers, that should
ease support for different brands of GSM modules (as well as seamlessly
allow for the use of multiple modules from different providers
on the same server).
- Added the translatemodname() function to gsmdevices.c
to handle the translation from short model name to capacity matrix,
as provided by /etc/gsmdevices and /etc/gsmcaps.
- Already modified the SMS reception procedure (mbckeck())
to use the device-level default mode. Still, only text mode is
supported at the present time.
- Adapted gsmdevcpy() to accomodate for the changes in
struct gsms_dev.
- Solved a bug in the definition of RAND_MAX that would have prevented
the election of a new PIN from working, and that used to generate
annoying warning messages at compile-time.
smslink-0.46b (April 4, 2000)
SERVER:
- WARNING: The format of one of the configuration files
(/etc/gsmdevices) has changed due to the improvement described
below. Please adapt your config. file accordingly (add the "defmode"
field between the "defsca" and "provider" fields). See gsmdevices(5)
or the example config. file header for more details.
- Included preliminary support for SMS sending mode support. The default
mode (text or PDU) should be defined in the configuration file
(/etc/gsmdevices, see above), it can be selected by the user
and set in the device, but only text mode is implemented (yet).
The "show", "clear" and "devicelist" commands have been adapted
accordingly.
- Fixed a bug that prevented the mailbox check to work with Wavecom
WM02 devices. Those are rather touchy on the parameter format used
to read messages in relation to the current message format. Thanks to
Guido Dolci for
pointing that out.
- Improved the mailbox check procedure by including the "at+csdh"
command (full message header detail). Thanks to
Piero Baudino for the hint.
- Made sure we always use text mode to retrieve messages for the
mean time. When PDU mode will be fully supported, I'll allow PDU
mode for message retrieval as well.
- The periodic mailbox checks can now be disabled altogether (for users
not interested in this functionality, or when it is vital that a
"dormant" server wouldn't touch the device except when required).
This is done by setting MBCHKINTERVAL to 0 in
sms_serv.h before compiling.
- The server also now rejects abnormal values of
MBCHKINTERVAL and exits, logging the error.
SMS2MAILGW:
- Improved error handling and reporting in gw_stuff.c. If
a mail cannot be delivered, the daemon will now keep it in the inbox
and retry next time (while logging the reason for the error).
smslink-0.44b (March 13, 2000)
SERVER:
- Improved handling of the default SMSC. Now properly picked
up from the /etc/gsmdevices file on a per-device
basis.
- Fixed a bug preventing compilation on Slackware 7.0.
- In the interactive interface, improved the "show" command
to also display the length of the message.
- Added the "aclist" command to the interactive interface.
- Adapted the sms_serv(1) man page to reflect the changes.
- Added handling of a checkpoint file to allow for easy
synchronization between the server module and the gateway
module.
- Included the version number in the server bootup syslog
messages.
- Splitted the old stuff.c into three files. The new
stuff.c now holds functions used by both the server
and the gateway module, while serv_stuff.c and
gw_stuff.c holds functions specific to each module.
CLIENT:
- Improved the slurp_n_catch() function to be more robust
and less vulnerable to changes in server response messages.
SMS2MAILGW:
VARIA:
- Added bulksms (sends the same SMS message to a list
of GSM numbers provided in a text file, generates a log with
the result for each request).
smslink-0.41b (July 28, 1999)
SERVER:
- In mbchecker.c, implemented the dialog with the module that will
get the incoming messages, the procedure that will save them to
disk and the loop to remove them from the SIM card afterwards.
- Added a command to the regular sending procedure that would avoid
notification of incoming messages.
- Moved three functions from server.y to stuff.c and
made them public so that I could re-use them from mbchecker.c.
- Added a trim() function to stuff.c.
- Incremented the main version number in sms_serv.[ch].
- Adapted the sms_serv(1) man page to reflect the changes.
smslink-0.40b (June 25, 1999)
SERVER:
- Fixed a bug preventing compilation on GLibc2 platform.
- Added an uptime command to the interactive interface.
CLIENT:
- Fixed a bug preventing compilation on GLibc2 platform.
VARIA:
- Included a basic web interface to the SMSLink system (Perl CGI
script calling the sendsms client - no straight http support
in the server).
smslink-0.34b (February 22, 1999)
SERVER:
- Improved signal handling in general. Moved from the "old"
signal() interface to sigaction(). Cleared the
bug which prevented users to send a second SMS in the same session.
- Added a field "owner" in the struct gsms_def, to hold the
pid of the child process obtaining a lock on the device. Displayed it
through the interactive "dl" command.
- Cleared a boundary-checking bug in the search for a free GSM instance
loop.
- Already built the programmatic structure to regularly check for
incoming messages. The actual dialog with the device is not done
yet, though.
- Implemented a very flexible access control mechanism. Contributed
originally by Philipp Klaus.
CLIENT:
- Added the ability to read the message from stdin ("-f -").
Contributed by Philipp Klaus.
- Ported to Sun Solaris. Contributed by
Philipp Klaus.
- Solved a bug that prevented the previous version of the client to
compile under HP-UX.
smslink-0.22b (November 26, 1998)
|