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.
85 lines
2.2 KiB
85 lines
2.2 KiB
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
|
|
|
<section id="xmlrpc.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
|
|
<sectioninfo>
|
|
</sectioninfo>
|
|
|
|
<title>Functions</title>
|
|
|
|
<section id="xmlrpc.dispatch_rpc">
|
|
<title>
|
|
<function>dispatch_rpc()</function>
|
|
</title>
|
|
<para>
|
|
This function processes an XMLRPC request, found in the body of
|
|
the request.
|
|
</para>
|
|
<para>
|
|
It should be used only in a route specified using the
|
|
<varname>"route"</varname> module parameter or if the request method
|
|
is GET or POST (using it for other request methods will not have
|
|
adverse side-effects, but it will probably not work).
|
|
</para>
|
|
<para>
|
|
dispatch_rpc() extracts the XML-RPC document from the body of the
|
|
request to determine the name of the RPC method to be called and then
|
|
it searches through the list of all the RPC functions to find a
|
|
function with matching name. If such a function is found then
|
|
dispatch_rpc() will pass control to the function to handle the
|
|
request.
|
|
</para>
|
|
<example>
|
|
<title><function>dispatch_rpc</function> usage</title>
|
|
<programlisting>
|
|
#...
|
|
modparam("xmlrpc", "route", "XMLRPC");
|
|
#...
|
|
route[XMLRPC]{
|
|
if search("^User-Agent:.*xmlrpclib"))
|
|
set_reply_close();
|
|
set_reply_no_connect(); # optional
|
|
dispatch_rpc();
|
|
}
|
|
</programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<section id="xmlrpc.xmlrpc_reply">
|
|
<title>
|
|
<function>xmlrpc_reply(code, reason)</function>
|
|
</title>
|
|
<para>
|
|
This function can be called from the config script to directly
|
|
generate an XML-RPC reply.
|
|
</para>
|
|
<example>
|
|
<title><function>xmlrpc_reply</function> usage</title>
|
|
<programlisting>
|
|
#...
|
|
modparam("xmlrpc", "route", "XMLRPC");
|
|
#...
|
|
route[XMLRPC]{
|
|
# allow XMLRPC requests only on TLS and only if the client
|
|
# certificate is valid
|
|
if (proto!=TLS){
|
|
xmlrpc_reply("400", "xmlrpc allowed only over TLS");
|
|
return;
|
|
}
|
|
if (@tls.peer.verified!=""){
|
|
xmlrpc_reply("400", "Unauthorized");
|
|
return;
|
|
}
|
|
if search("^User-Agent:.*xmlrpclib"))
|
|
set_reply_close();
|
|
set_reply_no_connect(); # optional
|
|
dispatch_rpc();
|
|
}
|
|
</programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
|
|
</section>
|