|
|
| version 1.5, 2007/03/21 18:26:55 | version 1.8, 2007/10/23 17:40:23 |
|---|---|
| Line 12 class XMLRpcServerProxy(SimpleItem): | Line 12 class XMLRpcServerProxy(SimpleItem): |
| meta_type="XMLRpcServerProxy" | meta_type="XMLRpcServerProxy" |
| rpc_arg_expr='[^A-z0-9]' | |
| manage_options= ( | manage_options= ( |
| {'label':'Main Config','action':'mainConfigHTML'}, | {'label':'Main Config','action':'mainConfigHTML'}, |
| )+ SimpleItem.manage_options | )+ SimpleItem.manage_options |
| Line 38 class XMLRpcServerProxy(SimpleItem): | Line 40 class XMLRpcServerProxy(SimpleItem): |
| def eval(self,method,argument): | def eval(self,method,argument): |
| """do proxy request""" | """do proxy request""" |
| sr=self.ServerProxy() | server=self.ServerProxy() |
| if self.use_xmlrpc: | if self.use_xmlrpc: |
| # for XML-RPC only letters are allowed | # for XML-RPC methods only letters are allowed |
| method=re.sub('[^A-z0-9]','',method) | method=re.sub('[^A-z0-9_]','',method) |
| argument=re.sub('[^A-z0-9]','',argument) | # clean argument |
| argument=re.sub(self.rpc_arg_expr,'',argument) | |
| mtstr="""sr.%s('%s')"""%(method,argument) | cmd="""server.%s('%s')"""%(method,argument) |
| return eval(mtstr) | return eval(cmd) |
| else: | else: |
| # HTTP | # HTTP |
| # TODO: check arguments | # TODO: check arguments |
| Line 56 class XMLRpcServerProxy(SimpleItem): | Line 59 class XMLRpcServerProxy(SimpleItem): |
| uri += '?' + argument | uri += '?' + argument |
| #print "GET: ", uri | #print "GET: ", uri |
| sr.request("GET", uri) | server.request("GET", uri) |
| resp = sr.getresponse() | resp = server.getresponse() |
| data = resp.read() | |
| #print "GOT: ", resp.status, ", ", resp.reason, " = ", data | |
| return data.decode('UTF-8') | |
| def eval2(self,method,argument1,argument2): | |
| """do proxy request""" | |
| server=self.ServerProxy() | |
| if self.use_xmlrpc: | |
| # for XML-RPC methods only letters are allowed | |
| method=re.sub('[^A-z0-9_]','',method) | |
| # clean argument | |
| argument1=re.sub(self.rpc_arg_expr,'',argument1) | |
| argument2=re.sub(self.rpc_arg_expr,'',argument2) | |
| cmd="""server.%s('%s')"""%(method,argument1,argument2) | |
| return eval(cmd) | |
| else: | |
| # HTTP | |
| # TODO: check arguments | |
| uri = method | |
| if argument1: | |
| uri += '?' + argument1 + argument2 | |
| #print "GET: ", uri | |
| server.request("GET", uri) | |
| resp = server.getresponse() | |
| data = resp.read() | data = resp.read() |
| #print "GOT: ", resp.status, ", ", resp.reason, " = ", data | #print "GOT: ", resp.status, ", ", resp.reason, " = ", data |
| Line 69 class XMLRpcServerProxy(SimpleItem): | Line 101 class XMLRpcServerProxy(SimpleItem): |
| pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageXMLRpcServerProxy.zpt')).__of__(self) | pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageXMLRpcServerProxy.zpt')).__of__(self) |
| return pt() | return pt() |
| def mainConfig(self,serverUrl,use_xmlrpc=True,RESPONSE=None): | def mainConfig(self,serverUrl,use_xmlrpc=True,rpc_arg_expr=None,RESPONSE=None): |
| """main config""" | """main config""" |
| self.serverUrl=serverUrl | self.serverUrl=serverUrl |
| Line 81 class XMLRpcServerProxy(SimpleItem): | Line 113 class XMLRpcServerProxy(SimpleItem): |
| self.use_xmlrpc=use_xmlrpc | self.use_xmlrpc=use_xmlrpc |
| if rpc_arg_expr is not None: | |
| self.rpc_arg_expr = rpc_arg_expr | |
| if RESPONSE: | if RESPONSE: |
| RESPONSE.redirect("/manage_main") | RESPONSE.redirect("/manage_main") |
| Line 90 def manage_addXMLRpcServerProxyForm(self | Line 125 def manage_addXMLRpcServerProxyForm(self |
| pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addXMLRpcServerProxy.zpt')).__of__(self) | pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addXMLRpcServerProxy.zpt')).__of__(self) |
| return pt() | return pt() |
| def manage_addXMLRpcServerProxy(self,id,serverUrl,use_xmlrpc=True,RESPONSE=None): | def manage_addXMLRpcServerProxy(self,id,serverUrl,use_xmlrpc=True,rpc_arg_expr=None,RESPONSE=None): |
| """add the basket""" | """add the basket""" |
| if use_xmlrpc and use_xmlrpc != "no": | if use_xmlrpc and use_xmlrpc != "no": |
| use_xmlrpc = True | use_xmlrpc = True |
| else: | else: |
| use_xmlrpc = False | use_xmlrpc = False |
| if rpc_arg_expr is not None: | |
| self.rpc_arg_expr = rpc_arg_expr | |
| ob=XMLRpcServerProxy(id,serverUrl,use_xmlrpc) | ob=XMLRpcServerProxy(id,serverUrl,use_xmlrpc) |
| self._setObject(id, ob) | self._setObject(id, ob) |