forked from Deuxfleurs/guide.deuxfleurs.fr
rework infrastructures
This commit is contained in:
parent
f9e9c16719
commit
f3b7e90693
21 changed files with 157 additions and 129 deletions
|
@ -3,6 +3,8 @@ title: "Se former"
|
||||||
description: "Se former"
|
description: "Se former"
|
||||||
weight: 30
|
weight: 30
|
||||||
sort_by: "weight"
|
sort_by: "weight"
|
||||||
|
extra:
|
||||||
|
parent: 'formations/_index.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
Ce manuel vous propose de vous former sur les questions portées par l'association, que ce soit sur l'impact social du numérique ou l'administration d'une machine Linux, avec dans l'idée que vous pourrez vous impliquer d'avantange dans nos activités après, en faisant des ateliers ou en participant à opérer les machines et les logiciels.
|
Ce manuel vous propose de vous former sur les questions portées par l'association, que ce soit sur l'impact social du numérique ou l'administration d'une machine Linux, avec dans l'idée que vous pourrez vous impliquer d'avantange dans nos activités après, en faisant des ateliers ou en participant à opérer les machines et les logiciels.
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
+++
|
---
|
||||||
title = "Bottin"
|
title: "Bottin"
|
||||||
description = ""
|
description: "Un annuaire LDAP pour le distribué"
|
||||||
date = 2021-11-09T12:40:01.746Z
|
date: 2021-11-09T12:40:01.746Z
|
||||||
dateCreated = 2021-11-09T12:39:59.725Z
|
dateCreated: 2021-11-09T12:39:59.725Z
|
||||||
weight = 10
|
weight: 10
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/logiciels.md'
|
||||||
|
---
|
||||||
|
|
||||||
# Bottin
|
# Bottin
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
+++
|
---
|
||||||
title = "Développement"
|
title: "Développement"
|
||||||
description = "Développement"
|
description: "Développement"
|
||||||
weight = 30
|
weight: 30
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/machines.md'
|
||||||
|
---
|
||||||
|
|
||||||
Les serveurs de développement hébergent les outils qui nous permettent de travailler sur le logiciel,
|
Les serveurs de développement hébergent les outils qui nous permettent de travailler sur le logiciel,
|
||||||
les configurations, les tickets, ou la compilation. Ils ne contiennent pas de données personnelles mais peuvent être utilisés pour
|
les configurations, les tickets, ou la compilation. Ils ne contiennent pas de données personnelles mais peuvent être utilisés pour
|
|
@ -1,10 +1,12 @@
|
||||||
+++
|
---
|
||||||
title = "Diplonat"
|
title: "Diplonat"
|
||||||
description = ""
|
description: ""
|
||||||
date = 2021-11-09T12:42:17.716Z
|
date: 2021-11-09T12:42:17.716Z
|
||||||
dateCreated = 2021-11-09T12:42:15.729Z
|
dateCreated: 2021-11-09T12:42:15.729Z
|
||||||
weight = 30
|
weight: 30
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/logiciels.md'
|
||||||
|
---
|
||||||
|
|
||||||
# Diplonat
|
# Diplonat
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
+++
|
---
|
||||||
title = "Énergie"
|
title: "Énergie"
|
||||||
description = "Consommation électrique"
|
description: "Consommation électrique"
|
||||||
date = 2021-11-09T12:54:33.129Z
|
date: 2021-11-09T12:54:33.129Z
|
||||||
dateCreated = 2021-11-09T12:54:30.985Z
|
dateCreated: 2021-11-09T12:54:30.985Z
|
||||||
+++
|
weight: 20
|
||||||
|
extra:
|
||||||
|
parent: 'infrastructures/_index.md'
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
# Notre avis
|
# Notre avis
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
+++
|
---
|
||||||
title = "Garage"
|
title: "Garage"
|
||||||
description = ""
|
description: ""
|
||||||
date = 2021-11-09T12:42:59.273Z
|
date: 2021-11-09T12:42:59.273Z
|
||||||
dateCreated = 2021-11-09T12:42:57.245Z
|
dateCreated: 2021-11-09T12:42:57.245Z
|
||||||
weight = 40
|
weight: 40
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/logiciels.md'
|
||||||
|
---
|
||||||
|
|
||||||
# Garage
|
# Garage
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
+++
|
---
|
||||||
title = "Guichet"
|
title: "Guichet"
|
||||||
description = ""
|
description: ""
|
||||||
date = 2021-11-09T12:39:27.819Z
|
date: 2021-11-09T12:39:27.819Z
|
||||||
dateCreated = 2021-11-09T12:39:25.808Z
|
dateCreated: 2021-11-09T12:39:25.808Z
|
||||||
weight = 20
|
weight: 20
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/logiciels.md'
|
||||||
|
---
|
||||||
|
|
||||||
# Guichet
|
# Guichet
|
||||||
|
|
|
@ -1,15 +1,23 @@
|
||||||
+++
|
---
|
||||||
title = "Vie Privée"
|
title: "Logiciels"
|
||||||
description = "Comment mettre en oeuvre des systèmes prenant en compte la vie privée à leur origine ?"
|
description: "Logiciels"
|
||||||
date = 2021-11-18T13:57:51.695Z
|
weight: 90
|
||||||
dateCreated = 2021-11-18T10:42:00.744Z
|
sort_by: "weight"
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/_index.md'
|
||||||
|
---
|
||||||
|
|
||||||
# Vie privée
|
Cette section recense les logiciels développés par Deuxfleurs pour les besoins spécifiques de son infra.
|
||||||
|
|
||||||
|
# Principes de conception
|
||||||
|
|
||||||
|
Nou essayons de suivre plusieurs principes pour une conception qui correspond au besoin tout en ayant un ensemble de logiciels homogènes.
|
||||||
|
|
||||||
|
## Vie privée
|
||||||
|
|
||||||
Que ce soit à l'intérieur ou l'extérieur de l'association, des demandes pour d'avantage de garanties sur la vie privée ont été formulées.
|
Que ce soit à l'intérieur ou l'extérieur de l'association, des demandes pour d'avantage de garanties sur la vie privée ont été formulées.
|
||||||
|
|
||||||
## Propriétés recherchées
|
### Propriétés recherchées
|
||||||
|
|
||||||
Quelques propriétés en vrac qu'on peut, ou ne pas, désirer :
|
Quelques propriétés en vrac qu'on peut, ou ne pas, désirer :
|
||||||
|
|
||||||
|
@ -23,7 +31,7 @@ Quelques propriétés en vrac qu'on peut, ou ne pas, désirer :
|
||||||
|
|
||||||
- Je ne veux pas que le contenu de mes emails et pièces jointes soit lisible (eg. le doc que j'ai joint)
|
- Je ne veux pas que le contenu de mes emails et pièces jointes soit lisible (eg. le doc que j'ai joint)
|
||||||
- Je ne veux pas que les métadonnées autour de mon message soient accessibles (eg. le destinaire, l'expéditeur, l'horodatage, le client email utilisé, le sujet du mail, le dossier dans lequel il est stocké)
|
- Je ne veux pas que les métadonnées autour de mon message soient accessibles (eg. le destinaire, l'expéditeur, l'horodatage, le client email utilisé, le sujet du mail, le dossier dans lequel il est stocké)
|
||||||
- Je ne veux pas que les métadonnées de communication soient accessibles (eg. quand je me connecte au service email, depuis où, quand j'intéragis sur le réseau), ces données permettent parfois d'inférer des métadonnées sur le protocol (destinaires, présence de pièce jointe,
|
- Je ne veux pas que les métadonnées de communication soient accessibles (eg. quand je me connecte au service email, depuis où, quand j'intéragis sur le réseau), ces données permettent parfois d'inférer des métadonnées sur le protocol (destinaires, présence de pièce jointe,
|
||||||
|
|
||||||
### Synchronisation et collaboration sur des fichiers
|
### Synchronisation et collaboration sur des fichiers
|
||||||
- Je ne veux pas que le contenu de mes fichiers soit accessible
|
- Je ne veux pas que le contenu de mes fichiers soit accessible
|
||||||
|
@ -44,7 +52,7 @@ Quelques attaquants que l'on peut, ou ne pas, considérer :
|
||||||
- Personne externe physique (eg. voleur)
|
- Personne externe physique (eg. voleur)
|
||||||
- Regroupement d'acteurs (eg. opérateurs internet, externe physique ET internet)
|
- Regroupement d'acteurs (eg. opérateurs internet, externe physique ET internet)
|
||||||
- Utilisateurs (eg. pas de chiffrement sur son téléphone)
|
- Utilisateurs (eg. pas de chiffrement sur son téléphone)
|
||||||
|
|
||||||
## Un exemple de ce qu'on pourrait faire
|
## Un exemple de ce qu'on pourrait faire
|
||||||
|
|
||||||
Prenons l'exemple de la messagerie instantanée. Pour l'instant, on peut définir les types de réseaux suivants :
|
Prenons l'exemple de la messagerie instantanée. Pour l'instant, on peut définir les types de réseaux suivants :
|
||||||
|
@ -83,4 +91,4 @@ Concernant la seconde approche, celle-ci semble beaucoup plus à notre portée :
|
||||||
## Ressources
|
## Ressources
|
||||||
|
|
||||||
- https://about.psyc.eu/Federation et https://about.psyc.eu/PSYC2
|
- https://about.psyc.eu/Federation et https://about.psyc.eu/PSYC2
|
||||||
- Définition d'un mixnet : https://www.youtube.com/watch?v=dQtk0NcTseg
|
- Définition d'un mixnet : https://www.youtube.com/watch?v=dQtk0NcTseg
|
|
@ -1,8 +0,0 @@
|
||||||
+++
|
|
||||||
title = "Logiciels"
|
|
||||||
description = "Logiciels"
|
|
||||||
weight = 90
|
|
||||||
sort_by = "weight"
|
|
||||||
+++
|
|
||||||
|
|
||||||
Cette section recense les logiciels développés par Deuxfleurs pour les besoins spécifiques de son infra.
|
|
|
@ -1,7 +0,0 @@
|
||||||
+++
|
|
||||||
title = "Conception"
|
|
||||||
description = "Conception"
|
|
||||||
weight = 90
|
|
||||||
+++
|
|
||||||
|
|
||||||
Cette section recense les principes de conception que Deuxfleurs applique pour les logiciels qu'elle développe.
|
|
|
@ -1,9 +1,11 @@
|
||||||
+++
|
---
|
||||||
title = "Serveurs"
|
title: "Serveurs"
|
||||||
description = "Serveurs"
|
description: "Serveurs"
|
||||||
weight = 10
|
weight: 40
|
||||||
sort_by = "weight"
|
sort_by: "weight"
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/_index.md'
|
||||||
|
---
|
||||||
|
|
||||||
# Rôles
|
# Rôles
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
+++
|
---
|
||||||
title = "Production"
|
title: "Production"
|
||||||
description = "Production"
|
description: "Production"
|
||||||
weight = 10
|
weight: 40
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/machines.md'
|
||||||
|
---
|
||||||
|
|
||||||
Les serveurs de productions sont ceux qui font tourner les services accédés par les usager·es (eg. Plume, Matrix, Cryptpad).
|
Les serveurs de productions sont ceux qui font tourner les services accédés par les usager·es (eg. Plume, Matrix, Cryptpad).
|
||||||
Si ils sont innaccessibles, alors les services ne fonctionnent plus. Et si une personne malveillante y accède, elle peut avoir accès à des données
|
Si ils sont innaccessibles, alors les services ne fonctionnent plus. Et si une personne malveillante y accède, elle peut avoir accès à des données
|
|
@ -1,9 +1,12 @@
|
||||||
+++
|
---
|
||||||
title = "Réseau"
|
title: "Réseau"
|
||||||
description = "Réseau"
|
description: "Réseau"
|
||||||
date = 2021-11-09T12:55:03.277Z
|
date: 2021-11-09T12:55:03.277Z
|
||||||
dateCreated = 2021-11-09T12:55:01.156Z
|
dateCreated: 2021-11-09T12:55:01.156Z
|
||||||
+++
|
weight: 30
|
||||||
|
extra:
|
||||||
|
parent: 'infrastructures/_index.md'
|
||||||
|
---
|
||||||
|
|
||||||
Cette page regroupe un résumé de tous les problèmes que vous pourriez rencontrer en voulant faire de l'auto hébergement avec "votre connexion internet".
|
Cette page regroupe un résumé de tous les problèmes que vous pourriez rencontrer en voulant faire de l'auto hébergement avec "votre connexion internet".
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
+++
|
---
|
||||||
title = "Services"
|
title: "Services"
|
||||||
description = "Annuaire des services hébergés chez Deuxfleurs"
|
description: "Annuaire des services hébergés chez Deuxfleurs"
|
||||||
+++
|
weight: 10
|
||||||
|
extra:
|
||||||
|
parent: 'infrastructures/_index.md'
|
||||||
|
---
|
||||||
|
|
||||||
Cette page tente de recenser de façon exhaustive l'ensemble des services qui
|
Cette page tente de recenser de façon exhaustive l'ensemble des services qui
|
||||||
fonctionnent actuellement sur les machines de Deuxfleurs, dans les différents
|
fonctionnent actuellement sur les machines de Deuxfleurs, dans les différents
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
+++
|
---
|
||||||
title = "Support"
|
title: "Support"
|
||||||
description = "Serveurs en support"
|
description: "Serveurs en support"
|
||||||
weight = 20
|
weight: 40
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/machines.md'
|
||||||
|
---
|
||||||
|
|
||||||
Les serveurs de support servent pour les sauvegardes et la supervision des serveurs de production (eg. Grafana, Minio).
|
Les serveurs de support servent pour les sauvegardes et la supervision des serveurs de production (eg. Grafana, Minio).
|
||||||
De par leur rôle, ils participent au bon fonctionnement de la production.
|
De par leur rôle, ils participent au bon fonctionnement de la production.
|
|
@ -1,10 +1,12 @@
|
||||||
+++
|
---
|
||||||
title = "Tricot"
|
title: "Tricot"
|
||||||
description = ""
|
description: ""
|
||||||
date = 2022-01-24T16:33:16.731Z
|
date: 2022-01-24T16:33:16.731Z
|
||||||
dateCreated = 2022-01-24T16:32:53.056Z
|
dateCreated: 2022-01-24T16:32:53.056Z
|
||||||
weight = 50
|
weight: 50
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/logiciels.md'
|
||||||
|
---
|
||||||
|
|
||||||
# Tricot
|
# Tricot
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
+++
|
---
|
||||||
title = "Expérimentation"
|
title: "Expérimentation"
|
||||||
description = "Expérimentation"
|
description: "Expérimentation"
|
||||||
weight = 40
|
weight: 40
|
||||||
+++
|
extra:
|
||||||
|
parent: 'infrastructures/machines.md'
|
||||||
|
---
|
||||||
|
|
||||||
Les serveurs d'expérimentation servent à tester les nouvelles configurations, les nouveaux logiciels,
|
Les serveurs d'expérimentation servent à tester les nouvelles configurations, les nouveaux logiciels,
|
||||||
et le nouveau matériel. Ils permettent aux opérateur·ices de se familiariser avec leurs modifications et de minimiser l'impact d'un changement sur les serveurs de production,
|
et le nouveau matériel. Ils permettent aux opérateur·ices de se familiariser avec leurs modifications et de minimiser l'impact d'un changement sur les serveurs de production,
|
|
@ -1,9 +1,9 @@
|
||||||
+++
|
---
|
||||||
title = "Opérations"
|
title: "Opérations"
|
||||||
description = "Opérations"
|
description: "Opérations"
|
||||||
weight = 100
|
weight: 100
|
||||||
sort_by = "weight"
|
sort_by: "weight"
|
||||||
+++
|
---
|
||||||
|
|
||||||
Ce manuel recense notre savoir-faire technique, il a pour but d'accompagner nos opérateur·ices dans la réalisation de leurs tâches.
|
Ce manuel recense notre savoir-faire technique, il a pour but d'accompagner nos opérateur·ices dans la réalisation de leurs tâches.
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@ title: "Prise en main"
|
||||||
description: "Prise en main"
|
description: "Prise en main"
|
||||||
weight: 10
|
weight: 10
|
||||||
sort_by: "weight"
|
sort_by: "weight"
|
||||||
|
extra:
|
||||||
|
parent: 'prise_en_main/_index.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
Ce manuel vous accompagne dans la découverte de nos outils.
|
Ce manuel vous accompagne dans la découverte de nos outils.
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
+++
|
---
|
||||||
title = "Vie associative"
|
title: "Vie associative"
|
||||||
description = "Vie associative"
|
description: "Vie associative"
|
||||||
weight = 50
|
weight: 50
|
||||||
sort_by = "weight"
|
sort_by: "weight"
|
||||||
+++
|
extra:
|
||||||
|
parent: 'vie_associative/_index.md'
|
||||||
|
---
|
||||||
|
|
||||||
Ce manuel traite de tout ce qui concerne l'association, comme ses aspects légaux, les délibérations, ou l'organisation des personnes.
|
Ce manuel traite de tout ce qui concerne l'association, comme ses aspects légaux, les délibérations, ou l'organisation des personnes.
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
{{ nav::inner_nav(root=target, current=target) }}
|
{{ nav::inner_nav(root=target, current=target) }}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
|
{# -------------------------- #}
|
||||||
{# -------------------------- #}
|
{# -------------------------- #}
|
||||||
|
|
||||||
{# (Private) Shared+root logic to build the menu #}
|
{# (Private) Shared+root logic to build the menu #}
|
||||||
|
@ -34,7 +35,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{# On small screens, like a smartphone, hide the menu behind an hamburger icon #}
|
{# (Private) On small screens, like a smartphone, hide the menu behind an hamburger icon #}
|
||||||
{% macro hamburger(root) %}
|
{% macro hamburger(root) %}
|
||||||
<input id="menu-toggle" type="checkbox" />
|
<input id="menu-toggle" type="checkbox" />
|
||||||
<label class='menu-button-container' for="menu-toggle">
|
<label class='menu-button-container' for="menu-toggle">
|
||||||
|
@ -43,10 +44,11 @@
|
||||||
</label>
|
</label>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{# Build a breadcrumb for the page #}
|
{# (Private) Build a breadcrumb for the page #}
|
||||||
{# It's ugly because this is the hacky part of the project #}
|
{# It's ugly because this is the hacky part of the project #}
|
||||||
{% macro breadcrumb(corpus, root, target) %}{% if 'parent' in target.extra and target.extra.parent != root %}{% set new_target = get_page(path=target.extra.parent) %}{{ nav::breadcrumb(corpus=corpus, root=root, target=new_target) }}:{{ new_target.relative_path }}{% endif %}{% endmacro %}
|
{% macro breadcrumb(corpus, root, target) %}{% if 'parent' in target.extra and target.extra.parent != root %}{% set new_target = get_page(path=target.extra.parent) %}{{ nav::breadcrumb(corpus=corpus, root=root, target=new_target) }}:{{ new_target.relative_path }}{% endif %}{% endmacro %}
|
||||||
|
|
||||||
|
{# (Private) Render a list menu (this is the simple fallback when extra.parent is not defined #}
|
||||||
{% macro list(list, selected) %}
|
{% macro list(list, selected) %}
|
||||||
{% for page in list %}
|
{% for page in list %}
|
||||||
{% set is_selected = page.relative_path == selected.relative_path %}
|
{% set is_selected = page.relative_path == selected.relative_path %}
|
||||||
|
@ -56,26 +58,27 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{# Tree menu rendering #}
|
{# (Private) Tree menu rendering; this function is recursive #}
|
||||||
|
{# this function takes a breadcrumb to know which part of the menu must be unfolded #}
|
||||||
{% macro tree(tree, cursor, selected, crumb) %}
|
{% macro tree(tree, cursor, selected, crumb) %}
|
||||||
{% for page in tree | get(key=cursor) %}
|
{% for page in tree | get(key=cursor) %}
|
||||||
{% set is_selected = page.relative_path == selected.relative_path %}
|
{% set is_selected = page.relative_path == selected.relative_path %}
|
||||||
<div class="toc-item">
|
<div class="toc-item">
|
||||||
|
|
||||||
{# LINK WITH SUBSECTION #}
|
{# Link with a (possible) subsection #}
|
||||||
{% if page.relative_path in tree %}
|
{% if page.relative_path in tree %}
|
||||||
|
{# Display link as a section #}
|
||||||
{{ nav::link(page=page, is_selected=is_selected, is_parent=true) }}
|
{{ nav::link(page=page, is_selected=is_selected, is_parent=true) }}
|
||||||
|
|
||||||
|
{# Should we unroll this part of the tree? #}
|
||||||
{% if page.relative_path in crumb or is_selected %}
|
{% if page.relative_path in crumb or is_selected %}
|
||||||
<div class="nav-subsection">
|
<div class="nav-subsection">
|
||||||
{% set ncrumb = crumb | slice(start=1) %}
|
{# do the recursive call #}
|
||||||
{% set ncursor = page.relative_path %}
|
{{ nav::tree(tree=tree, cursor=page.relative_path, selected=selected, crumb=crumb) }}
|
||||||
{% if ncursor in tree %}
|
|
||||||
{{ nav::tree(tree=tree, cursor=ncursor, selected=selected, crumb=ncrumb) }}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{# SIMPLE LINK #}
|
{# Simple link, ie. a leaf of the tree #}
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ nav::link(page=page, is_selected=is_selected, is_parent=false) }}
|
{{ nav::link(page=page, is_selected=is_selected, is_parent=false) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -83,10 +86,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{% macro subsection() %}
|
{# (Private) Render a single link #}
|
||||||
|
|
||||||
{% endmacro %}
|
|
||||||
|
|
||||||
{% macro link(page, is_selected, is_parent) %}
|
{% macro link(page, is_selected, is_parent) %}
|
||||||
<a class="subtext" href="{{page.permalink | safe}}">
|
<a class="subtext" href="{{page.permalink | safe}}">
|
||||||
{% if is_selected %}<b>{% endif %}
|
{% if is_selected %}<b>{% endif %}
|
||||||
|
|
Loading…
Reference in a new issue