aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xinclude/items.php42
-rw-r--r--include/onepoll.php19
-rw-r--r--mod/zfinger.php21
-rw-r--r--mod/zotfeed.php35
4 files changed, 110 insertions, 7 deletions
diff --git a/include/items.php b/include/items.php
index 432f26804..6192de108 100755
--- a/include/items.php
+++ b/include/items.php
@@ -4246,3 +4246,45 @@ function fetch_post_tags($items) {
return $items;
}
+
+
+
+function zot_feed($uid,$observer,$mindate) {
+
+ $result = array();
+ $mindate = datetime_convert('UTC','UTC',$mindate);
+ if(! $mindate)
+ $mindate = '0000-00-00 00:00:00';
+
+ if(! perm_is_allowed($uid,$observer,'view_stream')) {
+ return $result;
+ }
+
+// FIXME
+// $sql_extra = item_permissions_sql($r[0]['channel_id'],$remote_contact,$groups);
+
+ if($mindate != '0000-00-00 00:00:00')
+ $sql_extra .= " and created > '$mindate' ";
+
+ $limit = 200;
+
+ $items = q("SELECT item.* from item
+ WHERE uid = %d AND item_restrict = 0
+ AND (item_flags & %d)
+ $sql_extra ORDER BY created DESC limit 0, $limit",
+ intval($uid),
+ intval(ITEM_WALL)
+ );
+ if($items) {
+ xchan_query($items);
+ $items = fetch_post_tags($items);
+ } else {
+ $items = array();
+ }
+
+ foreach($items as $item)
+ $result[] = encode_item($item);
+
+ return $result;
+
+}
diff --git a/include/onepoll.php b/include/onepoll.php
index a2b3f7a9f..e2636d84a 100644
--- a/include/onepoll.php
+++ b/include/onepoll.php
@@ -90,6 +90,25 @@ function onepoll_run($argv, $argc){
}
+ if($contact['xchan_connurl']) {
+ $feedurl = str_replace('/poco/','/zotfeed/',$channel['xchan_connurl']);
+
+ $x = z_fetch_url($feedurl . '?f=$mindate=' . $last_update);
+ if($x['success']) {
+ $total = 0;
+ $j = json_decode($x['body'],);
+ if($j['success'] && $j['messages']) {
+ foreach($j['messages'] as $message) {
+ $results = process_delivery(array('hash' => $contact['xchan_hash']),$message,
+ array(array('hash' => $importer['xchan_hash'])), false);
+ $total ++;
+ }
+ logger("onepoll: $total messages processed");
+ }
+ }
+ }
+
+
// fetch some items
// set last updated timestamp
diff --git a/mod/zfinger.php b/mod/zfinger.php
index b13af50b7..32523ecac 100644
--- a/mod/zfinger.php
+++ b/mod/zfinger.php
@@ -7,13 +7,15 @@ function zfinger_init(&$a) {
$ret = array('success' => false);
- $zhash = ((x($_REQUEST,'guid_hash')) ? $_REQUEST['guid_hash'] : '');
- $zguid = ((x($_REQUEST,'guid')) ? $_REQUEST['guid'] : '');
- $zguid_sig = ((x($_REQUEST,'guid_sig')) ? $_REQUEST['guid_sig'] : '');
- $zaddr = ((x($_REQUEST,'address')) ? $_REQUEST['address'] : '');
- $ztarget = ((x($_REQUEST,'target')) ? $_REQUEST['target'] : '');
- $zsig = ((x($_REQUEST,'target_sig')) ? $_REQUEST['target_sig'] : '');
- $zkey = ((x($_REQUEST,'key')) ? $_REQUEST['key'] : '');
+ $zhash = ((x($_REQUEST,'guid_hash')) ? $_REQUEST['guid_hash'] : '');
+ $zguid = ((x($_REQUEST,'guid')) ? $_REQUEST['guid'] : '');
+ $zguid_sig = ((x($_REQUEST,'guid_sig')) ? $_REQUEST['guid_sig'] : '');
+ $zaddr = ((x($_REQUEST,'address')) ? $_REQUEST['address'] : '');
+ $ztarget = ((x($_REQUEST,'target')) ? $_REQUEST['target'] : '');
+ $zsig = ((x($_REQUEST,'target_sig')) ? $_REQUEST['target_sig'] : '');
+ $zkey = ((x($_REQUEST,'key')) ? $_REQUEST['key'] : '');
+ $mindate = ((x($_REQUEST,'mindate')) ? $_REQUEST['mindate'] : '');
+ $feed = ((x($_REQUEST,'feed')) ? intval($_REQUEST['feed']) : 0);
if($ztarget) {
if((! $zkey) || (! $zsig) || (! rsa_verify($ztarget,base64url_decode($zsig),$zkey))) {
@@ -139,6 +141,11 @@ function zfinger_init(&$a) {
if($permissions['view_profile'])
$ret['profile'] = $profile;
+// if($feed && $permissions['view_stream'])
+// $ret['messages'] = $zot_feed($e['channel_id'],(($ztarget && $zsig)
+// ? base64url_encode(hash('whirlpool',$ztarget . $zsig,true))
+// : '' ),$mindate);
+
// array of (verified) hubs this channel uses
$ret['locations'] = array();
diff --git a/mod/zotfeed.php b/mod/zotfeed.php
new file mode 100644
index 000000000..6519481d2
--- /dev/null
+++ b/mod/zotfeed.php
@@ -0,0 +1,35 @@
+<?php
+
+require_once('include/items.php');
+require_once('include/zot.php');
+
+function zotfeed_init(&$a) {
+
+ $result = array('success' => false);
+
+ $mindate = (($_REQUEST['mindate']) ? datetime_convert('UTC','UTC',$_REQUEST['mindate']) : '');
+ if(! $mindate)
+ $mindate = '0000-00-00 00:00:00';
+
+ if(get_config('system','block_public') && (! get_account_id()) && (! remote_user())) {
+ $result['message'] = 'Public access denied';
+ json_return_and_die($result);
+ }
+
+ $channel_address = ((argc() > 1) ? argv(1) : '');
+ if($channel_address) {
+ $r = q("select channel_id from channel where channel_address = '%s' limit 1",
+ dbesc(argv(1))
+ );
+ }
+ if(! $r) {
+ $result['message'] = 'Channel not found.';
+ json_return_and_die($result);
+ }
+
+ $result['messages'] = zot_feed($r[0]['channel_id'],$observer['xchan_hash'],$mindate);
+ $result['success'] = true;
+ json_return_and_die($result);
+
+
+}