Outils pour utilisateurs

Outils du site


admin:services:drop.chapril.org

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
admin:chatons:drop.chapril.org [2019/11/23 23:05] – Ajout modération rhadmin:services:drop.chapril.org [2021/03/11 16:59] (Version actuelle) rh
Ligne 1: Ligne 1:
 ====== Service drop.chapril.org ====== ====== Service drop.chapril.org ======
-en cours de rédaction 
  
-==== Introduction ====+===== Introduction =====
  
 Création de la VM avec la procédure [[admin:procedures:creation_machine_virtuelle|Création d'une machine virtuelle « bling »]]. Création de la VM avec la procédure [[admin:procedures:creation_machine_virtuelle|Création d'une machine virtuelle « bling »]].
  
  
-==== Préparation ====+===== Préparation =====
  
 Pour le stockage, nous utilisons un second disque. Il est ajouté à la VM via l'interface virt-manager. Pour le stockage, nous utilisons un second disque. Il est ajouté à la VM via l'interface virt-manager.
Ligne 57: Ligne 56:
  
  
-==== Installation ==== +===== Installation =====
  
 Récupération du code : Récupération du code :
Ligne 98: Ligne 96:
 </code> </code>
  
 +===== Personnalisation =====
 +À FAIRE.
  
-==== Configuration ====+==== Favicon==== 
 +Remplacement des fichiers suivants : 
 +<code> 
 +assets/favicon-16x16.png  
 +assets/favicon-32x32.png 
 +public/favicon.ico 
 +</code>
  
-=== Journaux ===+Puis : 
 +<code> 
 +sudo -u app npm run build 
 +systemctl restart drop 
 +</code>
  
-À Faire.+==== Titre de page ==== 
 +Remplacement dans le fichier server/stats.js : 
 +<code> 
 +-    title: 'Firefox Send', 
 ++    title: 'DropChaprilOrg', 
 +</code>
  
-==== Modération ====+Puis : 
 +<code> 
 +sudo -u app npm run build 
 +systemctl restart drop 
 +</code> 
 + 
 +==== Fichier CSS Chapril ==== 
 + 
 +L'ajout du fichier CSS Chapril est fait via le Nginx sur la vm bastion : 
 +<code> 
 +    include /etc/nginx/chapril-banner-location; 
 + 
 +    location / { 
 +        proxy_set_header Host $host; 
 +        proxy_set_header X-Real-IP $remote_addr; 
 +        proxy_set_header X-Forwarded-Proto https; 
 +        proxy_pass http://192.168.1.110:1443; 
 +        subs_filter '</head>' '<link rel="stylesheet" type="text/css"  href="/chapril.css" /></head>'; 
 +        sub_filter_once on; 
 +    } 
 +</code> 
 + 
 +==== Bannière Chapril ==== 
 + 
 +FirefoxSend est pleinement du NodeJS, c'est à dire que les pages sont complétement générées par du Javascript. Ce code Javascript supprime supprime le code déjà existant, ce qui rend très difficile l'insertion de code de façon contrôlée. Suite à différents échecs, il a été décidé de modifier le code de FirefoxSend pour y  mettre directement le code de la bannière. 
 + 
 +Ça se passe dans le fichier //app/ui/header.js//
 + 
 +<code PHP> 
 +   createElement() { 
 +-    const title = 
 +-      platform() === 'android' 
 +-        ? html` 
 +-            <a class="flex flex-row items-center"> 
 +-              <img src="${assets.get('icon.svg')}" /> 
 +-              <svg class="w-48"> 
 +-                <use xlink:href="${assets.get('wordmark.svg')}#logo" /> 
 +-              </svg> 
 +-            </a> 
 +-          ` 
 +-        : html` 
 +-            <a class="flex flex-row items-center" href="/"> 
 +-              <img 
 +-                alt="${this.state.translate('title')}" 
 +-                src="${assets.get('icon.svg')}" 
 +-              /> 
 +-              <svg class="w-48 md:w-64"> 
 +-                <use xlink:href="${assets.get('wordmark.svg')}#logo" /> 
 +-              </svg> 
 +-            </a> 
 +-          `; 
 +     return html` 
 +       <header 
 +-        class="main-header relative flex-none flex flex-row items-center justify-between w-full px-6 md:px-8 h-16 md:h-24 z-20 bg-transparent" 
 ++        class="main-header relative flex-none flex flex-row items-center justify-between px-6 md:px-8 z-20 bg-transparent" 
 +       > 
 +-        ${title} ${this.account.render()} 
 ++        <!-- Chapril banner code: starting… --> 
 ++        <div id="chapril-banner"> 
 ++          <div id="chapril-banner-zone"> 
 ++            <div id="chapril-banner-logo"> 
 ++              <a href="https://www.chapril.org/" 
 ++                ><img 
 ++                  src="/Chapril-banner/v1/chapril-logo-small.png" 
 ++                  alt="Logo Chapril" 
 ++              /></a> 
 ++            </div> 
 ++            <div id="chapril-banner-menu"> 
 ++              <ul> 
 ++                <li><a href="https://www.chapril.org/">Accueil Chapril</a></li> 
 ++                <li> 
 ++                  <a href="https://www.chapril.org/services.html" 
 ++                    >Services libres</
 ++                  > 
 ++                </li> 
 ++                <li> 
 ++                  <a href="https://pouet.april.org/@aprilorg">Nous suivre</a> 
 ++                </li> 
 ++                <li><a href="https://www.chapril.org/cgu.html">CGU</a></li> 
 ++                <li> 
 ++                  <a href="https://www.chapril.org/a-propos.html" 
 ++                    >Mentions légales</
 ++                  > 
 ++                </li> 
 ++                <li> 
 ++                  <a href="https://www.chapril.org/contact.html" 
 ++                    >Nous contacter</
 ++                  > 
 ++                </li> 
 ++              </ul> 
 ++            </div> 
 ++            <div id="chapril-banner-aprillogo"> 
 ++              <a href="https://www.april.org/" 
 ++                ><img 
 ++                  src="/Chapril-banner/v1/april-logo-small.png" 
 ++                  class="chapril-banner-logo" 
 ++                  alt="Logo April" 
 ++              /></a> 
 ++            </div> 
 ++          </div> 
 ++        </div> 
 ++        <!-- Chapril banner code: done. --> 
 +       </header> 
 +     `; 
 +   } 
 + 
 +</code> 
 + 
 +==== Pied de page ==== 
 + 
 +Ça se passe dans le fichier //app/ui/footer.js//
 + 
 +<code> 
 +-    const translate = this.state.translate; 
 +-    const browser = browserName(); 
 +-    const feedbackUrl = `https://qsurvey.mozilla.com/s3/Firefox-Send-Product-Feedback?ver=${version}&browser=${browser}`; 
 +     return html` 
 +       <footer 
 +-        class="flex flex-col md:flex-row items-start w-full flex-none self-start p-6 md:p-8 font-medium text-xs text-grey-60 dark:text-grey-40 md:items-center justify-between" 
 ++        class="flex flex-col md:flex-row items-start w-full flex-none self-start p-6 md:p-8 font-medium text-xs text-grey-60 dark:text-grey-40 md:justify-end justify-between" 
 +       > 
 +-        <a class="mozilla-logo m-2" href="https://www.mozilla.org/"> 
 +-          Mozilla 
 +-        </a> 
 +-        <ul 
 +-          class="flex flex-col md:flex-row items-start md:items-center md:justify-end" 
 ++        <a 
 ++          href="https://admin.chapril.org/doku.php?id=admin:services:drop.chapril.org#personnalisation" 
 ++          rel="noreferrer noopener" 
 ++          alt="Version" 
 ++          target="_blank" 
 +         > 
 +-          <li class="m-2"> 
 +-            <a href="https://www.mozilla.org/about/legal/terms/services/#send"> 
 +-              ${translate('footerLinkLegal')} 
 +-            </a> 
 +-          </li> 
 +-          <li class="m-2"> 
 +-            <a href="/legal"> ${translate('footerLinkPrivacy')} </a> 
 +-          </li> 
 +-          <li class="m-2"> 
 +-            <a href="https://www.mozilla.org/privacy/websites/#cookies"> 
 +-              ${translate('footerLinkCookies')} 
 +-            </a> 
 +-          </li> 
 +-          <li class="m-2"> 
 +-            <a href="https://github.com/mozilla/send">GitHub </a> 
 +-          </li> 
 +-          <li class="m-2"> 
 +-            <a 
 +-              href="${feedbackUrl}" 
 +-              rel="noreferrer noopener" 
 +-              class="feedback-link" 
 +-              alt="Feedback" 
 +-              target="_blank" 
 +-            > 
 +-              ${translate('siteFeedback')} 
 +-            </a> 
 +-          </li> 
 +-        </ul> 
 ++          FirefoxSend chapril-${version} 
 ++        </a> 
 +       </footer> 
 +     `; 
 +   } 
 +</code> 
 + 
 +==== Encart de promo ==== 
 + 
 +Ça se passe dans le fichier //app/ui/promo.js//
 + 
 +<code> 
 + class Promo extends Component { 
 +   constructor(name, state) { 
 +@@ -15,24 +15,8 @@ class Promo extends Component { 
 +   createElement() { 
 +     return html` 
 +       <send-promo 
 +-        class="w-full flex-row items-center content-center justify-center bg-white text-grey-80 px-4 py-3 flex border-b border-grey-banner leading-normal dark:bg-grey-90 dark:text-grey-20 dark:border-grey-80" 
 +-      > 
 +-        <div class="flex items-center mx-auto"> 
 +-          <img 
 +-            src="${assets.get('master-logo.svg')}" 
 +-            class="w-6 h-6" 
 +-            alt="Firefox" 
 +-          /> 
 +-          <span class="ml-2 sm:ml-4 text-xs sm:text-base"> 
 +-            ${this.state.translate('trailheadPromo')}${' '} 
 +-            <a 
 +-              class="underline link-blue" 
 +-              href="http://www.mozilla.org/firefox/accounts/?utm_source=send.firefox.com&utm_medium=banner&utm_campaign=trailhead&utm_content=protect-your-privacy" 
 +-              >${this.state.translate('learnMore')}</
 +-            > 
 +-          </span> 
 +-        </div> 
 +-      </send-promo> 
 ++        class="send-promo w-full flex-row items-center content-center justify-center bg-white text-grey-80 px-4 py-3 flex border-b border-grey-banner leading-normal dark:bg-grey-90 dark:text-grey-20 dark:border-grey-80" 
 ++      ></send-promo> 
 +     `; 
 +   } 
 + } 
 +diff --git a/package-lock.json b/package-lock.json 
 +</code> 
 + 
 +Note : retirer le « py-3 » dans la balise « send-promo » afin de supprimer l'espace au dessus de la bannière Chapril. 
 + 
 +==== Texte d'accueil ==== 
 + 
 +Ça se passe dans le fichier //public/locales/fr/send.ftl//
 + 
 +<code> 
 +-introDescription = { -send-brand } vous permet de partager des fichiers chiffrés de bout en bout ainsi qu’un lien qui expire automatiquement. Ainsi, vous pouvez garder ce que vous partagez en privé et vous assurer que vos contenus ne restent pas en ligne pour toujours. 
 ++introDescription = DropChaprilOrg vous permet de partager des fichiers chiffrés de bout en bout ainsi qu’un lien qui expire automatiquement. Ainsi, vous pouvez garder ce que vous partagez en privé et vous assurer que vos contenus ne restent pas en ligne pour toujours. 
 +</code> 
 + 
 +===== Configuration ===== 
 + 
 +==== Journaux ==== 
 + 
 +Les journaux du démon drop sont envoyés dans journald. Ils contiennent quelques informations relatives au démarrage. Pour les consulter on utilise : 
 + 
 +<code bash> 
 +# journalctl -u drop 
 +</code> 
 + 
 +Les journaux d'accès sont générés par apache2 qui fonctionne en tant que proxy inverse. Les journaux sont envoyés dans le dossier ''/var/log/apache2/drop.chapril.org/''. Logrotate est configuré pour créer un fichier de journaux par mois et ne conserver que 4 mois. 
 + 
 +La configuration se trouve dans ''/etc/logrotate.d/apache2'' et est la suivante : 
 + 
 +<code> 
 +/var/log/apache2/*.log 
 +/var/log/apache2/*/*.log 
 +
 + monthly 
 + missingok 
 + rotate 4 
 + compress 
 + delaycompress 
 + notifempty 
 + create 640 root adm 
 + sharedscripts 
 + postrotate 
 +                if invoke-rc.d apache2 status > /dev/null 2>&1; then \ 
 +                    invoke-rc.d apache2 reload > /dev/null 2>&1;
 +                fi; 
 + endscript 
 + prerotate 
 + if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ 
 + run-parts /etc/logrotate.d/httpd-prerotate;
 + fi; \ 
 + endscript 
 +
 +</code> 
 + 
 +==== Cron ==== 
 + 
 +Comme indiqué dans le ticket https://agir.april.org/issues/4405, un bug fait que les fichiers expirés sont bien retirés de la base Redis mais pas du système de fichier local. 
 + 
 +En attendant une correction officielle, solution de contournement avec un cron : 
 +<code> 
 +# Suppression des fichiers expirés (tous les jours à 00h30). 
 +30 0 * * * root /usr/bin/find /var/drop/files/ -mtime +5 -delete >> /var/log/drop.chapril.org/dropchaprilorg_purge.log 2>&
 +</code> 
 + 
 +De plus, Redis doit être configuré de manière à transmettre des notifications en cas d'expiration des clés : 
 +<code> 
 +--- a/redis/redis.conf 
 ++++ b/redis/redis.conf 
 +@@ -1063,7 +1063,7 @@ latency-monitor-threshold 0 
 + #  By default all notifications are disabled because most users don't need 
 + #  this feature and the feature has some overhead. Note that if you don'
 + #  specify at least one of K or E, no events will be delivered. 
 +-notify-keyspace-events "" 
 ++notify-keyspace-events Ex 
 +</code> 
 + 
 +Et le script /srv/drop.chapril.org/tools/cleaning/remove_expired_files.py lancé en tant que daemon de la façon suivante : 
 +<code bash> 
 +cp /srv/drop.chapril.org/tools/cleaning/drop-remove-expired-files.service /etc/systemd/system/drop-remove-expired-files.service 
 +systemctl enable drop-remove-expired-files.service 
 +systemctl start drop-remove-expired-files.service 
 +</code> 
 + 
 + 
 +===== Modération =====
  
 Il n'y a pas d'interface d'administration graphique. Il n'y a pas d'interface d'administration graphique.
Ligne 120: Ligne 419:
 # redis-cli DEL c255369c68c0f7d7 # redis-cli DEL c255369c68c0f7d7
 </code> </code>
 +
 +===== Rapport d'activité mensuelle automatique =====
 +
 +FIXME À faire.
 +
 +===== Gestion des mises à jour =====
 +
 +Le code de la version officielle ce trouve sur GitHub. Il est situé dans la branche "master", les versions sont des tags sur cette même branche.
 +Pour détecter les mises à jour, la supervision vérifie l'apparition d'un nouveau tag sur GitHub (/usr/lib/nagios/plugins/check_dropchaprilorg_update).
 +
 +Pour chaque nouvelle version, nous créons une branche qui a comme nom le nom du tag préfixé par "chapril-". Par exemple pour le tag vX.Y.Z notre branche est chapril-vX.Y.Z.
 +Ces branches permettent de garder les personnalisations pour Chapril.
 +
 +Sur le serveur, le dépôt git est configuré pour utiliser deux remote :
 +  * mozilla : le dépôt GitHub officiel
 +  * origin : la forge de l'april
 +
 +
 +Mise à jour depuis le dépôt distant de Mozilla :
 +<code bash>
 +cd /srv/drop.chapril.org/www
 +git pull mozilla
 +</code>
 +
 +Mise à jour de la branche master :
 +<code bash>
 +git checkout origin/master
 +git merge mozilla/master
 +git checkout -b master_updated
 +git push origin master_updated:master
 +</code>
 +
 +
 +Mettre à jour les tags :
 +<code bash>
 +git push --tags origin
 +</code>
 +
 +Créer une nouvelle branche et répéter nos modifications de personnalisation :
 +<code bash>
 +git checkout -b chapril-v3.0.22 v3.0.22
 +git cherry-pick a00127f4a8^..9c4a8bfa26
 +# résoudre éventuels conflits
 +git push origin chapril-v3.0.22
 +git checkout chapril-v3.0.22
 +</code>
 +
 +Déployer la nouvelle version :
 +<code bash>
 +git checkout chapril-v3.0.22
 +sudo -u app npm install
 +sudo -u app npm run build
 +systemctl restart drop
 +</code>
 +
 +
 +
admin/services/drop.chapril.org.1574550308.txt.gz · Dernière modification : 2019/11/23 23:05 de rh