Philippe M a écrit 953 commentaires

  • [^] # 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 !

  • [^] # 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.

    Je suis le coup du DNS challenge moyennant une petite modification de mon côté sans impact pour mon DNS : https://www.grottedubarbu.fr/traefik-dns-challenge-ovh/

    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.

    juste que le domaine soit connu d'internet et que la machine correspondante au domaine le soit aussi.

    Comme c'est un domaine interne il n'est pas connu de l'extérieur et n'a pas vocation à l'être.

    évidemment si tu gères uniquement en interne, je te dirais que letsencrypt n'est pas LA solution, mais que par contre tu peux gérer des certificats internes à ton organisation, ton asso, ta société.

    Il faut que j'achète un certificat à un organisme ? Je n'y connais pas grand chose sur le sujet :(

    Born to Kill EndUser !

  • [^] # Re: hs: bouhh ti-calc

    Posté par  (site web personnel) . En réponse au journal En Belgique, l’usage de LibreOffice est interdit par les (certaines ?) Écoles !. Évalué à 1.

    Si la priorité était aux maths j'aurais opté pour les hp48s ou hp28s (il y a d'autres modèles valables selon l'époque et le budget, et même une hp21 ou une hp21 aurait fait l'affaire.)
    L'utilisation d'une fonction pouvait aussi se faire simplement avec le langage BASIC disponible sur nombre d'ordinateurs (ceux des labos et salles de TP j'entends, pas de demander à chacun de s'équiper d'un ordinateur familial.)

    Peut importe le choix de l'enseignant, même le boulier est valable. L'idée est que tout le monde ai le même matériel pour que tout le monde puisse suivre le cours et non en perdre la moitié parce que l'un a une casio, un autre une HP, un autre une pierre qu'il grave et au final pénaliser tout le monde car le prof fait un cours calculatrice.

    Pourtant je défend la différence, mais faut savoir l'oublier lorsqu'elle n'a pas sa place et lorsqu'elle est plus un boulet qu'une aide pour nous faire avancer et ouvrir notre esprit.

    Born to Kill EndUser !

  • # Harmonisation

    Posté par  (site web personnel) . En réponse au journal En Belgique, l’usage de LibreOffice est interdit par les (certaines ?) Écoles !. Évalué à 7.

    Bonjour à tous,

    Que l'usage ou non de Libre Office ou Microsoft Office soit justifié dans ce contexte n'aurait pas dû êtres le propos de ce message envoyé aux parents Belges de cette école. A mon sens il a été plus que maladroitement rédigé et le fond du problème est : Comment fournir à nos élèves un niveau pédagogique identique et fiable ?

    Les enseignants doivent faire face à la même problématique que l'on a en entreprise lorsque le parc logiciel/matériel n'est pas le même (versions différentes, OS différents…) Il devient difficile de répondre aux demandes utilisateurs, réaliser le support et des développement spécifique.

    Je peux comprendre qu'un responsable d'école demande à avoir une même version pour tout le monde. Après il faut choisir la bonne version, mais c'est un autre débat.

    Je me rappelle, lors de mes études supérieurs, les profs de maths nous demandait d'avoir une calculatrice Texas Instruments pour pouvoir expliquer en une fois et rapidement comment utiliser une fonction. On était en maths et non en formation calculatrice, donc la priorité était aux maths.

    Le problème est identique avec les livres en français. Les profs demande une édition bien spécifique afin que lorsqu'ils disent "prenez la page 15 paragraphe 3" tout le monde soit bien sur le même texte. Cela se pratique depuis très longtemps et personne ne s'en offusque ou parle d'un partenariat secret passé avec l'éditeur sélectionné pour mettre en avant ses éditions.

    Born to Kill EndUser !

  • # En fait si

    Posté par  (site web personnel) . En réponse au message Gnome keyring en cli. Évalué à 6.

    Comme quoi il faut insister un peu.

    Pour lister le contenu des trousseaux déverrouillés :

    secret-tool search --all xdg:schema org.gnome.keyring.Note

    Born to Kill EndUser !

  • [^] # Re: Emacs ?

    Posté par  (site web personnel) . En réponse au message Gnome keyring en cli. Évalué à 1.

    Je vais regarder, merci.

    Je suis tout de même étonné qu'il n'y ai pas un cli alors qu'il existe de nombreux gui (j'utilise seahorse sur une autre machine).

    Born to Kill EndUser !

  • [^] # Re: Attention

    Posté par  (site web personnel) . En réponse au message tendance no-code. Évalué à 1.

    Si tu arrive aux spaghettis c'est peut être que tu es à la limite du possible avec ces technos et qu'il est temps d'évoluer vers un dev ou un outils standard du marché.

    Born to Kill EndUser !

  • [^] # Re: A une époque on appelait ca du RAD ou des MACROs

    Posté par  (site web personnel) . En réponse au message tendance no-code. Évalué à 4.

    L'informatique c'est comme la mode, il y a toujours un concept qui est repris, amélioré et mieux "marketé" ;)

    Les macro j'en ai utilisé et ça marche bien. Mais dès que tu veux faire un changement tu n'a plus qu'a re-enregistrer toute la macro ou alors tu passe par l'éditeur VBA mais dans ce cas tu sors de l'utilisateur++ pour basculer côté dev.

    Born to Kill EndUser !

  • [^] # Re: Attention

    Posté par  (site web personnel) . En réponse au message tendance no-code. Évalué à 3.

    Programmer avec des boites et des bouts de ficelles, c'est joli sur le papier, ou pour apprendre quelques bases, mais dès que le projet commence à prendre une certaine ampleur, ça devient très vite illisible et impossible à maintenir.

    Il est clair qu'on est limité à ce que veut bien proposer le service de no-code.

    L'idée n'est pas de dev un ERP, par exemple un cas d'usage :

    Notre contrôleur de gestion utilise énormément les tableurs pour faire du reporting, il essai tant bien que mal de les rendre partageables sous un format fini (pdf) mais il perd du temps à essayer de les former au format A4.

    Avec du no-code :
    Il pourrait charger ses données dans airtable et les afficher avec glide. Il serait totalement libre de modifier la structure de la table, le rendu, le partager via un lien par mail… Le tout sans intervention du service info.

    Born to Kill EndUser !

  • [^] # Re: Low-code, ça compte ?

    Posté par  (site web personnel) . En réponse au message tendance no-code. Évalué à 2.

    Effectivement très orienté robot mais d'après la description il est possible il est possible d'aller plus loin.

    Le Low-code est à mon sens l'évolution d'une personne ayant exploité le no-code, qui souhaite aller plus loin sans pour autant "pisser du code" toute la journée.

    Born to Kill EndUser !