====== Cups server ====== Le container cups-server à été crée pour simplifier l'utilisation de l'imprimante MiNET. Son ip (192.168.102.100) --- //[[no_pseudo@minet.net|Kevin Cazal]] 2017/04/05 16:15// L'imprimante imprime par défaut en noir et blanc. Pour imprimer en couleur : lp -o BRMonoColor=Auto filename.docx ===== Services proposés par cups-server ===== * L'impression par le réseau. L'avantage de cups server est que cette machine est déjà configurée pour l'imprimante MiNET. Les pilotes Brother sont déjà installés, pas besoin de les installer sur votre PC. Pas besoin d'installer des pilotes génériques (qui donnent souvent un résultat aléatoire) non plus. * L'impression sans openvpn. Si vous n'avez pas d'accès openvpn (que les accès SSH sur vpn1 ou 2) vous pouvez quand même faire un scp du fichier que vous souhaitez imprimer sur la machine cups-server et imprimer grace à la commande lp /chemin/vers/le_document_a_imprimer.pdf (par défaut l'impression est sur le recto et en couleur) * Le scan vers ftp. Il est possible de scanner et d'envoyer directement vos document sur la machine cups-server et les récuper via ftp. ===== Tutos ===== ==== Imprimer ==== === Méthode rapide === l'utilisateur qui lance la commande lp doit faire partie du groupe lp ou s'appeller root [user@mon_pc]$ scp mon_fichier.pdf user@192.168.102.100:. [user@mon_pc]$ ssh user@192.168.102.100 [user@cups-server]$ lp mon_fichier.pdf === Méthode "proxy cups" === Vous pouvez installer cups sur votre PC et configurer une imprimante réseau. Sauf que au lieu de mettre l'IP de l'imprimante MiNET vous pouvez mettre l'IP de cups-serveur qui est déjà configuré avec les bons drivers. ==== Scanner ==== Sur l'imprimante quand vous voulez scanner: faites 'Scan' > 'to FTP' > 'scan_ftp'. Pour récupérer le document: * Sur nextcloud dans **/MiNET/Scanner** ===== Comment c'est fait ===== ==== Impression ==== On installe cups sur le CT: apt install cups on installe les drivers Brother dispo sur [[http://support.brother.com/g/b/producttop.aspx?c=us_ot&lang=en&prod=mfc9340cdw_all]] Sinon les drivers se trouvent sur le CD fourni avec l'imprimante. Un ISO de ce CD se trouve sur nextcloud dans MiNET/Firmware [[https://nextcloud.minet.net/index.php/apps/files/?dir=/MiNET/Firmware]]. On s'assure que le service cups est bien démarré. On configure cups, soit via l'interface WEB sur http://192.168.102.100:631 (à noter que par défaut cups autorise la connexion que depuis 127.0.0.1, pour se connecter sur l'interface Web depuis une autre machine il faut changer la conf de cups et rélancer le service) soit en ligne de commande (cf la doc de cups). TODO: interface web pour imprimer quand on est vraiment mauvais avec la ligne de commande ==== Scanner ==== Pour relier le scanner à un ftp: On installe un serveur ftp: apt install pure-ftpd xmlstarlet curl **Obsolète:** J'ai choisi pure-ftpd car sa configuration initiale fait tout ce dont on a besoin: pas de ftp anonyme, les home directories des utilisateurs standard sont disponible en ftp (avec authetification PAM), pas de ftp pour le compte root. Il nous reste donc à créer un utilisateur et définir son home directory (qui va être l'endroit où seront stockés les fichiers scannés) adduser --home /srv/scanner_ftp/ scanner_minet pure-ftpd est maintenant configuré avec un utilisateur virtuel chrooté (il n'est plus possible de se logger avec PAM et de voir le contenu des dossiers autre que la racine du serveur ftp). De plus un script transfère automatiquement les fichiers uploadés sur le ftp sur Nextcloud (dans /MiNET/Scanner) === Configuration de pure-ftpd avec {next,own}cloud === Configuration de pure-ftpd: # Creation de la DB pour les utilisateurs virtuels echo '/etc/pure-ftpd/pureftpd.pdb' > /etc/pure-ftpd/conf/PureDB cd /etc/pure-ftpd/auth ln -s /etc/pure-ftpd/conf/PureDB 50pure # Desactivation du login UNIX et PAM echo 'no' > /etc/pure-ftpd/auth/65unix echo 'no' > /etc/pure-ftpd/auth/70pam # Creation de notre utilisateur virtuel groupadd ftpgroup useradd -g ftpgroup -d /dev/null -s /etc ftpuser pure-pw useradd scanner_minet -u ftpuser -g ftpgroup -d /srv/scanner_ftp pure-pw mkdb # On met a jour les UID et GID de l'utilisateur qui lancera le script appelé à la fin d'un upload MYUID=$(id -u ftpuser); sed -i -e "s/UPLOADUID=.*/UPLOADUID=${MYUID}/g" /etc/default/pure-ftpd-common MYGID=$(id -g ftpuser); sed -i -e "s/UPLOADGID=.*/UPLOADGID=${MYGID}/g" /etc/default/pure-ftpd-common # On active le lancement de script custom à la fin de l'upload echo 'yes' > /etc/pure-ftpd/conf/CallUploadScript # On s'assure que tous les utilisateurs sont chrooté echo 'yes' > /etc/pure-ftpd/conf/ChrootEveryone # Pas d'utilisateur anonyme echo 'yes' > /etc/pure-ftpd/conf/NoAnonymous # On s'assure que pure-ftpd n'écoute que sur l'interface dans le 102 sur le port 21 echo '192.168.147.5,21' > /etc/pure-ftpd/conf/Bind On crée le script qui va transférer les fichiers uploadé sur le ftp sur le {own,next}cloud (/opt/uploadhandler.sh) #!/bin/bash # Lorsque pure-ftpd appelle un script il passe le chemin absolu du fichier uploadé en $1 PROXY="http://192.168.102.61:82" OC_USER="scanner" ###### Utilisateur nextcloud faisant partie du groupe "MiNET" OC_PASS="xxxxxxxxxxxxxxxxxx" ###### MDP de l'utilisateur scanner sur nextcloud OC_WEBDAV_URL="https://nextcloud.minet.net/remote.php/webdav/" OC_UPLOAD_DIR="MiNET/Scanner" FILENAME=$(basename "$1") # upload_exit_code vaut 0 si la commande n'a pas retournée d'erreur # cependant ça ne veut pas dire que le fichier a bien été uploadé sur # nextcloud curl -s -x $PROXY -u $OC_USER:$OC_PASS -T "$1" $OC_WEBDAV_URL/$OC_UPLOAD_DIR/$FILENAME upload_exit_code=$? # Verifie que le fichier se trouve bien sur nextcloud # si dans le XML renvoyé par la requête on trouve # un élément "error" dans lequel on trouve un élément "exception" # check_exit_code vaut 0 -> en d'autres termes ça sent pas bon curl -s -x $PROXY -u $OC_USER:$OC_PASS -XPROPFIND $OC_WEBDAV_URL/$OC_UPLOAD_DIR/$FILENAME | xmlstarlet select -t -v //d:error/s:exception check_exit_code=$? # On supprime le fichier de cups-server seulement si le fichier a # bien été envoyé sur nextcloud if [ $upload_exit_code -eq 0 ] && [ $check_exit_code -ne 0 ]; then rm -r "$1" fi Ensuite: chmod +x /opt/uploadhandler.sh On s'assure que la conf globale de pure-ftpd est bonne (/etc/default/pure-ftpd-common): STANDALONE_OR_INETD=standalone VIRTUALCHROOT=true UPLOADSCRIPT=/opt/uploadhandler.sh UPLOADUID=1008 #uid de l'utilisateur qu'on vient de créer UPLOADGID=1008 #gid de l'utilisateur qu'on vient de créer On oublie pas de relancer le daemon. Ensuite aller sur l'interface WEB de l'imprimante: http://192.168.147.5/scan/scanprofile.html Cliquez sur un profil et remplissez les champs: Profile Name Host Address (l'address IP de cups-server) Username (le nom d'utilisateur **virtuel** que vous venez créer) Password (le mot de passe de cet utilisateur) Store Directory (le dossier dans lequel les documents seront stockés, mettre '.' pour stocker à la racine du ftp). Les autres champs peuvent être laissés à leur valeur par défaut. Validez le formulaire et normalement le profile devrait apparaitre dans le menu 'Scan to FTP' de l'imprimante. ==== Commandes utiles ==== Lister les imprimantes disponibles: lpstat -p Sélectionner une imprimante: lp -d printer filename Imprimer avec un bandeau topsecret: lp -o job-sheets=standard filename Spécifier un range de page à imprimer: lp -o page-ranges=1-4 filename Empêcher les débordements lp -o fit-to-page filename