db_postgres Module


Table of Contents

1. Admin Guide
1.1. Overview
1.2. Dependencies
1.2.1. OpenSIPS Modules
1.2.2. External Libraries or Applications
1.3. Exported Parameters
1.3.1. exec_query_threshold (integer)
1.3.2. max_db_queries (integer)
1.3.3. timeout (integer)
1.3.4. use_tls (integer)
1.4. Exported Functions
1.5. Installation and Running
2. Contributors
2.1. By Commit Statistics
2.2. By Commit Activity
3. Documentation
3.1. Contributors

List of Tables

2.1. Top contributors by DevScore(1), authored commits(2) and lines added/removed(3)
2.2. Most recently active contributors(1) to this module

List of Examples

1.1. Set exec_query_threshold parameter
1.2. Set max_db_queries parameter
1.3. Set timeout parameter
1.4. Set the use_tls parameter

Chapter 1. Admin Guide

1.1. Overview

Module description

1.2. Dependencies

1.2.1. OpenSIPS Modules

The following modules must be loaded before this module:

  • No dependencies on other OpenSIPS modules.

1.2.2. External Libraries or Applications

The following libraries or applications must be installed before running OpenSIPS with this module loaded:

  • PostgreSQL library - e.g., libpq5.

  • PostgreSQL devel library - to compile the module (e.g., libpq-dev).

1.3. Exported Parameters

1.3.1. exec_query_threshold (integer)

If queries take longer than 'exec_query_threshold' microseconds, warning messages will be written to logging facility.

Default value is 0 - disabled.

Example 1.1. Set exec_query_threshold parameter

...
modparam("db_postgres", "exec_query_threshold", 60000)
...

1.3.2. max_db_queries (integer)

The maximum number of database queries to be executed. If this parameter is set improperly, it is set to default value.

Default value is 2.

Example 1.2. Set max_db_queries parameter

...
modparam("db_postgres", "max_db_queries", 2)
...

1.3.3. timeout (integer)

The number of seconds the PostgreSQL library waits to connect and query the server. If the connection does not succeed within the given timeout, the connection fails.

Note:If the timeout is a negative value and connection does not succeed, OpenSIPS will block until the connection becomes back available and gets successfully established. This is the default behavior of the library and is the behavior prior to the adition of this parameter.

Default value is 5.

Example 1.3. Set timeout parameter

...
modparam("db_postgres", "timeout", 2)
...

1.3.4. use_tls (integer)

Parameter to control the way the SSL support is used when connecting to the Postgres server, as follows:

  • use_tls=0 (default) - the SSL support is disabled and there is no attempt to use it;

  • use_tls=1 with "tls_domain" present in the DB URL - the SSL support is enabled, either "require", either "verify-ca", depending on the certificate settings;

  • use_tls=1 with no "tls_domain" present in the DB URL - the SSL support is enabled in best effort mode (or "prefer"); if supported by the server, it will be used, otherwise it will fall back to non-SSL.

Warning: the tls_openssl module cannot be used when setting this parameter. Use the tls_wolfssl module instead if a TLS/SSL Library is required.

Setting this parameter will allow you to use TLS for PostgreSQL connections. In order to enable TLS for a specific connection, you can use the "tls_domain=dom_name" URL parameter in the db_url of the respective OpenSIPS module. This should be placed at the end of the URL after the '?' character.

When using this parameter, you must also ensure that tls_mgm is loaded and properly configured. Refer to the the module for additional info regarding TLS client domains.

Note that if you want to use this feature, the TLS domain must be provisioned in the configuration file, NOT in the database. In case you are loading TLS certificates from the database, you must at least define one domain in the configuration script, to use for the initial connection to the DB.

Also, you can NOT enable TLS for the connection to the database of the tls_mgm module itself.

Default value is 0 (not enabled)

Example 1.4. Set the use_tls parameter

...
modparam("tls_mgm", "client_domain", "dom1")
modparam("tls_mgm", "certificate", "[dom1]/etc/pki/tls/certs/opensips.pem")
modparam("tls_mgm", "private_key", "[dom1]/etc/pki/tls/private/opensips.key")
modparam("tls_mgm", "ca_list",     "[dom1]/etc/pki/tls/certs/ca.pem")
...
modparam("db_postgres", "use_tls", 1)
...
modparam("usrloc", "db_url", "postgres://root:1234@localhost/opensips?tls_domain=dom1")
...

1.4. Exported Functions

NONE

1.5. Installation and Running

Notes about installation and running.

Chapter 2. Contributors

2.1. By Commit Statistics

Table 2.1. Top contributors by DevScore(1), authored commits(2) and lines added/removed(3)

 NameDevScoreCommitsLines ++Lines --
1. Henning Westerholt (@henningw)66295541963
2. Bogdan-Andrei Iancu (@bogdan-iancu)61451088349
3. Norman Brandinger (@NormB)54414492247
4. Greg Fausak42344722
5. Daniel-Constantin Mierla (@miconda)2720350203
6. Liviu Chircu (@liviuchircu)18154587
7. Razvan Crainea (@razvancrainea)151221027
8. Jan Janak (@janakj)12830023
9. Klaus Darilion10613967
10. Vlad Paiu (@vladpaiu)9710234

All remaining contributors: Maksym Sobolyev (@sobomax), Vlad Patrascu (@rvlad-patrascu), Ancuta Onofrei, Norman Brandinger, Andrei Pelinescu-Onciul, Dusan Klinec (@ph4r05), Eseanu Marius Cristian (@eseanucristian), Ruslan Bukin, Ryan Bullock (@rrb3942), Konstantin Bokarius, Razvan Pistolea, Aron Podrigal, Dan Pascu (@danpascu), Peter Lemenkov (@lemenkov), Edson Gellert Schubert, Jarrod Baumann (@jarrodb).

(1) DevScore = author_commits + author_lines_added / (project_lines_added / project_commits) + author_lines_deleted / (project_lines_deleted / project_commits)

(2) including any documentation-related commits, excluding merge commits. Regarding imported patches/code, we do our best to count the work on behalf of the proper owner, as per the "fix_authors" and "mod_renames" arrays in opensips/doc/build-contrib.sh. If you identify any patches/commits which do not get properly attributed to you, please submit a pull request which extends "fix_authors" and/or "mod_renames".

(3) ignoring whitespace edits, renamed files and auto-generated files

2.2. By Commit Activity

Table 2.2. Most recently active contributors(1) to this module

 NameCommit Activity
1. Razvan Crainea (@razvancrainea)Oct 2011 - Jul 2024
2. Liviu Chircu (@liviuchircu)Sep 2012 - May 2024
3. Bogdan-Andrei Iancu (@bogdan-iancu)Jul 2005 - Feb 2024
4. Maksym Sobolyev (@sobomax)Apr 2004 - Feb 2023
5. Vlad Patrascu (@rvlad-patrascu)May 2017 - Oct 2021
6. Norman Brandinger (@NormB)Aug 2006 - Oct 2021
7. Dan Pascu (@danpascu)May 2019 - May 2019
8. Ryan Bullock (@rrb3942)Mar 2019 - Mar 2019
9. Vlad Paiu (@vladpaiu)Jan 2011 - Feb 2019
10. Peter Lemenkov (@lemenkov)Jun 2018 - Jun 2018

All remaining contributors: Jarrod Baumann (@jarrodb), Dusan Klinec (@ph4r05), Aron Podrigal, Eseanu Marius Cristian (@eseanucristian), Razvan Pistolea, Ruslan Bukin, Henning Westerholt (@henningw), Daniel-Constantin Mierla (@miconda), Konstantin Bokarius, Edson Gellert Schubert, Ancuta Onofrei, Klaus Darilion, Norman Brandinger, Jan Janak (@janakj), Greg Fausak, Andrei Pelinescu-Onciul.

(1) including any documentation-related commits, excluding merge commits

Chapter 3. Documentation

3.1. Contributors

Last edited by: Bogdan-Andrei Iancu (@bogdan-iancu), Vlad Patrascu (@rvlad-patrascu), Norman Brandinger (@NormB), Liviu Chircu (@liviuchircu), Razvan Crainea (@razvancrainea), Peter Lemenkov (@lemenkov), Aron Podrigal, Eseanu Marius Cristian (@eseanucristian), Vlad Paiu (@vladpaiu), Daniel-Constantin Mierla (@miconda), Konstantin Bokarius, Edson Gellert Schubert, Henning Westerholt (@henningw), Jan Janak (@janakj).

Documentation Copyrights:

Copyright © 2003 Greg Fausak