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/account/index.md b/docs/account/index.md new file mode 100644 index 0000000..a817535 --- /dev/null +++ b/docs/account/index.md @@ -0,0 +1,6 @@ +--- +sidebar_position: 10 +--- + +# User Accounts + diff --git a/docs/admin/_category_.yml b/docs/admin/_category_.yml deleted file mode 100644 index fc2a715..0000000 --- a/docs/admin/_category_.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -label: Admin Guide -position: 30 -link: - type: "generated-index" diff --git a/docs/agent/intro.md b/docs/agent/intro.md deleted file mode 100644 index e07d6bb..0000000 --- a/docs/agent/intro.md +++ /dev/null @@ -1,5 +0,0 @@ -# Introduction - -:::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 diff --git a/docs/background/_category_.yml b/docs/background/_category_.yml new file mode 100644 index 0000000..4f72b9a --- /dev/null +++ b/docs/background/_category_.yml @@ -0,0 +1,5 @@ +--- +label: Background Topics +position: 5 +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 55% rename from docs/intro.md rename to docs/index.md index 52b92bb..9cd0f25 100644 --- a/docs/intro.md +++ b/docs/index.md @@ -1,10 +1,10 @@ --- -sidebar_position: 1 -sidebar_label: Overview +sidebar_position: 0 +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/link/admin/e2e_channels.md b/docs/link/admin/e2e_channels.md new file mode 100644 index 0000000..d3e9ad2 --- /dev/null +++ b/docs/link/admin/e2e_channels.md @@ -0,0 +1,141 @@ +--- +label: E2E channels +sidebar_position: 50 +description: Setting up E2E channels (Signal and WhatsApp) +--- + +# End-to-end encrypted channels + +## Initial setup + +1. Log in to your CDR Link helpdesk admin panel using either ‘Sign in with Google button’ or Sign in with Zammad credentials’: + +![Untitled](/docs/link/admin/Untitled.png) + +1. Using the left side menu go to Admin → **WhatsApp** (or **Signal**): + +![Untitled](/docs/link/admin/d33b0fb2-d2e4-4130-9dfc-4e5e26ab2fad.png) + +1. Create the **WhatsApp** (or **Signal**) connection by using the blue ‘Create’ button in top right corner of the screen: + +![Untitled](/docs/link/admin/Untitled%201.png) + +You will see a pop-up window like the one below: + +- Fill the ‘Name’ field with some recognisable name (it can be useful to name it like ‘Signal handset 1’ in case if you are planning to use more numbers) of the channel +- Fill ‘Phone Number’ field with your handsets phone number containing the relevant country code. + +![Untitled](/docs/link/admin/Untitled%202.png) + +- Click ‘Save’. +1. You will see next window with QR code similar to the following: + + + + +![Untitled](/docs/link/admin/Untitled%203.png) + +- Copy the Token and save it in a safe place. +- Now you need to scan the code. Depending on which channel you are configuring you have to follow the instructions below (they may vary slightly depending on what kind of device you are using, in example we are using Android device): + - For **WhatsApp**: + - Go to main screen (screen with all chats visible). + - On the top right corner tap the ‘three dots’ icon. + - From the drop down menu tap on the ‘Linked devices’. + - Tap the green ‘Link a device’ button. + - Scan the code from your computers screen. + - For **Signal**: + - Go to the main screen (screen with all chats visible). + - On the top right corner tap the ‘three dots’ icon. + - From the drop down menu tap on the ‘Settings’. + - Tap on the ‘Linked devices’. + - Tap the blue ‘Link a device’ button. + - Scan the code from your computers screen. + - In both cases after scanning the code you should see your newly linked channel connection under the ‘Linked devices’ list of your WhatsApp/Signal communicator. +- You can press the blue ‘Done’ button on your connection screen. +1. Now you need to create a bot. Using the left side menu go to Admin → Zammad Settings → Channels → **WhatsApp** (or **Signal**): + +![Untitled](/docs/link/admin/Untitled%204.png) + +1. Create the **WhatsApp** (or **Signal)** bot by using the green ‘Add WhatsApp bot’ (or ‘Add Signal bot’) button in top right corner of the screen: + +![Untitled](/docs/link/admin/Untitled%205.png) + +You will see a pop up window like the one below: + +- Fill the ‘Phone Number’ field with same phone number as you used in point 3. +- Paste the bot token from point 4 into the ‘Bot Token’ field (in case if you lost it you can always come back to the admin and click on the previously created connection in order to retrieve the token. +- In ‘Bot Endpoint’ field paste: + - For **WhatsApp:** + + ```json + + http://link:3000/link/api/whatsapp + ``` + + - For **Signal**: + + ```json + + http://link:3000/link/api/signal + ``` + +- You can leave the ‘Users’ and ‘Organization’ fields as they are or pick the relevant values. + +![Untitled](/docs/link/admin/7e1319ba-5c17-4eae-8226-44bbae0f7e54.png) + +- Click the ‘Submit’ button. +- You will see your newly created bot on the list - click the ‘Edit’ button on the right side of the bot: + +![Untitled](/docs/link/admin/Untitled%206.png) + +- You will see the same form as previously but with one additional field: ‘Endpoint URL’ - copy the part after **https://your-helpdesk.cdr.link/api/v1/channels_cdr_whatsapp_webhook/** or **https://your-helpdesk.cdr.link/api/v1/channels_cdr_signal_webhook/** - make sure to copy all of it as it is a very long code as you can see in the example below: + +![Untitled](/docs/link/admin/Untitled%207.png) + +![Untitled](/docs/link/admin/Untitled%208.png) + +- Paste the code in the safe temporary place and click on the ‘Cancel & Go Back’ link on the left bottom corner of the form. +1. The last part is to create a Webhook. Go back to the Admin panel, select Admin → Webhooks: + +![Untitled](/docs/link/admin/Untitled%209.png) + +- Click the blue ‘Create’ button in top right corner: + +![Untitled](/docs/link/admin/Untitled%2010.png) + +- You will see a webhook creation form like the one below: + +![Untitled](/docs/link/admin/Untitled%2011.png) + +- In the ‘Name’ field type some name that is relating to the channel name and handset. +- The method drop down menu should be left with ‘Post’. +- In the ‘Endpoint’ field paste: + - For **WhatsApp**: + + ```text + http://zammad-nginx:8080/api/v1/channels_cdr_whatsapp_webhook/xxxxxxx + ``` + + `where ‘xxxxxx’ should be replaced with the code copied from ‘Endpoint URL’ from point 6` + + - For **Signal**: + + ```text + http://zammad-nginx:8080/api/v1/channels_cdr_signal_webhook/xxxxxxx + ``` + + `where ‘xxxxxx’ should be replaced with the code copied from ‘Endpoint URL’ from point 6` + +- Below there are two drop down menus: + - In the left one pick the relevant channel. + - In the right one pick the bot name that you created in step 3. +- Click the blue ‘Save’ button. + +🎉 Congrats! Your connection is ready! + +## Reconnection \ No newline at end of file diff --git a/docs/link/admin/index.mdx b/docs/link/admin/index.mdx new file mode 100644 index 0000000..a4bbcc9 --- /dev/null +++ b/docs/link/admin/index.mdx @@ -0,0 +1,15 @@ +--- +sidebar_label: Admin Guide +sidebar_position: 30 +--- + +import DocCardList from '@theme/DocCardList'; +import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; + +# Admin Guide + +:::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. +::: + + \ No newline at end of file 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/admin/intro.md b/docs/link/agent/intro.md similarity index 66% rename from docs/admin/intro.md rename to docs/link/agent/intro.md index e07d6bb..a7775fa 100644 --- a/docs/admin/intro.md +++ b/docs/link/agent/intro.md @@ -1,5 +1,5 @@ # Introduction :::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. +This documentation is a work in progress. Please [get in touch with us](mailto:contact@sr2.uk) if you have any questions. ::: \ No newline at end of file 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..bc4e29e --- /dev/null +++ b/docs/link/index.mdx @@ -0,0 +1,15 @@ +--- +sidebar_position: 20 +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..d9156bc --- /dev/null +++ b/docs/mirrors/index.mdx @@ -0,0 +1,26 @@ +--- +title: Web Mirrors +sidebar_position: 30 +--- + +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..97a96bf 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,16 +112,12 @@ 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', }, ], }, @@ -129,30 +125,36 @@ const config = { title: 'Policy', items: [ { - label: 'Code of Practice', - href: 'https://digiresilience.org/about/code-practice/', + label: 'Terms and Conditions', + href: 'https://www.sr2.uk/terms', }, { - label: 'Code of Conduct', - href: 'https://digiresilience.org/about/code-conduct/', + label: 'Privacy Policy', + href: 'https://www.sr2.uk/privacy', }, + { + label: 'Complaints Policy', + href: 'https://www.sr2.uk/complaints', + } ], }, { title: 'More', items: [ { - label: 'Center for Digital Resilience', - href: 'https://digiresilience.org/', + label: 'SR2 Communications', + href: 'https://www.sr2.uk/', }, { - label: 'GitLab', - href: 'https://gitlab.com/digiresilience/link/', + label: 'Open Source', + 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: ` + SR2 Cloud Documentation © 2021-${new Date().getFullYear()} is licensed under CC BY 4.0. +
SR2® and SR2 Communications® are registered trademarks of SR2 Communications Limited, a company registered in Scotland, number SC692687.` }, prism: { theme: prismThemes.github, diff --git a/src/pages/index.js b/src/pages/index.js index 9e8ae15..8edc87b 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -16,6 +16,19 @@ function HomepageHeader() { {siteConfig.title}

{siteConfig.tagline}

+
+ + Login to Console 🧑‍💻 + + + Read the Docs 📚 + +
+ ); @@ -26,7 +39,7 @@ export default function Home() { return ( + description="Cloud.">
diff --git a/src/pages/index.module.css b/src/pages/index.module.css index 08c6dcc..820fffb 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) { @@ -21,4 +21,5 @@ display: flex; align-items: center; justify-content: center; + gap: 1rem; } diff --git a/static/docs/link/admin/7e1319ba-5c17-4eae-8226-44bbae0f7e54.png b/static/docs/link/admin/7e1319ba-5c17-4eae-8226-44bbae0f7e54.png new file mode 100644 index 0000000..09684a5 Binary files /dev/null and b/static/docs/link/admin/7e1319ba-5c17-4eae-8226-44bbae0f7e54.png differ diff --git a/static/docs/link/admin/Untitled 1.png b/static/docs/link/admin/Untitled 1.png new file mode 100644 index 0000000..2712a3d Binary files /dev/null and b/static/docs/link/admin/Untitled 1.png differ diff --git a/static/docs/link/admin/Untitled 10.png b/static/docs/link/admin/Untitled 10.png new file mode 100644 index 0000000..70d7eb8 Binary files /dev/null and b/static/docs/link/admin/Untitled 10.png differ diff --git a/static/docs/link/admin/Untitled 11.png b/static/docs/link/admin/Untitled 11.png new file mode 100644 index 0000000..d1b5356 Binary files /dev/null and b/static/docs/link/admin/Untitled 11.png differ diff --git a/static/docs/link/admin/Untitled 2.png b/static/docs/link/admin/Untitled 2.png new file mode 100644 index 0000000..0b6fbca Binary files /dev/null and b/static/docs/link/admin/Untitled 2.png differ diff --git a/static/docs/link/admin/Untitled 3.png b/static/docs/link/admin/Untitled 3.png new file mode 100644 index 0000000..26af39f Binary files /dev/null and b/static/docs/link/admin/Untitled 3.png differ diff --git a/static/docs/link/admin/Untitled 4.png b/static/docs/link/admin/Untitled 4.png new file mode 100644 index 0000000..8ef9987 Binary files /dev/null and b/static/docs/link/admin/Untitled 4.png differ diff --git a/static/docs/link/admin/Untitled 5.png b/static/docs/link/admin/Untitled 5.png new file mode 100644 index 0000000..d2dfd19 Binary files /dev/null and b/static/docs/link/admin/Untitled 5.png differ diff --git a/static/docs/link/admin/Untitled 6.png b/static/docs/link/admin/Untitled 6.png new file mode 100644 index 0000000..dda98ca Binary files /dev/null and b/static/docs/link/admin/Untitled 6.png differ diff --git a/static/docs/link/admin/Untitled 7.png b/static/docs/link/admin/Untitled 7.png new file mode 100644 index 0000000..ee573e9 Binary files /dev/null and b/static/docs/link/admin/Untitled 7.png differ diff --git a/static/docs/link/admin/Untitled 8.png b/static/docs/link/admin/Untitled 8.png new file mode 100644 index 0000000..e955c1a Binary files /dev/null and b/static/docs/link/admin/Untitled 8.png differ diff --git a/static/docs/link/admin/Untitled 9.png b/static/docs/link/admin/Untitled 9.png new file mode 100644 index 0000000..ff27e41 Binary files /dev/null and b/static/docs/link/admin/Untitled 9.png differ diff --git a/static/docs/link/admin/Untitled.png b/static/docs/link/admin/Untitled.png new file mode 100644 index 0000000..7603ddd Binary files /dev/null and b/static/docs/link/admin/Untitled.png differ diff --git a/static/docs/link/admin/d33b0fb2-d2e4-4130-9dfc-4e5e26ab2fad.png b/static/docs/link/admin/d33b0fb2-d2e4-4130-9dfc-4e5e26ab2fad.png new file mode 100644 index 0000000..1bc206e Binary files /dev/null and b/static/docs/link/admin/d33b0fb2-d2e4-4130-9dfc-4e5e26ab2fad.png differ 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