mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
feat: Split preset configurations by feature
This commit is contained in:
parent
fadbaefce2
commit
452032e312
55
config/README.md
Normal file
55
config/README.md
Normal file
@ -0,0 +1,55 @@
|
||||
This folder contains several configurations that can be used to start up the server.
|
||||
All those configurations are created in the same way:
|
||||
features are enabled or disabled by choosing a specific option for every component.
|
||||
All components are represented by the subfolders found in the folders here:
|
||||
`ldp` contains all LDP related components,
|
||||
`identity` all IDP components, etc.
|
||||
Options are then chosen by importing 1 entry from every component subfolder.
|
||||
In case none of the available options have the exact feature configuration you want,
|
||||
it is always possible to not choose any of them and create your own custom version instead.
|
||||
|
||||
# How to use
|
||||
The easiest way to create a new config is by creating a JSON-LD file
|
||||
that imports one option from every component subfolder
|
||||
(such as either `allow-everything.json` or `webacl.json` from `ldp/authorization`).
|
||||
In case none of the available options suffice, there are 2 other ways to handle this:
|
||||
|
||||
## Append to an existing config
|
||||
In case the options mostly suffice, but they just need to do a bit more,
|
||||
it might be possible to append to one of the solutions.
|
||||
|
||||
For example, in case all the existing metadata parsers can remain,
|
||||
but an additional one needs to be added,
|
||||
you could import `ldp/metadata-parser/default.json`
|
||||
and then add the following in your root config:
|
||||
```json
|
||||
{
|
||||
"@id": "urn:solid-server:default:MetadataParser",
|
||||
"ParallelHandler:_handlers": [
|
||||
{ "@type": "MyNewParser" }
|
||||
]
|
||||
}
|
||||
```
|
||||
This will add the new parser to the list of metadata parsers.
|
||||
|
||||
Note that generally it is only advised to append to ParallelHandlers or key/value maps.
|
||||
In case the order is important this can not be guaranteed over separate files.
|
||||
|
||||
## Create a new option
|
||||
If a more drastic change is required,
|
||||
the solution is to not import anything from that folder but instead write your own.
|
||||
|
||||
For example, in case you only want the slug parser but not any of the others,
|
||||
you would have to not import anything from `ldp/metadata-parser` folder,
|
||||
but instead have the following in your root config:
|
||||
```json
|
||||
{
|
||||
"@id": "urn:solid-server:default:MetadataParser",
|
||||
"@type": "ParallelHandler",
|
||||
"handlers": [
|
||||
{ "@type": "SlugParser" }
|
||||
]
|
||||
}
|
||||
```
|
||||
Don't forget that in some cases you would also have to copy some imports!
|
||||
The existing options can be used as inspiration.
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/presets/acl.json",
|
||||
"files-scs:config/presets/http.json",
|
||||
"files-scs:config/presets/identifiers/suffix-identifiers.json",
|
||||
"files-scs:config/presets/init.json",
|
||||
"files-scs:config/presets/ldp.json",
|
||||
"files-scs:config/presets/ldp/credentials-extractor.json",
|
||||
"files-scs:config/presets/ldp/metadata-handler.json",
|
||||
"files-scs:config/presets/ldp/operation-handler.json",
|
||||
"files-scs:config/presets/ldp/permissions-extractor.json",
|
||||
"files-scs:config/presets/ldp/response-writer.json",
|
||||
"files-scs:config/presets/ldp/request-parser.json",
|
||||
"files-scs:config/presets/ldp/websockets.json",
|
||||
"files-scs:config/presets/logging.json",
|
||||
"files-scs:config/presets/middleware.json",
|
||||
"files-scs:config/presets/pod-management.json",
|
||||
"files-scs:config/presets/representation-conversion.json",
|
||||
"files-scs:config/presets/static.json",
|
||||
"files-scs:config/presets/storage/backend/storage-memory.json",
|
||||
"files-scs:config/presets/storage-wrapper.json",
|
||||
"files-scs:config/presets/cli-params.json",
|
||||
"files-scs:config/presets/identity/identity-provider.json",
|
||||
"files-scs:config/presets/identity/interaction-policy.json",
|
||||
"files-scs:config/presets/identity/email-sender.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Use a memory based store as backend with no additional routing.",
|
||||
"@id": "urn:solid-server:default:RoutingResourceStore",
|
||||
"@type": "PassthroughStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:MemoryResourceStore"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/presets/acl.json",
|
||||
"files-scs:config/presets/http.json",
|
||||
"files-scs:config/presets/identifiers/suffix-identifiers.json",
|
||||
"files-scs:config/presets/init.json",
|
||||
"files-scs:config/presets/ldp.json",
|
||||
"files-scs:config/presets/ldp/credentials-extractor.json",
|
||||
"files-scs:config/presets/ldp/metadata-handler.json",
|
||||
"files-scs:config/presets/ldp/operation-handler.json",
|
||||
"files-scs:config/presets/ldp/permissions-extractor.json",
|
||||
"files-scs:config/presets/ldp/response-writer.json",
|
||||
"files-scs:config/presets/ldp/request-parser.json",
|
||||
"files-scs:config/presets/ldp/websockets.json",
|
||||
"files-scs:config/presets/logging.json",
|
||||
"files-scs:config/presets/middleware.json",
|
||||
"files-scs:config/presets/pod-dynamic.json",
|
||||
"files-scs:config/presets/representation-conversion.json",
|
||||
"files-scs:config/presets/static.json",
|
||||
"files-scs:config/presets/storage/backend/storage-memory.json",
|
||||
"files-scs:config/presets/storage-wrapper.json",
|
||||
"files-scs:config/presets/cli-params.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "This configuration sets up a server that allows for the creation of dynamic pods through pod provisioning."
|
||||
},
|
||||
{
|
||||
"comment": "Which store to use for requests that do not match any pod",
|
||||
"@id": "urn:solid-server:default:BaseUrlRouterRule",
|
||||
"BaseUrlRouterRule:_baseStore": {
|
||||
"@id": "urn:solid-server:default:MemoryResourceStore"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/presets/acl.json",
|
||||
"files-scs:config/presets/http.json",
|
||||
"files-scs:config/presets/identifiers/subdomain-identifiers.json",
|
||||
"files-scs:config/presets/init.json",
|
||||
"files-scs:config/presets/ldp.json",
|
||||
"files-scs:config/presets/ldp/credentials-extractor.json",
|
||||
"files-scs:config/presets/ldp/metadata-handler.json",
|
||||
"files-scs:config/presets/ldp/operation-handler.json",
|
||||
"files-scs:config/presets/ldp/permissions-extractor.json",
|
||||
"files-scs:config/presets/ldp/response-writer.json",
|
||||
"files-scs:config/presets/ldp/request-parser.json",
|
||||
"files-scs:config/presets/ldp/websockets.json",
|
||||
"files-scs:config/presets/logging.json",
|
||||
"files-scs:config/presets/middleware.json",
|
||||
"files-scs:config/presets/pod-management.json",
|
||||
"files-scs:config/presets/representation-conversion.json",
|
||||
"files-scs:config/presets/static.json",
|
||||
"files-scs:config/presets/storage/backend/storage-filesystem-subdomains.json",
|
||||
"files-scs:config/presets/storage-wrapper.json",
|
||||
"files-scs:config/presets/cli-params.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Use a file based store as backend with no additional routing.",
|
||||
"@id": "urn:solid-server:default:RoutingResourceStore",
|
||||
"@type": "PassthroughStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:FileResourceStore"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/presets/acl.json",
|
||||
"files-scs:config/presets/http.json",
|
||||
"files-scs:config/presets/identifiers/suffix-identifiers.json",
|
||||
"files-scs:config/presets/init.json",
|
||||
"files-scs:config/presets/ldp.json",
|
||||
"files-scs:config/presets/ldp/credentials-extractor.json",
|
||||
"files-scs:config/presets/ldp/metadata-handler.json",
|
||||
"files-scs:config/presets/ldp/operation-handler.json",
|
||||
"files-scs:config/presets/ldp/permissions-extractor.json",
|
||||
"files-scs:config/presets/ldp/response-writer.json",
|
||||
"files-scs:config/presets/ldp/request-parser.json",
|
||||
"files-scs:config/presets/ldp/websockets.json",
|
||||
"files-scs:config/presets/logging.json",
|
||||
"files-scs:config/presets/middleware.json",
|
||||
"files-scs:config/presets/pod-management.json",
|
||||
"files-scs:config/presets/representation-conversion.json",
|
||||
"files-scs:config/presets/static.json",
|
||||
"files-scs:config/presets/storage/backend/storage-filesystem.json",
|
||||
"files-scs:config/presets/storage-wrapper.json",
|
||||
"files-scs:config/presets/cli-params.json",
|
||||
"files-scs:config/presets/identity/identity-provider.json",
|
||||
"files-scs:config/presets/identity/interaction-policy.json",
|
||||
"files-scs:config/presets/identity/email-sender.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Use a file based store as backend with no additional routing.",
|
||||
"@id": "urn:solid-server:default:RoutingResourceStore",
|
||||
"@type": "PassthroughStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:FileResourceStore"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/presets/acl.json",
|
||||
"files-scs:config/presets/http.json",
|
||||
"files-scs:config/presets/identifiers/subdomain-identifiers.json",
|
||||
"files-scs:config/presets/init.json",
|
||||
"files-scs:config/presets/ldp.json",
|
||||
"files-scs:config/presets/ldp/credentials-extractor.json",
|
||||
"files-scs:config/presets/ldp/metadata-handler.json",
|
||||
"files-scs:config/presets/ldp/operation-handler.json",
|
||||
"files-scs:config/presets/ldp/permissions-extractor.json",
|
||||
"files-scs:config/presets/ldp/response-writer.json",
|
||||
"files-scs:config/presets/ldp/request-parser.json",
|
||||
"files-scs:config/presets/ldp/websockets.json",
|
||||
"files-scs:config/presets/logging.json",
|
||||
"files-scs:config/presets/middleware.json",
|
||||
"files-scs:config/presets/pod-management.json",
|
||||
"files-scs:config/presets/representation-conversion.json",
|
||||
"files-scs:config/presets/static.json",
|
||||
"files-scs:config/presets/storage/backend/storage-memory.json",
|
||||
"files-scs:config/presets/storage-wrapper.json",
|
||||
"files-scs:config/presets/cli-params.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Use a memory based store as backend with no additional routing.",
|
||||
"@id": "urn:solid-server:default:RoutingResourceStore",
|
||||
"@type": "PassthroughStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:MemoryResourceStore"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/presets/acl.json",
|
||||
"files-scs:config/presets/http.json",
|
||||
"files-scs:config/presets/identifiers/suffix-identifiers.json",
|
||||
"files-scs:config/presets/init.json",
|
||||
"files-scs:config/presets/ldp.json",
|
||||
"files-scs:config/presets/ldp/credentials-extractor.json",
|
||||
"files-scs:config/presets/ldp/metadata-handler.json",
|
||||
"files-scs:config/presets/ldp/operation-handler.json",
|
||||
"files-scs:config/presets/ldp/permissions-extractor.json",
|
||||
"files-scs:config/presets/ldp/response-writer.json",
|
||||
"files-scs:config/presets/ldp/request-parser.json",
|
||||
"files-scs:config/presets/ldp/websockets.json",
|
||||
"files-scs:config/presets/logging.json",
|
||||
"files-scs:config/presets/middleware.json",
|
||||
"files-scs:config/presets/pod-management.json",
|
||||
"files-scs:config/presets/representation-conversion.json",
|
||||
"files-scs:config/presets/static.json",
|
||||
"files-scs:config/presets/storage/backend/storage-filesystem.json",
|
||||
"files-scs:config/presets/storage/backend/storage-memory.json",
|
||||
"files-scs:config/presets/storage/backend/storage-sparql-endpoint.json",
|
||||
"files-scs:config/presets/storage/routing/regex-routing.json",
|
||||
"files-scs:config/presets/storage-wrapper.json",
|
||||
"files-scs:config/presets/cli-params.json",
|
||||
"files-scs:config/presets/identity/identity-provider.json",
|
||||
"files-scs:config/presets/identity/interaction-policy.json",
|
||||
"files-scs:config/presets/identity/email-sender.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": [
|
||||
"Configure routing to send all requests containing /file/ to the file store, containing /memory/ to the memory store and /sparql/ to the sparql endpoint store.",
|
||||
"The root .acl file will be stored in the sparql endpoint store."
|
||||
],
|
||||
"@id": "urn:solid-server:default:RegexRouterRule",
|
||||
"RegexRouterRule:_storeMap": [
|
||||
{
|
||||
"RegexRouterRule:_storeMap_key": "^/\\.acl$",
|
||||
"RegexRouterRule:_storeMap_value": { "@id": "urn:solid-server:default:SparqlResourceStore" }
|
||||
},
|
||||
{
|
||||
"RegexRouterRule:_storeMap_key": "/file/",
|
||||
"RegexRouterRule:_storeMap_value": { "@id": "urn:solid-server:default:FileResourceStore" }
|
||||
},
|
||||
{
|
||||
"RegexRouterRule:_storeMap_key": "/memory/",
|
||||
"RegexRouterRule:_storeMap_value": { "@id": "urn:solid-server:default:MemoryResourceStore" }
|
||||
},
|
||||
{
|
||||
"RegexRouterRule:_storeMap_key": "/sparql/",
|
||||
"RegexRouterRule:_storeMap_value": { "@id": "urn:solid-server:default:SparqlResourceStore" }
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/presets/acl.json",
|
||||
"files-scs:config/presets/http.json",
|
||||
"files-scs:config/presets/identifiers/suffix-identifiers.json",
|
||||
"files-scs:config/presets/init.json",
|
||||
"files-scs:config/presets/ldp.json",
|
||||
"files-scs:config/presets/ldp/credentials-extractor.json",
|
||||
"files-scs:config/presets/ldp/metadata-handler.json",
|
||||
"files-scs:config/presets/ldp/operation-handler.json",
|
||||
"files-scs:config/presets/ldp/permissions-extractor.json",
|
||||
"files-scs:config/presets/ldp/response-writer.json",
|
||||
"files-scs:config/presets/ldp/request-parser.json",
|
||||
"files-scs:config/presets/ldp/websockets.json",
|
||||
"files-scs:config/presets/logging.json",
|
||||
"files-scs:config/presets/middleware.json",
|
||||
"files-scs:config/presets/pod-management.json",
|
||||
"files-scs:config/presets/representation-conversion.json",
|
||||
"files-scs:config/presets/static.json",
|
||||
"files-scs:config/presets/storage/backend/storage-filesystem.json",
|
||||
"files-scs:config/presets/storage/backend/storage-sparql-endpoint.json",
|
||||
"files-scs:config/presets/storage/routing/quad-type-routing.json",
|
||||
"files-scs:config/presets/storage-wrapper.json",
|
||||
"files-scs:config/presets/cli-params.json",
|
||||
"files-scs:config/presets/identity/identity-provider.json",
|
||||
"files-scs:config/presets/identity/interaction-policy.json",
|
||||
"files-scs:config/presets/identity/email-sender.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Sends all data that can be interpreted as RDF to the sparql endpoint store and all other data to the default store (file in this case).",
|
||||
"@id": "urn:solid-server:default:ConvertingRouterRule",
|
||||
"ConvertingRouterRule:_defaultStore": {
|
||||
"@id": "urn:solid-server:default:FileResourceStore"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/presets/acl.json",
|
||||
"files-scs:config/presets/http.json",
|
||||
"files-scs:config/presets/identifiers/suffix-identifiers.json",
|
||||
"files-scs:config/presets/init.json",
|
||||
"files-scs:config/presets/ldp.json",
|
||||
"files-scs:config/presets/ldp/credentials-extractor.json",
|
||||
"files-scs:config/presets/ldp/metadata-handler.json",
|
||||
"files-scs:config/presets/ldp/operation-handler.json",
|
||||
"files-scs:config/presets/ldp/permissions-extractor.json",
|
||||
"files-scs:config/presets/ldp/response-writer.json",
|
||||
"files-scs:config/presets/ldp/request-parser.json",
|
||||
"files-scs:config/presets/ldp/websockets.json",
|
||||
"files-scs:config/presets/logging.json",
|
||||
"files-scs:config/presets/middleware.json",
|
||||
"files-scs:config/presets/pod-management.json",
|
||||
"files-scs:config/presets/representation-conversion.json",
|
||||
"files-scs:config/presets/static.json",
|
||||
"files-scs:config/presets/storage/backend/storage-sparql-endpoint.json",
|
||||
"files-scs:config/presets/storage-wrapper.json",
|
||||
"files-scs:config/presets/cli-params.json",
|
||||
"files-scs:config/presets/identity/identity-provider.json",
|
||||
"files-scs:config/presets/identity/interaction-policy.json",
|
||||
"files-scs:config/presets/identity/email-sender.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Use a SPARQL based store as backend with no additional routing.",
|
||||
"@id": "urn:solid-server:default:RoutingResourceStore",
|
||||
"@type": "PassthroughStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:SparqlResourceStore"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
33
config/default.json
Normal file
33
config/default.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/http/handler/default.json",
|
||||
"files-scs:config/http/middleware/websockets.json",
|
||||
"files-scs:config/http/server-factory/websockets.json",
|
||||
"files-scs:config/http/static/default.json",
|
||||
"files-scs:config/identity/handler/default.json",
|
||||
"files-scs:config/identity/email/default.json",
|
||||
"files-scs:config/init/handler/default.json",
|
||||
"files-scs:config/ldp/authentication/dpop-bearer.json",
|
||||
"files-scs:config/ldp/authorization/webacl.json",
|
||||
"files-scs:config/ldp/handler/default.json",
|
||||
"files-scs:config/ldp/metadata-parser/default.json",
|
||||
"files-scs:config/ldp/metadata-writer/default.json",
|
||||
"files-scs:config/ldp/permissions/acl.json",
|
||||
"files-scs:config/pod/handler/static.json",
|
||||
"files-scs:config/storage/key-value/memory.json",
|
||||
"files-scs:config/storage/resource-store/memory.json",
|
||||
"files-scs:config/util/auxiliary/acl.json",
|
||||
"files-scs:config/util/identifiers/suffix.json",
|
||||
"files-scs:config/util/index/default.json",
|
||||
"files-scs:config/util/logging/winston.json",
|
||||
"files-scs:config/util/representation-conversion/default.json",
|
||||
"files-scs:config/util/resource-locker/memory.json",
|
||||
"files-scs:config/util/variables/default.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "A single-pod server that stores its resources in memory."
|
||||
}
|
||||
]
|
||||
}
|
33
config/dynamic.json
Normal file
33
config/dynamic.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/http/handler/default.json",
|
||||
"files-scs:config/http/middleware/websockets.json",
|
||||
"files-scs:config/http/server-factory/websockets.json",
|
||||
"files-scs:config/http/static/default.json",
|
||||
"files-scs:config/identity/handler/default.json",
|
||||
"files-scs:config/identity/email/default.json",
|
||||
"files-scs:config/init/handler/default.json",
|
||||
"files-scs:config/ldp/authentication/dpop-bearer.json",
|
||||
"files-scs:config/ldp/authorization/webacl.json",
|
||||
"files-scs:config/ldp/handler/default.json",
|
||||
"files-scs:config/ldp/metadata-parser/default.json",
|
||||
"files-scs:config/ldp/metadata-writer/default.json",
|
||||
"files-scs:config/ldp/permissions/acl.json",
|
||||
"files-scs:config/pod/handler/dynamic.json",
|
||||
"files-scs:config/storage/key-value/memory.json",
|
||||
"files-scs:config/storage/resource-store/dynamic.json",
|
||||
"files-scs:config/util/auxiliary/acl.json",
|
||||
"files-scs:config/util/identifiers/suffix.json",
|
||||
"files-scs:config/util/index/default.json",
|
||||
"files-scs:config/util/logging/winston.json",
|
||||
"files-scs:config/util/representation-conversion/default.json",
|
||||
"files-scs:config/util/resource-locker/memory.json",
|
||||
"files-scs:config/util/variables/default.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "A multi-pod server that allows for the creation of dynamic pods through pod provisioning."
|
||||
}
|
||||
]
|
||||
}
|
33
config/file.json
Normal file
33
config/file.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/http/handler/default.json",
|
||||
"files-scs:config/http/middleware/websockets.json",
|
||||
"files-scs:config/http/server-factory/websockets.json",
|
||||
"files-scs:config/http/static/default.json",
|
||||
"files-scs:config/identity/handler/default.json",
|
||||
"files-scs:config/identity/email/default.json",
|
||||
"files-scs:config/init/handler/default.json",
|
||||
"files-scs:config/ldp/authentication/dpop-bearer.json",
|
||||
"files-scs:config/ldp/authorization/webacl.json",
|
||||
"files-scs:config/ldp/handler/default.json",
|
||||
"files-scs:config/ldp/metadata-parser/default.json",
|
||||
"files-scs:config/ldp/metadata-writer/default.json",
|
||||
"files-scs:config/ldp/permissions/acl.json",
|
||||
"files-scs:config/pod/handler/static.json",
|
||||
"files-scs:config/storage/key-value/memory.json",
|
||||
"files-scs:config/storage/resource-store/file.json",
|
||||
"files-scs:config/util/auxiliary/acl.json",
|
||||
"files-scs:config/util/identifiers/suffix.json",
|
||||
"files-scs:config/util/index/default.json",
|
||||
"files-scs:config/util/logging/winston.json",
|
||||
"files-scs:config/util/representation-conversion/default.json",
|
||||
"files-scs:config/util/resource-locker/memory.json",
|
||||
"files-scs:config/util/variables/default.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "A single-pod server that stores its resources on disk."
|
||||
}
|
||||
]
|
||||
}
|
23
config/http/README.md
Normal file
23
config/http/README.md
Normal file
@ -0,0 +1,23 @@
|
||||
# HTTP
|
||||
Options related to the base support of HTTP requests by the server.
|
||||
|
||||
## Handler
|
||||
Sets up all the handlers a request will potentially pass through.
|
||||
* *default*: The full setup, that is middleware + static files + pod creation + IDP + LDP.
|
||||
* *simple*: A simpler setup that only supports the base solid features. Has no pod creation or IDP.
|
||||
|
||||
## Middleware
|
||||
A set of handlers that will always be run on all requests to add some metadata
|
||||
and then pass the request along.
|
||||
* *no-websockets*: The default setup but without the websocket-related metadata.
|
||||
* *websockets*: The default setup with several handlers.
|
||||
|
||||
## Server-Factory
|
||||
The factory used to create the actual server object.
|
||||
* *no-websockets*: Only HTTP.
|
||||
* *websockets*: HTTP and websockets.
|
||||
|
||||
## Static
|
||||
Support for static files that should be found at a specific path.
|
||||
* *default*: The default handler with a favicon and css for the IDP.
|
||||
New entries can easily be added for new files.
|
22
config/http/handler/default.json
Normal file
22
config/http/handler/default.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "These are all the handlers a request will go through until it is handled.",
|
||||
"@id": "urn:solid-server:default:HttpHandler",
|
||||
"@type": "SequenceHandler",
|
||||
"handlers": [
|
||||
{ "@id": "urn:solid-server:default:Middleware" },
|
||||
{
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{ "@id": "urn:solid-server:default:StaticAssetHandler" },
|
||||
{ "@id": "urn:solid-server:default:PodManagerHandler" },
|
||||
{ "@id": "urn:solid-server:default:IdentityProviderHandler" },
|
||||
{ "@id": "urn:solid-server:default:LdpHandler" }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
]
|
||||
}
|
20
config/http/handler/simple.json
Normal file
20
config/http/handler/simple.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "This version of the server has no IDP or pod provisioning.",
|
||||
"@id": "urn:solid-server:default:HttpHandler",
|
||||
"@type": "SequenceHandler",
|
||||
"handlers": [
|
||||
{ "@id": "urn:solid-server:default:Middleware" },
|
||||
{
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{ "@id": "urn:solid-server:default:StaticAssetHandler" },
|
||||
{ "@id": "urn:solid-server:default:LdpHandler" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
20
config/http/middleware/handlers/constant-headers.json
Normal file
20
config/http/middleware/handlers/constant-headers.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Adds several constant headers.",
|
||||
"@id": "urn:solid-server:default:Middleware_Header",
|
||||
"@type": "HeaderHandler",
|
||||
"headers": [
|
||||
{
|
||||
"HeaderHandler:_headers_key": "Vary",
|
||||
"HeaderHandler:_headers_value": "Accept,Authorization,Origin"
|
||||
},
|
||||
{
|
||||
"HeaderHandler:_headers_key": "X-Powered-By",
|
||||
"HeaderHandler:_headers_value": "Community Solid Server"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
26
config/http/middleware/handlers/cors.json
Normal file
26
config/http/middleware/handlers/cors.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Adds all the necessary CORS headers.",
|
||||
"@id": "urn:solid-server:default:Middleware_Cors",
|
||||
"@type": "CorsHandler",
|
||||
"options_methods": [
|
||||
"GET",
|
||||
"HEAD",
|
||||
"OPTIONS",
|
||||
"POST",
|
||||
"PUT",
|
||||
"PATCH",
|
||||
"DELETE"
|
||||
],
|
||||
"options_credentials": true,
|
||||
"options_exposedHeaders": [
|
||||
"Accept-Patch",
|
||||
"Location",
|
||||
"MS-Author-Via",
|
||||
"Updates-Via"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
11
config/http/middleware/handlers/updates-via.json
Normal file
11
config/http/middleware/handlers/updates-via.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Advertises the websocket connection.",
|
||||
"@id": "urn:solid-server:default:Middleware_WebSocket",
|
||||
"@type": "WebSocketAdvertiser",
|
||||
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" }
|
||||
}
|
||||
]
|
||||
}
|
18
config/http/middleware/no-websockets.json
Normal file
18
config/http/middleware/no-websockets.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/http/middleware/handlers/constant-headers.json",
|
||||
"files-scs:config/http/middleware/handlers/cors.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "All of these will always be executed on any incoming request. These are mostly used for adding response headers.",
|
||||
"@id": "urn:solid-server:default:Middleware",
|
||||
"@type": "SequenceHandler",
|
||||
"handlers": [
|
||||
{ "@id": "urn:solid-server:default:Middleware_Header" },
|
||||
{ "@id": "urn:solid-server:default:Middleware_Cors" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
30
config/http/middleware/websockets.json
Normal file
30
config/http/middleware/websockets.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/http/middleware/handlers/constant-headers.json",
|
||||
"files-scs:config/http/middleware/handlers/cors.json",
|
||||
"files-scs:config/http/middleware/handlers/updates-via.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "All of these will always be executed on any incoming request. These are mostly used for adding response headers.",
|
||||
"@id": "urn:solid-server:default:Middleware",
|
||||
"@type": "SequenceHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"comment": "These handlers can be executed in any order.",
|
||||
"@id": "urn:solid-server:default:ParallelMiddleware",
|
||||
"@type": "ParallelHandler",
|
||||
"handlers": [
|
||||
{ "@id": "urn:solid-server:default:Middleware_Header" },
|
||||
{ "@id": "urn:solid-server:default:Middleware_WebSocket" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "CORS has to be last since it can close the connection.",
|
||||
"@id": "urn:solid-server:default:Middleware_Cors"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
13
config/http/server-factory/no-websockets.json
Normal file
13
config/http/server-factory/no-websockets.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Creates a server that supports HTTP requests.",
|
||||
"@id": "urn:solid-server:default:ServerFactory",
|
||||
"@type": "BaseHttpServerFactory",
|
||||
"handler": {
|
||||
"@id": "urn:solid-server:default:HttpHandler"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
19
config/http/server-factory/websockets.json
Normal file
19
config/http/server-factory/websockets.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Creates a server that supports both websocket and HTTP requests.",
|
||||
"@id": "urn:solid-server:default:ServerFactory",
|
||||
"@type": "WebSocketServerFactory",
|
||||
"baseServerFactory": {
|
||||
"@id": "urn:solid-server:default:HttpServerFactory",
|
||||
"@type": "BaseHttpServerFactory",
|
||||
"handler": { "@id": "urn:solid-server:default:HttpHandler" }
|
||||
},
|
||||
"webSocketHandler": {
|
||||
"@type": "UnsecureWebSocketsProtocol",
|
||||
"source": { "@id": "urn:solid-server:default:ResourceStore" }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
20
config/http/static/default.json
Normal file
20
config/http/static/default.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Servers static files on fixed URLs.",
|
||||
"@id": "urn:solid-server:default:StaticAssetHandler",
|
||||
"@type": "StaticAssetHandler",
|
||||
"assets": [
|
||||
{
|
||||
"StaticAssetHandler:_assets_key": "/favicon.ico",
|
||||
"StaticAssetHandler:_assets_value": "$PACKAGE_ROOT/templates/root/favicon.ico"
|
||||
},
|
||||
{
|
||||
"StaticAssetHandler:_assets_key": "/idp/style.css",
|
||||
"StaticAssetHandler:_assets_value": "$PACKAGE_ROOT/templates/views/email-password-interaction/main.css"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
14
config/identity/README.md
Normal file
14
config/identity/README.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Identity
|
||||
Options related to the Identity Provider.
|
||||
|
||||
## Email
|
||||
Necessary for sending e-mail when using IDP.
|
||||
* *default*: Disables e-mail functionality.
|
||||
* *example*: An example of what your e-mail configuration should look like.
|
||||
In that case you should not import anything from this folder
|
||||
but have the settings in your root config.
|
||||
|
||||
## Handler
|
||||
Contains everything needed for setting up the Identity Provider.
|
||||
* *default*: As of writing there is not much customization possible.
|
||||
This contains everything needed.
|
15
config/identity/email/example.json
Normal file
15
config/identity/email/example.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "This is an example of what an actual email sender configuration would look like.",
|
||||
"@id": "urn:solid-server:default:EmailSender",
|
||||
"@type": "BaseEmailSender",
|
||||
"args_senderName": "Solid Server",
|
||||
"args_emailConfig_host": "smtp.example.email",
|
||||
"args_emailConfig_port": 587,
|
||||
"args_emailConfig_auth_user": "alice@example.email",
|
||||
"args_emailConfig_auth_pass": "NYEaCsqV7aVStRCbmC"
|
||||
}
|
||||
]
|
||||
}
|
21
config/identity/handler/adapter-factory/wrapped-fetch.json
Normal file
21
config/identity/handler/adapter-factory/wrapped-fetch.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "An adapter is responsible for storing all interaction metadata.",
|
||||
"@id": "urn:solid-server:default:IdpAdapterFactory",
|
||||
"@type": "WrappedFetchAdapterFactory",
|
||||
"source": {
|
||||
"@type": "ExpiringAdapterFactory",
|
||||
"args_storageName": "/idp/oidc",
|
||||
"args_storage": { "@id": "urn:solid-server:default:ExpiringIdpStorage" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Stores expiring data. This class has a `finalize` function to call after stopping the server.",
|
||||
"@id": "urn:solid-server:default:ExpiringIdpStorage",
|
||||
"@type": "WrappedExpiringStorage",
|
||||
"source": { "@id": "urn:solid-server:default:IdpStorage" }
|
||||
}
|
||||
]
|
||||
}
|
27
config/identity/handler/default.json
Normal file
27
config/identity/handler/default.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/identity/handler/adapter-factory/wrapped-fetch.json",
|
||||
"files-scs:config/identity/handler/interaction/handler.json",
|
||||
"files-scs:config/identity/handler/key-value/resource-store.json",
|
||||
"files-scs:config/identity/handler/provider-factory/identity.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Routes all IDP related requests to the relevant handlers.",
|
||||
"@id": "urn:solid-server:default:IdentityProviderHandler",
|
||||
"@type": "RouterHandler",
|
||||
"allowedMethods": [ "GET", "POST", "PUT", "DELETE", "OPTIONS" ],
|
||||
"allowedPathNames": [ "^/idp/.*", "^/\\.well-known/openid-configuration" ],
|
||||
"handler": { "@id": "urn:solid-server:default:IdentityProviderHttpHandler" }
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdentityProviderHttpHandler",
|
||||
"@type": "IdentityProviderHttpHandler",
|
||||
"providerFactory": { "@id": "urn:solid-server:default:IdentityProviderFactory" },
|
||||
"interactionPolicy": { "@id": "urn:solid-server:auth:password:AccountInteractionPolicy" },
|
||||
"interactionHttpHandler": { "@id": "urn:solid-server:auth:password:InteractionHttpHandler" },
|
||||
"errorResponseWriter": { "@type": "ErrorResponseWriter" }
|
||||
}
|
||||
]
|
||||
}
|
51
config/identity/handler/interaction/handler.json
Normal file
51
config/identity/handler/interaction/handler.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/identity/handler/interaction/handlers/forgot-password.json",
|
||||
"files-scs:config/identity/handler/interaction/handlers/initial.json",
|
||||
"files-scs:config/identity/handler/interaction/handlers/login.json",
|
||||
"files-scs:config/identity/handler/interaction/handlers/registration.json",
|
||||
"files-scs:config/identity/handler/interaction/handlers/reset-password.json",
|
||||
"files-scs:config/identity/handler/interaction/handlers/session.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Http handler to take care of all routing on for the email password interaction",
|
||||
"@id": "urn:solid-server:auth:password:InteractionHttpHandler",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{ "@id": "urn:solid-server:auth:password:InitialInteractionHandler" },
|
||||
{ "@id": "urn:solid-server:auth:password:RegistrationInteractionHandler" },
|
||||
{ "@id": "urn:solid-server:auth:password:LoginInteractionHandler" },
|
||||
{ "@id": "urn:solid-server:auth:password:SessionInteractionHandler" },
|
||||
{ "@id": "urn:solid-server:auth:password:ForgotPasswordInteractionHandler" },
|
||||
{ "@id": "urn:solid-server:auth:password:ResetPasswordViewInteractionHandler" },
|
||||
{ "@id": "urn:solid-server:auth:password:ResetPasswordInteractionHandler" }
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "Below are extra classes used by the handlers."
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "The storage adapter that persists usernames, passwords, etc.",
|
||||
"@id": "urn:solid-server:auth:password:AccountStore",
|
||||
"@type": "BaseAccountStore",
|
||||
"args_storageName": "/idp/email-password-db",
|
||||
"args_saltRounds": 10,
|
||||
"args_storage": { "@id": "urn:solid-server:default:IdpStorage" }
|
||||
},
|
||||
{
|
||||
"comment": "Responsible for completing an OIDC interaction after login or registration",
|
||||
"@id": "urn:solid-server:auth:password:InteractionCompleter",
|
||||
"@type": "InteractionCompleter"
|
||||
},
|
||||
{
|
||||
"comment": "Sets up the email password interaction policy",
|
||||
"@id": "urn:solid-server:auth:password:AccountInteractionPolicy",
|
||||
"@type": "AccountInteractionPolicy",
|
||||
"idpPath": "/idp"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Handles all functionality on the forgot password page",
|
||||
"@id": "urn:solid-server:auth:password:ForgotPasswordInteractionHandler",
|
||||
"@type": "IdpRouteController",
|
||||
"pathName": "^/idp/interaction/[-_A-Za-z0-9]+/forgotpassword/?$",
|
||||
"postHandler": {
|
||||
"@type": "ForgotPasswordHandler",
|
||||
"args_messageRenderHandler": { "@id": "urn:solid-server:auth:password:EmailSentRenderHandler" },
|
||||
"args_accountStore": { "@id": "urn:solid-server:auth:password:AccountStore" },
|
||||
"args_baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
|
||||
"args_idpPath": "/idp",
|
||||
"args_emailTemplateRenderer": {
|
||||
"@type": "EjsTemplateRenderer",
|
||||
"templatePath": { "@id": "urn:solid-server:default:variable:idpTemplateFolder" },
|
||||
"templateFile": "./email-password-interaction/resetPasswordEmail.ejs"
|
||||
},
|
||||
"args_emailSender": { "@id": "urn:solid-server:default:EmailSender" }
|
||||
},
|
||||
"renderHandler": { "@id": "urn:solid-server:auth:password:ForgotPasswordRenderHandler" }
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "Renders the Email Sent message page",
|
||||
"@id": "urn:solid-server:auth:password:EmailSentRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": { "@id": "urn:solid-server:default:variable:idpTemplateFolder" },
|
||||
"templateFile": "./email-password-interaction/emailSent.ejs"
|
||||
},
|
||||
{
|
||||
"comment": "Renders the forgot password page",
|
||||
"@id": "urn:solid-server:auth:password:ForgotPasswordRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": { "@id": "urn:solid-server:default:variable:idpTemplateFolder" },
|
||||
"templateFile": "./email-password-interaction/forgotPassword.ejs"
|
||||
}
|
||||
]
|
||||
}
|
26
config/identity/handler/interaction/handlers/initial.json
Normal file
26
config/identity/handler/interaction/handlers/initial.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Handles the initial route when the user is directed from their app to the IdP",
|
||||
"@id": "urn:solid-server:auth:password:InitialInteractionHandler",
|
||||
"@type": "RouterHandler",
|
||||
"allowedMethods": [ "GET" ],
|
||||
"allowedPathNames": [ "^/idp/interaction/[-_A-Za-z0-9]+/?$" ],
|
||||
"handler": {
|
||||
"@type": "InitialInteractionHandler",
|
||||
"renderHandlerMap": [
|
||||
{
|
||||
"InitialInteractionHandler:_renderHandlerMap_key": "consent",
|
||||
"InitialInteractionHandler:_renderHandlerMap_value": {
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": { "@id": "urn:solid-server:default:variable:idpTemplateFolder" },
|
||||
"templateFile": "./email-password-interaction/confirm.ejs"
|
||||
}
|
||||
}
|
||||
],
|
||||
"renderHandlerMap_default": { "@id": "urn:solid-server:auth:password:LoginRenderHandler" }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
25
config/identity/handler/interaction/handlers/login.json
Normal file
25
config/identity/handler/interaction/handlers/login.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Handles all functionality on the Login Page",
|
||||
"@id": "urn:solid-server:auth:password:LoginInteractionHandler",
|
||||
"@type": "IdpRouteController",
|
||||
"pathName": "^/idp/interaction/[-_A-Za-z0-9]+/login/?$",
|
||||
"postHandler": {
|
||||
"@type": "LoginHandler",
|
||||
"args_accountStore": { "@id": "urn:solid-server:auth:password:AccountStore" },
|
||||
"args_interactionCompleter": { "@id": "urn:solid-server:auth:password:InteractionCompleter" }
|
||||
},
|
||||
"renderHandler": { "@id": "urn:solid-server:auth:password:LoginRenderHandler" }
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "Renders the login page",
|
||||
"@id": "urn:solid-server:auth:password:LoginRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": { "@id": "urn:solid-server:default:variable:idpTemplateFolder" },
|
||||
"templateFile": "./email-password-interaction/login.ejs"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Handles all functionality on the register page",
|
||||
"@id": "urn:solid-server:auth:password:RegistrationInteractionHandler",
|
||||
"@type": "IdpRouteController",
|
||||
"pathName": "^/idp/interaction/[-_A-Za-z0-9]+/register/?$",
|
||||
"postHandler": {
|
||||
"@type": "RegistrationHandler",
|
||||
"args_ownershipValidator": {
|
||||
"@type": "IssuerOwnershipValidator",
|
||||
"issuer": { "@id": "urn:solid-server:default:variable:baseUrl" }
|
||||
},
|
||||
"args_accountStore": { "@id": "urn:solid-server:auth:password:AccountStore" },
|
||||
"args_interactionCompleter": { "@id": "urn:solid-server:auth:password:InteractionCompleter" }
|
||||
},
|
||||
"renderHandler": { "@id": "urn:solid-server:auth:password:RegisterRenderHandler" }
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "Renders the register page",
|
||||
"@id": "urn:solid-server:auth:password:RegisterRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": { "@id": "urn:solid-server:default:variable:idpTemplateFolder" },
|
||||
"templateFile": "./email-password-interaction/register.ejs"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"comment": "Exports 2 handlers: one for viewing the page and one for doing the reset.",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Renders the reset password page",
|
||||
"@id": "urn:solid-server:auth:password:ResetPasswordViewInteractionHandler",
|
||||
"@type": "RouterHandler",
|
||||
"allowedMethods": [ "GET" ],
|
||||
"allowedPathNames": [ "^/idp/resetpassword/?$" ],
|
||||
"handler": {
|
||||
"@type": "ResetPasswordViewHandler",
|
||||
"renderHandler": { "@id": "urn:solid-server:auth:password:ResetPasswordRenderHandler" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Handles the reset password page submission",
|
||||
"@id": "urn:solid-server:auth:password:ResetPasswordInteractionHandler",
|
||||
"@type": "RouterHandler",
|
||||
"allowedMethods": [ "POST" ],
|
||||
"allowedPathNames": [ "^/idp/resetpassword/?$" ],
|
||||
"handler": {
|
||||
"@type": "ResetPasswordHandler",
|
||||
"args_accountStore": { "@id": "urn:solid-server:auth:password:AccountStore" },
|
||||
"args_renderHandler": { "@id": "urn:solid-server:auth:password:ResetPasswordRenderHandler" },
|
||||
"args_messageRenderHandler": { "@id": "urn:solid-server:auth:password:MessageRenderHandler" }
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "Renders the reset password page",
|
||||
"@id": "urn:solid-server:auth:password:ResetPasswordRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": { "@id": "urn:solid-server:default:variable:idpTemplateFolder" },
|
||||
"templateFile": "./email-password-interaction/resetPassword.ejs"
|
||||
},
|
||||
{
|
||||
"comment": "Renders a generic page that says a message",
|
||||
"@id": "urn:solid-server:auth:password:MessageRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": { "@id": "urn:solid-server:default:variable:idpTemplateFolder" },
|
||||
"templateFile": "./email-password-interaction/message.ejs"
|
||||
}
|
||||
]
|
||||
}
|
16
config/identity/handler/interaction/handlers/session.json
Normal file
16
config/identity/handler/interaction/handlers/session.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Handles confirm requests",
|
||||
"@id": "urn:solid-server:auth:password:SessionInteractionHandler",
|
||||
"@type": "RouterHandler",
|
||||
"allowedMethods": [ "POST" ],
|
||||
"allowedPathNames": [ "^/idp/interaction/[-_A-Za-z0-9]+/confirm/?$" ],
|
||||
"handler": {
|
||||
"@type": "SessionHttpHandler",
|
||||
"interactionCompleter": { "@id": "urn:solid-server:auth:password:InteractionCompleter" }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
13
config/identity/handler/key-value/resource-store.json
Normal file
13
config/identity/handler/key-value/resource-store.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "This storage specifically uses the same path as the IDP routing, thereby guaranteeing outside access is impossible.",
|
||||
"@id": "urn:solid-server:default:IdpStorage",
|
||||
"@type": "JsonResourceStorage",
|
||||
"source": { "@id": "urn:solid-server:default:ResourceStore" },
|
||||
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
|
||||
"container": "/idp/data/"
|
||||
}
|
||||
]
|
||||
}
|
22
config/identity/handler/provider-factory/identity.json
Normal file
22
config/identity/handler/provider-factory/identity.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Sets all the relevant oidc parameters.",
|
||||
"@id": "urn:solid-server:default:IdentityProviderFactory",
|
||||
"@type": "IdentityProviderFactory",
|
||||
"issuer": { "@id": "urn:solid-server:default:variable:baseUrl" },
|
||||
"configurationFactory": { "@id": "urn:solid-server:default:IdpConfigurationFactory" },
|
||||
"errorResponseWriter": { "@type": "ErrorResponseWriter" }
|
||||
},
|
||||
{
|
||||
"comment": "Sets up the JWKS and cookie keys.",
|
||||
"@id": "urn:solid-server:default:IdpConfigurationFactory",
|
||||
"@type": "KeyConfigurationFactory",
|
||||
"adapterFactory": { "@id": "urn:solid-server:default:IdpAdapterFactory" },
|
||||
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
|
||||
"idpPath": "/idp",
|
||||
"storage": { "@id": "urn:solid-server:default:IdpStorage" }
|
||||
}
|
||||
]
|
||||
}
|
9
config/init/README.md
Normal file
9
config/init/README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Init
|
||||
Options related to the server initialization.
|
||||
This is the entry point to the main server setup.
|
||||
|
||||
## Handler
|
||||
Contains a list of initializer that need to be run when starting the server.
|
||||
For example, when acl authorization is used,
|
||||
an initializer will be added that makes sure there is an acl file in the root.
|
||||
* *default*: The default setup that makes sure the root container is marked as pim:storage.
|
19
config/init/handler/base/init.json
Normal file
19
config/init/handler/base/init.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/init/handler/initializers/logger.json",
|
||||
"files-scs:config/init/handler/initializers/server.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "These initializers will be all be executed sequentially when starting the server.",
|
||||
"@id": "urn:solid-server:default:Initializer",
|
||||
"@type": "SequenceHandler",
|
||||
"handlers": [
|
||||
{ "@id": "urn:solid-server:default:LoggerInitializer" },
|
||||
{ "@id": "urn:solid-server:default:ParallelInitializer" },
|
||||
{ "@id": "urn:solid-server:default:ServerInitializer" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
17
config/init/handler/default.json
Normal file
17
config/init/handler/default.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/init/handler/base/init.json",
|
||||
"files-scs:config/init/handler/initializers/root-container.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "These handlers are called whenever the server is started, and can be used to ensure that all necessary resources for booting are available.",
|
||||
"@id": "urn:solid-server:default:ParallelInitializer",
|
||||
"@type": "ParallelHandler",
|
||||
"handlers": [
|
||||
{ "@id": "urn:solid-server:default:RootContainerInitializer" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
16
config/init/handler/initializers/logger.json
Normal file
16
config/init/handler/initializers/logger.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": [
|
||||
"Sets up the global logging factory which is necessary for logging.",
|
||||
"This needs to happen before any other activity takes places, since all other components depend on logging."
|
||||
],
|
||||
"@id": "urn:solid-server:default:LoggerInitializer",
|
||||
"@type": "LoggerInitializer",
|
||||
"loggerFactory": {
|
||||
"@id": "urn:solid-server:default:LoggerFactory"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
12
config/init/handler/initializers/root-container.json
Normal file
12
config/init/handler/initializers/root-container.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Makes sure the root container exists and marks it as pim:Storage.",
|
||||
"@id": "urn:solid-server:default:RootContainerInitializer",
|
||||
"@type": "RootContainerInitializer",
|
||||
"settings_store": { "@id": "urn:solid-server:default:ResourceStore" },
|
||||
"settings_baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" }
|
||||
}
|
||||
]
|
||||
}
|
12
config/init/handler/initializers/server.json
Normal file
12
config/init/handler/initializers/server.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Creates the server that starts listening for requests.",
|
||||
"@id": "urn:solid-server:default:ServerInitializer",
|
||||
"@type": "ServerInitializer",
|
||||
"serverFactory": { "@id": "urn:solid-server:default:ServerFactory" },
|
||||
"port": { "@id": "urn:solid-server:default:variable:port" }
|
||||
}
|
||||
]
|
||||
}
|
34
config/ldp/README.md
Normal file
34
config/ldp/README.md
Normal file
@ -0,0 +1,34 @@
|
||||
# LDP
|
||||
Options related to the Linked Data Platform implementation.
|
||||
This is the core part of the Solid server.
|
||||
|
||||
## Authentication
|
||||
Covers how agents are identified.
|
||||
* *debug-auth-header*: Allows authentication headers such as `WebID http://test.com/card#me`
|
||||
to identify as that WebID without further checks.
|
||||
* *debug-test-agent*: Always assumes the agent is the set identifier.
|
||||
* *dpop-bearer*: Uses the default DPoP and Bearer identification.
|
||||
|
||||
## Authorization
|
||||
Covers how operations are authorized (or rejected).
|
||||
* *allow-everything*: No authorization, everything is allowed.
|
||||
* *webacl*: Use the default Web Access Control.
|
||||
|
||||
## Handler
|
||||
Contains the default LDP handler that will handle most requests.
|
||||
* *default*: The default setup.
|
||||
Some identifiers seen here are defined by the other options found in this document.
|
||||
|
||||
## Metadata-Parser
|
||||
Contains a list of parsers that will be run on incoming requests to generate metadata.
|
||||
* *default*: Contains the default parsers. Can be added to when specific parsers are required.
|
||||
|
||||
## Metadata-Writer
|
||||
Contains a list of metadata writers that will be run on outgoing responses.
|
||||
* *default*: Contains the default writers. Can be added to when specific parsers are required.
|
||||
|
||||
## Permissions
|
||||
Determines which permissions are needed for requests,
|
||||
by default this is based on the used HTTP method.
|
||||
* *acl*: The default setup with specific support for accessing .acl documents.
|
||||
* *no-acl*: Same as above but interprets .acl documents as any other document.
|
17
config/ldp/authentication/debug-auth-header.json
Normal file
17
config/ldp/authentication/debug-auth-header.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": [
|
||||
"DO NOT USE IN PRODUCTION, ONLY FOR DEVELOPMENT, TESTING, OR DEBUGGING.",
|
||||
"Supports authentication headers such as `Authentication: WebID http://test.com/card#me`"
|
||||
],
|
||||
"@id": "urn:solid-server:default:CredentialsExtractor",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{ "@type": "UnsecureWebIdExtractor" },
|
||||
{ "@type": "EmptyCredentialsExtractor" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
14
config/ldp/authentication/debug-test-agent.json
Normal file
14
config/ldp/authentication/debug-test-agent.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": [
|
||||
"DO NOT USE IN PRODUCTION, ONLY FOR DEVELOPMENT, TESTING, OR DEBUGGING.",
|
||||
"This extractor always sets the credentials to the fixed value."
|
||||
],
|
||||
"@id": "urn:solid-server:default:CredentialsExtractor",
|
||||
"@type": "UnsecureConstantCredentialsExtractor",
|
||||
"agent": "http://test.com/card#me"
|
||||
}
|
||||
]
|
||||
}
|
@ -2,6 +2,7 @@
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Supports DPoP and Bearer access tokens, or no credentials.",
|
||||
"@id": "urn:solid-server:default:CredentialsExtractor",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
@ -11,12 +12,8 @@
|
||||
"@type": "OriginalUrlExtractor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "BearerWebIdExtractor"
|
||||
},
|
||||
{
|
||||
"@type": "EmptyCredentialsExtractor"
|
||||
}
|
||||
{ "@type": "BearerWebIdExtractor" },
|
||||
{ "@type": "EmptyCredentialsExtractor" }
|
||||
]
|
||||
}
|
||||
]
|
13
config/ldp/authorization/allow-everything.json
Normal file
13
config/ldp/authorization/allow-everything.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": [
|
||||
"DO NOT USE IN PRODUCTION, ONLY FOR DEVELOPMENT, TESTING, OR DEBUGGING.",
|
||||
"Always allows all operations."
|
||||
],
|
||||
"@id": "urn:solid-server:default:Authorizer",
|
||||
"@type": "AllowEverythingAuthorizer"
|
||||
}
|
||||
]
|
||||
}
|
18
config/ldp/authorization/authorizers/acl.json
Normal file
18
config/ldp/authorization/authorizers/acl.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:WebAclAuthorizer",
|
||||
"@type": "WebAclAuthorizer",
|
||||
"aclStrategy": {
|
||||
"@id": "urn:solid-server:default:AclStrategy"
|
||||
},
|
||||
"resourceStore": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
},
|
||||
"identifierStrategy": {
|
||||
"@id": "urn:solid-server:default:IdentifierStrategy"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
36
config/ldp/authorization/webacl.json
Normal file
36
config/ldp/authorization/webacl.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/ldp/authorization/authorizers/acl.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Uses Web Access Control for authorization.",
|
||||
"@id": "urn:solid-server:default:Authorizer",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"comment": "This authorizer makes sure that for auxiliary resources, the main authorizer gets called with the associated identifier.",
|
||||
"@type": "AuxiliaryAuthorizer",
|
||||
"resourceAuthorizer": { "@id": "urn:solid-server:default:WebAclAuthorizer" },
|
||||
"auxStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }
|
||||
},
|
||||
{ "@id": "urn:solid-server:default:WebAclAuthorizer" }
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "Add to the list of initializers.",
|
||||
"@id": "urn:solid-server:default:ParallelInitializer",
|
||||
"ParallelHandler:_handlers": [
|
||||
{
|
||||
"comment": "Makes sure there is a root acl document. This is necessary for acl authorization.",
|
||||
"@type": "AclInitializer",
|
||||
"settings_store": { "@id": "urn:solid-server:default:ResourceStore" },
|
||||
"settings_aclStrategy": { "@id": "urn:solid-server:default:AclStrategy" },
|
||||
"settings_baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" }
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -5,41 +5,29 @@
|
||||
"@id": "urn:solid-server:default:OperationHandler",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@type": "DeleteOperationHandler",
|
||||
"store": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "GetOperationHandler",
|
||||
"store": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "HeadOperationHandler",
|
||||
"store": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "PatchOperationHandler",
|
||||
"store": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
}
|
||||
"store": { "@id": "urn:solid-server:default:ResourceStore" }
|
||||
},
|
||||
{
|
||||
"@type": "PostOperationHandler",
|
||||
"store": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
}
|
||||
"store": { "@id": "urn:solid-server:default:ResourceStore" }
|
||||
},
|
||||
{
|
||||
"@type": "PutOperationHandler",
|
||||
"store": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
}
|
||||
"store": { "@id": "urn:solid-server:default:ResourceStore" }
|
||||
},
|
||||
{
|
||||
"@type": "DeleteOperationHandler",
|
||||
"store": { "@id": "urn:solid-server:default:ResourceStore" }
|
||||
},
|
||||
{
|
||||
"@type": "HeadOperationHandler",
|
||||
"store": { "@id": "urn:solid-server:default:ResourceStore" }
|
||||
},
|
||||
{
|
||||
"@type": "PatchOperationHandler",
|
||||
"store": { "@id": "urn:solid-server:default:ResourceStore" }
|
||||
}
|
||||
]
|
||||
}
|
23
config/ldp/handler/components/request-parser.json
Normal file
23
config/ldp/handler/components/request-parser.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Handles everything related to parsing a Request.",
|
||||
"@id": "urn:solid-server:default:RequestParser",
|
||||
"@type": "BasicRequestParser",
|
||||
"args_targetExtractor": {
|
||||
"@type": "OriginalUrlExtractor",
|
||||
"options_includeQueryString": false
|
||||
},
|
||||
"args_preferenceParser": { "@type": "AcceptPreferenceParser" },
|
||||
"args_metadataParser": { "@id": "urn:solid-server:default:MetadataParser" },
|
||||
"args_bodyParser": {
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{ "@type": "SparqlUpdateBodyParser" },
|
||||
{ "@type": "RawBodyParser" }
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
17
config/ldp/handler/components/response-writer.json
Normal file
17
config/ldp/handler/components/response-writer.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Writes the result to the response stream.",
|
||||
"@id": "urn:solid-server:default:ResponseWriter",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{ "@type": "ErrorResponseWriter" },
|
||||
{
|
||||
"@type": "BasicResponseWriter",
|
||||
"metadataWriter": { "@id": "urn:solid-server:default:MetadataWriter" }
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
21
config/ldp/handler/default.json
Normal file
21
config/ldp/handler/default.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/ldp/handler/components/operation-handler.json",
|
||||
"files-scs:config/ldp/handler/components/request-parser.json",
|
||||
"files-scs:config/ldp/handler/components/response-writer.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "The main entry point into the main Solid behaviour.",
|
||||
"@id": "urn:solid-server:default:LdpHandler",
|
||||
"@type": "AuthenticatedLdpHandler",
|
||||
"args_requestParser": { "@id": "urn:solid-server:default:RequestParser" },
|
||||
"args_credentialsExtractor": { "@id": "urn:solid-server:default:CredentialsExtractor" },
|
||||
"args_permissionsExtractor": { "@id": "urn:solid-server:default:PermissionsExtractor" },
|
||||
"args_authorizer": { "@id": "urn:solid-server:default:Authorizer" },
|
||||
"args_operationHandler": { "@id": "urn:solid-server:default:OperationHandler" },
|
||||
"args_responseWriter": { "@id": "urn:solid-server:default:ResponseWriter" }
|
||||
}
|
||||
]
|
||||
}
|
@ -2,18 +2,13 @@
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Converts request metadata (e.g. headers) to RDF metadata.",
|
||||
"@id": "urn:solid-server:default:MetadataParser",
|
||||
"@type": "ParallelHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@type": "ContentTypeParser"
|
||||
},
|
||||
{
|
||||
"@type": "LinkTypeParser"
|
||||
},
|
||||
{
|
||||
"@type": "SlugParser"
|
||||
}
|
||||
{ "@type": "ContentTypeParser" },
|
||||
{ "@type": "LinkTypeParser" },
|
||||
{ "@type": "SlugParser" }
|
||||
]
|
||||
}
|
||||
]
|
22
config/ldp/metadata-writer/default.json
Normal file
22
config/ldp/metadata-writer/default.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/ldp/metadata-writer/writers/constant.json",
|
||||
"files-scs:config/ldp/metadata-writer/writers/link-rel.json",
|
||||
"files-scs:config/ldp/metadata-writer/writers/mapped.json",
|
||||
"files-scs:config/ldp/metadata-writer/writers/wac-allow.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Adds metadata to the response based on the RDF metadata.",
|
||||
"@id": "urn:solid-server:default:MetadataWriter",
|
||||
"@type": "ParallelHandler",
|
||||
"handlers": [
|
||||
{ "@id": "urn:solid-server:default:MetadataWriter_Constant" },
|
||||
{ "@id": "urn:solid-server:default:MetadataWriter_Mapped" },
|
||||
{ "@id": "urn:solid-server:default:MetadataWriter_LinkRel" },
|
||||
{ "@id": "urn:solid-server:default:MetadataWriter_WacAllow" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
20
config/ldp/metadata-writer/writers/constant.json
Normal file
20
config/ldp/metadata-writer/writers/constant.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Adds fixed headers to the response.",
|
||||
"@id": "urn:solid-server:default:MetadataWriter_Constant",
|
||||
"@type": "ConstantMetadataWriter",
|
||||
"headers": [
|
||||
{
|
||||
"ConstantMetadataWriter:_headers_key": "Accept-Patch",
|
||||
"ConstantMetadataWriter:_headers_value": "application/sparql-update"
|
||||
},
|
||||
{
|
||||
"ConstantMetadataWriter:_headers_key": "MS-Author-Via",
|
||||
"ConstantMetadataWriter:_headers_value": "SPARQL"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
20
config/ldp/metadata-writer/writers/link-rel.json
Normal file
20
config/ldp/metadata-writer/writers/link-rel.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Converts all triples with the given predicates to Link headers.",
|
||||
"@id": "urn:solid-server:default:MetadataWriter_LinkRel",
|
||||
"@type": "LinkRelMetadataWriter",
|
||||
"linkRelMap": [
|
||||
{
|
||||
"LinkRelMetadataWriter:_linkRelMap_key": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
|
||||
"LinkRelMetadataWriter:_linkRelMap_value": "type"
|
||||
},
|
||||
{
|
||||
"LinkRelMetadataWriter:_linkRelMap_key": "http://www.w3.org/ns/auth/acl#accessControl",
|
||||
"LinkRelMetadataWriter:_linkRelMap_value": "acl"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
20
config/ldp/metadata-writer/writers/mapped.json
Normal file
20
config/ldp/metadata-writer/writers/mapped.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Converts all triples with the given predicate to headers of the given type.",
|
||||
"@id": "urn:solid-server:default:MetadataWriter_Mapped",
|
||||
"@type": "MappedMetadataWriter",
|
||||
"headerMap": [
|
||||
{
|
||||
"MappedMetadataWriter:_headerMap_key": "http://www.w3.org/ns/ma-ont#format",
|
||||
"MappedMetadataWriter:_headerMap_value": "Content-Type"
|
||||
},
|
||||
{
|
||||
"MappedMetadataWriter:_headerMap_key": "urn:solid:http:location",
|
||||
"MappedMetadataWriter:_headerMap_value": "Location"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
10
config/ldp/metadata-writer/writers/wac-allow.json
Normal file
10
config/ldp/metadata-writer/writers/wac-allow.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Adds the correct Wac-Allow header.",
|
||||
"@id": "urn:solid-server:default:MetadataWriter_WacAllow",
|
||||
"@type": "WacAllowMetadataWriter"
|
||||
}
|
||||
]
|
||||
}
|
@ -2,21 +2,16 @@
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Makes sure acl files require control permissions.",
|
||||
"@id": "urn:solid-server:default:PermissionsExtractor",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@type": "AclPermissionsExtractor",
|
||||
"aclStrategy": {
|
||||
"@id": "urn:solid-server:default:AclIdentifierStrategy"
|
||||
}
|
||||
"aclStrategy": { "@id": "urn:solid-server:default:AclStrategy" }
|
||||
},
|
||||
{
|
||||
"@type": "MethodPermissionsExtractor"
|
||||
},
|
||||
{
|
||||
"@type": "SparqlPatchPermissionsExtractor"
|
||||
}
|
||||
{ "@type": "MethodPermissionsExtractor" },
|
||||
{ "@type": "SparqlPatchPermissionsExtractor" }
|
||||
]
|
||||
}
|
||||
]
|
14
config/ldp/permissions/no-acl.json
Normal file
14
config/ldp/permissions/no-acl.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Extracts the required permissions based on the HTTP method.",
|
||||
"@id": "urn:solid-server:default:PermissionsExtractor",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{ "@type": "MethodPermissionsExtractor" },
|
||||
{ "@type": "SparqlPatchPermissionsExtractor" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
33
config/memory-subdomains.json
Normal file
33
config/memory-subdomains.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/http/handler/default.json",
|
||||
"files-scs:config/http/middleware/websockets.json",
|
||||
"files-scs:config/http/server-factory/websockets.json",
|
||||
"files-scs:config/http/static/default.json",
|
||||
"files-scs:config/identity/handler/default.json",
|
||||
"files-scs:config/identity/email/default.json",
|
||||
"files-scs:config/init/handler/default.json",
|
||||
"files-scs:config/ldp/authentication/dpop-bearer.json",
|
||||
"files-scs:config/ldp/authorization/webacl.json",
|
||||
"files-scs:config/ldp/handler/default.json",
|
||||
"files-scs:config/ldp/metadata-parser/default.json",
|
||||
"files-scs:config/ldp/metadata-writer/default.json",
|
||||
"files-scs:config/ldp/permissions/acl.json",
|
||||
"files-scs:config/pod/handler/static.json",
|
||||
"files-scs:config/storage/key-value/memory.json",
|
||||
"files-scs:config/storage/resource-store/memory.json",
|
||||
"files-scs:config/util/auxiliary/acl.json",
|
||||
"files-scs:config/util/identifiers/subdomain.json",
|
||||
"files-scs:config/util/index/default.json",
|
||||
"files-scs:config/util/logging/winston.json",
|
||||
"files-scs:config/util/representation-conversion/default.json",
|
||||
"files-scs:config/util/resource-locker/memory.json",
|
||||
"files-scs:config/util/variables/default.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "A single-pod server that stores its resources in memory with support for subdomain identifiers."
|
||||
}
|
||||
]
|
||||
}
|
36
config/path-routing.json
Normal file
36
config/path-routing.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/http/handler/default.json",
|
||||
"files-scs:config/http/middleware/websockets.json",
|
||||
"files-scs:config/http/server-factory/websockets.json",
|
||||
"files-scs:config/http/static/default.json",
|
||||
"files-scs:config/identity/handler/default.json",
|
||||
"files-scs:config/identity/email/default.json",
|
||||
"files-scs:config/init/handler/default.json",
|
||||
"files-scs:config/ldp/authentication/dpop-bearer.json",
|
||||
"files-scs:config/ldp/authorization/webacl.json",
|
||||
"files-scs:config/ldp/handler/default.json",
|
||||
"files-scs:config/ldp/metadata-parser/default.json",
|
||||
"files-scs:config/ldp/metadata-writer/default.json",
|
||||
"files-scs:config/ldp/permissions/acl.json",
|
||||
"files-scs:config/pod/handler/static.json",
|
||||
"files-scs:config/storage/key-value/memory.json",
|
||||
"files-scs:config/storage/resource-store/regex.json",
|
||||
"files-scs:config/util/auxiliary/acl.json",
|
||||
"files-scs:config/util/identifiers/suffix.json",
|
||||
"files-scs:config/util/index/default.json",
|
||||
"files-scs:config/util/logging/winston.json",
|
||||
"files-scs:config/util/representation-conversion/default.json",
|
||||
"files-scs:config/util/resource-locker/memory.json",
|
||||
"files-scs:config/util/variables/default.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": [
|
||||
"A server with dynamic routing: all /file/* requests go to the file store, /memory/* to the memory store and /sparql/* to the sparql endpoint store.",
|
||||
"The root .acl file will be stored in the sparql endpoint store."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
9
config/pod/README.md
Normal file
9
config/pod/README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Pod
|
||||
Options related to pod provisioning.
|
||||
|
||||
## Handler
|
||||
What to use for pod creation. This covers several features
|
||||
and is a bit more extensive than many other options.
|
||||
* *dynamic*: Every created pod has its own components.js config for its ResourceStore,
|
||||
which can differ from the others.
|
||||
* *static*: All pod data is stored in separate containers in the same ResourceStore.
|
59
config/pod/handler/dynamic.json
Normal file
59
config/pod/handler/dynamic.json
Normal file
@ -0,0 +1,59 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/pod/handler/http/manager.json",
|
||||
"files-scs:config/pod/handler/pod-generators/templated.json",
|
||||
"files-scs:config/pod/handler/resource-generators/templated.json"
|
||||
],
|
||||
"comment": "Besides the PodManager, also exports a RouterRule that will need to be added to a RoutingStore.",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Generates pods based on config templates and stores the results in the correct places",
|
||||
"@id": "urn:solid-server:default:PodManager",
|
||||
"@type": "ConfigPodManager",
|
||||
"idGenerator": { "@id": "urn:solid-server:default:IdentifierGenerator" },
|
||||
"podGenerator": { "@id": "urn:solid-server:default:PodGenerator" },
|
||||
"routingStorage": { "@id": "urn:solid-server:default:PodRoutingStorage" },
|
||||
"resourcesGenerator": { "@id": "urn:solid-server:default:ResourcesGenerator" }
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "Router rule responsible for handling dynamic pod routing. Needs to be used by RoutingResourceStore.",
|
||||
"@id": "urn:solid-server:default:RouterRule",
|
||||
"@type": "BaseUrlRouterRule",
|
||||
"stores": { "@id": "urn:solid-server:default:PodRoutingStorage" }
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "Add to the list of initializers.",
|
||||
"@id": "urn:solid-server:default:ParallelInitializer",
|
||||
"ParallelHandler:_handlers": [
|
||||
{
|
||||
"comment": "Initializer that instantiates all the dynamic pods.",
|
||||
"@type": "ConfigPodInitializer",
|
||||
"storeFactory": { "@type": "BaseComponentsJsFactory" },
|
||||
"configStorage": { "@id": "urn:solid-server:default:PodConfigurationStorage" },
|
||||
"routingStorage": { "@id": "urn:solid-server:default:PodRoutingStorage" }
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "Everything below is used for storing pod settings."
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "This is where the pod configurations will be stored.",
|
||||
"@id": "urn:solid-server:default:PodConfigurationStorage",
|
||||
"@type": "JsonFileStorage",
|
||||
"filePath": { "@id": "urn:solid-server:default:variable:podConfigJson" },
|
||||
"locker": { "@id": "urn:solid-server:default:ResourceLocker" }
|
||||
},
|
||||
|
||||
{
|
||||
"comment": "This is where instantiated pods will be stored.",
|
||||
"@id": "urn:solid-server:default:PodRoutingStorage",
|
||||
"@type": "MemoryMapStorage"
|
||||
}
|
||||
]
|
||||
}
|
15
config/pod/handler/http/manager.json
Normal file
15
config/pod/handler/http/manager.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "The main entry point into pod provisioning.",
|
||||
"@id": "urn:solid-server:default:PodManagerHandler",
|
||||
"@type": "PodManagerHttpHandler",
|
||||
"args_requestPath": "/pods",
|
||||
"args_requestParser": { "@id": "urn:solid-server:default:RequestParser" },
|
||||
"args_podSettingsParser": { "@type": "PodSettingsJsonParser" },
|
||||
"args_manager": { "@id": "urn:solid-server:default:PodManager" },
|
||||
"args_responseWriter": { "@id": "urn:solid-server:default:ResponseWriter" }
|
||||
}
|
||||
]
|
||||
}
|
22
config/pod/handler/pod-generators/templated.json
Normal file
22
config/pod/handler/pod-generators/templated.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Generates ResourceStores that correspond to new pods.",
|
||||
"@id": "urn:solid-server:default:PodGenerator",
|
||||
"@type": "TemplatedPodGenerator",
|
||||
"storeFactory": { "@type": "BaseComponentsJsFactory" },
|
||||
"variableHandler": {
|
||||
"@type": "ParallelHandler",
|
||||
"handlers": [
|
||||
{ "@type": "BaseUrlHandler" },
|
||||
{
|
||||
"@type": "RootFilePathHandler",
|
||||
"fileMapper": { "@id": "urn:solid-server:default:FileIdentifierMapper" }
|
||||
}
|
||||
]
|
||||
},
|
||||
"configStorage": { "@id": "urn:solid-server:default:PodConfigurationStorage" }
|
||||
}
|
||||
]
|
||||
}
|
17
config/pod/handler/resource-generators/templated.json
Normal file
17
config/pod/handler/resource-generators/templated.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Generates resources based on the templates stored in the template folder.",
|
||||
"@id": "urn:solid-server:default:ResourcesGenerator",
|
||||
"@type": "TemplatedResourcesGenerator",
|
||||
"templateFolder": "$PACKAGE_ROOT/templates/pod",
|
||||
"factory": {
|
||||
"@type": "ExtensionBasedMapperFactory"
|
||||
},
|
||||
"engine": {
|
||||
"@type": "HandlebarsTemplateEngine"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
23
config/pod/handler/static.json
Normal file
23
config/pod/handler/static.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/pod/handler/http/manager.json",
|
||||
"files-scs:config/pod/handler/resource-generators/templated.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Stores all new resources for a pod in the default resource store under the generated identifier.",
|
||||
"@id": "urn:solid-server:default:PodManager",
|
||||
"@type": "GeneratedPodManager",
|
||||
"store": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
},
|
||||
"idGenerator": {
|
||||
"@id": "urn:solid-server:default:IdentifierGenerator"
|
||||
},
|
||||
"resourcesGenerator": {
|
||||
"@id": "urn:solid-server:default:ResourcesGenerator"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:AclIdentifierStrategy",
|
||||
"@type": "SuffixAuxiliaryIdentifierStrategy",
|
||||
"suffix": ".acl"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:AclStrategy",
|
||||
"@type": "ComposedAuxiliaryStrategy",
|
||||
"identifierStrategy": {
|
||||
"@id": "urn:solid-server:default:AclIdentifierStrategy"
|
||||
},
|
||||
"metadataGenerator": {
|
||||
"@type": "LinkMetadataGenerator",
|
||||
"link": "http://www.w3.org/ns/auth/acl#accessControl",
|
||||
"identifierStrategy": {
|
||||
"@id": "urn:solid-server:default:AclIdentifierStrategy"
|
||||
}
|
||||
},
|
||||
"validator": {
|
||||
"@id": "urn:solid-server:default:RdfValidator"
|
||||
},
|
||||
"isRootRequired": true
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:AclBasedAuthorizer",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"comment": "This authorizer makes sure that for auxiliary resources, the main authorizer gets called with the associated identifier.",
|
||||
"@type": "AuxiliaryAuthorizer",
|
||||
"resourceAuthorizer": {
|
||||
"@id": "urn:solid-server:default:WebAclAuthorizer"
|
||||
},
|
||||
"auxStrategy": {
|
||||
"@id": "urn:solid-server:default:AuxiliaryStrategy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:WebAclAuthorizer"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:WebAclAuthorizer",
|
||||
"@type": "WebAclAuthorizer",
|
||||
"aclStrategy": {
|
||||
"@id": "urn:solid-server:default:AclIdentifierStrategy"
|
||||
},
|
||||
"resourceStore": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
},
|
||||
"identifierStrategy": {
|
||||
"@id": "urn:solid-server:default:IdentifierStrategy"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:ServerFactory",
|
||||
"@type": "WebSocketServerFactory",
|
||||
"baseServerFactory": {
|
||||
"@id": "urn:solid-server:default:HttpServerFactory"
|
||||
},
|
||||
"webSocketHandler": {
|
||||
"@id": "urn:solid-server:default:WebSocketHandler"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:HttpServerFactory",
|
||||
"@type": "BaseHttpServerFactory",
|
||||
"handler": {
|
||||
"@id": "urn:solid-server:default:HttpHandler"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:HttpHandler",
|
||||
"@type": "SequenceHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:Middleware"
|
||||
},
|
||||
{
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:CommonAssetHandler"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:StaticAssetHandler"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:PodManagerHandler"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdentityProviderHandler"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:LdpHandler"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:CommonAssetHandler",
|
||||
"@type": "StaticAssetHandler",
|
||||
"comment": "Serves the favicon and the idp css",
|
||||
"assets": [
|
||||
{
|
||||
"StaticAssetHandler:_assets_key": "/favicon.ico",
|
||||
"StaticAssetHandler:_assets_value": "$PACKAGE_ROOT/templates/root/favicon.ico"
|
||||
},
|
||||
{
|
||||
"StaticAssetHandler:_assets_key": "/idp/style.css",
|
||||
"StaticAssetHandler:_assets_value": "$PACKAGE_ROOT/templates/views/email-password-interaction/main.css"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdentifierStrategy",
|
||||
"@type": "SubdomainIdentifierStrategy",
|
||||
"baseUrl": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdentifierGenerator",
|
||||
"@type": "SubdomainIdentifierGenerator",
|
||||
"baseUrl": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdentifierStrategy",
|
||||
"@type": "SingleRootIdentifierStrategy",
|
||||
"baseUrl": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdentifierGenerator",
|
||||
"@type": "SuffixIdentifierGenerator",
|
||||
"base": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,84 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdpStorage",
|
||||
"@type": "JsonResourceStorage",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
},
|
||||
"baseUrl": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
},
|
||||
"container": "/idp/data/"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:ExpiringIdpStorage",
|
||||
"@type": "WrappedExpiringStorage",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:IdpStorage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdpAdapterFactory",
|
||||
"@type": "WrappedFetchAdapterFactory",
|
||||
"source": {
|
||||
"@type": "ExpiringAdapterFactory",
|
||||
"args_storageName": "/idp/oidc",
|
||||
"args_storage": {
|
||||
"@id": "urn:solid-server:default:ExpiringIdpStorage"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdpConfigurationFactory",
|
||||
"@type": "KeyConfigurationFactory",
|
||||
"adapterFactory": {
|
||||
"@id": "urn:solid-server:default:IdpAdapterFactory"
|
||||
},
|
||||
"baseUrl": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
},
|
||||
"idpPath": "/idp",
|
||||
"storage": {
|
||||
"@id": "urn:solid-server:default:IdpStorage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdentityProviderFactory",
|
||||
"@type": "IdentityProviderFactory",
|
||||
"issuer": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
},
|
||||
"configurationFactory": {
|
||||
"@id": "urn:solid-server:default:IdpConfigurationFactory"
|
||||
},
|
||||
"errorResponseWriter": {
|
||||
"@type": "ErrorResponseWriter"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdentityProviderHttpHandler",
|
||||
"@type": "IdentityProviderHttpHandler",
|
||||
"providerFactory": {
|
||||
"@id": "urn:solid-server:default:IdentityProviderFactory"
|
||||
},
|
||||
"interactionPolicy": {
|
||||
"@id": "urn:solid-server:auth:password:AccountInteractionPolicy"
|
||||
},
|
||||
"interactionHttpHandler": {
|
||||
"@id": "urn:solid-server:auth:password:InteractionHttpHandler"
|
||||
},
|
||||
"errorResponseWriter": {
|
||||
"@type": "ErrorResponseWriter"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:IdentityProviderHandler",
|
||||
"@type": "RouterHandler",
|
||||
"allowedMethods": [ "GET", "POST", "PUT", "DELETE", "OPTIONS" ],
|
||||
"allowedPathNames": [ "^/idp/.*", "^/\\.well-known/openid-configuration" ],
|
||||
"handler": { "@id": "urn:solid-server:default:IdentityProviderHttpHandler" }
|
||||
}
|
||||
]
|
||||
}
|
@ -1,224 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "The storage adapter that persists usernames, passwords, etc.",
|
||||
"@id": "urn:solid-server:auth:password:AccountStore",
|
||||
"@type": "BaseAccountStore",
|
||||
"args_storageName": "/idp/email-password-db",
|
||||
"args_saltRounds": 10,
|
||||
"args_storage": {
|
||||
"@id": "urn:solid-server:default:IdpStorage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Responsible for completing an OIDC interaction after login or registration",
|
||||
"@id": "urn:solid-server:auth:password:InteractionCompleter",
|
||||
"@type": "InteractionCompleter"
|
||||
},
|
||||
{
|
||||
"comment": "Renders the login page",
|
||||
"@id": "urn:solid-server:auth:password:LoginRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": {
|
||||
"@id": "urn:solid-server:default:variable:idpTemplateFolder"
|
||||
},
|
||||
"templateFile": "./email-password-interaction/login.ejs"
|
||||
},
|
||||
{
|
||||
"comment": "Renders the register page",
|
||||
"@id": "urn:solid-server:auth:password:RegisterRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": {
|
||||
"@id": "urn:solid-server:default:variable:idpTemplateFolder"
|
||||
},
|
||||
"templateFile": "./email-password-interaction/register.ejs"
|
||||
},
|
||||
{
|
||||
"comment": "Renders the forgot password page",
|
||||
"@id": "urn:solid-server:auth:password:ForgotPasswordRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": {
|
||||
"@id": "urn:solid-server:default:variable:idpTemplateFolder"
|
||||
},
|
||||
"templateFile": "./email-password-interaction/forgotPassword.ejs"
|
||||
},
|
||||
{
|
||||
"comment": "Renders the reset password page",
|
||||
"@id": "urn:solid-server:auth:password:ResetPasswordRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": {
|
||||
"@id": "urn:solid-server:default:variable:idpTemplateFolder"
|
||||
},
|
||||
"templateFile": "./email-password-interaction/resetPassword.ejs"
|
||||
},
|
||||
{
|
||||
"comment": "Renders the Email Sent message page",
|
||||
"@id": "urn:solid-server:auth:password:EmailSentRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": {
|
||||
"@id": "urn:solid-server:default:variable:idpTemplateFolder"
|
||||
},
|
||||
"templateFile": "./email-password-interaction/emailSent.ejs"
|
||||
},
|
||||
{
|
||||
"comment": "Renders a generic page that says a message",
|
||||
"@id": "urn:solid-server:auth:password:MessageRenderHandler",
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": {
|
||||
"@id": "urn:solid-server:default:variable:idpTemplateFolder"
|
||||
},
|
||||
"templateFile": "./email-password-interaction/message.ejs"
|
||||
},
|
||||
{
|
||||
"comment": "Http handler to take care of all routing on for the email password interaction",
|
||||
"@id": "urn:solid-server:auth:password:InteractionHttpHandler",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"comment": "Handles the initial route when the user is directed from their app to the IdP",
|
||||
"@type": "RouterHandler",
|
||||
"allowedMethods": [ "GET" ],
|
||||
"allowedPathNames": [ "^/idp/interaction/[-_A-Za-z0-9]+/?$" ],
|
||||
"handler": {
|
||||
"@type": "InitialInteractionHandler",
|
||||
"renderHandlerMap": [
|
||||
{
|
||||
"InitialInteractionHandler:_renderHandlerMap_key": "consent",
|
||||
"InitialInteractionHandler:_renderHandlerMap_value": {
|
||||
"@type": "RenderEjsHandler",
|
||||
"templatePath": {
|
||||
"@id": "urn:solid-server:default:variable:idpTemplateFolder"
|
||||
},
|
||||
"templateFile": "./email-password-interaction/confirm.ejs"
|
||||
}
|
||||
}
|
||||
],
|
||||
"renderHandlerMap_default": {
|
||||
"@id": "urn:solid-server:auth:password:LoginRenderHandler"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Handles all functionality on the register page",
|
||||
"@type": "IdpRouteController",
|
||||
"pathName": "^/idp/interaction/[-_A-Za-z0-9]+/register/?$",
|
||||
"postHandler": {
|
||||
"@type": "RegistrationHandler",
|
||||
"args_ownershipValidator": {
|
||||
"@type": "IssuerOwnershipValidator",
|
||||
"issuer": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
}
|
||||
},
|
||||
"args_accountStore": {
|
||||
"@id": "urn:solid-server:auth:password:AccountStore"
|
||||
},
|
||||
"args_interactionCompleter": {
|
||||
"@id": "urn:solid-server:auth:password:InteractionCompleter"
|
||||
}
|
||||
},
|
||||
"renderHandler": {
|
||||
"@id": "urn:solid-server:auth:password:RegisterRenderHandler"
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Handles all functionality on the Login Page",
|
||||
"@type": "IdpRouteController",
|
||||
"pathName": "^/idp/interaction/[-_A-Za-z0-9]+/login/?$",
|
||||
"postHandler": {
|
||||
"@type": "LoginHandler",
|
||||
"args_accountStore": {
|
||||
"@id": "urn:solid-server:auth:password:AccountStore"
|
||||
},
|
||||
"args_interactionCompleter": {
|
||||
"@id": "urn:solid-server:auth:password:InteractionCompleter"
|
||||
}
|
||||
},
|
||||
"renderHandler": {
|
||||
"@id": "urn:solid-server:auth:password:LoginRenderHandler"
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Handles confirm requests",
|
||||
"@type": "RouterHandler",
|
||||
"allowedMethods": [ "POST" ],
|
||||
"allowedPathNames": [ "^/idp/interaction/[-_A-Za-z0-9]+/confirm/?$" ],
|
||||
"handler": {
|
||||
"@type": "SessionHttpHandler",
|
||||
"interactionCompleter": {
|
||||
"@id": "urn:solid-server:auth:password:InteractionCompleter"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Handles all functionality on the forgot password page",
|
||||
"@type": "IdpRouteController",
|
||||
"pathName": "^/idp/interaction/[-_A-Za-z0-9]+/forgotpassword/?$",
|
||||
"postHandler": {
|
||||
"@type": "ForgotPasswordHandler",
|
||||
"args_messageRenderHandler": {
|
||||
"@id": "urn:solid-server:auth:password:EmailSentRenderHandler"
|
||||
},
|
||||
"args_accountStore": {
|
||||
"@id": "urn:solid-server:auth:password:AccountStore"
|
||||
},
|
||||
"args_baseUrl": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
},
|
||||
"args_idpPath": "/idp",
|
||||
"args_emailTemplateRenderer": {
|
||||
"@type": "EjsTemplateRenderer",
|
||||
"templatePath": {
|
||||
"@id": "urn:solid-server:default:variable:idpTemplateFolder"
|
||||
},
|
||||
"templateFile": "./email-password-interaction/resetPasswordEmail.ejs"
|
||||
},
|
||||
"args_emailSender": {
|
||||
"@id": "urn:solid-server:default:EmailSender"
|
||||
}
|
||||
},
|
||||
"renderHandler": {
|
||||
"@id": "urn:solid-server:auth:password:ForgotPasswordRenderHandler"
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Renders the reset password page",
|
||||
"@type": "RouterHandler",
|
||||
"allowedMethods": [ "GET" ],
|
||||
"allowedPathNames": [ "^/idp/resetpassword/?$" ],
|
||||
"handler": {
|
||||
"@type": "ResetPasswordViewHandler",
|
||||
"renderHandler": {
|
||||
"@id": "urn:solid-server:auth:password:ResetPasswordRenderHandler"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Handles the reset password page submission",
|
||||
"@type": "RouterHandler",
|
||||
"allowedMethods": [ "POST" ],
|
||||
"allowedPathNames": [ "^/idp/resetpassword/?$" ],
|
||||
"handler": {
|
||||
"@type": "ResetPasswordHandler",
|
||||
"args_accountStore": {
|
||||
"@id": "urn:solid-server:auth:password:AccountStore"
|
||||
},
|
||||
"args_renderHandler": {
|
||||
"@id": "urn:solid-server:auth:password:ResetPasswordRenderHandler"
|
||||
},
|
||||
"args_messageRenderHandler": {
|
||||
"@id": "urn:solid-server:auth:password:MessageRenderHandler"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Sets up the email password interaction policy",
|
||||
"@id": "urn:solid-server:auth:password:AccountInteractionPolicy",
|
||||
"@type": "AccountInteractionPolicy",
|
||||
"idpPath": "/idp"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:Initializer",
|
||||
"@type": "SequenceHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:LoggerInitializer",
|
||||
"@type": "LoggerInitializer",
|
||||
"loggerFactory": {
|
||||
"@id": "urn:solid-server:default:LoggerFactory"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:RootContainerInitializer",
|
||||
"@type": "RootContainerInitializer",
|
||||
"settings_store": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
},
|
||||
"settings_baseUrl": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:AclInitializer",
|
||||
"@type": "AclInitializer",
|
||||
"settings_store": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
},
|
||||
"settings_aclStrategy": {
|
||||
"@id": "urn:solid-server:default:AclIdentifierStrategy"
|
||||
},
|
||||
"settings_baseUrl": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:ServerInitializer",
|
||||
"@type": "ServerInitializer",
|
||||
"serverFactory": {
|
||||
"@id": "urn:solid-server:default:ServerFactory"
|
||||
},
|
||||
"port": {
|
||||
"@id": "urn:solid-server:default:variable:port"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:LdpHandler",
|
||||
"@type": "AuthenticatedLdpHandler",
|
||||
"args_requestParser": {
|
||||
"@id": "urn:solid-server:default:RequestParser"
|
||||
},
|
||||
"args_credentialsExtractor": {
|
||||
"@id": "urn:solid-server:default:CredentialsExtractor"
|
||||
},
|
||||
"args_permissionsExtractor": {
|
||||
"@id": "urn:solid-server:default:PermissionsExtractor"
|
||||
},
|
||||
"args_authorizer": {
|
||||
"@id": "urn:solid-server:default:AclBasedAuthorizer"
|
||||
},
|
||||
"args_operationHandler": {
|
||||
"@id": "urn:solid-server:default:OperationHandler"
|
||||
},
|
||||
"args_responseWriter": {
|
||||
"@id": "urn:solid-server:default:ResponseWriter"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:RequestParser",
|
||||
"@type": "BasicRequestParser",
|
||||
"args_targetExtractor": {
|
||||
"@id": "urn:solid-server:default:TargetExtractor"
|
||||
},
|
||||
"args_preferenceParser": {
|
||||
"@type": "AcceptPreferenceParser"
|
||||
},
|
||||
"args_metadataParser": {
|
||||
"@id": "urn:solid-server:default:MetadataParser"
|
||||
},
|
||||
"args_bodyParser": {
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@type": "SparqlUpdateBodyParser"
|
||||
},
|
||||
{
|
||||
"@type": "RawBodyParser"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:TargetExtractor",
|
||||
"@type": "OriginalUrlExtractor",
|
||||
"options_includeQueryString": false
|
||||
}
|
||||
]
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:MetadataSerializer",
|
||||
"@type": "ParallelHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@type": "ConstantMetadataWriter",
|
||||
"headers": [
|
||||
{
|
||||
"ConstantMetadataWriter:_headers_key": "Accept-Patch",
|
||||
"ConstantMetadataWriter:_headers_value": "application/sparql-update"
|
||||
},
|
||||
{
|
||||
"ConstantMetadataWriter:_headers_key": "MS-Author-Via",
|
||||
"ConstantMetadataWriter:_headers_value": "SPARQL"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"@type": "MappedMetadataWriter",
|
||||
"headerMap": [
|
||||
{
|
||||
"MappedMetadataWriter:_headerMap_key": "http://www.w3.org/ns/ma-ont#format",
|
||||
"MappedMetadataWriter:_headerMap_value": "Content-Type"
|
||||
},
|
||||
{
|
||||
"MappedMetadataWriter:_headerMap_key": "urn:solid:http:location",
|
||||
"MappedMetadataWriter:_headerMap_value": "Location"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"@type": "LinkRelMetadataWriter",
|
||||
"linkRelMap": [
|
||||
{
|
||||
"LinkRelMetadataWriter:_linkRelMap_key": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
|
||||
"LinkRelMetadataWriter:_linkRelMap_value": "type"
|
||||
},
|
||||
{
|
||||
"LinkRelMetadataWriter:_linkRelMap_key": "http://www.w3.org/ns/auth/acl#accessControl",
|
||||
"LinkRelMetadataWriter:_linkRelMap_value": "acl"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"@type": "WacAllowMetadataWriter"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:ResponseWriter",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@type": "ErrorResponseWriter"
|
||||
},
|
||||
{
|
||||
"@type": "BasicResponseWriter",
|
||||
"metadataWriter": {
|
||||
"@id": "urn:solid-server:default:MetadataSerializer"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:WebSocketHandler",
|
||||
"@type": "UnsecureWebSocketsProtocol",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:Middleware",
|
||||
"@type": "SequenceHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@type": "HeaderHandler",
|
||||
"headers": [
|
||||
{
|
||||
"HeaderHandler:_headers_key": "Vary",
|
||||
"HeaderHandler:_headers_value": "Accept,Authorization,Origin"
|
||||
},
|
||||
{
|
||||
"HeaderHandler:_headers_key": "X-Powered-By",
|
||||
"HeaderHandler:_headers_value": "Community Solid Server"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"@type": "WebSocketAdvertiser",
|
||||
"baseUrl": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "CorsHandler",
|
||||
"options_methods": [
|
||||
"GET",
|
||||
"HEAD",
|
||||
"OPTIONS",
|
||||
"POST",
|
||||
"PUT",
|
||||
"PATCH",
|
||||
"DELETE"
|
||||
],
|
||||
"options_credentials": true,
|
||||
"options_exposedHeaders": [
|
||||
"Accept-Patch",
|
||||
"Location",
|
||||
"MS-Author-Via",
|
||||
"Updates-Via"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,140 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Sets up all the classes that are specifically necessary for dynamic pod generation."
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:PodConfigurationStorage",
|
||||
"@type": "JsonFileStorage",
|
||||
"filePath": {
|
||||
"@id": "urn:solid-server:default:variable:podConfigJson"
|
||||
},
|
||||
"locker": {
|
||||
"@id": "urn:solid-server:default:ResourceLocker"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:PodRoutingStorage",
|
||||
"@type": "MemoryMapStorage"
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:StoreFactory",
|
||||
"@type": "BaseComponentsJsFactory"
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:PodGenerator",
|
||||
"@type": "TemplatedPodGenerator",
|
||||
"storeFactory": {
|
||||
"@id": "urn:solid-server:default:StoreFactory"
|
||||
},
|
||||
"variableHandler": {
|
||||
"@type": "ParallelHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@type": "BaseUrlHandler"
|
||||
},
|
||||
{
|
||||
"@type": "RootFilePathHandler",
|
||||
"fileMapper": {
|
||||
"@type": "ExtensionBasedMapper",
|
||||
"base": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
},
|
||||
"rootFilepath": {
|
||||
"@id": "urn:solid-server:default:variable:rootFilePath"
|
||||
},
|
||||
"overrideTypes_acl": "text/turtle",
|
||||
"overrideTypes_meta": "text/turtle"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"configStorage": {
|
||||
"@id": "urn:solid-server:default:PodConfigurationStorage"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:PodManager",
|
||||
"@type": "ConfigPodManager",
|
||||
"idGenerator": {
|
||||
"@type": "SuffixIdentifierGenerator",
|
||||
"base": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
}
|
||||
},
|
||||
"podGenerator": {
|
||||
"@id": "urn:solid-server:default:PodGenerator"
|
||||
},
|
||||
"routingStorage": {
|
||||
"@id": "urn:solid-server:default:PodRoutingStorage"
|
||||
},
|
||||
"resourcesGenerator": {
|
||||
"@id": "urn:solid-server:default:ResourcesGenerator",
|
||||
"@type": "TemplatedResourcesGenerator",
|
||||
"templateFolder": "$PACKAGE_ROOT/templates/pod",
|
||||
"factory": {
|
||||
"@type": "ExtensionBasedMapperFactory"
|
||||
},
|
||||
"engine": {
|
||||
"@type": "HandlebarsTemplateEngine"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:PodManagerHandler",
|
||||
"@type": "PodManagerHttpHandler",
|
||||
"args_requestPath": "/pods",
|
||||
"args_requestParser": {
|
||||
"@id": "urn:solid-server:default:RequestParser"
|
||||
},
|
||||
"args_podSettingsParser": {
|
||||
"@type": "PodSettingsJsonParser"
|
||||
},
|
||||
"args_manager": {
|
||||
"@id": "urn:solid-server:default:PodManager"
|
||||
},
|
||||
"args_responseWriter": {
|
||||
"@id": "urn:solid-server:default:ResponseWriter"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:Initializer",
|
||||
"comment": "Add entry to initializer list",
|
||||
"SequenceHandler:_handlers": {
|
||||
"@type": "ConfigPodInitializer",
|
||||
"storeFactory": {
|
||||
"@id": "urn:solid-server:default:StoreFactory"
|
||||
},
|
||||
"configStorage": {
|
||||
"@id": "urn:solid-server:default:PodConfigurationStorage"
|
||||
},
|
||||
"routingStorage": {
|
||||
"@id": "urn:solid-server:default:PodRoutingStorage"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:BaseUrlRouterRule",
|
||||
"@type": "BaseUrlRouterRule",
|
||||
"stores": {
|
||||
"@id": "urn:solid-server:default:PodRoutingStorage"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:RoutingResourceStore",
|
||||
"@type": "RoutingResourceStore",
|
||||
"rule": {
|
||||
"@id": "urn:solid-server:default:BaseUrlRouterRule"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:ResourcesGenerator",
|
||||
"@type": "TemplatedResourcesGenerator",
|
||||
"templateFolder": "$PACKAGE_ROOT/templates/pod",
|
||||
"factory": {
|
||||
"@type": "ExtensionBasedMapperFactory"
|
||||
},
|
||||
"engine": {
|
||||
"@type": "HandlebarsTemplateEngine"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:PodManager",
|
||||
"@type": "GeneratedPodManager",
|
||||
"store": {
|
||||
"@id": "urn:solid-server:default:ResourceStore"
|
||||
},
|
||||
"idGenerator": {
|
||||
"@id": "urn:solid-server:default:IdentifierGenerator"
|
||||
},
|
||||
"resourcesGenerator": {
|
||||
"@id": "urn:solid-server:default:ResourcesGenerator"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:PodManagerHandler",
|
||||
"@type": "PodManagerHttpHandler",
|
||||
"args_requestPath": "/pods",
|
||||
"args_requestParser": {
|
||||
"@id": "urn:solid-server:default:RequestParser"
|
||||
},
|
||||
"args_podSettingsParser": {
|
||||
"@type": "PodSettingsJsonParser"
|
||||
},
|
||||
"args_manager": {
|
||||
"@id": "urn:solid-server:default:PodManager"
|
||||
},
|
||||
"args_responseWriter": {
|
||||
"@id": "urn:solid-server:default:ResponseWriter"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,108 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:RdfToQuadConverter",
|
||||
"@type": "RdfToQuadConverter"
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:QuadToRdfConverter",
|
||||
"@type": "QuadToRdfConverter",
|
||||
"options_outputPreferences": [
|
||||
{
|
||||
"QuadToRdfConverter:_options_outputPreferences_key": "text/turtle",
|
||||
"QuadToRdfConverter:_options_outputPreferences_value": 1
|
||||
},
|
||||
{
|
||||
"QuadToRdfConverter:_options_outputPreferences_key": "application/n-triples",
|
||||
"QuadToRdfConverter:_options_outputPreferences_value": 0.95
|
||||
},
|
||||
{
|
||||
"QuadToRdfConverter:_options_outputPreferences_key": "application/trig",
|
||||
"QuadToRdfConverter:_options_outputPreferences_value": 0.95
|
||||
},
|
||||
{
|
||||
"QuadToRdfConverter:_options_outputPreferences_key": "application/n-quads",
|
||||
"QuadToRdfConverter:_options_outputPreferences_value": 0.95
|
||||
},
|
||||
{
|
||||
"QuadToRdfConverter:_options_outputPreferences_key": "text/n3",
|
||||
"QuadToRdfConverter:_options_outputPreferences_value": 0.95
|
||||
},
|
||||
{
|
||||
"QuadToRdfConverter:_options_outputPreferences_key": "application/ld+json",
|
||||
"QuadToRdfConverter:_options_outputPreferences_value": 0.8
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:ContentTypeReplacer",
|
||||
"@type": "ContentTypeReplacer",
|
||||
"replacements": [
|
||||
{
|
||||
"ContentTypeReplacer:_replacements_key": "application/n-triples",
|
||||
"ContentTypeReplacer:_replacements_value": "text/turtle"
|
||||
},
|
||||
{
|
||||
"ContentTypeReplacer:_replacements_key": "text/turtle",
|
||||
"ContentTypeReplacer:_replacements_value": "application/trig"
|
||||
},
|
||||
{
|
||||
"ContentTypeReplacer:_replacements_key": "application/ld+json",
|
||||
"ContentTypeReplacer:_replacements_value": "application/json"
|
||||
},
|
||||
{
|
||||
"ContentTypeReplacer:_replacements_key": "application/*",
|
||||
"ContentTypeReplacer:_replacements_value": "application/octet-stream"
|
||||
},
|
||||
{
|
||||
"ContentTypeReplacer:_replacements_key": "text/*",
|
||||
"ContentTypeReplacer:_replacements_value": "application/octet-stream"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:RdfRepresentationConverter",
|
||||
"@type": "ChainedConverter",
|
||||
"converters": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:RdfToQuadConverter"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:QuadToRdfConverter"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:RepresentationConverter",
|
||||
"@type": "WaterfallHandler",
|
||||
"handlers": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:IndexConverter"
|
||||
},
|
||||
{
|
||||
"@type": "IfNeededConverter",
|
||||
"comment": "Only continue converting if the requester cannot accept the available content type"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:ContentTypeReplacer"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:RdfRepresentationConverter"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:RdfValidator",
|
||||
"@type": "RdfValidator",
|
||||
"converter": {
|
||||
"@id": "urn:solid-server:default:RepresentationConverter"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,96 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:ResourceStore",
|
||||
"@type": "MonitoringStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:ResourceStore_Locking"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:AuxiliaryStrategy",
|
||||
"@type": "RoutingAuxiliaryStrategy",
|
||||
"sources": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:AclStrategy"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:ResourceStore_Locking",
|
||||
"@type": "LockingResourceStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:ResourceStore_Patching"
|
||||
},
|
||||
"locks": {
|
||||
"@id": "urn:solid-server:default:ResourceLocker"
|
||||
},
|
||||
"strategy": {
|
||||
"@id": "urn:solid-server:default:AuxiliaryStrategy"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:ResourceStore_Patching",
|
||||
"@type": "PatchingStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:ResourceStore_Converting"
|
||||
},
|
||||
"patcher": {
|
||||
"@id": "urn:solid-server:default:PatchHandler",
|
||||
"@type": "SparqlUpdatePatchHandler",
|
||||
"converter": {
|
||||
"@id": "urn:solid-server:default:RepresentationConverter"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:ResourceLocker",
|
||||
"@type": "WrappedExpiringReadWriteLocker",
|
||||
"locker": {
|
||||
"@type": "GreedyReadWriteLocker",
|
||||
"locker": {
|
||||
"@type": "SingleThreadedResourceLocker"
|
||||
},
|
||||
"storage": {
|
||||
"@type": "MemoryMapStorage"
|
||||
},
|
||||
"suffixes_count": "count",
|
||||
"suffixes_read": "read",
|
||||
"suffixes_write": "write"
|
||||
},
|
||||
"expiration": 3000
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:ResourceStore_ToTurtle",
|
||||
"@type": "RepresentationConvertingStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:RoutingResourceStore"
|
||||
},
|
||||
"options_outConverter": {
|
||||
"@id": "urn:solid-server:default:RepresentationConverter"
|
||||
},
|
||||
"options_inConverter": {
|
||||
"@id": "urn:solid-server:default:RepresentationConverter"
|
||||
},
|
||||
"options_inType": "text/turtle"
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:ResourceStore_Converting",
|
||||
"@type": "RepresentationConvertingStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:RoutingResourceStore"
|
||||
},
|
||||
"options_outConverter": {
|
||||
"@id": "urn:solid-server:default:RepresentationConverter"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:FileIdentifierMapper",
|
||||
"@type": "SubdomainExtensionBasedMapper",
|
||||
"base": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
},
|
||||
"rootFilepath": {
|
||||
"@id": "urn:solid-server:default:variable:rootFilePath"
|
||||
},
|
||||
"baseSubdomain": "www",
|
||||
"overrideTypes_acl": "text/turtle",
|
||||
"overrideTypes_meta": "text/turtle"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:FileDataAccessor",
|
||||
"@type": "FileDataAccessor",
|
||||
"resourceMapper": {
|
||||
"@id": "urn:solid-server:default:FileIdentifierMapper"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:FileResourceStore",
|
||||
"@type": "DataAccessorBasedStore",
|
||||
"accessor": {
|
||||
"@id": "urn:solid-server:default:FileDataAccessor"
|
||||
},
|
||||
"identifierStrategy": {
|
||||
"@id": "urn:solid-server:default:IdentifierStrategy"
|
||||
},
|
||||
"auxiliaryStrategy": {
|
||||
"@id": "urn:solid-server:default:AuxiliaryStrategy"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:FileIdentifierMapper",
|
||||
"@type": "ExtensionBasedMapper",
|
||||
"base": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
},
|
||||
"rootFilepath": {
|
||||
"@id": "urn:solid-server:default:variable:rootFilePath"
|
||||
},
|
||||
"overrideTypes_acl": "text/turtle",
|
||||
"overrideTypes_meta": "text/turtle"
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:FileDataAccessor",
|
||||
"@type": "FileDataAccessor",
|
||||
"resourceMapper": {
|
||||
"@id": "urn:solid-server:default:FileIdentifierMapper"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:FileResourceStore",
|
||||
"@type": "DataAccessorBasedStore",
|
||||
"accessor": {
|
||||
"@id": "urn:solid-server:default:FileDataAccessor"
|
||||
},
|
||||
"identifierStrategy": {
|
||||
"@id": "urn:solid-server:default:IdentifierStrategy"
|
||||
},
|
||||
"auxiliaryStrategy": {
|
||||
"@id": "urn:solid-server:default:AuxiliaryStrategy"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:MemoryDataAccessor",
|
||||
"@type": "InMemoryDataAccessor",
|
||||
"strategy": {
|
||||
"@id": "urn:solid-server:default:IdentifierStrategy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:MemoryResourceStore",
|
||||
"@type": "DataAccessorBasedStore",
|
||||
"accessor": {
|
||||
"@id": "urn:solid-server:default:MemoryDataAccessor"
|
||||
},
|
||||
"identifierStrategy": {
|
||||
"@id": "urn:solid-server:default:IdentifierStrategy"
|
||||
},
|
||||
"auxiliaryStrategy": {
|
||||
"@id": "urn:solid-server:default:AuxiliaryStrategy"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:SparqlDataAccessor",
|
||||
"@type": "SparqlDataAccessor",
|
||||
"endpoint": {
|
||||
"@id": "urn:solid-server:default:variable:sparqlEndpoint"
|
||||
},
|
||||
"identifierStrategy": {
|
||||
"@id": "urn:solid-server:default:IdentifierStrategy"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:DataAccessorBasedStore",
|
||||
"@type": "DataAccessorBasedStore",
|
||||
"accessor": {
|
||||
"@id": "urn:solid-server:default:SparqlDataAccessor"
|
||||
},
|
||||
"identifierStrategy": {
|
||||
"@id": "urn:solid-server:default:IdentifierStrategy"
|
||||
},
|
||||
"auxiliaryStrategy": {
|
||||
"@id": "urn:solid-server:default:AuxiliaryStrategy"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"@id": "urn:solid-server:default:SparqlResourceStore",
|
||||
"@type": "RepresentationConvertingStore",
|
||||
"source": {
|
||||
"@id": "urn:solid-server:default:DataAccessorBasedStore"
|
||||
},
|
||||
"options_inConverter": {
|
||||
"@id": "urn:solid-server:default:RepresentationConverter"
|
||||
},
|
||||
"options_inType": "internal/quads"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:PreferenceSupport",
|
||||
"@type": "PreferenceSupport",
|
||||
"type": "internal/quads",
|
||||
"converter": {
|
||||
"@id": "urn:solid-server:default:RepresentationConverter"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:ConvertingRouterRule",
|
||||
"@type": "ConvertingRouterRule",
|
||||
"store": {
|
||||
"@id": "urn:solid-server:default:SparqlResourceStore"
|
||||
},
|
||||
"supportChecker": {
|
||||
"@id": "urn:solid-server:default:PreferenceSupport"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:RoutingResourceStore",
|
||||
"@type": "RoutingResourceStore",
|
||||
"rule": {
|
||||
"@id": "urn:solid-server:default:ConvertingRouterRule"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"@id": "urn:solid-server:default:RegexRouterRule",
|
||||
"@type": "RegexRouterRule",
|
||||
"base": {
|
||||
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:RoutingResourceStore",
|
||||
"@type": "RoutingResourceStore",
|
||||
"rule": {
|
||||
"@id": "urn:solid-server:default:RegexRouterRule"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
33
config/sparql-endpoint.json
Normal file
33
config/sparql-endpoint.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/http/handler/default.json",
|
||||
"files-scs:config/http/middleware/websockets.json",
|
||||
"files-scs:config/http/server-factory/websockets.json",
|
||||
"files-scs:config/http/static/default.json",
|
||||
"files-scs:config/identity/handler/default.json",
|
||||
"files-scs:config/identity/email/default.json",
|
||||
"files-scs:config/init/handler/default.json",
|
||||
"files-scs:config/ldp/authentication/dpop-bearer.json",
|
||||
"files-scs:config/ldp/authorization/webacl.json",
|
||||
"files-scs:config/ldp/handler/default.json",
|
||||
"files-scs:config/ldp/metadata-parser/default.json",
|
||||
"files-scs:config/ldp/metadata-writer/default.json",
|
||||
"files-scs:config/ldp/permissions/acl.json",
|
||||
"files-scs:config/pod/handler/static.json",
|
||||
"files-scs:config/storage/key-value/memory.json",
|
||||
"files-scs:config/storage/resource-store/sparql.json",
|
||||
"files-scs:config/util/auxiliary/acl.json",
|
||||
"files-scs:config/util/identifiers/suffix.json",
|
||||
"files-scs:config/util/index/default.json",
|
||||
"files-scs:config/util/logging/winston.json",
|
||||
"files-scs:config/util/representation-conversion/default.json",
|
||||
"files-scs:config/util/resource-locker/memory.json",
|
||||
"files-scs:config/util/variables/default.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "A single-pod server that stores its resources in a SPARQL endpoint."
|
||||
}
|
||||
]
|
||||
}
|
19
config/storage/README.md
Normal file
19
config/storage/README.md
Normal file
@ -0,0 +1,19 @@
|
||||
# Storage
|
||||
Options related to how data and resources are stored.
|
||||
|
||||
## Key-Value
|
||||
Used by certain classes for internal storage.
|
||||
* *memory*: Store everything in memory.
|
||||
* *resource-store*: Store everything in a specific container in the resource store.
|
||||
|
||||
## Resource-Store
|
||||
The chain of ResourceStores that needs to be passed through before reaching the actual data.
|
||||
There is much variety possible here so chances are higher that a custom solution is needed here.
|
||||
Most configs here have the same default setup (Monitoring -> Locking -> Patching -> Converting)
|
||||
and only differ at the tail.
|
||||
* *dynamic*: The routing store used at the tail here is needed when using dynamic pod creation.
|
||||
* *file*: Default setup with a file backend.
|
||||
* *memory*: Default setup with a memory backend.
|
||||
* *regex*: Uses a different backend based on the container that is being used.
|
||||
* *sparql*: Default setup with a SPARQL endpoint backend.
|
||||
Also updates the converting store so all incoming data is transformed into quads.
|
10
config/storage/key-value/memory.json
Normal file
10
config/storage/key-value/memory.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Used for internal storage by some classes. This uses a memory based solution.",
|
||||
"@id": "urn:solid-server:default:Storage",
|
||||
"@type": "MemoryMapStorage"
|
||||
}
|
||||
]
|
||||
}
|
13
config/storage/key-value/resource-store.json
Normal file
13
config/storage/key-value/resource-store.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Used for internal storage by some classes. The specified container in the resource store will store internal data.",
|
||||
"@id": "urn:solid-server:default:Storage",
|
||||
"@type": "JsonResourceStorage",
|
||||
"source": { "@id": "urn:solid-server:default:ResourceStore" },
|
||||
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
|
||||
"container": "/storage/"
|
||||
}
|
||||
]
|
||||
}
|
11
config/storage/resource-store/data-accessors/file.json
Normal file
11
config/storage/resource-store/data-accessors/file.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Stores data on a file system.",
|
||||
"@id": "urn:solid-server:default:FileDataAccessor",
|
||||
"@type": "FileDataAccessor",
|
||||
"resourceMapper": { "@id": "urn:solid-server:default:FileIdentifierMapper" }
|
||||
}
|
||||
]
|
||||
}
|
11
config/storage/resource-store/data-accessors/memory.json
Normal file
11
config/storage/resource-store/data-accessors/memory.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Stores data in memory.",
|
||||
"@id": "urn:solid-server:default:MemoryDataAccessor",
|
||||
"@type": "InMemoryDataAccessor",
|
||||
"strategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Stores data on a SPARQL endpoint. Only supports quad object streams.",
|
||||
"@id": "urn:solid-server:default:SparqlDataAccessor",
|
||||
"@type": "SparqlDataAccessor",
|
||||
"endpoint": { "@id": "urn:solid-server:default:variable:sparqlEndpoint" },
|
||||
"identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }
|
||||
}
|
||||
]
|
||||
}
|
39
config/storage/resource-store/dynamic.json
Normal file
39
config/storage/resource-store/dynamic.json
Normal file
@ -0,0 +1,39 @@
|
||||
{
|
||||
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||
"import": [
|
||||
"files-scs:config/storage/resource-store/data-accessors/file.json",
|
||||
"files-scs:config/storage/resource-store/stores/converting.json",
|
||||
"files-scs:config/storage/resource-store/stores/data-accessor.json",
|
||||
"files-scs:config/storage/resource-store/stores/locking.json",
|
||||
"files-scs:config/storage/resource-store/stores/patching.json",
|
||||
"files-scs:config/storage/resource-store/stores/routing.json"
|
||||
],
|
||||
"@graph": [
|
||||
{
|
||||
"comment": "Setup when using dynamic pods.",
|
||||
"@id": "urn:solid-server:default:ResourceStore",
|
||||
"@type": "MonitoringStore",
|
||||
"MonitoringStore:_source": {
|
||||
"@id": "urn:solid-server:default:ResourceStore_Locking",
|
||||
"LockingResourceStore:_source": {
|
||||
"@id": "urn:solid-server:default:ResourceStore_Patching",
|
||||
"PatchingStore:_source": {
|
||||
"@id": "urn:solid-server:default:ResourceStore_Converting",
|
||||
"RepresentationConvertingStore:_source": {
|
||||
"@id": "urn:solid-server:default:ResourceStore_Routing",
|
||||
"comment": "A router rule will be defined when activating dynamic pods."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Which store to use for requests that do not match any pod, e.g. for storage.",
|
||||
"@id": "urn:solid-server:default:RouterRule",
|
||||
"BaseUrlRouterRule:_baseStore": {
|
||||
"@id": "urn:solid-server:default:ResourceStore_DataAccessor",
|
||||
"DataAccessorBasedStore:_accessor": { "@id": "urn:solid-server:default:FileDataAccessor" }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user