diff --git a/.github/workflows/build-rfc.yml b/.github/workflows/build-rfc.yml new file mode 100644 index 0000000..c61620a --- /dev/null +++ b/.github/workflows/build-rfc.yml @@ -0,0 +1,31 @@ +name: Build and publish document +on: push +# branches: [main] + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Install packages + run: sudo apt-get install --no-install-recommends -y ruby-kramdown-rfc2629 xml2rfc + + - name: Prepare output directory + run: mkdir build + + - name: Kramdown to XML + run: kramdown-rfc2629 webdav-push.mkd >build/webdav-push.xml + + - name: XML to HTML + run: (cd build; xml2rfc --html webdav-push.xml) + - name: XML to TXT + run: (cd build; xml2rfc --txt webdav-push.xml) + + - name: Publish build + uses: actions/upload-pages-artifact@v3 + with: + path: build diff --git a/.gitignore b/.gitignore index e21d6b1..ecebeae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea/ .obsidian/ +.refcache/ diff --git a/abstract.md b/abstract.md new file mode 100644 index 0000000..7766635 --- /dev/null +++ b/abstract.md @@ -0,0 +1,4 @@ + +Some Abstract + +What Is It diff --git a/webdav-push-draft.md b/content.md similarity index 98% rename from webdav-push-draft.md rename to content.md index 6f2348b..beed4ff 100644 --- a/webdav-push-draft.md +++ b/content.md @@ -1,6 +1,3 @@ -WebDAV-Push – Draft Document (In Work) - - # Introduction @@ -20,7 +17,7 @@ Typical use cases: ## Architectural overview -![Architectural overview diagram](images/architecture.png) + ## Terminology @@ -117,7 +114,7 @@ This section describes how a client can detect Example: -``` +~~~ PROPFIND https://example.com/webdav/collection/ @@ -137,7 +134,7 @@ HTTP/1.1 207 Multi-Status - ... + ... @@ -145,7 +142,7 @@ HTTP/1.1 207 Multi-Status -``` +~~~ In this case, the requested collection supports WebDAV-Push in general (because it has a push topic). Two push transports can be used: @@ -223,11 +220,11 @@ In any case, when a subscription is registered the first time, the server create Sample request for Web Push: -``` +~~~ POST https://example.com/webdav/collection/ Content-Type: application/xml; charset="utf-8" - +\ @@ -239,7 +236,7 @@ Content-Type: application/xml; charset="utf-8" HTTP/1.1 201 Created Location: https://example.com/webdav/subscriptions/io6Efei4ooph -``` +~~~ @@ -273,11 +270,11 @@ When a subscription registration is removed, no further push messages must be se Sample request: -``` +~~~ DELETE https://example.com/webdav/subscriptions/io6Efei4ooph HTTP/1.1 204 Unregistered -``` +~~~ ## Expiration @@ -335,12 +332,12 @@ The push message body contains the topic of the changed collection. Sample push message body: -``` - +~~~ +\ O7M1nQ7cKkKTKsoS_j6Z3w -``` +~~~ Push notification rate limit? @@ -426,7 +423,7 @@ A WebDAV-Push server should use the collection topic as `Topic` header in push m > **NOTE**: [UnifiedPush](https://unifiedpush.org/) (UP) is a specification which is intentionally designed as a 100% compatible subset of Web Push, together with a software that can be used to implement these documents. From a WebDAV-Push server perspective, UP endpoints can be seen as Web Push resources. -![Flowchart: WebDAV-Push over UnifiedPush](images/unifiedpush-flowchart.png) + ## Subscription @@ -454,11 +451,11 @@ push resource). The push resource is used as the unique identifier for the subsc Definition: ` https://push.example.net/push/JzLQ3raZJfFBR0aqvOMsLrt54w4rJUsV -``` +~~~ > **TODO:** message encryption as defined in RFC 8291 @@ -483,13 +480,13 @@ As base64url: `R3iM_PAQ7OMDAXW4-mMna7rqSGI` So push message delivery is requested with this header: -``` +~~~ POST Content-Type: application/xml; charset="UTF-8" Topic: R3iM_PAQ7OMDAXW4-mMna7rqSGI - -``` + +~~~ ### VAPID @@ -498,4 +495,4 @@ Additional properties ### Message encryption -How to send the encrypted push message \ No newline at end of file +How to send the encrypted push message diff --git a/webdav-push.mkd b/webdav-push.mkd new file mode 100644 index 0000000..173d5c4 --- /dev/null +++ b/webdav-push.mkd @@ -0,0 +1,35 @@ +--- +title: Push for WebDAV +abbrev: WebDAV-Push +docname: draft-bitfire-webdav-push-00 +category: exp + +submissionType: independent +ipr: trust200902 +workgroup: None +keyword: WebDAV +keyword: push + +stand_alone: yes +pi: [toc, sortrefs, symrefs] + +author: + - + ins: R. Hirner + name: Ricki Hirner + organization: bitfire.at + email: hirner@bitfire.at + +normative: + RFC2119: + RFC4918: + + +--- abstract + +{::include abstract.md} + + +--- middle + +{::include content.md}