Commit Graph

256 Commits

Author SHA1 Message Date
Evan Prodromou ac609e8040 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
Conflicts:
	plugins/OStatus/extlib/hkit/hkit.class.php
	plugins/OStatus/lib/discoveryhints.php
2010-03-18 20:57:38 -05:00
Evan Prodromou 17c50f338c Remove hkit and do our own hcard parsing
Parsing hcards for the data we need wasn't hard enough to justify using
hkit. It was dependent on a number of external systems (something to
run tidy), and only could handle XHTML.

We now parse HTML with the PHP dom libraries used elsewhere, and
scrape out our own hcards. Seems to work nicer and faster and most of
all works with Google Buzz profile URLs.
2010-03-18 20:52:00 -05:00
Brion Vibber 4a6c9e4451 Work around weird bug with HTML normalization via PHP DOM module; if source had xmlns and xml:lang I ended up with double output, breaking the subsequent parsing. Will have to track this down later and report upstream if not already resolved. 2010-03-18 17:57:58 -07:00
Brion Vibber 1301877dfe OStatus discover fixes:
* Subscription::start was sometimes passing users instead of profiles to hooks, which broke OStatus subscription notifications; now normalizing to profiles for processing.
* H-card parsing would trigger a lot of PHP warnings and notices in hKit. Now suppressing warnings and notices for the duration of the call to keep them out of output when display_errors is on.
* H-card parsing would trigger a PHP fatal error if the source page was not well-formed XML and Tidy was not present on the system. Switched normalization to use the PHP DOM module which is always present, as we have no need for Tidy's extra features here.
* Trying to fetch avatars from Google profiles failed and triggered a PHP warning due to the relative URL not being resolved during h-card parsing. Now passing profile page URL into hKit by sneaking a <base> tag in while we normalize the HTML source.
* Profile pages without a "Link" header could trigger PHP notices due to a bad NULL -> array(NULL) conversion in LinkHeader::getLink(). Now checking that there was a return value before converting single return value into array.
2010-03-18 17:08:19 -07:00
Evan Prodromou 4761c07ad8 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-03-17 09:38:39 -05:00
Evan Prodromou f21f78364a Change the workflow to get better discovery
Tried to re-structure the workflow of discovery to get more and richer
data and hints.
2010-03-16 11:25:18 -05:00
Brion Vibber dfac4bfd09 Fix feed discovery: html:link@rel can contain multiple values; saw rel="updates alternate" in the wild at http://tantek.com/ which broke old discovery code. 2010-03-15 20:26:42 +00:00
James Walker 7aa49b5e87 use canonical user url in xrd 2010-03-15 15:17:31 -04:00
James Walker 85cf90cf0f Performing & allowing host-meta discovery by http url (in addition to webfinger acct) 2010-03-13 18:35:00 -05:00
James Walker 512e511053 fix invalid separator in magic-public-key XRD and matching parsing. 2010-03-11 14:49:12 -05:00
James Walker 06612e35e4 remove hard-coded me:env check in magicenvelope 2010-03-11 14:49:12 -05:00
James Walker 89582e7226 base64_encode/decode -> base64_url_encode/decode 2010-03-11 14:49:12 -05:00
Brion Vibber 58192ad687 OStatus: fix exception thrown on HTTP error during feed discovery 2010-03-09 10:56:33 -08:00
James Walker ddc4a7d2ff Catch a previously uncaught exception and add some additional debug logs for signature verification 2010-03-04 01:46:34 -05:00
James Walker 1c8399fde1 refactor xrd to allow for ownerxrd - xrd document for the site owner.
introduced $config['webfinger']['owner'] for a custom xrd subject
2010-03-03 23:20:30 -05:00
Brion Vibber 24835c1164 OStatus: catchable exception instead of fatal when parsing valid XML that isn't a valid XRD doc 2010-03-03 18:31:35 -08:00
Brion Vibber 9fadf8da11 Put all required field setup into AtomUserNoticeFeed and AtomGroupNoticeFeed, consolidating some code. (RSS feeds pulling title, logo etc from the Atom data structure so we don't dupe it.)
OStatus now calling the feed classes directly instead of faking a call into the API, should be less flakey.
2010-03-03 16:33:20 -08:00
Brion Vibber ffa1931c9d Avoid warning/notice spew in XRD parser. Not all DOM nodes are elements. 2010-03-03 09:31:14 -08:00
Brion Vibber e30af99873 Merge branch 'work' into testing 2010-03-01 16:57:58 -08:00
Brion Vibber 493b5479c1 OStatus: support @example.com/path/to/profile mentions as well as @profile@example.com (latter requires webfinger, former doesn't)
Plus misc warnings/notices cleanup in the submission path.
2010-03-01 16:43:36 -08:00
Brion Vibber 45e8819c1b Fix a bunch of notice & warning-level messages that were breaking my inter-instance communications 2010-03-01 16:35:36 -08:00
James Walker 1cf08c7ad7 MagicEnvelope::parse shouldn't be called statically 2010-02-26 17:09:50 -05:00
James Walker c82cee1876 removing some extraneous debug logging 2010-02-26 16:26:04 -05:00
James Walker e4c462570f move salmon posting to send application/magic-envelope+xml per http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-salmon-00.html#RPF 2010-02-26 15:39:58 -05:00
James Walker 223ebc765c move signing to take a local actor profile and use local keys 2010-02-26 14:22:49 -05:00
James Walker bbb0a7d5bc updating to use latest salmon NS definitions 2010-02-26 14:22:49 -05:00
James Walker ab8bb4d79e more cleanup 2010-02-26 04:07:58 -05:00
James Walker d1256b547f bad merge.. cleaning up missing webfinger bits 2010-02-26 03:43:35 -05:00
James Walker 22062b665e remove webfinger.php 2010-02-26 03:28:29 -05:00
James Walker 84d0c865c4 salmon actually fetching remote keypairs 2010-02-26 03:25:51 -05:00
James Walker 7c8031dc4b Merge remote branch 'statusnet/testing' into testing
Conflicts:
	plugins/OStatus/lib/webfinger.php
2010-02-25 23:49:45 -05:00
James Walker 855692141d use a real keypair from discovery 2010-02-25 23:38:25 -05:00
Evan Prodromou a43598c31e cache Web responses in Webfinger library 2010-02-25 21:07:24 -05:00
Evan Prodromou cc0670791e use new hcard method for webfinger 2010-02-25 19:58:18 -05:00
James Walker 08413428a7 typo 2010-02-25 17:52:56 -05:00
James Walker b2dabe6a48 removing the webfinger lib 2010-02-25 17:12:46 -05:00
James Walker 3d0ba3efc8 adding a new, more generic "discovery" class that does LRDD disco
(rather than webfinger specific)
2010-02-25 17:09:54 -05:00
James Walker e62e49ed3b adding some exception handling for magicenv parsing 2010-02-25 17:09:54 -05:00
Brion Vibber b798faf9ea OStatus: abort processing of this PuSH in item if we got an exception, rather than letting it be re-run. 2010-02-25 02:43:20 +00:00
Brion Vibber 93507a1927 OStatus: handle update-profile Salmon pings 2010-02-24 23:28:01 +00:00
Brion Vibber c36bdc1ba5 - break OMB profile update pings to a background queue
- add event hooks to profile update pings
- send Salmon pings with custom update-profile event to OStatus subscribees and groups (subscribers will see it on your next post)
- fix OStatus queues with overlong transport names, should work on DB queues now
- Ostatus_profile::notifyActivity() and ::notifyDeferred() now can take XML, Notice, or Activity for convenience
2010-02-24 20:36:36 +00:00
Brion Vibber 2e58802cc9 OStatus: fix group delivery, send reply/group Salmon pings from background. 2010-02-24 02:20:31 +00:00
Brion Vibber 584b87cfe5 OStatus: consolidate the low-level notice save code between Salmon and PuSH input paths. Validation etc remains at higher levels. 2010-02-24 01:09:52 +00:00
James Walker 9494b0e5d7 magicsig shuffling 2010-02-22 23:30:32 -05:00
James Walker cd561657c2 missing return value check 2010-02-22 23:30:31 -05:00
James Walker cb32b676fa moving magicsig.php to classes - to add storage 2010-02-22 23:30:31 -05:00
Zach Copley cbf6ebae01 Merge branch 'rationalize-activity' into testing
* rationalize-activity:
  Move ActivityObject and related stuff to core
  Add PoCo bits, avatar link, geo point, etc. to person activity obj output
2010-02-22 17:12:33 -08:00
Zach Copley 6a711c6cdc Move ActivityObject and related stuff to core 2010-02-22 17:10:50 -08:00
Brion Vibber 870e556faa Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-23 00:52:47 +00:00
Zach Copley a3e800e67c Add PoCo bits, avatar link, geo point, etc. to person activity obj output 2010-02-22 16:46:54 -08:00
Brion Vibber d410df0406 OStatus group delivery initial implementation.
- added rel="ostatus:attention" links for group delivery
- added events for plugins to override group profile/permalink pages
- pulled Notice::saveGroups up to save-time so we can override;
  it's relatively cheap and gives us a clean list of target
  groups for distrib time even with customized delivery.
- fixed notice::getGroups to return group objects as expected
- added some doc on new parameters to Notice::saveNew
 - 'groups' list of group IDs to push to in place of parsing
- messages that come in via PuSH and contain local group targets
  are delivered to local group members
- messages that come in via PuSH and contain remote group targets
  are delivered to local members of the remote group

Todo:
- handle group posts that only come through Salmon
- handle conflicts in case something comes in both through Salmon and PuSH
- better source verification
- need a cleaner interface to look up groups by URI
- need a way to handle remote groups with conflicting names
2010-02-23 00:44:45 +00:00
James Walker caad5859b5 swapping pear error handling so Crypt_RSA can properly detect available
math libraries
2010-02-22 19:01:12 -05:00
Brion Vibber 06f155c02d OStatus: initial hookup of remote group membership (notice delivery not yet working quite right)
- added a temp config var to disable salmon magic signatures until they're working consistently
2010-02-22 12:13:57 -08:00
James Walker 2f65fa646a wiring in magicsig 2010-02-22 09:05:52 -05:00
James Walker e0388cc1d3 adding magic sig stuff 2010-02-22 09:05:32 -05:00
Evan Prodromou 75fdef2092 handle poco nicknames in Ostatus_profile 2010-02-22 07:57:44 -05:00
Evan Prodromou 891e002883 don't calculate replies for remote notices 2010-02-21 23:56:48 -05:00
Evan Prodromou 48839a1fcf change erroneous common_sql_time() to common_sql_date() 2010-02-21 23:19:29 -05:00
Evan Prodromou e39e6cdcc5 was using HTMLPurifier::purify() as a static method, which it is not 2010-02-21 23:16:42 -05:00
Evan Prodromou aab7ce70dc Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-21 23:08:01 -05:00
Evan Prodromou 17c329ba89 add HTMLPurifier config 2010-02-21 23:07:46 -05:00
Brion Vibber 5207783765 OStatus: record source profile & saving method in ostatus_source table; this allows us to distinguish posts that have come through an unverified group feed 2010-02-21 19:52:53 -08:00
Evan Prodromou 273c0e0363 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-21 21:39:50 -05:00
Evan Prodromou fde64ddf26 make some of the Webfinger magic strings constants 2010-02-21 21:36:36 -05:00
Brion Vibber aa0b2ce81a OStatus PuSH fixlets:
- set minimal error page output on PuSH callback
- allow hub to retry ($config['ostatus']['hub_retries']), simplify internal iface a bit. Retries are pushed to end of queue but otherwise not delayed yet; makes delivery more robust to one-off transitory errors but not yet against downtime.
2010-02-21 14:28:06 -08:00
Evan Prodromou 37179a91d5 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-21 17:00:19 -05:00
Evan Prodromou 1c22bf20f1 fixup activity serialization so salmon notifications work 2010-02-21 17:00:05 -05:00
Brion Vibber 5349aa420e OStatus feedsub fixlets:
- actually udpate feedsub.last_update when we get a new PuSH update in
- move incoming PuSH processing to a queue handler to minimize time spent before POST return, as recommended by PuSH spec. When queues are disabled this'll still be handled immediately.
2010-02-21 13:40:59 -08:00
Evan Prodromou 4209082677 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-21 14:18:16 -05:00
Evan Prodromou ad3406a919 use Ostatus_profile::ensureActivityObjectProfile() in SalmonAction::ensureProfile() 2010-02-21 14:17:37 -05:00
Brion Vibber 588fe5d603 OStatus: debug aid - log the received Salmon post when it can't be parsed properly as an <atom:entry> 2010-02-21 10:48:48 -08:00
Evan Prodromou f83941a67b correct name check in ActivityObject::fromProfile() 2010-02-21 13:31:31 -05:00
Evan Prodromou d372a352ec make avatar attribute explicit for ActivityObject 2010-02-21 12:55:40 -05:00
Evan Prodromou 09e2d181be remove unused profile code from salmonaction 2010-02-21 12:54:52 -05:00
Evan Prodromou ff2efd314f let activities generate their own XML 2010-02-21 10:50:51 -05:00
Evan Prodromou 6169d8a877 saving notices in salmon actions 2010-02-21 09:16:27 -05:00
Evan Prodromou 229f9bd069 more complete content retrieval in ActivityObject::__construct() 2010-02-21 09:15:57 -05:00
Evan Prodromou 5565216b42 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
Conflicts:
	plugins/OStatus/OStatusPlugin.php
2010-02-20 20:27:04 -05:00
Evan Prodromou 96c6019638 Add support for favor and disfavor notification
Added support for favoring and disfavoring in OStatusPlugin.

Needed to represent the Notice as an activity:object, so added
some code for that in lib/activity.php.

Also, made some small changes to OStatusPlugin so it handled
having a non-default argument $object correctly.
2010-02-20 19:58:20 -05:00
Brion Vibber 145a19954f OStatus: Salmon favorite & unfavorite events now handled 2010-02-20 16:45:30 -08:00
Evan Prodromou 2df3bbc80b Move some salmon processing to a superclass
Moved some salmon processing to a superclass so we could handle group
salmon posts, too.
2010-02-20 11:12:43 -05:00
Brion Vibber 557df3d3f7 OStatus: sub/unsub notifications working again. Fixed up autodetection of feed info at profile setup time 2010-02-19 16:21:17 -08:00
Evan Prodromou 48edade751 add ActivityContext class and test it 2010-02-18 22:18:14 -05:00
Brion Vibber 0dac13d197 OStatus refactoring to clean up profile vs feed and fix up subscription issues.
PuSH subscription maintenance broken back out to FeedSub, letting Ostatus_profile deal with the profile level (user or group, with unique id URI)
2010-02-18 16:50:53 -08:00
Brion Vibber 22ff358ba8 OStatus sub/unsub updates:
- fix for PuSH unsub verification
- send Salmon notification on unsub
2010-02-18 18:20:48 +00:00
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 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
Evan Prodromou 201110ffaa restructure Activity classes to push more DOM stuff to ActivityUtils 2010-02-16 12:49:54 -05: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 5f94efc454 stub for activities 2010-02-12 00:42:42 -05: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 20714d1f35 OStatus fix: include feed profile at notice text processing time, fixes replies 2010-02-11 19:44:03 +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 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
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
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