X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FDFRN.php;h=1dcc1197a5d3ae70cc614700ac2fbb1fe89a0212;hb=1a1300f1bf6d5d81e63405421ba0995a04a9f38a;hp=3832e38e16990b6b34ad74d9cd2aa32350291836;hpb=96d10c25e359b74d4b0bcab08c234625c0ecf031;p=friendica.git diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 3832e38e16..1dcc1197a5 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -216,7 +216,6 @@ class DFRN } $contact = $r[0]; - include_once 'include/security.php'; $set = PermissionSet::get($owner_id, $contact['id']); @@ -647,7 +646,7 @@ class DFRN XML::addElement($doc, $author, "dfrn:handle", $owner["addr"], $attributes); $attributes = ["rel" => "photo", "type" => "image/jpeg", - "media:width" => 175, "media:height" => 175, "href" => $owner['photo']]; + "media:width" => 300, "media:height" => 300, "href" => $owner['photo']]; if (!$public || !$hidewall) { $attributes["dfrn:updated"] = $picdate; @@ -1164,16 +1163,16 @@ class DFRN * @return int Deliver status. Negative values mean an error. * @todo Add array type-hint for $owner, $contact */ - public static function deliver($owner, $contact, $atom, $dissolve = false) + public static function deliver($owner, $contact, $atom, $dissolve = false, $legacy_transport = false) { $a = get_app(); // At first try the Diaspora transport layer - if (!$dissolve) { - $ret = self::transmit($owner, $contact, $atom); - if ($ret >= 200) { - logger('Delivery via Diaspora transport layer was successful with status ' . $ret); - return $ret; + if (!$dissolve && !$legacy_transport) { + $curlResult = self::transmit($owner, $contact, $atom); + if ($curlResult >= 200) { + logger('Delivery via Diaspora transport layer was successful with status ' . $curlResult); + return $curlResult; } } @@ -1211,16 +1210,16 @@ class DFRN logger('dfrn_deliver: ' . $url); - $ret = Network::curl($url); + $curlResult = Network::curl($url); - if (!empty($ret["errno"]) && ($ret['errno'] == CURLE_OPERATION_TIMEDOUT)) { + if ($curlResult->isTimeout()) { Contact::markForArchival($contact); return -2; // timed out } - $xml = $ret['body']; + $xml = $curlResult->getBody(); - $curl_stat = $a->get_curl_code(); + $curl_stat = $curlResult->getReturnCode(); if (empty($curl_stat)) { Contact::markForArchival($contact); return -3; // timed out @@ -1280,7 +1279,10 @@ class DFRN } } - if (empty($contact['prvkey']) && !empty($contact['pubkey'])) { + if (($contact['duplex'] && strlen($contact['pubkey'])) + || ($owner['page-flags'] == Contact::PAGE_COMMUNITY && strlen($contact['pubkey'])) + || ($contact['rel'] == Contact::SHARING && strlen($contact['pubkey'])) + ) { openssl_public_decrypt($sent_dfrn_id, $final_dfrn_id, $contact['pubkey']); openssl_public_decrypt($challenge, $postvars['challenge'], $contact['pubkey']); } else { @@ -1365,17 +1367,19 @@ class DFRN logger('dfrn_deliver: ' . "SENDING: " . print_r($postvars, true), LOGGER_DATA); - $xml = Network::post($contact['notify'], $postvars); + $postResult = Network::post($contact['notify'], $postvars); + + $xml = $postResult->getBody(); logger('dfrn_deliver: ' . "RECEIVED: " . $xml, LOGGER_DATA); - $curl_stat = $a->get_curl_code(); + $curl_stat = $postResult->getReturnCode(); if (empty($curl_stat) || empty($xml)) { Contact::markForArchival($contact); return -9; // timed out } - if (($curl_stat == 503) && stristr($a->get_curl_headers(), 'retry-after')) { + if (($curl_stat == 503) && stristr($postResult->getHeader(), 'retry-after')) { Contact::markForArchival($contact); return -10; } @@ -1464,16 +1468,17 @@ class DFRN $content_type = ($public_batch ? "application/magic-envelope+xml" : "application/json"); - $xml = Network::post($dest_url, $envelope, ["Content-Type: ".$content_type]); + $postResult = Network::post($dest_url, $envelope, ["Content-Type: ".$content_type]); + $xml = $postResult->getBody(); - $curl_stat = $a->get_curl_code(); + $curl_stat = $postResult->getReturnCode(); if (empty($curl_stat) || empty($xml)) { logger('Empty answer from ' . $contact['id'] . ' - ' . $dest_url); Contact::markForArchival($contact); return -9; // timed out } - if (($curl_stat == 503) && (stristr($a->get_curl_headers(), 'retry-after'))) { + if (($curl_stat == 503) && (stristr($postResult->getHeader(), 'retry-after'))) { Contact::markForArchival($contact); return -10; } @@ -2346,6 +2351,12 @@ class DFRN if (Item::exists($condition)) { return false; } + + // The owner of an activity must be the author + $item["owner-name"] = $item["author-name"]; + $item["owner-link"] = $item["author-link"]; + $item["owner-avatar"] = $item["author-avatar"]; + $item["owner-id"] = $item["author-id"]; } else { $is_like = false; } @@ -2487,7 +2498,7 @@ class DFRN /// @todo Do we really need this check for HTML elements? (It was copied from the old function) if ((strpos($item['body'], '<') !== false) && (strpos($item['body'], '>') !== false)) { - $base_url = get_app()->get_baseurl(); + $base_url = get_app()->getBaseURL(); $item['body'] = reltoabs($item['body'], $base_url); $item['body'] = html2bb_video($item['body']); @@ -3026,7 +3037,7 @@ class DFRN logger('auto_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG); $dest = (($url) ? '&destination_url=' . $url : ''); - goaway($r[0]['poll'] . '?dfrn_id=' . $dfrn_id + System::externalRedirect($r[0]['poll'] . '?dfrn_id=' . $dfrn_id . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest); }