Compare commits

...
5 Commits
Author SHA1 Message Date
julien 38962c93b4 Rename statutes document 2026-10-27 09:09:53 +01:00
julien ad4226f884 Add statutes articles 1–7 2026-10-27 09:09:30 +01:00
julien 5642a4692f Add association statutes 2026-10-27 09:08:47 +01:00
julien a79de1a398 Modernize Ruby hash syntax 2026-10-27 09:08:33 +01:00
julien 455e90fb27 Enable global CSRF protection 2026-10-27 09:08:05 +01:00
6 changed files with 124 additions and 16 deletions

No files matched your search

+4
View File
@@ -1,5 +1,9 @@
# netig.net
## TODO
* limiter les soumissions à /contact/send
## Développement
Installer les dépendances :
+7 -7
View File
@@ -2,12 +2,12 @@ require "mail"
Mail.defaults do
delivery_method :smtp, {
:address => "mail.netig.net",
:port => 587,
:domain => "netig.net",
:user_name => "noreply@netig.net",
:password => ENV.fetch("SMTP_PASSWORD"),
:authentication => "plain",
:enable_starttls => :always
address: "mail.netig.net",
port: 587,
domain: "netig.net",
user_name: "noreply@netig.net",
password: ENV.fetch("SMTP_PASSWORD"),
authentication: "plain",
enable_starttls: :always
}
end
+99
View File
@@ -0,0 +1,99 @@
# Statuts de l’association NETig
## Article 1 — Dénomination
Il est fondé entre les adhérents aux présents statuts une association régie
par la loi du 1er juillet 1901 et le décret du 16 août 1901, dénommée
NETig.
## Article 2 — Objet
L’association a pour objet de proposer à toutes et tous une alternative aux
services des géants du Web. Elle promeut et défend une approche fondée sur
les logiciels libres, le respect de la vie privée et la préservation des
libertés fondamentales.
## Article 3 — Principes
L’association structure son action autour de cinq principes fondamentaux :
- Le respect de la vie privée et la préservation des libertés fondamentales.
- L’utilisation exclusive de logiciels libres.
- La gratuité des services pour toutes et tous, financés par des dons
volontaires.
- Le partage équitable des ressources disponibles.
- L’ouverture et le partage des connaissances techniques.
## Article 4 — Siège social
Le siège social est fixé à Brasparts. Il peut être transféré librement
par décision du Noyau (article 11).
## Article 5 — Durée
La durée de l’association est illimitée.
## Article 6 — Membres
L’association est ouverte à toute personne, physique ou morale, qui adhère
aux présents statuts et aux principes de NETig.
Tous les membres disposent des mêmes droits. La participation aux activités
et à la gestion de l’association est libre et ne constitue pas une condition
de maintien de l’adhésion.
Les personnes morales membres désignent une personne physique pour les
représenter au sein de l’association.
## Article 7 — Adhésion
Toute demande d’adhésion implique l’acceptation des présents statuts et
des principes de NETig.
Le Noyau examine les demandes et valide celles qui sont conformes aux présents
statuts. Tout refus doit être motivé et peut faire l’objet d’un recours
auprès de l’Assemblée générale, qui statue définitivement.
La pérennité de NETig repose sur la mise en commun des ressources
nécessaires à son fonctionnement et au développement de ses services. Chaque
membre est encouragé à contribuer selon ses moyens et ses possibilités, par
ses ressources financières ou matérielles, ses compétences ou son temps.
Aucune contribution financière n’est obligatoire.
## Article 8 — Fin de l’adhésion
## Article 9 — Ressources
## Article 10 — Assemblée générale
## Article 11 — Noyau
## Article 12 — Décisions
## Article 13 — Représentation
## Article 14 — Gestion financière
## Article 15 — Modification des statuts
## Article 16 — Règlement intérieur
## Article 17 — Dissolution
+2 -1
View File
@@ -9,7 +9,7 @@ class Netig < Roda
plugin :public
plugin :default_headers, "Content-Type" => "text/html; charset=utf-8"
plugin :sessions, secret: ENV.fetch("SESSION_SECRET")
plugin :route_csrf
plugin :route_csrf, csrf_failure: :empty_403
plugin :hash_branches
plugin :flash
@@ -17,6 +17,7 @@ class Netig < Roda
route do |r|
r.public
check_csrf!
r.hash_branches
r.root do
+8 -2
View File
@@ -112,7 +112,6 @@ main > section:nth-of-type(odd):not(:only-of-type),
.page-panel {
max-width: 1000px;
padding: clamp(24px, 4vw, 48px);
border-radius: 16px;
background: var(--color-background);
}
@@ -175,6 +174,13 @@ a:hover {
text-decoration: underline;
}
/* Liens dans les paragraphes et le pied de page. */
main p a:not(.button),
footer a {
text-decoration: underline;
text-underline-offset: 0.15em;
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
@@ -408,7 +414,7 @@ summary:focus-visible {
padding: 10px;
border: 0;
font-family: inherit;
font-size: 1rem;
font-size: 1.2rem;
}
/* Ne pas appliquer le fond clair au bouton d'envoi. */
+4 -6
View File
@@ -1,18 +1,16 @@
class Netig
hash_branch "contact" do |r|
@page_title = "Contact — NETig"
@page_description = "Contacter NETig pour toute question concernant ses services."
@canonical_url = "https://netig.net/contact"
r.is do
r.get do
@page_title = "Contact — NETig"
@page_description = "Contacter NETig pour toute question concernant ses services."
@canonical_url = "https://netig.net/contact"
view "contact"
end
end
r.post "send" do
check_csrf!
form = ContactForm.new(r.params)
if form.spam?