From 29fbff221c5e3de00b6ac94c7b51cab228921688 Mon Sep 17 00:00:00 2001 From: rozel Date: Mon, 20 Jun 2005 23:55:48 +0200 Subject: [PATCH] Il est plus scure de rcuprer le 2me argument pass au backend pour authentifier l'utilisateur. Pour le cas particulier de Samba, il y aura une imprimante non athentifie accessible que par lui afin que l'utilisateur de Samba soit transmis CUPS. darcs-hash:20050620215548-061a7-2f4a2f20ac519c264045f3b8cf11be2c9ef369cb.gz --- impression/crans_backend.py | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/impression/crans_backend.py b/impression/crans_backend.py index 49bca7f0..69901b3d 100755 --- a/impression/crans_backend.py +++ b/impression/crans_backend.py @@ -7,32 +7,21 @@ # Licence : GNU General Public Licence, version 2 import sys, tempfile -from ipp import IPPMessage import couts sys.path.append('/usr/scripts/gestion') from ldap_crans import crans_ldap -def utilisateur(job, rw): +def utilisateur(job, user, rw): """ Renvoie l'adherent qui imprime le job * job est le n°du job (argument n°1 des paramètres passés au backend) + * user est l'utilisateur (argument n°2 des paramètres passés au backend) * rw vaut 1 si on veut modifier le compte LDAP de l'adhérent, 0 dans le cas contraire """ - # Récupération du nom de l'utilisateur - # On n'utilise pas sys.argv[2], car Samba fournit root + # Attention, Samba fournit root pour sys.argv[2] # en mode Authentifie - if len(job) < 5 : - fichier_ipp = "c%05i" % int(job) - else: - fichier_ipp = "c%s" % job - try: - message = IPPMessage(open('/var/spool/cups/%s' % fichier_ipp).read()) - except: - sys.stderr.write("ERROR: Erreur : Ne peut pas ouvrir le fichier /var/spool/cups/%s" % fichier_ipp) - sys.exit(0) # On conclue l'impression - user=message["job-originating-user-name"] # Récupération de l'adhérent base = crans_ldap() @@ -43,8 +32,13 @@ def utilisateur(job, rw): # Si on ne trouve rien : if len(res) != 1 : - sys.stderr.write("ERROR: Erreur : adhérent %s non trouvé\n" % user) - sys.exit(0) # On conclue l'impression + if user=="root": + sys.stderr.write("ERROR: Utilisateur Root passé en paramètre\n") + sys.stderr.write("ERROR: Si passage par samba, alors passer en mode non authentifié pour l'impression") + sys.exit(1) # On stoppe l'imprimante car problème de configuration + else: + sys.stderr.write("ERROR: Erreur : adhérent %s non trouvé\n" % user) + sys.exit(0) # On conclue l'impression sans stopper l'imprimante adherent=res[0] return adherent