Merge remote-tracking branch 'upstream/develop' into 1607-new-probe

This commit is contained in:
Michael Vogel 2016-07-10 14:03:10 +02:00
commit 230bfcebea
8 changed files with 1738 additions and 1525 deletions

View File

@ -38,7 +38,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_CODENAME', 'Asparagus'); define ( 'FRIENDICA_CODENAME', 'Asparagus');
define ( 'FRIENDICA_VERSION', '3.5-dev' ); define ( 'FRIENDICA_VERSION', '3.5-dev' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1198 ); define ( 'DB_UPDATE_VERSION', 1199 );
/** /**
* @brief Constant with a HTML line break. * @brief Constant with a HTML line break.

View File

@ -1,6 +1,6 @@
-- ------------------------------------------ -- ------------------------------------------
-- Friendica 3.5-dev (Asparagus) -- Friendica 3.5-dev (Asparagus)
-- DB_UPDATE_VERSION 1198 -- DB_UPDATE_VERSION 1199
-- ------------------------------------------ -- ------------------------------------------
@ -234,6 +234,7 @@ CREATE TABLE IF NOT EXISTS `event` (
-- --
CREATE TABLE IF NOT EXISTS `fcontact` ( CREATE TABLE IF NOT EXISTS `fcontact` (
`id` int(10) unsigned NOT NULL auto_increment, `id` int(10) unsigned NOT NULL auto_increment,
`guid` varchar(255) NOT NULL DEFAULT '',
`url` varchar(255) NOT NULL DEFAULT '', `url` varchar(255) NOT NULL DEFAULT '',
`name` varchar(255) NOT NULL DEFAULT '', `name` varchar(255) NOT NULL DEFAULT '',
`photo` varchar(255) NOT NULL DEFAULT '', `photo` varchar(255) NOT NULL DEFAULT '',

View File

@ -568,6 +568,7 @@ function db_definition() {
$database["fcontact"] = array( $database["fcontact"] = array(
"fields" => array( "fields" => array(
"id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"),
"guid" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"photo" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "photo" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),

View File

@ -432,6 +432,8 @@ class diaspora {
$type = $element->getName(); $type = $element->getName();
$orig_type = $type; $orig_type = $type;
logger("Got message type ".$type.": ".$msg["message"], LOGGER_DATA);
// All retractions are handled identically from now on. // All retractions are handled identically from now on.
// In the new version there will only be "retraction". // In the new version there will only be "retraction".
if (in_array($type, array("signed_retraction", "relayable_retraction"))) if (in_array($type, array("signed_retraction", "relayable_retraction")))
@ -568,6 +570,9 @@ class diaspora {
$d = strtotime($person["updated"]." +00:00"); $d = strtotime($person["updated"]." +00:00");
if ($d < strtotime("now - 14 days")) if ($d < strtotime("now - 14 days"))
$update = true; $update = true;
if ($person["guid"] == "")
$update = true;
} }
if (!$person OR $update) { if (!$person OR $update) {
@ -601,6 +606,7 @@ class diaspora {
`request` = '%s', `request` = '%s',
`nick` = '%s', `nick` = '%s',
`addr` = '%s', `addr` = '%s',
`guid` = '%s',
`batch` = '%s', `batch` = '%s',
`notify` = '%s', `notify` = '%s',
`poll` = '%s', `poll` = '%s',
@ -614,6 +620,7 @@ class diaspora {
dbesc($arr["request"]), dbesc($arr["request"]),
dbesc($arr["nick"]), dbesc($arr["nick"]),
dbesc($arr["addr"]), dbesc($arr["addr"]),
dbesc($arr["guid"]),
dbesc($arr["batch"]), dbesc($arr["batch"]),
dbesc($arr["notify"]), dbesc($arr["notify"]),
dbesc($arr["poll"]), dbesc($arr["poll"]),
@ -625,7 +632,7 @@ class diaspora {
dbesc($arr["network"]) dbesc($arr["network"])
); );
} else { } else {
$r = q("INSERT INTO `fcontact` (`url`,`name`,`photo`,`request`,`nick`,`addr`, $r = q("INSERT INTO `fcontact` (`url`,`name`,`photo`,`request`,`nick`,`addr`, `guid`,
`batch`, `notify`,`poll`,`confirm`,`network`,`alias`,`pubkey`,`updated`) `batch`, `notify`,`poll`,`confirm`,`network`,`alias`,`pubkey`,`updated`)
VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
dbesc($arr["url"]), dbesc($arr["url"]),
@ -634,6 +641,7 @@ class diaspora {
dbesc($arr["request"]), dbesc($arr["request"]),
dbesc($arr["nick"]), dbesc($arr["nick"]),
dbesc($arr["addr"]), dbesc($arr["addr"]),
dbesc($arr["guid"]),
dbesc($arr["batch"]), dbesc($arr["batch"]),
dbesc($arr["notify"]), dbesc($arr["notify"]),
dbesc($arr["poll"]), dbesc($arr["poll"]),
@ -1838,10 +1846,26 @@ class diaspora {
// That makes us friends. // That makes us friends.
if ($contact) { if ($contact) {
if ($following AND $sharing) { if ($following AND $sharing) {
logger("Author ".$author." (Contact ".$contact["id"].") wants to have a bidirectional conection.", LOGGER_DEBUG);
self::receive_request_make_friend($importer, $contact); self::receive_request_make_friend($importer, $contact);
// refetch the contact array
$contact = self::contact_by_handle($importer["uid"],$author);
// If we are now friends, we are sending a share message.
// Normally we needn't to do so, but the first message could have been vanished.
if (in_array($contact["rel"], array(CONTACT_IS_FRIEND, CONTACT_IS_FOLLOWER))) {
$u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"]));
if($u) {
logger("Sending share message to author ".$author." - Contact: ".$contact["id"]." - User: ".$importer["uid"], LOGGER_DEBUG);
$ret = self::send_share($u[0], $contact);
}
}
return true; return true;
} else /// @todo Handle all possible variations of adding and retracting of permissions } else { /// @todo Handle all possible variations of adding and retracting of permissions
logger("Author ".$author." (Contact ".$contact["id"].") wants to change the relationship: Following: ".$following." - sharing: ".$sharing. "(By now unsupported)", LOGGER_DEBUG);
return false; return false;
}
} }
if (!$following AND $sharing AND in_array($importer["page-flags"], array(PAGE_SOAPBOX, PAGE_NORMAL))) { if (!$following AND $sharing AND in_array($importer["page-flags"], array(PAGE_SOAPBOX, PAGE_NORMAL))) {
@ -1850,6 +1874,12 @@ class diaspora {
} elseif (!$following AND !$sharing) { } elseif (!$following AND !$sharing) {
logger("Author ".$author." doesn't want anything - and we don't know the author. Request is ignored.", LOGGER_DEBUG); logger("Author ".$author." doesn't want anything - and we don't know the author. Request is ignored.", LOGGER_DEBUG);
return false; return false;
} elseif (!$following AND $sharing) {
logger("Author ".$author." wants to share with us.", LOGGER_DEBUG);
} elseif ($following AND $sharing) {
logger("Author ".$author." wants to have a bidirectional conection.", LOGGER_DEBUG);
} elseif ($following AND !$sharing) {
logger("Author ".$author." wants to listen to us.", LOGGER_DEBUG);
} }
$ret = self::person_by_handle($author); $ret = self::person_by_handle($author);
@ -1889,6 +1919,8 @@ class diaspora {
return; return;
} }
logger("Author ".$author." was added as contact number ".$contact_record["id"].".", LOGGER_DEBUG);
$def_gid = get_default_group($importer['uid'], $ret["network"]); $def_gid = get_default_group($importer['uid'], $ret["network"]);
if(intval($def_gid)) if(intval($def_gid))
@ -1898,6 +1930,8 @@ class diaspora {
if($importer["page-flags"] == PAGE_NORMAL) { if($importer["page-flags"] == PAGE_NORMAL) {
logger("Sending intra message for author ".$author.".", LOGGER_DEBUG);
$hash = random_string().(string)time(); // Generate a confirm_key $hash = random_string().(string)time(); // Generate a confirm_key
$ret = q("INSERT INTO `intro` (`uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime`) $ret = q("INSERT INTO `intro` (`uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime`)
@ -1914,6 +1948,8 @@ class diaspora {
// automatic friend approval // automatic friend approval
logger("Does an automatic friend approval for author ".$author.".", LOGGER_DEBUG);
update_contact_avatar($contact_record["photo"],$importer["uid"],$contact_record["id"]); update_contact_avatar($contact_record["photo"],$importer["uid"],$contact_record["id"]);
// technically they are sharing with us (CONTACT_IS_SHARING), // technically they are sharing with us (CONTACT_IS_SHARING),
@ -1942,8 +1978,13 @@ class diaspora {
); );
$u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"])); $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"]));
if($u) if($u) {
logger("Sending share message (Relation: ".$new_relation.") to author ".$author." - Contact: ".$contact_record["id"]." - User: ".$importer["uid"], LOGGER_DEBUG);
$ret = self::send_share($u[0], $contact_record); $ret = self::send_share($u[0], $contact_record);
// Send the profile data, maybe it weren't transmitted before
self::send_profile($importer["uid"], array($contact_record));
}
} }
return true; return true;
@ -2117,12 +2158,6 @@ class diaspora {
if (!$r) if (!$r)
return false; return false;
// Only delete it if the author really fits
if (!link_compare($r[0]["author-link"], $person["url"])) {
logger("Item author ".$r[0]["author-link"]." doesn't fit to expected contact ".$person["url"], LOGGER_DEBUG);
return false;
}
// Check if the sender is the thread owner // Check if the sender is the thread owner
$p = q("SELECT `id`, `author-link`, `origin` FROM `item` WHERE `id` = %d", $p = q("SELECT `id`, `author-link`, `origin` FROM `item` WHERE `id` = %d",
intval($r[0]["parent"])); intval($r[0]["parent"]));
@ -2629,6 +2664,10 @@ class diaspora {
logger('message: '.$msg, LOGGER_DATA); logger('message: '.$msg, LOGGER_DATA);
logger('send guid '.$guid, LOGGER_DEBUG); logger('send guid '.$guid, LOGGER_DEBUG);
// Fallback if the private key wasn't transmitted in the expected field
if ($owner['uprvkey'] == "")
$owner['uprvkey'] = $owner['prvkey'];
$slap = self::build_message($msg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch); $slap = self::build_message($msg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch);
if ($spool) { if ($spool) {
@ -2655,6 +2694,8 @@ class diaspora {
$message = array("sender_handle" => self::my_handle($owner), $message = array("sender_handle" => self::my_handle($owner),
"recipient_handle" => $contact["addr"]); "recipient_handle" => $contact["addr"]);
logger("Send share ".print_r($message, true), LOGGER_DEBUG);
return self::build_and_transmit($owner, $contact, "request", $message); return self::build_and_transmit($owner, $contact, "request", $message);
} }
@ -2672,6 +2713,8 @@ class diaspora {
"diaspora_handle" => self::my_handle($owner), "diaspora_handle" => self::my_handle($owner),
"type" => "Person"); "type" => "Person");
logger("Send unshare ".print_r($message, true), LOGGER_DEBUG);
return self::build_and_transmit($owner, $contact, "retraction", $message); return self::build_and_transmit($owner, $contact, "retraction", $message);
} }
@ -3158,17 +3201,18 @@ class diaspora {
* *
* @param int $uid The user id * @param int $uid The user id
*/ */
public static function send_profile($uid) { public static function send_profile($uid, $recips = false) {
if (!$uid) if (!$uid)
return; return;
$recips = q("SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s' if (!$recips)
AND `uid` = %d AND `rel` != %d", $recips = q("SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s'
dbesc(NETWORK_DIASPORA), AND `uid` = %d AND `rel` != %d",
intval($uid), dbesc(NETWORK_DIASPORA),
intval(CONTACT_IS_SHARING) intval($uid),
); intval(CONTACT_IS_SHARING)
);
if (!$recips) if (!$recips)
return; return;
@ -3232,8 +3276,10 @@ class diaspora {
"searchable" => $searchable, "searchable" => $searchable,
"tag_string" => $tags); "tag_string" => $tags);
foreach($recips as $recip) foreach($recips as $recip) {
logger("Send updated profile data for user ".$uid." to contact ".$recip["id"], LOGGER_DEBUG);
self::build_and_transmit($profile, $recip, "profile", $message, false, "", true); self::build_and_transmit($profile, $recip, "profile", $message, false, "", true);
}
} }
/** /**

View File

@ -134,7 +134,7 @@ function notifier_run(&$argv, &$argc){
} elseif($cmd === 'removeme') { } elseif($cmd === 'removeme') {
$r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`, $r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`,
`user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, `user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`,
`user`.`page-flags`, `user`.`prvnets` `user`.`page-flags`, `user`.`prvnets`, `user`.`guid`
FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid` FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid`
WHERE `contact`.`uid` = %d AND `contact`.`self` LIMIT 1", WHERE `contact`.`uid` = %d AND `contact`.`self` LIMIT 1",
intval($item_id)); intval($item_id));

View File

@ -1,6 +1,6 @@
<?php <?php
define('UPDATE_VERSION' , 1198); define('UPDATE_VERSION' , 1199);
/** /**
* *

View File

@ -5,8 +5,11 @@ Adam Jurkiewicz
Alex Alex
Alexander Kampmann Alexander Kampmann
AlfredSK AlfredSK
Aliaksei Sakalou
Andi Stadler Andi Stadler
Andreas H. Andreas H.
Andrej Stieben
André Alves
André Lohan André Lohan
Anthronaut Anthronaut
Arian - Cazare Muncitori Arian - Cazare Muncitori
@ -14,6 +17,7 @@ aweiher
axelt axelt
balderino balderino
Beanow Beanow
Ben Roberts
bufalo1973 bufalo1973
Calango Jr Calango Jr
Carlos Solís Carlos Solís
@ -53,6 +57,7 @@ foss
Francesco Apruzzese Francesco Apruzzese
Frank Dieckmann Frank Dieckmann
Frederico Gonçalves Guimarães Frederico Gonçalves Guimarães
Gerhard Seeber
gerhard6380 gerhard6380
Gert Cauwenberg Gert Cauwenberg
greeneyedred greeneyedred
@ -106,7 +111,9 @@ Nicola Spanti
Olaf Conradi Olaf Conradi
Oliver Oliver
Olivier Olivier
Olivier Mehani
Olivier Migeot Olivier Migeot
Paolo Wave
Pavel Morozov Pavel Morozov
Perig Gouanvic Perig Gouanvic
peturisfeld peturisfeld
@ -121,7 +128,9 @@ rcmaniac
rebeka-catalina rebeka-catalina
repat repat
Ricardo Pereira Ricardo Pereira
Roland Haeder
Rui Andrada Rui Andrada
Sakałoŭ Alaksiej
Sam Sam
Sandro Santilli Sandro Santilli
Sebastian Egbers Sebastian Egbers
@ -152,8 +161,7 @@ Tony Baldwin
TORminator TORminator
tschlotfeldt tschlotfeldt
Tubuntu Tubuntu
tupambae Tupambae.org
tuscanhobbit
U-SOUND\mike U-SOUND\mike
ufic ufic
Vasudev Kamath Vasudev Kamath

File diff suppressed because it is too large Load Diff