|
@@ -0,0 +1,51 @@
|
|
|
+import xmlrpclib, httplib, sys
|
|
|
+
|
|
|
+# Usage: python xmlrpc_test.py command [params...]
|
|
|
+#
|
|
|
+# python script for sending an xmlrpc command to ser's xmlrpc module.
|
|
|
+# Note: it uses a re-defined transport class that does not depend on the
|
|
|
+# server side closing the connection (it can be used to send multiple
|
|
|
+# commands without closing the connections and it will work without any
|
|
|
+# special workarounds in the ser.cfg xmlrpc route).
|
|
|
+#
|
|
|
+# Credits: the transport class comes from ser_ctl, heavily trimmed to a very
|
|
|
+# basic version (the ser_ctl version is much more complex, supports
|
|
|
+# authentication, ssl a.s.o). See
|
|
|
+# http://git.sip-router.org/cgi-bin/gitweb.cgi?p=ser;a=blob;f=ser_ctl/serctl/serxmlrpc.py#l73 for the original (better) version.
|
|
|
+#
|
|
|
+#
|
|
|
+# History:
|
|
|
+# --------
|
|
|
+# 2009-07-13 initial version (andrei)
|
|
|
+#
|
|
|
+
|
|
|
+
|
|
|
+XMLRPC_SERVER = "127.0.0.1"
|
|
|
+XMLRPC_PORT = 5060
|
|
|
+
|
|
|
+class Transport:
|
|
|
+ def __init__(self):
|
|
|
+ self.conn=httplib.HTTPConnection(XMLRPC_SERVER, str(XMLRPC_PORT));
|
|
|
+
|
|
|
+ def _http_request(self, uripath, body, host):
|
|
|
+ self.conn.request("POST", uripath, body, {})
|
|
|
+
|
|
|
+ def request(self, host, uripath, body, verbose=0):
|
|
|
+ self._http_request(uripath, body, host)
|
|
|
+ response=self.conn.getresponse()
|
|
|
+ if response.status != 200:
|
|
|
+ raise xmlrpclib.ProtocolError(host+uripath, response.status,
|
|
|
+ response.reason, response.msg)
|
|
|
+ data=response.read()
|
|
|
+ parser, unmarshaller=xmlrpclib.getparser()
|
|
|
+ parser.feed(data)
|
|
|
+ parser.close()
|
|
|
+ return unmarshaller.close()
|
|
|
+
|
|
|
+if len(sys.argv) < 2:
|
|
|
+ sys.exit("Usage: "+sys.argv[0]+" rpc_command [args...]");
|
|
|
+transport=Transport()
|
|
|
+c=xmlrpclib.ServerProxy("http://" + XMLRPC_SERVER+ ":" + str(XMLRPC_PORT),
|
|
|
+ transport)
|
|
|
+res=getattr(c, sys.argv[1])(*sys.argv[2:])
|
|
|
+print res;
|