Compare commits

..

No commits in common. 'main' and 'main' have entirely different histories.
main ... main

@ -1,5 +0,0 @@
node_modules
.git
build
Containerfile
.svelte-kit

@ -1,13 +0,0 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example
# Ignore files for PNPM, NPM and YARN
pnpm-lock.yaml
package-lock.json
yarn.lock

@ -1,30 +0,0 @@
module.exports = {
root: true,
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:svelte/recommended',
'prettier'
],
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
parserOptions: {
sourceType: 'module',
ecmaVersion: 2020,
extraFileExtensions: ['.svelte']
},
env: {
browser: true,
es2017: true,
node: true
},
overrides: [
{
files: ['*.svelte'],
parser: 'svelte-eslint-parser',
parserOptions: {
parser: '@typescript-eslint/parser'
}
}
]
};

10
.gitignore vendored

@ -1,10 +0,0 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example
vite.config.js.timestamp-*
vite.config.ts.timestamp-*

@ -1,2 +0,0 @@
engine-strict=true
resolution-mode=highest

@ -1,13 +0,0 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example
# Ignore files for PNPM, NPM and YARN
pnpm-lock.yaml
package-lock.json
yarn.lock

@ -1,9 +0,0 @@
{
"useTabs": true,
"singleQuote": false,
"trailingComma": "none",
"printWidth": 100,
"plugins": ["prettier-plugin-svelte"],
"pluginSearchDirs": ["."],
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
}

@ -1,28 +0,0 @@
FROM docker.io/node:19.5.0-alpine AS base
WORKDIR /app
COPY package.json package-lock.json ./
FROM base AS builder
# install dependencies
RUN npm ci
# Copy all local files into the image.
COPY . .
RUN npm run build
###
# Only copy over the Node pieces we need
# ~> Saves 35MB
###
FROM base
COPY --from=builder /app/build .
COPY ./server.js .
RUN npm ci --omit dev
ENV HOST=0.0.0.0
EXPOSE 3000
CMD ["node", "server.js"]

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>No Chromium</title>
<link rel="stylesheet" href="style.css" />
<link rel="icon" href="favicon.ico" type="image/x-icon" sizes="any" />
</head>
<body>
<header class="banner">
<h1>No Chromium</h1>
<h2>Do not use Chromium</h2>
<h3>Use a different web browser</h3>
</header>
<main class="content">
<h2>What is Chromium?</h2>
<p>
Chromium is a web browser developed by Google. Many modern web browsers
use its codebase and extend upon it, for example:
</p>
<ul>
<li>Google Chrome</li>
<li>Opera</li>
<li>Microsoft Edge</li>
<li>Brave Browser</li>
<li>
<a href="https://en.wikipedia.org/wiki/Chromium_(web_browser)">
And many others
</a>
</li>
</ul>
<h2>Why is this a bad thing?</h2>
<p>
Chromium based browsers dominate the market. This means that any changes
Google makes to the Chromium code base are also present in the browsers
that build on it. As Chromium based browsers are the majority, websites
have to adapt. This also forces non chromium browsers like Firefox to
implement these changes. This gives Google the power to steer the web in
a direction they benefit from the most.
</p>
<h2>Examples</h2>
<ul>
<li>Web Environment Integrity</li>
<li>Widevine</li>
<li style="color: red">TODO...</li>
</ul>
<h2>What can I do</h2>
<p>
You should use alternative browsers like
<a href="https://www.mozilla.org/en-US/firefox/">Firefox</a> or, even
better, <a href="https://librewolf.net/">LibreWolf</a>
</p>
</main>
</body>
</html>

@ -1,37 +0,0 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
listen [::]:80;
server_name localhost;
index index.html index.htm;
location / {
root /usr/share/nginx/html;
try_files $uri$args $uri$args/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}

4496
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -1,42 +0,0 @@
{
"name": "no-chromium",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"lint": "prettier --plugin-search-dir . --check . && eslint .",
"format": "prettier --plugin-search-dir . --write ."
},
"devDependencies": {
"@sveltejs/kit": "^1.20.4",
"@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^5.45.0",
"autoprefixer": "^10.4.14",
"eslint": "^8.28.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-svelte": "^2.30.0",
"postcss": "^8.4.27",
"prettier": "^2.8.0",
"prettier-plugin-svelte": "^2.10.1",
"svelte": "^4.0.5",
"svelte-check": "^3.4.3",
"tailwindcss": "^3.3.3",
"tslib": "^2.4.1",
"typescript": "^5.0.0",
"vite": "^4.4.2"
},
"type": "module",
"dependencies": {
"@sveltejs/adapter-node": "^1.3.1",
"@tailwindcss/typography": "^0.5.9",
"cors": "^2.8.5",
"detect-browser": "^5.3.0",
"express": "^4.18.2",
"fetch-opengraph": "^1.0.36",
"sass": "^1.64.1"
}
}

@ -1,6 +0,0 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>No Chromium</title>
<link rel="stylesheet" href="style.css" />
<link rel="icon" href="favicon.ico" type="image/x-icon" sizes="any" />
</head>
<body>
<div class="container">
<div class="banner">
<h1>No Chromium</h1>
<h2>This website does not accept chromium based browsers</h2>
<h3>Use a different web browser</h3>
<h4><a href="index.html">Why?</a></h4>
</div>
</div>
</body>
</html>

@ -1,14 +0,0 @@
import { handler } from "./handler.js";
import express from "express";
import cors from 'cors';
const app = express();
app.use("/popup/", cors());
// let SvelteKit handle everything else, including serving prerendered pages and static assets
app.use(handler);
app.listen(3000, () => {
console.log("listening on port 3000");
});

@ -1,9 +0,0 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
body {
min-height: 1vh;
min-height: 100vh;
margin: 0;
}

12
src/app.d.ts vendored

@ -1,12 +0,0 @@
// See https://kit.svelte.dev/docs/types#app
// for information about these interfaces
declare global {
namespace App {
// interface Error {}
// interface Locals {}
// interface PageData {}
// interface Platform {}
}
}
export {};

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>No Chromium</title>
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>

@ -1,18 +0,0 @@
import {detect} from "detect-browser";
const browser = detect();
export function getBrowserName(): string {
return `${ browser.name[0].toUpperCase() }${ browser.name.substring(1) }`;
}
export function isChromium(): boolean {
switch (browser.name) {
case "chrome":
case "opera":
case "edge":
return true;
default:
return false;
}
}

@ -1 +0,0 @@
// place files you want to import through the `$lib` alias in this folder.

@ -1,14 +0,0 @@
<script>
import "../app.css";
import Footer from "./footer.svelte";
</script>
<style lang="scss">
.main {
margin-bottom: 2.6em;
}
</style>
<div class="main">
<slot/>
</div>
<Footer/>

@ -1,112 +0,0 @@
<script>
import Article from "./article.svelte";
</script>
<header class="container mx-auto mb-20 mt-40 text-center font-bold">
<h1 class="leading-normal text-7xl">No Chromium</h1>
<h3 class="leading-normal text-5xl">Use a different web browser</h3>
</header>
<main class="w-10/12 md:w-2/3 xl:w-1/2 mx-auto prose max-w-none">
<h2>What is Chromium?</h2>
<p>
Chromium is a web browser developed by Google. Many modern web browsers
use its codebase and extend upon it, for example:
</p>
<ul>
<li>Google Chrome</li>
<li>Opera</li>
<li>Microsoft Edge</li>
<li>Brave Browser</li>
</ul>
<a href="https://en.wikipedia.org/wiki/Chromium_(web_browser)" aria-label="Link to the Chromium Wikipedia page.">
More Information
</a>
<h2>Why is this a bad thing?</h2>
<p>
Chromium based browsers dominate the market. This means that any changes
Google makes to the Chromium code base are also present in the browsers
that build on it. As Chromium based browsers are the majority, websites
have to adapt. This also forces non chromium browsers like Firefox to
implement these changes. This gives Google the power to steer the web in
a direction they benefit from the most.
</p>
<h2>What can I do</h2>
<p>
You should use alternative browsers like
<a href="https://www.mozilla.org/en-US/firefox/" aria-label="Link to the Firefox download page.">
Firefox
</a>
or, even
better,
<a href="https://librewolf.net/" aria-label="Link to the LibreWolf website.">
LibreWolf
</a>.
</p>
<hr>
<h2>Examples</h2>
<section>
<h3>Web Environment Integrity</h3>
<p>
The Web Environment Integrity spec is a proposal by Google engineers
to add a mechanism to browsers that verifies them and the platform it's running on
to be trusted by third party (attester). This is often compared as being
<abbr title="Digital Rights Management">DRM</abbr> for Websites.
<br><br>
As an example Google Play is named as an attester for Android.
Of course this would enable Google to mark their own
Browser, Google Chrome, as trusted. Furthermore Google would be able to discourage the
use of Browsers that harm their business model (selling ads) like Firefox, a browser
that has a rich ecosystem of ad blockers and tracker protection.
<br><br>
On Windows Systems, Microsoft will likely play the role of the attester and
encourage the use of Edge. Which third would attest for a Browser to be trusted on
Linux distributions is not clear yet. There might be different attesters
being used in different distributions. More niche distros might have trouble
finding a third party to attest for their platform.
<br><br>
By implementing this spec Google is also forcing other browsers to do the same.
Browsers that don't implement the spec would simply not be trusted by websites
for demand the browser to proof it is trusted.
</p>
<details>
<summary>More Info</summary>
<ul>
<li>
<Article
url="https://vivaldi.com/blog/googles-new-dangerous-web-environment-integrity-spec/"
author="Julien Picalausa"
title = "Unpacking Googles new &quot;dangerous&quot; Web-Environment-Integrity specification"
/>
</li>
<li>
<Article
url="https://www.theregister.com/2023/07/25/google_web_environment_integrity/"
author="Thomas Claburn"
title="Google's next big idea for browser security looks like another freedom grab to some"
/>
</li>
<li>
<Article
url="https://github.com/RupertBenWiser/Web-Environment-Integrity/blob/main/explainer.md"
author= "Ben Wiser (Google), Borbala Benko (Google), Philipp Pfeiffenberger (Google), Sergey Kataev (Google)"
title="Web Environment Integrity Explainer"
/>
</li>
</ul>
</details>
</section>
<section>
<h3>FLOC</h3>
</section>
<section>
<h3>Widevine</h3>
</section>
</main>

@ -1 +0,0 @@
export const prerender = true;

@ -1,13 +0,0 @@
<script lang="ts">
export let url: string;
export let title: string;
export let author: string;
</script>
<a href="{ url }">
<span class="author">{ author }</span>
-
<i class="title">{ title }</i>
</a>

@ -1,20 +0,0 @@
<header class="w-10/12 md:w-2/3 xl:w-1/2 mx-auto mb-20 prose">
<div class="mb-10 mt-10"><a href="/">Back</a></div>
<h1>Credits</h1>
</header>
<main class="w-10/12 md:w-2/3 xl:w-1/2 mx-auto prose">
<h2><a href="https://tech.lgbt/@sara">Sara</a></h2>
<ul>
<li>Icons</li>
</ul>
<h2><a href="https://tech.lgbt/@punishedbernadetta">Punished Bernadetta</a></h2>
<ul>
<li>Style Improvements</li>
</ul>
<h2><a href="https://social.funkyfish.cool/@trivernis">Trivernis</a></h2>
<ul>
<li>Repository Owner</li>
</ul>
</main>

@ -1 +0,0 @@
export const prerender = true;

@ -1,43 +0,0 @@
<style lang="scss">
.footer {
height: 2.5em;
width: 100%;
position: fixed;
bottom: 0;
background-color: #FDF;
.footer-content {
display: block;
position: relative;
margin: 0.5em 1em;
width: calc(100% - 2em);
height: calc(100% - 1em);
* {
position: relative;
margin: auto;
}
.left {
float: left;
}
.right {
float: right;
}
a {
text-decoration: underline;
color: blue;
}
a:visited {
color: purple;
}
}
}
</style>
<footer class="footer">
<div class="footer-content">
<a class="left" href="/credits">Credits</a>
<a class="right" href="https://git.trivernis.net/Trivernis/no-chromium">Source</a>
</div>
</footer>

@ -1,78 +0,0 @@
<div id="no-chromium-head">
<style lang="scss">
#no-chromium-popup {
position: fixed;
display: flex;
height: 100vh;
width: 100vw;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.125);
font-family: Noto Sans, sans serif;
color: white;
z-index: 10;
.nc-popup-inner {
display: block;
position: relative;
margin: auto;
background-color: #FF6F00;
padding: 1em;
border-radius: 5px;
button {
border-style: none;
font-weight: bold;
background-colour: white;
font-size: 2em;
width: 100%;
cursor: pointer;
margin: 3px;
color: white;
a {
text-decoration: none;
color: white;
}
transition-duration: 0.1s;
&.nc-no {
background-color: #800;
&:hover {
background-color: #B00;
}
}
&.nc-ok {
background-color: #080;
&:hover {
background-color: #0B0;
}
}
&:hover {
}
}
}
}
</style>
</div>
<div id="no-chromium-body">
<div id="no-chromium-popup" style="display: none">
<div class="nc-popup-inner">
<center><h1>Stop using Chromium based Web Browsers</h1></center>
<a href="https://no-chromium.org/redirect"><button class="nc-no">No</button></a>
<button class="nc-ok" id="no-chromium-hide-button">Ok</button>
</div>
</div>
</div>

@ -1,36 +0,0 @@
<script lang="ts">
import { getBrowserName, isChromium } from "$lib/browser";
// import { browser } from "$app/environment";
import { onMount } from "svelte";
export let browserName: string;
export let chromium = true;
onMount(() => {
browserName = getBrowserName();
chromium = isChromium();
});
</script>
<div class="container flex mx-auto h-screen">
<div class="m-auto">
{#if browserName }
<center>
{#if chromium}
<h1 class="leading-normal lg:leading-normal text-4xl lg:text-7xl">{ browserName } is not supported by this Website</h1>
<h2 class="leading-normal lg:leading-normal text-3xl lg:text-6xl">Use a different web browser</h2>
<h4 class="leading-normal lg:leading-normal text-2xl lg:text-4xl">
<a class="underline text-blue visited:text-purple-600" href="/">Why?</a>
</h4>
{:else }
<h1 class="leading-normal lg:leading-normal text-4xl lg:text-7xl">Congrats, you're not using Chromium</h1>
<h2 class="leading-normal lg:leading-normal text-3xl lg:text-6xl">So why are you here?</h2>
<h4 class="leading-normal lg:leading-normal text-2xl lg:text-4xl">
<a class="underline text-blue visited:text-purple-600" href="/">More Info</a>
</h4>
{/if }
</center>
{/if }
</div>
</div>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

@ -1,26 +0,0 @@
async function showNoChromiumPopup() {
if (navigator.userAgent.includes("Chrome") && localStorage.getItem("no-chromium-popup-shown") != "1") {
const divPage = document.createElement("div");
const response = await fetch("https://no-chromium.org/popup/");
divPage.innerHTML = await response.text();
for (const child of divPage.querySelectorAll("#no-chromium-head > *")) {
document.head.appendChild(child);
}
for (const child of divPage.querySelectorAll("#no-chromium-body > *")) {
document.body.appendChild(child);
}
document.querySelector("#no-chromium-popup").style = "z-index: 9999;";
document.querySelector("#no-chromium-hide-button").addEventListener("click", hideNoChromiumPopup);
}
}
function hideNoChromiumPopup() {
document.querySelector("#no-chromium-popup").remove();
localStorage.setItem("no-chromium-popup-shown", "1");
}
showNoChromiumPopup();

@ -1,6 +0,0 @@
<!DOCTYPE html>
<html>
<body>
<script type="text/javascript" src="/popup.js"></script>
</body>
</html>

@ -0,0 +1,41 @@
html {
font-family: Noto Sans, sans-serif;
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
body {
min-height: 100vh;
margin: 0;
}
p {
line-height: 1.5rem;
}
.banner {
font-size: 2em;
margin: 0 auto 4rem;
text-align: center;
}
.content {
padding: 0 1rem;
margin: 0 auto;
max-width: 800px;
}
.container {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
height: 100dvh;
}
.centered {
margin: auto;
}

@ -1,18 +0,0 @@
import adapter from '@sveltejs/adapter-node';
import { vitePreprocess } from '@sveltejs/kit/vite';
/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://kit.svelte.dev/docs/integrations#preprocessors
// for more information about preprocessors
preprocess: vitePreprocess(),
kit: {
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
// If your environment is not supported or you settled on a specific environment, switch out the adapter.
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
adapter: adapter()
}
};
export default config;

@ -1,13 +0,0 @@
const plugin = require("tailwindcss/plugin");
/** @type {import('tailwindcss').Config} */
export default {
content: ["./src/**/*.{htm,js,svelte,ts}"],
theme: {
extend: {},
},
plugins: [
require('@tailwindcss/typography'),
],
}

@ -1,17 +0,0 @@
{
"extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"strict": true
}
// Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
//
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
// from the referenced tsconfig.json - TypeScript does not merge them in
}

@ -1,6 +0,0 @@
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [sveltekit()]
});
Loading…
Cancel
Save