Compare commits
5
Commits
main
...
6bc0e7ba62
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6bc0e7ba62 | ||
|
|
6034b5084c | ||
|
|
fd768680bc | ||
|
|
b57e3602e9 | ||
|
|
42a9218df4 |
No files matched your search
@@ -1,5 +1,9 @@
|
|||||||
# netig.net
|
# netig.net
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
* limiter les soumissions à /contact/send
|
||||||
|
|
||||||
## Développement
|
## Développement
|
||||||
|
|
||||||
Installer les dépendances :
|
Installer les dépendances :
|
||||||
|
|||||||
+7
-7
@@ -2,12 +2,12 @@ require "mail"
|
|||||||
|
|
||||||
Mail.defaults do
|
Mail.defaults do
|
||||||
delivery_method :smtp, {
|
delivery_method :smtp, {
|
||||||
:address => "mail.netig.net",
|
address: "mail.netig.net",
|
||||||
:port => 587,
|
port: 587,
|
||||||
:domain => "netig.net",
|
domain: "netig.net",
|
||||||
:user_name => "noreply@netig.net",
|
user_name: "noreply@netig.net",
|
||||||
:password => ENV.fetch("SMTP_PASSWORD"),
|
password: ENV.fetch("SMTP_PASSWORD"),
|
||||||
:authentication => "plain",
|
authentication: "plain",
|
||||||
:enable_starttls => :always
|
enable_starttls: :always
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
@@ -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
|
||||||
@@ -9,7 +9,7 @@ class Netig < Roda
|
|||||||
plugin :public
|
plugin :public
|
||||||
plugin :default_headers, "Content-Type" => "text/html; charset=utf-8"
|
plugin :default_headers, "Content-Type" => "text/html; charset=utf-8"
|
||||||
plugin :sessions, secret: ENV.fetch("SESSION_SECRET")
|
plugin :sessions, secret: ENV.fetch("SESSION_SECRET")
|
||||||
plugin :route_csrf
|
plugin :route_csrf, csrf_failure: :empty_403
|
||||||
plugin :hash_branches
|
plugin :hash_branches
|
||||||
plugin :flash
|
plugin :flash
|
||||||
|
|
||||||
@@ -17,6 +17,7 @@ class Netig < Roda
|
|||||||
|
|
||||||
route do |r|
|
route do |r|
|
||||||
r.public
|
r.public
|
||||||
|
check_csrf!
|
||||||
r.hash_branches
|
r.hash_branches
|
||||||
|
|
||||||
r.root do
|
r.root do
|
||||||
|
|||||||
@@ -112,7 +112,6 @@ main > section:nth-of-type(odd):not(:only-of-type),
|
|||||||
.page-panel {
|
.page-panel {
|
||||||
max-width: 1000px;
|
max-width: 1000px;
|
||||||
padding: clamp(24px, 4vw, 48px);
|
padding: clamp(24px, 4vw, 48px);
|
||||||
border-radius: 16px;
|
|
||||||
background: var(--color-background);
|
background: var(--color-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,6 +174,13 @@ a:hover {
|
|||||||
text-decoration: underline;
|
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,
|
a:focus-visible,
|
||||||
button:focus-visible,
|
button:focus-visible,
|
||||||
input:focus-visible,
|
input:focus-visible,
|
||||||
@@ -408,7 +414,7 @@ summary:focus-visible {
|
|||||||
padding: 10px;
|
padding: 10px;
|
||||||
border: 0;
|
border: 0;
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
font-size: 1rem;
|
font-size: 1.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ne pas appliquer le fond clair au bouton d'envoi. */
|
/* Ne pas appliquer le fond clair au bouton d'envoi. */
|
||||||
|
|||||||
+2
-4
@@ -1,18 +1,16 @@
|
|||||||
class Netig
|
class Netig
|
||||||
hash_branch "contact" do |r|
|
hash_branch "contact" do |r|
|
||||||
r.is do
|
|
||||||
r.get do
|
|
||||||
@page_title = "Contact — NETig"
|
@page_title = "Contact — NETig"
|
||||||
@page_description = "Contacter NETig pour toute question concernant ses services."
|
@page_description = "Contacter NETig pour toute question concernant ses services."
|
||||||
@canonical_url = "https://netig.net/contact"
|
@canonical_url = "https://netig.net/contact"
|
||||||
|
|
||||||
|
r.is do
|
||||||
|
r.get do
|
||||||
view "contact"
|
view "contact"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
r.post "send" do
|
r.post "send" do
|
||||||
check_csrf!
|
|
||||||
|
|
||||||
form = ContactForm.new(r.params)
|
form = ContactForm.new(r.params)
|
||||||
|
|
||||||
if form.spam?
|
if form.spam?
|
||||||
|
|||||||
Reference in new issue
Block a user