aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriendika <info@friendika.com>2011-08-24 01:21:24 -0700
committerFriendika <info@friendika.com>2011-08-24 01:21:24 -0700
commit2aa23843e401e7f448c3d12f844934da6c27f8ef (patch)
treef36ffd56669d32b1ace2034ceb0cb3a3178a6f7d
parent2cfdcee29a80e355307d013fe71d23a7300f8d98 (diff)
downloadvolse-hubzilla-2aa23843e401e7f448c3d12f844934da6c27f8ef.tar.gz
volse-hubzilla-2aa23843e401e7f448c3d12f844934da6c27f8ef.tar.bz2
volse-hubzilla-2aa23843e401e7f448c3d12f844934da6c27f8ef.zip
D* queue
-rw-r--r--database.sql36
-rw-r--r--include/diaspora.php88
-rw-r--r--include/queue.php13
-rw-r--r--mod/receive.php29
4 files changed, 94 insertions, 72 deletions
diff --git a/database.sql b/database.sql
index f659e8049..f6ae4c7c6 100644
--- a/database.sql
+++ b/database.sql
@@ -38,7 +38,7 @@ CREATE TABLE IF NOT EXISTS `config` (
`k` char(255) NOT NULL,
`v` text NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=MYISAM DEFAULT CHARSET=utf8;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
@@ -428,7 +428,7 @@ CREATE TABLE IF NOT EXISTS `register` (
`password` CHAR(255) NOT NULL,
`language` CHAR(16) NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `clients` (
@@ -436,7 +436,7 @@ CREATE TABLE IF NOT EXISTS `clients` (
`pw` VARCHAR( 20 ) NOT NULL ,
`redirect_uri` VARCHAR( 200 ) NOT NULL ,
PRIMARY KEY ( `client_id` )
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `tokens` (
`id` VARCHAR( 40 ) NOT NULL ,
@@ -444,7 +444,7 @@ CREATE TABLE IF NOT EXISTS `tokens` (
`expires` INT NOT NULL ,
`scope` VARCHAR( 200 ) NOT NULL ,
PRIMARY KEY ( `id` )
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `auth_codes` (
`id` VARCHAR( 40 ) NOT NULL ,
@@ -453,7 +453,7 @@ CREATE TABLE IF NOT EXISTS `auth_codes` (
`expires` INT NOT NULL ,
`scope` VARCHAR( 250 ) NOT NULL ,
PRIMARY KEY ( `id` )
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `queue` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
@@ -462,7 +462,7 @@ CREATE TABLE IF NOT EXISTS `queue` (
`created` DATETIME NOT NULL ,
`last` DATETIME NOT NULL ,
`content` MEDIUMTEXT NOT NULL
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `pconfig` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
@@ -470,7 +470,7 @@ CREATE TABLE IF NOT EXISTS `pconfig` (
`cat` CHAR( 255 ) NOT NULL ,
`k` CHAR( 255 ) NOT NULL ,
`v` MEDIUMTEXT NOT NULL
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `hook` (
@@ -478,7 +478,7 @@ CREATE TABLE IF NOT EXISTS `hook` (
`hook` CHAR( 255 ) NOT NULL ,
`file` CHAR( 255 ) NOT NULL ,
`function` CHAR( 255 ) NOT NULL
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `addon` (
@@ -488,7 +488,7 @@ CREATE TABLE IF NOT EXISTS `addon` (
`installed` TINYINT( 1 ) NOT NULL DEFAULT '0' ,
`timestamp` BIGINT NOT NULL DEFAULT '0' ,
`plugin_admin` TINYINT( 1 ) NOT NULL DEFAULT '0'
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `event` (
@@ -509,13 +509,13 @@ CREATE TABLE IF NOT EXISTS `event` (
`allow_gid` MEDIUMTEXT NOT NULL ,
`deny_cid` MEDIUMTEXT NOT NULL ,
`deny_gid` MEDIUMTEXT NOT NULL
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `cache` (
`k` CHAR( 255 ) NOT NULL PRIMARY KEY ,
`v` TEXT NOT NULL,
`updated` DATETIME NOT NULL
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `fcontact` (
@@ -536,14 +536,14 @@ CREATE TABLE IF NOT EXISTS `fcontact` (
`updated` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
INDEX ( `addr` ),
INDEX ( `network` )
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `ffinder` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`uid` INT UNSIGNED NOT NULL ,
`cid` INT UNSIGNED NOT NULL ,
`fid` INT UNSIGNED NOT NULL
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `fsuggest` (
@@ -556,7 +556,7 @@ CREATE TABLE IF NOT EXISTS `fsuggest` (
`photo` CHAR( 255 ) NOT NULL ,
`note` TEXT NOT NULL ,
`created` DATETIME NOT NULL
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `mailacct` (
@@ -571,7 +571,7 @@ CREATE TABLE IF NOT EXISTS `mailacct` (
`reply_to` CHAR( 255 ) NOT NULL ,
`pubmail` TINYINT(1) NOT NULL DEFAULT '0',
`last_check` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `attach` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
@@ -587,13 +587,13 @@ CREATE TABLE IF NOT EXISTS `attach` (
`allow_gid` MEDIUMTEXT NOT NULL ,
`deny_cid` MEDIUMTEXT NOT NULL ,
`deny_gid` MEDIUMTEXT NOT NULL
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `guid` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`guid` CHAR( 64 ) NOT NULL ,
INDEX ( `guid` )
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `sign` (
@@ -603,6 +603,6 @@ CREATE TABLE IF NOT EXISTS `sign` (
`signature` TEXT NOT NULL ,
`signer` CHAR( 255 ) NOT NULL ,
INDEX ( `iid` )
-) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
diff --git a/include/diaspora.php b/include/diaspora.php
index 320f716bf..5ea38bad5 100644
--- a/include/diaspora.php
+++ b/include/diaspora.php
@@ -4,6 +4,36 @@ require_once('include/crypto.php');
require_once('include/items.php');
require_once('include/bb2diaspora.php');
+function diaspora_dispatch($importer,$msg) {
+
+ $parsed_xml = parse_xml_string($msg['message'],false);
+
+ $xmlbase = $parsed_xml->post;
+
+ if($xmlbase->request) {
+ diaspora_request($importer,$xmlbase->request);
+ }
+ elseif($xmlbase->status_message) {
+ diaspora_post($importer,$xmlbase->status_message);
+ }
+ elseif($xmlbase->comment) {
+ diaspora_comment($importer,$xmlbase->comment,$msg);
+ }
+ elseif($xmlbase->like) {
+ diaspora_like($importer,$xmlbase->like,$msg);
+ }
+ elseif($xmlbase->retraction) {
+ diaspora_retraction($importer,$xmlbase->retraction,$msg);
+ }
+ elseif($xmlbase->photo) {
+ diaspora_photo($importer,$xmlbase->photo,$msg);
+ }
+ else {
+ logger('diaspora_dispatch: unknown message type: ' . print_r($xmlbase,true));
+ }
+ return;
+}
+
function diaspora_get_contact_by_handle($uid,$handle) {
$r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `addr` = '%s' LIMIT 1",
dbesc(NETWORK_DIASPORA),
@@ -866,10 +896,7 @@ function diaspora_share($me,$contact) {
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey'])));
- post_url($contact['notify'] . '/',$slap);
- $return_code = $a->get_curl_code();
- logger('diaspora_send_share: returns: ' . $return_code);
- return $return_code;
+ return(diaspora_transmit($owner,$contact,$slap));
}
function diaspora_unshare($me,$contact) {
@@ -886,10 +913,8 @@ function diaspora_unshare($me,$contact) {
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey'])));
- post_url($contact['notify'] . '/',$slap);
- $return_code = $a->get_curl_code();
- logger('diaspora_send_unshare: returns: ' . $return_code);
- return $return_code;
+ return(diaspora_transmit($owner,$contact,$slap));
+
}
@@ -937,9 +962,7 @@ function diaspora_send_status($item,$owner,$contact) {
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'])));
- post_url($contact['notify'] . '/',$slap);
- $return_code = $a->get_curl_code();
- logger('diaspora_send_status: returns: ' . $return_code);
+ $return_code = diaspora_transmit($owner,$contact,$slap);
if(count($images)) {
diaspora_send_images($item,$owner,$contact,$images);
@@ -979,12 +1002,11 @@ function diaspora_send_images($item,$owner,$contact,$images) {
'$created_at' => xmlify(datetime_convert('UTC','UTC',$r[0]['created'],'Y-m-d h:i:s \U\T\C'))
));
+
logger('diaspora_send_photo: base message: ' . $msg, LOGGER_DATA);
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'])));
- post_url($contact['notify'] . '/',$slap);
- $return_code = $a->get_curl_code();
- logger('diaspora_send_photo: returns: ' . $return_code);
+ diaspora_transmit($owner,$contact,$slap);
}
}
@@ -1039,11 +1061,7 @@ function diaspora_send_followup($item,$owner,$contact) {
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'])));
- post_url($contact['notify'] . '/',$slap);
- $return_code = $a->get_curl_code();
- logger('diaspora_send_followup: returns: ' . $return_code);
- return $return_code;
-
+ return(diaspora_transmit($owner,$contact,$slap));
}
@@ -1115,10 +1133,7 @@ function diaspora_send_relay($item,$owner,$contact) {
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'])));
- post_url($contact['notify'] . '/',$slap);
- $return_code = $a->get_curl_code();
- logger('diaspora_send_relay: returns: ' . $return_code);
- return $return_code;
+ return(diaspora_transmit($owner,$contact,$slap));
}
@@ -1138,9 +1153,30 @@ function diaspora_send_retraction($item,$owner,$contact) {
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'])));
+ return(diaspora_transmit($owner,$contact,$slap));
+}
+
+
+
+function diaspora_transmit($owner,$contact,$slap) {
+
+ $a = get_app();
+
post_url($contact['notify'] . '/',$slap);
$return_code = $a->get_curl_code();
- logger('diaspora_send_retraction: returns: ' . $return_code);
- return $return_code;
+ logger('diaspora_transmit: returns: ' . $return_code);
+
+ if(! $return_code) {
+ logger('diaspora_transmit: queue message');
+ // queue message for redelivery
+ q("INSERT INTO `queue` ( `cid`, `created`, `last`, `content`)
+ VALUES ( %d, '%s', '%s', '%s') ",
+ intval($contact['id']),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc($slap)
+ );
+ }
-} \ No newline at end of file
+ return(($return_code) ? $return_code : (-1));
+}
diff --git a/include/queue.php b/include/queue.php
index fb65d5c25..da5028aee 100644
--- a/include/queue.php
+++ b/include/queue.php
@@ -56,6 +56,7 @@ function queue_run($argv, $argc){
// delivery loop
require_once('include/salmon.php');
+ require_once('include/diaspora.php');
foreach($r as $q_item) {
@@ -120,6 +121,18 @@ function queue_run($argv, $argc){
remove_queue_item($q_item['id']);
}
break;
+ case NETWORK_DIASPORA:
+ if($contact['notify']) {
+ logger('queue: diaspora_delivery: item ' . $q_item['id'] . ' for ' . $contact['name']);
+ $deliver_status = diaspora_transmit($owner,$contact['notify'],$data);
+
+ if($deliver_status == (-1))
+ update_queue_time($q_item['id']);
+ else
+ remove_queue_item($q_item['id']);
+ }
+ break;
+
default:
$params = array('owner' => $owner, 'contact' => $contact, 'queue' => $q_item, 'result' => false);
call_hooks('queue_deliver', $a, $params);
diff --git a/mod/receive.php b/mod/receive.php
index b50774933..34128518b 100644
--- a/mod/receive.php
+++ b/mod/receive.php
@@ -15,8 +15,6 @@ function receive_post(&$a) {
if($a->argc != 3 || $a->argv[1] !== 'users')
http_status_exit(500);
- logger('receive: raw input: ' . file_get_contents('php://input'), LOGGER_DATA);
-
$guid = $a->argv[2];
$r = q("SELECT * FROM `user` WHERE `guid` = '%s' LIMIT 1",
@@ -43,32 +41,7 @@ function receive_post(&$a) {
if(! is_array($msg))
http_status_exit(500);
-
- $parsed_xml = parse_xml_string($msg['message'],false);
-
- $xmlbase = $parsed_xml->post;
-
- if($xmlbase->request) {
- diaspora_request($importer,$xmlbase->request);
- }
- elseif($xmlbase->status_message) {
- diaspora_post($importer,$xmlbase->status_message);
- }
- elseif($xmlbase->comment) {
- diaspora_comment($importer,$xmlbase->comment,$msg);
- }
- elseif($xmlbase->like) {
- diaspora_like($importer,$xmlbase->like,$msg);
- }
- elseif($xmlbase->retraction) {
- diaspora_retraction($importer,$xmlbase->retraction,$msg);
- }
- elseif($xmlbase->photo) {
- diaspora_photo($importer,$xmlbase->photo,$msg);
- }
- else {
- logger('mod-diaspora: unknown message type: ' . print_r($xmlbase,true));
- }
+ diaspora_dispatch($importer,$msg);
http_status_exit(200);
// NOTREACHED