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:
parent
40229d2389
commit
29fbff221c
1 changed files with 10 additions and 16 deletions
|
@ -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 :
|
||||
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
|
||||
sys.exit(0) # On conclue l'impression sans stopper l'imprimante
|
||||
|
||||
adherent=res[0]
|
||||
return adherent
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue