Beruflich Dokumente
Kultur Dokumente
What I have tried to do here is implement an SMPP server which connects to the bearerbox as
currently SMSBox with the following features:
TO-DO
This software will be free, forever. If you get charged for this software, please notify me.
If you do wish to donate to this project, please do so via the bitcoin address below.
Building
I'm aware that this build script is not the best way of doing things and should rather use autoconf
- however while I am an experienced C developer I've never taken the time to learn this. If
someone wants to contribute an autoconf script via a pull request I will happily accept.
To build:
make
Using KSMPPD
I have created a number of example configurations in this repository located under
examples/configurations
database-only is a system that requires no HTTP server and uses a database for
authentication and routing
http-auth-database-routing uses an HTTP request to authenticate ESME's and a database
for routing
http-only uses HTTP for both authentication and routing.
If using a database in any of the above examples, you will need to create the table schemas at a
minimum located under database-schemas in this repository.
There are commands available via the built in HTTP server which allow you to perform certain
tasks. Appending ".xml" to commands will produce output in XML format.
http://ksmppdhost:port/esme-status
curl "http://localhost:14010/esme-status?password=ksmppdpass"
Summary:
http://ksmppdhost:port/esme-unbind
curl "http://localhost:14010/esme-unbind?password=ksmppdpass&system-
id=smppuserb&bind-id=1"
1 binds disconnected
curl "http://localhost:14010/esme-unbind?password=ksmppdpass&system-
id=smppuserb"
2 binds disconnected
http://ksmppd:port/rebuild-routes (you MUST run this if you change routes in the database)
curl "http://localhost:14010/rebuild-routes?password=ksmppdpass
Routes updated
Performance
Benchmarks on a Core i5 @ 3.2 GHz this software processes 1534 messages per second (more
thorough benchmarks later).
KSMPPD has been thoroughly tested for memory leaks in all scenarios and all have been dealt
with that have been found.
Contributing
Please create issues or pull requests here to contribute.
Behaviour
At this stage I have determined optimal configuration to be with a database queue enabled. This
enables better handling of failure in cases where ESME's are offline or bearerbox is unavailable.
All scenarios will allow ESME's to authenticate as normal, unless the database is down.
Some scenarios
submit_sm (message submissions) will be queued to the database for later delivery and
successful responses returned.
Any queued MO/DLR's from a previously alive bearerbox will be forwarded to
connected ESME's.
At least one bearerbox is alive but no ESME's (or some receivers) are not available
If a bearerbox rejects a message (invalid routing, etc) - the ESME will get this result
immediately via submit_sm_resp
If permanent routing failure for MO (eg: no routes) messages will be discarded and
bearerbox notified accordingly (ack_failed)
If an ESME exceeds their max allowed open acks, messages will be queued to the
database and requeued as space becomes available. This is to solve excessive memory
use.
System restart
The system first starts, connects to bearerbox and allows connections from ESMEs. Once
started it begins reprocessing bearerbox queues if any.
Once ESME's reconnect - their queued messages (in database) will begin being
reprocessed.
Acknowledgements
This product includes software developed by the Kannel Group (http://www.kannel.org/).
I'd also like to specifically thank the developer of OpenSMPPBox Rene Kluwen as I used some
of his PDU conversion mechanisms in OpenSMPPBox.
It makes extensive use of gwlib and other features developed for Kannel, it would not be
possible without them.