From c7d058c599f9892bfd32ab65607cb8b4d8f82614 Mon Sep 17 00:00:00 2001 From: irl Date: Sun, 22 Feb 2026 19:21:02 +0000 Subject: [PATCH] feat: reorganise for cloud content --- README.md | 38 ------------------- docs/background/_category_.yml | 5 +++ docs/background/collateral.mdx | 33 ++++++++++++++++ docs/{intro.md => index.md} | 6 +-- docs/{ => link}/admin/_category_.yml | 0 docs/{ => link}/admin/intro.md | 0 docs/{ => link}/agent/_category_.yml | 0 docs/{ => link}/agent/intro.md | 0 docs/{ => link}/hosted.md | 2 +- docs/link/index.mdx | 15 ++++++++ docs/{ => link}/operator/_category_.yml | 0 docs/{ => link}/operator/architecture.md | 0 docs/{ => link}/operator/deploy-host.md | 0 docs/{ => link}/operator/deploy.md | 0 docs/{ => link}/operator/identity.md | 0 docs/{ => link}/operator/requirements.md | 0 docs/mirrors/index.mdx | 26 +++++++++++++ docs/mirrors/troubleshooting.mdx | 32 ++++++++++++++++ docusaurus.config.js | 46 ++++++++--------------- src/pages/index.module.css | 2 +- static/img/cdr-logo.svg | 25 ------------ static/img/favicon.ico | Bin 15406 -> 15406 bytes static/img/link-logo.png | Bin 4668 -> 0 bytes static/img/sr2-logo.webp | Bin 0 -> 12830 bytes 24 files changed, 131 insertions(+), 99 deletions(-) create mode 100644 docs/background/_category_.yml create mode 100644 docs/background/collateral.mdx rename docs/{intro.md => index.md} (63%) rename docs/{ => link}/admin/_category_.yml (100%) rename docs/{ => link}/admin/intro.md (100%) rename docs/{ => link}/agent/_category_.yml (100%) rename docs/{ => link}/agent/intro.md (100%) rename docs/{ => link}/hosted.md (99%) create mode 100644 docs/link/index.mdx rename docs/{ => link}/operator/_category_.yml (100%) rename docs/{ => link}/operator/architecture.md (100%) rename docs/{ => link}/operator/deploy-host.md (100%) rename docs/{ => link}/operator/deploy.md (100%) rename docs/{ => link}/operator/identity.md (100%) rename docs/{ => link}/operator/requirements.md (100%) create mode 100644 docs/mirrors/index.mdx create mode 100644 docs/mirrors/troubleshooting.mdx delete mode 100644 static/img/cdr-logo.svg delete mode 100644 static/img/link-logo.png create mode 100644 static/img/sr2-logo.webp diff --git a/README.md b/README.md index b28211a..b4dd857 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,3 @@ # Website This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. - -## Installation - -```bash -yarn -``` - -## Local Development - -```bash -yarn start -``` - -This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. - -## Build - -```bash -yarn build -``` - -This command generates static content into the `build` directory and can be served using any static contents hosting service. - -## Deployment - -Using SSH: - -```bash -USE_SSH=true yarn deploy -``` - -Not using SSH: - -```bash -GIT_USER= yarn deploy -``` - -If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/docs/background/_category_.yml b/docs/background/_category_.yml new file mode 100644 index 0000000..db09b3c --- /dev/null +++ b/docs/background/_category_.yml @@ -0,0 +1,5 @@ +--- +label: Background Topics +position: 30 +link: + type: "generated-index" diff --git a/docs/background/collateral.mdx b/docs/background/collateral.mdx new file mode 100644 index 0000000..cc5c561 --- /dev/null +++ b/docs/background/collateral.mdx @@ -0,0 +1,33 @@ +--- +title: Collateral Freedom +sidebar_position: 10 +--- + +Collateral freedom is an anti-censorship strategy that attempts to make it **economically prohibitive** for censors to +block a resource. +The diverse needs of businesses to exchange information across international borders makes it impossible to build a +catalogue of "good" and "bad" networks or websites. +A censor requires some confidence when they block a resource that it won't be affecting economic activity. +It’s difficult to achieve accuracy with filtering as most internet traffic is encrypted and must be categorised +at speed to make blocking decisions. +As a result, censors will usually err on the side of under-blocking. + +One way to exploit this is by deploying solutions in large platforms that are **“too big to block”**, like public cloud +providers. +Public cloud providers host large numbers of clients in shared infrastructure to benefit from economies of scale, but +this sharing also makes it difficult to know what content is being accessed. +Similarly, large social networks host content from large numbers of publishers but all traffic between the user and the +social network is typically encrypted and so the censor cannot know what is being read. +Blocking the cloud provider would have a negative impact on businesses and would hurt state revenue, and blocking the +social media platform would cause backlash from the people: neither is an attractive option for the censor. + +Another approach is to use constantly rotating identifiers, as even where a resource may be easy to block once +identified, a new resource can be deployed quickly to replace it rendering the blocks ineffective. +Due to erring on the side of under-blocking, attempts to access previously unseen content usually succeed. +Even with a procedure for screening or approval, blocking by default would bog down innovation and development to the +extent that it could cease, certainly falling behind other economies. +This approach is particularly suited for news media where the majority of readers will be interested in an article for +only a short time after it is published, and if it is later blocked by the censor then the effect will be minimal. + +With collateral freedom on your side **you can have the upper hand** when it comes to making your content accessible to +your audience. diff --git a/docs/intro.md b/docs/index.md similarity index 63% rename from docs/intro.md rename to docs/index.md index 52b92bb..a89ddc4 100644 --- a/docs/intro.md +++ b/docs/index.md @@ -1,10 +1,10 @@ --- sidebar_position: 1 -sidebar_label: Overview +sidebar_label: Welcome --- # Documentation Overview :::warning[Under construction] -This documentation is a work in progress. Please [get in touch with us](mailto:help@cdr.link) if you have any questions. -::: \ No newline at end of file +This documentation is a work in progress. Please [get in touch with us](mailto:contact@sr2.uk) if you have any questions. +::: diff --git a/docs/admin/_category_.yml b/docs/link/admin/_category_.yml similarity index 100% rename from docs/admin/_category_.yml rename to docs/link/admin/_category_.yml diff --git a/docs/admin/intro.md b/docs/link/admin/intro.md similarity index 100% rename from docs/admin/intro.md rename to docs/link/admin/intro.md diff --git a/docs/agent/_category_.yml b/docs/link/agent/_category_.yml similarity index 100% rename from docs/agent/_category_.yml rename to docs/link/agent/_category_.yml diff --git a/docs/agent/intro.md b/docs/link/agent/intro.md similarity index 100% rename from docs/agent/intro.md rename to docs/link/agent/intro.md diff --git a/docs/hosted.md b/docs/link/hosted.md similarity index 99% rename from docs/hosted.md rename to docs/link/hosted.md index 9eaa656..c4ab396 100644 --- a/docs/hosted.md +++ b/docs/link/hosted.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 50 --- # Hosted CDR Link FAQ diff --git a/docs/link/index.mdx b/docs/link/index.mdx new file mode 100644 index 0000000..d8c3667 --- /dev/null +++ b/docs/link/index.mdx @@ -0,0 +1,15 @@ +--- +sidebar_position: 1 +sidebar_label: Link Helpdesk +--- + +import DocCardList from '@theme/DocCardList'; +import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; + +# Documentation Overview + +:::warning[Under construction] +This documentation is a work in progress. Please [get in touch with us](mailto:contact@sr2.uk) if you have any questions. +::: + + diff --git a/docs/operator/_category_.yml b/docs/link/operator/_category_.yml similarity index 100% rename from docs/operator/_category_.yml rename to docs/link/operator/_category_.yml diff --git a/docs/operator/architecture.md b/docs/link/operator/architecture.md similarity index 100% rename from docs/operator/architecture.md rename to docs/link/operator/architecture.md diff --git a/docs/operator/deploy-host.md b/docs/link/operator/deploy-host.md similarity index 100% rename from docs/operator/deploy-host.md rename to docs/link/operator/deploy-host.md diff --git a/docs/operator/deploy.md b/docs/link/operator/deploy.md similarity index 100% rename from docs/operator/deploy.md rename to docs/link/operator/deploy.md diff --git a/docs/operator/identity.md b/docs/link/operator/identity.md similarity index 100% rename from docs/operator/identity.md rename to docs/link/operator/identity.md diff --git a/docs/operator/requirements.md b/docs/link/operator/requirements.md similarity index 100% rename from docs/operator/requirements.md rename to docs/link/operator/requirements.md diff --git a/docs/mirrors/index.mdx b/docs/mirrors/index.mdx new file mode 100644 index 0000000..08343d2 --- /dev/null +++ b/docs/mirrors/index.mdx @@ -0,0 +1,26 @@ +--- +title: Web Mirrors +sidebar_position: 20 +--- + +A web mirror can help users by providing alternate URLs to access censored resources, allowing them to bypass censorship +and access information that may be otherwise blocked. +Web mirrors work by forwarding requests to the original website, and providing a different URL to access that content. + +Dynamic web mirrors use frequently changing URLs to evade censorship, making it more difficult for censors to maintain +blocks for the content. +This assumption of a limited lifetime is built-in to the system, allowing for automated block detection to trigger the +deployment of new URLs, and for the new URLs to be made available via the portal, the API, and via dead drops. + +Named web mirrors use alternative domain names with limited distribution to evade censorship. +By blending with the "long tail" of web traffic, it may take longer for these mirrors to be discovered. + +Web mirrors can be accessed via a normal web browser, making them easily accessible to users without requiring any +special software or technical knowledge. + +
+ +
+ The jasima.app portal overview for web mirrors +
+
\ No newline at end of file diff --git a/docs/mirrors/troubleshooting.mdx b/docs/mirrors/troubleshooting.mdx new file mode 100644 index 0000000..1efd7ac --- /dev/null +++ b/docs/mirrors/troubleshooting.mdx @@ -0,0 +1,32 @@ +--- +title: Troubleshooting +sidebar_position: 100 +--- + +We have collected solutions to common issued faced by web mirrors users. +If you are unable to resolve your issue, please [get in touch](/contact) with us to discuss the options. + +## Upstream Rate Limiting + +CDNs (Content Delivery Networks) can impose rate limiting or "bot detection" on websites to ensure that the network +resources are efficiently utilized, to protect the websites from Denial of Service (DoS) attacks, and to +maintain the quality of service for all the websites using the CDN. +If you find that mirrors are producing many “Rate Limited Exceeded” or “Access Denied” errors then you may be suffering +from this problem. + +These rate limits will be sized according to the expected rate of requests from an average user, however the mirror +system is a bottleneck that aggregates requests from multiple users and passes these on to the original CDN. +When a single system is used to send a large number of requests to a CDN like this, the CDN may interpret this as a +DoS attack and prevent access to the website. + +The optimal approach is to configure the origin to use an alternative host for connections, so that the CDN is bypassed +and the backend origin (web server) is used directly. +The mirror will still be the access point for users and this will not reveal the location of the backend origin to your +users. + +If this is not possible, then deploying mirrors for websites hosted on CDNs will require either configuration at, or +co-operation from, the CDN provider. +Additional headers can be configured for the origin to authenticate requests that originate from jasima.app, and these +can be used to bypass the protection mechanisms at your CDN. +Consult your CDN's documentation or contact their support team to configure using an additional header to disable the +rate limiting for requests originating from jasima.app. \ No newline at end of file diff --git a/docusaurus.config.js b/docusaurus.config.js index 365e1f3..d0b8ef4 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -10,8 +10,8 @@ import {themes as prismThemes} from 'prism-react-renderer'; /** @type {import('@docusaurus/types').Config} */ const config = { - title: 'CDR Link', - tagline: 'A guide for agents, admins, and operators', + title: 'SR2® Cloud', + tagline: 'A cloud for civil society', favicon: 'img/favicon.ico', // Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future @@ -20,7 +20,7 @@ const config = { }, // Set the production url of your site here - url: 'https://docs.cdr.link', + url: 'https://docs.sr2.uk', // Set the // pathname under which your site is served // For GitHub pages deployment, it is often '//' baseUrl: '/', @@ -83,12 +83,12 @@ const config = { respectPrefersColorScheme: true, }, navbar: { - title: 'CDR Link', + title: 'SR2® Cloud', logo: { alt: '', - src: 'img/link-logo.png', - // href: 'https://www.digiresilience.org/solutions/link/', - // target: '_self', + src: 'img/sr2-logo.webp', + href: '/', + target: '_self', }, items: [ { @@ -112,47 +112,31 @@ const config = { title: 'Docs', items: [ { - label: 'Agent Guide', - to: '/docs/category/agent-guide', + label: 'Link Helpdesk', + to: '/docs/link', }, { - label: 'Admin Guide', - to: '/docs/category/admin-guide', - }, - { - label: 'Operator Guide', - to: '/docs/category/operator-guide', + label: 'Web Mirrors', + to: '/docs/mirrors', }, ], }, { - title: 'Policy', + title: '2nd Column', items: [ - { - label: 'Code of Practice', - href: 'https://digiresilience.org/about/code-practice/', - }, - { - label: 'Code of Conduct', - href: 'https://digiresilience.org/about/code-conduct/', - }, ], }, { title: 'More', items: [ { - label: 'Center for Digital Resilience', - href: 'https://digiresilience.org/', - }, - { - label: 'GitLab', - href: 'https://gitlab.com/digiresilience/link/', + label: 'Git', + href: 'https://guardianproject.dev/sr2/', }, ], }, ], - copyright: `Copyright © 2021-${new Date().getFullYear()}. This documentation is made available to you under the terms of the Creative Commons Attribution 4.0 International licence.`, + copyright: `Copyright © 2021-${new Date().getFullYear()} SR2 Communications Limited.
This documentation is made available to you under the terms of the Creative Commons Attribution 4.0 International licence.`, }, prism: { theme: prismThemes.github, diff --git a/src/pages/index.module.css b/src/pages/index.module.css index 08c6dcc..7c22e45 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -8,7 +8,7 @@ text-align: center; position: relative; overflow: hidden; - background-image: linear-gradient(270deg, rgb(255, 113, 21), rgb(250, 201, 66)); + background-image: linear-gradient(270deg, #004B67, #009A64); } @media screen and (max-width: 996px) { diff --git a/static/img/cdr-logo.svg b/static/img/cdr-logo.svg deleted file mode 100644 index 9223d44..0000000 --- a/static/img/cdr-logo.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/img/favicon.ico b/static/img/favicon.ico index 0f774f10945956b64c0459d8f9e0a155f10f907c..e0cddb0f02beb0e0a0d35839a7238ce4d1195652 100644 GIT binary patch literal 15406 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 literal 15406 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 diff --git a/static/img/link-logo.png b/static/img/link-logo.png deleted file mode 100644 index 7de12ef98a58a79413333ea11f901d46f4e512b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4668 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