SMPP Module for Kamailio
=====================

This module implements SMPP (Short Message Peer-to-Peer) protocol support
for Kamailio.
It supports both SMPP v3.4 and v5.0 protocols and provides database
authentication for SMPP clients.

Module Components
---------------
Core Components:
* smpp_mod.c/h - Main module interface
* smpp_server.c/h - SMPP server implementation
* smpp_protocol.h - SMPP protocol definitions
* smpp_operations.c/h - SMPP operations handling
* smpp_config.c/h - Configuration management

Routing Components:
* routing_blocks.c/h - Routing block implementation
* smpp_router.c/h - Message routing logic

Database Components:
* smpp_db.h - Database interface definitions
* smpp.sql - Database schema

Additional Components:
* smpp_rpc.c/h - RPC interface implementation
* smpp_lcr.h - Least Cost Routing definitions
* smpp_enum.h - ENUM support definitions
* smpp_udh.h - User Data Header support

Features
--------
* SMPP v3.4 and v5.0 support
* Database authentication
* IP-based access control
* Multiple concurrent binds support
* Connection tracking
* Automatic unbind on timeout
* TLS/SSL support
* Message queuing
* Rate limiting
* Character set conversion
* Routing capabilities
* RPC interface

Configuration
------------
The module can be configured in two ways:

1. Using Kamailio's main configuration file (kamailio.cfg):
```
loadmodule "smpp.so"

# Basic configuration
modparam("smpp", "config_file", "/etc/kamailio/mod_smpp.conf")
```

2. Using the dedicated configuration file (mod_smpp.conf):
The module looks for the configuration file at `/etc/kamailio/mod_smpp.conf`
by default.
You can override this location using the config_file parameter.

Configuration Parameters
----------------------
All parameters can be set either in kamailio.cfg or in mod_smpp.conf:

Basic Settings:
* smpp_port (integer) - Port to listen for SMPP connections (default: 2775)
* max_connections (integer) - Maximum number of concurrent connections
(default: 100)
* smpp_version (integer) - SMPP protocol version (34 for v3.4, 50 for v5.0)

Database Settings:
* db_url (string) - Database URL for authentication
* auth_table (string) - Name of the authentication table (default:
smpp_auth)

Protocol Settings:
* max_pdu_size (integer) - Maximum PDU size in bytes (default: 4096)
* enquire_link_interval (integer) - Interval for keep-alive messages in
seconds (default: 30)
* inactivity_timeout (integer) - Connection timeout in seconds (default: 60)

Security Settings:
* enable_ip_acl (integer) - Enable IP-based access control (default: 1)
* max_failed_binds (integer) - Maximum failed bind attempts before blocking
(default: 3)
* block_duration (integer) - Block duration after max failed binds in
seconds (default: 300)

TLS Settings:
* enable_tls (integer) - Enable TLS support (default: 0)
* tls_cert_file (string) - TLS certificate file path
* tls_key_file (string) - TLS private key file path
* tls_ca_file (string) - TLS CA certificate file path

Database Schema
--------------
The module requires a database table for authentication. Create it using:

mysql -u user -p database_name < smpp.sql

Dependencies
-----------
* Kamailio Core
* Database module (mysql)
* OpenSSL libraries (for TLS support)
* srdb1 library
* trie library

Build Requirements
----------------
The module requires the following build flags (already set in Makefile):
* KAMAILIO_MOD_INTERFACE
* WITH_MYSQL
* USE_TLS

Authors
-------
Tarik Ogut (tariko...@gmail.com)

Henning Westerholt <h...@gilawa.com>, 8 Oca 2025 Çar, 22:54 tarihinde şunu
yazdı:

> Hello Tarik,
>
>
>
> Ok, I see. 😊 You will probably learn it fast.
>
> If you like, you can send me the module code or diff/patch by direct
> e-mail, and I (or my colleague) will create a pull-request for you.
>
>
>
> Cheers,
>
>
>
> Henning
>
>
>
> *From:* Tarık ÖĞÜT <tariko...@gmail.com>
> *Sent:* Mittwoch, 8. Januar 2025 19:44
> *To:* Henning Westerholt <h...@gilawa.com>
> *Cc:* Kamailio (SER) - Development Mailing List <sr-dev@lists.kamailio.org
> >
> *Subject:* Re: [sr-dev] mod_smpp
>
>
>
> i never used github :(
>
>
>
> Henning Westerholt <h...@gilawa.com>, 8 Oca 2025 Çar, 22:40 tarihinde şunu
> yazdı:
>
> Hello Tarik,
>
> thank for the message, this new module looks indeed interesting!
>
> Could you create a pull-request in our GitHub tracker for it? There might
> be some topics that other developers can also share some comments or
> suggestions.
> We might also need to adapt a few things (e.g. the database table creation
> step) before it can be merged.
>
> Thanks, and regards,
>
> Henning Westerholt
>
> > -----Original Message-----
> > From: Tarik ogut via sr-dev <sr-dev@lists.kamailio.org>
> > Sent: Mittwoch, 8. Januar 2025 18:33
> > To: sr-dev@lists.kamailio.org
> > Cc: tariko...@gmail.com
> > Subject: [sr-dev] mod_smpp
> >
> > SMPP Module for Kamailio
> > =====================
> >
> > This module implements SMPP (Short Message Peer-to-Peer) protocol
> > support for Kamailio.
> > It supports both SMPP v3.4 and v5.0 protocols and provides database
> > authentication for SMPP clients.
> >
> > Features
> > --------
> > * SMPP v3.4 and v5.0 support
> > * Database authentication
> > * IP-based access control
> > * Multiple concurrent binds support
> > * Connection tracking
> > * Automatic unbind on timeout
> > * TLS/SSL support
> > * Message queuing
> > * Rate limiting
> > * Character set conversion
> >
> > Configuration
> > ------------
> > The module can be configured in two ways:
> >
> > 1. Using Kamailio's main configuration file (kamailio.cfg):
> > ```
> > loadmodule "smpp.so"
> >
> > # Basic configuration
> > modparam("smpp", "config_file", "/etc/kamailio/mod_smpp.conf") ```
> >
> > 2. Using the dedicated configuration file (mod_smpp.conf):
> > The module looks for the configuration file at
> `/etc/kamailio/mod_smpp.conf`
> > by default.
> > You can override this location using the config_file parameter.
> >
> > Configuration Parameters
> > ----------------------
> > All parameters can be set either in kamailio.cfg or in mod_smpp.conf:
> >
> > Basic Settings:
> > * smpp_port (integer) - Port to listen for SMPP connections (default:
> 2775)
> > * max_connections (integer) - Maximum number of concurrent connections
> > (default: 100)
> > * smpp_version (integer) - SMPP protocol version (34 for v3.4, 50 for
> v5.0)
> >
> > Database Settings:
> > * db_url (string) - Database URL for authentication
> > * auth_table (string) - Name of the authentication table (default:
> smpp_auth)
> >
> > Protocol Settings:
> > * max_pdu_size (integer) - Maximum PDU size in bytes (default: 4096)
> > * enquire_link_interval (integer) - Interval for keep-alive messages in
> seconds
> > (default: 30)
> > * inactivity_timeout (integer) - Connection timeout in seconds (default:
> 60)
> >
> > Security Settings:
> > * enable_ip_acl (integer) - Enable IP-based access control (default: 1)
> > * max_failed_binds (integer) - Maximum failed bind attempts before
> blocking
> > (default: 3)
> > * block_duration (integer) - Block duration after max failed binds in
> seconds
> > (default: 300)
> >
> > Logging Settings:
> > * log_level (integer) - Log level (1-4: error, warn, info, debug)
> (default: 3)
> > * debug_pdu (integer) - Enable detailed PDU logging (default: 0)
> > * log_file (string) - Log file path (default: /var/log/kamailio/smpp.log)
> >
> > Advanced Settings:
> > * window_size (integer) - Window size for windowing/throttling (default:
> 10)
> > * max_message_rate (integer) - Maximum message rate per second (0 =
> > unlimited)
> > * default_charset (string) - Character set for message conversion
> (default: UTF-
> > 8)
> > * enable_queue (integer) - Enable message queuing (default: 1)
> > * max_queue_size (integer) - Maximum queue size (default: 1000)
> >
> > TLS Settings:
> > * enable_tls (integer) - Enable TLS support (default: 0)
> > * tls_cert_file (string) - TLS certificate file path
> > * tls_key_file (string) - TLS private key file path
> > * tls_ca_file (string) - TLS CA certificate file path
> >
> > Database Schema
> > --------------
> > The module requires a database table for authentication. Create it using:
> >
> >     mysql -u user -p database_name < smpp.sql
> >
> > Example Configuration
> > -------------------
> > 1. In kamailio.cfg:
> > ```
> > loadmodule "smpp.so"
> > modparam("smpp", "config_file", "/etc/kamailio/mod_smpp.conf") ```
> >
> > 2. In mod_smpp.conf:
> > ```
> > # Basic settings
> > smpp_port = 2775
> > max_connections = 100
> > smpp_version = 34
> >
> > # Database settings
> > db_url = "mysql://kamailio:kamailiorw@localhost/kamailio"
> > auth_table = "smpp_auth"
> >
> > # Security settings
> > enable_ip_acl = 1
> > max_failed_binds = 3
> >
> > # TLS settings
> > enable_tls = 1
> > tls_cert_file = "/etc/kamailio/certs/smpp_cert.pem"
> > tls_key_file = "/etc/kamailio/certs/smpp_key.pem"
> > tls_ca_file = "/etc/kamailio/certs/ca.pem"
> > ```
> >
> > Dependencies
> > -----------
> > * Kamailio Core
> > * Database module (mysql, postgresql, etc.)
> > * TLS module (if TLS support is enabled)
> >
> > Author
> > ------
> > Kamailio Project (https://www.kamailio.org) Tarik Ogut
> > (tariko...@gmail.com)
> > _______________________________________________
> > Kamailio - Development Mailing List -- sr-dev@lists.kamailio.org To
> > unsubscribe send an email to sr-dev-le...@lists.kamailio.org
> > Important: keep the mailing list in the recipients, do not reply only to
> the
> > sender!
>
>
_______________________________________________
Kamailio - Development Mailing List -- sr-dev@lists.kamailio.org
To unsubscribe send an email to sr-dev-le...@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the 
sender!

Reply via email to