summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2019-01-04 10:37:50 -0100
committerGitHub <noreply@github.com>2019-01-04 10:37:50 -0100
commit3051f69e2886f8b6d0380c04a5733b27bf5b2834 (patch)
tree197c8f93988741616d982ea8e5aedc6f702ad1cf
parent7a2b334ea54bea54f2940bb91d2279f366cb07cd (diff)
parent3e9ca2f9404e227db58b8b67dd176003f98e9f9f (diff)
Merge pull request #300 from nextcloud/bugfix/noid/verify-once
There is no use to check twice
-rw-r--r--lib/Model/ActivityPub/Object/Note.php2
-rw-r--r--lib/Service/ActivityService.php22
-rw-r--r--lib/Service/SignatureService.php17
3 files changed, 22 insertions, 19 deletions
diff --git a/lib/Model/ActivityPub/Object/Note.php b/lib/Model/ActivityPub/Object/Note.php
index 361ed872..0efb3ac4 100644
--- a/lib/Model/ActivityPub/Object/Note.php
+++ b/lib/Model/ActivityPub/Object/Note.php
@@ -33,7 +33,6 @@ namespace OCA\Social\Model\ActivityPub\Object;
use DateTime;
use JsonSerializable;
use OCA\Social\Model\ActivityPub\ACore;
-use OCA\Social\Service\SignatureService;
class Note extends ACore implements JsonSerializable {
@@ -195,7 +194,6 @@ class Note extends ACore implements JsonSerializable {
*/
public function convertPublished() {
$dTime = new DateTime($this->getPublished());
- $dTime->format(SignatureService::DATE_FORMAT);
$this->setPublishedTime($dTime->getTimestamp());
}
diff --git a/lib/Service/ActivityService.php b/lib/Service/ActivityService.php
index 3ee7efcd..1e538cdf 100644
--- a/lib/Service/ActivityService.php
+++ b/lib/Service/ActivityService.php
@@ -61,9 +61,9 @@ class ActivityService {
use TArrayTools;
- const TIMEOUT_LIVE = 2;
- const TIMEOUT_ASYNC = 5;
- const TIMEOUT_SERVICE = 10;
+ const TIMEOUT_LIVE = 3;
+ const TIMEOUT_ASYNC = 10;
+ const TIMEOUT_SERVICE = 30;
/** @var NotesRequest */
@@ -268,29 +268,33 @@ class ActivityService {
$this->queueService->endRequest($queue, true);
} catch (ActorDoesNotExistException $e) {
$this->miscService->log(
- 'Error while managing request: ' . json_encode($request) . ' ' . json_encode($e), 1
+ 'Error while managing request: ' . json_encode($request) . ' ' . $e->getMessage(), 1
);
$this->queueService->deleteRequest($queue);
} catch (RequestContentException $e) {
$this->miscService->log(
- 'Error while managing request: ' . json_encode($request) . ' ' . json_encode($e), 1
+ 'Error while managing request: ' . json_encode($request) . ' ' . $e->getMessage(), 1
);
$this->queueService->deleteRequest($queue);
} catch (RequestResultSizeException $e) {
$this->miscService->log(
- 'Error while managing request: ' . json_encode($request) . ' ' . json_encode($e), 1
+ 'Error while managing request: ' . json_encode($request) . ' ' . $e->getMessage(), 1
);
$this->queueService->deleteRequest($queue);
} catch (RequestServerException $e) {
$this->miscService->log(
- 'Temporary error while managing request: ' . json_encode($request) . ' '
- . json_encode($e), 1
+ 'Temporary error while managing request: RequestServerException - ' . json_encode(
+ $request
+ ) . ' - '
+ . $e->getMessage(), 1
);
$this->queueService->endRequest($queue, false);
$this->failInstances[] = $host;
} catch (RequestNetworkException $e) {
$this->miscService->log(
- 'Temporary error while managing request: ' . json_encode($e), 1
+ 'Temporary error while managing request: RequestNetworkException - ' . json_encode(
+ $request
+ ) . ' - ' . $e->getMessage(), 1
);
$this->queueService->endRequest($queue, false);
$this->failInstances[] = $host;
diff --git a/lib/Service/SignatureService.php b/lib/Service/SignatureService.php
index c05254c6..6ce7ddfc 100644
--- a/lib/Service/SignatureService.php
+++ b/lib/Service/SignatureService.php
@@ -65,7 +65,9 @@ class SignatureService {
const ORIGIN_SIGNATURE = 2;
- const DATE_FORMAT = 'D, d M Y H:i:s T';
+ const DATE_HEADER = 'D, d M Y H:i:s T';
+ const DATE_OBJECT = 'Y-m-d\TH:i:s\Z';
+
const DATE_DELAY = 30;
@@ -135,7 +137,7 @@ class SignatureService {
* @throws SocialAppConfigException
*/
public function signRequest(Request $request, RequestQueue $queue) {
- $date = gmdate(self::DATE_FORMAT);
+ $date = gmdate(self::DATE_HEADER);
$path = $queue->getInstance();
$localActor = $this->actorsRequest->getFromId($queue->getAuthor());
@@ -178,7 +180,6 @@ class SignatureService {
*/
public function checkRequest(IRequest $request, int &$time = 0): string {
$dTime = new DateTime($request->getHeader('date'));
- $dTime->format(self::DATE_FORMAT);
$time = $dTime->getTimestamp();
if ($time < (time() - self::DATE_DELAY)) {
@@ -217,12 +218,12 @@ class SignatureService {
$signature = new LinkedDataSignature();
$signature->import(json_decode($object->getSource(), true));
$signature->setPublicKey($this->retrieveKey($actorId));
- if (!$signature->verify()) {
- $signature->setPublicKey($this->retrieveKey($actorId, true));
- }
if (!$signature->verify()) {
- return false;
+ $signature->setPublicKey($this->retrieveKey($actorId, true));
+ if (!$signature->verify()) {
+ return false;
+ }
}
$dTime = new DateTime($signature->getCreated());
@@ -249,7 +250,7 @@ class SignatureService {
$signature->setPrivateKey($actor->getPrivateKey());
$signature->setType('RsaSignature2017');
$signature->setCreator($actor->getId() . '#main-key');
- $signature->setCreated($object->getPublished());
+ $signature->setCreated($date = gmdate(self::DATE_OBJECT));
$signature->setObject(json_decode(json_encode($object), true));
try {