Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
11 changes: 7 additions & 4 deletions .github/workflows/build-rfc.yml
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -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
Expand All @@ -41,6 +43,7 @@ jobs:
path: build

deploy:
if: github.ref == 'refs/heads/main'
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
Expand Down
44 changes: 38 additions & 6 deletions content.mkd
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down