I believe there's also a Linux package called 'ssldump' that doesn't require the server key.
--Alex
On Nov 21, 2011, at 9:48 AM, Veres-Szentkiralyi Andras vsza@vsza.hu wrote:
If you have access to the private key, you can decrypt the SSL/TLS stream using Wireshark: http://wiki.wireshark.org/SSL
Regards, András Veres-Szentkirályi
- november 21. hétfő 17:33:46 dátummal Karl Putland ezt írta:
Can't get a useful packet dump as the service is using ssl.
--Karl
On Wed, Nov 16, 2011 at 2:21 PM, Veres-Szentkiralyi Andras
vsza@vsza.huwrote:
Thanks for the response and the links. Can you produce a packet dump (maybe with tcpdump or Wireshark) of a ZIP transfer excluding sensitive data?
Regards, András Veres-Szentkirályi
- november 16. szerda 21:28:32 dátummal Karl Putland ezt írta:
So the proof works for the calls that aren't including actual files but fails for the calls downloadLargeXMLFile etc... where a zip file is being expected. Further investigation into the definitions in the WSDL leads to documentation on MTOM.
http://metro.java.net/guide/Binary_Attachments__MTOM_.html http://axis.apache.org/axis2/java/core/docs/mtom-guide.html
I might be ok for the short term with the multipart parsing... It would
be
"a good thing" to support MTOM for interoperability and would surely
bring
more users to suds.
--Karl
error on doDownlaodLargeXmlFile
Karl-Putlands-MacBook-Pro:vsxconf karl$ python vsxtest.py
*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*
&*
&*&*& raw reply
*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*
&*
&*&*& CODE: 200 HEADERS: {'transfer-encoding': 'chunked', 'date': 'Wed, 16 Nov 2011 19:52:03 GMT', 'connection': 'close', 'content-type': 'multipart/related;start="<rootpart* e64255df-09d9-41db-
be9b-0b5aa8d90d4f@example.jaxws.sun.com>";type="applicat
ion/xop+xml";boundary="uuid:e64255df-09d9-41db-be9b-0b5aa8d90d4f";start-i nf
o="text/xml"', 'server': 'Apache-Coyote/1.1'} MESSAGE:
<?xml version="1.0" ?><S:Envelope xmlns:S="
http://schemas.xmlsoap.org/soap/envelope/%22%3E<S:Body><downloadLargeResult xmlns="http://ws.sansay.com"><retCode>200</retCode><msg>200 OK</msg><binfile><Include xmlns="http://www.w3.org/2004/08/xop/include" href="cid:d13ecec6-f10c-40be-941d-50288e41f0d4@example.jaxws.sun.com "/></binfile></downloadLargeResult></S:Body></S:Envelope>
*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*
&*
&*&*&
Reply:
<?xml version="1.0" ?><S:Envelope xmlns:S="
http://schemas.xmlsoap.org/soap/envelope/%22%3E<S:Body><downloadLargeResult xmlns="http://ws.sansay.com"><retCode>200</retCode><msg>200 OK</msg><binfile><Include xmlns="http://www.w3.org/2004/08/xop/include" href="cid:d13ecec6-f10c-40be-941d-50288e41f0d4@example.jaxws.sun.com "/></binfile></downloadLargeResult></S:Body></S:Envelope>
**
***** No handlers could be found for logger "suds.bindings.multiref"
Traceback (most recent call last): File "vsxtest.py", line 20, in <module>
result = client.service.doDownloadLargeXmlFile(table="route",
username="xxxxxx", password="xxxxxx")
File "suds/client.py", line 544, in __call__
return client.invoke(args, kwargs)
File "suds/client.py", line 604, in invoke
result = self.send(soapenv)
File "suds/client.py", line 651, in send
result = self.succeeded(binding, reply.message)
File "suds/client.py", line 686, in succeeded
reply, result = binding.get_reply(self.method, reply)
File "suds/bindings/binding.py", line 156, in get_reply
result = self.replycomposite(rtypes, nodes)
File "suds/bindings/binding.py", line 230, in replycomposite
sobject = unmarshaller.process(node, resolved)
File "suds/umx/typed.py", line 66, in process
return Core.process(self, content)
File "suds/umx/core.py", line 48, in process
return self.append(content)
File "suds/umx/core.py", line 63, in append
self.append_children(content)
File "suds/umx/core.py", line 140, in append_children
cval = self.append(cont)
File "suds/umx/core.py", line 61, in append
self.start(content)
File "suds/umx/typed.py", line 80, in start
raise TypeNotFound(content.node.qname())
suds.TypeNotFound: Type not found: 'Include' vsxconf karl$
On Wed, Nov 16, 2011 at 12:41 PM, Karl Putland karl@klasstek.com
wrote:
Great!
I'll check it out now.
Thanks,
--Karl
On Wed, Nov 16, 2011 at 12:22 PM, Veres-Szentkiralyi Andras
vsza@vsza.huwrote:
Hi, I created a proof-of-concept patch, that works with the network
traffic
you
sent, and is available in my GitHub repository:
https://github.com/dnet/suds/commit/4c930c764d8639c5d808609c756466c3e607
0976
You can download the single modified file (transport/__init__.py) from the following URL -- if you replace this with the one in your SUDS installation, the example you sent to the mailing list should work.
https://github.com/dnet/suds/raw/4c930c764d8639c5d808609c756466c3e607097
6/suds/transport/__init__.py
As you suggested, I put the logic into the Reply class, and the additional methods check for multipart content. If no such content found, normal program flow remains undisturbed, so this shouldn't cause any regressions. The part marked as "start" gets in place of the message, other parts can be accessed using the "parts" member. As it uses the standard email library, even encoded parts (e.g. base64) can be decoded, and it should work on any Python 2.4+ install (I tested it on 2.7.2).
Let me know, whether it works in real life, I'm interested in the results.
Regards, András Veres-Szentkirályi
- november 16. szerda 01:07:07 dátummal Karl Putland ezt írta:
> Sorry for they delay and thank you for looking. > > Not public. > WSDL attached. > Output from sample script attached. > >> From what I can tell... none of the python libraries are >> currently > > supporting SOAP-attachments. > > > I added some debugging in SoapClient.send > > request.headers = self.headers() > reply = transport.send(request) > > if DEBUG: > print '*&'*40 > print 'raw reply' > print '*&'*40 > print reply > print '*&'*40 > > ctx = plugins.message.received(reply=reply.message) > reply.message = ctx.reply > > It may be possible to implement in the plugins, but the headers
don't
pass
> through to the plugin... :/ > It seems that the best place for the multipart handling is in > transport/http.py in the Reply object. Pass the headers in as
HTTPMessage
> instead of the Dict to reconstruct the MimeMessage, then if it's > Content-Type: text="text/xml" dump the body as the reply. > otherwise
follow
> the w3 doc and dump the rootpart ast the reply and create a list > of attachment file-like objects. > > Thanks, > > --Karl > > On Wed, Nov 9, 2011 at 12:15 AM, Veres-Szentkiralyi Andras
vsza@vsza.huwrote: >> First of all, is this a public service? If so, can you provide a >> WSDL
to
>> us? >> If not, can you provide a dump of the request and the response
(with
>> sensitive >> material stripped if needed)? >> >> Regards, >> András Veres-Szentkirályi >> >> 2011. november 9. szerda 05:33:13 dátummal Karl Putland ezt írta: >>> I'm trying to talk to a service where the SOAP response is >>> returning Content-Type: multipart/related. This behavior is >>> documented here >>> >>> http://www.w3.org/TR/SOAP-attachments >>> >>> All of the current Python SOAP libraries choke on this >>> behavior. It would be great if suds could handle Content-Type >>> parsing in the transport adapters. I'm having difficulty >>> getting my head wrapped around all of the urllib2 >>> abstractions in >>> transport/http.py. >>> >>> My best guess is that it needs to happen right before Reply is
created,
>> and >> >>> that Reply needs to have and attachments[] attribute and
probably
>> something >> >>> to represent the file. >>> >>> Thanks, >>> >>> --Karl >> >> _______________________________________________ >> suds mailing list >> suds@lists.fedoraproject.org >> https://admin.fedoraproject.org/mailman/listinfo/suds
suds mailing list suds@lists.fedoraproject.org https://admin.fedoraproject.org/mailman/listinfo/suds
suds mailing list suds@lists.fedoraproject.org https://admin.fedoraproject.org/mailman/listinfo/suds
suds mailing list suds@lists.fedoraproject.org https://admin.fedoraproject.org/mailman/listinfo/suds