Store the diaspora signature differently
This commit is contained in:
parent
c4062ddb3b
commit
13bd43f3f6
2 changed files with 22 additions and 31 deletions
|
@ -1454,7 +1454,7 @@ class Item
|
||||||
if ($item['verb'] == Activity::FOLLOW) {
|
if ($item['verb'] == Activity::FOLLOW) {
|
||||||
if (!$item['origin'] && ($item['author-id'] == Contact::getPublicIdByUserId($item['uid']))) {
|
if (!$item['origin'] && ($item['author-id'] == Contact::getPublicIdByUserId($item['uid']))) {
|
||||||
// Our own follow request can be relayed to us. We don't store it to avoid notification chaos.
|
// Our own follow request can be relayed to us. We don't store it to avoid notification chaos.
|
||||||
Logger::log("Follow: Don't store not origin follow request from us for " . $item['parent-uri'], Logger::DEBUG);
|
Logger::info("Follow: Don't store not origin follow request", ['parent-uri' => $item['parent-uri']]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1462,7 +1462,7 @@ class Item
|
||||||
'parent-uri' => $item['parent-uri'], 'author-id' => $item['author-id']];
|
'parent-uri' => $item['parent-uri'], 'author-id' => $item['author-id']];
|
||||||
if (self::exists($condition)) {
|
if (self::exists($condition)) {
|
||||||
// It happens that we receive multiple follow requests by the same author - we only store one.
|
// It happens that we receive multiple follow requests by the same author - we only store one.
|
||||||
Logger::log('Follow: Found existing follow request from author ' . $item['author-id'] . ' for ' . $item['parent-uri'], Logger::DEBUG);
|
Logger::info('Follow: Found existing follow request from author', ['author-id' => $item['author-id'], 'parent-uri' => $item['parent-uri']]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1706,20 +1706,11 @@ class Item
|
||||||
|
|
||||||
$item['author-id'] = ($item['author-id'] ?? 0) ?: Contact::getIdForURL($item['author-link'], 0, false, $default);
|
$item['author-id'] = ($item['author-id'] ?? 0) ?: Contact::getIdForURL($item['author-link'], 0, false, $default);
|
||||||
|
|
||||||
unset($item['author-link']);
|
|
||||||
unset($item['author-name']);
|
|
||||||
unset($item['author-avatar']);
|
|
||||||
unset($item['author-network']);
|
|
||||||
|
|
||||||
$default = ['url' => $item['owner-link'], 'name' => $item['owner-name'],
|
$default = ['url' => $item['owner-link'], 'name' => $item['owner-name'],
|
||||||
'photo' => $item['owner-avatar'], 'network' => $item['network']];
|
'photo' => $item['owner-avatar'], 'network' => $item['network']];
|
||||||
|
|
||||||
$item['owner-id'] = ($item['owner-id'] ?? 0) ?: Contact::getIdForURL($item['owner-link'], 0, false, $default);
|
$item['owner-id'] = ($item['owner-id'] ?? 0) ?: Contact::getIdForURL($item['owner-link'], 0, false, $default);
|
||||||
|
|
||||||
unset($item['owner-link']);
|
|
||||||
unset($item['owner-name']);
|
|
||||||
unset($item['owner-avatar']);
|
|
||||||
|
|
||||||
// The contact-id should be set before "self::insert" was called - but there seems to be issues sometimes
|
// The contact-id should be set before "self::insert" was called - but there seems to be issues sometimes
|
||||||
$item["contact-id"] = self::contactId($item);
|
$item["contact-id"] = self::contactId($item);
|
||||||
|
|
||||||
|
@ -1739,7 +1730,18 @@ class Item
|
||||||
// We don't store the causer, we only have it here for the checks in the function above
|
// We don't store the causer, we only have it here for the checks in the function above
|
||||||
unset($item['causer-id']);
|
unset($item['causer-id']);
|
||||||
unset($item['causer-link']);
|
unset($item['causer-link']);
|
||||||
|
|
||||||
|
// We don't store these fields anymore in the item table
|
||||||
|
unset($item['author-link']);
|
||||||
|
unset($item['author-name']);
|
||||||
|
unset($item['author-avatar']);
|
||||||
|
unset($item['author-network']);
|
||||||
|
|
||||||
|
unset($item['owner-link']);
|
||||||
|
unset($item['owner-name']);
|
||||||
|
unset($item['owner-avatar']);
|
||||||
|
|
||||||
|
|
||||||
$item['thr-parent'] = $item['parent-uri'];
|
$item['thr-parent'] = $item['parent-uri'];
|
||||||
|
|
||||||
if ($item['parent-uri'] != $item['uri']) {
|
if ($item['parent-uri'] != $item['uri']) {
|
||||||
|
@ -1813,37 +1815,22 @@ class Item
|
||||||
unset($item['api_source']);
|
unset($item['api_source']);
|
||||||
|
|
||||||
// Filling item related side tables
|
// Filling item related side tables
|
||||||
if (!empty($item['dsprsig'])) {
|
|
||||||
$dsprsig = json_decode(base64_decode($item['dsprsig']));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Friendica servers lower than 3.4.3-2 had double encoded the signature ...
|
|
||||||
* We can check for this condition when we decode and encode the stuff again.
|
|
||||||
*/
|
|
||||||
if (base64_encode(base64_decode(base64_decode($dsprsig->signature))) == base64_decode($dsprsig->signature)) {
|
|
||||||
$dsprsig->signature = base64_decode($dsprsig->signature);
|
|
||||||
Logger::log("Repaired double encoded signature from handle ".$dsprsig->signer, Logger::DEBUG);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($dsprsig->signed_text) && empty($dsprsig->signature) && empty($dsprsig->signer)) {
|
|
||||||
DBA::insert('diaspora-interaction', ['uri-id' => $item['uri-id'], 'interaction' => $dsprsig->signed_text], true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($item['dsprsig']);
|
|
||||||
|
|
||||||
|
// Diaspora signature
|
||||||
if (!empty($item['diaspora_signed_text'])) {
|
if (!empty($item['diaspora_signed_text'])) {
|
||||||
DBA::insert('diaspora-interaction', ['uri-id' => $item['uri-id'], 'interaction' => $item['diaspora_signed_text']], true);
|
DBA::insert('diaspora-interaction', ['uri-id' => $item['uri-id'], 'interaction' => $item['diaspora_signed_text']], true);
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($item['diaspora_signed_text']);
|
unset($item['diaspora_signed_text']);
|
||||||
|
|
||||||
|
// Attached file links
|
||||||
if (array_key_exists('file', $item) && !empty($item['file'])) {
|
if (array_key_exists('file', $item) && !empty($item['file'])) {
|
||||||
Category::storeTextByURIId($item['uri-id'], $item['uid'], $item['file']);
|
Category::storeTextByURIId($item['uri-id'], $item['uid'], $item['file']);
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($item['file']);
|
unset($item['file']);
|
||||||
|
|
||||||
|
// Delivery relevant data
|
||||||
$delivery_data = Post\DeliveryData::extractFields($item);
|
$delivery_data = Post\DeliveryData::extractFields($item);
|
||||||
unset($item['postopts']);
|
unset($item['postopts']);
|
||||||
unset($item['inform']);
|
unset($item['inform']);
|
||||||
|
|
|
@ -2384,7 +2384,11 @@ class DFRN
|
||||||
// We store the data from "dfrn:diaspora_signature" in a different table, this is done in "Item::insert"
|
// We store the data from "dfrn:diaspora_signature" in a different table, this is done in "Item::insert"
|
||||||
$dsprsig = XML::unescape(XML::getFirstNodeValue($xpath, "dfrn:diaspora_signature/text()", $entry));
|
$dsprsig = XML::unescape(XML::getFirstNodeValue($xpath, "dfrn:diaspora_signature/text()", $entry));
|
||||||
if ($dsprsig != "") {
|
if ($dsprsig != "") {
|
||||||
$item["dsprsig"] = $dsprsig;
|
$signature = json_decode(base64_decode($dsprsig));
|
||||||
|
// We don't store the old style signatures anymore that also contained the "signature" and "signer"
|
||||||
|
if (!empty($signature->signed_text) && empty($signature->signature) && empty($signature->signer)) {
|
||||||
|
$item["diaspora_signed_text"] = $signature->signed_text;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$item["verb"] = XML::getFirstNodeValue($xpath, "activity:verb/text()", $entry);
|
$item["verb"] = XML::getFirstNodeValue($xpath, "activity:verb/text()", $entry);
|
||||||
|
|
Loading…
Reference in a new issue