Philippe M a écrit 963 commentaires

  • [^] # Re: gagne du temps

    Posté par  (site web personnel) . En réponse au message NFS et ACL. Évalué à 2.

    • les xattr ne sont pas activés sur le serveur NFS (la baie netapp)

    A priori c'est géré par la baie dès l'activation du nfs4 : https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiRmdON1av0AhWISPEDHfMXBiwQFnoECAsQAQ&url=https%3A%2F%2Fwww.netapp.com%2Fmedia%2F10720-tr-4067.pdf&usg=AOvVaw0XSonXBgCaPifhhYMGmtpz page 45

    • la version de ton linux est vieille, peut-etre qu'il ne part pas en NFSv4 mais en v3 ou bien certaines options ne sont pas possibles justement à cause de son age

    J'indique dans le fstab d'utiliser nfs4, si il le ne gérait pas je pense que j'aurai une erreur comme quoi le protocole n'est pas supporté ? il est clair que c'est vieux mais j'ai tout les outils getfacl et il marche en plus :)

    getfacl /tmp
    getfacl : suppression du premier « / » des noms de chemins absolus
    # file: tmp
    # owner: root
    # group: root
    # flags: --t
    user::rwx
    group::rwx
    other::rwx
    

    Born to Kill EndUser !

  • [^] # Re: anti spam ?

    Posté par  (site web personnel) . En réponse au journal Pourquoi Bloctel et les lois contre le démarchage téléphonique ne servent plus à rien. Évalué à 5. Dernière modification le 18 novembre 2021 à 11:27.

    Concernant le fixe : trop harcelés…

    Un téléphone fixe DECT… mince le mien ne doit plus avoir de pile depuis 5 ans !
    D'ailleurs je pense que le chien l'a transformé en une bouillit pré-mâché et l'a probablement subtilement glissé sous le canapé pour que personne ne s’aperçoive de sa bêtise… Oui mon chien est intelligent et je ne passe pas souvent l'aspirateur sous le canapé !

    Born to Kill EndUser !

  • [^] # Re: quid de la restauration?

    Posté par  (site web personnel) . En réponse au journal Sauvegarder le contenu d’un container Docker avec BackupPC. Évalué à 2.

    Suis-je le seul supris de voir un projet avec un script de backup et absolument rien pour décrire le process de restoration des données?

    Pour faire la restauration tu utilise BackupPC, mon script permet juste d'extraire des données des containers pour les intégrer dans un processus global de sauvegarde de BackupPC. Dans mon cas j'utilise BackupPC pour Docker, pour des fichiers utilisateurs, pour d'autres bases mysql… Le jour où j'ai besoin de faire une restauration je n'ai pas à me demander par quel outil la sauvegarde est faite et comment cela marche. Des restaurations on en fait pas tout les jours ;)

    Soit dit en passant GLPI est le cas typique d'une appli qui peut souffrir de quelques secondes d'arrêt chaque nuit et pour laquelle il y a peu de chance de vouloir restaurer seulement quelques lignes ou une table. Et ils semble que les volumes semblent être des bind mounts de répertoires de la machine hôte.

    J'ai proposé GLPI, mais ce n'est qu'un exemple, remplace le par ce que tu veux avec ces propres contraintes. Ta proposition est bonne mais comment faire lorsque tu as un container qu'il est totalement impossible de mettre en pause ?

    L'avantage c'est qu'il n'y a quasi aucun scripting, que t'es absolument sûr que le volume de ta db et du reste de l'appli sont cohérents. Avec ta méthode je ne vois rien qui garantie la cohérence entre le dump mysql et les fichiers copiés. Donc à la restauration tu peux te retrouver avec des fichiers uploadés qui ne sont pas référencés en DB et avoir des trucs pas propres..

    Ça oui et effectivement, sauf à mettre en pause ou arrêter le container il n'y a pas de solution. Mais toujours même problème, comment faire pour un container qu'il n'est pas possible d'arrêter ?

    Du reste en utilisant des vrais volumes plutôt que des bind mounts tu pourrais bénéfichier des capacités de snapshots de docker et faire des backups sur des clones.

    J'utilise de vrai volume au quotidien. Si je ne l'ai pas fais dans mon exemple c'est par simplicité et aussi en scriptant la copie des fichiers hors du container on s'affranchit de devoir créer un volume par container.

    Born to Kill EndUser !

  • [^] # Re: Quelque chose qui m'échappe

    Posté par  (site web personnel) . En réponse au journal Sauvegarder le contenu d’un container Docker avec BackupPC. Évalué à 2.

    Tout dépend du container. Pour le cas de GLPI cela serait les fichiers uploader (factures, contrats…). J'avoue ne pas avoir penser à la solution de sauvegarder le répertoire contenant le volume sur l'hôte. J'ai rapidement été voir et c'est quand même un jolie sac dans le répertoire /var/lib/docker/overlay2. Il y a autant de répertoires que de volumes et comme ça il est difficile de savoir qui appartient à qui. Sans compter les volumes fantômes qui peuvent exister.

    GLPI n'était qu'un exemple et l'idée est d'avoir quelques choses de réutilisable pour d'autres container.

    Pour mysql il est clair qu'il est impossible de copier les fichiers plats, passer par mysqldump permet de mettre un lock le temps de l'export.

    Born to Kill EndUser !

  • [^] # Re: typo

    Posté par  (site web personnel) . En réponse au journal Sauvegarder le contenu d’un container Docker avec BackupPC. Évalué à 2.

    Merci.

    Born to Kill EndUser !

  • [^] # Re: Dans le même genre

    Posté par  (site web personnel) . En réponse au journal Sauvegarder le contenu d’un container Docker avec BackupPC. Évalué à 3.

    Je ne connaissais pas Bivac, d'après ce que je comprends c'est uniquement pour les volumes.

    BackupPC n'est pas dédié à la sauvegarde Docker, c'est un outil de sauvegarde au sens large. J'ai juste fais un script de pre-backup executé par BackupPC.

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 2. Dernière modification le 22 octobre 2021 à 15:01.

    Version corrigé, il y avait un problème avec le mv qui n'aimais pas trop les espaces dans le nom de fichier initial.

    for e in ./*
    do
      # calcul le nouveau nom en replaçant les espaces par _ et PDF par pdf
      nouveau_nom=`echo $(basename "$e") | tr "[:blank:]" "_" | tr "PDF" "pdf"`
    
      # extrait l'extension
      extension=${nouveau_nom##*.}
    
      # renomme sous la nouvelle nomenclature
      mv "$(basename "$e")" $nouveau_nom
    
      # regarde si c'est un PDF et l'imprime
      if [ ${extension} = "pdf" ]
      then
        rlpr --printer=${PRINTER} $nouveau_nom
      fi
    
      # efface la piece jointe
      rm -f $nouveau_nom
    done

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 2.

    Effectivement, c'est bien plus propre comme tu le propose.

    Merci.

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 2.

    Et voilà le petit dépôt qui va bien pour les warrior : https://github.com/Philippe-M/mail2print

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 2.

    s/getmail m'a souvent/getmail m'a sauvé/

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 2.

    getmail m'a souvent, je te laisse voir plus bas le montage fait.

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 4. Dernière modification le 22 octobre 2021 à 11:19.

    Nikel avec getmail

    fichier de config

    [retriever]
        type = SimpleIMAPRetriever 
        server = server
        username = username
        password = password
        mailboxes = ("INBOX",)
        move_on_delete = INBOX.INBOX.archives 
    
    [destination]
        type = Maildir
        path = /home/mail2print/Mail/
    
    [options]
        delete = true
        delete_after = 0
        read_all = false
        keep = true

    Dans mon container je lance toute les x minutes getmail par cette commande

        #!/bin/sh
        TIMECRON1=${TIMECRON:-300}
    
        while :
        do
                getmail --getmaildir=/etc/mail2print --rcfile=getmail.conf
                sh /bin/printmail.sh
                sleep $TIMECRON1
        done

    getmail "copie" les mails dans le répertoire Mail/new, efface le mail de INBOX pour le copier dans INBOX.INBOX.archives

    Ensuite le script suivant extrait les fichiers joints, lance l'impression et fait le ménage dans les répertoires.

        #!/bin/bash
        # Parameters
        MAILDIR=/home/mail2print/Mail
        LOGFILE=/var/log/mail/mail2print.log
        ATTACH_DIR=/home/mail2print/Mail/attachments
        PRINTER=${PRINTER}
    
        if [ -d ${MAILDIR}/new ]
        then
                COUNT=`ls ${MAILDIR}/new | wc -l`
                if [ ${COUNT} -ne 0 ]
                then
                        for i in ${MAILDIR}/new/*
                        do
                                #echo "[printmail] Processing : $i" | tee -a ${LOGFILE}
                                uudeview $i -iqn -p ${ATTACH_DIR}/
    
                                # process file attachments with space
                                cd ${ATTACH_DIR}
                                NBATTACH=`ls ${ATTACH_DIR} | wc -l`
                                if [ ${NBATTACH} -ne 0 ]
                                then
                                        for e in ./*
                                        do
                                                a=`echo $e | tr "[:blank:]" "_"`
                                                if [ $? -eq 0 ]
                                                then
                                                        mv "$e" "$a"
                                                fi
                                        done
                                        for f in *.PDF
                                        do
                                                mv $f ${f%.*}.pdf
                                        done
    
                                        # end of patch
                                        #echo "[printmail] Printing PDFs" | tee -a ${LOGFILE}
                                        for x in ${ATTACH_DIR}/*.pdf
                                        do
                                                #echo "[printmail] Printing : $x" | tee -a ${LOGFILE}
                                                rlpr --printer=${PRINTER} $x
                                                #echo "[printmail] Deleting file : $x" | tee -a ${LOGFILE}
                                                rm -f $x | tee -a ${LOGFILE}
                                        done
    
                                        #echo "[printmail] Clean up and remove any other attachments" | tee -a ${LOGFILE}
                                        for y in ${ATTACH_DIR}/*
                                        do
                                                rm -f $y
                                        done
                                fi
    
        #                       # delete mail
                                #echo "[printmail] Deleting mail : $i" | tee -a ${LOGFILE}
                                rm $i | tee -a ${LOGFILE}
                        done
                fi
        fi

    Faut que j'intègre la suppression du fichier log tout les x jours et éventuellement une purge du dossier INBOX.INBOX.archives tout les x mois.

    Au final j'utilise un seul programme getmail totalement intégré au système. Je vais voir pour publier tout ça sur docker hub et github.

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 3.

    La gestion des pièces jointes est faite par un script shell qui va gratter dans le répertoire $USER/Mail. Il mérite encore quelques améliorations mais en l'état il fait le taff.

    J'ai déjà fais quelques bricoles en python et j'ai vraiment du mal à me faire à ce langage. Mon idée était de rester sur des programmes systèmes (fetchmail, procmail…) scriptable pour rester simple et ne pas re-inventer la roue.

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 2.

    L'idée de sortir mon python m'a traversé l'esprit mais je trouve dommage de tout refaire "juste" à cause d'un problème de déplacement de mail.

    imap-cli a l'air d'être à l'arrêt et il ne me semble pas gérer les pièces jointes.

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 2.

    D'après ce que j'ai compris --folder de fetchmail permet de dire quel "répertoire" aller relever, donc le répertoire doit être existant dans la BAL. Dans mon cas les nouveaux mails doivent rester à la racine et doivent être déplacé uniquement après traitement (impression).

    fetchmail.conf

    set no syslog
    set logfile /var/log/mail/mail2print.log
    set postmaster "fetchmail"
    
    poll ssl0.ovh.net
      protocol imap
      port 993
      user "XXX@xxxx"
      password "passs"
      ssl
      mda "/usr/bin/procmail -m '/etc/mail2print/procmail.conf'";
    

    procmail.conf

    MAIL_DIR=/home/mail2print/Mail
    VERBOSE=off
    LOGFILE="/var/log/mail/mail2print.log"
    
    :0
    *^content-Type:
    $MAIL_DIR/
    

    J'ai comme l'impression que fetchmail n'est pas capable d'envoyer des commandes, autre que pour relever les mails, au serveur.

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 2.

    Ok merci je vais regarder tout ça.

    Born to Kill EndUser !

  • [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par  (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 2.

    Effectivement je me connecte en imap mais je ne vois pas comment passer les commandes depuis mon container ?

    Born to Kill EndUser !

  • [^] # Re: Keepass

    Posté par  (site web personnel) . En réponse au message Gestionnaire de mots de passes. Évalué à 3.

    Ok donc pas du tout adapté notre usage.

    Born to Kill EndUser !

  • [^] # Re: Keepass

    Posté par  (site web personnel) . En réponse au message Gestionnaire de mots de passes. Évalué à 2.

    Il me semble que keepass et les déclinaisons ne sont pas vraiment multi-utilisateurs et sur le site je n'ai pas vu la notion de partage de mot de passe.

    Born to Kill EndUser !

  • [^] # Re: collections

    Posté par  (site web personnel) . En réponse au message Gestionnaire de mots de passes. Évalué à 2.

    Je comprends un peu mieux, mais cela oblige à structurer les collections. Alors qu'un partage du mot de passe à un utilisateur est plus simple à gérer.

    Je continue les tests.

    Born to Kill EndUser !

  • [^] # Re: collections

    Posté par  (site web personnel) . En réponse au message Gestionnaire de mots de passes. Évalué à 2.

    Mais si je veux partager un seul mot de passe avec un utilisateur, suis-je tout de même obligé de créer une collection ?

    Imaginons que je créé une collection "Système" que je partage avec un collègue. J'ajoute 3 mots de passes. Je dois aussi partager l'un de ces mots de passes avec un autre collègue mais il n'a pas à avoir accès au 2 autres. Cela m'oblige à créer une collection "Système 2" contenant uniquement le mot de passe pour cet autre collègue ?

    Born to Kill EndUser !

  • [^] # Re: utiliser une machine qui a acces à internet

    Posté par  (site web personnel) . En réponse au message Traefik et tls pour réseau local. Évalué à 2.

    Salut, ce matin un petit test et cette phrase m'a traversé l'esprit : "Mais qu'elle est cette magie !?" Car ce matin sans rien de plus cela marche sans problème.

    Le certificat est bien reconnu par firefox et plus d'erreur dans les logs de traefik.

    En tout cas merci pour ton aide.

    Born to Kill EndUser !

  • [^] # Re: utiliser une machine qui a acces à internet

    Posté par  (site web personnel) . En réponse au message Traefik et tls pour réseau local. Évalué à 2.

    En fait non j'ai un domaine public en .fr et un domaine local. Sur mon DNS local j'ai une zone pour ma zone local.

    Pour le cas traefik et let's encrypt j'ai créé une zone pour mon domaine public qui contient les NS d'OVH (le domaine est hébergé par OVH).

    Dans le fichier zone il y a quelques CNAME et ensuite un

    *.dompublic.fr. A IP_SERVER_DOCKER
    De cette manière les utilisateurs de mon réseau local accède à un service docker par l'url : service.dompublic.fr

    Ils sont redirigés vers traefik et le service correspond grâce au label Host('service.dompublic.fr'). Jusque là tout est ok, sauf que je n'arrive pas à faire en sorte que traefik créé le certificat lorsque je passe en https. Pourtant j'ai ajouté l'enregistrement TXT acme-challenge, j'ai créé les clés d'accès à l'API ovh pour que traefik communique directement (j'ai testé ces même codes en php est cela me créé bien les enregistrements dans le dns d'ovh).

    Dans les logs de traefik j'ai

    traefik    | time="2021-10-13T17:19:06+02:00" level=debug msg="legolog: [INFO] [password.dompublic.fr] acme: Waiting for DNS record propagation."
    traefik    | time="2021-10-13T17:19:16+02:00" level=debug msg="Delaying 5000000000 rather than validating DNS propagation now." providerName=le.acme
    traefik    | time="2021-10-13T17:19:21+02:00" level=debug msg="legolog: [INFO] [password.dompublic.fr] acme: Waiting for DNS record propagation."
    traefik    | time="2021-10-13T17:19:31+02:00" level=debug msg="legolog: [INFO] [password.dompublic.fr] acme: Cleaning DNS-01 challenge"
    traefik    | time="2021-10-13T17:19:35+02:00" level=debug msg="legolog: [INFO] Deactivating auth: https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/698992128"
    traefik    | time="2021-10-13T17:19:35+02:00" level=error msg="Unable to obtain ACME certificate for domains \"password.dompublic.fr\": unable to generate a certificate for the domains [password.dompublic.fr]: error: one or more domains had a problem:\n[password.dompublic.fr] time limit exceeded: last error: NS dns11.ovh.net. returned NXDOMAIN for _acme-challenge.password.dompublic.fr.\n" providerName=le.acme routerName=password@docker rule="Host(`password.dompublic.fr`)"
    

    Et bien sûr rien côté dns ovh.

    /etc/traefik/traefik2.yml

    global:
      sendAnonymousUsage: false
      checkNewVersion: false
    
    api:
      insecure: true
      dashboard: true
      debug: true
    
    log:
      #  filePath: "/var/log/traefik/applog.log"
      #  format: json
      level: DEBUG 
    
    providers:
      docker:
        endpoint: unix:///var/run/docker.sock
        exposedByDefault: false
        network: traefik
    
    entryPoints:
      web:
        address: ":80"
      websecure:
        address: ":443"
    
    certificatesResolvers:
      le:
        acme:
          email: contact@dompublic.fr
          caServer: https://acme-staging-v02.api.letsencrypt.org/directory
    # prod      caServer: https://acme-v02.api.letsencrypt.org/directory
          storage: /letsencrypt/acme.json
          dnsChallenge:
           provider: ovh
           delayBeforecheck: 5 
           resolvers:
             - 8.8.8.8
             - 8.8.4.4
    

    docker-compose.yml de traefik

    version: '3.3'
    
    services:
      traefik:
        image: traefik:latest # The official Traefik docker image
        container_name: traefik
        restart: always
        ports:
          - "80:80"     # The HTTP port
          - "8080:8080" # The Web UI (enabled by --api)
          - "443:443"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
          - /etc/localtime:/etc/localtime:ro
          - /etc/timezone:/etc/timezone:ro
          - /etc/traefik/traefik2.yml:/etc/traefik/traefik.yml:ro
          - /etc/traefik/letsencrypt/:/letsencrypt/
        environment:
          - "OVH_ENDPOINT=ovh-eu"
          - "OVH_APPLICATION_KEY=xxx"
          - "OVH_APPLICATION_SECRET=xxxx"
          - "OVH_CONSUMER_KEY=x"
          - "OVH_PROPAGATION_TIMEOUT=300"
          - "OVH_POLLING_INTERVAL=10"
    
        networks:
          - traefik
    networks:
      traefik:
        external: true
    

    docker-compose.yml de vaultwarden

    version: '3.3'
    services:
      password:
        image: vaultwarden/server:latest
        container_name: password
        restart: always
        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.password.rule=Host(`password.dompublic.fr`)"
          - "traefik.http.routers.password.entrypoints=websecure"
          - "traefik.http.routers.password.tls.certresolver=le"
        networks:
          - traefik
        volumes:
          - /sql/vaultwarden/prod:/data/
    
    networks:
      traefik:
        external: true
    

    Si tu as une idée de la provenance du problème je suis preneur.

    Born to Kill EndUser !

  • [^] # Re: utiliser une machine qui a acces à internet

    Posté par  (site web personnel) . En réponse au message Traefik et tls pour réseau local. Évalué à 3.

    Pour le moment j'ai testé passbolt et vaultwarden qui un fork de Bitwarden.

    Born to Kill EndUser !

  • [^] # Re: utiliser une machine qui a acces à internet

    Posté par  (site web personnel) . En réponse au message Traefik et tls pour réseau local. Évalué à 3.

    Surtout quand tu as expliqué aux utilisateurs qu'un site qui affiche ce message n'est pas sécurisé et qu'il ne faut pas y aller…

    Born to Kill EndUser !