Initial commit

This commit is contained in:
hal 2024-10-04 12:44:59 +00:00
commit 8272ad1554
206 changed files with 25485 additions and 0 deletions

0
.hugo_build.lock Normal file
View file

17
LICENSE Normal file
View file

@ -0,0 +1,17 @@
MIT License
Copyright (c) 2024 hal/rootdo.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---
# MIT LICENSE additional information
- Excluded from the MIT LICENSE are ANY personal information from things like blog posts, legal documents etc.
- Also the rootdo.com LOGO and ICON is not part of the MIT license and any copy or usage/redistribution of it is not allowed whatsoever
- These are the only things not included with the MIT LICENSE. Feel free to do whatever you want with the rest

6
README.md Normal file
View file

@ -0,0 +1,6 @@
# MIT LICENSE additional information
- Excluded from the MIT LICENSE are ANY personal information from things like blog posts, legal documents etc.
- Also the rootdo.com LOGO and ICON is not part of the MIT license and any copy or usage/redistribution of it is not allowed whatsoever
- These are the only things not included with the MIT LICENSE. Feel free to do whatever you want with the rest

146
config.toml Normal file
View file

@ -0,0 +1,146 @@
baseURL = "https://rootdo.com"
theme = "risotto"
title = "rootdo.com"
author = "rootdo.com"
copyright = "Copyright (C) 2014-2024 rootdo.com <br> [legal-notice](https://rootdo.com/notice/#impressum) | [TOS](https://rootdo.com/tos) | [Privacy](https://rootdo.com/privacy) | [Contact](https://rootdo.com/contact) | [About](https://rootdo.com/about)"
#copyright = "© [rootdo.com](https://rootdo.com)"
paginate = 3
languageCode = "en"
DefaultContentLanguage = "en"
enableInlineShortcodes = true
# prevent build failures when using Hugo's Instagram shortcode due to deprecated Instagram API.
# See https://github.com/gohugoio/hugo/issues/7228#issuecomment-714490456
ignoreErrors = ["error-remote-getjson"]
# Automatically add content sections to main menu
sectionPagesMenu = "main"
[params]
noindex = false
[params.theme]
#palette = "tokyo-night-dark"
#palette = "base16-dark"
#palette = "woodland-base16"
palette = "gruvbox-dark"
# Sidebar: about/bio
[params.about]
title = "rootdo.com"
description = "FOSS / Services / Self-Hosting / Linux / Privacy / Security / Open Source"
#logo = "/images/rootrant04.png"
logo_image = "/img/root.png"
# Sidebar: social links
# Available icon sets:
# * FontAwesome 6 <https://fontawesome.com/> ('fa-brands', 'fa-normal', or 'fa-solid' for brands)
# * Academicons <https://jpswalsh.github.io/academicons> ('ai ai-')
[[params.socialLinks]]
icon = "fa-solid fa-envelope"
title = "Contact"
url = "https://rootdo.com/contact"
[[params.socialLinks]]
icon = "fa-solid fa-code"
title = "git.rootdo.com"
url = "https://git.rootdo.com/hal/rootdo"
[[params.socialLinks]]
icon = "fa-solid fa-rss"
title = "RSS"
ShowFullTextinRSS = "false"
url = "https://rootdo.com/rss.xml"
#[Params]
#giscusTheme="preferred_color_scheme"
#disableComments=false
[outputs]
home = [ "RSS", "HTML"]
section = ["HTML"]
[outputFormats]
[outputFormats.RSS]
mediatype = "application/rss"
baseName = "rss"
[menu]
#[[menu.main]]
# identifier = "services"
# name = "services"
# url = "/"
# weight = 9
#[[menu.main]]
# identifier = "about"
# name = "About"
# url = "/about/"
# weight = 10
#[[menu.main]]
# identifier = "info"
# name = "info"
# url = "/info/"
# weight = 11
#[[menu.main]]
# identifier = "contact"
# name = "contact"
# url = "/contact/"
# weight = 11
[[menu.main]]
identifier = "docs"
name = "docs"
url = "https://docs.rootdo.com"
weight = 10
[[menu.main]]
identifier = "log"
name = "log"
url = "https://docs.rootdo.com/log"
weight = 11
[taxonomies]
category = "categories"
tag = "tags"
series = "series"
# For hugo >= 0.60.0, enable inline HTML
[markup.goldmark.renderer]
unsafe = true
hardWraps = true
[markup]
# Table of contents
# Add toc = true to content front matter to enable
[markup.tableOfContents]
startLevel = 2
endLevel = 3
ordered = true
[privacy]
[privacy.vimeo]
disabled = false
simple = true
[privacy.twitter]
disabled = false
enableDNT = true
simple = true
[privacy.instagram]
disabled = false
simple = true
[privacy.youtube]
disabled = false
privacyEnhanced = true
[services]
[services.instagram]
disableInlineCSS = true
[services.twitter]
disableInlineCSS = true

27
configTaxo.toml Normal file
View file

@ -0,0 +1,27 @@
timeout = 30000
enableInlineShortcodes = true
[taxonomies]
category = "categories"
tag = "tags"
series = "series"
[privacy]
[privacy.vimeo]
disabled = false
simple = true
[privacy.twitter]
disabled = false
enableDNT = true
simple = true
disableInlineCSS = true
[privacy.instagram]
disabled = false
simple = true
[privacy.youtube]
disabled = false
privacyEnhanced = true

83
content/_index.md Normal file
View file

@ -0,0 +1,83 @@
+++
title = "Services"
author = "rootdo.com"
disableComments = "true"
description = "List of all services."
+++
<img src="/img/rootdo.png" width="100" height="100" alt="rootdo">
---
# <span style='color: #e0ac16;'><b>GoCook</b></span>
## An alternative frontend to Chefkoch
### <img src="/img/gocook.png" width="16" height="16" alt="pwp"> [cook.rootdo.com](https://cook.rootdo.com)
# <span style='color: #e0ac16;'><b>PasswordPusher</b></span>
## Secure Password Sharing
### <img src="/img/pwp.png" width="16" height="16" alt="pwp"> [pass.rootdo.com](https://pass.rootdo.com)
# <span style='color: #e0ac16;'><b>Redlib</b></span>
## alternative front-end to Reddit
### <img src="/img/rl.png" width="16" height="16" alt="redlib"> [rl.rootdo.com](https://rl.rootdo.com)
# <span style='color: #e0ac16;'><b>Mozhi</b></span>
## frontend for many translation engines
### <img src="/img/mozhi.svg" width="16" height="16" alt="mozhi"> [translate.rootdo.com](https://translate.rootdo.com)
# <span style='color: #e0ac16;'><b>Alexandrite</b></span>
## an alternative web-UI for Lemmy
### <img src="/img/ax.svg" width="16" height="16" alt="ax"> [ax.rootdo.com](https://ax.rootdo.com)
# <span style='color: #e0ac16;'><b>Vaultwarden</b></span>
## Encrypted password-manager using the Bitwarden API
### <img src="/img/vaultwarden-icon.png" width="16" height="16" alt="vaultwarden"> [vault.rootdo.com](https://vault.rootdo.com)
# <span style='color: #e0ac16;'><b>Send</b></span>
## A fork of Mozillas Firefox Send
### <img src="/img/send.png" width="16" height="16" alt="send"> [send.rootdo.com](https://send.rootdo.com)
# <span style='color: #e0ac16;'><b>SearXNG</b></span>
## Privacy-respecting metasearch
### <img src="/img/searxng.png" width="16" height="16" alt="searxng"> [search.rootdo.com](https://search.rootdo.com)
# <span style='color: #e0ac16;'><b>SpeedTest</b></span>
## Privacy friendly Speed Test
### <img src="/img/ls.png" width="16" height="16" alt="ls"> [speed.rootdo.com](https://speed.rootdo.com)
# <span style='color: #e0ac16;'><b>PrivateBin</b></span>
## open source, zero knowledge pastebin
### <img src="/img/pb.png" width="16" height="16" alt="pb"><span style='color: #e0ac16;'> [bin.rootdo.com](https://bin.rootdo.com)
# <span style='color: #e0ac16;'><b>Miniflux</b></span>
## minimalist RSS feed reader
### <img src="/img/mf.png" width="16" height="16" alt="mf"> [flux.rootdo.com](https://flux.rootdo.com)
# <span style='color: #e0ac16;'><b>WikiLess</b></span>
## front-end to Wikipedia
### <img src="/img/wl.png" width="16" height="16" alt="wl"> [wikiless.rootdo.com](https://wikiless.rootdo.com)
# <span style='color: #e0ac16;'><b>CyberChef</b></span>
## The Cyber Swiss Army Knife
### <img src="/img/cc.svg" width="16" height="16" alt="cc"> [chef.rootdo.com](https://chef.rootdo.com)
# <span style='color: #e0ac16;'><b>Quetre</b></span>
## front-end to Quora
### <img src="/img/qu.svg" width="16" height="16" alt="quetre"> [quetre.rootdo.com](https://qte.rootdo.com)
# <span style='color: #e0ac16;'><b>AnonymousOverflow</b></span>
## front-end to StackOverflow
### <img src="/img/ao.webp" width="16" height="16" alt="ao"> [ao.rootdo.com](https://ao.rootdo.com)
# <span style='color: #e0ac16;'><b>OFFLINE</b></span>
## most likely not coming back again
- <s>PingVin
- RIMGO</s>
# <span style='color: #e0ac16;'>UPCOMING</span>
## [ NO ETA ]
- Notesnook Sync Server [ [github](https://github.com/streetwriters/notesnook-sync-server) ]
- XMPP Server (maybe)
- Dynamic DNS

27
content/about/index.md Normal file
View file

@ -0,0 +1,27 @@
+++
title = "About"
description = "ROOTDO.COM ABOUT"
#date = "2023-12-03"
disableComments = "true"
aliases = ["rootdo", "foo", "about"]
#author = "rootdo.com"
+++
![rootdo](https://rootdo.com/img/20.png)
## Server locations
* Hetzner Servers
* <span style='color: #e0ac16;'>EU/DE-Falkenstein</span>
* <span style='color: #e0ac16;'>EU/DE-Nürnberg</span>
* Backblaze B2 Storage
* <span style='color: #e0ac16;'>EU/NL-Amsterdam</span>
* Hetzner Storage
* <span style='color: #e0ac16;'>EU/DE-Falkenstein</span>
## Website sources
* HUGO:
* https://gohugo.io
* THEME:
* https://github.com/joeroe/risotto
* ICONS:
* https://www.flaticon.com

5
content/archives.md Normal file
View file

@ -0,0 +1,5 @@
---
date: 2019-05-28
type: section
layout: "archives"
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

44
content/contact/index.md Normal file
View file

@ -0,0 +1,44 @@
+++
title = "CONTACT"
description = "CONTACT"
#date = "2023-12-03"
disableComments = "true"
aliases = ["contact", "rootdo", "com"]
#author = "rootdo.com"
+++
---
## <span style='color: #e0ac16;'><b>E-Mail</b></span>
- Help & Support
- <a href="mailto:contact@rootdo.com" target="_blank">contact@rootdo.com</a>
- Abuse Report
- <a href="mailto:abuse@rootdo.com" target="_blank">abuse@rootdo.com</a>
## <span style='color: #e0ac16;'><b>Encrypted E-Mail</b></span>
- PGP-KEY: [0x6BE4C1E32497EFDB](https://rootdo.com/contact/rootdo.com.asc)
- Fingerprint:
7ADE E59E 5D27 4153 5E46
082A 6BE4 C1E3 2497 EFDB
## <span style='color: #e0ac16;'><b>CONNECT on Signal</b></span>
- click the link to chat or add the username manually in Signal
- [Signal.me](https://signal.me/#eu/SZlRJJaZifuY6XaLJSwES2yg2omTSV1sfeOSr3nfJkQrdnKLpPZJdZimHmUukdrh)
- username: <span style='color: #e0ac16;'><b>rootdo.01</b></span>
- Signal.org Download
- [https://signal.org/download/](https://signal.org/download/)
<details>
<summary>CLICK TO SCAN SIGNAL QR CODE</summary>
<img src="https://rootdo.com/contact/signal_qr.png" width="450" height="450" alt="qr">
</details>
## <span style='color: #e0ac16;'><b>CONNECT on Delta Chat</b></span>
- [https://delta.chat/en/download](https://delta.chat/en/download)
<details>
<summary>CLICK TO SCAN DELTA CHAT QR CODE</summary>
<img src="https://rootdo.com/contact/deltachat.png" width="450" height="450" alt="qr">
</details>

View file

@ -0,0 +1,13 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZmyXkhYJKwYBBAHaRw8BAQdAWqdho+4CJ3HJAum8se/g9hvc/tTHBTcOcYOj
tdU/uYS0H3Jvb3Rkby5jb20gPGNvbnRhY3RAcm9vdGRvLmNvbT6ImQQTFgoAQRYh
BHre5Z5dJ0FTXkYIKmvkweMkl+/bBQJmbJeSAhsDBQlW2Z6OBQsJCAcCAiICBhUK
CQgLAgQWAgMBAh4HAheAAAoJEGvkweMkl+/biMwA/2GuPmbxMBdomkzEVKjYdLGq
OH9SvUpb7DmPwLbF9tMxAP9Hx55yVZWyLJJTiGm8aZOoNw1snlJ7WNAUiNphc1tM
Abg4BGZsl5ISCisGAQQBl1UBBQEBB0BUzVypocwBWUAuhNWKa5u2Goprs6llzj1W
aIcfuaEJMgMBCAeIfgQYFgoAJhYhBHre5Z5dJ0FTXkYIKmvkweMkl+/bBQJmbJeS
AhsMBQlW2Z6OAAoJEGvkweMkl+/bvK4A/RON5DcXjqOMQa516EEQIIYh6VxZ8Jgo
YBYFcQmuTHD0AP9X59A0dh1EgFBBYBpZn2DMphJkwGJ2G4WdpDHqUck8DA==
=GfJz
-----END PGP PUBLIC KEY BLOCK-----

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

59
content/dw/app.js Normal file
View file

@ -0,0 +1,59 @@
const crypto = window.crypto || window.msCrypto;
new ClipboardJS('#clipboard-button');
function getRandomNumber(ceiling) {
return Math.floor(crypto.getRandomValues(new Uint32Array(1))[0] / (0xffffffff + 1) * ceiling);
}
function getEntropy(length, numPossibleSymbols) {
if (!length || !numPossibleSymbols) {
return null;
}
return Math.round(Math.log2(Math.pow(numPossibleSymbols, length)) * 100) / 100;
}
const app = Vue.createApp({
data() {
return {
numWords: 5,
delimiter: ' ',
passphrase: '',
};
},
mounted: function () {
this.generatePassphrase();
},
methods: {
generatePassphrase: function () {
let selectedWords = [];
for (let i = 0; i < this.numWords; i++) {
selectedWords.push(words[getRandomNumber(words.length)]);
}
this.passphrase = selectedWords.join(this.delimiter);
},
},
watch: {
numWords: function () {
this.generatePassphrase();
},
delimiter: function () {
this.generatePassphrase();
},
},
computed: {
entropy: function () {
return getEntropy(this.numWords, words.length);
},
},
});
app.mount('#app');

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
<svg height="1024" width="896" xmlns="http://www.w3.org/2000/svg">
<path d="M128 768h256v64H128v-64z m320-384H128v64h320v-64z m128 192V448L384 640l192 192V704h320V576H576z m-288-64H128v64h160v-64zM128 704h160v-64H128v64z m576 64h64v128c-1 18-7 33-19 45s-27 18-45 19H64c-35 0-64-29-64-64V192c0-35 29-64 64-64h192C256 57 313 0 384 0s128 57 128 128h192c35 0 64 29 64 64v320h-64V320H64v576h640V768zM128 256h512c0-35-29-64-64-64h-64c-35 0-64-29-64-64s-29-64-64-64-64 29-64 64-29 64-64 64h-64c-35 0-64 29-64 64z" />
</svg>

After

Width:  |  Height:  |  Size: 519 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
content/dw/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

100
content/dw/index.html Normal file
View file

@ -0,0 +1,100 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Diceware Passphrase Generator</title>
<link rel="stylesheet" href="assets/css/bulma-0.9.4.min.css">
<style>
[v-cloak] {
display: none;
}
html, body {
height: 100%;
}
body > footer {
position: sticky;
top: 100vh;
}
.footer {
padding: 2rem;
}
@media screen and (min-width: 1068px) {
.container {
max-width: 600px;
width: 600px;
}
}
</style>
</head>
<body>
<section id="app" class="section" v-cloak>
<div class="container">
<h1 class="title">Diceware Passphrase Generator</h1>
<div class="field">
<label class="label is-uppercase">Number of Words</label>
<div class="control">
<input class="input" type="text" v-model="numWords" placeholder="The number of words in the passphrase">
</div>
</div>
<div class="field">
<label class="label is-uppercase">Delimiter</label>
<div class="control">
<input class="input" type="text" v-model="delimiter" placeholder="Text to separate the words">
</div>
</div>
<div class="field">
<div class="control">
<button @click="generatePassphrase" class="button is-primary is-medium is-fullwidth">Generate</button>
</div>
</div>
<div class="field">
<div class="control">
<textarea v-model="passphrase" id="generated-passphrase" class="textarea is-large has-text-centered" rows="3" style="font-family: monospace" readonly></textarea>
</div>
</div>
<div class="field is-clearfix">
<div class="control">
<a class="button is-large is-pulled-right is-light" id="clipboard-button" data-clipboard-target="#generated-passphrase" title="Copy to clipboard">
<img src="assets/img/clippy.svg" height="36" width="36">
</a>
</div>
<p class="has-text-grey is-size-7">
{{ passphrase.length }} characters<span v-show="entropy && passphrase">, {{ entropy }} bits of entropy</span>
</p>
</div>
</div>
</section>
<footer class="footer">
<div class="container">
<div class="content has-text-centered">
<p>
Built by <a href="https://dan.hersam.com">Dan Hersam</a> | <a href="https://github.com/jaden/diceware">Source on GitHub</a>
</p>
</div>
</div>
</footer>
<script src="assets/js/vue-3.3.2.global.prod.js"></script>
<script src="assets/js/clipboard-2.0.4.min.js"></script>
<script src="wordlist.js?v=1"></script>
<script src="app.js?v=1.1"></script>
</body>
</html>

20007
content/dw/wordlist.js Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
---
title: 'Our Difference'
button: 'About us'
weight: 2
---
Lorem ipsum dolor sit amet, et essent mediocritatem quo, choro volumus oporteat an mei. Ipsum dolor sit amet, et essent mediocritatem quo.

View file

@ -0,0 +1,3 @@
---
headless: true
---

7
content/homepage/work.md Normal file
View file

@ -0,0 +1,7 @@
---
title: 'We Help Business Grow'
button: 'Our Work'
weight: 1
---
Lorem ipsum dolor sit amet, et essent mediocritatem quo, choro volumus oporteat an mei. Numquam dolores mel eu, mea docendi omittantur et, mea ea duis erat. Elit melius cu ius. Per ex novum tantas putant, ei his nullam aliquam apeirian. Aeterno quaestio constituto sea an, no eum intellegat assueverit.

BIN
content/img/10a.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

BIN
content/img/20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
content/img/ao.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

183
content/img/ax.svg Normal file
View file

@ -0,0 +1,183 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100"
height="100"
viewBox="0 0 26.458333 26.458333"
version="1.1"
id="svg5"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="logo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="41.233164"
inkscape:cy="48.436815"
inkscape:window-width="2560"
inkscape:window-height="1367"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showguides="false">
<inkscape:grid
type="xygrid"
id="grid1971" />
</sodipodi:namedview>
<defs
id="defs2">
<linearGradient
inkscape:collect="always"
id="linearGradient2194">
<stop
style="stop-color:#69214d;stop-opacity:1;"
offset="0"
id="stop2190" />
<stop
style="stop-color:#00b6da;stop-opacity:1;"
offset="1"
id="stop2192" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient2186">
<stop
style="stop-color:#702348;stop-opacity:1;"
offset="0"
id="stop2182" />
<stop
style="stop-color:#00b6da;stop-opacity:1;"
offset="1"
id="stop2184" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient2178">
<stop
style="stop-color:#96275c;stop-opacity:1;"
offset="0.30952382"
id="stop2174" />
<stop
style="stop-color:#00b6da;stop-opacity:1;"
offset="1"
id="stop2176" />
</linearGradient>
<inkscape:path-effect
effect="mirror_symmetry"
start_point="3.5167243,10.263454"
end_point="50,50"
center_point="25,25"
id="path-effect1226"
is_visible="true"
lpeversion="1.2"
lpesatellites=""
mode="vertical"
discard_orig_path="false"
fuse_paths="false"
oposite_fuse="false"
split_items="false"
split_open="false"
link_styles="false" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2178"
id="linearGradient2180"
x1="8.4303036"
y1="14.992496"
x2="19.706308"
y2="7.0842395"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.97582708,0,0,0.91201314,0.31978739,1.3079239)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2186"
id="linearGradient2188"
x1="18.118645"
y1="17.21011"
x2="20.332994"
y2="7.4455729"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.98836857,0,0,0.92373448,0.64928223,1.3577141)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2194"
id="linearGradient2196"
x1="10.871438"
y1="6.762928"
x2="20.164021"
y2="2.1349447"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.98836857,0,0,0.92373448,0.15387403,0.56481077)" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
id="path1853"
style="fill:#d3f0f7;fill-opacity:0.996078;stroke-width:0.332563"
d="m 23.600833,16.98625 -7.540624,6.630448 H 10.398125 L 2.8575,16.98625 5.476875,6.8510476 13.229167,2.8945519 20.981458,6.8510477 Z"
sodipodi:nodetypes="cccccccc" />
<path
id="path1907"
style="fill:url(#linearGradient2180);fill-opacity:1;stroke:none;stroke-width:0.277336"
inkscape:transform-center-y="1.5295961"
d="M 13.229167,18.199166 7.0326646,7.8231178 c 4.1828054,-0.014194 3.0966154,0.014192 12.3930044,0 z"
sodipodi:nodetypes="cccc" />
<path
id="path1915"
style="fill:url(#linearGradient2196);fill-opacity:1;stroke:none;stroke-width:0.152598"
inkscape:transform-center-y="-0.50800231"
d="M 13.229167,3.791931 6.9530261,6.9193343 H 19.505307 Z"
sodipodi:nodetypes="cccc" />
<path
id="path1927"
style="fill:url(#linearGradient2188);fill-opacity:1;stroke:none;stroke-width:0.208"
inkscape:transform-center-x="0.75322077"
inkscape:transform-center-y="-0.96019183"
d="M 22.354268,16.021999 20.262221,8.0299637 14.012231,18.539368 Z"
sodipodi:nodetypes="cccc" />
<path
id="path1929"
style="fill:#82053f;fill-opacity:0.996078;stroke:none;stroke-width:0.208"
inkscape:transform-center-x="-0.75322083"
inkscape:transform-center-y="-0.96019183"
d="M 4.1040652,16.021999 6.1961119,8.0299637 12.446102,18.539368 Z"
sodipodi:nodetypes="cccc" />
<path
id="path1931"
style="fill:#59001f;fill-opacity:0.996078;stroke:none;stroke-width:0.183074"
inkscape:transform-center-x="-0.48119251"
inkscape:transform-center-y="-0.015901639"
d="M 10.746314,22.448487 4.0779145,16.802736 12.472252,19.442307 Z"
sodipodi:nodetypes="cccc" />
<path
id="path1934"
style="fill:#730036;fill-opacity:0.996078;stroke:none;stroke-width:0.183074"
inkscape:transform-center-x="0.48119254"
inkscape:transform-center-y="-0.015901676"
d="m 15.712019,22.448487 6.6684,-5.645751 -8.394338,2.639571 z"
sodipodi:nodetypes="cccc" />
<path
id="path1936"
style="fill:#540028;fill-opacity:0.996078;stroke:none;stroke-width:0.0735944"
inkscape:transform-center-y="-0.44659471"
d="m 13.229167,19.902129 -1.689503,2.752004 h 3.379005 z"
sodipodi:nodetypes="cccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

728
content/img/cc.svg Normal file
View file

@ -0,0 +1,728 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 511.99999 511.99999"
id="svg4819"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="cyberchef.svg"
inkscape:export-filename="H:\My Documents\CyberChef\images\logo\os\cyberchef_logo.png"
inkscape:export-xdpi="263.67001"
inkscape:export-ydpi="263.67001">
<defs
id="defs4821">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4392">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4394" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4396" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur4398" />
<feOffset
dx="1.34615e-014"
dy="-2.47025e-015"
result="offset"
id="feOffset4400" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4402" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4576">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4578" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4580" />
<feGaussianBlur
in="composite1"
stdDeviation="3"
result="blur"
id="feGaussianBlur4582" />
<feOffset
dx="1.34615e-014"
dy="0"
result="offset"
id="feOffset4584" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4586" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4588">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4590" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4592" />
<feGaussianBlur
in="composite1"
stdDeviation="3"
result="blur"
id="feGaussianBlur4594" />
<feOffset
dx="1.34615e-014"
dy="0"
result="offset"
id="feOffset4596" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4598" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4608">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4610" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4612" />
<feGaussianBlur
in="composite1"
stdDeviation="3"
result="blur"
id="feGaussianBlur4614" />
<feOffset
dx="1.34615e-014"
dy="0"
result="offset"
id="feOffset4616" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4618" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4620">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4622" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4624" />
<feGaussianBlur
in="composite1"
stdDeviation="3"
result="blur"
id="feGaussianBlur4626" />
<feOffset
dx="1.34615e-014"
dy="0"
result="offset"
id="feOffset4628" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4630" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4736">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4738" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4740" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur4742" />
<feOffset
dx="1.34615e-014"
dy="0"
result="offset"
id="feOffset4744" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4746" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4784">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4786" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4788" />
<feGaussianBlur
in="composite1"
stdDeviation="3"
result="blur"
id="feGaussianBlur4790" />
<feOffset
dx="1.34615e-014"
dy="2"
result="offset"
id="feOffset4792" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4794" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4830">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4832" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4834" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur4836" />
<feOffset
dx="1.34615e-014"
dy="-6.38378e-016"
result="offset"
id="feOffset4838" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4840" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4842">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4844" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4846" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur4848" />
<feOffset
dx="1.34615e-014"
dy="-6.38378e-016"
result="offset"
id="feOffset4850" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4852" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4637">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4639" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4641" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur4643" />
<feOffset
dx="1.34615e-014"
dy="1"
result="offset"
id="feOffset4645" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4647" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4649">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4651" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4653" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur4655" />
<feOffset
dx="1.34615e-014"
dy="0.7"
result="offset"
id="feOffset4657" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4659" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4661">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4663" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4665" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur4667" />
<feOffset
dx="1.34615e-014"
dy="0.7"
result="offset"
id="feOffset4669" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4671" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4682">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4684" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4686" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur4688" />
<feOffset
dx="1.34615e-014"
dy="0.7"
result="offset"
id="feOffset4690" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4692" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4694">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4696" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4698" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur4700" />
<feOffset
dx="1.34615e-014"
dy="0.7"
result="offset"
id="feOffset4702" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4704" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4879">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4881" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4883" />
<feGaussianBlur
in="composite1"
stdDeviation="2"
result="blur"
id="feGaussianBlur4885" />
<feOffset
dx="1.34615e-014"
dy="0.7"
result="offset"
id="feOffset4887" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4889" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter5095">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood5097" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite5099" />
<feGaussianBlur
in="composite1"
stdDeviation="3"
result="blur"
id="feGaussianBlur5101" />
<feOffset
dx="1.34615e-014"
dy="1"
result="offset"
id="feOffset5103" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite5105" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.70000001"
inkscape:cx="269.91137"
inkscape:cy="253.12655"
inkscape:document-units="px"
inkscape:current-layer="g4673"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1138"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata4824">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-540.36219)">
<ellipse
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path5494-5-0"
cx="203.00006"
cy="871.01947"
r="14.964106" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a05a2c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter:url(#filter4661)"
d="m 147.26218,836.04571 c -25.20823,-0.10755 -39.52686,29.07087 -38.48314,49.6054 -50.615937,46.28423 -16.205613,107.16245 37.64298,108.72598 32.0833,-1.5e-4 42.68786,-30.52742 42.68801,-63.04845 -0.0198,-17.82216 -8.00167,-34.67629 -21.70832,-45.83854 1.05039,-3.56483 1.5874,-7.26473 1.59442,-10.98515 0,-21.34208 -0.67913,-38.45924 -21.73395,-38.45924 z"
id="path5533"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
<path
inkscape:connector-curvature="0"
style="fill:#666666;stroke:none;filter:url(#filter4649)"
d="m 329.75057,848.9372 -0.99384,5.44742 c -0.54665,2.99618 -1.51544,9.1802 -2.15123,13.74049 -0.96309,6.90853 -2.0091,8.79753 -6.28134,11.3267 -4.99839,2.95911 -5.3259,2.94503 -13.05113,-0.51884 -17.00524,-7.62485 -16.50462,-7.73628 -24.18511,5.36828 -0.83958,1.43242 -1.5755,2.69215 -2.21413,3.80274 -4.47081,7.77361 -4.19222,8.34457 -1.54404,11.31067 1.69375,1.89713 6.44342,5.94635 10.55236,9.00298 6.60433,4.91288 7.45215,6.27116 7.30351,11.70885 -0.14851,5.43242 -1.3543,7.12566 -10.33319,14.48994 -5.59176,4.58626 -10.1684,8.74733 -10.16843,9.24712 -2e-5,1.6752 11.82228,22.36426 13.3138,23.29861 0.81025,0.50761 6.89179,-1.29426 13.51104,-4.00793 11.69561,-4.79479 12.17517,-4.8546 16.98848,-2.07698 4.0965,2.36394 5.15278,4.28857 6.10882,11.14635 0.6358,4.56033 1.60491,10.74732 2.1515,13.74346 l 0.99533,5.44345 13.89887,-1.1e-4 13.90372,0 1.72092,-6.28433 c 0.94717,-3.45714 1.73487,-8.17143 1.75242,-10.47619 0.0565,-7.42942 1.72011,-10.87992 6.61533,-13.72769 4.61835,-2.68631 5.20277,-2.61426 16.03306,2.06875 6.18176,2.67299 12.00889,4.88209 12.94949,4.90711 0.94061,0.025 4.43989,-4.67108 7.77519,-10.43288 3.33531,-5.76188 6.078,-11.60524 6.09452,-12.98806 0.0166,-1.38282 -4.3658,-5.90842 -9.74023,-10.05691 -8.71341,-6.72592 -9.78365,-8.20675 -9.87259,-13.6679 -0.0899,-5.51114 0.89302,-6.93673 9.81558,-14.24623 5.45348,-4.46763 9.91683,-9.15506 9.92014,-10.41728 0.006,-1.70693 -8.94144,-18.4331 -12.49772,-23.36766 -0.2065,-0.2861 -6.15615,1.75011 -13.22574,4.53279 -12.27748,4.83246 -13.0599,4.94274 -17.42196,2.33088 -4.67438,-2.79905 -6.3909,-6.49185 -6.44709,-13.88872 -0.0176,-2.30473 -0.80397,-7.0164 -1.75108,-10.47347 l -1.72259,-6.28557 -13.90368,-0.002 -13.89894,1.7e-4 z m 8.33566,50.05554 a 21.565918,21.860154 0 0 1 26.41031,15.4593 21.565918,21.860154 0 0 1 -15.24637,26.77349 21.565918,21.860154 0 0 1 -26.41413,-15.4583 21.565918,21.860154 0 0 1 15.25019,-26.77449 z"
id="path5680-4" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4178"
width="80.357857"
height="21.07921"
x="182.31805"
y="965.93365" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#de8787;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 248.10536,1013.0243 0.0735,6e-4 0.27913,-33.12148 -0.0735,-6.2e-4 -0.0549,6.51764 -66.53394,-0.61382 c 18.2854,10.09362 31.55974,25.45918 66.38614,18.15098 z"
id="path6299"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 247.7409,975.65034 58.09206,-0.65817 c 0.3574,12.17742 -35.60705,22.20893 -58.09206,23.00293 z"
id="rect5437-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<g
id="g4814"
transform="matrix(1.0166163,0,0,1.0304866,-12.543356,-24.305675)"
style="stroke:none;filter:url(#filter4694)">
<path
id="path5473"
transform="translate(0,540.36219)"
d="m 256,294.35938 0,136.21289 0.0293,0 0,-0.5625 57.14258,-0.63868 c 0.35133,11.80977 -34.97938,21.53912 -57.09961,22.32032 l 0,11.02343 -0.0723,0 0,32.51368 c 35.99476,0.4041 68.91204,-13.70201 99.9375,-36.72461 l 0,-164.14453 -99.9375,0 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="rect5437"
d="m 256,834.72124 0,135.93276 -57.14285,0.17857 c 4.80435,15.52459 35.24626,22.13924 57.14285,21.25 l 0,43.50783 c -30.78963,-0.3457 -63.82206,-11.2715 -99.9375,-36.72463 l 0,-164.14453 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffe1e1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
<ellipse
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.60587597;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path5494-5-1"
cx="196.15344"
cy="887.901"
rx="18.238831"
ry="18.487673" />
<ellipse
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.60587597;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path6225-7"
cx="204.14046"
cy="882.65778"
rx="5.7431631"
ry="5.8215208" />
<ellipse
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#1fdf1f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.60587597;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path5494-5"
cx="294.18433"
cy="887.901"
rx="18.238831"
ry="18.487673" />
<ellipse
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.60587597;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path6225"
cx="300.96732"
cy="882.12958"
rx="5.7431631"
ry="5.8215208" />
<g
id="g4743"
style="filter:url(#filter4879)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5538"
d="m 149.12011,835.91605 c -9.75347,0 -23.64321,12.16601 -23.43637,26.91145 26.77544,0.89277 12.23382,16.59426 54.45054,16.59426 23.57775,-8.2e-4 52.36301,-19.37569 52.36241,-43.27513 -0.001,-0.0393 -0.004,-0.0786 -0.005,-0.11789 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#d38d5f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5538-5"
d="m 349.49606,836.33762 c 9.75346,0 23.64321,12.16602 23.43637,26.91145 -26.77544,0.89278 -12.23382,16.59426 -54.45054,16.59426 -23.57775,-8.1e-4 -52.36301,-19.37568 -52.36241,-43.27513 10e-4,-0.0393 0.004,-0.0786 0.005,-0.11789 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
<g
id="g4404"
transform="matrix(1.0166163,0,0,1.0304866,-12.543356,-24.305675)"
style="stroke:none;filter:url(#filter5095)">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="rect4160"
d="m 255.89286,880.36219 5.82421,-0.13837 18.004,70.01981 -23.64731,0.11856 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
sodipodi:nodetypes="cscc"
inkscape:connector-curvature="0"
id="rect4160-0"
d="m 255.94643,880.36219 c -4.61559,1.13878 -6.93068,3.5072 -8.38698,6.84881 -9.11992,20.92646 -30.50667,62.87939 8.38498,63.15119 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffcfcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
<g
id="g4673"
style="filter:url(#filter4682)">
<path
inkscape:connector-curvature="0"
id="rect5513"
d="m 247.71042,792.74395 0,32.00949 97.94463,0 0,-32.00949 -97.94463,0 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path5516"
d="m 247.71042,792.74395 -97.94463,0 0,32.00949 97.94463,0 0,-32.00949 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
id="path5432"
d="m 256.47476,549.80506 c -2.93079,0.0237 -5.85751,0.22598 -8.76434,0.60581 -0.0277,65.61462 0,171.31359 0,246.9062 l 102.82518,0 0,-51.59276 c 0.34138,-2.19919 0.64564,-4.39387 0.82997,-6.13864 l 0.74658,-7.06246 6.41143,-2.55609 6.41143,-2.5581 9.34811,7.55758 c 5.14171,4.15711 10.34711,7.56009 11.56798,7.56361 3.05362,0.0103 24.90114,-22.4949 24.90114,-25.64946 0,-1.33375 -3.32577,-6.68709 -7.38833,-11.89487 l -7.38636,-9.4676 2.32909,-5.44225 c 1.28072,-2.99325 2.66205,-5.81504 3.06771,-6.26947 0.40565,-0.45443 6.4466,-1.77039 13.4245,-2.92441 l 12.68785,-2.09721 0.31968,-17.45587 c 0.19141,-10.42474 -0.1393,-17.92314 -0.82203,-18.61518 -0.62875,-0.63732 -6.64398,-1.99532 -13.36493,-3.01699 l -12.21726,-1.85568 -2.69443,-6.71426 -2.69047,-6.71226 7.36849,-9.55615 c 4.05209,-5.256 7.36649,-10.33897 7.36649,-11.2951 0,-2.04511 -22.89779,-25.96343 -24.85547,-25.96343 -0.73476,0 -5.85983,3.4567 -11.38928,7.68437 l -10.05298,7.6884 -6.15927,-2.5883 -5.96467,-2.50376 c -0.0655,-0.0303 -0.13101,-0.0605 -0.19658,-0.0906 l -1.89623,-12.34168 c -1.04342,-6.79095 -2.4584,-13.03053 -3.14516,-13.86931 -0.96141,-1.17423 -9.08067,-1.71556 -17.20305,-1.66447 -8.12235,0.0511 -16.24958,0.69142 -17.22093,1.87782 -0.69477,0.84854 -1.89525,5.90378 -2.8493,11.68555 -13.78021,-15.03842 -33.09617,-23.61037 -53.34456,-23.67301 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccscccscccscccccsscccccssscccc" />
<path
inkscape:connector-curvature="0"
id="path5490"
d="m 247.71042,819.17836 0,16.911 102.82518,0 0,-16.911 -102.82518,0 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path5488"
d="m 247.71042,550.41054 a 73.110297,74.107784 0 0 0 -50.24705,29.88411 73.110297,74.107784 0 0 0 -24.78797,-4.48825 73.110297,74.107784 0 0 0 -73.109015,74.10849 73.110297,74.107784 0 0 0 44.891955,68.35225 l 0,79.0496 103.25208,0 0,-246.9062 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path5492"
d="m 247.71042,819.17836 -103.25208,0 0,16.911 103.25208,0 0,-16.911 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path4473-2"
d="m 145.97025,816.61919 204.28572,0"
style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

BIN
content/img/gh1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
content/img/gh2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
content/img/gocook.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
content/img/lol.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
content/img/ls.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
content/img/mb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
content/img/mf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

157
content/img/mozhi.svg Normal file
View file

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="512"
height="512"
viewBox="0 0 512 512"
version="1.1"
id="svg1"
sodipodi:docname="mozhi.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
inkscape:export-filename="mozhi.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
inkscape:zoom="0.85449218"
inkscape:cx="126.39086"
inkscape:cy="247.51543"
inkscape:window-width="1916"
inkscape:window-height="1052"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showgrid="false" />
<defs
id="defs1">
<rect
x="447.58857"
y="274.24914"
width="82.898286"
height="70.866286"
id="rect6" />
<rect
x="444.70632"
y="249.71617"
width="91.789733"
height="104.34795"
id="rect5" />
<rect
x="417.77323"
y="221.92324"
width="75.620828"
height="87.946305"
id="rect4" />
<rect
x="31.513527"
y="105.19809"
width="77.838314"
height="113.70924"
id="rect3" />
<rect
x="444.05983"
y="63.136958"
width="55.320802"
height="148.09968"
id="rect2" />
</defs>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="display:inline;fill:#f57c00;stroke-width:1.532;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:3.5;stroke-opacity:0.86324;paint-order:stroke fill markers"
id="rect1"
width="512"
height="512"
x="0"
y="0"
ry="0"
inkscape:label="Bg color" />
<g
id="g11"
transform="translate(-1.6455033e-8,-8.8717685)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:462.93px;line-height:0;font-family:FreeSerif;-inkscape-font-specification:FreeSerif;letter-spacing:0.52px;word-spacing:1.62px;white-space:pre;inline-size:0;display:inline;fill:#fbe9e7;fill-opacity:1;stroke:none;stroke-width:3.47197"
x="110.57372"
y="306.22528"
id="text1"
transform="translate(4.9270244,-6.9413264)"
inkscape:label="Tamil"><tspan
id="tspan1"
x="110.57372"
y="306.22528"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0;font-family:FreeSerif;-inkscape-font-specification:FreeSerif;letter-spacing:0.52px;word-spacing:1.62px;stroke-width:3.47197">ழ</tspan></text>
<text
xml:space="preserve"
id="text2"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect2);display:inline;fill:#fbe9e7;fill-opacity:1;stroke:none"
transform="matrix(2.799327,0,0,3.3785361,-962.26923,-98.905679)"
inkscape:label="O"><tspan
x="444.06055"
y="99.531726"
id="tspan2">O</tspan></text>
<text
xml:space="preserve"
id="text3"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect3);display:inline;fill:#fbe9e7;fill-opacity:1;stroke:none"
transform="matrix(2.9268206,0,0,2.9268206,53.853031,-147.27301)"
inkscape:label="M"><tspan
x="31.513672"
y="141.59227"
id="tspan3">M</tspan></text>
<text
xml:space="preserve"
id="text4"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect4);display:inline;fill:#fbe9e7;fill-opacity:1;stroke:none"
transform="matrix(3.1593397,0,0,2.8648022,-1159.7463,-343.82656)"
inkscape:label="Z"><tspan
x="417.77344"
y="258.31884"
id="tspan4">Z</tspan></text>
<text
xml:space="preserve"
id="text5"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect5);display:inline;fill:#fbe9e7;fill-opacity:1;stroke:none"
transform="matrix(2.900492,0,0,2.900492,-998.44727,-381.36539)"
inkscape:label="H"><tspan
x="444.70703"
y="286.1118"
id="tspan5">H</tspan></text>
<g
id="g10"
inkscape:label="I">
<path
id="path10"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect6);display:inline;fill:#fbe9e7;fill-opacity:1;stroke:none"
d="m 452.34766,289.85002 c 0.22541,-0.20952 0.45142,-0.41589 0.67406,-0.63903 0.32908,-0.32981 0.65502,-0.67506 0.97635,-1.03568 0.32133,-0.36061 0.63824,-0.73678 0.94979,-1.12946 0.31155,-0.39269 0.61727,-0.80176 0.91702,-1.22778 0.29975,-0.42602 0.59324,-0.86886 0.87916,-1.32948 0.28593,-0.46063 0.56447,-0.93921 0.83453,-1.43571 0.16921,-0.31108 0.32867,-0.64231 0.491,-0.96787 h -7.06609 c -0.0345,0.0663 -0.0646,0.13695 -0.0994,0.20284 -0.32015,0.60473 -0.65585,1.19202 -1.00573,1.75663 -0.32204,0.51971 -0.65924,1.01474 -1.0046,1.49221 l 3.45395,1.58826 z"
transform="matrix(3.4567616,0,0,3.4567616,-1200.9959,-724.14164)" />
<path
id="path9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect6);display:inline;fill:#fbe9e7;fill-opacity:1;stroke:none"
d="m 451.63291,310.64486 h 10.2347 v -3.43981 l -3.47993,-1.60013 v -18.47997 l 3.47993,-1.60013 v -3.43981 h -3.79804 c -0.16233,0.32556 -0.32179,0.65679 -0.491,0.96787 -0.27006,0.4965 -0.5486,0.97508 -0.83453,1.43571 -0.28592,0.46062 -0.57941,0.90346 -0.87916,1.32948 -0.29975,0.42602 -0.60547,0.83509 -0.91702,1.22778 -0.31155,0.39268 -0.62846,0.76885 -0.94979,1.12946 -0.32133,0.36062 -0.64727,0.70587 -0.97635,1.03568 -0.22264,0.22314 -0.44865,0.42951 -0.67406,0.63903 v 15.18763 h 0.14634 c 0.46872,0 0.87071,0.0248 1.20969,0.0729 0.33899,0.0481 0.61522,0.11925 0.83284,0.21132 0.10881,0.046 0.20303,0.0975 0.28307,0.15368 0.08,0.0562 0.14601,0.11772 0.19832,0.18363 0.0523,0.0659 0.0908,0.13625 0.11639,0.21132 0.0256,0.0751 0.0384,0.15474 0.0384,0.23844 0,0.13392 -0.0422,0.48538 -0.15312,0.93736 -0.0554,0.22599 -0.12811,0.47691 -0.22149,0.73847 -0.0934,0.26157 -0.20712,0.53392 -0.34522,0.80176 -0.13811,0.26784 -0.30024,0.53151 -0.48987,0.77633 -0.18964,0.24482 -0.4069,0.47082 -0.65486,0.66333 -0.12398,0.0963 -0.25567,0.18392 -0.39551,0.2616 -0.13984,0.0777 -0.28812,0.14513 -0.44466,0.20058 -0.15655,0.0554 -0.32142,0.0987 -0.49552,0.12826 -0.10754,0.0183 -0.22508,0.021 -0.33958,0.0283 z"
transform="matrix(3.4567616,0,0,3.4567616,-1200.9959,-724.14164)" />
<path
id="path8"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect6);display:inline;fill:#fbe9e7;fill-opacity:1;stroke:none"
d="m 451.63291,310.64486 c 0.1145,-0.007 0.23204,-0.01 0.33958,-0.0283 0.1741,-0.0295 0.33897,-0.0728 0.49552,-0.12826 0.15654,-0.0555 0.30482,-0.12289 0.44466,-0.20058 0.13984,-0.0777 0.27153,-0.16534 0.39551,-0.2616 0.24796,-0.19251 0.46522,-0.41851 0.65486,-0.66333 0.18963,-0.24482 0.35176,-0.50849 0.48987,-0.77633 0.1381,-0.26784 0.25184,-0.54019 0.34522,-0.80176 0.0934,-0.26156 0.16604,-0.51248 0.22149,-0.73847 0.1109,-0.45198 0.15312,-0.80344 0.15312,-0.93736 0,-0.0837 -0.0128,-0.16337 -0.0384,-0.23844 -0.0256,-0.0751 -0.0641,-0.1454 -0.11639,-0.21132 -0.0523,-0.0659 -0.11828,-0.12739 -0.19832,-0.18363 -0.08,-0.0562 -0.17426,-0.10765 -0.28307,-0.15368 -0.21762,-0.0921 -0.49385,-0.16319 -0.83284,-0.21132 -0.33898,-0.0481 -0.74097,-0.0729 -1.20969,-0.0729 h -0.14634 v 0.56727 l -3.47994,1.60013 v 3.43981 z"
transform="matrix(3.4567616,0,0,3.4567616,-1200.9959,-724.14164)" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
content/img/pb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
content/img/peng.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
content/img/pwp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

4
content/img/qu.svg Normal file
View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="11.5in" height="11.5in" version="1.1" viewBox="0 0 11.5 11.5" xmlns="http://www.w3.org/2000/svg">
<path d="m3.55 1.25c-0.647 0-1.23 0.16-1.74 0.481-0.514 0.314-0.918 0.744-1.21 1.29-0.287 0.547-0.43 1.16-0.43 1.83 0 0.594 0.117 1.14 0.35 1.65 0.234 0.507 0.561 0.928 0.981 1.26 0.42 0.334 0.901 0.547 1.44 0.641l-1.12 0.41c-0.18 0.0667-0.27 0.204-0.27 0.41 0 0.12 0.0434 0.227 0.13 0.32 0.0934 0.1 0.204 0.15 0.33 0.15 0.14 0 0.29-0.04 0.451-0.12 0.0667-0.0334 0.133-0.0634 0.2-0.0901 0.0734-0.02 0.15-0.03 0.23-0.03 0.18 0 0.337 0.0234 0.471 0.0701 0.133 0.0534 0.304 0.137 0.511 0.25 0.274 0.154 0.537 0.27 0.791 0.35 0.254 0.0801 0.584 0.12 0.991 0.12 0.254 0 0.534-0.05 0.841-0.15 0.307-0.1 0.567-0.23 0.781-0.39 0.214-0.16 0.32-0.327 0.32-0.501 0-0.12-0.0467-0.227-0.14-0.32-0.0868-0.0868-0.187-0.13-0.3-0.13-0.0601-2e-7 -0.12 0.0133-0.18 0.04-0.0534 0.0334-0.117 0.0767-0.19 0.13-0.0667 0.0601-0.127 0.11-0.18 0.15-0.127 0.0934-0.26 0.167-0.4 0.22-0.14 0.0534-0.307 0.0801-0.501 0.0801-0.22 0-0.42-0.0334-0.601-0.1-0.18-0.0601-0.39-0.15-0.631-0.27-0.194-0.1-0.36-0.18-0.501-0.24-0.133-0.0534-0.284-0.0901-0.451-0.11l0.761-0.28c0.521-0.107 0.981-0.327 1.38-0.661 0.4-0.334 0.711-0.747 0.931-1.24 0.227-0.494 0.34-1.03 0.34-1.62 0-0.674-0.147-1.28-0.44-1.83-0.287-0.547-0.687-0.978-1.2-1.29-0.514-0.32-1.09-0.481-1.74-0.481zm0 0.951c0.454 0 0.858 0.117 1.21 0.35 0.36 0.227 0.641 0.544 0.841 0.951 0.2 0.4 0.3 0.851 0.3 1.35 0 0.501-0.1 0.954-0.3 1.36-0.2 0.4-0.481 0.717-0.841 0.951-0.354 0.227-0.758 0.34-1.21 0.34-0.454 0-0.861-0.113-1.22-0.34-0.354-0.234-0.631-0.551-0.831-0.951-0.2-0.407-0.3-0.861-0.3-1.36 0-0.507 0.1-0.961 0.3-1.36 0.2-0.407 0.477-0.724 0.831-0.951 0.36-0.227 0.768-0.34 1.22-0.34zm7.15 0.791c-0.374 0.00667-0.707 0.113-1 0.32-0.294 0.2-0.514 0.464-0.661 0.791v-0.511c0-0.133-0.0467-0.247-0.14-0.34-0.0868-0.0934-0.2-0.14-0.34-0.14-0.133 1e-7 -0.247 0.0467-0.34 0.14-0.0868 0.0934-0.13 0.207-0.13 0.34v4.28c0 0.14 0.0434 0.257 0.13 0.35 0.0868 0.0868 0.2 0.13 0.34 0.13 0.14 0 0.254-0.0467 0.34-0.14 0.0934-0.0934 0.14-0.207 0.14-0.34v-2.41c0-0.307 0.0601-0.584 0.18-0.831 0.127-0.254 0.287-0.45 0.481-0.591 0.2-0.147 0.404-0.22 0.611-0.22 0.0801 0 0.19 0.0234 0.33 0.0701 0.12 0.04 0.21 0.0601 0.27 0.0601 0.12 0 0.22-0.04 0.3-0.12 0.0868-0.0868 0.13-0.21 0.13-0.37 0-0.133-0.0634-0.244-0.19-0.33-0.127-0.0934-0.277-0.14-0.451-0.14z" fill="#34a19b"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
content/img/rant.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

56
content/img/rimgo.svg Normal file
View file

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="512"
height="512"
viewBox="0 0 512 512"
version="1.1"
id="svg5"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
sodipodi:docname="rimgo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:document-units="px"
showgrid="false"
inkscape:zoom="1.1642403"
inkscape:cx="242.64751"
inkscape:cy="280.44039"
inkscape:window-width="1920"
inkscape:window-height="1048"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g1980"
transform="translate(113.17535,-113.17535)">
<path
id="path1096-3"
style="fill:none;stroke:#000000;stroke-width:28;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 235.97545,512 V 262 M 0,275.99192 h 250" />
<circle
style="fill:#1e88e5;fill-opacity:1;stroke:none;stroke-width:22.4636;stroke-miterlimit:4;stroke-dasharray:none"
id="path1816"
cx="250.86404"
cy="261.13596"
r="34.785259" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
content/img/rl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
content/img/root.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
content/img/root.png_og Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
content/img/root3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
content/img/rootdo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
content/img/searxng.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
content/img/send.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
content/img/simplex_qr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
content/img/vw-gray.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
content/img/wl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

67
content/log_old/index.md Normal file
View file

@ -0,0 +1,67 @@
### <span style='color: #e0ac16;'><b>2024-08-21</b></span>
* Authentik ( https://goauthentik.io/ ) deployed and running
* Added a post about Authentication
* [Authentication - auth.rootdo.com](https://rootdo.com/post/auth/)
# <span style='color: #e0ac16;'><b>2024-08-13</b></span>
* Vaultwarden E-Mail/SMTP issues fixed. Receiving E-Mails should now work again
# <span style='color: #e0ac16;'><b>2024-07-18</b></span>
* Vaultwarden new account creation enabled again
# <span style='color: #e0ac16;'><b>2024-07-17</b></span>
* Vaultwarden new account creation currently disabled
* will be enabled again in the near future, but no ETA though.
# <span style='color: #e0ac16;'><b>2024-07-16</b></span>
* fixed some [Content Security Policy](https://content-security-policy.com/) issues
* enabled TLS 1.2 again because of many user requests
* fixed LiveReload on rootdo.com main site
* disabled uptime service because of some issues. will be back soon
# <span style='color: #e0ac16;'><b>2024-07-13</b></span>
* removed [Giscus](https://giscus.app/) because it wasn't used and it made loading the posts slow. please use the usual contact options
# <span style='color: #e0ac16;'><b>2024-06-22</b></span>
* removed [Microbin](https://github.com/szabodanika/microbin) because of redundancy.
* [PrivateBin](https://bin.rootdo.com)
* removed [SnapPass](https://github.com/pinterest/snappass) because of redundancy.
* [PassWordPusher](https://pass.rootdo.com)
# <span style='color: #e0ac16;'><b>2024-06-18</b></span>
* added Uptime real-time status badges to service post pages
* added Uptime monitoring service
* Logo update
* updated Contact page
* removed SimpleX Chat option
* added Delta Chat option
* added Signal info for chat
* added PGP public key for encrypted E-Mails
# <span style='color: #e0ac16;'><b>2024-06-03</b></span>
* added icons on service page for better clarity between links
# <span style='color: #e0ac16;'><b>2024-05-25</b></span>
* added [Giscus](https://giscus.app/) for comments on [posts](https://rootdo.com/post)
* disabled TLS 1.2 support - only TLS 1.3 is supported
* https://rootdo.com/post/information-about-tls-1.3-and-1.2/
# <span style='color: #e0ac16;'><b>2024-05-21</b></span>
* minor layout changes to service main page
* top menu entries > legals, about, contact removed
* contact and about links moved to the bottom
* links to privacy, notice and terms of service have changed to:
* https://rootdo.com/notice
* https://rootdo.com/tos
* https://rootdo.com/privacy
# <span style='color: #e0ac16;'><b>2024-04-16</b></span>
* minor layout/footer change
# <span style='color: #e0ac16;'><b>2024-04-14</b></span>
* added new service > [PassWordPusher](https://pwp.rootdo.com)
# <span style='color: #e0ac16;'><b>2024-04-07</b></span>
* added new service > [redlib](https://rl.rootdo.com)
* added new service > [mozhi](https://mozhi.rootdo.com)
* changed color theme to gruvboxdark
# <span style='color: #e0ac16;'><b>2024-03-25</b></span>
* minor layout changes
* theme update [github](https://github.com/joeroe/risotto/releases/tag/v0.4.0)
# <span style='color: #e0ac16;'><b>2024-03-23</b></span>
* Added rimgo again, even tho it is rate limited still. > [rimgo](https://img.rootdo.com)
* minor layout changes
# <span style='color: #e0ac16;'><b>2024-03-18</b></span>
* Service added > [Alexandrite](https://ax.rootdo.com)
* Category name "blog" changed to > [post](https://rootdo.com/post)
* Changelog added as a category > [log](https://rootdo.com/log)
* Minor ordering & layout changes on main site

150
content/mf.css Normal file
View file

@ -0,0 +1,150 @@
:root {
--font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--body-color: rgba(255, 255, 255, 0.7);
--body-background: #282c34;
--header-link-color: #9b9494;
--header-active-link-color: #d19a66;
--input-border: 1px solid #2c384e;
--input-background: #2c384e;
--input-placeholder-color: #888;
--input-focus-border-color: #d19a66;
--input-focus-box-shadow: none;
--category-background-color: #2c384e;
--category-border-color: #2c384e;
--item-border-color: rgba(0, 0, 0, .3);
--item-padding: 1em;
--item-title-link-font-weight: 600;
--item-status-read-title-link-color: rgba(209, 154, 102, 0.5);
--entry-header-title-link-color: #d19a66;
--entry-content-code-background: #2c384e;
--entry-content-code-border-color: #2c384e;
--entry-content-font-weight: 300;
--entry-content-font-family: 'Literata', 'Libre Baskerville', Georgia, 'Times New Roman', Times, serif !important;
--entry-content-quote-font-family: var(--entry-content-font-family)
}
*:focus {
outline: 0 !important;
}
input[type="search"],
input[type="url"],
input[type="password"],
input[type="text"],
input[type="number"] {
padding: .25em .5em;
box-shadow: none;
border-radius: 6px;
}
.entry header h1 {
margin: 1em 0 16px;
}
.entry-actions {
opacity: .5;
}
.entry-meta {
color: #98be65;
}
.entry-website a {
color: #c678dd;
}
.entry-date {
font-size: .75em;
color: rgba(255, 255, 255, 0.4);
}
.entry-actions li a {
font-weight: bold;
color: #9b9494;
}
.entry-actions li a:hover {
font-weight: bold;
color: white;
}
.entry header h1 a:hover,
.entry header h1 a:focus {
color: #d19a66;
text-decoration: underline;
}
.pagination-top {
display: none;
}
.entry-content {
line-height: 2;
padding-top: 2em;
}
.entry-content p {
margin-top: 0;
margin-bottom: 1em;
}
.entry-content a {
color: #c678dd;
}
.entry-content a:visited {
color: #dd7890;
}
.entry-content img {
width: 100%;
margin: 0 auto;
}
.entry-content figcaption {
color: #c678dd;
background-color: rgba(0, 0, 0, .3);
margin-top: -7px;
border-radius: 0 0 4px 4px;
padding: 0.25rem 1rem;
text-transform: unset;
}
.entry-content pre {
padding: .5rem 1rem;
border-radius: 6px;
margin: 0 0 1em;
}
.entry-content code {
padding: 3px;
border-radius: 6px;
}
.item,
.alert {
border: 1px solid var(--item-border-color);
margin-bottom: 20px;
background: rgba(0, 0, 0, .3);
border-radius: 6px;
}
.item-title a {
color: #d19a66;
}
.item-meta-info {
padding-top: 2px;
}
.item-meta-info li a {
color: #c678dd;
}
.item-meta-info li time {
color: #98be65;
}
.item-meta-info li span {
color: #61afef;
}
.entry-content li {
margin: .75em 0;
}

71
content/notice/index.md Normal file
View file

@ -0,0 +1,71 @@
+++
title = "Legal-Notice"
description = "NOTICE/IMPRESSUM"
date = "2023-12-03"
disableComments = "true"
aliases = ["notice", "impressum"]
author = "rootdo.com"
+++
## According to § 5 TMG
- Daniel Faure
- Memeler Str. 21
- 40231 Düsseldorf
- Germany
## Represented by
* Daniel Faure (IT specialist/system integration)
## Contact
* Phone: on request
* Web: https://rootdo.com/contact
* Email: [contact[at]rootdo.com](mailto:contact[at]rootdo.com)
# Disclaimer
## Liability for content
The contents of our pages were created with great care. However, we cannot guarantee that the content is correct, complete or up-to-date. As a service provider, we are responsible for our own content on these pages according to Section 7, Paragraph 1 of the German Telemedia Act (TMG). According to §§ 8 to 10 TMG, however, we as a service provider are not obliged to monitor transmitted or stored third-party information or to investigate circumstances that indicate illegal activity. Obligations to remove or block the use of information according to general laws remain unaffected. However, liability in this regard is only possible from the point in time at which knowledge of a specific infringement of the law is known. As soon as we become aware of any violations of the law, we will remove this content immediately.
## Liability for links
Our offer contains links to external third-party websites, the content of which we have no influence on. Therefore we cannot assume any liability for this external content. The respective provider or operator of the pages is always responsible for the content of the linked pages. The linked pages were checked for possible legal violations at the time of linking. Illegal content was not recognizable at the time of linking. However, a permanent control of the content of the linked pages is not reasonable without concrete evidence of an infringement. As soon as we become aware of legal violations, we will remove such links immediately.
## Copyright
The content and works on these pages created by the site operators are subject to German copyright law. The duplication, editing, distribution and any kind of exploitation outside the limits of copyright require the written consent of the respective author or creator. Downloads and copies of this site are only permitted for private, non-commercial use. Insofar as the content on this site was not created by the operator, the copyrights of third parties are observed. In particular contents of third parties are marked as such. Should you nevertheless become aware of a copyright infringement, we ask that you inform us accordingly. As soon as we become aware of legal violations, we will remove such content immediately.
## Privacy
Our website can usually be used without providing any personal data. Insofar as personal data (e.g. name, address or e-mail addresses) is collected on our website, this is always done on a voluntary basis as far as possible. This data will not be passed on to third parties without your express consent.
We would like to point out that data transmission on the Internet (e.g. when communicating by e-mail) can have security gaps. A complete protection of the data against access by third parties is not possible.
The use of contact data published as part of the legal notice obligation by third parties for the purpose of sending unsolicited advertising and information material is hereby expressly prohibited. The site operators expressly reserve the right to take legal action in the event of unsolicited advertising being sent, such as spam e-mails.
---
# IMPRESSUM
## Angaben gemäß § 5 TMG
- Daniel Faure
- Memeler Str. 21
- 40231 Düsseldorf
- Germany
## Vertreten durch
* Daniel Faure (Fachinformatiker Systemintegration)
## Kontakt
* Phone: on request
* Web: https://rootdo.com/contact
* Email: [contact[at]rootdo.com](mailto:contact[at]rootdo.com)
# Haftungsausschluss
## Haftung für Inhalte
Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
## Haftung für Links
Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
## Urheberrecht
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
## Datenschutz
Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor."

98
content/pg/app.js Normal file
View file

@ -0,0 +1,98 @@
const crypto = window.crypto || window.msCrypto;
function getRandomNumber(ceiling) {
return Math.floor(crypto.getRandomValues(new Uint32Array(1))[0] / (0xffffffff + 1) * ceiling);
}
function getEntropy(length, numPossibleSymbols) {
if (!length || !numPossibleSymbols) {
return null;
}
return Math.round(Math.log2(Math.pow(numPossibleSymbols, length)) * 100) / 100;
}
const characterSets = [
{ name: 'a-z', value: 'abcdefghijklmnopqrstuvwxyz' },
{ name: 'A-Z', value: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' },
{ name: '0-9', value: '0123456789' },
{ name: 'Symbols', value: '~!@#$%^&*-_=+' },
{ name: 'Special', value: ':;|/,.?()[]{}<>' },
];
const app = Vue.createApp({
data() {
return {
charSets: characterSets,
selectedCharSets: [],
extraCharacters: '',
passwordLength: 25,
password: '',
clipboardButton: null,
isToastVisible: false,
};
},
mounted: function () {
this.clipboardButton = new ClipboardJS('#clipboard-button');
this.clipboardButton.on('success', this.showToast);
this.initializeCharacterSelection();
},
methods: {
generatePassword: function () {
let password = '';
for (let i = 0; i < this.passwordLength; i++) {
password += this.characters.charAt(getRandomNumber(this.characters.length));
}
this.password = password;
},
initializeCharacterSelection: function () {
this.selectedCharSets = characterSets.slice(0, 4);
this.extraCharacters = '';
},
clearCharacterSelection: function () {
this.selectedCharSets = [];
this.extraCharacters = '';
},
showToast: function () {
this.isToastVisible = true;
setTimeout(this.hideToast, 5500);
},
hideToast: function () {
this.isToastVisible = false;
}
},
watch: {
characters: function () {
this.generatePassword();
},
passwordLength: function () {
this.generatePassword();
},
},
computed: {
characters: function () {
return this.selectedCharSets
.map(item => item.value)
.flat()
.join('') + this.extraCharacters;
},
entropy: function () {
const uniqueCharacters = new Set(this.characters);
return getEntropy(this.passwordLength, uniqueCharacters.size);
},
},
});
app.mount('#app');

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
<svg height="1024" width="896" xmlns="http://www.w3.org/2000/svg">
<path d="M128 768h256v64H128v-64z m320-384H128v64h320v-64z m128 192V448L384 640l192 192V704h320V576H576z m-288-64H128v64h160v-64zM128 704h160v-64H128v64z m576 64h64v128c-1 18-7 33-19 45s-27 18-45 19H64c-35 0-64-29-64-64V192c0-35 29-64 64-64h192C256 57 313 0 384 0s128 57 128 128h192c35 0 64 29 64 64v320h-64V320H64v576h640V768zM128 256h512c0-35-29-64-64-64h-64c-35 0-64-29-64-64s-29-64-64-64-64 29-64 64-29 64-64 64h-64c-35 0-64 29-64 64z" />
</svg>

After

Width:  |  Height:  |  Size: 519 B

View file

@ -0,0 +1 @@
Array.prototype.flat||Object.defineProperty(Array.prototype,"flat",{configurable:!0,value:function r(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(a,e){return Array.isArray(e)?a.push.apply(a,r.call(e,t-1)):a.push(e),a},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,"flatMap",{configurable:!0,value:function(r){return Array.prototype.map.apply(this,arguments).flat()},writable:!0})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
content/pg/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

134
content/pg/index.html Normal file
View file

@ -0,0 +1,134 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Password Generator</title>
<link rel="stylesheet" href="assets/css/bulma-0.9.4.min.css">
<style>
[v-cloak] {
display: none;
}
html, body {
height: 100%;
}
body > footer {
position: sticky;
top: 100vh;
}
@media screen and (min-width: 1068px) {
.container {
max-width: 600px;
width: 600px;
}
}
.notification {
opacity: 0;
animation: fadeInOut 5s linear forwards;
}
@keyframes fadeInOut {
0% { opacity: 0; }
15% { opacity: 1; }
85% { opacity: 1; }
100% { opacity: 0; }
}
.footer {
padding: 2rem;
}
</style>
</head>
<body>
<script defer src="assets/js/array-flat-polyfill-1.0.1.min.js"></script>
<script defer src="assets/js/vue-3.3.2.global.prod.js"></script>
<script defer src="assets/js/clipboard-2.0.6.min.js"></script>
<script defer src="app.js?v=1.3"></script>
<section id="app" class="section" v-cloak>
<div class="container">
<h1 class="title">Password Generator</h1>
<div class="field">
<label class="label is-uppercase">Password Length</label>
<div class="control">
<input class="input" type="text" v-model="passwordLength" placeholder="The desired password length">
</div>
</div>
<div class="field">
<label class="label is-uppercase">Character Sets</label>
</div>
<div class="field is-horizontal">
<label class="checkbox mr-5" v-for="charSet in charSets" :key="charSet.name" :title="charSet.value">
<input type="checkbox" v-model="selectedCharSets" :value="charSet">
{{ charSet.name }}
</label>
</div>
<div class="field">
<label class="label is-uppercase">Extra Characters</label>
</div>
<div class="field">
<div class="control is-expanded">
<input class="input is-family-monospace" type="text" placeholder="Any additional characters to use" v-model="extraCharacters">
</div>
</div>
<div class="field is-clearfix">
<div class="control is-pulled-right">
<button class="button is-info is-light is-small" @click="initializeCharacterSelection()">Reset</button>
<button class="button is-warning is-light is-small" @click="clearCharacterSelection()">Clear</button>
</div>
</div>
<div class="field">
<div class="control">
<button @click="generatePassword" class="button is-link is-medium is-fullwidth" v-bind:disabled="characters.length === 0">Generate</button>
</div>
</div>
<div class="field has-addons">
<div class="control is-expanded">
<input v-model="password" id="generated-password" class="input is-large has-text-centered is-family-monospace" type="text" readonly>
</div>
<div class="control">
<a class="button is-large is-light" id="clipboard-button" data-clipboard-target="#generated-password" title="Copy to clipboard">
<img src="assets/img/clippy.svg" height="36" width="36">
</a>
</div>
</div>
<div class="notification fade is-success is-light has-text-centered" v-bind:class="{ 'is-hidden': !isToastVisible }">
The password has been copied to your clipboard.
</div>
<p v-show="entropy && password" class="has-text-grey is-size-7">
{{ entropy }} bits of entropy
</p>
</div>
</section>
<footer class="footer">
<div class="container">
<div class="content has-text-centered">
<p>
Built by <a href="https://dan.hersam.com">Dan Hersam</a> | <a href="https://github.com/jaden/passgen">Source on GitHub</a>
</p>
</div>
</div>
</footer>
</body>
</html>

View file

@ -0,0 +1,46 @@
+++
author = "rootdo.com"
title = "Information about TLS 1.3 and 1.2"
date = "2024-05-25"
tags = [
"post",
"information",
"TLS",
]
categories = [
"blog",
"rootdo",
]
+++
---
## <span style='color: #e0ac16;'><b>!!! UPDATE !!!</b></span>
* I enabled TLS 1.2 again because of many user requests. Apparently there are more people out there with "older" hardware than I thought.
Hey!
I decided to disable TLS 1.2 support and only allow TLS 1.3 on rootdo.com and every sub domain.
- Reasons are simple:
- TLS 1.2 is old. If you still use devices that do not support TLS 1.3. I am sorry, but it is time to get some new stuff then.
- TLS 1.2 is old. Time to move one!
- https://www.cloudflare.com/learning/ssl/why-use-tls-1.3/
In case somebody wants to check the site and TLS with [https://cryptcheck.fr](<https://cryptcheck.fr>) (very popular site in the community)
<div data-block-id="22Z2hOKa" data-callout-type="info" class="callout"><h4 data-block-id="t2lgsurS">You will see an error like this</h4><p data-block-id="5vFhhwby" data-spacing="single"><img class="" src="/img//attachments/25f5e5589047e92d-Screenshot_20240525_155901.png" alt="Screenshot_20240525_155901.png" width="754" height="166"></p></div>
The reason is given by the maintainer of the site cryptcheck.fr as following:
> Hello!
> It's currently not possible. I'm tied to OpenSSL 1.0.x to support old/deprecated ciphers like SSLv2 or RC4, but 1.2.x is required for TLSv1.3 which remove all deprecated world support with no way to reactivate it at build time. And there is no simple way to use 2 differents OpenSSL binding on the same ruby setup (OpenSSL support is built-in in Ruby core extension…).
Source: [https://github.com/aeris/cryptcheck/issues/46#issuecomment-533865220](<https://github.com/aeris/cryptcheck/issues/46#issuecomment-533865220>)
This was the last time I tested with the TLS 1.2 version enabled.
![Screenshot_20240525_155542.png](</img/attachments/65dcaa4fd132a157-Screenshot_20240525_155542.png>)

32
content/post/Redlib.md Normal file
View file

@ -0,0 +1,32 @@
+++
author = "rootdo.com"
title = "Redlib"
date = "2024-06-19"
description = "front-end"
tags = [
"post",
"redlib",
]
categories = [
"blog",
"services",
]
series = ["blog"]
aliases = ["redlib"]
+++
* Service
* https://rl.rootdo.com
* Source
* https://github.com/redlib-org/redlib
---
* Features
* 10-second pitch: Redlib is a private front-end like Invidious but for Reddit. Browse the coldest takes of r/unpopularopinion without being tracked.
* 🚀 Fast: written in Rust for blazing-fast speeds and memory safety
* ☁️ Light: no JavaScript, no ads, no tracking, no bloat
* 🕵 Private: all requests are proxied through the server, including media
* 🔒 Secure: strong Content Security Policy prevents browser requests to Reddit

9
content/post/_index.md Normal file
View file

@ -0,0 +1,9 @@
+++
aliases = ["posts", "articles", "blog", "rant", "docs"]
title = "Posts"
disableComments = "true"
author = "rootdo.com"
description = "posts about services with detailed information and descriptions & general blog like posts. "
tags = ["index"]
+++
---

View file

@ -0,0 +1,33 @@
+++
author = "rootdo.com"
title = "Alexandrite"
date = "2024-03-18"
description = "A beautiful desktop-first alternative web UI for Lemmy."
tags = [
"post",
"alexandrite",
"lemmy",
"fediverse",
]
categories = [
"blog",
"services",
]
series = ["blog"]
aliases = ["alexandrite"]
+++
* Service
* https://ax.rootdo.com
* Source
* https://github.com/sheodox/alexandrite
---
# <span style='color: #e0ac16;'><b>Description</b></span>
* A beautiful desktop-first alternative web UI for Lemmy, a social link aggregator and discussion forum for the Fediverse.
# <span style='color: #e0ac16;'><b>Features</b></span>
* Infinite scrolling
* View posts in an overlay or side-by-side with the feed in a second column so you don't lose your spot
* Customizable theme hue
* Powerful account switcher, login to different accounts across the same or different instances simultaneously in different browser tabs
* Most mod tools
* Supports most markdown formatting

36
content/post/auth.md Normal file
View file

@ -0,0 +1,36 @@
+++
author = "rootdo.com"
title = "Authentication - auth.rootdo.com"
date = "2024-08-21"
tags = [
"post",
"information",
"authentication",
]
categories = [
"blog",
"rootdo",
]
+++
---
## <span style='color: #e0ac16;'><b>Authentication</b></span>
* As some of you already know. rootdo.com has a SSO/OIDC/OAuth-2.0 authentication system now. So, you can login with your <b>Google</b> or <b>GitHub</b> account to use certain services on rootdo.com ( e.g. https://flux.rootdo.com ).
* Other OIDC social logins will follow. Like <b>Twitch</b>, <b>X/Twitter</b> or <b>Discord</b>. And also an option to actually create an rootdo.com account. (it is disabled currently)
* Some services will require a login on https://auth.rootdo.com, so you need to actually login to use it. ( e.g. https://rl.rootdo.com )
* Other services like SearXNG, Send etc. will not need accounts or logins though.
* Some upcoming services will use this authentication system, so you can use every service on rootdo.com with just one single account of your choice.
## <span style='color: #e0ac16;'><b>Account creation on auth.rootdo.com</b></span>
* When you create a new account on https://auth.rootdo.com you will be forced to add a Multi-Factor Authentication (MFA) method.
* TOTP to use with apps like Aegis, Google Authenticator etc.
* Hardware Key/WebAuthn with something like a YubiKey.
## <span style='color: #e0ac16;'><b>Services without OIDC/SSO</b></span>
* **Vaultwarden** will not have an OIDC login option until it is completely implemented ( https://github.com/dani-garcia/vaultwarden/pull/3899 ) So, for now you still need an separate account for Vaultwarden.
## <span style='color: #e0ac16;'><b>Some more information</b></span>
* Privacy Policy and Terms of Service will be updated accordingly
* Information about SSO/OIDC/OAuth-2.0 etc.
* OpenID Connect (OIDC) -> https://openid.net/developers/how-connect-works/
* SSO/Single_sign-on -> https://en.wikipedia.org/wiki/Single_sign-on
* Authentik -> https://github.com/goauthentik/authentik

28
content/post/domain.md Normal file
View file

@ -0,0 +1,28 @@
+++
author = "rootdo.com"
title = "Domain changes"
date = "2023-12-03"
description = "domain changes and general information about older domains"
tags = [
"post",
"domain",
"rant",
"FTW",
"LOL",
]
categories = [
"blog",
"news",
]
series = ["blog"]
aliases = ["domain"]
+++
I have been experimenting with a couple of domain names the last months. Like https://rant.foo and https://ftw.lol.
They're still usable for next months. But I settled on a main Domain (for now). This means, every current and upcoming service will be a subdomain of this new main Domain name.
https://rootdo.com (rootdo.net and rootdo.org also work, but the main domain is rootdo.com)
rant.foo and ftw.lol still work tho. But some services need adjustment like https://flux.rootdo.com ( https://flux.rant.foo https://flux.ftw.lol )
If you use the API, you may need to change the URL of it into http://flux.rootdo.com/v1/

38
content/post/mozhi.md Normal file
View file

@ -0,0 +1,38 @@
+++
author = "rootdo.com"
title = "Mozhi"
date = "2024-04-07"
description = "Mozhi is an alternative-frontend for many translation engines"
tags = [
"post",
"translation",
"mozhi",
"fediverse",
]
categories = [
"blog",
"services",
]
series = ["blog"]
aliases = ["mozhi"]
+++
* Service
* [mozhi.rootdo.com](https://mozhi.rootdo.com) | [translate.rootdo.com](https://translate.rootdo.com)
* Source
* [https://codeberg.org/aryak/mozhi](https://codeberg.org/aryak/mozhi)
---
* Mozhi is an alternative-frontend for many translation engines.
* It was initially made as a maintained fork/rewrite of simplytranslate, but has grown to have a lot more features as well!
- Supported Engines:
- Google
- Reverso
- DeepL
- LibreTranslate
- Yandex
- IBM Watson
- MyMemory
- DuckDuckGo (almost 1-1 with Bing Translate)

View file

@ -0,0 +1,47 @@
+++
author = "rootdo.com"
title = "PassWordPusher"
date = "2023-12-04"
description = "Password Pusher is an open source application to communicate passwords over the web!"
tags = [
"post",
"passwordpusher",
]
categories = [
"blog",
"services",
]
series = ["blog"]
aliases = ["passwordpusher"]
+++
* Service
* https://pass.rootdo.com | https://pwp.rootdo.com
* Source
* https://github.com/pglombardo/PasswordPusher
---
* Password Pusher is an open source application to communicate passwords over the web. Links to passwords expire after a certain number of views and/or time has passed.
* Features
* Easy-to-install: Host your own via Docker, a cloud service or just use pwpush.com
* Open Source: No blackbox code. Only trusted, tested and reviewed open source code.
* Versatile: Push passwords, text, files or URLs that auto-expire and self delete.
* Audit logging: Track and control what you've shared and see who has viewed it.
* Encrypted storage: All sensitive data is stored encrypted and deleted entirely once expired.
* Host your own: Database backed or ephemeral, easily run your own instance isolated from the world.
* JSON API: Raw JSON API available for 3rd party tools or command line via curl or wget.
* Command line interface: Automate your password distribution with CLI tools or custom scripts.
* Logins: Invite your colleagues and track what is pushed and who retrieved it.
* Admin Dashboard: Manage your self-hosted instance with a built in admin dashboard.
* Internationalized: 29 language translations are bundled in. Easily selectable via UI or URL
* Themes: 26 themes bundled in courtesy of Bootswatch. Select with a simple environment variable.
* Unbranded delivery page: No logos, superfluous text or unrelated links to confuse end users.
* Customizable: Change text and default options via environment variables.
* Light & dark themes: Via CSS @media integration, the default site theme follows your local preferences.
* Re-Brandable: Customize the site name, tagline and logo to fit your environment.
* Custom CSS: Bundle in your own custom CSS to add your own design.
* 10 Years Old: Password Pusher has securely delivered millions and millions of passwords in its 10 year history.
* Actively Maintained: I happily work for the good karma of the great IT/Security community.
* Honest Software: Open source written and maintained by me with the help of some great contributors. No organizations, corporations or evil agendas.

View file

@ -0,0 +1,29 @@
+++
author = "rootdo.com"
title = "Privatebin"
date = "2024-06-22"
description = "PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data."
tags = [
"post",
"privatebin",
]
categories = [
"blog",
"services",
]
series = ["blog"]
aliases = ["privatebin"]
+++
* Service
* https://bin.rootdo.com
* Source
* https://github.com/PrivateBin/PrivateBin
---
# <span style='color: #e0ac16;'><b>Description</b></span>
* A free open source alternative Wikipedia front-end focused on privacy.
# <span style='color: #e0ac16;'><b>Features</b></span>
* Data is encrypted and decrypted in the browser using 256bit AES in Galois Counter mode.
* This is a fork of ZeroBin, originally developed by Sébastien Sauvage. PrivateBin was refactored to allow easier and cleaner extensions and has many additional features. It is, however, still fully compatible to the original ZeroBin 0.19 data storage scheme. Therefore, such installations can be upgraded to PrivateBin without losing any data.

28
content/post/searxng.md Normal file
View file

@ -0,0 +1,28 @@
+++
author = "rootdo.com"
title = "SearxNG"
date = "2024-06-22"
description = "meta-search engine"
tags = [
"post",
"searxng",
]
categories = [
"blog",
"services",
]
series = ["blog"]
aliases = ["searxng"]
+++
* Service
* https://search.rootdo.com
* Source
* https://github.com/SearXNG/SearXNG
---
* Privacy-respecting, hackable metasearch engine

38
content/post/send.md Normal file
View file

@ -0,0 +1,38 @@
+++
author = "rootdo.com"
title = "Firefox Send"
date = "2023-12-04"
description = "Firefox Send back online. ARM64 version."
tags = [
"post",
"send",
"firefox",
"mozilla",
]
categories = [
"blog",
"services",
]
series = ["blog"]
aliases = ["send"]
+++
* Service
* [send.rootdo.com](https://send.rootdo.com)
* Source
* [https://github.com/timvisee/send](https://github.com/timvisee/send)
---
* Firefox Send is back online. I got it somehow to work with ARM64 and unofficial container images for that. The main fork of the the discontinued Mozilla version did not support ARM64 officially.
* Send
* A fork of Mozilla's Firefox Send. Mozilla discontinued Send, this fork is a community effort to keep the project up-to-date and alive.
* Forked at Mozilla's last publicly hosted version
* Mozilla & Firefox branding is removed so you can legally self-host
* Kept compatible with ffsend (CLI for Send)
* Dependencies have been updated
* Mozilla's changes since the fork have been selectively merged
* Mozilla's experimental report feature, download tokens, trust warnings and FxA changes are not included
* <b>Server info</b>
* Data limit is 10GB max currently.
* All files uploaded are End-to-End encrypted client side.

View file

@ -0,0 +1,27 @@
+++
author = "rootdo.com"
title = "Vaultwarden"
date = "2023-12-26"
description = "Self-hosted encrypted password manager"
tags = [
"post",
"vaultwarden",
]
categories = [
"blog",
"services",
]
series = ["blog"]
aliases = ["vaultwarden"]
+++
---
![vaultwarden](/img/vw-gray.png)
### Service
#### https://vault.rootdo.com
### Source
#### https://github.com/dani-garcia/vaultwarden
### Documentation & FAQ
#### https://docs.rootdo.com/vaultwarden
---

29
content/post/wikiless.md Normal file
View file

@ -0,0 +1,29 @@
+++
author = "rootdo.com"
title = "Wikiless"
date = "2024-06-22"
description = "A free open source alternative Wikipedia front-end focused on privacy."
tags = [
"post",
"wikiless",
]
categories = [
"blog",
"services",
]
series = ["blog"]
aliases = ["wikiless"]
+++
* Service
* https://wikiless.rootdo.com
* Source
* https://github.com/Metastem/wikiless
---
# Description
* A free open source alternative Wikipedia front-end focused on privacy.

79
content/privacy/index.md Normal file
View file

@ -0,0 +1,79 @@
+++
title = "Privacy"
description = "Privacy Policy"
date = "2023-12-03"
disableComments = "true"
aliases = ["privacy", "policy"]
author = "rootdo.com"
+++
## This Privacy Policy applies to rootdo.com (.org .net) and all subdomains
Individual services hosted on their subdomains usually have their own Privacy Policies which will differ from this here. If that is the case, this Privacy Policy applies only to that particular service/subdomain and not itself.
The policies may change at any time without prior notice (especially when new services are added or removed).
No identifiable data is shared with any third party, unless initiated by the user, required for combating abuse, or operationally necessary.
Some services require the use of cookies and/or local storage which are required to provide you with the service (such as remembering user preferences) and are not collected by anyone. None of the services use any kind of third-party cookies if not otherwise mentioned.
# Data collected by the operator
- Proxy & Server access logs
- Access logs are set to **discard**. No logs are kept.
- IPs are checked with intrusion detection systems at service logs to prevent abuse.
- The only metrics that get viewed at, in real-time for troubleshooting are via netdata monitoring
- https://github.com/netdata/netdata locally on the server. No user data or logs are saved or kept. Container Services can be looked at in real-time to determine if some sort of abuse or attack is happening. IPs may be looked at in real-time.
# Vaultwarden
- The entire service is End-to-end encrypted and therfore no data is visible to anyone but the user itself.
- Password hints are visible to the Server owner. Be aware of that when choosing to use this option.
- This Vaultwarden instance is self-hosted and not in any way an official service by Bitwarden or the Vaultwarden project.
- This Vaultwarden instance uses the Bitwarden Push Service for Push notifications. No sensible data or information is shared with Bitwarden. It is only used to make the Push service and sync work. ( https://bitwarden.com/host/ )
- Email registration and Informations are sent with an SMTP service ( https://www.smtp2go.com/ ) it is a well known service used by many big companies and developers. Reasoning is, that self-hosted SMTP servers very often get blacklisted by major Email services.
- The data is saved on an fully encrypted drive. Backups are made every hour and saved on a storage server and encrypted with rclone crypt before uploading it.
- The web service https://vault.rootdo.com is monitored by an intrusion prevention system. Abusing the service might lead to an auto ban of your IP.
# PrivateBin & MicroBin
- Paste IDs are not collected in the access.log
-Pasted contents, including attachments and comments, are encrypted and decrypted client-side (if used), so that only those who have the full URL may decrypt them. The encrypted contents are stored in a database controlled by the Operator according to the specific directives as given by the user.
- You can choose to not encrypt your pastes and text/files. It is strongly advised to do so though!
- Files are purged every 10 days
# Send
- Send uses 128-bit AES-GCM encryption via the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) to encrypt files in the browser before uploading them to the server. The code is in [app/keychain.js](https://github.com/timvisee/send/blob/master/app/keychain.js)
- https://github.com/timvisee/send/blob/master/docs/encryption.md
# Pingvin Share
- <s>Files uploaded are not End-to-End encrypted by default. It is possible to set a password for every file shared, so it is no one can access the file without the correct password.
- Files are attached to your created account.
- Files uploaded are encrypted and stored with https://rclone.org/crypt </s>
# Miniflux
- Miniflux is a Feed/RSS Reader.
- You can request an account for it. There is no way to register with your own Email.
- You can login with your Google Account though, it will create a Miniflux account based on your Email attached to your Google account.
- This is called OIDC/OAuth2 ( https://auth0.com/docs/authenticate/protocols/openid-connect-protocol ).
- Please be aware that data might get shared with Google if you use this.
# Third parties
- The main Server is hosted at Hetzner Online GmbH and is located in Falkenstein, Germany.
Some services may use some sort of CDN to provide a better experience to those who are further away from the server.
Information regarding abusive behaviour occuring on the Service may be shared with other parties in the interest of mutual protection.
- <b>Storage-Server(s) are hosted at:</b>
- https://www.hetzner.com
- https://www.backblaze.com
- https://www.wasabi.com
# Data Encryption
- All data is encrypted with https://rclone.org/crypt before it is uploaded to any Storage-Server.
- <b>Storage servers used:</b>
- Hetzner Storage
- Backblaze B2/S3 Storage
- Wasabi S3 Storage
# Cookies
- Based on Art. 6 Abs. 1 lit. f DSGVO/GDPR this site uses cookies. These are little textfiles stored by your browser, that are harmless to your computer. These cookies are not used to track any user and are only used as Session-Cookies and/or for essential features like language or site-features such as dark/light mode. ( § 15 TMG )
# Deletion of your data
- Based on Art. 17 und 18 DSGVO we do not store or process data more than sincerely needed. Deletion usually happens automated or manually unless we are required by law to furtherly store it.
# Your Rights
- Based on active law, you are in the right to get free information about personal data and how it is used or where it came from, as well as correcting it or ask for deletion. You may contact me here https://rootdo.com/contact
Keep in mind that the services that do save data like Send or MicroBin are configured to automatically delete files and data after a max of 7 days anyway.
For abuse reports and takedown requests please go here: https://rootdo.com/contact

62
content/tos/index.md Normal file
View file

@ -0,0 +1,62 @@
+++
title = "Terms of Service"
description = "TERMS OF SERVICE"
date = "2023-12-03"
disableComments = "true"
aliases = ["terms", "ToS"]
author = "rootdo.com"
+++
---
Terms of Service for rootdo.com (.org .net) and all subdomains.
# Accepting our Terms
- If you interact with this Service in any way, whether registered as a user or from a remote instance (if the service supports federation), you agree and are bound to these terms written in this document.
# This document evolves over time
- If there are changes, you will receive an announcement by the service your are using, as you must agree to proceed.
# Breach of terms
- Breaching any of these terms (and our rules), may result in immediate deletion or remote blocking of your account (or server). You may contact the admin if you think there was a mistake: https:/rootdo.com/contact
# You are not allowed to:
- Use this service for commercial use or for any use that generate money.
- Scrape any content of anything.
- Attack the server in any way.
- Attempt to gain unauthorized access to anything that you aren't allowed to access.
# Play nice clauses
- Use of this service
- You agree to follow our rules (above) and German/European law while using this service. You will not do any harmful or malicious activities, or otherwise any kind of behavior considered mean
- Illegal content
- Any kind of illegal or harmful content will be removed if found. It also leads to suspension or remote-blocking of your account and/or IP.
- Please contact me https://rootdo.com/contact to provide details if in the need for reporting.
# Account creation
- E-Mail
- When E-Mail registration is enabled: In order to create your account, you must provide a valid non-throwaway email-address. We use this to verify your account, to notify you about messages or invites or to provide you a way to reset your password. Usecases may vary depending on the service you are using. This address will never be shared with Third-Parties.
- However, most services on rootdo.com do not need or require an E-Mail to use.
- Minimum age
- As we want to keep personal data stored about you at a minimum, we can't ask you to verify your parents consent in case you are between 1316 year old. As a consequence, you must be at least 16 years old in order to be allowed to use a ##### service. Exeptions may occour according the laws of your residential country. See also: (Art. 8 GDPR) **https://gdpr-info.eu/art-8-gdpr/**
# Restriction and Termination
- Your account might get restricted, blocked, disabled or entirely terminated based on our sole discretion, without prior notice or any liability to you.
# Encryption
- A service may allow or force you to encrypt your messages and uploads using end-to-end encryption. Some countries have specific laws you must comply with when using such a feature. You are responsible for checking this in advance. If we learn about such a law being violated by you, we have the right to suspend your account without notice.
# Third-parties
- Parts of this service are actually provided by third-parties such as services in your clients integration manager, the SMS-provider or the integrated Jitsi service. Please take the third-parties data protection notes into account.
# Warranty
- rootdo.com does not come with any warranty what-so-ever. You are using it at your own risk. You acknowledge that we do not control any Third-Party contents and that at no point and kind of warranty is given.
The services is provided as is, without warranty of any kind, express or implied. In no event shall the authors be liable for any claim, damages or other liability arising from, out of or in connection with the service
or the use or other dealings in the service. We do not warrant the reliability, accessibility or quality of our service. You agree that your use of our service is at your own risk.
# Emergency service calls
- Even tho technically a call-feature may exist, it is over the internet and does not support any emergency calls what so ever.
# Abuse report
* Phone: on request
* Web: https://rootdo.com/contact
* Email: [abuse[at]rootdo.com](mailto:abuse[at]rootdo.com)

1
content/totp/css/bulma-0.9.4.min.css vendored Normal file

File diff suppressed because one or more lines are too long

BIN
content/totp/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Convert hexadecimal to base-32</title>
<link rel="stylesheet" href="css/bulma-0.7.1.min.css">
<style>
@media screen and (min-width: 1068px) {
.container {
max-width: 600px;
width: 600px;
}
}
</style>
</head>
<body>
<section id="app" class="section">
<div class="container">
<h1 class="title">Hex to base-32 Converter</h1>
<label class="label is-uppercase">Hex string</label>
<div class="field">
<div class="control is-expanded">
<input class="input" type="text" v-model="hex" autofocus placeholder="The secret key (in hex)">
</div>
</div>
<div v-show="base32" class="box" style="background-color: #fafafa">
<label class="label is-uppercase">Base-32</label>
<p class="has-text-info is-size-4 has-text-weight-bold">{{ base32 }}</p>
</div>
</div>
</section>
<footer class="footer">
<div class="container">
<div class="content has-text-centered">
<p>
Built by <a href="https://dan.hersam.com">Dan Hersam</a>. Source on <a href="https://github.com/jaden/totp-generator">Github</a>.
</p>
<p>
<a class="icon" href="https://github.com/jgthms/bulma">
<i class="fa fa-github"></i>
</a>
</p>
</div>
</div>
</footer>
<script src="js/vue-2.4.0.min.js"></script>
<script src="js/otpauth-3.1.3.min.js"></script>
<script src="js/hex-to-base32.js"></script>
</body>
</html>

View file

@ -0,0 +1,3 @@
<svg height="1024" width="896" xmlns="http://www.w3.org/2000/svg">
<path d="M128 768h256v64H128v-64z m320-384H128v64h320v-64z m128 192V448L384 640l192 192V704h320V576H576z m-288-64H128v64h160v-64zM128 704h160v-64H128v64z m576 64h64v128c-1 18-7 33-19 45s-27 18-45 19H64c-35 0-64-29-64-64V192c0-35 29-64 64-64h192C256 57 313 0 384 0s128 57 128 128h192c35 0 64 29 64 64v320h-64V320H64v576h640V768zM128 256h512c0-35-29-64-64-64h-64c-35 0-64-29-64-64s-29-64-64-64-64 29-64 64-29 64-64 64h-64c-35 0-64 29-64 64z" />
</svg>

After

Width:  |  Height:  |  Size: 519 B

96
content/totp/index.html Normal file
View file

@ -0,0 +1,96 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOTP Generator</title>
<link rel="stylesheet" href="css/bulma-0.9.4.min.css">
<style>
[v-cloak] {
display: none;
}
html, body {
height: 100%;
}
body > footer {
position: sticky;
top: 100vh;
}
.footer {
padding: 2rem;
}
@media screen and (min-width: 1068px) {
.container {
max-width: 600px;
width: 600px;
}
}
</style>
</head>
<body>
<script defer src="js/vue-3.3.2.global.prod.js"></script>
<script defer src="js/otpauth-9.1.3.min.js"></script>
<script defer src="js/clipboard-2.0.6.min.js"></script>
<script defer src="js/app.js?v=1.2"></script>
<section id="app" class="section" v-cloak>
<div class="container">
<h1 class="title">TOTP Token Generator</h1>
<div class="field">
<label class="label is-uppercase">Your Secret Key</label>
<div class="control">
<input class="input" type="text" v-model="secret_key" placeholder="The secret key (in base-32 format)">
</div>
</div>
<div class="field">
<label class="label is-uppercase">Number of Digits</label>
<div class="control">
<input class="input" type="text" v-model="digits" placeholder="Usually 6">
</div>
</div>
<div class="field">
<label class="label is-uppercase">Token Period (in seconds)</label>
<div class="control">
<input class="input" type="text" v-model="period" placeholder="Usually 30">
</div>
</div>
<div class="content">
<span class="has-text-grey is-size-7">Updating in {{ updatingIn }} seconds</span>
<progress class="progress is-info is-small" v-bind:value="updatingIn" :max="period"></progress>
</div>
<div class="box">
<p class="title is-size-1 has-text-centered" id="token">{{ token }}</p>
</div>
<div class="control is-clearfix">
<a class="button is-large is-light is-pulled-right" id="clipboard-button" data-clipboard-target="#token" title="Copy token to clipboard">
<img src="img/clippy.svg" height="36" width="36">
</a>
</div>
</div>
</section>
<footer class="footer">
<div class="container">
<div class="content has-text-centered">
Built by <a href="https://dan.hersam.com">Dan Hersam</a>. Source on <a href="https://github.com/jaden/totp-generator">Github</a>.
</div>
</div>
</footer>
</body>
</html>

102
content/totp/js/app.js Normal file
View file

@ -0,0 +1,102 @@
function getCurrentSeconds() {
return Math.round(new Date().getTime() / 1000.0);
}
function stripSpaces(str) {
return str.replace(/\s/g, '');
}
function truncateTo(str, digits) {
if (str.length <= digits) {
return str;
}
return str.slice(-digits);
}
function parseURLSearch(search) {
const queryParams = search.substr(1).split('&').reduce(function (q, query) {
const chunks = query.split('=');
const key = chunks[0];
let value = decodeURIComponent(chunks[1]);
value = isNaN(Number(value)) ? value : Number(value);
return (q[key] = value, q);
}, {});
return queryParams;
}
const app = Vue.createApp({
data() {
return {
secret_key: 'JBSWY3DPEHPK3PXP',
digits: 6,
period: 30,
algorithm: 'SHA1',
updatingIn: 30,
token: null,
clipboardButton: null,
};
},
mounted: function () {
this.getKeyFromUrl();
this.getQueryParameters()
this.update();
this.intervalHandle = setInterval(this.update, 1000);
this.clipboardButton = new ClipboardJS('#clipboard-button');
},
destroyed: function () {
clearInterval(this.intervalHandle);
},
computed: {
totp: function () {
return new OTPAuth.TOTP({
algorithm: this.algorithm,
digits: this.digits,
period: this.period,
secret: OTPAuth.Secret.fromBase32(stripSpaces(this.secret_key)),
});
}
},
methods: {
update: function () {
this.updatingIn = this.period - (getCurrentSeconds() % this.period);
this.token = truncateTo(this.totp.generate(), this.digits);
},
getKeyFromUrl: function () {
const key = document.location.hash.replace(/[#\/]+/, '');
if (key.length > 0) {
this.secret_key = key;
}
},
getQueryParameters: function () {
const queryParams = parseURLSearch(window.location.search);
if (queryParams.key) {
this.secret_key = queryParams.key;
}
if (queryParams.digits) {
this.digits = queryParams.digits;
}
if (queryParams.period) {
this.period = queryParams.period;
}
if (queryParams.algorithm) {
this.algorithm = queryParams.algorithm;
}
}
}
});
app.mount('#app');

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,13 @@
new Vue({
el: '#app',
data: {
hex: '',
},
computed: {
base32: function () {
const buf = OTPAuth.Utils.hex.encode(this.hex);
return OTPAuth.Utils.b32.decode(buf);
}
}
});

3
content/totp/js/otpauth-9.1.3.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

63
content/ut/base.css Executable file
View file

@ -0,0 +1,63 @@
html {
padding-top: 1em;
background-color: #282828;
}
body {
background-color: #3c3836;
border: 1px dashed black;
font-family: monospace;
color: #bcad8f;
margin: auto;
padding: 1em;
max-width: 800px;
}
table, td, th {
font-size: 110%;
border: 1px solid #a9ac26;
border-collapse: collapse;
padding: 5px;
background: beige;
}
th {
background: lightblue;
}
h2 {
text-decoration: underline;
}
section {
padding: 10px;
margin-left: 2em;
}
h1>a {
color: black;
}
img {
margin: 1em;
max-width: 700px;
border: 1px solid #a9ac26;
}
label {
margin: 1em;
display: block;
}
code {
color: white;
background: black;
padding: 0 1px;
}
code::before, code::after {content: '`'}
iframe {
width: 100%;
border: none;
}

BIN
content/ut/ig.mp4 Normal file

Binary file not shown.

37
content/ut/index.html Executable file
View file

@ -0,0 +1,37 @@
<!doctype html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="base.css">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Unreal Tournament</title>
</head>
<body>
Unreal Tournament GOTY - The best game ever made!
<b><pre>
<center>
<video width="720" height="480" controls>
<source src="instagib.mp4" type="video/mp4">
<source src="instagib.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
<video width="720" height="480" controls>
<source src="ut.mp4" type="video/mp4">
<source src="ut.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
<video width="720" height="480" controls>
<source src="ig.mp4" type="video/mp4">
<source src="ig.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
</center>
</pre></b>
<p></p>
</body>
<footer>
<hr>
<span style="float: right">INSTAGIB FRAG</span>
<span>&copy;
nulla auctoritate
</span>
</footer>

33
content/ut/index.html_og Executable file
View file

@ -0,0 +1,33 @@
<!doctype html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="base.css">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Unreal Tournament</title>
</head>
<body>
Unreal Tournament - The best game ever made!
<b><pre>
<center>
<video width="640" height="480" controls>
<source src="ut.mp4" type="video/mp4">
<source src="ut.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
<video width="640" height="480" controls>
<source src="instagib.mp4" type="video/mp4">
<source src="instagib.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
</center>
</pre></b>
<p></p>
</body>
<footer>
<hr>
<span style="float: right">INSTAGIB FRAG</span>
<span>&copy;
nulla auctoritate
</span>
</footer>

BIN
content/ut/instagib.mp4 Normal file

Binary file not shown.

BIN
content/ut/ut.mp4 Executable file

Binary file not shown.

0
layouts/.gitkeep Normal file
View file

View file

@ -0,0 +1 @@
<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination "http" }} target="_blank"{{ end }}>{{ .Text }}</a>

Some files were not shown because too many files have changed in this diff Show more