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 0f774f1..e0cddb0 100644 Binary files a/static/img/favicon.ico and b/static/img/favicon.ico differ diff --git a/static/img/link-logo.png b/static/img/link-logo.png deleted file mode 100644 index 7de12ef..0000000 Binary files a/static/img/link-logo.png and /dev/null differ diff --git a/static/img/sr2-logo.webp b/static/img/sr2-logo.webp new file mode 100644 index 0000000..742547d Binary files /dev/null and b/static/img/sr2-logo.webp differ