This repository contains a collection of Python packages for OpenSIPS. These modules are designed to be as lightweight as possible and provide a simple interface for interacting with OpenSIPS. Alongside the source code, the repository also contains a Docker image that comes with the OpenSIPS Python packages pre-installed.
Currently, the following packages are available:
mi- can be used to execute OpenSIPS Management Interface (MI) commands.event- allows you to use OpenSIPS Event Interface subscriptions.
-
Install the package from source code:
git clone cd python-opebsips pip install .
or from PyPI:
pip install opensips
-
Import the package in your Python code:
from opensips.mi import OpenSIPSMI, OpenSIPSMIException from opensips.event import OpenSIPSEvent, OpenSIPSEventException, OpenSIPSEventHandler
-
Use the methods provided by the modules:
mi = OpenSIPSMI('http', url='http://localhost:8888/mi') try: response = mi.execute('ps') # do something with the response except OpenSIPSMIException as e: # handle the exception
mi_connector = OpenSIPSMI('http', url='http://localhost:8888/mi') hdl = OpenSIPSEventHandler(mi_connector, 'datagram', ip='127.0.0.1', port=50012) def some_callback(message): # do something with the message (it is a JSON object) pass ev: OpenSIPSEvent = None try: event = hdl.subscribe('E_PIKE_BLOCKED', some_callback) except OpenSIPSEventException as e: # handle the exception try: ev.unsubscribe('E_PIKE_BLOCKED') except OpenSIPSEventException as e: # handle the exception
- MI - contains information about supported MI communication types and required parameters for each type.
- Event Interface - lists the supported event transport protocols and provides information about the required parameters for each protocol.
- Docker - provides information about the Docker image that contains the OpenSIPS Python packages.
After installing the package, you can use the provided opensips-mi script to run MI commands. This script takes the following arguments:
-tor--type- the type of the MI communication (http,datagramorfifo).-ior--ip- the IP address of the OpenSIPS server.-por--port- the port of the OpenSIPS MI.-for--fifo-file- the path to the FIFO file.-fbor--fifo-fallback- the path to the FIFO fallback file.-fdor--fifo-reply-dir- the directory where the FIFO reply files are stored.--env-file- the path to the environment file that contains the MI parameters (by default, the script will look for the.envfile in the current directory); lower priority than the command line arguments.-dsor--datagram-socket- Unix Datagram Socket.-dtor--datagram-timeout- Datagram Socket timeout in seconds. Default is 0.1.-dbor--datagram-buffer-size- Datagram Socket buffer size in bytes. Default is 32768.
# general usage
opensips-mi -t datagram -p 8080 command_name [command_args ...]
# this will execute get_statistics command
opensips-mi -t datagram -p 8080 -s core: shmem:
# you can pass json string as argument with -j flag for commands that require arrays as arguments
opensips-mi -t datagram -p 8080 get_statistics -j "{'statistics': ['core:', 'shmem:']}"You can use the provided opensips-event script to subscribe for OpenSIPS events. This script takes the following arguments:
- all the above arguments for the MI communication
-Tor--transport- the transport protocol to use (datagram,stream).-lior--listen-ip- the IP address to listen on.-lpor--listen-port- the port to listen on.-eor--expire- the expiration time for the subscription.- the event name to subscribe for.
--env-file- the path to the environment file that contains the MI parameters (by default, the script will look for the.envfile in the current directory); lower priority than the command line arguments.
opensips-event -t datagram -p 8080 -T datagram -lp 50012 -e 3600 E_PIKE_BLOCKEDThe python-opensips source code is licensed under the GNU General Public License v3.0
All documentation files (i.e. .md extension) are licensed under the Creative Common License 4.0
© 2024 - OpenSIPS Solutions
