kamailio.cfg: replaced xmlrpc with jsonrpc in default config
authorDaniel-Constantin Mierla <miconda@gmail.com>
Wed, 11 Dec 2019 11:27:52 +0000 (12:27 +0100)
committerDaniel-Constantin Mierla <miconda@gmail.com>
Wed, 11 Dec 2019 11:28:20 +0000 (12:28 +0100)
etc/kamailio.cfg

index ee3ec9e..01e56b6 100644 (file)
@@ -77,9 +77,9 @@
 #     - adjust CFGDIR/tls.cfg as needed
 #     - define WITH_TLS
 #
-# *** To enable XMLRPC support execute:
-#     - define WITH_XMLRPC
-#     - adjust route[XMLRPC] for access policy
+# *** To enable JSONRPC over HTTP(S) support execute:
+#     - define WITH_JSONRPC
+#     - adjust route[JSONRPC] for access policy
 #
 # *** To enable anti-flood detection execute:
 #     - adjust pike and htable=>ipban settings as needed (default is
@@ -199,6 +199,10 @@ enable_tls=yes
 tls_max_connections=2048
 #!endif
 
+#!ifdef WITH_JSONRPC
+tcp_accept_no_cl=yes
+#!endif
+
 ####### Custom Parameters #########
 
 /* These parameters can be modified runtime via RPC interface
@@ -235,6 +239,9 @@ voicemail.srv_port = "5060" desc "VoiceMail Port"
 loadmodule "db_mysql.so"
 #!endif
 
+#!ifdef WITH_JSONRPC
+loadmodule "xhttp.so"
+#!endif
 loadmodule "jsonrpcs.so"
 loadmodule "kex.so"
 loadmodule "corex.so"
@@ -298,10 +305,6 @@ loadmodule "htable.so"
 loadmodule "pike.so"
 #!endif
 
-#!ifdef WITH_XMLRPC
-loadmodule "xmlrpc.so"
-#!endif
-
 #!ifdef WITH_DEBUG
 loadmodule "debugger.so"
 #!endif
@@ -315,6 +318,9 @@ modparam("jsonrpcs", "pretty_format", 1)
 # modparam("jsonrpcs", "fifo_name", "/run/kamailio/kamailio_rpc.fifo")
 /* set the path to RPC unix socket control file */
 # modparam("jsonrpcs", "dgram_socket", "/run/kamailio/kamailio_rpc.sock")
+#!ifdef WITH_JSONRPC
+modparam("jsonrpcs", "transport", 7)
+#!endif
 
 # ----- ctl params -----
 /* set the path to RPC unix socket control file */
@@ -461,12 +467,6 @@ modparam("pike", "remove_latency", 4)
 modparam("htable", "htable", "ipban=>size=8;autoexpire=300;")
 #!endif
 
-#!ifdef WITH_XMLRPC
-# ----- xmlrpc params -----
-modparam("xmlrpc", "route", "XMLRPC");
-modparam("xmlrpc", "url_match", "^/RPC")
-#!endif
-
 #!ifdef WITH_DEBUG
 # ----- debugger params -----
 modparam("debugger", "cfgtrace", 1)
@@ -922,22 +922,24 @@ route[PSTN] {
        return;
 }
 
-# XMLRPC routing
-#!ifdef WITH_XMLRPC
-route[XMLRPC] {
-       # allow XMLRPC from localhost
-       if ((method=="POST" || method=="GET")
-                       && (src_ip==127.0.0.1)) {
-               # close connection only for xmlrpclib user agents (there is a bug in
-               # xmlrpclib: it waits for EOF before interpreting the response).
-               if ($hdr(User-Agent) =~ "xmlrpclib")
-                       set_reply_close();
-               set_reply_no_connect();
-               dispatch_rpc();
+# JSONRPC over HTTP(S) routing
+#!ifdef WITH_JSONRPC
+event_route[xhttp:request] {
+       set_reply_close();
+       set_reply_no_connect();
+       if(src_ip!=127.0.0.1) {
+               xhttp_reply("403", "Forbidden", "text/html",
+                               "<html><body>Not allowed from $si</body></html>");
                exit;
        }
-       send_reply("403", "Forbidden");
-       exit;
+       if ($hu =~ "^/RPC") {
+               jsonrpc_dispatch();
+               exit;
+       }
+
+       xhttp_reply("200", "OK", "text/html",
+                               "<html><body>Wrong URL $hu</body></html>");
+    exit;
 }
 #!endif