diff --git a/modules/auth_aka/README b/modules/auth_aka/README
index e7c4025beb..869c8c499f 100644
--- a/modules/auth_aka/README
+++ b/modules/auth_aka/README
@@ -651,7 +651,7 @@ Chapter 2. Contributors
Table 2.1. Top contributors by DevScore^(1), authored
commits^(2) and lines added/removed^(3)
Name DevScore Commits Lines ++ Lines --
- 1. Razvan Crainea (@razvancrainea) 52 18 3376 293
+ 1. Razvan Crainea (@razvancrainea) 53 19 3377 294
(1) DevScore = author_commits + author_lines_added /
(project_lines_added / project_commits) + author_lines_deleted
@@ -673,7 +673,7 @@ Chapter 2. Contributors
Table 2.2. Most recently active contributors^(1) to this module
Name Commit Activity
- 1. Razvan Crainea (@razvancrainea) Feb 2024 - Jul 2024
+ 1. Razvan Crainea (@razvancrainea) Feb 2024 - Sep 2024
(1) including any documentation-related commits, excluding
merge commits
diff --git a/modules/auth_aka/doc/contributors.xml b/modules/auth_aka/doc/contributors.xml
index c840c94d25..8340acbc7b 100644
--- a/modules/auth_aka/doc/contributors.xml
+++ b/modules/auth_aka/doc/contributors.xml
@@ -21,10 +21,10 @@
1.
Razvan Crainea (@razvancrainea)
- 52
- 18
- 3376
- 293
+ 53
+ 19
+ 3377
+ 294
@@ -57,7 +57,7 @@
1.
Razvan Crainea (@razvancrainea)
- Feb 2024 - Jul 2024
+ Feb 2024 - Sep 2024
diff --git a/modules/clusterer/README b/modules/clusterer/README
index dc3941690d..f9d988960c 100644
--- a/modules/clusterer/README
+++ b/modules/clusterer/README
@@ -1452,7 +1452,7 @@ Chapter 3. Contributors
2. Liviu Chircu (@liviuchircu) 57 43 653 454
3. Eseanu Marius Cristian (@eseanucristian) 46 10 3142 534
4. Bogdan-Andrei Iancu (@bogdan-iancu) 30 15 1332 124
- 5. Razvan Crainea (@razvancrainea) 25 19 324 145
+ 5. Razvan Crainea (@razvancrainea) 26 20 326 147
6. Ionel Cerghit (@ionel-cerghit) 9 2 250 212
7. Maksym Sobolyev (@sobomax) 8 6 12 13
8. Jasper Hafkenscheid 4 2 107 2
@@ -1482,12 +1482,12 @@ Chapter 3. Contributors
Table 3.2. Most recently active contributors^(1) to this module
Name Commit Activity
- 1. Shanee Vanstone Mar 2024 - Mar 2024
- 2. Maksym Sobolyev (@sobomax) Jan 2021 - Nov 2023
- 3. Vlad Patrascu (@rvlad-patrascu) Jul 2016 - Jul 2023
- 4. Bogdan-Andrei Iancu (@bogdan-iancu) Apr 2016 - Apr 2023
- 5. Liviu Chircu (@liviuchircu) Mar 2016 - Oct 2022
- 6. Razvan Crainea (@razvancrainea) Nov 2015 - Aug 2022
+ 1. Razvan Crainea (@razvancrainea) Nov 2015 - Sep 2024
+ 2. Shanee Vanstone Mar 2024 - Mar 2024
+ 3. Maksym Sobolyev (@sobomax) Jan 2021 - Nov 2023
+ 4. Vlad Patrascu (@rvlad-patrascu) Jul 2016 - Jul 2023
+ 5. Bogdan-Andrei Iancu (@bogdan-iancu) Apr 2016 - Apr 2023
+ 6. Liviu Chircu (@liviuchircu) Mar 2016 - Oct 2022
7. Jasper Hafkenscheid May 2022 - Jul 2022
8. kworm83 Feb 2021 - Feb 2021
9. Fabian Gast (@fgast) Nov 2018 - Jul 2020
diff --git a/modules/clusterer/doc/contributors.xml b/modules/clusterer/doc/contributors.xml
index 38bcf15365..6d7d4dc24f 100644
--- a/modules/clusterer/doc/contributors.xml
+++ b/modules/clusterer/doc/contributors.xml
@@ -53,10 +53,10 @@
5.
Razvan Crainea (@razvancrainea)
- 25
- 19
- 324
- 145
+ 26
+ 20
+ 326
+ 147
6.
@@ -128,34 +128,34 @@
1.
+ Razvan Crainea (@razvancrainea)
+ Nov 2015 - Sep 2024
+
+
+ 2.
Shanee Vanstone
Mar 2024 - Mar 2024
- 2.
+ 3.
Maksym Sobolyev (@sobomax)
Jan 2021 - Nov 2023
- 3.
+ 4.
Vlad Patrascu (@rvlad-patrascu)
Jul 2016 - Jul 2023
- 4.
+ 5.
Bogdan-Andrei Iancu (@bogdan-iancu)
Apr 2016 - Apr 2023
- 5.
+ 6.
Liviu Chircu (@liviuchircu)
Mar 2016 - Oct 2022
-
- 6.
- Razvan Crainea (@razvancrainea)
- Nov 2015 - Aug 2022
-
7.
Jasper Hafkenscheid
diff --git a/modules/event_rabbitmq/README b/modules/event_rabbitmq/README
index a7b91d302e..d31ff35df8 100644
--- a/modules/event_rabbitmq/README
+++ b/modules/event_rabbitmq/README
@@ -19,8 +19,14 @@ event_rabbitmq Module
1.5.2. connect_timeout (integer)
1.5.3. use_tls (integer)
1.5.4. timeout (integer)
+ 1.5.5. server_id (string)
1.6. Exported Functions
+
+ 1.6.1. rabbitmq_publish(server_id, routing_key,
+ message [, [content_type [, headers,
+ headers_vals]]])
+
1.7. Example
1.8. Installation and Running
@@ -49,9 +55,11 @@ event_rabbitmq Module
1.2. Setting the connect_timeout parameter
1.3. Set the use_tls parameter
1.4. Set the timeout parameter
- 1.5. E_PIKE_BLOCKED event
- 1.6. RabbitMQ socket
- 1.7. OpenSIPS config script - sample event_rabbitmq usage
+ 1.5. Set server_id parameter
+ 1.6. rabbitmq_publish() function usage
+ 1.7. E_PIKE_BLOCKED event
+ 1.8. RabbitMQ socket
+ 1.9. OpenSIPS config script - sample event_rabbitmq usage
2.1. Event subscription
2.2. Event subscription
@@ -64,13 +72,14 @@ Chapter 1. Admin Guide
taking advantage of the flexible AMQP protocol.
This module provides the implementation of a RabbitMQ client
- for the Event Interface. It is used to send AMQP messages to a
- RabbitMQ server each time the Event Interface triggers an event
- subscribed for.
-
- The AMQP protocol is only used as the transport layer for
- notifications. The content of a message is presented in the
- next section.
+ that supports two primary functionalities:
+ * Event-Driven Messaging: It is used to send AMQP messages to
+ a RabbitMQ server each time the Event Interface triggers an
+ event subscribed for.
+ * General Message Publishing: This module also enables
+ sending AMQP messages directly to a RabbitMQ server.
+ Messages can be easily customized according to the AMQP
+ specifications, as well the RabbitMQ extensions.
1.2. RabbitMQ events syntax
@@ -193,16 +202,113 @@ modparam("event_rabbitmq", "use_tls", 1)
modparam("event_rabbitmq", "timeout", 1000) # timeout after 1s
...
+1.5.5. server_id (string)
+
+ Specify configuration for a RabbitMQ server. It contains a set
+ of parameters used to customize the connection to the server,
+ as well as to the messages sent. The format of the parameter is
+ [id_name] param1=value1; param2=value2;. The uri parameter is
+ mandatory.
+
+ This parameter can be set multiple times, for each RabbitMQ
+ server.
+
+ The following parameters can be used:
+ * uri - Mandatory parameter - a full amqp URI as described
+ here. Missing fields in the URI will receive default
+ values, such as: user: guest, password: guest, host:
+ localhost, vhost: /, port: 5672. TLS connections are
+ specified using an amqps URI.
+ * frames - the maximum size of an AMQP frame. Optional
+ parameter, default size is 131072.
+ * retries - the number of retries in case a connection is
+ down. Optional parameter, default is disabled (do not
+ retry).
+ * exchange - exchange used to send AMQP messages to. Optional
+ parameter, default is "".
+ * heartbeat - interval in seconds used to send heartbeat
+ messages. Optional parameter, default is disabled.
+ * immediate - indicate to the broker that the message MUST be
+ delivered to a consumer immediately. Optional parameter,
+ default is not immediate.
+ * mandatory - indicate to the broker that the message MUST be
+ routed to a queue. Optional parameter, default is not
+ mandatory.
+ * non-persistent - indicates that the message should not be
+ persistent in case the RabbitMQ server restarts. Optional
+ parameter, default is persistent.
+ * tls_domain - indicates which TLS domain (as defined using
+ the tls_mgm module) to use for this connection. This must
+ be an amqps URI and the use_tls module parameter must be
+ enabled.
+
+ Example 1.5. Set server_id parameter
+...
+# connection to a RabbitMQ server on localhost, default port
+modparam("event_rabbitmq", "server_id","[ID1] uri = amqp://127.0.0.1")
+...
+# connection with a 5 seconds interval for heartbeat messages
+modparam("event_rabbitmq", "server_id","[ID2] uri = amqp://127.0.0.1;
+heartbeat = 5")
+...
+# TLS connection
+modparam("event_rabbitmq", "server_id","[ID3] uri = amqps://127.0.0.1; t
+ls_domain=rmq")
+...
+
1.6. Exported Functions
- No function exported to be used from configuration file.
+1.6.1. rabbitmq_publish(server_id, routing_key, message [,
+[content_type [, headers, headers_vals]]])
+
+ Sends a publish message to a RabbitMQ server.
+
+ This function also allows you to attach AMQP headers and values
+ in the AMQP message. This is done by specifying a set of
+ headers names (in the headers parameter) and the corresponding
+ values (in the headers_vals parameter). The number of AVP
+ values in the headers must be the same as the one in the
+ headers_vals.
+
+ This function can be used from any route.
+
+ The function has the following parameters:
+ * server_id (string) - the id of the RabbitMQ server. Must be
+ one of the parameters defined in the server_id modparam.
+ * routing_key (string) - routing key used to deliver the AMQP
+ message.
+ * message (string) - the body of the message.
+ * content_type (string, optional) - content type of the
+ message sent. By default it is none.
+ * headers (string, optional) - an AVP containing the names of
+ the headers within the AMQP message. If set, headers_vals
+ parameter must also be specified.
+ * headers_vals (string, optional) - an AVP containing the
+ corresponding values of the AMQP headers. If set, headers
+ parameter must also be specified.
+
+ Example 1.6. rabbitmq_publish() function usage
+ ...
+ rabbitmq_publish("ID1", "call", "$fU called $rU");
+ ...
+ rabbitmq_publish("ID1", "call", "{ \'caller\': \'$fU\',
+ \'callee\; \'$rU\'", "applicatio
+n/json");
+ ...
+ $avp(hdr_name) = "caller";
+ $avp(hdr_value) = $fU;
+ $avp(hdr_name) = "callee";
+ $avp(hdr_value) = $rU;
+ rabbitmq_publish("ID2", "call", $rb, , $avp(hdr_name), $avp(hdr_
+value));
+ ...
1.7. Example
This is an example of an event raised by the pike module when
it decides an ip should be blocked:
- Example 1.5. E_PIKE_BLOCKED event
+ Example 1.7. E_PIKE_BLOCKED event
{
"jsonrpc": "2.0",
@@ -213,7 +319,7 @@ modparam("event_rabbitmq", "timeout", 1000) # timeout after 1s
}
- Example 1.6. RabbitMQ socket
+ Example 1.8. RabbitMQ socket
rabbitmq:guest:guest@127.0.0.1:5672/pike
@@ -233,7 +339,7 @@ modparam("event_rabbitmq", "timeout", 1000) # timeout after 1s
The parameters passed to the server are the R-URI username and
the message body.
- Example 1.7. OpenSIPS config script - sample event_rabbitmq
+ Example 1.9. OpenSIPS config script - sample event_rabbitmq
usage
...
loadmodule "signaling.so"
@@ -476,19 +582,20 @@ Chapter 3. Contributors
Table 3.1. Top contributors by DevScore^(1), authored
commits^(2) and lines added/removed^(3)
Name DevScore Commits Lines ++ Lines --
- 1. Razvan Crainea (@razvancrainea) 62 39 1995 310
- 2. Vlad Patrascu (@rvlad-patrascu) 22 12 504 266
- 3. Liviu Chircu (@liviuchircu) 9 7 23 40
- 4. Ovidiu Sas (@ovidiusas) 5 3 35 7
- 5. Bogdan-Andrei Iancu (@bogdan-iancu) 5 3 8 9
- 6. Maksym Sobolyev (@sobomax) 5 3 7 7
- 7. Peter Lemenkov (@lemenkov) 5 3 2 3
- 8. Ionut Ionita (@ionutrazvanionita) 4 2 52 25
- 9. franklyfox 4 2 44 5
- 10. Jarrod Baumann (@jarrodb) 4 2 2 2
-
- All remaining contributors: Eric Tamme (@etamme), Julián Moreno
- Patiño, Vlad Paiu (@vladpaiu).
+ 1. Razvan Crainea (@razvancrainea) 112 73 3590 438
+ 2. Vlad Patrascu (@rvlad-patrascu) 36 20 1044 412
+ 3. Alexandra Titoc 26 2 499 1135
+ 4. Liviu Chircu (@liviuchircu) 16 13 41 76
+ 5. Maksym Sobolyev (@sobomax) 10 8 21 21
+ 6. Bogdan-Andrei Iancu (@bogdan-iancu) 6 4 10 10
+ 7. Ovidiu Sas (@ovidiusas) 5 3 35 7
+ 8. Peter Lemenkov (@lemenkov) 5 3 2 3
+ 9. Ionut Ionita (@ionutrazvanionita) 4 2 52 25
+ 10. franklyfox 4 2 44 5
+
+ All remaining contributors: Jarrod Baumann (@jarrodb), Eric
+ Tamme (@etamme), Julián Moreno Patiño, Walter Doekes
+ (@wdoekes), Vlad Paiu (@vladpaiu).
(1) DevScore = author_commits + author_lines_added /
(project_lines_added / project_commits) + author_lines_deleted
@@ -510,19 +617,20 @@ Chapter 3. Contributors
Table 3.2. Most recently active contributors^(1) to this module
Name Commit Activity
- 1. Razvan Crainea (@razvancrainea) Sep 2011 - Mar 2024
- 2. Vlad Patrascu (@rvlad-patrascu) Jul 2015 - Jun 2023
- 3. Liviu Chircu (@liviuchircu) Mar 2014 - May 2023
- 4. Maksym Sobolyev (@sobomax) Feb 2023 - Feb 2023
- 5. Peter Lemenkov (@lemenkov) Jun 2018 - Aug 2020
- 6. Bogdan-Andrei Iancu (@bogdan-iancu) Oct 2014 - Apr 2019
- 7. Jarrod Baumann (@jarrodb) Apr 2015 - Mar 2016
- 8. Julián Moreno Patiño Feb 2016 - Feb 2016
- 9. Ovidiu Sas (@ovidiusas) Jun 2015 - Jun 2015
- 10. Eric Tamme (@etamme) May 2015 - May 2015
-
- All remaining contributors: Ionut Ionita (@ionutrazvanionita),
- Vlad Paiu (@vladpaiu), franklyfox.
+ 1. Alexandra Titoc Sep 2024 - Sep 2024
+ 2. Razvan Crainea (@razvancrainea) Jan 2017 - Mar 2024
+ 3. Vlad Patrascu (@rvlad-patrascu) May 2017 - Jun 2023
+ 4. Liviu Chircu (@liviuchircu) Apr 2018 - May 2023
+ 5. Maksym Sobolyev (@sobomax) Jul 2017 - Feb 2023
+ 6. Peter Lemenkov (@lemenkov) Jun 2018 - Aug 2020
+ 7. Walter Doekes (@wdoekes) Apr 2019 - Apr 2019
+ 8. Bogdan-Andrei Iancu (@bogdan-iancu) Apr 2019 - Apr 2019
+ 9. Jarrod Baumann (@jarrodb) Apr 2015 - Mar 2016
+ 10. Julián Moreno Patiño Feb 2016 - Feb 2016
+
+ All remaining contributors: Ovidiu Sas (@ovidiusas), Eric Tamme
+ (@etamme), Ionut Ionita (@ionutrazvanionita), Vlad Paiu
+ (@vladpaiu), franklyfox.
(1) including any documentation-related commits, excluding
merge commits
@@ -531,9 +639,10 @@ Chapter 4. Documentation
4.1. Contributors
- Last edited by: Razvan Crainea (@razvancrainea), Liviu Chircu
- (@liviuchircu), Vlad Patrascu (@rvlad-patrascu), Peter Lemenkov
- (@lemenkov), Ionut Ionita (@ionutrazvanionita).
+ Last edited by: Alexandra Titoc, Razvan Crainea
+ (@razvancrainea), Liviu Chircu (@liviuchircu), Vlad Patrascu
+ (@rvlad-patrascu), Peter Lemenkov (@lemenkov), Ionut Ionita
+ (@ionutrazvanionita).
Documentation Copyrights:
diff --git a/modules/event_rabbitmq/doc/contributors.xml b/modules/event_rabbitmq/doc/contributors.xml
index b97745269c..616826aabd 100644
--- a/modules/event_rabbitmq/doc/contributors.xml
+++ b/modules/event_rabbitmq/doc/contributors.xml
@@ -21,53 +21,61 @@
1.
Razvan Crainea (@razvancrainea)
- 62
- 39
- 1995
- 310
+ 112
+ 73
+ 3590
+ 438
2.
Vlad Patrascu (@rvlad-patrascu)
- 22
- 12
- 504
- 266
+ 36
+ 20
+ 1044
+ 412
3.
- Liviu Chircu (@liviuchircu)
- 9
- 7
- 23
- 40
+ Alexandra Titoc
+ 26
+ 2
+ 499
+ 1135
4.
- Ovidiu Sas (@ovidiusas)
- 5
- 3
- 35
- 7
+ Liviu Chircu (@liviuchircu)
+ 16
+ 13
+ 41
+ 76
5.
- Bogdan-Andrei Iancu (@bogdan-iancu)
- 5
- 3
+ Maksym Sobolyev (@sobomax)
+ 10
8
- 9
+ 21
+ 21
6.
- Maksym Sobolyev (@sobomax)
+ Bogdan-Andrei Iancu (@bogdan-iancu)
+ 6
+ 4
+ 10
+ 10
+
+
+ 7.
+ Ovidiu Sas (@ovidiusas)
5
3
- 7
+ 35
7
- 7.
+ 8.
Peter Lemenkov (@lemenkov)
5
3
@@ -75,7 +83,7 @@
3
- 8.
+ 9.
Ionut Ionita (@ionutrazvanionita)
4
2
@@ -83,25 +91,17 @@
25
- 9.
+ 10.
franklyfox
4
2
44
5
-
- 10.
- Jarrod Baumann (@jarrodb)
- 4
- 2
- 2
- 2
-
-All remaining contributors: Eric Tamme (@etamme), Julián Moreno Patiño, Vlad Paiu (@vladpaiu).
+All remaining contributors: Jarrod Baumann (@jarrodb), Eric Tamme (@etamme), Julián Moreno Patiño, Walter Doekes (@wdoekes), Vlad Paiu (@vladpaiu).
(1) DevScore = author_commits + author_lines_added / (project_lines_added / project_commits) + author_lines_deleted / (project_lines_deleted / project_commits)
@@ -128,58 +128,58 @@
1.
- Razvan Crainea (@razvancrainea)
- Sep 2011 - Mar 2024
+ Alexandra Titoc
+ Sep 2024 - Sep 2024
2.
- Vlad Patrascu (@rvlad-patrascu)
- Jul 2015 - Jun 2023
+ Razvan Crainea (@razvancrainea)
+ Jan 2017 - Mar 2024
3.
- Liviu Chircu (@liviuchircu)
- Mar 2014 - May 2023
+ Vlad Patrascu (@rvlad-patrascu)
+ May 2017 - Jun 2023
4.
- Maksym Sobolyev (@sobomax)
- Feb 2023 - Feb 2023
+ Liviu Chircu (@liviuchircu)
+ Apr 2018 - May 2023
5.
- Peter Lemenkov (@lemenkov)
- Jun 2018 - Aug 2020
+ Maksym Sobolyev (@sobomax)
+ Jul 2017 - Feb 2023
6.
- Bogdan-Andrei Iancu (@bogdan-iancu)
- Oct 2014 - Apr 2019
+ Peter Lemenkov (@lemenkov)
+ Jun 2018 - Aug 2020
7.
- Jarrod Baumann (@jarrodb)
- Apr 2015 - Mar 2016
+ Walter Doekes (@wdoekes)
+ Apr 2019 - Apr 2019
8.
- Julián Moreno Patiño
- Feb 2016 - Feb 2016
+ Bogdan-Andrei Iancu (@bogdan-iancu)
+ Apr 2019 - Apr 2019
9.
- Ovidiu Sas (@ovidiusas)
- Jun 2015 - Jun 2015
+ Jarrod Baumann (@jarrodb)
+ Apr 2015 - Mar 2016
10.
- Eric Tamme (@etamme)
- May 2015 - May 2015
+ Julián Moreno Patiño
+ Feb 2016 - Feb 2016
-All remaining contributors: Ionut Ionita (@ionutrazvanionita), Vlad Paiu (@vladpaiu), franklyfox.
+All remaining contributors: Ovidiu Sas (@ovidiusas), Eric Tamme (@etamme), Ionut Ionita (@ionutrazvanionita), Vlad Paiu (@vladpaiu), franklyfox.
(1) including any documentation-related commits, excluding merge commits
@@ -190,7 +190,7 @@
Documentation
Contributors
- Last edited by: Razvan Crainea (@razvancrainea), Liviu Chircu (@liviuchircu), Vlad Patrascu (@rvlad-patrascu), Peter Lemenkov (@lemenkov), Ionut Ionita (@ionutrazvanionita).
+ Last edited by: Alexandra Titoc, Razvan Crainea (@razvancrainea), Liviu Chircu (@liviuchircu), Vlad Patrascu (@rvlad-patrascu), Peter Lemenkov (@lemenkov), Ionut Ionita (@ionutrazvanionita).
diff --git a/modules/event_sqs/README b/modules/event_sqs/README
new file mode 100644
index 0000000000..05595a7692
--- /dev/null
+++ b/modules/event_sqs/README
@@ -0,0 +1,228 @@
+event_sqs 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.2.3. Deploying Amazon SQS locally on your computer
+
+ 1.3. Exported Parameters
+
+ 1.3.1. queue_url (string)
+
+ 1.4. Exported Functions
+
+ 1.4.1. sqs_publish_message(queue_id, message)
+ 1.4.2.
+
+ 1.5. Examples
+
+ 1.5.1. Event-Driven Messaging with Event Interface
+
+ 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 queue_url parameter
+ 1.2. sqs_publish_message() function usage
+
+Chapter 1. Admin Guide
+
+1.1. Overview
+
+ The event_sqs module is an implementation of an Amazon SQS
+ producer. It serves as a transport backend for the Event
+ Interface and also provides a stand-alone connector to be used
+ from the OpenSIPS script in order to publish messages to SQS
+ queues.
+
+ https://aws.amazon.com/sqs/
+
+1.2. Dependencies
+
+1.2.1. OpenSIPS Modules
+
+ There is no need to load any module before this module.
+
+1.2.2. External Libraries or Applications
+
+ The following libraries or applications must be installed
+ before running OpenSIPS with this module loaded:
+ * AWS SDK for C++:
+ By following these steps, you'll have the AWS SDK for C++
+ installed and configured on your Linux system, allowing you
+ to integrate with SQS: AWS SDK for C++ Installation Guide
+ Additional instructions for installation can be found at:
+ AWS SDK for C++ GitHub Repository
+
+1.2.3. Deploying Amazon SQS locally on your computer
+
+ For testing purposes, you can run SQS locally. To achieve this,
+ you start localstack on your computer:
+
+pip install localstack
+localstack start
+
+ Don't forget to set the necessary environment variables for
+ testing, for example:
+
+export AWS_ACCESS_KEY_ID=test
+export AWS_SECRET_ACCESS_KEY=test
+export AWS_DEFAULT_REGION=us-east-1
+
+ Here you can find some cli commands such as create-queue,
+ send/receive-message, etc.:
+ https://docs.aws.amazon.com/cli/latest/reference/sqs/
+
+1.3. Exported Parameters
+
+1.3.1. queue_url (string)
+
+ This parameter specifies the configuration for an SQS queue
+ that can be used to publish messages directly from the script,
+ using the sqs_publish_message() function or to send messages
+ using raise_event function.
+
+ The format of the parameter is: [ID]sqs_url, where ID is an
+ identifier for this SQS queue instance and sqs_url is the full
+ url of the queue.
+
+ The queue_url contains:
+ * endpoint
+ * region
+
+ This parameter can be set multiple times.
+
+ Example 1.1. Set queue_url parameter
+
+...
+
+modparam("event_sqs", "queue_url",
+ "[q1]https://sqs.us-west-2.amazonaws.com/123456789012/Queue1")
+
+modparam("event_sqs", "queue_url",
+ "[q2]http://sqs.us-east-1.localhost.localstack.cloud:4566/0000
+00000000/Queue2")
+
+...
+
+1.4. Exported Functions
+
+1.4.1. sqs_publish_message(queue_id, message)
+
+ Publishes a message to an SQS queue. As the actual send
+ operation is done asynchronously, this function does not block
+ and returns immediately after queuing the message for sending.
+
+ This function can be used from any route.
+
+ The function has the following parameters:
+ * queue_id (string) The ID of the SQS queue. Must be one of
+ the IDs defined through the `queue_url` modparam.
+ * message (string) - The payload of the message to publish.
+
+ Example 1.2. sqs_publish_message() function usage
+
+...
+
+$var(msg) = "Hello, this is a message to SQS!";
+sqs_publish_message("q1", $var(msg));
+
+...
+
+1.5. Examples
+
+1.5.1. Event-Driven Messaging with Event Interface
+
+ OpenSIPS' event interface can be utilized to send messages to
+ SQS by subscribing to an event and raising it when needed.
+
+ Steps:
+ * Event Subscription:
+ First, register the event subscription in your OpenSIPS
+ configuration file within the `startup_route`:
+
+subscribe_event("MY_EVENT",
+ "sqs:http://sqs.us-east-1.localhost.localstack.cloud:4566/000000
+000000/Queue2");
+
+ * Event Subscription via CLI:
+ After starting OpenSIPS, you can subscribe to the event
+ from another terminal using the OpenSIPS CLI:
+
+opensips-cli -x mi event_subscribe MY_EVENT \
+ sqs:http://sqs.us-east-1.localhost.localstack.cloud:4566/00000
+0000000/Queue2
+
+ * Raise the Event and Send Message:
+ Finally, to send a message, raise the subscribed event with
+ the desired message content:
+
+opensips-cli -x mi raise_event MY_EVENT 'OpenSIPS Message'
+
+Chapter 2. Contributors
+
+2.1. By Commit Statistics
+
+ Table 2.1. Top contributors by DevScore^(1), authored
+ commits^(2) and lines added/removed^(3)
+ Name DevScore Commits Lines ++ Lines --
+ 1. Alexandra Titoc 27 7 1629 366
+ 2. Razvan Crainea (@razvancrainea) 4 2 8 3
+
+ (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
+ Name Commit Activity
+ 1. Razvan Crainea (@razvancrainea) Sep 2024 - Sep 2024
+ 2. Alexandra Titoc Aug 2024 - Aug 2024
+
+ (1) including any documentation-related commits, excluding
+ merge commits
+
+Chapter 3. Documentation
+
+3.1. Contributors
+
+ Last edited by: Razvan Crainea (@razvancrainea), Alexandra
+ Titoc.
+
+ Documentation Copyrights:
+
+ Copyright © 2024 www.opensips-solutions.com
diff --git a/modules/event_sqs/doc/contributors.xml b/modules/event_sqs/doc/contributors.xml
index 1fca1ab758..a1e04d3275 100644
--- a/modules/event_sqs/doc/contributors.xml
+++ b/modules/event_sqs/doc/contributors.xml
@@ -21,10 +21,18 @@
1.
Alexandra Titoc
- 20
+ 27
+ 7
+ 1629
+ 366
+
+
+ 2.
+ Razvan Crainea (@razvancrainea)
4
- 1246
- 272
+ 2
+ 8
+ 3
@@ -56,6 +64,11 @@
1.
+ Razvan Crainea (@razvancrainea)
+ Sep 2024 - Sep 2024
+
+
+ 2.
Alexandra Titoc
Aug 2024 - Aug 2024
@@ -73,7 +86,7 @@
Documentation
Contributors
-
+ Last edited by: Razvan Crainea (@razvancrainea), Alexandra Titoc.
diff --git a/modules/rtpengine/README b/modules/rtpengine/README
index 7c3c5476d1..2a146b33dc 100644
--- a/modules/rtpengine/README
+++ b/modules/rtpengine/README
@@ -123,31 +123,32 @@ rtpengine Module
1.17. rtpengine_offer usage with body replace
1.18. rtpengine_offer usage with call recording
1.19. rtpengine_offer usage for transcoding
- 1.20. rtpengine_answer usage
- 1.21. rtpengine_delete usage
- 1.22. rtpengine_manage usage
- 1.23. rtpengine_start_recording usage
- 1.24. rtpengine_stop_recording usage
- 1.25. Ringback tone using rtpengine_play_media
- 1.26. Manage music on hold using rtpengine_play_media
- 1.27. Ringback tone stop using rtpengine_stop_media
- 1.28. Example use of the last-frame-pos parameter
+ 1.20. Set extra_failover_error parameter
+ 1.21. rtpengine_answer usage
+ 1.22. rtpengine_delete usage
+ 1.23. rtpengine_manage usage
+ 1.24. rtpengine_start_recording usage
+ 1.25. rtpengine_stop_recording usage
+ 1.26. Ringback tone using rtpengine_play_media
+ 1.27. Manage music on hold using rtpengine_play_media
+ 1.28. Ringback tone stop using rtpengine_stop_media
+ 1.29. Example use of the last-frame-pos parameter
rtpengine_stop_media
- 1.29. Example of rtpengine_block_media usage
- 1.30. Example of rtpengine_unblock_media usage
- 1.31. Example of rtpengine_block_dtmf usage
- 1.32. Example of rtpengine_unblock_dtmf usage
- 1.33. Example of rtpengine_start_forwarding usage
- 1.34. Example of rtpengine_stop_forwarding usage
- 1.35. Example of rtpengine_play_dtmf usage
- 1.36. $rtpstat Usage
- 1.37. $rtpstat(STAT)
- 1.38. $rtpquery Usage
- 1.39. rtpengine_enable usage
- 1.40. rtpengine_show usage
- 1.41. rtpengine_reload usage
- 1.42. teardown usage
+ 1.30. Example of rtpengine_block_media usage
+ 1.31. Example of rtpengine_unblock_media usage
+ 1.32. Example of rtpengine_block_dtmf usage
+ 1.33. Example of rtpengine_unblock_dtmf usage
+ 1.34. Example of rtpengine_start_forwarding usage
+ 1.35. Example of rtpengine_stop_forwarding usage
+ 1.36. Example of rtpengine_play_dtmf usage
+ 1.37. $rtpstat Usage
+ 1.38. $rtpstat(STAT)
+ 1.39. $rtpquery Usage
+ 1.40. rtpengine_enable usage
+ 1.41. rtpengine_show usage
+ 1.42. rtpengine_reload usage
+ 1.43. teardown usage
Chapter 1. Admin Guide
@@ -200,6 +201,15 @@ Chapter 1. Admin Guide
the avp needs to be set only once before rtpengine_offer() or
rtpengine_manage() call.
+ The module is able to failover to a new node within a set, if a
+ chosen one has communication issues. Moreover, it will also
+ failover if the node returns one of the following errors:
+ * Parallel session limit reached
+ * Ran out of ports
+
+ You can use the extra_failover_error parameter to extend the
+ above list.
+
1.3. Dependencies
1.3.1. OpenSIPS Modules
@@ -739,6 +749,27 @@ rtpengine_offer("... codec-mask-PCMA codec-strip-opus transcode-opus ...
");
...
+1.5.2.1. extra_failover_error (string)
+
+ Contains a (XDB) regular expression that can be used to match
+ an error received from a RTPEngine node. If matched the module
+ tries to use a new node to handle the affected command.
+
+ This parameter can be used to extend the list (see ??? of
+ errors the module implicitely fails over.
+
+ Note each declaration will define a single expression/matching
+ rule. If you want to define multiple rules, you need to define
+ the parameter multiple times.
+
+ Default value is empty, no extra errors are being used.
+
+ Example 1.20. Set extra_failover_error parameter
+...
+modparam("rtpengine", "extra_failover_error", "Parallel session limit re
+ached")
+...
+
1.5.3. rtpengine_answer([flags[, sock_pvar[, sdp_pvar[, body]]]])
Rewrites SDP body to ensure that media is passed through an RTP
@@ -751,7 +782,7 @@ rtpengine_offer("... codec-mask-PCMA codec-strip-opus transcode-opus ...
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
FAILURE_ROUTE, BRANCH_ROUTE.
- Example 1.20. rtpengine_answer usage
+ Example 1.21. rtpengine_answer usage
See rtpengine_offer() function example above for examples.
@@ -765,7 +796,7 @@ rtpengine_offer("... codec-mask-PCMA codec-strip-opus transcode-opus ...
This function can be used from ALL_ROUTES.
- Example 1.21. rtpengine_delete usage
+ Example 1.22. rtpengine_delete usage
...
rtpengine_delete();
...
@@ -793,7 +824,7 @@ rtpengine_delete();
This function can be used from ALL_ROUTES.
- Example 1.22. rtpengine_manage usage
+ Example 1.23. rtpengine_manage usage
...
rtpengine_manage();
...
@@ -813,7 +844,7 @@ rtpengine_manage();
This function can be used from any route.
- Example 1.23. rtpengine_start_recording usage
+ Example 1.24. rtpengine_start_recording usage
...
rtpengine_start_recording();
...
@@ -833,7 +864,7 @@ rtpengine_start_recording();
This function can be used from any route.
- Example 1.24. rtpengine_stop_recording usage
+ Example 1.25. rtpengine_stop_recording usage
...
rtpengine_stop_recording();
...
@@ -866,13 +897,13 @@ sockvar]]])
This function can be used from any route.
- Example 1.25. Ringback tone using rtpengine_play_media
+ Example 1.26. Ringback tone using rtpengine_play_media
...
if (is_method("INVITE") && !has_totag())
rtpengine_play_media("file=/path/to/ringback_tone_file.wav");
...
- Example 1.26. Manage music on hold using rtpengine_play_media
+ Example 1.27. Manage music on hold using rtpengine_play_media
...
if (is_method("INVITE") && has_totag()) {
if (is_audio_on_hold()) {
@@ -904,13 +935,13 @@ e.wav");
This function can be used from any route.
- Example 1.27. Ringback tone stop using rtpengine_stop_media
+ Example 1.28. Ringback tone stop using rtpengine_stop_media
...
if (is_method("INVITE") && $rs == 200)
rtpengine_stop_media();
...
- Example 1.28. Example use of the last-frame-pos parameter
+ Example 1.29. Example use of the last-frame-pos parameter
rtpengine_stop_media
...
if (is_method("INVITE") && has_totag()) {
@@ -935,7 +966,7 @@ os));
This function can be used from any route.
- Example 1.29. Example of rtpengine_block_media usage
+ Example 1.30. Example of rtpengine_block_media usage
...
rtpengine_block_media();
...
@@ -948,7 +979,7 @@ rtpengine_block_media();
This function can be used from any route.
- Example 1.30. Example of rtpengine_unblock_media usage
+ Example 1.31. Example of rtpengine_unblock_media usage
...
rtpengine_unblock_media();
...
@@ -961,7 +992,7 @@ rtpengine_unblock_media();
This function can be used from any route.
- Example 1.31. Example of rtpengine_block_dtmf usage
+ Example 1.32. Example of rtpengine_block_dtmf usage
...
rtpengine_block_dtmf();
...
@@ -974,7 +1005,7 @@ rtpengine_block_dtmf();
This function can be used from any route.
- Example 1.32. Example of rtpengine_unblock_dtmf usage
+ Example 1.33. Example of rtpengine_unblock_dtmf usage
...
rtpengine_unblock_dtmf();
...
@@ -989,7 +1020,7 @@ rtpengine_unblock_dtmf();
This function can be used from any route.
- Example 1.33. Example of rtpengine_start_forwarding usage
+ Example 1.34. Example of rtpengine_start_forwarding usage
...
rtpengine_start_forwarding();
...
@@ -1001,7 +1032,7 @@ rtpengine_start_forwarding();
This function can be used from any route.
- Example 1.34. Example of rtpengine_stop_forwarding usage
+ Example 1.35. Example of rtpengine_stop_forwarding usage
...
rtpengine_stop_forwarding();
...
@@ -1022,7 +1053,7 @@ rtpengine_stop_forwarding();
This function can be used from any route.
- Example 1.35. Example of rtpengine_play_dtmf usage
+ Example 1.36. Example of rtpengine_play_dtmf usage
...
rtpengine_play_dtmf("0"); # send the 0 code upstream
...
@@ -1035,7 +1066,7 @@ rtpengine_play_dtmf("0"); # send the 0 code upstream
statistics from the RTP proxy are provided as a string and it
does contain several packet counters.
- Example 1.36. $rtpstat Usage
+ Example 1.37. $rtpstat Usage
...
append_hf("X-RTP-Statistics: $rtpstat\r\n");
...
@@ -1108,7 +1139,7 @@ rtpengine_play_dtmf("0"); # send the 0 code upstream
short, or if the phones do not properly report RTP statistics
over RTCP). In these cases the variable returns the NULL value.
- Example 1.37. $rtpstat(STAT)
+ Example 1.38. $rtpstat(STAT)
...
xlog("Average MOS of the entire call is $rtpstat(MOS-average)\r\n");
xlog("Average MOS of caller is $(rtpstat(MOS-average)[$ft])\r\n");
@@ -1128,7 +1159,7 @@ pstat(MOS-min-at)[$ft])\r\n");
any information from the query, such as RTP statistics, or MOS
values.
- Example 1.38. $rtpquery Usage
+ Example 1.39. $rtpquery Usage
...
$json(reply) := $rtpquery;
xlog("Total RTP Stats: $json(reply/totals)\n");
@@ -1152,7 +1183,7 @@ pstat(MOS-min-at)[$ft])\r\n");
different set), all of its instances will be enabled/disabled
IF no set ID is provided.
- Example 1.39. rtpengine_enable usage
+ Example 1.40. rtpengine_enable usage
...
## disable all rtpengines by URL
$ opensips-cli -x mi rtpengine_enable udp:192.168.2.133:8081 0
@@ -1168,7 +1199,7 @@ $ opensips-cli -x mi rtpengine_enable url=udp:192.168.2.133:8081 enable=
No parameter.
- Example 1.40. rtpengine_show usage
+ Example 1.41. rtpengine_show usage
...
$ opensips-cli -x mi rtpengine_show
...
@@ -1187,7 +1218,7 @@ $ opensips-cli -x mi rtpengine_show
No parameter.
- Example 1.41. rtpengine_reload usage
+ Example 1.42. rtpengine_reload usage
...
$ opensips-cli -x mi rtpengine_reload
$ opensips-cli -x mi rtpengine_reload type=soft
@@ -1206,7 +1237,7 @@ $ opensips-cli -x mi rtpengine_reload type=soft
done just to make rtpengine happy when trying to terminate SIP
calls based on RTP timeouts.
- Example 1.42. teardown usage
+ Example 1.43. teardown usage
...
$ opensips-cli -x mi teardown Y2IwYjQ2YmE2ZDg5MWVkNDNkZGIwZjAzNGM1ZDY0ZD
Q
@@ -1314,7 +1345,7 @@ Chapter 3. Contributors
Table 3.1. Top contributors by DevScore^(1), authored
commits^(2) and lines added/removed^(3)
Name DevScore Commits Lines ++ Lines --
- 1. Razvan Crainea (@razvancrainea) 231 128 6139 3125
+ 1. Razvan Crainea (@razvancrainea) 235 129 6345 3150
2. Bogdan-Andrei Iancu (@bogdan-iancu) 31 17 423 595
3. John Burke (@john08burke) 25 17 647 102
4. Liviu Chircu (@liviuchircu) 20 16 91 173
@@ -1350,7 +1381,7 @@ Chapter 3. Contributors
Table 3.2. Most recently active contributors^(1) to this module
Name Commit Activity
- 1. Razvan Crainea (@razvancrainea) Jun 2014 - Aug 2024
+ 1. Razvan Crainea (@razvancrainea) Jun 2014 - Sep 2024
2. Norman Brandinger (@NormB) Jun 2024 - Jun 2024
3. Maksym Sobolyev (@sobomax) Jan 2021 - Nov 2023
4. Liviu Chircu (@liviuchircu) Jul 2014 - May 2023
diff --git a/modules/rtpengine/doc/contributors.xml b/modules/rtpengine/doc/contributors.xml
index 978c6fcc81..99452c967b 100644
--- a/modules/rtpengine/doc/contributors.xml
+++ b/modules/rtpengine/doc/contributors.xml
@@ -21,10 +21,10 @@
1.
Razvan Crainea (@razvancrainea)
- 231
- 128
- 6139
- 3125
+ 235
+ 129
+ 6345
+ 3150
2.
@@ -129,7 +129,7 @@
1.
Razvan Crainea (@razvancrainea)
- Jun 2014 - Aug 2024
+ Jun 2014 - Sep 2024
2.
diff --git a/modules/tm/README b/modules/tm/README
index bf06bafe8e..bfe702d716 100644
--- a/modules/tm/README
+++ b/modules/tm/README
@@ -1772,7 +1772,7 @@ Chapter 4. Contributors
2. Jiri Kuthan (@jiriatipteldotorg) 537 198 18723 11167
3. Jan Janak (@janakj) 161 76 6462 1840
4. Andrei Pelinescu-Onciul 146 105 2447 1210
- 5. Razvan Crainea (@razvancrainea) 139 107 2056 854
+ 5. Razvan Crainea (@razvancrainea) 142 109 2060 865
6. Liviu Chircu (@liviuchircu) 114 88 1303 913
7. Daniel-Constantin Mierla (@miconda) 43 37 322 166
8. Vlad Patrascu (@rvlad-patrascu) 40 18 916 826
@@ -1814,8 +1814,8 @@ Chapter 4. Contributors
Table 4.2. Most recently active contributors^(1) to this module
Name Commit Activity
- 1. Liviu Chircu (@liviuchircu) Jan 2013 - Aug 2024
- 2. Razvan Crainea (@razvancrainea) Jul 2010 - Aug 2024
+ 1. Razvan Crainea (@razvancrainea) Jul 2010 - Sep 2024
+ 2. Liviu Chircu (@liviuchircu) Jan 2013 - Aug 2024
3. Bogdan-Andrei Iancu (@bogdan-iancu) Nov 2001 - May 2024
4. Carsten Bock Mar 2024 - Mar 2024
5. Maksym Sobolyev (@sobomax) Mar 2004 - Nov 2023
diff --git a/modules/tm/doc/contributors.xml b/modules/tm/doc/contributors.xml
index abd3e7397d..ba0b81ca82 100644
--- a/modules/tm/doc/contributors.xml
+++ b/modules/tm/doc/contributors.xml
@@ -53,10 +53,10 @@
5.
Razvan Crainea (@razvancrainea)
- 139
- 107
- 2056
- 854
+ 142
+ 109
+ 2060
+ 865
6.
@@ -128,13 +128,13 @@
1.
- Liviu Chircu (@liviuchircu)
- Jan 2013 - Aug 2024
+ Razvan Crainea (@razvancrainea)
+ Jul 2010 - Sep 2024
2.
- Razvan Crainea (@razvancrainea)
- Jul 2010 - Aug 2024
+ Liviu Chircu (@liviuchircu)
+ Jan 2013 - Aug 2024
3.
diff --git a/modules/topology_hiding/README b/modules/topology_hiding/README
index 323886335e..c4de230c6c 100644
--- a/modules/topology_hiding/README
+++ b/modules/topology_hiding/README
@@ -336,7 +336,7 @@ Chapter 2. Contributors
commits^(2) and lines added/removed^(3)
Name DevScore Commits Lines ++ Lines --
1. Vlad Paiu (@vladpaiu) 32 8 2700 25
- 2. Razvan Crainea (@razvancrainea) 30 23 329 198
+ 2. Razvan Crainea (@razvancrainea) 31 24 336 205
3. Bogdan-Andrei Iancu (@bogdan-iancu) 25 21 146 88
4. Liviu Chircu (@liviuchircu) 16 14 80 55
5. Vlad Patrascu (@rvlad-patrascu) 9 6 82 72
@@ -365,7 +365,7 @@ Chapter 2. Contributors
Table 2.2. Most recently active contributors^(1) to this module
Name Commit Activity
- 1. Razvan Crainea (@razvancrainea) Aug 2015 - Aug 2024
+ 1. Razvan Crainea (@razvancrainea) Aug 2015 - Sep 2024
2. Liviu Chircu (@liviuchircu) Mar 2015 - May 2024
3. Bogdan-Andrei Iancu (@bogdan-iancu) Mar 2015 - Dec 2023
4. James Stanley Dec 2023 - Dec 2023
diff --git a/modules/topology_hiding/doc/contributors.xml b/modules/topology_hiding/doc/contributors.xml
index cb11eaecd7..608ddf26a7 100644
--- a/modules/topology_hiding/doc/contributors.xml
+++ b/modules/topology_hiding/doc/contributors.xml
@@ -29,10 +29,10 @@
2.
Razvan Crainea (@razvancrainea)
- 30
- 23
- 329
- 198
+ 31
+ 24
+ 336
+ 205
3.
@@ -121,7 +121,7 @@
1.
Razvan Crainea (@razvancrainea)
- Aug 2015 - Aug 2024
+ Aug 2015 - Sep 2024
2.