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.
182 lines
4.9 KiB
182 lines
4.9 KiB
xHTTP Module
|
|
|
|
Daniel-Constantin Mierla
|
|
|
|
<miconda@gmail.com>
|
|
|
|
Edited by
|
|
|
|
Daniel-Constantin Mierla
|
|
|
|
<miconda@gmail.com>
|
|
|
|
Edited by
|
|
|
|
Alex Balashov
|
|
|
|
<abalashov@evaristesys.com>
|
|
|
|
Copyright © 2010 asipto.com
|
|
__________________________________________________________________
|
|
|
|
Table of Contents
|
|
|
|
1. Admin Guide
|
|
|
|
1. Overview
|
|
2. Note on Latency
|
|
3. Dependencies
|
|
|
|
3.1. Kamailio Modules
|
|
3.2. Kamailio Core Settings
|
|
3.3. External Libraries or Applications
|
|
|
|
4. Parameters
|
|
|
|
4.1. url_skip (str)
|
|
4.2. url_match (str)
|
|
|
|
5. Functions
|
|
|
|
5.1. xhttp_reply(code, reason, ctype, body)
|
|
|
|
List of Examples
|
|
|
|
1.1. Set url_skip parameter
|
|
1.2. Set url_match parameter
|
|
1.3. xhttp_reply usage
|
|
|
|
Chapter 1. Admin Guide
|
|
|
|
Table of Contents
|
|
|
|
1. Overview
|
|
2. Note on Latency
|
|
3. Dependencies
|
|
|
|
3.1. Kamailio Modules
|
|
3.2. Kamailio Core Settings
|
|
3.3. External Libraries or Applications
|
|
|
|
4. Parameters
|
|
|
|
4.1. url_skip (str)
|
|
4.2. url_match (str)
|
|
|
|
5. Functions
|
|
|
|
5.1. xhttp_reply(code, reason, ctype, body)
|
|
|
|
1. Overview
|
|
|
|
This module provides basic HTTP/1.0 server functionality inside SIP
|
|
Router. SIP and HTTP are very similar protocols, so, practically, the
|
|
SIP parser can easily handle HTTP requests just by adding a fake Via
|
|
header.
|
|
|
|
The xmlrpc module uses the same concept. xHTTP module offers a generic
|
|
HTTP handling way, by calling event_route[xhttp:request] in your
|
|
config. You can check the HTTP URL via config variable $hu. Note that
|
|
use of $ru will raise errors since the structure of an HTTP URL is not
|
|
compatible with that of a SIP URI.
|
|
|
|
2. Note on Latency
|
|
|
|
Because HTTP requests in xhttp are handled by the same, finite number
|
|
of SIP worker processes that operate on SIP messages, the same general
|
|
principles regarding script execution speed and throughput should be
|
|
observed by the writer in event_route[xhttp:request] as in any other
|
|
part of the route script.
|
|
|
|
For example, if you initiate a database query in the HTTP request route
|
|
that takes a long time to return rows, the SIP worker process in which
|
|
the request is handled will be blocked for that time and unable to
|
|
process other SIP messages. In most typical installations, there are
|
|
only a few of these worker processes running.
|
|
|
|
Therefore, it is highly inadvisable to execute particularly slow things
|
|
in the event_route[xhttp:request], because the request is not handled
|
|
in an asynchronous manner or otherwise peripherally to general SIP
|
|
processing. SIP worker threads will block, pending the outcome of the
|
|
event route just like any other config script route.
|
|
|
|
This is no more or less true for xhttp than it is for any other block
|
|
of script in any other scenario, and does not warrant any extraordinary
|
|
concern. It nevertheless bears mention here because some processes with
|
|
embedded HTTP servers have the request processing take place "outside"
|
|
of the main synchronous event sequence, whether by creating separate
|
|
threads or by some other asynchronous handling. That is not the case
|
|
with xhttp.
|
|
|
|
3. Dependencies
|
|
|
|
3.1. Kamailio Modules
|
|
3.2. Kamailio Core Settings
|
|
3.3. External Libraries or Applications
|
|
|
|
3.1. Kamailio Modules
|
|
|
|
The following modules must be loaded before this module:
|
|
* sl - stateless reply.
|
|
|
|
3.2. Kamailio Core Settings
|
|
|
|
SIP requires a Content-Length header for TCP transport. But most HTTP
|
|
clients do not set the content length for normal GET requests.
|
|
Therefore, the core must be configured to allow incoming requests
|
|
without content length header:
|
|
* tcp_accept_no_cl=yes
|
|
|
|
3.3. External Libraries or Applications
|
|
|
|
The following libraries or applications must be installed before
|
|
running Kamailio with this module loaded:
|
|
* None
|
|
|
|
4. Parameters
|
|
|
|
4.1. url_skip (str)
|
|
4.2. url_match (str)
|
|
|
|
4.1. url_skip (str)
|
|
|
|
Regular expression to match the HTTP URL. If there is a match, then
|
|
event route is not executed.
|
|
|
|
Default value is null (don't skip).
|
|
|
|
Example 1.1. Set url_skip parameter
|
|
...
|
|
modparam("xhttp", "url_skip", "^/RPC2")
|
|
...
|
|
|
|
4.2. url_match (str)
|
|
|
|
Regular expression to match the HTTP URL. If there is no match, then
|
|
event route is not executed. This check is done after url_skip, so if
|
|
both url_skip and url_match would match then the event route is not
|
|
executed (url_skip has higher priority).
|
|
|
|
Default value is null (match everything).
|
|
|
|
Example 1.2. Set url_match parameter
|
|
...
|
|
modparam("xhttp", "url_match", "^/sip/")
|
|
...
|
|
|
|
5. Functions
|
|
|
|
5.1. xhttp_reply(code, reason, ctype, body)
|
|
|
|
5.1. xhttp_reply(code, reason, ctype, body)
|
|
|
|
Send back a reply with content-type and body.
|
|
|
|
Example 1.3. xhttp_reply usage
|
|
...
|
|
event_route[xhttp:request] {
|
|
xhttp_reply("200", "OK", "text/html",
|
|
"<html><body>OK - [$si:$sp]</body></html>");
|
|
}
|
|
...
|