Commit Graph

928 Commits

Author SHA1 Message Date
Brion Vibber 454d0b5738 OStatus: moving parts of profile processing to Activity from feedmunger. Pausing before refactoring DB schema a bit to clean up feed vs person vs group info 2010-02-17 01:49:49 +00:00
Brion Vibber 4a139d1cc8 OStatus: migrated notice parsing to use Activity helper classes; on the way to killing FeedMunger 2010-02-16 23:31:11 +00:00
Brion Vibber 014a32e6b8 OStatus: check only direct children in ActivityUtil::child; fixes pulling actor's info when we wanted post info 2010-02-16 23:04:39 +00:00
Brion Vibber 440ab90391 OStatus: fix up some recent regressions in subscription setup; fix state checks and verification token, and avatar save on setup. Needs updates for new atom code next... 2010-02-16 22:03:24 +00:00
Brion Vibber a116cde1a4 OStatus: fix for low-level remote subscribe 2010-02-16 20:11:48 +00:00
Evan Prodromou 201110ffaa restructure Activity classes to push more DOM stuff to ActivityUtils 2010-02-16 12:49:54 -05:00
Brion Vibber 81b6b58e33 Merge branch 'master' into testing
Conflicts:
	lib/stompqueuemanager.php
2010-02-16 09:22:02 -08:00
Brion Vibber c74aea589d Stomp queue restructuring for mass scalability:
- Multiplexing queues into groups and for multiple sites.
- Sharing vs breakout configurable per site and per queue via $config['queue']['breakout']
- Detect how many times a message is redelivered, discard if it's killed too many daemons
 - count configurable with $config['queue']['max_retries']
 - can dump the items to files in $config['queue']['dead_letter_dir']

Queue daemon memory & resource leak fixes:
- avoid unnecessary reconnections to memcached server (switch persistent connections back in on second initialization, assuming it's child process)
- monkey-patch for leaky .ini loads in DB_DataObject::databaseStructure() - was leaking 200k per active switch
- applied leak fixes to Status_network as well, using intermediate base Safe_DataObject for both it and Memcache_DataObject

Misc queue fixes:
- correct handling of child processes exiting due to signal termination instead of regular exit
- shutdown instead of infinite respawn loop if we're already past the soft memory limit at startup
- Added --all option for xmppdaemon... still opens one xmpp connection per site that has xmpp active

Cache updates:
- add Cache::increment() method with native support for memcached atomic increment
2010-02-16 09:16:51 -08:00
Evan Prodromou a8c2a8261e move some nickname-guessing code to lib/util.php from OpenID 2010-02-16 11:06:10 -05:00
Evan Prodromou 813451c9f9 add a couple of FIXME comments 2010-02-16 10:18:23 -05:00
Evan Prodromou 5a357d5399 change find() to staticGet() to use cache 2010-02-16 09:58:33 -05:00
Zach Copley f414544d0d Upgrade Twitter bridge to use OAuth 1.0a. It's more secure, and allows
us to automatically send in a callback url instead of having to manually
configure one for each StatusNet instance.
2010-02-16 06:12:08 +00:00
Zach Copley 0ba3759171 Use static class method for looking up Twitter user 2010-02-15 22:14:54 +00:00
Zach Copley 9f8e25bfe7 Use static class method for looking up Twitter user 2010-02-15 22:13:10 +00:00
Zach Copley 01c428796f Twitter-bridge: lookup old foreign_user by primary key not url 2010-02-15 22:05:23 +00:00
Zach Copley 66f427c373 Twitter-bridge: lookup old foreign_user by primary key not url 2010-02-15 21:53:49 +00:00
Zach Copley a69863eae6 Better log msgs. Removed debugging statement. 2010-02-15 21:24:31 +00:00
Zach Copley fdf6ed7b1a Better log msgs. Removed debugging statement. 2010-02-15 21:23:26 +00:00
Zach Copley 5db40c440d Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-15 21:14:32 +00:00
Zach Copley 5cc1f8b001 Fix for regression introduced with my last update to the
TwitterStatusFetcher: the Twitter bridge was not saving a foreign user
record when making a foreign link.
2010-02-15 21:13:42 +00:00
Zach Copley 2b6a39f70f Fix for regression introduced with my last update to the
TwitterStatusFetcher: the Twitter bridge was not saving a foreign user
record when making a foreign link.
2010-02-15 21:10:45 +00:00
Sarven Capadisli 03edbfe24e Added single whitespace to separate inline text words. 2010-02-15 20:41:46 +01:00
Evan Prodromou 73e2264c6a test parsing a default atom feed for activities 2010-02-14 13:19:32 -05:00
Evan Prodromou f78cf31303 update activity and salmon for previous commit 2010-02-14 12:12:47 -05:00
Evan Prodromou cea7d8018a Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-14 12:09:07 -05:00
Evan Prodromou 62f5c04ad2 More complete activity parsing
Began the process of actually digging up activity information
from an Atom entry. Added a test script to make sure parsing
is working right.
2010-02-14 12:08:09 -05:00
Sarven Capadisli 171bf3093a Dialogbox for OStatus remote subscription 2010-02-13 20:28:05 +01:00
Sarven Capadisli 1cb94e0be6 Added dialogbox styles for OStatus subscribe form 2010-02-13 19:07:21 +01:00
Sarven Capadisli 4d050f96f3 Added XHR channel for OStatus Subscribe button 2010-02-13 18:49:14 +01:00
Sarven Capadisli f30af7047b Updated feed subscription form markup 2010-02-13 18:46:10 +01:00
Sarven Capadisli 24394269fa Updated OStatus form markup 2010-02-13 18:44:41 +01:00
Sarven Capadisli f6e766d5ac Using the new remote subscription event and updated subscribe label 2010-02-13 18:42:00 +01:00
Zach Copley f3a82e787c Add OStatus PuSH hub and Salmon links back into user and group feeds 2010-02-12 19:02:27 -08:00
Brion Vibber b39047d95b OStatus: prep work for sending notifications on sub/unsub/join/leave/favorite/unfavorite via Salmon; needs to be completed and hooked up once feed gen is fixed. 2010-02-12 18:54:48 +00:00
Evan Prodromou 320532560f flesh out salmon endpoint 2010-02-12 00:43:16 -05:00
Evan Prodromou 5f94efc454 stub for activities 2010-02-12 00:42:42 -05:00
Brion Vibber bc46621af2 OStatus sub setup code cleanup and partial group fixes (needs more work after the Atom updates are done) 2010-02-12 01:11:46 +00:00
Brion Vibber 8e6b52e899 OStatus: renamed feedinfo table to ostatus_profile -- will cover remote ostatus people and groups whether a subscription's active or not (maintains identity over unsub/resub, and between subscribers and subscribees) 2010-02-12 00:22:16 +00:00
Brion Vibber e08657d56c OStatus: correct parsing of georss:point for max interop (commas allowed, whitespace not strictly defined) 2010-02-11 22:42:36 +00:00
Brion Vibber 1773d12a24 OStatus: save Salmon postback URI in feed subscription info, if provided. Will need it for sub/unsub postbacks and other notifications. 2010-02-11 20:12:48 +00:00
Brion Vibber 21bfbc43ad OStatus: fix salmon link on Atom feeds; add a url spec for group feeds as well (endpoint needs impl) 2010-02-11 20:02:17 +00:00
Brion Vibber 20714d1f35 OStatus fix: include feed profile at notice text processing time, fixes replies 2010-02-11 19:44:03 +00:00
Brion Vibber 71151b2583 OStatus: garbage collect unused PuSH subscriptions when the last local subscriber unsubs 2010-02-11 00:09:20 +00:00
Brion Vibber 4ae760cb62 OStatus PuSH fixes:
* HMAC now calculated correctly - confirmed interop with Google's public hub
* Can optionally use an external PuSH hub, set URL in $config['ostatus']['hub']
  (may have issues in replication environment, and will ping the hub for every
  update rather than just those with subscribers) Internal hub will still function
  when this is set, but won't be advertised. Warning: setting this, then turning
  it off later will break subscriptions as that hub will no longer receive pings.
2010-02-10 22:58:39 +00:00
Brion Vibber 162868afdb OStatus update: now using standard save/delivery for incoming ostatus messages -- they get reflected to realtime and everything! woooo
Group delivery may still need some munging
2010-02-10 21:18:53 +00:00
Brion Vibber 7752612ef6 fix hubdistrib 2010-02-10 20:47:42 +00:00
Brion Vibber 045797331c fix up hub queueing to work w/ stomp queues 2010-02-10 12:27:41 -08:00
Brion Vibber f37063cd63 Filename case fix 2010-02-10 10:18:47 -08:00
Sarven Capadisli 6b10c269b5 Fix to Realtime's repeat notice form legend and notice id 2010-02-10 10:47:46 +00:00
James Walker f4ebac5036 removing the webfinger hack for Notice::asAtomEntry since salmon can use a profile URL 2010-02-09 21:50:51 -05:00
James Walker 46f90f7b08 moving salmon endpoint under 'main/' 2010-02-09 21:43:37 -05:00
Brion Vibber 8449256817 OStatus partial support for group subscriptions:
* detection of group feeds is currently a nasty hack based on presence of '/groups/' in URL -- should use some property on the feed?
* listing for the remote group is kinda cruddy; needs to be named more cleanly
* still need to establish per-author profiles (easier once we have the updated Atom code in)
* group delivery probably not right yet
* saving of group messages still triggering some weird behavior

Added support for since_id and max_id on group timeline feeds as a free extra. Enjoy!
2010-02-09 18:32:52 -08:00
James Walker c2475f8853 in progress Salmon responses 2010-02-09 15:37:37 -05:00
James Walker 841981a381 discovery piece - hand merged :P 2010-02-09 01:37:45 -05:00
Brion Vibber b9b0f0410a Pull GeoRSS locations over OStatus feeds 2010-02-08 15:46:38 -08:00
Brion Vibber 384387c9b0 OStatus cleanup...
* Treat linkless feed posts as status updates; drop the "New post:" prefix and quotes on them.
* Use stable user IDs for atom/rss2 feed links instead of unstable nicknames
* Pull Atom feed preferentially when subscribing -- can now put the remote user's profile page straight into the feed subscription form and get to the right place.
* Clean up naming for push endpoints
2010-02-08 14:58:12 -08:00
Zach Copley c83d0b5e98 Delete old Twitter user record when user changes screen name instead of updating. Simpler. 2010-02-08 12:16:55 -08:00
Zach Copley 21c0e75a2e Store Twitter screen_name, not name, for foreign_user.nickname when saving Twitter user. 2010-02-08 12:16:43 -08:00
Brion Vibber dc09453a77 First steps on converting FeedSub into the pub/sub basis for OStatus communications:
* renamed FeedSub plugin to OStatus
* now setting avatar on subscriptions
* general fixes for subscription
* integrated PuSH hub to handle only user timelines on canonical ID url; sends updates directly
* set $config['feedsub']['nohub'] = true to test w/ foreign feeds that don't have hubs (won't actually receive updates though)
* a few bits of code documentation
* HMAC support for verified distributions (safest if sub setup is on HTTPS)

And a couple core changes:
* minimizing HTML output for exceptions in API requests to aid in debugging
* fix for rel=self link in apitimelineuser when id given

This does not not yet include any of the individual subscription management (Salmon notifications for sub/unsub, etc) nor a nice UI for user subscriptions.
Needs some further cleanup to treat posts as status updates instead of link references.
2010-02-08 11:15:29 -08:00
Zach Copley fc226a6ad5 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-06 06:48:41 +00:00
Zach Copley 70abea3ac4 Delete old Twitter user record when user changes screen name instead of updating. Simpler. 2010-02-06 06:48:19 +00:00
Zach Copley 558934d1dd Store Twitter screen_name, not name, for foreign_user.nickname when saving Twitter user. 2010-02-06 06:48:07 +00:00
Brion Vibber 875e1a70ce Don't spew warnings on usage of MEMCACHE_COMPRESSED constant when memcache PHP extension is not present.
Switched to a locally-defined Cache::COMPRESSED, translating that to MEMCACHE_COMPRESSED in the plugin.
2010-02-05 09:47:56 -08:00
Zach Copley af9f23c2d9 - Fix cache handling in TwitterStatusFetcher
- Other stability fixes
2010-02-05 03:18:45 +00:00
Sarven Capadisli 5bdc6fa5d4 Moved hardcoded identica theme out of MobileProfile. In this case, it
will use whichever theme is loaded as its base and then add its own
mobile styles. Of course, if a theme comes with its own mobile styles,
it will use that instead as an addition to its own base.
2010-02-04 19:42:33 +00:00
Zach Copley 9ca4fd69b3 - Fix cache handling in TwitterStatusFetcher
- Other stability fixes
2010-02-04 01:59:28 +00:00
Sarven Capadisli 245610d2e1 Removed entity flag stylesheet and icons from plugin to core. 2010-02-02 16:27:58 +01:00
Sarven Capadisli 65c5d7813b Added icon to Clear label for UserFlag plugin 2010-02-02 16:06:22 +01:00
Sarven Capadisli 0c838f82b0 Added missing concat of </li> in Realtime response 2010-01-31 23:57:35 +01:00
Sarven Capadisli 9f36c10001 Updated XHR binded events to work better in jQuery 1.4.1. Using
.live() for event delegation instead of jQuery.data() and checking to
see if an element was previously binded.
2010-01-31 22:37:22 +00:00
Evan Prodromou ebf4e497f6 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-01-31 15:20:57 -05:00
Evan Prodromou a1c9874a61 better handling of null responses from geonames.org 2010-01-30 12:40:11 -05:00
Evan Prodromou 8318f195a2 plugin to limit number of registered users 2010-01-29 18:29:51 -05:00
Sarven Capadisli b68a21d4f7 Adds notice author's name to @title in Realtime response 2010-01-29 15:43:37 +00:00
Zach Copley 558bf0f489 'Sign in with Twitter' button img 2010-01-28 18:15:45 +00:00
Zach Copley 794fe16d69 Merge branch 'facebook-js-fix' into testing 2010-01-28 04:47:21 +00:00
Zach Copley c2c262e4b4 Move faceboookapp.js to the Facebook plugin 2010-01-28 04:46:10 +00:00
Brion Vibber f026ecec32 fix for fix for bad realtime JS load 2010-01-27 19:50:52 -08:00
Brion Vibber 5c0560a7fc fix for fix for bad realtime JS load 2010-01-27 19:50:08 -08:00
Brion Vibber 84e7c7783c Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-01-27 19:49:26 -08:00
Evan Prodromou dd413ff4fa move script into OpenXPlugin::showAd() so it works 2010-01-27 18:44:46 -05:00
Evan Prodromou 97a1ef14d2 using an action for output in OpenX plugin 2010-01-27 18:39:55 -05:00
Evan Prodromou 0373ab6fa4 Plugin to enable OpenX ads 2010-01-27 18:35:02 -05:00
Evan Prodromou 2aba2eeeaf width and height should be integers in AdsensePlugin 2010-01-27 17:55:33 -05:00
Evan Prodromou 00d9b215f4 Plugin to support Google Adsense
A plugin to easily add Google Adsense blocks to a StatusNet site.
2010-01-27 17:29:36 -05:00
Evan Prodromou f650b40706 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-01-27 16:37:43 -05:00
Evan Prodromou 4ad931ad38 wrong height for rectangle in BlankAd 2010-01-27 16:34:17 -05:00
Evan Prodromou e4393ee6db Add the moved BlankAdPlugin 2010-01-27 16:34:17 -05:00
Evan Prodromou b2b95bd21f make BlankAd dir and change to use a 1x1 image 2010-01-27 16:34:17 -05:00
Evan Prodromou b412ebab11 move BlankAdPlugin to its own dir 2010-01-27 16:34:17 -05:00
Evan Prodromou 9decd9806c Add BlankAdPlugin to test ad layout in different themes 2010-01-27 16:34:17 -05:00
Evan Prodromou 1758ed453b move UAP plugin to core 2010-01-27 16:34:17 -05:00
Sarven Capadisli 58fde0dcb5 Lowercased switch cases in UAP Plugin 2010-01-27 16:34:17 -05:00
Sarven Capadisli 61a7a7b36b Plugin for Universal Ad Package. Outputs four most widely used ad types. 2010-01-27 16:34:17 -05:00
Brion Vibber b1402896e7 Set default 24-hour expiry on Memcached objects where not specified. 2010-01-27 09:13:21 -08:00
Brion Vibber 7aeb03f727 quick fix: use common_path() on realtime update JS so it works with the new JS path code (will pull from main server for now) 2010-01-27 08:53:55 -08:00
Evan Prodromou c52951cef5 Optionally set a separate Javascript server and path
We have about 10-12 JavaScript pages per Web page. They usually
are based on the same server as the Web pages, but since they're
static files, it makes sense to offload them to a lite server that
handles static files well.

This commit lets you set a separate Javascript server and path for the
default Javascript code in StatusNet.

Squashed commit of the following:

commit 139d1622fdafe5ad00c820224416d9021efc3234
Author: Evan Prodromou <evan@status.net>
Date:   Wed Jan 27 11:30:24 2010 -0500

    modules that call htmloutputter::script() don't prescribe js/ path

commit c6ca3174af73efed55eaed5ff1e2a3bdc77d2d87
Author: Evan Prodromou <evan@status.net>
Date:   Wed Jan 27 11:28:07 2010 -0500

    configurable server and path for javascript files
2010-01-27 11:37:22 -05:00
Sarven Capadisli e05c325722 Updated geolocation sharing in notice form for Realtime pop 2010-01-26 19:13:05 +01:00
Zach Copley 02957d2854 Add Julien C to author comments 2010-01-26 00:19:46 -08:00
Zach Copley f7450d2ca8 - Remove redundant function
- clean up log msgs
2010-01-26 00:19:20 -08:00
Zach Copley ce44008d13 Use "Sign in with Twitter" auth pattern and official Twitter button for Twitter-based login.
See: http://apiwiki.twitter.com/Sign-in-with-Twitter
2010-01-26 00:19:09 -08:00
Zach Copley 1c1abfc284 Ask the user to set a password before disconnecting from Twitter 2010-01-26 00:18:55 -08:00
Zach Copley 2d97e15cd6 - Twitter username wasn't getting stored in Foreign_user when linking Twitter account (fixed)
- Updates to comments
2010-01-26 00:18:42 -08:00
Julien C 7fc5588c5d Allow logging in using Twitter
Signed-off-by: Julien C <chaumond@gmail.com>
2010-01-26 00:18:11 -08:00
Evan Prodromou 663e4e02a1 Merge branch 'master' into testing
Conflicts:
	lib/queuemanager.php
2010-01-25 18:13:09 -05:00
Evan Prodromou e26a843caf Offload inbox updates to a queue handler to speed up posting online
Moved much of the writing that happens when posting a notice to a new
queuehandler, distribqueuehandler. This updates tags, groups, replies
and inboxes at queue time (or at Web time, if queues are disabled).

To make this work well, I had to break up the monolithic
Notice::blowCaches() and make cache blowing happen closer to where
data is updated.

Squashed commit of the following:

commit 5257626c62750ac4ac1db0ce2b71410c5711cfa3
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 14:56:41 2010 -0500

    slightly better handling of blowing tag memory cache

commit 8a22a3cdf6ec28685da129a0313e7b2a0837c9ef
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 01:42:56 2010 -0500

    change 'distribute' to 'distrib' so not too long for dbqueue

commit 7a063315b0f7fad27cb6fbd2bdd74e253af83e4f
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 01:39:15 2010 -0500

    change handle_notice() to handle() in distributqueuehandler

commit 1a39ccd28b9994137d7bfd21bb4f230546938e77
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 16:05:25 2010 -0500

    error with queuemanager

commit e6b3bb93f305cfd2de71a6340b8aa6fb890049b7
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 01:11:34 2010 -0500

    Blow memcache at different point rather than one big function for Notice class

commit 94d557cdc016187d1d0647ae1794cd94d6fb8ac8
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 00:48:44 2010 -0500

    Blow memcache at different point rather than one big function for Notice class

commit 1c781dd08c88a35dafc5c01230b4872fd6b95182
Author: Evan Prodromou <evan@status.net>
Date:   Wed Jan 20 08:54:18 2010 -0500

    move broadcasting and distributing to new queuehandler

commit da3e46d26b84e4f028f34a13fd2ee373e4c1b954
Author: Evan Prodromou <evan@status.net>
Date:   Wed Jan 20 08:53:12 2010 -0500

    Move distribution of notices to new distribute queue handler
2010-01-25 18:08:21 -05:00
Brion Vibber c10d5320dd Disable PubSubHubBub hub pings automatically on private site (hub wouldn't be able to read feeds anyway)
[Might be good to think of a core way to mark a plugin as disabled when it initializes.]
2010-01-25 09:07:24 -08:00
Evan Prodromou 3f5ffe5c5b set correct key types for User_flag_profile 2010-01-24 15:57:56 -05:00
Evan Prodromou b91a035025 add function doc comment to User_flag_profile::create() 2010-01-24 11:20:08 -05:00
Sarven Capadisli 38fe4ad958 Added version info for MobileProfile plugin 2010-01-24 15:34:40 +01:00
Sarven Capadisli 51775e38ba Better alignment for notice options in MobileProfile 2010-01-24 00:23:14 +01:00
Sarven Capadisli e3ee5663ab Updated notice item view where a) notice text no longer wraps around
(under author's photo) b) supplemental notice content and options will
start right under notice text.
2010-01-24 00:23:01 +01:00
Sarven Capadisli 2742494fe8 Updated UI for notice aside content and notice options in MobileProfile 2010-01-24 00:20:36 +01:00
Sarven Capadisli 37e642bece Inline script for maxlength is deprecated 2010-01-24 00:20:11 +01:00
Brion Vibber a4d733b68d Fix for PoweredByStatusNetPlugin to be localizable (was broken for non-English word order)
(Note the .po files will have to be added manually for now as we haven't set TranslateWiki up for plugins I think)
2010-01-22 15:04:53 -08:00
Brion Vibber 71b3b9ee2b Consolidate PuSH publishing ping into a single POST for all feeds, and fix server response (if any on failure) to go to log instead of stdout. 2010-01-22 14:03:24 -08:00
Brion Vibber c7507e7e9d XMPP queued output & initial retooling of DB queue manager to support non-Notice objects.
Queue handlers for XMPP individual & firehose output now send their XML stanzas
to another output queue instead of connecting directly to the chat server. This
lets us have as many general processing threads as we need, while all actual
XMPP input and output go through a single daemon with a single connection open.

This avoids problems with multiple connected resources:
* multiple windows shown in some chat clients (psi, gajim, kopete)
* extra load on server
* incoming message delivery forwarding issues

Database changes:
* queue_item drops 'notice_id' in favor of a 'frame' blob.
  This is based on Craig Andrews' work branch to generalize queues to take any
  object, but conservatively leaving out the serialization for now.
  Table updater (preserves any existing queued items) in db/rc3to09.sql

Code changes to watch out for:
* Queue handlers should now define a handle() method instead of handle_notice()
* QueueDaemon and XmppDaemon now share common i/o (IoMaster) and respawning
  thread management (RespawningDaemon) infrastructure.
* The polling XmppConfirmManager has been dropped, as the message is queued
  directly when saving IM settings.
* Enable $config['queue']['debug_memory'] to output current memory usage at
  each run through the event loop to watch for memory leaks

To do:
* Adapt XMPP i/o to component connection mode for multi-site support.
* XMPP input can also be broken out to a queue, which would allow the actual
  notice save etc to be handled by general queue threads.
* Make sure there are no problems with simply pushing serialized Notice objects
  to queues.
* Find a way to improve interactive performance of the database-backed queue
  handler; polling is pretty painful to XMPP.
* Possibly redo the way QueueHandlers are injected into a QueueManager. The
  grouping used to split out the XMPP output queue is a bit awkward.

Conflicts:

	scripts/xmppdaemon.php
2010-01-22 12:52:36 -08:00
Brion Vibber 0e852def6a XMPP queued output & initial retooling of DB queue manager to support non-Notice objects.
Queue handlers for XMPP individual & firehose output now send their XML stanzas
to another output queue instead of connecting directly to the chat server. This
lets us have as many general processing threads as we need, while all actual
XMPP input and output go through a single daemon with a single connection open.

This avoids problems with multiple connected resources:
* multiple windows shown in some chat clients (psi, gajim, kopete)
* extra load on server
* incoming message delivery forwarding issues

Database changes:
* queue_item drops 'notice_id' in favor of a 'frame' blob.
  This is based on Craig Andrews' work branch to generalize queues to take any
  object, but conservatively leaving out the serialization for now.
  Table updater (preserves any existing queued items) in db/rc3to09.sql

Code changes to watch out for:
* Queue handlers should now define a handle() method instead of handle_notice()
* QueueDaemon and XmppDaemon now share common i/o (IoMaster) and respawning
  thread management (RespawningDaemon) infrastructure.
* The polling XmppConfirmManager has been dropped, as the message is queued
  directly when saving IM settings.
* Enable $config['queue']['debug_memory'] to output current memory usage at
  each run through the event loop to watch for memory leaks

To do:
* Adapt XMPP i/o to component connection mode for multi-site support.
* XMPP input can also be broken out to a queue, which would allow the actual
  notice save etc to be handled by general queue threads.
* Make sure there are no problems with simply pushing serialized Notice objects
  to queues.
* Find a way to improve interactive performance of the database-backed queue
  handler; polling is pretty painful to XMPP.
* Possibly redo the way QueueHandlers are injected into a QueueManager. The
  grouping used to split out the XMPP output queue is a bit awkward.
2010-01-21 22:40:35 -08:00
Evan Prodromou 10f21e1f41 add class and function doc comments to PuSH plugin 2010-01-20 16:37:41 -05:00
Evan Prodromou 0167ff6d27 whitespace changes to make phpcs happy for PuSH plugin 2010-01-20 16:29:11 -05:00
Evan Prodromou 1d37a6c428 correctly get replies for a notice in PuSH plugin 2010-01-20 16:16:22 -05:00
Evan Prodromou 365b0b1e14 use standard plugin configuration for PubSubHubBub 2010-01-20 16:13:52 -05:00
Evan Prodromou dbccebb14b update friends, not user, timeline for recipients of notice in PuSH plugin 2010-01-20 15:43:24 -05:00
Brion Vibber 775c63b654 Cleanup for memcached host/port split -- apparently we use ';' on purpose, restoring. Keeping fix for the notices spewing into the log. 2010-01-16 13:39:05 -08:00
Brion Vibber 5783874cc2 Clean up host/port separation in memcached plugin -- use : not ; as separator and clean up some warnings 2010-01-14 14:14:32 -08:00
Brion Vibber b25deaacea queue daemon fixes: path fix for xmpp, suppress warning in memcached init 2010-01-13 21:24:36 -08:00
Craig Andrews 681065d734 Made the IMAP plugin work in the style of the new queue/iomanagers 2010-01-13 15:35:53 -05:00
Zach Copley c3188fd1fe Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-13 19:17:49 +00:00
Zach Copley 43170b3d18 When Twitter bridge encounters a 403 (rate limit) err, drop the notice
instead of requeuing.
2010-01-13 19:17:40 +00:00
Evan Prodromou f2e9469e16 throttle subscriptions 2010-01-13 03:11:31 -08:00
Evan Prodromou 436b8c845e Merge branch '0.9.x' into inblob 2010-01-12 23:53:52 -08:00
Evan Prodromou e34ece8b06 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-12 23:25:25 -08:00
Brion Vibber ec145b73fc Major refactoring of queue handlers to support running multiple sites in one daemon.
Key changes:
* Initialization code moved from common.php to StatusNet class;
  can now switch configurations during runtime.
* As a consequence, configuration files must now be idempotent...
  Be careful with constant, function or class definitions.
* Control structure for daemons/QueueManager/QueueHandler has been refactored;
  the run loop is now managed by IoMaster run via scripts/queuedaemon.php
  IoManager subclasses are woken to handle socket input or polling, and may
  cover multiple sites.
* Plugins can implement notice queue handlers more easily by registering a
  QueueHandler class; no more need to add a daemon.

The new QueueDaemon runs from scripts/queuedaemon.php:

* This replaces most of the old *handler.php scripts; they've been refactored
  to the bare handler classes.
* Spawns multiple child processes to spread load; defaults to CPU count on
  Linux and Mac OS X systems, or override with --threads=N
* When multithreaded, child processes are automatically respawned on failure.
* Threads gracefully shut down and restart when passing a soft memory limit
  (defaults to 90% of memory_limit), limiting damage from memory leaks.
* Support for UDP-based monitoring: http://www.gitorious.org/snqmon

Rough control flow diagram:
QueueDaemon -> IoMaster -> IoManager
                           QueueManager [listen or poll] -> QueueHandler
                           XmppManager [ping & keepalive]
                           XmppConfirmManager [poll updates]

Todo:

* Respawning features not currently available running single-threaded.
* When running single-site, configuration changes aren't picked up.
* New sites or config changes affecting queue subscriptions are not yet
  handled without a daemon restart.
* SNMP monitoring output to integrate with general tools (nagios, ganglia)
* Convert XMPP confirmation message sends to use stomp queue instead of polling
* Convert xmppdaemon.php to IoManager?
* Convert Twitter status, friends import polling daemons to IoManager
* Clean up some error reporting and failure modes
* May need to adjust queue priorities for best perf in backlog/flood cases

Detailed code history available in my daemon-work branch:
http://www.gitorious.org/~brion/statusnet/brion-fixes/commits/daemon-work
2010-01-12 20:45:09 -08:00
Brion Vibber 9c34d5c107 Actually skip the pingback if XML-RPC extension is missing, instead of considering it then trying anyway and dying of a fatal error. :) 2010-01-12 12:12:31 -08:00
Evan Prodromou ecb3abf84c Merge branch '0.9.x' into inblob 2010-01-11 16:28:27 -08:00
Evan Prodromou 7e5c15fa80 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-11 16:23:48 -08:00
Evan Prodromou 04c76fc4e5 safer storage for diskcacheplugin 2010-01-11 16:23:34 -08:00
Brion Vibber 116c5f6839 dos -> unix line endings on CasAuthentication's CAS library 2010-01-11 15:42:17 -08:00
Evan Prodromou bd6571c2e1 Merge branch 'diskcache' into 0.9.x 2010-01-11 15:34:27 -08:00
Sarven Capadisli aaea2b1a96 Apparently, I can't spell my family name. 2010-01-11 13:02:04 +01:00
Evan Prodromou 8809e577b2 Merge branch 'sessionidparam' into 0.9.x
Conflicts:
	lib/command.php
2010-01-11 00:45:26 -08:00
Evan Prodromou 92deb35bc4 inject session before redirect for openid finish login 2010-01-11 08:40:41 +00:00
Craig Andrews a07d8dab25 i18n in the imap plugin 2010-01-09 19:04:53 -05:00
Craig Andrews c758b1b1d4 Add version information to a bunch of plugins 2010-01-09 19:04:53 -05:00
Evan Prodromou 2db840b2f5 use Inbox in twitterstatusfetcher 2010-01-09 14:02:01 -08:00
Evan Prodromou d902de139c change PuSH plugin to use whoGets() 2010-01-09 13:59:39 -08:00
Evan Prodromou 9cfea6d051 use whoGets() for realtime plugin 2010-01-09 13:56:54 -08:00
Craig Andrews 055f3fdddb Add an IMAP daemon so StatusNet can process incoming user posts via catch-all mailbox (in addition to the pre-existing script alias method) 2010-01-08 18:52:43 -05:00
Evan Prodromou e22af049a8 persistent connection flag, default false on cli 2010-01-08 13:21:29 -08:00
Sarven Capadisli 647bbb916c Updated RealtimePlugin to use core json2.js 2010-01-08 13:36:31 +00:00