diff --git a/.github/workflows/build-rfc.yml b/.github/workflows/build-rfc.yml index d003a04..0d5c841 100644 --- a/.github/workflows/build-rfc.yml +++ b/.github/workflows/build-rfc.yml @@ -1,7 +1,5 @@ name: Build and publish document -on: - push: - branches: [main] +on: push # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: @@ -23,7 +21,11 @@ jobs: key: webdav-push.mkd - name: Install packages - run: sudo gem install kramdown-rfc && sudo apt-get install --no-install-recommends -y xml2rfc + run: > + sudo apt-get install --no-install-recommends -y golang-go && + sudo gem install kramdown-rfc && + sudo pip3 install svgcheck xml2rfc --break-system-packages && + go install github.com/blampe/goat/cmd/goat@latest && echo ~/go/bin >> $GITHUB_PATH - name: Prepare output directory run: mkdir build @@ -41,6 +43,7 @@ jobs: path: build deploy: + if: github.ref == 'refs/heads/main' environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} diff --git a/content.mkd b/content.mkd index 835e30a..22b1059 100644 --- a/content.mkd +++ b/content.mkd @@ -13,17 +13,27 @@ Typical use cases: - A desktop file manager shows contents of a WebDAV collection and wants to be notified on updates in order to refresh the view. - A calendar Web app shows a CalDAV collection and wants to be notified on updates in order to refresh the view. +~~~goat +.--------------------. .--------------. .--------------------. +| WebDAV-Push Server | | Push Service | | WebDAV-Push Client | +'--------------------' '--------------' '--------------------' -## Notational Conventions + Create subscription + .----------------------o + '----------------------> -{::boilerplate bcp14-tagged} + Register subscription + <-------------------------------------------o + Content update notification + o------------------->*----------------------> +~~~ +{: title="Basic WebDAV-Push Workflow"} -## Architectural Overview -[^todo] Figure +## Notational Conventions -[^todo]: TODO +{::boilerplate bcp14-tagged} ## Terminology @@ -387,10 +397,32 @@ Corresponding terminology: * (WebDAV-Push) push server ↔ (Web Push) application server * (WebDAV-Push) push client (or redirect proxy) ↔ (Web Push) user agent -Message encryption {{RFC8291}} MUST be used. VAPID {{RFC8292}} SHOULD be used. (If other methods to provide a security context for Web Push become established, those ones can and shall be used and necessary WebDAV properties shall be added to this document.) +Message encryption {{RFC8291}} MUST be used. VAPID {{RFC8292}} SHOULD be used. (If other methods to provide a security context for Web Push become established, those can be used and necessary WebDAV properties shall be added to this document.) A server that supports the Web Push transport MUST list the `web-push` element in the `transports` property. +~~~goat +.--------------------. .--------------. .--------------------. +| | | Web Push | | | +| WebDAV-Push Server | | Service | | WebDAV-Push Client | +'--------------------' '--------------' '--------------------' + + Get VAPID public key + .------------------------------------------o + '------------------------------------------> + + Create restricted subscription + .----------------------o + '----------------------> + + Register subscription (with encryption) + <-------------------------------------------o + + Content update notification + o---(encrypted)---->*------(encrypted)------> +~~~ +{: title="WebDAV-Push over Web Push with VAPID and Message Encryption"} + ## Subscription Registration