aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario <mario@mariovavti.com>2021-10-14 18:15:38 +0000
committerMario <mario@mariovavti.com>2021-10-14 18:15:38 +0000
commit532b479f96eea701080d5533e5f28acab9af76ba (patch)
treeee3f05eb968888c3ceaa4cacc4b73753875b41a7
parent422dfca6d7231ad77b3bb63425ce6bb9534dd01e (diff)
downloadvolse-hubzilla-532b479f96eea701080d5533e5f28acab9af76ba.tar.gz
volse-hubzilla-532b479f96eea701080d5533e5f28acab9af76ba.tar.bz2
volse-hubzilla-532b479f96eea701080d5533e5f28acab9af76ba.zip
provide local copies of the w3.org jsonld documents - addresses issue #1637
-rw-r--r--include/network.php17
-rw-r--r--library/jsonld/jsonld.php2
-rw-r--r--library/w3org/README.md10
-rw-r--r--library/w3org/activitystreams.jsonld379
-rw-r--r--library/w3org/identity-v1.jsonld88
-rw-r--r--library/w3org/security-v1.jsonld50
6 files changed, 544 insertions, 2 deletions
diff --git a/include/network.php b/include/network.php
index 194b50885..1b8f0e663 100644
--- a/include/network.php
+++ b/include/network.php
@@ -2014,6 +2014,21 @@ function getBestSupportedMimeType($mimeTypes = null, $acceptedTypes = false) {
*/
function jsonld_document_loader($url) {
+ switch ($url) {
+ case 'https://www.w3.org/ns/activitystreams':
+ $url = z_root() . '/library/w3org/activitystreams.jsonld';
+ break;
+ case 'https://w3id.org/identity/v1':
+ $url = z_root() . '/library/w3org/identity-v1.jsonld';
+ break;
+ case 'https://w3id.org/security/v1':
+ $url = z_root() . '/library/w3org/security-v1.jsonld';
+ break;
+ default:
+ logger('URL: ' . $url, LOGGER_DEBUG);
+ break;
+ }
+
require_once('library/jsonld/jsonld.php');
$recursion = 0;
@@ -2026,12 +2041,12 @@ function jsonld_document_loader($url) {
}
}
}
+
if($recursion > 5) {
logger('jsonld bomb detected at: ' . $url);
killme();
}
-
$cachepath = 'store/[data]/ldcache';
if(! is_dir($cachepath))
os_mkdir($cachepath, STORAGE_DEFAULT_PERMISSIONS, true);
diff --git a/library/jsonld/jsonld.php b/library/jsonld/jsonld.php
index 8cd3e7ceb..bc3ca7a31 100644
--- a/library/jsonld/jsonld.php
+++ b/library/jsonld/jsonld.php
@@ -449,7 +449,7 @@ function jsonld_default_secure_document_loader($url) {
$result = @file_get_contents($url, false, $context);
if($result === false) {
throw new JsonLdException(
- 'Could not retrieve a JSON-LD document from the URL: ' + $url,
+ 'Could not retrieve a JSON-LD document from the URL: ' . $url,
'jsonld.LoadDocumentError', 'loading document failed');
}
$link_header = array();
diff --git a/library/w3org/README.md b/library/w3org/README.md
new file mode 100644
index 000000000..250cabd6c
--- /dev/null
+++ b/library/w3org/README.md
@@ -0,0 +1,10 @@
+This directory contains local copies of the w3.org jsonld documents
+
+To update the activitystreams document run:
+curl -L -H 'Accept: application/ld+json' https://www.w3.org/ns/activitystreams > activitystreams.jsonld
+
+To update the identity document run:
+curl -L -H 'Accept: application/ld+json' https://w3id.org/identity/v1 > identity-v1.jsonld
+
+To update the security document run:
+curl -L -H 'Accept: application/ld+json' https://w3id.org/security/v1 > security-v1.jsonld
diff --git a/library/w3org/activitystreams.jsonld b/library/w3org/activitystreams.jsonld
new file mode 100644
index 000000000..037026ca4
--- /dev/null
+++ b/library/w3org/activitystreams.jsonld
@@ -0,0 +1,379 @@
+{
+ "@context": {
+ "@vocab": "_:",
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "as": "https://www.w3.org/ns/activitystreams#",
+ "ldp": "http://www.w3.org/ns/ldp#",
+ "vcard": "http://www.w3.org/2006/vcard/ns#",
+ "id": "@id",
+ "type": "@type",
+ "Accept": "as:Accept",
+ "Activity": "as:Activity",
+ "IntransitiveActivity": "as:IntransitiveActivity",
+ "Add": "as:Add",
+ "Announce": "as:Announce",
+ "Application": "as:Application",
+ "Arrive": "as:Arrive",
+ "Article": "as:Article",
+ "Audio": "as:Audio",
+ "Block": "as:Block",
+ "Collection": "as:Collection",
+ "CollectionPage": "as:CollectionPage",
+ "Relationship": "as:Relationship",
+ "Create": "as:Create",
+ "Delete": "as:Delete",
+ "Dislike": "as:Dislike",
+ "Document": "as:Document",
+ "Event": "as:Event",
+ "Follow": "as:Follow",
+ "Flag": "as:Flag",
+ "Group": "as:Group",
+ "Ignore": "as:Ignore",
+ "Image": "as:Image",
+ "Invite": "as:Invite",
+ "Join": "as:Join",
+ "Leave": "as:Leave",
+ "Like": "as:Like",
+ "Link": "as:Link",
+ "Mention": "as:Mention",
+ "Note": "as:Note",
+ "Object": "as:Object",
+ "Offer": "as:Offer",
+ "OrderedCollection": "as:OrderedCollection",
+ "OrderedCollectionPage": "as:OrderedCollectionPage",
+ "Organization": "as:Organization",
+ "Page": "as:Page",
+ "Person": "as:Person",
+ "Place": "as:Place",
+ "Profile": "as:Profile",
+ "Question": "as:Question",
+ "Reject": "as:Reject",
+ "Remove": "as:Remove",
+ "Service": "as:Service",
+ "TentativeAccept": "as:TentativeAccept",
+ "TentativeReject": "as:TentativeReject",
+ "Tombstone": "as:Tombstone",
+ "Undo": "as:Undo",
+ "Update": "as:Update",
+ "Video": "as:Video",
+ "View": "as:View",
+ "Listen": "as:Listen",
+ "Read": "as:Read",
+ "Move": "as:Move",
+ "Travel": "as:Travel",
+ "IsFollowing": "as:IsFollowing",
+ "IsFollowedBy": "as:IsFollowedBy",
+ "IsContact": "as:IsContact",
+ "IsMember": "as:IsMember",
+ "subject": {
+ "@id": "as:subject",
+ "@type": "@id"
+ },
+ "relationship": {
+ "@id": "as:relationship",
+ "@type": "@id"
+ },
+ "actor": {
+ "@id": "as:actor",
+ "@type": "@id"
+ },
+ "attributedTo": {
+ "@id": "as:attributedTo",
+ "@type": "@id"
+ },
+ "attachment": {
+ "@id": "as:attachment",
+ "@type": "@id"
+ },
+ "bcc": {
+ "@id": "as:bcc",
+ "@type": "@id"
+ },
+ "bto": {
+ "@id": "as:bto",
+ "@type": "@id"
+ },
+ "cc": {
+ "@id": "as:cc",
+ "@type": "@id"
+ },
+ "context": {
+ "@id": "as:context",
+ "@type": "@id"
+ },
+ "current": {
+ "@id": "as:current",
+ "@type": "@id"
+ },
+ "first": {
+ "@id": "as:first",
+ "@type": "@id"
+ },
+ "generator": {
+ "@id": "as:generator",
+ "@type": "@id"
+ },
+ "icon": {
+ "@id": "as:icon",
+ "@type": "@id"
+ },
+ "image": {
+ "@id": "as:image",
+ "@type": "@id"
+ },
+ "inReplyTo": {
+ "@id": "as:inReplyTo",
+ "@type": "@id"
+ },
+ "items": {
+ "@id": "as:items",
+ "@type": "@id"
+ },
+ "instrument": {
+ "@id": "as:instrument",
+ "@type": "@id"
+ },
+ "orderedItems": {
+ "@id": "as:items",
+ "@type": "@id",
+ "@container": "@list"
+ },
+ "last": {
+ "@id": "as:last",
+ "@type": "@id"
+ },
+ "location": {
+ "@id": "as:location",
+ "@type": "@id"
+ },
+ "next": {
+ "@id": "as:next",
+ "@type": "@id"
+ },
+ "object": {
+ "@id": "as:object",
+ "@type": "@id"
+ },
+ "oneOf": {
+ "@id": "as:oneOf",
+ "@type": "@id"
+ },
+ "anyOf": {
+ "@id": "as:anyOf",
+ "@type": "@id"
+ },
+ "closed": {
+ "@id": "as:closed",
+ "@type": "xsd:dateTime"
+ },
+ "origin": {
+ "@id": "as:origin",
+ "@type": "@id"
+ },
+ "accuracy": {
+ "@id": "as:accuracy",
+ "@type": "xsd:float"
+ },
+ "prev": {
+ "@id": "as:prev",
+ "@type": "@id"
+ },
+ "preview": {
+ "@id": "as:preview",
+ "@type": "@id"
+ },
+ "replies": {
+ "@id": "as:replies",
+ "@type": "@id"
+ },
+ "result": {
+ "@id": "as:result",
+ "@type": "@id"
+ },
+ "audience": {
+ "@id": "as:audience",
+ "@type": "@id"
+ },
+ "partOf": {
+ "@id": "as:partOf",
+ "@type": "@id"
+ },
+ "tag": {
+ "@id": "as:tag",
+ "@type": "@id"
+ },
+ "target": {
+ "@id": "as:target",
+ "@type": "@id"
+ },
+ "to": {
+ "@id": "as:to",
+ "@type": "@id"
+ },
+ "url": {
+ "@id": "as:url",
+ "@type": "@id"
+ },
+ "altitude": {
+ "@id": "as:altitude",
+ "@type": "xsd:float"
+ },
+ "content": "as:content",
+ "contentMap": {
+ "@id": "as:content",
+ "@container": "@language"
+ },
+ "name": "as:name",
+ "nameMap": {
+ "@id": "as:name",
+ "@container": "@language"
+ },
+ "duration": {
+ "@id": "as:duration",
+ "@type": "xsd:duration"
+ },
+ "endTime": {
+ "@id": "as:endTime",
+ "@type": "xsd:dateTime"
+ },
+ "height": {
+ "@id": "as:height",
+ "@type": "xsd:nonNegativeInteger"
+ },
+ "href": {
+ "@id": "as:href",
+ "@type": "@id"
+ },
+ "hreflang": "as:hreflang",
+ "latitude": {
+ "@id": "as:latitude",
+ "@type": "xsd:float"
+ },
+ "longitude": {
+ "@id": "as:longitude",
+ "@type": "xsd:float"
+ },
+ "mediaType": "as:mediaType",
+ "published": {
+ "@id": "as:published",
+ "@type": "xsd:dateTime"
+ },
+ "radius": {
+ "@id": "as:radius",
+ "@type": "xsd:float"
+ },
+ "rel": "as:rel",
+ "startIndex": {
+ "@id": "as:startIndex",
+ "@type": "xsd:nonNegativeInteger"
+ },
+ "startTime": {
+ "@id": "as:startTime",
+ "@type": "xsd:dateTime"
+ },
+ "summary": "as:summary",
+ "summaryMap": {
+ "@id": "as:summary",
+ "@container": "@language"
+ },
+ "totalItems": {
+ "@id": "as:totalItems",
+ "@type": "xsd:nonNegativeInteger"
+ },
+ "units": "as:units",
+ "updated": {
+ "@id": "as:updated",
+ "@type": "xsd:dateTime"
+ },
+ "width": {
+ "@id": "as:width",
+ "@type": "xsd:nonNegativeInteger"
+ },
+ "describes": {
+ "@id": "as:describes",
+ "@type": "@id"
+ },
+ "formerType": {
+ "@id": "as:formerType",
+ "@type": "@id"
+ },
+ "deleted": {
+ "@id": "as:deleted",
+ "@type": "xsd:dateTime"
+ },
+ "inbox": {
+ "@id": "ldp:inbox",
+ "@type": "@id"
+ },
+ "outbox": {
+ "@id": "as:outbox",
+ "@type": "@id"
+ },
+ "following": {
+ "@id": "as:following",
+ "@type": "@id"
+ },
+ "followers": {
+ "@id": "as:followers",
+ "@type": "@id"
+ },
+ "streams": {
+ "@id": "as:streams",
+ "@type": "@id"
+ },
+ "preferredUsername": "as:preferredUsername",
+ "endpoints": {
+ "@id": "as:endpoints",
+ "@type": "@id"
+ },
+ "uploadMedia": {
+ "@id": "as:uploadMedia",
+ "@type": "@id"
+ },
+ "proxyUrl": {
+ "@id": "as:proxyUrl",
+ "@type": "@id"
+ },
+ "liked": {
+ "@id": "as:liked",
+ "@type": "@id"
+ },
+ "oauthAuthorizationEndpoint": {
+ "@id": "as:oauthAuthorizationEndpoint",
+ "@type": "@id"
+ },
+ "oauthTokenEndpoint": {
+ "@id": "as:oauthTokenEndpoint",
+ "@type": "@id"
+ },
+ "provideClientKey": {
+ "@id": "as:provideClientKey",
+ "@type": "@id"
+ },
+ "signClientKey": {
+ "@id": "as:signClientKey",
+ "@type": "@id"
+ },
+ "sharedInbox": {
+ "@id": "as:sharedInbox",
+ "@type": "@id"
+ },
+ "Public": {
+ "@id": "as:Public",
+ "@type": "@id"
+ },
+ "source": "as:source",
+ "likes": {
+ "@id": "as:likes",
+ "@type": "@id"
+ },
+ "shares": {
+ "@id": "as:shares",
+ "@type": "@id"
+ },
+ "alsoKnownAs": {
+ "@id": "as:alsoKnownAs",
+ "@type": "@id"
+ }
+ }
+}
diff --git a/library/w3org/identity-v1.jsonld b/library/w3org/identity-v1.jsonld
new file mode 100644
index 000000000..06e89083d
--- /dev/null
+++ b/library/w3org/identity-v1.jsonld
@@ -0,0 +1,88 @@
+{
+ "@context": {
+ "id": "@id",
+ "type": "@type",
+
+ "cred": "https://w3id.org/credentials#",
+ "dc": "http://purl.org/dc/terms/",
+ "identity": "https://w3id.org/identity#",
+ "perm": "https://w3id.org/permissions#",
+ "ps": "https://w3id.org/payswarm#",
+ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
+ "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
+ "sec": "https://w3id.org/security#",
+ "schema": "http://schema.org/",
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+
+ "Group": "https://www.w3.org/ns/activitystreams#Group",
+
+ "claim": {"@id": "cred:claim", "@type": "@id"},
+ "credential": {"@id": "cred:credential", "@type": "@id"},
+ "issued": {"@id": "cred:issued", "@type": "xsd:dateTime"},
+ "issuer": {"@id": "cred:issuer", "@type": "@id"},
+ "recipient": {"@id": "cred:recipient", "@type": "@id"},
+ "Credential": "cred:Credential",
+ "CryptographicKeyCredential": "cred:CryptographicKeyCredential",
+
+ "about": {"@id": "schema:about", "@type": "@id"},
+ "address": {"@id": "schema:address", "@type": "@id"},
+ "addressCountry": "schema:addressCountry",
+ "addressLocality": "schema:addressLocality",
+ "addressRegion": "schema:addressRegion",
+ "comment": "rdfs:comment",
+ "created": {"@id": "dc:created", "@type": "xsd:dateTime"},
+ "creator": {"@id": "dc:creator", "@type": "@id"},
+ "description": "schema:description",
+ "email": "schema:email",
+ "familyName": "schema:familyName",
+ "givenName": "schema:givenName",
+ "image": {"@id": "schema:image", "@type": "@id"},
+ "label": "rdfs:label",
+ "name": "schema:name",
+ "postalCode": "schema:postalCode",
+ "streetAddress": "schema:streetAddress",
+ "title": "dc:title",
+ "url": {"@id": "schema:url", "@type": "@id"},
+ "Person": "schema:Person",
+ "PostalAddress": "schema:PostalAddress",
+ "Organization": "schema:Organization",
+
+ "identityService": {"@id": "identity:identityService", "@type": "@id"},
+ "idp": {"@id": "identity:idp", "@type": "@id"},
+ "Identity": "identity:Identity",
+
+ "paymentProcessor": "ps:processor",
+ "preferences": {"@id": "ps:preferences", "@type": "@vocab"},
+
+ "cipherAlgorithm": "sec:cipherAlgorithm",
+ "cipherData": "sec:cipherData",
+ "cipherKey": "sec:cipherKey",
+ "digestAlgorithm": "sec:digestAlgorithm",
+ "digestValue": "sec:digestValue",
+ "domain": "sec:domain",
+ "expires": {"@id": "sec:expiration", "@type": "xsd:dateTime"},
+ "initializationVector": "sec:initializationVector",
+ "member": {"@id": "schema:member", "@type": "@id"},
+ "memberOf": {"@id": "schema:memberOf", "@type": "@id"},
+ "nonce": "sec:nonce",
+ "normalizationAlgorithm": "sec:normalizationAlgorithm",
+ "owner": {"@id": "sec:owner", "@type": "@id"},
+ "password": "sec:password",
+ "privateKey": {"@id": "sec:privateKey", "@type": "@id"},
+ "privateKeyPem": "sec:privateKeyPem",
+ "publicKey": {"@id": "sec:publicKey", "@type": "@id"},
+ "publicKeyPem": "sec:publicKeyPem",
+ "publicKeyService": {"@id": "sec:publicKeyService", "@type": "@id"},
+ "revoked": {"@id": "sec:revoked", "@type": "xsd:dateTime"},
+ "signature": "sec:signature",
+ "signatureAlgorithm": "sec:signatureAlgorithm",
+ "signatureValue": "sec:signatureValue",
+ "CryptographicKey": "sec:Key",
+ "EncryptedMessage": "sec:EncryptedMessage",
+ "GraphSignature2012": "sec:GraphSignature2012",
+ "LinkedDataSignature2015": "sec:LinkedDataSignature2015",
+
+ "accessControl": {"@id": "perm:accessControl", "@type": "@id"},
+ "writePermission": {"@id": "perm:writePermission", "@type": "@id"}
+ }
+}
diff --git a/library/w3org/security-v1.jsonld b/library/w3org/security-v1.jsonld
new file mode 100644
index 000000000..752950526
--- /dev/null
+++ b/library/w3org/security-v1.jsonld
@@ -0,0 +1,50 @@
+{
+ "@context": {
+ "id": "@id",
+ "type": "@type",
+
+ "dc": "http://purl.org/dc/terms/",
+ "sec": "https://w3id.org/security#",
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+
+ "EcdsaKoblitzSignature2016": "sec:EcdsaKoblitzSignature2016",
+ "Ed25519Signature2018": "sec:Ed25519Signature2018",
+ "EncryptedMessage": "sec:EncryptedMessage",
+ "GraphSignature2012": "sec:GraphSignature2012",
+ "LinkedDataSignature2015": "sec:LinkedDataSignature2015",
+ "LinkedDataSignature2016": "sec:LinkedDataSignature2016",
+ "CryptographicKey": "sec:Key",
+
+ "authenticationTag": "sec:authenticationTag",
+ "canonicalizationAlgorithm": "sec:canonicalizationAlgorithm",
+ "cipherAlgorithm": "sec:cipherAlgorithm",
+ "cipherData": "sec:cipherData",
+ "cipherKey": "sec:cipherKey",
+ "created": {"@id": "dc:created", "@type": "xsd:dateTime"},
+ "creator": {"@id": "dc:creator", "@type": "@id"},
+ "digestAlgorithm": "sec:digestAlgorithm",
+ "digestValue": "sec:digestValue",
+ "domain": "sec:domain",
+ "encryptionKey": "sec:encryptionKey",
+ "expiration": {"@id": "sec:expiration", "@type": "xsd:dateTime"},
+ "expires": {"@id": "sec:expiration", "@type": "xsd:dateTime"},
+ "initializationVector": "sec:initializationVector",
+ "iterationCount": "sec:iterationCount",
+ "nonce": "sec:nonce",
+ "normalizationAlgorithm": "sec:normalizationAlgorithm",
+ "owner": {"@id": "sec:owner", "@type": "@id"},
+ "password": "sec:password",
+ "privateKey": {"@id": "sec:privateKey", "@type": "@id"},
+ "privateKeyPem": "sec:privateKeyPem",
+ "publicKey": {"@id": "sec:publicKey", "@type": "@id"},
+ "publicKeyBase58": "sec:publicKeyBase58",
+ "publicKeyPem": "sec:publicKeyPem",
+ "publicKeyWif": "sec:publicKeyWif",
+ "publicKeyService": {"@id": "sec:publicKeyService", "@type": "@id"},
+ "revoked": {"@id": "sec:revoked", "@type": "xsd:dateTime"},
+ "salt": "sec:salt",
+ "signature": "sec:signature",
+ "signatureAlgorithm": "sec:signingAlgorithm",
+ "signatureValue": "sec:signatureValue"
+ }
+}