unixodbc 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. auto_reconnect (int)
              1.3.2. use_escape_common (int)

        1.4. Exported Functions
        1.5. Installation and Running

              1.5.1. Installing
              1.5.2. Configuring and Running

   2. Developer Guide
   3. Contributors

        3.1. By Commit Statistics
        3.2. By Commit Activity

   4. Documentation

        4.1. Contributors

   List of Tables

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

   3.2. Most recently active contributors^(1) to this module

   List of Examples

   1.1. Set the “auto_reconnect” parameter
   1.2. Set the “use_escape_common” parameter

Chapter 1. Admin Guide

1.1. Overview

   This module allows to use the unixodbc package with OpenSIPS.
   It have been tested with mysql and the odbc connector, but it
   should work also with other database. The auth_db module works.

   For more information, see the http://www.unixodbc.org/ project
   web page.

   To see what DB engines can be used via unixodbc, look at
   http://www.unixodbc.org/drivers.html.

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:
     * None.

1.3. Exported Parameters

1.3.1. auto_reconnect (int)

   Turns on or off the auto_reconnect mode.

   Default value is “1”, this means it is enabled.

   Example 1.1. Set the “auto_reconnect” parameter
...
modparam("db_unixodbc", "auto_reconnect", 0)
...

1.3.2. use_escape_common (int)

   Escape values in query using internal escape_common() function.
   It escapes single quote ''', double quote '"', backslash '\',
   and NULL characters.

   You should enable this parameter if you know that the ODBC
   driver considers the above characters as special (for marking
   begin and end of a value, escape other characters ...). It
   prevents against SQL injection.

   Default value is “0” (0 = disabled; 1 = enabled).

   Example 1.2. Set the “use_escape_common” parameter
...
modparam("db_unixodbc", "use_escape_common", 1)
...

1.4. Exported Functions

   NONE

1.5. Installation and Running

1.5.1. Installing

   Prerequirement: you should first install unixodbc (or another
   program that implements the odbc standard, such iodbc), your
   database, and the right connector. Set the DSN in the odbc.ini
   file and the connector drivers in the odbcinst.ini file.

1.5.2. Configuring and Running

   In the opensips.conf file, add the line:
....
loadmodule "/usr/local/lib/opensips/modules/db_unixodbc.so"
....

   You should also uncomment this:
....
loadmodule "/usr/local/lib/opensips/modules/auth.so"
loadmodule "/usr/local/lib/opensips/modules/auth_db.so"
modparam("usrloc", "db_mode", 2)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
....

   and setting the DSN specified in the odbc.ini, inserting this
   with the url adding this line:
....
modparam("usrloc|auth_db", "db_url",
    "unixodbc://opensips:opensipsrw@localhost/my_dsn")
....

   replacing my_dsn with the correct value.

   HINT: if unixodbc don't want to connect to mysql server, try
   restarting mysql server with:
shell>safe_mysqld --user=mysql --socket=/var/lib/mysql/mysql.sock

   The connector search the socket in /var/lib/mysql/mysql.sock
   and not in /tmp/mysql.sock

Chapter 2. Developer Guide

   The module implements the OpenSIPS DB API, in order to be used
   by other modules.

Chapter 3. Contributors

3.1. By Commit Statistics

   Table 3.1. Top contributors by DevScore^(1), authored
   commits^(2) and lines added/removed^(3)
     Name DevScore Commits Lines ++ Lines --
   1. Henning Westerholt (@henningw) 45 22 385 1129
   2. Bogdan-Andrei Iancu (@bogdan-iancu) 44 31 617 418
   3. Marco Lorrai 24 1 2660 0
   4. Daniel-Constantin Mierla (@miconda) 20 15 221 140
   5. Liviu Chircu (@liviuchircu) 19 11 136 315
   6. Razvan Crainea (@razvancrainea) 10 8 63 26
   7. Peter Lemenkov (@lemenkov) 4 2 8 7
   8. Maksym Sobolyev (@sobomax) 4 2 4 4
   9. Vlad Patrascu (@rvlad-patrascu) 4 2 3 3
   10. Anca Vamanu 4 1 89 103

   All remaining contributors: Elena-Ramona Modroiu, Anonymous,
   Konstantin Bokarius, Alex Massover, Razvan Pistolea, Norman
   Brandinger (@NormB), Edson Gellert Schubert, Vlad Paiu
   (@vladpaiu), Carsten Bock.

   (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

3.2. By Commit Activity

   Table 3.2. Most recently active contributors^(1) to this module
                      Name                   Commit Activity
   1.  Peter Lemenkov (@lemenkov)          Jun 2018 - Feb 2025
   2.  Liviu Chircu (@liviuchircu)         Mar 2014 - May 2024
   3.  Maksym Sobolyev (@sobomax)          Feb 2023 - Feb 2023
   4.  Razvan Crainea (@razvancrainea)     Oct 2011 - Jan 2021
   5.  Bogdan-Andrei Iancu (@bogdan-iancu) Dec 2005 - Apr 2019
   6.  Vlad Patrascu (@rvlad-patrascu)     May 2017 - Apr 2019
   7.  Vlad Paiu (@vladpaiu)               Jul 2011 - Jul 2011
   8.  Razvan Pistolea                     Jul 2009 - Jul 2009
   9.  Alex Massover                       Mar 2009 - Mar 2009
   10. Carsten Bock                        May 2008 - May 2008

   All remaining contributors: Henning Westerholt (@henningw),
   Daniel-Constantin Mierla (@miconda), Konstantin Bokarius, Edson
   Gellert Schubert, Anca Vamanu, Elena-Ramona Modroiu, Norman
   Brandinger (@NormB), Anonymous, Marco Lorrai.

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

Chapter 4. Documentation

4.1. Contributors

   Last edited by: Peter Lemenkov (@lemenkov), Liviu Chircu
   (@liviuchircu), Bogdan-Andrei Iancu (@bogdan-iancu),
   Daniel-Constantin Mierla (@miconda), Konstantin Bokarius, Edson
   Gellert Schubert, Henning Westerholt (@henningw), Elena-Ramona
   Modroiu, Marco Lorrai.

   Documentation Copyrights:

   Copyright © 2005-2006 Marco Lorrai
