Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1622 commits
Select commit Hold shift + click to select a range
67e11c0
Regex match fix to account for the fact that SPARQL.js 2.x does *not*…
namedgraph Nov 13, 2024
264aba5
Debug RDF/XML data during `PATCH` request
namedgraph Nov 13, 2024
21adada
Added `s` flag to `matches()` and `regex` in order to allow newlines …
namedgraph Nov 13, 2024
5238b00
Fixing container mode for queries
namedgraph Nov 13, 2024
b1584ca
Pass `$block` to `ldh:RenderRow` instead of `$block-uri`
namedgraph Nov 13, 2024
cd29679
Debug `$query-uri`
namedgraph Nov 13, 2024
1ca1a1c
Fixed var name
namedgraph Nov 13, 2024
aaeb144
Fix `$query-uri` value
namedgraph Nov 13, 2024
91c640e
Fixed `$block-uri` usage
namedgraph Nov 13, 2024
7f82be8
Updated chart rendering in `ldh:RenderRow` mode
namedgraph Nov 15, 2024
f097648
Build `$chart-html` in the `.btn-save-chart` handler
namedgraph Nov 15, 2024
0e186ae
Fixed `xsl:for-each` syntax
namedgraph Nov 15, 2024
512630e
Fixed `$chat-html`
namedgraph Nov 15, 2024
040035e
Apply `bs2:RowForm` on `$constructed-doc`
namedgraph Nov 15, 2024
3392826
Added missing `$resource` definition
namedgraph Nov 15, 2024
183bdf1
Define `$method`
namedgraph Nov 15, 2024
b1ea4bd
Defined `$doc-uri`
namedgraph Nov 15, 2024
93670ba
Added `@rdf:nodeID` to chart resource in the constructor
namedgraph Nov 15, 2024
99fb5db
Try to insert `$row-form` after `$block` by calling `Element.after()`
namedgraph Nov 15, 2024
27b5278
Added `$form-actions` param to `bs2:Chart` mode
namedgraph Nov 15, 2024
ee449f5
Copy following siblings of the `$block` and re-insert them after the …
namedgraph Nov 15, 2024
6fb59dd
Trace `$row-form`
namedgraph Nov 15, 2024
1833437
Added default `xmlns="http://www.w3.org/1999/xhtml"` namespace to (X)…
namedgraph Nov 16, 2024
7bfe378
Try `cdata-section-elements="script"`
namedgraph Nov 16, 2024
4a79c25
Added `CDATA` escaping hack for `<script>` elements with inline JS
namedgraph Nov 16, 2024
02dca89
Wrap `<![CDATA[` into `<xsl:text disable-output-escaping="yes">`
namedgraph Nov 16, 2024
0b9b035
More `<xsl:text disable-output-escaping="yes">`
namedgraph Nov 16, 2024
73438d5
More `<xsl:text disable-output-escaping="yes">`
namedgraph Nov 16, 2024
29756ec
More `disable-output-escaping="yes"`
namedgraph Nov 16, 2024
d7c8420
Refactored `.add-constructor` handler to call `Element.before()`
namedgraph Nov 16, 2024
1a57901
Don't call `ldh:RenderRowForm`
namedgraph Nov 16, 2024
fa17be4
Apply client-side templates on the appended row form (now following s…
namedgraph Nov 16, 2024
e5df9d9
Apply `ldh:RenderRowForm` on the inserted row form
namedgraph Nov 16, 2024
d4460b8
Store `$block-html` when `.btn-edit` is clicked (HTML before editing …
namedgraph Nov 17, 2024
4271790
Fixed var name
namedgraph Nov 17, 2024
a8194fe
Commented out unused code
namedgraph Nov 17, 2024
0a1f4f4
Create new `window.LinkedDataHub.contents[$about]` object if it doesn…
namedgraph Nov 17, 2024
7a547e2
Fixed the type of `$block-html`
namedgraph Nov 17, 2024
72374c6
Restore snapshot of block HTML that was captured before entering edit…
namedgraph Nov 17, 2024
e7debbb
Fixed var name
namedgraph Nov 17, 2024
32f1f93
Debug `$block`
namedgraph Nov 17, 2024
5728ef9
Debug `.btn-edit $block`
namedgraph Nov 17, 2024
f86184d
Store `$block-html` as a clone of `$block`
namedgraph Nov 17, 2024
becfb6c
Make a deep clone of `$block` instead of shallow one
namedgraph Nov 17, 2024
8fc67d4
Remove the `$block-html` value after it has been used
namedgraph Nov 17, 2024
042e35b
Attempt to handle `.btn-cancel` with a single template in form.xsl
namedgraph Nov 17, 2024
0e02df2
Cleanup
namedgraph Nov 17, 2024
4260925
Getting rid of `bs2:RowContent` mode
namedgraph Nov 21, 2024
ac52be7
Re-introduced `$main-class` param to `bs2:Row` mode
namedgraph Nov 21, 2024
bb23114
Stripping namespaces in `ldh:XHTMLContent` mode should not be necessa…
namedgraph Nov 21, 2024
8905aaa
Don't copy namespaces in the `ldh:XHTMLContent` identity transform
namedgraph Nov 21, 2024
f4609c6
Replaced `VARNISH_TTL` env var (which has no effect) with `command: -…
namedgraph Nov 21, 2024
f5822ec
Fixing Varnish's `command`
namedgraph Nov 21, 2024
9144165
Added `$@` to the varnish entrypoint
namedgraph Nov 21, 2024
0948d14
Escaped `$`
namedgraph Nov 21, 2024
37bfc3c
Try to fix Varnish entrypoint
namedgraph Nov 21, 2024
f90368b
Escape `$`
namedgraph Nov 21, 2024
d177afc
Another attempt to fix entrypoint
namedgraph Nov 21, 2024
f115a97
Fix entrypoints of other Varnish services
namedgraph Nov 21, 2024
cb4ece0
Default Varnish VCL template only allows cookies in the admin app (fo…
namedgraph Nov 21, 2024
24d7ee9
Changed VCL
namedgraph Nov 21, 2024
b370428
Add `req.http.Client-Cert` value to the Varnish hash instead of passi…
namedgraph Nov 22, 2024
cf5730a
Include SHA-256 hash of the `Client-Cert` header in the cache key
namedgraph Nov 22, 2024
5032044
Don't use digest, hash `req.http.Client-Cert` directly
namedgraph Nov 22, 2024
6f09257
Removed usage of `remote` clients in the VCL
namedgraph Nov 22, 2024
0e9c444
Include `LinkedDataHub.id_token` cookie value in the VCL hash, if it …
namedgraph Nov 22, 2024
d5fc56d
Hash user-specific content only when (X)HTML is returned
namedgraph Nov 22, 2024
4d6164d
Revert the `vcl_hash()` logic. Authenticated (X)HTML requests are not…
namedgraph Nov 22, 2024
1a062dd
Do not cache (X)HTML requests that have a `LinkedDataHub.id_token` co…
namedgraph Nov 22, 2024
2c16b28
`ldh:View` is now a "normal" resource, not a content block
namedgraph Nov 24, 2024
a559653
Transclude `ldh:View` instances via `ldh:Object`
namedgraph Nov 24, 2024
512fbe4
Dataset fixes
namedgraph Nov 24, 2024
9a56b31
Debug `ldh:LoadBlockObjectMetadata`
namedgraph Nov 24, 2024
dcb5265
Fix `$block` expression in view's `bs2:RenderRow` mode
namedgraph Nov 24, 2024
5474bb8
Added icon for `.btn-view`
namedgraph Nov 24, 2024
22b464d
Removed the unused `Reserialize` Saxon function (replaced with a pure…
namedgraph Nov 24, 2024
1d084a3
Moved the `ldh:reserialize` function to server-side
namedgraph Nov 24, 2024
cb8063a
Optimized authorization query
namedgraph Nov 24, 2024
1bf10ac
Auth query optimization
namedgraph Nov 26, 2024
99631b6
Take care not to load unnecessary documents over HTTP when the respon…
namedgraph Nov 26, 2024
a4894cd
Fixed `$block-values` expression?
namedgraph Nov 26, 2024
78c5c55
Separate VCL template for `varnish-end-user`/`varnish-admin`
namedgraph Nov 26, 2024
a4a7e8b
Set `mem_limit` on `linkeddatahub` service
namedgraph Dec 13, 2024
91ec684
`ldh:ViewQueryLoad` now sets both `$this` and `$about` on the view query
namedgraph Dec 15, 2024
406cd25
`$about` in the query gets set to the `@about` of the *parent* block
namedgraph Dec 15, 2024
32f15dc
Fixed `$select-string` expression
namedgraph Dec 15, 2024
2f85710
Fixed var name in `$template-query`
namedgraph Dec 15, 2024
8b42c02
Attempt to unify `bs2:Row` templates
namedgraph Dec 16, 2024
d778d7e
Attempt to fix `bs2:Row`
namedgraph Dec 16, 2024
72c6bb9
`$about` param is unused
namedgraph Dec 16, 2024
5d2f13a
Set unique `@about` for blocks loaded from `ldh:template`s
namedgraph Dec 17, 2024
c0d1dc8
Fixed `$about` expression
namedgraph Dec 17, 2024
34c8973
Set `@id` on blocks from `$block-values`
namedgraph Dec 18, 2024
cc5cc28
Fixed `$id` value
namedgraph Dec 18, 2024
c14c149
SNAPSHOT bump
namedgraph Dec 18, 2024
195dd34
Updated the `ldh:ChildrenViewContructor` as well as the CLI script to…
namedgraph Dec 18, 2024
273e802
chmod script
namedgraph Dec 19, 2024
295b189
Made `$title` arg optional in `add-object-block` CLI script
namedgraph Dec 19, 2024
06fd3b6
Fixed `$form-actions` cardinality
namedgraph Dec 20, 2024
cc3c68c
Typo fix
namedgraph Dec 20, 2024
7021ba1
If there is no block, the chart is rendering the current document
namedgraph Dec 20, 2024
44b946c
Don't hide the progress bar when `ldh:Object` finishes loading
namedgraph Dec 20, 2024
c278d25
Make sure view and chart rendering hides the row with the block controls
namedgraph Dec 20, 2024
b84e383
Fix the `div.span12` expression
namedgraph Dec 20, 2024
2176027
Do not set `z-index`
namedgraph Dec 20, 2024
e270cbc
Attempt to fix progress bar expression
namedgraph Dec 20, 2024
7377c61
Hide progress bar in default `ldh:RenderRow`
namedgraph Dec 21, 2024
290bd73
Try to fix XPath
namedgraph Dec 21, 2024
b2ddc4f
Attempt to hide the progress bar by adding an override of `ldh:Render…
namedgraph Dec 22, 2024
0d1a9b3
Try to fix `@typeof` pattern
namedgraph Dec 22, 2024
e1534f6
Removed `[@about]` from the chart match pattern in `ldh:RenderRow` mode
namedgraph Jan 3, 2025
441ece5
Debug anchor onclick template match
namedgraph Jan 4, 2025
91aee0e
XPath fix
namedgraph Jan 4, 2025
c658636
In the `ldh:base-uri` function, make sure to strip the fragment ID fr…
namedgraph Jan 4, 2025
afca8c3
Undo debug output
namedgraph Jan 4, 2025
4f8d966
Set `mem_limit` on `linkeddatahub` service
namedgraph Dec 13, 2024
0488d13
Merge branch 'rf-retry-handler' of github.com:AtomGraph/LinkedDataHub…
namedgraph Jan 6, 2025
f2746ba
Define `MAX_REQUEST_RETRIES` in the Dockerfile and pass it to `Applic…
namedgraph Jan 6, 2025
c9c8a29
SNAPSHOT bump
namedgraph Jan 7, 2025
c2aa382
SNAPSHOT bump
namedgraph Jan 10, 2025
5c4af3d
Fixing HTTP tests to reflect the fact that `application/xhtml+xml` is…
namedgraph Jan 10, 2025
9463256
Fixed `xhtml:DefinitionDescription` RDFa override for language-tagged…
namedgraph Jan 10, 2025
f3411b5
Attempt to fix block drag-and-drop by only allowing it on top-level b…
namedgraph Jan 11, 2025
3bfd029
Drag start fix
namedgraph Jan 11, 2025
061ec51
Debug `ondragstart`
namedgraph Jan 11, 2025
1b1ae3d
Debug `ixsl:ondragstart`
namedgraph Jan 11, 2025
6f05b87
Get the top-level block for this block (could be self) and use its URI
namedgraph Jan 11, 2025
8793d76
Blocks nested within `ldh:Object` are not draggable
namedgraph Jan 11, 2025
0536412
Debug `ondragstart` block
namedgraph Jan 11, 2025
78bdf83
`ixsl:ondragstart` refactoring
namedgraph Jan 11, 2025
e2ad895
`atomgraph/letsencrypt-tomcat` base image bump (now multi-platform!)
namedgraph Jan 14, 2025
a7ac2e6
GitHub workflow that builds a multi-platform Docker image and pushes …
namedgraph Jan 14, 2025
20c327b
`atomgraph/fuseki` image bump
namedgraph Jan 14, 2025
5bbba24
Refactored entrypoint to generate owner and secretary keystore/cert/p…
namedgraph Jan 31, 2025
9e5aa31
Attempt to fix the http-tests workflow using secrets
namedgraph Jan 31, 2025
473e16d
http-tests workflow fixes
namedgraph Jan 31, 2025
2a350ad
Generating server certificate in the http-tests workflow
namedgraph Jan 31, 2025
d053862
Fixed .env arg for server-cert-gen.sh
namedgraph Feb 1, 2025
fed8d8f
Server cert generation fix
namedgraph Feb 1, 2025
33ac88f
Fix test owner cert mount
namedgraph Feb 1, 2025
cf30b60
Validate OWNER_URI and SECRETARY_URI
namedgraph Feb 1, 2025
d8b3a05
Debug cert file permissions
namedgraph Feb 1, 2025
a72912d
Debug permissions
namedgraph Feb 1, 2025
1072ab1
Mount ownrr/secretary datasets
namedgraph Feb 1, 2025
c05edfa
Debug cert permissions
namedgraph Feb 1, 2025
48774c6
Execute webid-uri.sh as sudo
namedgraph Feb 1, 2025
eaa6653
Run the whole test suite as sudo
namedgraph Feb 1, 2025
21feac3
Attempt to fix $JENA_HOME error
namedgraph Feb 1, 2025
97a8472
Debug $JENA_HOME
namedgraph Feb 1, 2025
0443473
Set JENA_HOME in GITHUB_ENV
namedgraph Feb 1, 2025
1f5941b
YAML fix
namedgraph Feb 1, 2025
092e3bc
Pass $PATH to sudo script
namedgraph Feb 1, 2025
1b49240
Mount datasets folder
namedgraph Feb 1, 2025
826353f
Script cleanup
namedgraph Feb 1, 2025
b9fb4ee
Removed `-s` flag from `realpath` calls to make them MacOS-compatible
namedgraph Feb 2, 2025
6cea026
Unprivileged user
namedgraph Feb 2, 2025
454cd2f
Debug permissions
namedgraph Feb 2, 2025
f3bb55b
Attempt to fix cert.pem permissions
namedgraph Feb 2, 2025
b911324
Try sudo
namedgraph Feb 2, 2025
6bb880a
Fix secretary cert permissions
namedgraph Feb 2, 2025
6bc52d1
Removed Mac-specific file
namedgraph Feb 3, 2025
0f3ec0d
Merge branch 'develop' of github.com:AtomGraph/LinkedDataHub into dev…
namedgraph Feb 3, 2025
ffc7685
Debug user
namedgraph Feb 3, 2025
63c1e21
Debug UID and GID
namedgraph Feb 3, 2025
6008e42
Debug GID
namedgraph Feb 3, 2025
31992f3
Local user is back to `root`
namedgraph Feb 3, 2025
6c4becc
Merge branch 'develop' of github.com:AtomGraph/LinkedDataHub into dev…
namedgraph Feb 3, 2025
83a1ead
Removed `-s` flag from `realpath` calls to make them MacOS-compatible
namedgraph Feb 2, 2025
26409d5
Merge branch 'fix-realpath-macos' of github.com:AtomGraph/LinkedDataH…
namedgraph Feb 3, 2025
2ed419c
Removed IMPORT_KEEPALIVE param
namedgraph Feb 4, 2025
9866ebc
SNAPSHOT bumped to 5.0.8-SNAPSHOT
namedgraph Feb 4, 2025
21d18dc
README update
namedgraph Feb 7, 2025
fff8676
README update
namedgraph Feb 7, 2025
01ee2ad
Scripts on $PATH (#202)
namedgraph Feb 11, 2025
2542a30
README update
namedgraph Feb 13, 2025
d89e991
Web-Client bump
namedgraph Feb 16, 2025
d3d7f21
Revert "Fixing HTTP tests to reflect the fact that `application/xhtml…
namedgraph Feb 16, 2025
f1fe8c5
Rate-limited LinkedDataClient (#203)
namedgraph Feb 20, 2025
1f8f524
Request access modal form (#204)
namedgraph Mar 12, 2025
b97d7e0
SNAPSHOT bump
namedgraph Mar 13, 2025
a7fbd12
Added tests for `acl:owner` triples on created documents
namedgraph Mar 13, 2025
4d821b5
Separated `documentTypeQuery` from `documentOwnerQuery`
namedgraph Mar 13, 2025
5d65190
chnod test scripts
namedgraph Mar 13, 2025
693e9e3
Added access endpoint tests
namedgraph Mar 13, 2025
3f4660e
Refactored `Access` endpoint to use `getEndpointAccessor()`
namedgraph Mar 14, 2025
11028a5
Fixed NPE
namedgraph Mar 14, 2025
34af59e
Improved Java syntax
namedgraph Mar 14, 2025
e522435
Fixed more NPEs
namedgraph Mar 14, 2025
e4af21b
`isOwner` improvements
namedgraph Mar 14, 2025
ff3b0ad
`documentOwnerQuery` moved to web.xml
namedgraph Mar 14, 2025
61364da
Fixed missing `reset()`
namedgraph Mar 14, 2025
525aa17
Removed the inner `try`/`finally`
namedgraph Mar 14, 2025
7eae976
Make sure to load document types and owner from then end-user service
namedgraph Mar 16, 2025
5fa932b
Fixed owner ACL test
namedgraph Mar 16, 2025
289193b
New HTTP test for the `Access` endpoint
namedgraph Mar 16, 2025
54ef472
Bump SNAPSHOT version
namedgraph Mar 16, 2025
8acd5cf
Moved test
namedgraph Mar 16, 2025
044544a
Disable empty values in RDF/POST parser again
namedgraph Mar 16, 2025
4c3dd28
Removed debug output from XSLT stylesheets
namedgraph Mar 17, 2025
0b44cb7
Handle empty resource
namedgraph Mar 17, 2025
bfca184
`google_client_id`/`google_client_secret` data now as secrets
namedgraph Mar 18, 2025
0c2d06e
HTTP test for the `Transform` endpoint
namedgraph Mar 18, 2025
f895381
Child documents can be created only if the current document is the Ro…
namedgraph Mar 19, 2025
05abac4
purge_cache
namedgraph Mar 19, 2025
3dfe7c9
Fixed multipart form callback
namedgraph Mar 22, 2025
c63626c
RDFS-specific XSLT import
namedgraph Mar 25, 2025
21f2bbb
New HTTP test for the `Add` endpoint
namedgraph Mar 25, 2025
e19194a
Enforce trailing slash with redirect
namedgraph Mar 28, 2025
13a1045
Fixed HTTP test
namedgraph Mar 29, 2025
e17fddb
Fixed test runner
namedgraph Mar 29, 2025
cd7003a
New HTTP tests for relative URIs in `PUT` request body
namedgraph Mar 30, 2025
5bf7992
`xsd:dateTime` literal rendering as `datetime-local` moved to the ser…
namedgraph Mar 30, 2025
8714801
`Graph::put` does not allow double slashes in request URIs
namedgraph Mar 31, 2025
2490d71
SaxonJS upgraded to 3.x (#206)
namedgraph Mar 31, 2025
32e1501
Fixed container CSS in object block fallback case
namedgraph Mar 31, 2025
6d93326
New HTTP test for `PUT` with empty request body
namedgraph Mar 31, 2025
c556fcb
Fixed status code in test
namedgraph Mar 31, 2025
ec448e0
Use `ldh:LoadBlockObjectMetadata` only for local resources
namedgraph Apr 1, 2025
ddd84f4
`bs2:FormControl` fix for `datetime-local`
namedgraph Apr 1, 2025
c8275a2
Improved callback promise composition
namedgraph Apr 2, 2025
24fa6fe
Removed unnecessary `ixsl:http-request` arguments
namedgraph Apr 2, 2025
231428a
Fixed `$classes` in `bs2:Row`
namedgraph Apr 9, 2025
15384fc
`$classes` fix in `bs2:Row`
namedgraph Apr 10, 2025
a35e956
Document editing form (#207)
namedgraph Apr 12, 2025
9b476ca
More `on-failure` on promises
namedgraph Apr 14, 2025
189850f
Dataset fixes
namedgraph Apr 14, 2025
938d687
Removed secret envs from Dockerfile
namedgraph Apr 14, 2025
5df9317
Unified form response callbacks
namedgraph Apr 14, 2025
668f5e5
New `ldh:RenderViewResults` template
namedgraph Apr 16, 2025
217c5fe
Render object metadata only if the view's SPARQL endpoint is local
namedgraph Apr 16, 2025
8dc7149
`$view-container` fix
namedgraph Apr 16, 2025
103165f
CSS fixes
namedgraph Apr 17, 2025
7c09fc4
Chart rendering refactored using promises
namedgraph Apr 17, 2025
5da7a04
Fixed chart creation from query
namedgraph Apr 18, 2025
4faa000
SNAPSHOT bump
namedgraph Apr 18, 2025
1090b6d
IXSL refactoring
namedgraph Apr 20, 2025
25ce954
Suspended promise tree (#209)
namedgraph Apr 27, 2025
3a1c6a5
Reverted `ldh:RenderViewResults` changes
namedgraph Apr 27, 2025
a8fd698
Web-Client bump
namedgraph Apr 27, 2025
e7b90bc
Fix search bar URI value
namedgraph Apr 28, 2025
2d88784
`ldh:href` function fixes
namedgraph Apr 29, 2025
90cc987
`ldh:href` invocation fixes
namedgraph Apr 30, 2025
f915306
Downgraded Node.js in frontend-maven-plugin
namedgraph May 1, 2025
d37ca1e
Merge branch 'master' into develop
namedgraph May 2, 2025
0ff07b6
Removed child thunks (#211)
namedgraph May 7, 2025
0cfe16c
SNAPSHOT bump
namedgraph May 8, 2025
9c8d11f
Merge branch 'develop' of github.com:AtomGraph/LinkedDataHub into dev…
namedgraph May 8, 2025
afd8f0f
Fixed `transform` endpoint access
namedgraph May 9, 2025
51d894f
Fixed `201 Created` handling after form submission
namedgraph May 9, 2025
142834d
Fixed `$row-form` construction
namedgraph May 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 27 additions & 15 deletions .github/workflows/http-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,49 @@ jobs:
name: Build Docker image and run HTTP test suite against it
runs-on: ubuntu-latest
env:
ASF_ARCHIVE: http://archive.apache.org/dist/
ASF_ARCHIVE: https://archive.apache.org/dist/
JENA_VERSION: 4.7.0
BASE_URI: https://localhost:4443/
OWNER_CERT_PWD: changeit
SECRETARY_CERT_PWD: LinkedDataHub
steps:
- name: Install Linux packages
run: sudo apt-get update && sudo apt-get install -qq raptor2-utils && sudo apt-get install curl
- name: Download Jena
run: curl -sS --fail "${{env.ASF_ARCHIVE}}jena/binaries/apache-jena-${{env.JENA_VERSION}}.tar.gz" -o "${{runner.temp}}/jena.tar.gz"
run: curl -sS --fail "${{ env.ASF_ARCHIVE }}jena/binaries/apache-jena-${{ env.JENA_VERSION }}.tar.gz" -o "${{ runner.temp }}/jena.tar.gz"
- name: Unpack Jena
run: tar -zxf jena.tar.gz
working-directory: ${{runner.temp}}
- run: echo "$JENA_HOME/bin" >> $GITHUB_PATH
env:
JENA_HOME: "${{runner.temp}}/apache-jena-${{env.JENA_VERSION}}"
working-directory: ${{ runner.temp }}
- name: Set JENA_HOME and update PATH
run: |
echo "${{ runner.temp }}/apache-jena-${{ env.JENA_VERSION }}/bin" >> $GITHUB_PATH
- name: Checkout code
uses: actions/checkout@v3
- name: Generate owner's and secretary's certificates/public keys
run: ../scripts/setup.sh .env ssl "${{env.OWNER_CERT_PWD}}" "${{env.SECRETARY_CERT_PWD}}" 3650
shell: bash
- name: Add bin/ and its subdirectories to PATH
run: |
find "$GITHUB_WORKSPACE/bin" -type d >> "$GITHUB_PATH"
- name: Generating server certificate
run: |
server-cert-gen.sh .env nginx ssl
working-directory: http-tests
- name: Writing secrets to files
run: |
mkdir -p ./secrets
printf "%s" "${{ secrets.HTTP_TEST_OWNER_CERT_PASSWORD }}" > ./secrets/owner_cert_password.txt
printf "%s" "${{ secrets.HTTP_TEST_SECRETARY_CERT_PASSWORD }}" > ./secrets/secretary_cert_password.txt
printf "%s" "${{ secrets.HTTP_TEST_SECRETARY_CERT_PASSWORD }}" > ./secrets/client_truststore_password.txt
shell: bash
- name: Build Docker image & Run Docker containers
run: docker-compose -f docker-compose.yml -f ./http-tests/docker-compose.http-tests.yml --env-file ./http-tests/.env up --build -d
run: docker compose -f docker-compose.yml -f ./http-tests/docker-compose.http-tests.yml --env-file ./http-tests/.env up --build -d
- name: Wait for the server to start...
run: while ! (status=$(curl -k -s -w "%{http_code}\n" https://localhost:4443 -o /dev/null) && echo "$status" && echo "$status" | grep "403") ; do sleep 1 ; done # wait for the webapp to start (returns 403 by default)
- name: Fix certificate permissions on the host
run: |
sudo chmod 644 ./ssl/owner/cert.pem ./ssl/secretary/cert.pem
working-directory: http-tests
- name: Run HTTP test scripts
run: ./run.sh "$PWD/ssl/owner/cert.pem" "${{env.OWNER_CERT_PWD}}" "$PWD/ssl/secretary/cert.pem" "${{env.SECRETARY_CERT_PWD}}"
run: ./run.sh "$PWD/ssl/owner/cert.pem" "${{ secrets.HTTP_TEST_OWNER_CERT_PASSWORD }}" "$PWD/ssl/secretary/cert.pem" "${{ secrets.HTTP_TEST_SECRETARY_CERT_PASSWORD }}"
shell: bash
working-directory: http-tests
- name: Stop Docker containers
run: docker-compose --env-file ./http-tests/.env down
run: docker compose --env-file ./http-tests/.env down
- name: Remove Docker containers
run: docker-compose --env-file ./http-tests/.env rm -f
run: docker compose --env-file ./http-tests/.env rm -f
44 changes: 44 additions & 0 deletions .github/workflows/image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: ci

on:
push:
tags:
- '*'

jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Extract version parts
id: version
run: |
VERSION="${{ github.ref_name }}"
MAJOR="${VERSION%%.*}"
MINOR="${VERSION%.*}"
MINOR="${MINOR#*.}"
echo "MAJOR=$MAJOR" >> $GITHUB_ENV
echo "MINOR=$MAJOR.$MINOR" >> $GITHUB_ENV
echo "FULL_VERSION=$VERSION" >> $GITHUB_ENV

- name: Build and push
uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm64
push: true
tags: |
atomgraph/linkeddatahub:latest
atomgraph/linkeddatahub:${{ env.FULL_VERSION }}
atomgraph/linkeddatahub:${{ env.MINOR }}
atomgraph/linkeddatahub:${{ env.MAJOR }}
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
.DS_Store
/target
/certs
/.env
/data
/uploads
/nb-configuration.xml
/node
/node_modules
/docker-compose.override.yml
/secrets
/datasets
/ssl
/http-tests/ssl
/http-tests/datasets
/http-tests/uploads
44 changes: 30 additions & 14 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM maven:3.8.4-openjdk-17 as maven
FROM maven:3.8.4-openjdk-17 AS maven

# download and extract Jena

Expand All @@ -22,7 +22,7 @@ RUN mvn -Pstandalone clean install

# ==============================

FROM atomgraph/letsencrypt-tomcat:10.1.4
FROM atomgraph/letsencrypt-tomcat:10.1.34

LABEL maintainer="martynas@atomgraph.com"

Expand All @@ -38,10 +38,6 @@ ENV SOURCE_COMMIT=$SOURCE_COMMIT

WORKDIR $CATALINA_HOME

# add XSLT stylesheet that makes changes to ROOT.xml

COPY platform/context.xsl conf/context.xsl

ENV CACHE_MODEL_LOADS=true

ENV STYLESHEET=static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/layout.xsl
Expand Down Expand Up @@ -72,17 +68,26 @@ ENV HTTPS=false

ENV SERVER_CERT=/var/linkeddatahub/ssl/server/server.crt

ENV SECRETARY_CERT=/var/linkeddatahub/ssl/secretary/cert.pem
ENV OWNER_CERT_ALIAS=root-owner
ENV OWNER_KEYSTORE=/var/linkeddatahub/ssl/owner/keystore.p12
ENV OWNER_CERT=/var/linkeddatahub/ssl/owner/cert.pem
ENV OWNER_PUBLIC_KEY=/var/linkeddatahub/ssl/owner/public.pem
ENV OWNER_PRIVATE_KEY=/var/linkeddatahub/ssl/owner/private.key

ENV SECRETARY_CERT_ALIAS=secretary
ENV SECRETARY_COMMON_NAME=LinkedDataHub
ENV SECRETARY_CERT_ALIAS=root-secretary
ENV SECRETARY_KEYSTORE=/var/linkeddatahub/ssl/secretary/keystore.p12
ENV SECRETARY_CERT=/var/linkeddatahub/ssl/secretary/cert.pem
ENV SECRETARY_PUBLIC_KEY=/var/linkeddatahub/ssl/secretary/public.pem
ENV SECRETARY_PRIVATE_KEY=/var/linkeddatahub/ssl/secretary/private.key

ENV CLIENT_KEYSTORE_MOUNT=/var/linkeddatahub/ssl/secretary/keystore.p12

ENV CLIENT_KEYSTORE="$CATALINA_HOME/webapps/ROOT/WEB-INF/keystore.p12"

ENV CLIENT_TRUSTSTORE="$CATALINA_HOME/webapps/ROOT/WEB-INF/client.truststore"

ENV OWNER_PUBLIC_KEY=/var/linkeddatahub/ssl/owner/public.pem
ENV CERT_VALIDITY=3650

ENV SIGN_UP_CERT_VALIDITY=

ENV LOAD_DATASETS=

Expand All @@ -102,11 +107,13 @@ ENV MAX_CONN_PER_ROUTE=20

ENV MAX_TOTAL_CONN=40

ENV MAX_REQUEST_RETRIES=3

ENV IMPORT_KEEPALIVE=

ENV GOOGLE_CLIENT_ID=
ENV MAX_IMPORT_THREADS=10

ENV GOOGLE_CLIENT_SECRET=
ENV SERVLET_NAME=

ENV GENERATE_SITEMAP=true

Expand All @@ -120,6 +127,14 @@ RUN apt-get update --allow-releaseinfo-change && \
rm -rf webapps/* && \
rm -rf /var/lib/apt/lists/*

# add XSLT stylesheet that makes changes to ROOT.xml

COPY platform/context.xsl /var/linkeddatahub/xsl/context.xsl

# add XSLT stylesheet that makes changes to web.xml

COPY platform/web.xsl /var/linkeddatahub/xsl/web.xsl

# copy entrypoint

COPY platform/entrypoint.sh entrypoint.sh
Expand Down Expand Up @@ -172,6 +187,7 @@ ENV PATH="${PATH}:${JENA_HOME}/bin"

RUN useradd --no-log-init -U ldh && \
chown -R ldh:ldh . && \
mkdir -p "$(dirname "$OIDC_REFRESH_TOKENS")" && \
chown -R ldh:ldh /var/linkeddatahub && \
mkdir -p "${UPLOAD_ROOT}/${UPLOAD_CONTAINER_PATH}" && \
chown -R ldh:ldh "$UPLOAD_ROOT" && \
Expand All @@ -180,7 +196,7 @@ RUN useradd --no-log-init -U ldh && \

RUN ./import-letsencrypt-stg-roots.sh

HEALTHCHECK --start-period=80s --interval=20s --timeout=10s \
HEALTHCHECK --start-period=80s --retries=5 \
CMD curl -f -I "http://localhost:${HTTP_PORT}/ns" -H "Accept: application/n-triples" || exit 1 # relies on public access to the namespace document

USER ldh
Expand Down
44 changes: 28 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,19 +57,23 @@ It takes a few clicks and filling out a form to install the product into your ow
OWNER_STATE_OR_PROVINCE=Denmark
OWNER_COUNTRY_NAME=DK
```
3. Setup SSL certificates/keys by running this from command line (replace `$owner_cert_pwd` and `$secretary_cert_pwd` with your own passwords):
```
./scripts/setup.sh .env ssl $owner_cert_pwd $secretary_cert_pwd 3650
3. Setup server's SSL certificates by running this from command line:
```shell
./scripts/server-cert-gen.sh .env nginx ssl
```
The script will create an `ssl` sub-folder where the SSL certificates and/or public keys will be placed.
4. Launch the application services by running this from command line:
```
```shell
docker-compose up --build
```
It will build LinkedDataHub's Docker image, start its container and mount the following sub-folders:
- `ssl`
* `owner` stores root owner's WebID certificate, keystore, and public key
* `secretary` stores root application's WebID certificate, keystore, and public key
* `server` stores the server's certificate (also used by nginx)
- `data` where the triplestore(s) will persist RDF data
- `uploads` where LDH stores content-hashed file uploads
The first should take around half a minute as datasets are being loaded into triplestores. After a successful startup, the last line of the Docker log should read something like:
It should take up to half a minute as datasets are being loaded into triplestores. After a successful startup, the last line of the Docker log should read something like:
```
linkeddatahub_1 | 09-Feb-2021 14:18:10.536 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [32609] milliseconds
```
Expand All @@ -78,7 +82,15 @@ It takes a few clicks and filling out a form to install the product into your ow
- Mozilla Firefox: `Options > Privacy > Security > View Certificates... > Import...`
- Apple Safari: The file is installed directly into the operating system. Open the file and import it using the [Keychain Access](https://support.apple.com/guide/keychain-access/what-is-keychain-access-kyca1083/mac) tool (drag it to the `local` section).
- Microsoft Edge: Does not support certificate management, you need to install the file into Windows. [Read more here](https://social.technet.microsoft.com/Forums/en-US/18301fff-0467-4e41-8dee-4e44823ed5bf/microsoft-edge-browser-and-ssl-certificates?forum=win10itprogeneral).
6. Open **https://localhost:4443/** in that web browser
6. For authenticated API access use the `ssl/owner/cert.pem` HTTPS client certificate.
If you are running Linux with user other than `root`, you might need to fix the certificate permissions because Docker bind mounts are owned by `root` by default. For example:
```shell
sudo setfacl -m u:$(whoami):r ./ssl/owner/*
```
7. Open **https://localhost:4443/** in the web browser or use `curl` for API access, for example:
```shell
curl -k -E ./ssl/owner/cert.pem:<your cert password> -H "Accept: text/turtle" 'https://localhost:4443/'
```

### Notes

Expand All @@ -87,11 +99,11 @@ It takes a few clicks and filling out a form to install the product into your ow
* If this option does not appear in Chrome (as observed on some MacOS), you can open `chrome://flags/#allow-insecure-localhost`, switch `Allow invalid certificates for resources loaded from localhost` to `Enabled` and restart Chrome
* `.env_sample` and `.env` files might be invisible in MacOS Finder which hides filenames starting with a dot. You should be able to [create it using Terminal](https://stackoverflow.com/questions/5891365/mac-os-x-doesnt-allow-to-name-files-starting-with-a-dot-how-do-i-name-the-hta) however.
* On Linux your user may need to be a member of the `docker` group. Add it using
```
```shell
sudo usermod -aG docker ${USER}
```
and re-login with your user. An alternative, but not recommended, is to run
```
```shell
sudo docker-compose up
```
</details>
Expand Down Expand Up @@ -152,7 +164,7 @@ The options are described in more detail in the [configuration documentation](ht
## Reset

If you need to start fresh and wipe the existing setup (e.g. after configuring a new base URI), you can do that using
```
```shell
sudo rm -rf data uploads && docker-compose down -v
```

Expand All @@ -169,11 +181,15 @@ _:warning: This will **remove the persisted data and files** as well as Docker v

LinkedDataHub CLI wraps the HTTP API into a set of shell scripts with convenient parameters. The scripts can be used for testing, automation, scheduled execution and such. It is usually much quicker to perform actions using CLI rather than the user interface, as well as easier to reproduce.

The scripts can be found in the [`scripts`](https://github.com/AtomGraph/LinkedDataHub/tree/master/scripts) subfolder.
The scripts can be found in the [`bin`](https://github.com/AtomGraph/LinkedDataHub/tree/master/bin) subfolder. In order to use them, add the `bin` folder and its subfolders to the `$PATH`. For example:

```shell
export PATH="$(find bin -type d -exec realpath {} \; | tr '\n' ':')$PATH"
```

_:warning: The CLI scripts internally use [Jena's CLI commands](https://jena.apache.org/documentation/tools/). Set up the Jena environment before running the scripts._

An environment variable `JENA_HOME` is used by all the command line tools to configure the class path automatically for you. You can set this up as follows:
The environment variable `JENA_HOME` is used by all the command line tools to configure the class path automatically for you. You can set this up as follows:

**On Linux / Mac**

Expand All @@ -189,11 +205,7 @@ An environment variable `JENA_HOME` is used by all the command line tools to con

### [Demo apps](https://github.com/AtomGraph/LinkedDataHub-Apps)

These demo applications can be installed into a LinkedDataHub instance using the provided CLI scripts.

_:warning: Before running app installation scripts that use LinkedDataHub's CLI scripts, set the `SCRIPT_ROOT` environmental variable to the [`scripts`](https://github.com/AtomGraph/LinkedDataHub/tree/master/scripts) subfolder of your LinkedDataHub fork or clone._ For example:

export SCRIPT_ROOT="/c/Users/namedgraph/WebRoot/AtomGraph/LinkedDataHub/scripts"
These demo applications can be installed into a LinkedDataHub instance using `make install`. You will need to provide the path to your WebID certificate as well as its password.

## How to get involved

Expand Down
Loading