mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
209 lines
5.5 KiB
209 lines
5.5 KiB
1. PDT module
|
|
|
|
Elena-Ramona Modroiu
|
|
|
|
Asipto
|
|
|
|
Copyright © 2003 FhG FOKUS
|
|
__________________________________________________________________
|
|
|
|
1.1. Overview
|
|
1.2. Dependencies
|
|
|
|
1.2.1. SER Modules
|
|
|
|
1.3. Parameters
|
|
|
|
1.3.1. db_url (string)
|
|
1.3.2. db_table (string)
|
|
1.3.3. prefix_column (string)
|
|
1.3.4. domain_column (string)
|
|
1.3.5. prefix (string)
|
|
1.3.6. hsize_2pow (integer)
|
|
1.3.7. sync_time (integer)
|
|
1.3.8. clean_time (integer)
|
|
|
|
1.4. Functions
|
|
|
|
1.4.1. prefix2domain(mode)
|
|
|
|
1.5. FIFO Interface
|
|
|
|
1.1. Overview
|
|
|
|
This module translates a numerical prefix into a domain and updates
|
|
accordingly the request URI.
|
|
|
|
The module looks up at the Request-URI part of a message and if the
|
|
user part begins with an established prefix it will update the URI.
|
|
Updating the uri consists of: remove the prefix from the user part of
|
|
the uri and keep the rest as the user part of the new uri. The host and
|
|
port are changed with the domain matched for the leading prefix.
|
|
|
|
<prefix><userid><:password>@<mydomain.com> ...
|
|
|
|
and the result will be:
|
|
|
|
<userid><:password>@<domain[:port]>...
|
|
|
|
Example 1. prefix-domain translation
|
|
prefix=123
|
|
domain[123]=alpha.org
|
|
|
|
sip:12391001@mydomain.com => sip:91001@alpha.org
|
|
|
|
The prefix could be prefixed by other digits. These digits will not be
|
|
used to look up the domain (the classic example, 00 used for
|
|
international calls, then follows the country prefix). For more
|
|
information on this, see 'prefix' parameter.
|
|
* A sample config file and the MySQL script to create the database
|
|
needed by PDT are located in './doc/'.
|
|
* Sample shell scripts to manage prefix-domain pairs are also located
|
|
in './doc/' (pdt_fifo_add.sh, pdt_fifo_delete.sh,
|
|
pdt_fifo_list.sh).
|
|
|
|
1.2. Dependencies
|
|
|
|
1.2.1. SER Modules
|
|
|
|
The following modules must be loaded before this module:
|
|
* A SER database module (e.g., mysql, dbtext).
|
|
|
|
1.3. Parameters
|
|
|
|
1.3.1. db_url (string)
|
|
|
|
SQL URL of database--username, password, host, port and database (ex:
|
|
mysql://username:password@hostname.com/database)
|
|
|
|
Default value is 'mysql://root@127.0.0.1/pdt'.
|
|
|
|
Example 2. Set db_url parameter
|
|
...
|
|
modparam("pdt", "db_url", "mysql://user:xxx@127.0.0.1/ser")
|
|
...
|
|
|
|
1.3.2. db_table (string)
|
|
|
|
Table name.
|
|
|
|
Default value is "prefix_domain".
|
|
|
|
Example 3. Set db_table parameter
|
|
...
|
|
modparam("pdt", "db_table", "pdt")
|
|
...
|
|
|
|
1.3.3. prefix_column (string)
|
|
|
|
Name of 'prefix' column.
|
|
|
|
Default value is "prefix".
|
|
|
|
Example 4. Set prefix_column parameter
|
|
...
|
|
modparam("pdt", "prefix_column", "code")
|
|
...
|
|
|
|
1.3.4. domain_column (string)
|
|
|
|
Name of 'domain' column.
|
|
|
|
Default value is "domain".
|
|
|
|
Example 5. Set domain_column parameter
|
|
...
|
|
modparam("pdt", "domain_column", "hostname")
|
|
...
|
|
|
|
1.3.5. prefix (string)
|
|
|
|
Default leading prefix who denotes what URI needs to be translated - if
|
|
it is NULL the module will not check the Request-URI; against it and
|
|
the PDT prefix is considered starting from the first digit. Otherwise,
|
|
the module will check first if the Request-URI starts with it and will
|
|
skip it to look up the domain.
|
|
|
|
Default value is NULL.
|
|
|
|
Example 6. Set prefix parameter
|
|
...
|
|
modparam("pdt", "prefix", "00")
|
|
...
|
|
|
|
1.3.6. hsize_2pow (integer)
|
|
|
|
Number of the hash entries = 2^hash_size.
|
|
|
|
Default value is 4.
|
|
|
|
Example 7. Set hsize_2pow parameter
|
|
...
|
|
modparam("pdt", "hsize_2pow", 4)
|
|
...
|
|
|
|
1.3.7. sync_time (integer)
|
|
|
|
Time in seconds to synchronize the cache of each process with the
|
|
changes made through FIFO. Any prefix-domain change made through FIFO
|
|
is guaranteed to have efect after this period of time past.
|
|
|
|
Default value is 600.
|
|
|
|
Example 8. Set sync_time parameter
|
|
...
|
|
modparam("pdt", "sync_time", 300)
|
|
...
|
|
|
|
1.3.8. clean_time (integer)
|
|
|
|
Time in seconds to clean the changes inserted via FIFO. The changes
|
|
will be removed from FIFO diff list only when all SER processes applied
|
|
these changes.
|
|
|
|
Default value is 900.
|
|
|
|
Example 9. Set clean_time parameter
|
|
...
|
|
modparam("pdt", "clean_time", 600)
|
|
...
|
|
|
|
1.4. Functions
|
|
|
|
1.4.1. prefix2domain(mode)
|
|
|
|
Build a new URI if it is necessary. Returns 1 when the translation was
|
|
made or there was nothing to translate (user part of the URI is empty,
|
|
it does not match the prefix parameter or there is no domain associated
|
|
with a possible prefix from user part). Returns -1 in error cases.
|
|
|
|
The "mode" parameter specifies whether to strip or not the prefix from
|
|
user part. If the parameter is missing or it has the value "0", then
|
|
the prefix is removed along with the leading prefix. If the value is
|
|
"1", only the leading prefix is removed. If the values is "2" the user
|
|
part of the URI is not changed.
|
|
|
|
Example 10. prefix2domain usage
|
|
...
|
|
prefix2domain();
|
|
...
|
|
prefix2domain("2");
|
|
...
|
|
|
|
1.5. FIFO Interface
|
|
|
|
The modules uses only the cache to look up domains. If you want to add
|
|
or delete a new prefix-domain pair you have to use FIFO commands. All
|
|
changes made via FIFO are applied to database. The database is loaded
|
|
only at SER start up time.
|
|
|
|
There are three FIFO commands to use with PDT.
|
|
* pdt_add - add a new prefix-domain pair
|
|
* pdt_delete - remove a prefix-domain pair
|
|
* pdt_list - list the prefixes and the domains
|
|
|
|
Example shell scripts for these commands are placed in './doc/'
|
|
(pdt_fifo_add.sh, pdt_fifo_delete.sh, pdt_fifo_list.sh). More about, in
|
|
the comments before the implementation of the functions, inside the
|
|
'pdt.c' file.
|