Lance Stout
2586fdffda
Update api docs for handlers and matchers
2011-12-04 16:26:14 -08:00
Lance Stout
b9332142c9
Update api docs for JID
2011-12-04 13:42:46 -08:00
Lance Stout
b7b53362e1
Ensure that adhoc command clients have form plugin registered.
...
The form plugin was being registered on first use for providers,
but not for clients receiving the form.
NOTE: Use of non-form payloads will have this issue - adhoc command
clients will need to have an expectation beforehand of what
the command payload will be to properly load stanza plugins.
2011-12-04 01:24:35 -08:00
Lance Stout
68cf66a5fe
Ensure that saving a roster item includes the correct subscription value.
...
Fixes issue #118
2011-11-28 15:00:35 -08:00
Florent Le Coz
4eb7eeb40f
Send the encoded data (bytes) and not the str, on the socket.
2011-11-25 01:45:43 +08:00
Lance Stout
a1d64fa215
Experimental support for handling SSL write errors.
2011-11-23 23:59:05 -08:00
Lance Stout
5f44c0e678
Add docs for filesocket
2011-11-22 16:33:38 -08:00
Lance Stout
b87c4d786d
Update tostring docs, plus more doc cleanup
2011-11-22 16:25:33 -08:00
Lance Stout
6906c15e8e
Update docs for tostring
2011-11-22 15:25:02 -08:00
Lance Stout
4498e992a2
Add more stanzabase docs
2011-11-21 23:17:39 -08:00
Lance Stout
2b0a05ee32
Update stanzabase docs
2011-11-21 21:51:19 -08:00
Lance Stout
862a2a1440
Ensure that reconnection happens properly after connection loss.
...
Calling reconnect() simultaneously from multiple threads (like when
using XEP-0199 keepalive) could break because the connection state
can transition and break the state expectations in one of the
reconnect() calls.
2011-11-20 12:18:37 -08:00
Lance Stout
fba60ffff1
Convert daemon threads back into normal threads.
...
This may need to be reverted if CTRL-C handling breaks, but everything
works fine so far in testing.
Resolves issue #95 .
2011-11-20 12:17:35 -08:00
Lance Stout
d1a945a305
Tidy up logging some more
2011-11-19 19:18:43 -08:00
Lance Stout
685b9ab102
Fix logging exceptions from formatting issues.
2011-11-19 19:08:27 -08:00
Lance Stout
24f27c0fe3
Pass generic connection errors to XMLStream.exception()
2011-11-19 19:01:07 -08:00
Lance Stout
3019c82d8a
Use a list comprehension instead of filter() to work with Python3.
2011-11-19 18:49:18 -08:00
Lance Stout
b54cc97e4c
Merge remote-tracking branch 'vijayp/master' into HEAD
...
Conflicts:
examples/ping.py
sleekxmpp/basexmpp.py
sleekxmpp/clientxmpp.py
sleekxmpp/features/feature_bind/bind.py
sleekxmpp/features/feature_mechanisms/mechanisms.py
sleekxmpp/plugins/gmail_notify.py
sleekxmpp/plugins/jobs.py
sleekxmpp/plugins/xep_0009/remote.py
sleekxmpp/plugins/xep_0009/rpc.py
sleekxmpp/plugins/xep_0012.py
sleekxmpp/plugins/xep_0045.py
sleekxmpp/plugins/xep_0050/adhoc.py
sleekxmpp/plugins/xep_0078/legacyauth.py
sleekxmpp/plugins/xep_0085/chat_states.py
sleekxmpp/plugins/xep_0199/ping.py
sleekxmpp/plugins/xep_0224/attention.py
sleekxmpp/xmlstream/handler/waiter.py
sleekxmpp/xmlstream/matcher/xmlmask.py
sleekxmpp/xmlstream/xmlstream.py
Conflicts:
examples/ping.py
sleekxmpp/basexmpp.py
sleekxmpp/clientxmpp.py
sleekxmpp/features/feature_bind/bind.py
sleekxmpp/features/feature_mechanisms/mechanisms.py
sleekxmpp/plugins/gmail_notify.py
sleekxmpp/plugins/jobs.py
sleekxmpp/plugins/xep_0009/remote.py
sleekxmpp/plugins/xep_0009/rpc.py
sleekxmpp/plugins/xep_0012.py
sleekxmpp/plugins/xep_0045.py
sleekxmpp/plugins/xep_0050/adhoc.py
sleekxmpp/plugins/xep_0078/legacyauth.py
sleekxmpp/plugins/xep_0085/chat_states.py
sleekxmpp/plugins/xep_0199/ping.py
sleekxmpp/plugins/xep_0224/attention.py
sleekxmpp/xmlstream/handler/waiter.py
sleekxmpp/xmlstream/matcher/xmlmask.py
sleekxmpp/xmlstream/xmlstream.py
2011-11-19 18:23:26 -08:00
Vijay Pandurangan
e3b9d5abbf
double copy
2011-11-19 16:03:17 -08:00
Vijay Pandurangan
2332970cf2
elide unnecessary copy
2011-11-19 16:02:41 -08:00
Vijay Pandurangan
48af3d3322
remove unnecessary copies when only one handler matches. This was taking up ~ 15% of CPU on moderate load.
2011-11-19 15:59:38 -08:00
Lance Stout
429c94d6a9
Tidy up logging calls.
2011-11-19 12:07:57 -08:00
Vijay Pandurangan
deb52ad350
This change stops sleekxmpp from spending huge amounts of time unnecessarily computing logging data that may never be used. This is a HUGE performance improvement; in some of my test runs, unnecessary string creation was accounting for > 60% of all CPU time.
...
Note that using % in a string will _always_ perform the sting substitutions, because the strings are constructed before the function is called. So log.debug('%s' % expensiveoperation()) will take about the same CPU time whether or not the logging level is DEBUG or INFO. if you use , no substitutions are performed unless the string is actually logged
2011-11-20 03:39:05 +08:00
Vijay Pandurangan
6f3cc77bb5
This change stops sleekxmpp from spending huge amounts of time unnecessarily computing logging data that may never be used. This is a HUGE performance improvement; in some of my test runs, unnecessary string creation was accounting for > 60% of all CPU time.
...
Note that using % in a string will _always_ perform the sting substitutions, because the strings are constructed before the function is called. So log.debug('%s' % expensiveoperation()) will take about the same CPU time whether or not the logging level is DEBUG or INFO. if you use , no substitutions are performed unless the string is actually logged
2011-11-19 11:30:44 -08:00
Lance Stout
1baf139ca4
Bump next release version to 1.0-RC4
2011-11-18 16:40:17 -08:00
Lance Stout
d4c1ff5309
Also fire changed_status when the status text changes for a resource.
2011-11-18 13:57:41 -08:00
Lance Stout
22868c3924
Fix changed_status event
...
Once again only fires when a resource's presence show value changes.
2011-11-18 13:39:02 -08:00
Lance Stout
0c86f8288d
No need to continue processing loop if an error ocurred and auto_reconnect=False.
2011-11-14 11:21:05 -08:00
Lance Stout
5a6a65fd9f
Fix typo
2011-11-14 11:20:53 -08:00
Lance Stout
43c4d23896
Explicitly test for inequality in JIDs.
...
Fixes issue #113
2011-11-14 09:15:43 -08:00
Lance Stout
9f9e8db814
Add use_ssl parameter to ClientXMPP.connect
2011-11-11 01:52:18 -08:00
Lance Stout
b8efcc7cf0
Don't just call self.disconnect in self.reconnect.
...
It messes up the auto_reconnect value and causes the XML processing
loop to spin wildly with errors on a stream disconnect.
2011-11-08 19:23:53 -08:00
Lance Stout
888e286a09
Continue trying to reconnect, even if the attempt fails.
...
The transition from disconnected to connected states must be done in a
loop in case the transition fails, not just once and hope it worked.
2011-11-07 01:13:34 -08:00
Lance Stout
1a93a187f0
Fix a crash when removing a contact.
...
Original author: louiz
2011-11-06 08:33:03 -08:00
Lance Stout
a8d5da5091
Restore original behaviour for auto_authorize and auto_subscribe.
...
The change to using the new roster broke the original auto_* values
and used per-roster versions. The original auto_* values will now set
the behaviour globally. Use the per-roster values to override for a
specific JID.
2011-11-06 08:25:29 -08:00
Lance Stout
e2720fac9e
FIX SCRAM-SHA-1-PLUS
...
The mechanism name was being correctly de-plussed, but then we used the
original, -PLUS, name to extract the hash, finding SHA-1-PLUS and therefore
finding no match.
Test-Information:
Tested with Sleek against an Isode M-Link with SCRAM-SHA-1-PLUS available.
Author: dwd
2011-10-27 15:16:54 -04:00
Lance Stout
4374729f20
Update the docs for XEP-0060 publish method.
2011-10-11 20:37:50 -04:00
Lance Stout
87999333cb
Fix MUC methods to optionally specify the sending JID.
...
Should fix issue #107
2011-10-10 11:31:03 -04:00
Lance Stout
335dc2927b
Break reference cycle to fix potential memory leaks for callback handlers.
2011-10-08 17:31:30 -04:00
Lance Stout
ccbef6b696
Fix typos in the roster update method.
2011-10-07 18:13:50 -04:00
Lance Stout
3e384d3cfe
XEP-0009 will likely be updated to use <base64 /> instead of <Base64 />
...
Both are supported when reading, but <base64 /> will be used for output.
2011-10-05 12:09:50 -04:00
Lance Stout
e33949c397
Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop
2011-10-04 10:37:42 -04:00
Lance Stout
eccac859ad
Fix missing import statement.
...
Fixes issue #105
2011-10-04 10:36:52 -04:00
Correl Roush
3607c5b792
Make RPC events threaded
...
Allows, for example, an RPC service to make remote RPC calls with its
own connection without blocking its own thread waiting for the result.
2011-10-03 14:32:48 -04:00
Lance Stout
e37adace62
Allow SASL mechanism to be set when creating a ClientXMPP instance.
...
Instead of using:
ClientXMPP(jid, password, plugin_config={
'feature_mechanisms': {'use_mech': 'SOME-MECH'}})
You can use:
ClientXMPP(jid, password, sasl_mech='SOME-MECH')
If you need to change the mechanism after instantiation, use:
xmpp['feature_mechanisms'].sasl.mech = 'SCRAM-MD5'
2011-09-28 22:48:30 -04:00
Lance Stout
d10f591bf4
Expand live stream testing capabilities.
2011-09-28 17:26:29 -04:00
Lance Stout
262da78ca7
Fix del_event_handler for Python3 (different semantics for filter()).
...
Fixes issue #103
2011-09-23 12:03:49 -04:00
Lance Stout
0b83edf439
Fix regression for handling the case where the server terminates the stream.
...
The processing loop was continuing to call __read_xml after </stream>
was received, which caused SyntaxErrors (can't find starting element).
This should fix issue #102
2011-09-22 01:32:44 -04:00
Nathan Fritz
cf7fcf496e
SyntaxError requires a restart
2011-09-19 11:53:09 -07:00
Lance Stout
1765271f84
Make get_node_config block by default.
2011-09-02 11:52:56 -07:00
Lance Stout
0ec79f8dc3
Tweak setup.py, and bump dev version to RC3.
2011-09-01 16:47:30 -07:00
Lance Stout
6f72c05ebf
Add whitespace keepalive option.
...
May be disabled by setting:
self.whitespace_keepalive = False
The keepalive interval can be adjusted using:
self.whitespace_keepalive_interval = 300
The default interval is 5min.
2011-09-01 16:24:09 -07:00
Nathan Fritz
20cacc84ba
remove ping schedule on disconnect
2011-09-01 15:51:43 -07:00
Lance Stout
24a14a0284
Mark pubsub state stanzas as non-standard.
2011-09-01 15:29:05 -07:00
Lance Stout
efa4a9b330
More stanza cleanup for pubsub.
2011-09-01 14:20:58 -07:00
Lance Stout
39ec1cff19
Some more minor cleanup.
2011-09-01 14:03:11 -07:00
Lance Stout
24c5f8d374
Clean up pubsub#event stanzas.
2011-09-01 14:01:58 -07:00
Lance Stout
d6b0158ddb
Clean up pubsub#owner stanzas.
2011-09-01 13:47:55 -07:00
Lance Stout
7e5e9542e9
Add support for notify attribute when retracting an item.
2011-09-01 13:36:11 -07:00
Lance Stout
d7fc2aaa9c
Add ability to get global/node default subscription options.
2011-09-01 13:25:35 -07:00
Lance Stout
8471a485d1
Clean up pubsub stanzas.
2011-09-01 13:12:26 -07:00
Lance Stout
462b375c8f
Owners can modify subscriptions/affiliations. With tests.
...
94% coverage for the main pubsub plugin! (91% including stanzas)
2011-09-01 12:09:24 -07:00
Lance Stout
afbd506cfc
Users can retrieve their affiliations now, with tests.
2011-09-01 11:30:55 -07:00
Lance Stout
ec01e45ed1
Add ability for a user to get retrieve subscriptions, with tests.
2011-09-01 11:19:25 -07:00
Lance Stout
993829b23f
Add tests for pubsub subscription options.
2011-09-01 10:44:14 -07:00
Lance Stout
002257b820
Add tests for retrieving pubsub items.
2011-09-01 09:27:10 -07:00
Lance Stout
0af35c2224
Fix memory reference bugs.
2011-09-01 00:50:45 -07:00
Lance Stout
76bc0a2ba6
XEP-0060 v1.13 dictates publishing/retracting one item at a time.
2011-08-31 23:48:22 -07:00
Lance Stout
3f9ca0366b
Add test for purging a pubsub node.
2011-08-31 21:09:25 -07:00
Lance Stout
b68785e19e
Retract stanzas are behaving oddly when using stanza values.
2011-08-31 16:03:32 -07:00
Lance Stout
46f23f7348
Test publishng an item with options.
2011-08-31 14:55:37 -07:00
Lance Stout
09252baa71
Test publishing a single item.
2011-08-31 14:31:20 -07:00
Lance Stout
3623a7a16a
More pubsub unit tests!
2011-08-31 14:05:29 -07:00
Lance Stout
cc504ab07c
Fix pubsub get_items.
...
- item_ids checked for None
- pubsub node is set
2011-08-31 10:56:43 -07:00
Lance Stout
2500a0649b
Fix requesting pubsub node configuration, and add tests.
...
- <default /> doesn't have a type attribute in the XEP
- <configure /> isn't used anymore for requesting default configuration
2011-08-31 10:43:33 -07:00
Lance Stout
5ec4e4a026
Added pubsub error stanza.
...
iq['error']['pubsub']['condition']
iq['error']['pubsub']['unsupported']
2011-08-31 00:42:37 -07:00
Lance Stout
c3df4dd052
Create a tox config for automating tests for different Python versions.
...
To use:
sudo pip install tox
tox
2011-08-31 00:00:12 -07:00
Lance Stout
628978fc8c
Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop
2011-08-30 23:11:11 -07:00
Nathan Fritz
7fb9d68714
fixed form accessors in pubsub stanzas
2011-08-30 23:10:13 -07:00
Lance Stout
e0a1c477d0
Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop
2011-08-30 23:03:51 -07:00
Nathan Fritz
b70565720f
fixed test further... but now I have an out of order problem
2011-08-30 23:03:04 -07:00
Lance Stout
33ac0c9dd6
Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop
2011-08-30 22:45:08 -07:00
Nathan Fritz
4699bdff60
Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop
2011-08-30 22:44:34 -07:00
Nathan Fritz
354641a3ce
added publish-options element
2011-08-30 22:44:19 -07:00
Lance Stout
58a43e40c7
Get/set pubsub subscription options.
2011-08-30 22:27:21 -07:00
Lance Stout
13fdab0139
Test and fix XEP-0060 delete_node()
2011-08-30 21:57:11 -07:00
Lance Stout
2ce617b2ce
Fix typo
2011-08-30 09:24:46 -07:00
Lance Stout
63e0496c30
Finish up all major actions in the current XEP-0060.
...
Still need tests and docs.
2011-08-29 23:05:14 -07:00
Lance Stout
850e3bb99b
Stub out missing functionality for pubsub
2011-08-29 21:38:41 -07:00
Lance Stout
2d90deb96a
The ifrom parameter doesn't need special treatment.
2011-08-26 22:06:32 -07:00
Lance Stout
3fb3f63e51
Add docs + extended Iq send arguments to pubsub methods.
2011-08-26 16:57:37 -07:00
Lance Stout
d12949ff1c
Fix typos in XEP-0060, start of docs and tests.
2011-08-26 12:14:57 -07:00
Lance Stout
e3e985220e
Simplify the main process loop.
2011-08-25 17:08:20 -07:00
Lance Stout
802dd8393d
Make the timeout for event queue checks configurable.
...
Now defaults xmlstream.WAIT_TIMEOUT, and settable with
self.wait_timeout.
The new default timeout is 1sec instead of 5sec.
2011-08-25 16:45:34 -07:00
Lance Stout
fe6bc31c60
Added XMLStream.configure_dns.
...
This can be overridden to do custom configuration for the DNS resolver,
or any other DNS related tasks such as calling the system's res_init().
2011-08-25 16:18:26 -07:00
Lance Stout
2162d6042e
Session timeout now defaults to 45sec, but can be adjusted.
...
e.g.
self.session_timeout = 15
It is also managed by XMLStream instead of ClientXMPP now.
2011-08-25 15:40:13 -07:00
Lance Stout
b8a4ffece9
Handle sending stanzas in chunks if the socket has poor performance.
2011-08-25 15:08:45 -07:00
Lance Stout
d929e0deb2
Shutdown socket before closing.
2011-08-25 13:48:43 -07:00
Lance Stout
4c08c9c524
Update scheduler with locks and ability to remove tasks.
...
Scheduled tasks must have a unique name.
2011-08-25 13:34:30 -07:00
Lance Stout
63b8444abe
Add overridable method self.configure_socket().
...
Allows for setting app specific socket timeouts and other socket options.
2011-08-25 00:22:26 -07:00
Lance Stout
84f9505a8d
Fix handling of DNS exceptions.
2011-08-24 22:40:57 -07:00
Lance Stout
ede59ab40e
Clean and get setup.py working once and for all.
...
Fixes:
README.rst now included
Double line spacing removed from long_description
Source package now includes tests, examples, etc using Manifest.in
README.rst typos fixed
Added README.rst section on installing dnspython for Python3
Version bumped to RC2
Version is now taken from sleekxmpp.version.__version__ without
having to pull in the entire library
Added 'test' command for setup.py
Simplified testall.py
Docs build cleanly from source package after installation
2011-08-24 22:09:02 -07:00
Lance Stout
f92f96325a
Make Iq exceptions more discoverable and simpler to use.
...
IqError and IqTimeout now extend XMPPError, so if you don't care
about the difference, you can use:
try:
self.do_something_with_iqs()
except XMPPError:
# Error? Timeout? I don't care!
pass
If you do need to distinguish between timeouts and error replies,
you can still continue to use:
try:
self.do_somethin_with_iqs()
except IqError as err:
pass
except IqTimeout:
pass
If you don't catch any Iq errors and you're processing a stanza
then an error response will be sent, just like normal if you raise
XMPPError or any other exception, except that the error messages
will be generic to prevent leaking too much information.
2011-08-19 01:04:20 -07:00
Lance Stout
e02a42a008
Route all unhandled exceptions through XMLStream.exception.
...
Or through an equivalent override.
2011-08-18 16:12:51 -07:00
Lance Stout
3e51126e18
PEP8 edits
2011-08-18 02:46:48 -07:00
Lance Stout
a714fa82b2
Remove extra, unhelpful presence debug log.
2011-08-18 02:46:08 -07:00
Lance Stout
e86e6eae81
Up the timeout to 30sec instead of 10sec.
2011-08-18 01:10:25 -07:00
Nathan Fritz
f75b6bf955
added inline documentation for new dns methods
2011-08-18 01:04:01 -07:00
Nathan Fritz
fb78bf0996
fixed manual address definition
2011-08-18 00:59:27 -07:00
Lance Stout
cd7cd30b4c
Fix exceptions for Python3
2011-08-18 00:47:07 -07:00
Nathan Fritz
4ea22ff69b
Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop
2011-08-18 00:35:37 -07:00
Nathan Fritz
3853898ab3
DNS is now properly checked and different answers are tried for each reconnect until exhausted
2011-08-18 00:35:18 -07:00
Lance Stout
3fc20e10f5
Add some convenience methods to rosters.
...
Can now use len(self.client_roster) to get the number of JIDs in
the roster, and self.client_roster.groups() to get a dict of
groups and the JIDs in those groups.
2011-08-18 00:07:37 -07:00
Lance Stout
004eabf809
Update plugins that use Iq stanzas to work with new exceptions.
2011-08-17 21:30:47 -07:00
Lance Stout
62230fc970
Return '' instead of None from form fields with no values.
2011-08-17 21:22:03 -07:00
Lance Stout
9fdd85d9f1
I've seen people complain about Sleek taking so long to disconnect.
...
Added logging to say that we're waiting for the server to end the stream
from its end.
2011-08-13 08:58:07 -07:00
Lance Stout
331db30f8f
Add form.field back in for backwards compatibility.
2011-08-13 08:34:23 -07:00
Lance Stout
017d7ec62b
Add tests for setting a form's type to 'submit' or 'cancel'.
...
Form fields now remember their current type if the type is deleted. This
allows for fields to properly format their values if set after the form
has been changed to the 'submit' type.
2011-08-13 01:28:18 -07:00
Lance Stout
c26b716164
Update XEP-0050 to use new IQ exceptions.
...
IqError is now caught and forwarded to the command error handler referenced
in the session.
Errors are now caught and processed by the session's error handler
whether or not the results Iq stanza includes the <command> substanza.
Added the option for blocking command calls. The blocking option is set
during start_command with block=True. Subsequent command flow methods use
session['block'] to determine their blocking behaviour.
If you use blocking commands, then you will need to wrap your command calls
in a try/except block for IqTimeout exceptions.
2011-08-13 00:10:06 -07:00
Lance Stout
bd427849fb
Reduce the maximum delay between connection retries to 10min.
2011-08-12 17:17:05 -07:00
Lance Stout
484efff156
Merge branch 'develop' into roster
...
Conflicts:
setup.py
sleekxmpp/clientxmpp.py
2011-08-12 16:47:58 -07:00
Nathan Fritz
8f1d0e7a79
Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop
2011-08-12 16:36:03 -07:00
Nathan Fritz
88184ff955
fixed indenting and merged in exceptions branch
2011-08-12 16:35:36 -07:00
Nathan Fritz
bd8c110f00
Merge branch 'exceptions' into develop
2011-08-12 16:35:15 -07:00
Nathan Fritz
0050c51124
updated pubsub plugin to use stanzas
2011-08-12 16:32:09 -07:00
Lance Stout
9b7ed73f95
Reorganize XEP-0004.
...
Changes:
May now use underscored method names
form.field is replaced by form['fields']
form.get_fields no longer accepts use_dict parameter, it always
returns an OrderedDict now
form.set_fields will accept either an OrderedDict, or a list
of (var, dict) tuples as before.
Setting the form type to 'submit' will remove extra meta data
from the form fields, leaving just the 'var' and 'value'
Setting the form type to 'cancel' will remove all fields.
2011-08-11 21:59:55 -07:00
Lance Stout
156b3200e3
Don't include ping stanza in the ping result.
2011-08-10 09:05:43 -07:00
Lance Stout
572becad44
Enable forcing a specififc SASL mech:
...
xmpp = ClientXMPP(jid, password, {
'feature_mechanisms': {'use_mech':'PLAIN'}})
2011-08-09 00:51:49 -07:00
Lance Stout
75f23d1130
Fix XEP-0078 using the new stream feature workflow.
...
Honestly, this is mainly just a demo/proof of concept that we
can handle dependencies and ordering issues with stream features.
DON'T use XEP-0078 if you are able to use the normal SASL method,
which should be the case unless you are dealing with a very old
XMPP server implementation.
2011-08-06 12:30:56 -07:00
Lance Stout
e83fae3a6f
Save the stream ID when the stream starts.
2011-08-06 00:44:32 -07:00
Lance Stout
5be5b8c02b
If no config for a plugin is given, try using self.plugin_config.
...
Sleek loads a few plugins by default, which made it difficult to
configure or even disable them.
Now, if a plugin is registered without any configuration, then
sleek will try finding a configuration in self.plugin_config.
2011-08-06 00:41:14 -07:00
Lance Stout
6c4cb2bf00
Merge branch 'master' into develop
...
Adds hotfix for ANONYMOUS mech support.
Conflicts:
sleekxmpp/__init__.py
2011-08-05 14:08:32 -07:00
Lance Stout
148a23579c
Hotfix for ANONYMOUS mech support.
...
Updates version to 1.0-Beta6.1
2011-08-05 14:06:58 -07:00
Lance Stout
ea95811c4c
The next release will be 1.0 RC1
2011-08-05 09:01:50 -07:00
Lance Stout
47bc50d9fb
Cosmetic PEP8 fixes.
2011-08-04 22:37:22 -07:00
Lance Stout
93a4a3f8a0
Fix Python3 issue with dict.has_key()
2011-08-04 22:36:23 -07:00
Lance Stout
b7cd119b0c
Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop
2011-08-04 21:50:14 -07:00
Nathan Fritz
7f90de887a
added block as process option and updated documentation. added typical use example to ClientXMPP.
2011-08-04 21:49:32 -07:00
Lance Stout
6c8a135612
Fix imports using __all__.
2011-08-04 21:49:15 -07:00
Lance Stout
caec2976d7
Fix Python3 bug.
...
Use int() instead of long()
2011-08-04 20:34:23 -07:00
Lance Stout
4d8933abdf
Actually, we can work around needing dateutil.
...
If dateutil is present, we'll use that. If not, we'll use
some regexes from the fixed_datetime module.
2011-08-04 20:22:07 -07:00
Lance Stout
6eac0606cf
Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop
2011-08-04 19:07:04 -07:00
Lance Stout
89cffd43f4
Merge branch 'develop' into roster
...
Conflicts:
setup.py
2011-08-04 11:52:17 -07:00
Lance Stout
b9764cc120
Clean up and unify tostring once and for all.
...
Packaging for Python3 just got easier.
2011-08-04 11:41:36 -07:00
Lance Stout
7cd39a6aad
Fix imports for xep_0060
2011-08-04 11:38:14 -07:00
Lance Stout
a0767f6af6
Sadly, dateutil is not actually part of the standard lib.
...
Thus, using the XEP-0082 and XEP-0202 introduces a dependency
on the dateutil package (installable using pip install python-dateutil).
Maybe we'll be able to rework how these plugins work to avoid
needing dateutil, but for now this will have to do.
2011-08-04 00:07:30 -07:00
Nathan Fritz
9ffdba8643
the great xep_0060 re-organization in preperation for rewrite
2011-08-03 23:56:24 -07:00
Lance Stout
9591cd3a7e
Merge branch 'stream_features' into develop
2011-08-03 18:35:01 -07:00
Nathan Fritz
db92fa2330
started transition to xep_0060 rewrite
2011-08-03 18:11:00 -07:00
Lance Stout
d94517d9ca
Merge branch 'develop' into stream_features
2011-08-03 17:37:15 -07:00
Lance Stout
0bec040cfe
Make sure to keep David Cridland's license and copyright.
2011-08-03 17:08:45 -07:00
Lance Stout
3918ddb075
Merge branch 'develop' into stream_features
2011-08-03 17:02:33 -07:00
Lance Stout
d4091dbde6
Integrate a modified version of Dave Cridland's Suelta SASL library.
2011-08-03 17:00:51 -07:00
Lance Stout
d7fe724145
Merge branch 'develop' into exceptions
2011-07-27 19:36:04 -07:00
Lance Stout
ad978700fc
Merge branch 'develop' into roster
2011-07-27 19:35:42 -07:00
Lance Stout
e022b2a36c
Add support for HTTP Proxy connections.
2011-07-27 19:35:03 -07:00
Lance Stout
ad032e5ed7
Fix error with DNS selection.
...
Missed a renaming of 'priority' to 'item'
2011-07-27 18:40:57 -07:00
Kim Alvefur
45412fd404
Do a weighted choice among the highest prioritized items based on weight instead of a weighted choice based on priorities.
2011-07-16 11:00:59 +08:00
Lance Stout
1d22a04721
Added support for custom OOB transfer handlers.
...
Accepting download requests can be done using:
self['xep_0066'].register_url_handler(handler=self.oob_download)
# Add jid=... to specify a handler for a particular JID for a
# componenent.
def oob_download(self, iq):
if iq['from'] not in self.custom_oob_whitelist:
raise XMPPError('not-authorized')
try:
data = urllib2.urlopen(iq['oob_transfer']['url'])
file = open('oob_download', 'w+')
file.write(data.read())
file.close()
data.close()
except:
raise XMPPError('item-not-found')
2011-07-05 09:22:17 -07:00
Lance Stout
5efb170e1d
Added wait parameter to disconnect.
...
If wait=True, then the disconnect call will block until
the send queue has emptied.
WARNING: Using wait=True when more stanzas are being added to the
queue than can be processed such that the queue is never empty
will cause the disconnect call to block indefinitely without actually
disconnecting.
2011-07-04 18:47:57 -07:00
Lance Stout
cccccdcc0a
Add logging to XEP-0066.
2011-07-03 20:39:03 -07:00
Lance Stout
8d384ce44f
Added XEP-0224 Attention plugin.
2011-07-03 20:37:21 -07:00
Lance Stout
4d6e7c7dbb
Update version number to beta6.
...
XEP-0092 now uses sleekxmpp.__version__ as a default version number.
2011-07-03 15:47:12 -07:00
Lance Stout
9c5885c6b6
Let XEP-0202 specify the local timezone offset in the config.
2011-07-03 15:41:22 -07:00
Lance Stout
ec3a14e6d9
Updated XEP-0202 plugin to new format and use XEP-0082.
2011-07-03 15:30:06 -07:00
Lance Stout
c98f5d4450
Fix some bugs in time handling.
...
Namely, minutes and seconds were reversed.
2011-07-03 13:41:15 -07:00
Lance Stout
2e8e542bc9
Added XEP-0203 Delayed Delivery plugin.
2011-07-03 12:43:34 -07:00
Lance Stout
7ccc67c06d
Added XEP-0082 plugin.
...
This should make things much easier for any stanza that uses timestamps.
2011-07-03 12:21:47 -07:00
Lance Stout
20df6348a4
Merge branch 'develop' into exceptions
2011-07-03 00:39:14 -07:00
Lance Stout
48fb7006f7
Merge branch 'develop' into roster
2011-07-03 00:39:02 -07:00
Lance Stout
9a6eb333e6
Merge branch 'develop' into stream_features
2011-07-03 00:38:22 -07:00
Lance Stout
086bf89d69
Added XEP-0066: Out-of-Band Data
2011-07-03 00:36:36 -07:00
Lance Stout
0224d028e7
SASL failure event now includes the failure stanza.
...
Broke SASL stanzas into separate files.
Fixed typo in feature_bind.
2011-07-02 23:09:29 -07:00
Lance Stout
540d749695
Fix ordering bug when retrieving an error condition.
2011-07-02 22:50:31 -07:00
Lance Stout
219df582da
It isn't 2010 anymore.
...
I keep forgetting to update the copyright on new code.
2011-07-02 22:49:34 -07:00
Lance Stout
b898b14b77
Use a set to track negotiated features.
...
Added guards to prevent renegotiating STARTTLS or SASL in cases where
servers don't behave properly.
2011-07-02 22:30:55 -07:00
Lance Stout
fba235a801
Simplify SASL mech registration.
...
Moved SASL registration completely to the feature plugin, instead of
keeping a portion of it in ClientXMPP.
2011-07-02 21:57:50 -07:00
Lance Stout
b0297af38d
Finish cleaning up stream feature organization.
...
Fixed missing references that weren't caught due to leftover pyc
file allowing tests to keep working when they shouldn't have.
2011-07-02 21:43:02 -07:00
Lance Stout
04def6d925
Merge branch 'develop' into stream_features
2011-07-01 15:19:37 -07:00
Lance Stout
7057984831
Merge branch 'develop' into roster
2011-07-01 15:19:05 -07:00
Lance Stout
2a2ac73845
So using sys.excepthook to catch errors only works once.
...
The error bubbles through the event processing loop, breaking it and
hanging the application.
Instead, there is now a .exception(e) method on XMLStream which may
be overridden or reassigned that will receive all unhandled exceptions
(read: not XMPPError) from event and stream handlers.
2011-07-01 15:18:10 -07:00
Lance Stout
634f5d691b
Continued reorganization and streamlining.
2011-07-01 14:45:55 -07:00
Lance Stout
754ac5092a
Reorganize features into plugins.
2011-06-30 15:40:22 -07:00
Lance Stout
9ed972ffeb
Fix SASL mechanism selection bug.
...
ANONYMOUS was being treated as PLAIN, mechanism was being chosen
purely from supported mechanisms, not those provided by the server.
Broke nested handler methods into top-level methods.
2011-06-29 14:05:27 -07:00
Lance Stout
3b1f3fddf0
Reorganized stream level stanzas.
2011-06-28 11:06:44 -07:00
Lance Stout
fa716457a5
Merge branch 'develop' into stream_features
2011-06-20 16:27:55 -07:00
Lance Stout
847510c6b5
Merge branch 'develop' into exceptions
2011-06-20 16:27:39 -07:00
Lance Stout
774e0f2022
Merge branch 'develop' into roster
2011-06-20 16:27:25 -07:00
Lance Stout
d8d9e8df16
Fix stanza clobbering when replying to errors.
...
If a stanza handler raised an exception, the exception was processed
and replied by the modified stanza, not a stanza with the original
content.
A copy is now made before handler processing, and if an exception occurs
it is the copy that processes the exception using the original content.
2011-06-20 16:25:56 -07:00
Lance Stout
d1e12cd46f
Need to store unavailable presence as last sent if broadcasted.
2011-06-18 14:39:17 -07:00
Lance Stout
adf6d49fd1
Store unavailable presence as last sent presence.
2011-06-18 14:36:19 -07:00
Lance Stout
ce145b04ac
Integrate roster with ClientXMPP.
...
Roster updates are now passed through to the roster when using
self.update_roster, etc.
2011-06-16 16:09:15 -07:00
Lance Stout
29d775e675
Integrate roster with BaseXMPP.
...
Last sent stanzas are saved regardless of if the roster is used
directly or self.send_presence
2011-06-16 16:03:31 -07:00
Lance Stout
251a47db8c
Split roster.py into a directory.
2011-06-16 14:15:22 -07:00
Lance Stout
393d702e77
Merge branch 'develop' into exceptions
2011-06-15 10:56:49 -07:00
Lance Stout
4efd41f1ba
Merge branch 'develop' into stream_features
2011-06-15 10:56:33 -07:00
Lance Stout
58aa944a5e
Fix another roster issue.
...
Caused by same issue of a JID being in the roster, but with an
incomplete entry.
2011-06-15 10:55:36 -07:00
Lance Stout
a3597d6deb
Merge branch 'develop' into roster
...
Conflicts:
sleekxmpp/basexmpp.py
2011-06-14 14:24:25 -07:00
Lance Stout
8fada4d015
Merge branch 'develop' into exceptions
2011-06-14 14:18:40 -07:00
Lance Stout
5d11ab269d
Merge branch 'develop' into stream_features
2011-06-14 14:10:52 -07:00
Lance Stout
dd41a85efc
Fix issue with components and roster.
...
If the roster contained a JID, but not any resource presence data, then
an error would occur when accessing self.roster[jid]['presence'].
2011-06-14 14:03:54 -07:00
Lance Stout
6d59f55fd4
Merge branch 'develop' into exceptions
2011-06-10 15:15:01 -07:00
Lance Stout
7a60e4b458
Merge branch 'develop' into stream_features
2011-06-10 15:14:51 -07:00
Lance Stout
937dce8e65
Merge branch 'develop' into roster
2011-06-10 15:14:37 -07:00
Nathan Fritz
e2d18170b0
old xep_0050 plugin is now loadable
2011-06-10 04:14:01 +00:00
Lance Stout
e219c0f976
Added session_end event and some docs.
...
For now, session_end is the same as disconnected, but once support is
added later for stream management, the two events will become distinct.
Plugins should add handlers for session_end for cleaning any session
state.
2011-06-08 10:24:25 -07:00
Lance Stout
5c1562f36b
Merge branch 'develop' into exceptions
2011-06-08 10:02:38 -07:00
Lance Stout
823c13707d
Merge branch 'develop' into stream_features
2011-06-08 10:02:22 -07:00
Lance Stout
8eb59072b4
Merge branch 'develop' into roster
2011-06-08 10:01:52 -07:00
Lance Stout
4266ee0fa4
Fix XEP-0050 issue with Unicode string type checking.
2011-06-08 10:00:28 -07:00
Lance Stout
3a62908703
Send component handshake immediately.
2011-06-08 10:00:01 -07:00
Lance Stout
20d053807d
IqTimeout now references the original sent stanza.
...
A little extra bit of docs for IqError.
2011-06-01 15:28:33 -07:00
Lance Stout
8aa4396e44
Begin experimental use of exceptions.
...
Provides IqTimeout and IqError which are raised when an Iq response
does not arrive in time, or it arrives with type='error'.
2011-06-01 15:17:22 -07:00
Lance Stout
8f9100c762
Merge branch 'develop' into stream_features
2011-06-01 15:17:13 -07:00
Lance Stout
788a5b73f9
Merge branch 'develop' into roster
2011-06-01 15:17:04 -07:00
Lance Stout
1469323350
Cache stanza if sending fails.
...
The stanza will be sent first once the send queue is reactivated
after session start.
Stanzas sent by skipping the queue will not be cached.
2011-06-01 15:10:44 -07:00
Lance Stout
83a73ac9b7
Merge branch 'develop' into stream_features
...
Conflicts:
sleekxmpp/clientxmpp.py
2011-05-31 11:05:54 -07:00
Lance Stout
5ed27bf5f6
Merge branch 'develop' into roster
2011-05-31 10:59:14 -07:00
Lance Stout
a81162edd2
Apply connection backoff to reconnect attempts.
...
Backoff was only being done for the initial connection attempt
before. Now any reconnection will start with a minimum 1 sec
delay which will approximately double between attempts.
2011-05-31 10:55:15 -07:00
Lance Stout
8080b4cae2
Cleanup logging and exception handling.
...
The syntax and attribute errors raised during a disconnect/reconnect
attempt are now caught and produce nicer log messages.
2011-05-31 10:23:05 -07:00
Lance Stout
1735c194cd
Don't use the send queue for stream initialization.
...
Use the parameter now=True to skip the queue when
sending Iq stanzas, or using xmpp.send().
2011-05-27 17:00:57 -07:00
Lance Stout
6997b2fbf8
Fix typo for SSL certificate use.
2011-05-27 16:39:45 -07:00
Lance Stout
b81ab97900
Add exponential backoff to connection attempts.
...
Delay will approximately double between attempts (random variation).
See issue #67 .
2011-05-27 14:42:40 -07:00
Lance Stout
384e1a92b7
Added support for testind disconnect errors.
2011-05-27 11:01:30 -07:00
Lance Stout
9851a2a057
Merge branch 'develop' into stream_features
2011-05-20 21:41:44 -04:00
Lance Stout
c49a8e9114
Save progress
2011-05-20 17:42:40 -04:00
Lance Stout
6b274a2543
Fix double roster entry issue with Unicode.
...
JIDs with Unicode values were being encoded by the JID class
instead of leaving them as just Unicode strings.
It may still be a good idea to use
from __future__ import unicode_literals
pretty much everywhere though.
Fixes issue #88 .
2011-05-20 16:48:13 -04:00
Lance Stout
a269be485f
Merge branch 'develop' into stream_features
2011-05-20 13:46:46 -04:00
Lance Stout
d3bd9cd31d
Merge branch 'develop' into roster
2011-05-20 13:46:36 -04:00
Lance Stout
6a07e7cbe3
Handle callback return value case.
2011-05-20 13:46:12 -04:00
Lance Stout
e2de82ac8d
Merge branch 'develop' into stream_features
...
Conflicts:
sleekxmpp/clientxmpp.py
2011-05-20 13:26:21 -04:00
Lance Stout
e3b14bc5a9
Merge branch 'develop' into roster
...
Conflicts:
sleekxmpp/clientxmpp.py
tests/test_stream_roster.py
2011-05-20 13:23:48 -04:00
Lance Stout
9f1648328f
Resolve timeout errors for get_roster.
...
See issue #89
Using get_roster will now return the same types of values as
Iq.send. If a timeout occurs, then the event 'roster_timeout'
will be fired. A successful call to get_roster will also
raise the 'roster_received' event.
To ensure that the get_roster call was successful, here
is a pattern to follow:
def __init__(self, ...):
...
self.add_event_handler('session_start', self.session_start)
self.add_event_handler('roster_timeout', self.roster_timeout)
self.add_event_handler('roster_received', self.roster_received)
def session_start(self, e):
self.send_presence()
self.get_roster()
def roster_timeout(self, e):
# Optionally increase the timeout period
self.get_roster(timeout=self.response_timeout * 2)
def roster_received(self, iq):
# Do stuff, roster has been initialized.
...
2011-05-20 12:56:00 -04:00
Lance Stout
8e46aa7054
Merge branch 'develop' into roster
2011-04-26 16:33:32 -04:00
Lance Stout
5399fdd3a9
Add support for testing that no stanzas are sent in tests.
...
Use: self.send(None)
2011-04-26 16:32:58 -04:00
Nathan Fritz
8a22597180
added has_jid to roster
2011-04-15 17:43:12 -07:00
Nathan Fritz
016aac69f6
Pubsub/Unsubscribe was not getting registered
2011-04-14 17:35:20 -07:00
Nathan Fritz
e919906c8c
Pubsub/Unsubscribe was not getting registered
2011-04-14 17:34:33 -07:00
Nathan Fritz
46dc6eac88
remove roster item state responsibility from clients
2011-04-14 16:27:27 -07:00
Lance Stout
b9bf30e095
Merge branch 'develop' into roster
2011-04-11 14:23:39 -04:00
Lance Stout
1d891858b6
Mark scheduler thread as a daemon.
2011-04-11 14:22:32 -04:00
Lance Stout
6b05938573
Merge branch 'develop' into roster
2011-04-08 16:41:45 -04:00
Lance Stout
87ccd804ff
Add version info.
...
May now use sleekxmpp.__version__ and sleekxmpp.__version_info__.
2011-04-08 16:39:39 -04:00
Lance Stout
d7ba7cc72a
Use underscore method name.
...
Since camelcase names are aliased to the underscored name at startup,
if the underscored version is replaced later, the camelCase name does
not reflect the change.
2011-04-08 16:14:22 -04:00
Lance Stout
f125c11a81
Merge branch 'develop' into stream_features
2011-03-24 13:15:09 -04:00
Lance Stout
77601f7262
Merge branch 'develop' into roster
2011-03-24 13:15:00 -04:00
Lance Stout
d94811d81d
Added new implementation for XEP-0086.
2011-03-24 13:14:26 -04:00
Lance Stout
6d45971411
Allow a stanza plugin to override a parent's interfaces.
...
Each interface, say foo, may be overridden in three ways:
set_foo
get_foo
del_foo
To declare an override in a plugin, add the class field
overrides as so:
overrides = ['set_foo', 'del_foo']
Each override must have a matching set_foo(), etc method
for implementing the new behaviour.
To enable the overrides for a particular parent stanza,
pass the option overrides=True to register_stanza_plugin.
register_stanza_plugin(Stanza, Plugin, overrides=True)
Example code:
class Test(ElementBase):
name = 'test'
namespace = 'testing'
interfaces = set(('foo', 'bar'))
sub_interfaces = set(('bar',))
class TestOverride(ElementBase):
name = 'test-override'
namespace = 'testing'
plugin_attrib = 'override'
interfaces = set(('foo',))
overrides = ['set_foo']
def setup(self, xml):
# Don't include an XML element in the parent stanza
# since we're adding just an attribute.
# If adding a regular subelement, no need to do this.
self.xml = ET.Element('')
def set_foo(self, value):
print("overrides!")
self.parent()._set_attr('foo', 'override-%s' % value)
register_stanza_plugin(Test, TestOverride, overrides=True)
Example usage:
>>> t = TestStanza()
>>> t['foo'] = 'bar'
>>> t['foo']
'override-bar'
2011-03-24 12:25:17 -04:00
Lance Stout
bf2f2782b7
Merge branch 'develop' into stream_features
2011-03-24 09:36:35 -04:00
Lance Stout
d9be51b2ef
Merge branch 'develop' into roster
2011-03-24 09:36:26 -04:00