feat: Split preset configurations by feature

This commit is contained in:
Joachim Van Herwegen 2021-05-10 15:46:42 +02:00
parent fadbaefce2
commit 452032e312
151 changed files with 2361 additions and 2215 deletions

55
config/README.md Normal file
View 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.

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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" }
}
]
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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
View 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
View 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
View 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
View 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.

View 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" }
]
}
]
},
]
}

View 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" }
]
}
]
}
]
}

View 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"
}
]
}
]
}

View 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"
]
}
]
}

View 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" }
}
]
}

View 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" }
]
}
]
}

View 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"
}
]
}
]
}

View 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"
}
}
]
}

View 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" }
}
}
]
}

View 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
View 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.

View 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"
}
]
}

View 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" }
}
]
}

View 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" }
}
]
}

View 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"
}
]
}

View File

@ -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"
}
]
}

View 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" }
}
}
]
}

View 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"
}
]
}

View File

@ -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"
}
]
}

View File

@ -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"
}
]
}

View 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" }
}
}
]
}

View 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/"
}
]
}

View 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
View 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.

View 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" }
]
}
]
}

View 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" }
]
}
]
}

View 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"
}
}
]
}

View 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" }
}
]
}

View 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
View 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.

View 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" }
]
}
]
}

View 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"
}
]
}

View File

@ -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" }
]
}
]

View 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"
}
]
}

View 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"
}
}
]
}

View 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" }
}
]
}
]
}

View File

@ -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" }
}
]
}

View 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" }
]
}
}
]
}

View 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" }
}
]
}
]
}

View 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" }
}
]
}

View File

@ -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" }
]
}
]

View 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" }
]
}
]
}

View 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"
}
]
}
]
}

View 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"
}
]
}
]
}

View 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"
}
]
}
]
}

View 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"
}
]
}

View File

@ -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" }
]
}
]

View 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" }
]
}
]
}

View 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
View 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
View 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.

View 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"
}
]
}

View 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" }
}
]
}

View 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" }
}
]
}

View 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"
}
}
]
}

View 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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
]
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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" }
}
]
}

View File

@ -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"
}
]
}

View File

@ -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"
}
}
]
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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
}
]
}

View File

@ -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"
}
}
]
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
]
}
]
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
]
}

View File

@ -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"
}
}
]
}

View File

@ -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"
}
}
]
}

View 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
View 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.

View 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"
}
]
}

View 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/"
}
]
}

View 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" }
}
]
}

View 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" }
}
]
}

View File

@ -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" }
}
]
}

View 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