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
This commit is contained in:
rozel 2005-06-20 23:55:48 +02:00
parent 40229d2389
commit 29fbff221c

View file

@ -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