summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/build/i18n.mjs2
-rw-r--r--src/build/index.mjs41
-rw-r--r--src/css/_style.scss65
-rw-r--r--src/pages/legal-en.md85
-rw-r--r--src/pages/legal.md85
5 files changed, 257 insertions, 21 deletions
diff --git a/src/build/i18n.mjs b/src/build/i18n.mjs
index 00a554b..3f8c748 100644
--- a/src/build/i18n.mjs
+++ b/src/build/i18n.mjs
@@ -13,6 +13,7 @@ const i18n = {
git: "Dépôt git personnel",
mastodon: "Mon mastodon",
notes: "Notes",
+ legal: "Mentions légales",
},
articles: [
"framasoft-et-les-mascottes-du-libre.md",
@@ -60,6 +61,7 @@ const i18n = {
git: "Personnel git repository",
mastodon: "Mastodon account",
notes: "Notes",
+ legal: "Legal notice",
},
articles: [
"rail-and-advertising.md",
diff --git a/src/build/index.mjs b/src/build/index.mjs
index 980e6cd..59c006e 100644
--- a/src/build/index.mjs
+++ b/src/build/index.mjs
@@ -18,6 +18,7 @@ const headerTmpl = fs.readFileSync("src/templates/header.tmpl", "utf8");
const articleTmpl = fs.readFileSync("src/templates/article.tmpl", "utf8");
const indexTmpl = fs.readFileSync("src/templates/index.tmpl", "utf8");
const notesTmpl = fs.readFileSync("src/templates/notes.tmpl", "utf8");
+const legalTmpl = fs.readFileSync("src/templates/legal.tmpl", "utf8");
const tagTmpl = fs.readFileSync("src/templates/tag.tmpl", "utf8");
const hidTmpl = fs.readFileSync("src/templates/hid.tmpl", "utf8");
const baseUrl = "https://ache.one/";
@@ -38,6 +39,7 @@ const listNotes = fs
.readdirSync("notes")
.filter((name) => name.endsWith(".md"));
const notesAll = loadMD(listNotes, "notes"); // lang is determined from the note
+const legalPages = loadMD(["legal.md", "legal-en.md"], "src/pages");
for (const lang in i18n) {
const tagsArticle = new Map();
@@ -192,6 +194,44 @@ for (const lang in i18n) {
});
}
+ // Legal page
+ {
+ const legal_page = legalPages.filter(
+ (page) => page.metaData.lang == lang,
+ )[0];
+ const alt_lang = {
+ fr: {
+ lang: "en",
+ url: "/en/",
+ },
+ en: {
+ lang: "fr",
+ url: "/fr/",
+ },
+ };
+ const context = {
+ page_title: i18n[lang].title.legal,
+ title: i18n[lang].title,
+ intro: i18n[lang].intro,
+ lang,
+ canonical: `${baseUrl}${lang}/legal`,
+ svg,
+ content: legal_page.content,
+ alt_lang: [alt_lang[lang]],
+ description: i18n[lang].index_desc,
+ };
+
+ console.log(`Create : Legal page ${lang}`);
+ const output = mustache.render(legalTmpl, context, partials);
+
+ fs.writeFileSync(`${lang}/legal.html`, minifyHTML(output));
+ links.push({
+ url: `${lang}/legal.html`,
+ changefreq: "yearly",
+ priority: 0.1,
+ });
+ }
+
// Home page
{
const alt_lang = {
@@ -229,7 +269,6 @@ for (const lang in i18n) {
}
console.log(`Create: sitemap.xml`);
-
// Create a stream to write to
const stream = new SitemapStream({ hostname: "https://ache.one" });
diff --git a/src/css/_style.scss b/src/css/_style.scss
index 060fe8f..44c4afe 100644
--- a/src/css/_style.scss
+++ b/src/css/_style.scss
@@ -2,22 +2,31 @@
cursor: pointer;
list-style-type: disc;
}
+
.file {
list-style: circle;
+
a {
padding-top: 5px;
padding-bottom: 5px;
}
}
-.qcm_item p {margin: 0; padding: 0; display: inline;}
-.qcm_check, .qcm_radio {padding-left: 32px;}
-
+.qcm_item p {
+ margin: 0;
+ padding: 0;
+ display: inline;
+}
+.qcm_check,
+.qcm_radio {
+ padding-left: 32px;
+}
details {
color: #424242;
}
+
.special-box {
margin: 12.5px 12.5px;
padding: 10px 0 10px 95px;
@@ -27,7 +36,8 @@ details {
background: #eee7da;
color: #424242;
}
-.special-box:before{
+
+.special-box:before {
content: "";
display: block;
width: 48px;
@@ -35,7 +45,9 @@ details {
background-repeat: no-repeat;
margin: 0 0 -48px -70px;
}
+
@mixin box($name, $bg) {
+
/* Theme style */
.#{$name} {
background: $bg;
@@ -75,12 +87,15 @@ details {
/* Theme style */
background: #eee;
}
+
.hiden_block_quote {
display: none;
}
+
.special-box-content {
margin-top: 5px;
}
+
kbd {
padding: 2px 6px;
border-radius: 3px;
@@ -92,42 +107,46 @@ kbd {
border: 1px solid #e0dab6;
color: #5e551f;
}
+
.view {
position: relative;
}
+
.raw_button {
position: absolute;
top: 10px;
right: 0;
- margin : 0;
- padding : 0;
- border : 0;
- background : transparent;
- font-family : inherit;
- font-size : 1em;
- cursor : pointer;
-
- > div {
- width : 40px;
- height : 24px;
- line-height : 24px;
- border-radius : 3px;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ background: transparent;
+ font-family: inherit;
+ font-size: 1em;
+ cursor: pointer;
+
+ >div {
+ width: 40px;
+ height: 24px;
+ line-height: 24px;
+ border-radius: 3px;
font-size: 12px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
/* Theme style */
- border : 1px solid rgba(27, 31, 35, 0.2);
- background : #c0c0c0 url('image.png') no-repeat center center;
+ border: 1px solid rgba(27, 31, 35, 0.2);
+ background: #c0c0c0 url('image.png') no-repeat center center;
color: #24292e;
background-color: #eff3f6;
background-image: linear-gradient(to top, #fafbfc 0%, #eff3f6 90%);
}
- > div > div {
+
+ >div>div {
font-weight: bold;
}
}
+
.no-style {
text-decoration: none;
}
@@ -142,13 +161,19 @@ kbd {
border: 2px solid $border;
}
+.mono_cap {
+ font-family: "Courier New", Courier, monospace;
+}
+
/* Theme style */
.valid {
@include state(#c0392b, #9F9);
}
+
.invalid {
@include state(#c0392b, #f99);
}
+
.glowing {
@include state(#c0392b, #99F);
}
diff --git a/src/pages/legal-en.md b/src/pages/legal-en.md
new file mode 100644
index 0000000..8a6597f
--- /dev/null
+++ b/src/pages/legal-en.md
@@ -0,0 +1,85 @@
+---
+pubDate = 2024-08-12T00:01:10+02:00
+lang = "en"
+
+[author]
+name = "ache"
+email = "ache@ache.one"
+---
+
+# Legal Notice
+
+I am (relatively) known on the web under the pseudonym **ache**, this is my personal website and the logo of this site is my visual identity on the web.
+
+- 📧 My e-mail address: <mailto:ache@ache.one>
+- 🔑 My PGP key: [814386F447AD115F](https://ache.one/ache.gpg)
+- 🐘 My Mastodon profile: [@ache@mastodon.xyz](https://mastodon.xyz/@ache)
+
+If you like what I do, you can support me via Ethereum <span class="mono_cap">0x01CfcFB0B387B64198C820D87e4092BbE4b6e4C5</span>.
+Here is a quick link QR-Code :
+
+![Address of my ♦ ETH wallet](/res/qr-code_eth-wallet.svg)
+
+## Copyrights
+
+The writings on this site are mine.
+They thus reflect my personal opinion and are subject to copyright.
+The animations on this site are all mine and also subject to copyright, however I share them under the [CC-BY-SA 4.0 license](https://creativecommons.org/licenses/by-sa/4.0/deed.fr).
+You can thus reuse them, modify them, and share these modifications with the sole restriction of citing me as the original author (by my pseudonym and a link to my website).
+
+Example of citation: "Animation by ache (https://ache.one)".
+
+The other images are subject to their respective copyrights.
+More specifically:
+
+- The icons of the side panel are from the [SuperTinyIcons](https://github.com/edent/SuperTinyIcons) project and are shared under their original license.
+- The DuckDuckGo logo is the property of the American company of the same name.
+- The (old) Discord logo is the property of the American company of the same name following [their terms of use](https://discord.com/branding).
+- The logotype of the "C language" is from the cover of the first edition of the book "The C Programming Language".
+- The Framasoft logo (the animation) is an original creation derived from the base logo created by [JosephK-Framasoft](https://commons.wikimedia.org/wiki/File:Framasoft_Logo.svg?lang=fr) shared under the same license (CC-BY-SA) for the French association under the 1901 law Framasoft.
+ This animation represents a penguin (an animal that cannot fly, unlike auks) trying to escape its condition.
+
+The source code of this website is mine and available on [my git repository](https://git.ache.one/ache.one/).
+It's not quite released as free software but you can considere it published as [WTFPLv2](http://www.wtfpl.net/about/).
+
+:::attention
+To report a security flaw on this website, please contact me by e-mail with PGP encryption following the instructions [security.txt](/.well-known/security.txt).
+:::
+
+## Data
+
+No personal data is stored on the server side (or client side), except for the IP address contained in the log of requests made on the server.
+The requests are kept for a maximum duration of 1 year and within the limit of 1MB of log (compressed).
+
+No cookies are deposited 🙅 🍪, no tracking device (tracker ⛔) is present on the site, and I don't have any partner or subcontrator.
+In particular no partner or subcontractor has access to the requests made on the site (the only information stocked, remember ?).
+The VPS host (OVH SAS) has physical access to the connection logs (requests), since these are not encrypted.
+
+## Host
+
+This site is hosted on a personal VPS from OVH.
+With the corporate name "OVH SAS" and having its head office at 2 rue Kellermann (59100) Roubaix in France.
+You can contact them at their single number 1007 (or outside France at +33 9 72 10 10 07).
+
+## Figure it out
+
+This site has no commercial purpose, sells nothing, the content of this website is provided for informational purposes only.
+All the content of the site is provided "as is" without any warranty of any kind, express or implied.
+
+As the author of the content present on this site, I strive to provide accurate and up-to-date information.
+However, it is important to note that I cannot be held responsible for any damage or loss, including indirect or consequential damages, arising from the use of the content present on this website.
+You assume all risks related to its use.
+
+In particular, this site contains links to external sites provided for indicative purposes.
+I am also not responsible for the content or privacy practices of external sites.
+
+This site may disappear overnight at my discretion.
+I reserve the right to modify, suspend, or unpublish (all or part of) this website at any time without notice.
+I cannot be held responsible for the consequences of such modifications, suspensions, or unpublishing.
+
+---
+
+If you have any comments about this blog, or would like to thank me, please contact me by e-mail (<mailto:ache@ache.one>).
+Quick link via QR-Code :
+
+![Personal e-mail address](/res/qr-code_email.svg)
diff --git a/src/pages/legal.md b/src/pages/legal.md
new file mode 100644
index 0000000..5d2e033
--- /dev/null
+++ b/src/pages/legal.md
@@ -0,0 +1,85 @@
+---
+pubDate = 2024-08-12T00:01:10+02:00
+lang = "fr"
+
+[author]
+name = "ache"
+email = "ache@ache.one"
+---
+
+# Mentions légales
+
+Je suis (très relativement) connu sur le web sous le pseudo **ache**, ceci est mon site web personnel et le logo de ce site est mon identité visuelle sur le web.
+
+- 📧 Mon adresse e-mail : <mailto:ache@ache.one>
+- 🔑 Ma clé PGP : [814386F447AD115F](https://ache.one/ache.gpg)
+- 🐘 Mon profil Mastodon : [@ache@mastodon.xyz](https://mastodon.xyz/@ache)
+
+Si vous aimez le contenu de ce site, vous pouvez me soutenir avec Ethereum : <span class="mono_cap">0x01CfcFB0B387B64198C820D87e4092BbE4b6e4C5</span>.
+Voici un lien rapide QR-Code :
+
+![Adresse de mon portefeuille de crypto-monnaie ♦ ETH.](/res/qr-code_eth-wallet.svg)
+
+## Droits d'auteurs et « copyrights »
+
+Les écrits sur ce site sont les miens.
+Il reflète ainsi mon opinion personnelle et sont soumis au droit d'auteur.
+Les animations sur ce site sont toutes de moi et également soumis au droit d'auteur, cependant je les partage sous [licence CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.fr).
+Vous pouvez ainsi les réutiliser, les modifier et partager ces modifications à la seule restriction de me citer comme auteur original (par mon pseudo et un lien vers mon site web).
+
+Exemple de citation : « Animation par ache (https://ache.one) ».
+
+Les autres images sont soumises à leur droit d'auteur respectif.
+Plus précisément :
+
+- Les icônes du panneau latéral sont issues du projet [SuperTinyIcons](https://github.com/edent/SuperTinyIcons) et sont partagées sous leur licence initiale.
+- Le logo de DuckDuckGo est la propriété de la société étasunienne du même non.
+- Le logo Discord (ancien) est la propriété de la société étasunienne du même en suivant [leurs conditions d'utilisation](https://discord.com/branding).
+- Le logo du « langage C » est issue de la couverture de la première édition du livre « The C Programming Language ».
+- Le logo de Framasoft (l'animation) est une création originale issue du logo de base créé par [JosephK-Framasoft](https://commons.wikimedia.org/wiki/File:Framasoft_Logo.svg?lang=fr) partagée sous la même licence (CC-BY-SA) pour l'association française de loi 1901 Framasoft.
+ Cette animation représente un manchot (animal qui ne peut pas voler, contrairement aux pingouins) tenté de s'échapper de sa condition.
+
+Le code source de ce site web est le mien et est disponible sur [mon dépôt git](https://git.ache.one/ache.one/).
+Il n'est pas tout à fait publié en tant que logiciel libre, mais vous pouvez le considérer comme publié sous [WTFPLv2](http://www.wtfpl.net/about/).
+
+:::attention
+Pour signaler une faille de sécurité sur ce site web, veuillez me contacter par courrier électronique avec chiffrement PGP en suivant les instructions du fichier [security.txt](/.well-known/security.txt).
+:::
+
+## Données
+
+Aucune donnée personnelle n'est stockée coté serveur (ni client d'ailleurs), excepté l'adresse IP contenue dans le journal des requêtes faite sur le serveur.
+Les requêtes sont conservées pour une durée de 1 an maximum et dans la limite d'1Mo de journal (compressé).
+
+Aucun cookie n'est déposé 🙅 🍪, aucun dispositif de pistage (mouchard ⛔) n'est présent sur le site et je n'ai aucun partenaire ni sous-traitant.
+En particulier, aucun partenaire ou sous-traitant n'a accès aux requêtes effectuées sur le site.
+L'hébergeur VPS (OVH SAS) a un accès physique aux journaux de connexion (requêtes), puisque ceux-ci ne sont pas chiffrés.
+
+## Hébergeur
+
+Ce site est hébergé sur un VPS personnel de chez OVH.
+De raison sociale « OVH SAS » et ayant pour siège social le 2 rue Kellermann (59100) Roubaix en France.
+Vous pouvez les contacter sur leur numéro unique 1007 (ou hors de France au +33 9 72 10 10 07).
+
+## Démerdez-vous
+
+Ce site n'a pas de but lucratif, ne vend rien, le contenu de ce site web est fourni à titre uniquement informatif.
+Tout le contenu du site est fourni "tel quel" sans garantie d'aucune sorte, expresse ou implicite
+
+En tant qu'auteur du contenu présent sur ce site, je m'efforce de fournir des informations précises et à jour.
+Cependant, il est important de noter que je ne saurais être tenu pour responsable de tout dommage ou perte, y compris les dommages indirects ou consécutifs, découlant de l'utilisation du contenu présent sur ce site web.
+Vous assumez tous les risques liés à son utilisation.
+
+En particulier, ce site contient des liens vers des sites externes fournis à titre indicatif.
+Je ne suis également pas responsable du contenu ou des pratiques de confidentialité des sites externes.
+
+Ce site peut disparaitre du jour au lendemain à mon bon vouloir.
+Je me réserve le droit de modifier, suspendre ou dépublier (tout ou partie de) ce site web à tout moment sans préavis.
+Je ne peux être tenu responsable des conséquences de telles modifications, suspensions ou dépublications.
+
+---
+
+Pour toute remarque vis-à-vis de ce blog, commentaires ou remerciement, contactez-moi de préférence par mon adresse email (<mailto:ache@ache.one>).
+Lien rapide via QR-Code :
+
+![Adresse e-mail personnelle.](/res/qr-code_email.svg)