diff --git a/patches.d/scribe-backend.patch b/patches.d/scribe-backend.patch index 7b7aa79..b323f70 100644 --- a/patches.d/scribe-backend.patch +++ b/patches.d/scribe-backend.patch @@ -73,10 +73,66 @@ index 0db4982..47f5c80 100755 nscd_start() log.del_lock() diff --git usr/lib/python3/dist-packages/scribe/enseignants.py usr/lib/python3/dist-packages/scribe/enseignants.py -index 69f3411..a5db6da 100644 +index 69f3411..244a7af 100644 --- usr/lib/python3/dist-packages/scribe/enseignants.py +++ usr/lib/python3/dist-packages/scribe/enseignants.py -@@ -145,45 +145,37 @@ class Enseignant(User): +@@ -12,21 +12,21 @@ + from os import system, makedirs + from os.path import join, isdir + from ldap import MOD_REPLACE, modlist + from datetime import datetime + import time + from fichier.quota import set_quota + from fichier.acl import set_owner, clear_acl, set_user_acl, copy_default_acl + from scribe.ldapconf import SMB_SERVEUR, HOME_PATH, MAIL_DOMAIN, PROF_FILTER, \ + AD_HOME_PATH, ADMIN_GROUPS, USER_FILTER, num_etab, BRANCHE_GROUP_ETAB + from scribe.eoletools import fixdate, create_ad_home, \ +-to_list, not_empty, format_current_date, replace_cars, format_old_date ++to_list, not_empty, format_current_date, replace_cars, format_old_date, launch_smbldap_tool + from scribe.eoleuser import User, gen_common_attrs, send_first_mail, \ + gen_profil, gen_common_devdir, gen_radius_attrs + + + class Enseignant(User): + """ + classe pour la gestion des enseignants Scribe + """ + _type = 'personnels' + profil = 'enseignant' +@@ -124,20 +124,32 @@ class Enseignant(User): + datas.append((MOD_REPLACE, 'FederationKey', + args['mail_acad'].lower())) + if not_empty(args, 'disciplines') and args['disciplines'] != []: + datas.append((MOD_REPLACE, 'ENTAuxEnsCategoDiscipline', + args['disciplines'])) + # FIXME : remplissage d'autres attributs provenant de ENTAuxEnseignant + self.ldap_admin._modify(user_dn, datas) + if maildir != '': + send_first_mail(mail) + ++ def exec_smbldap_useradd(self, user_add_args, login): ++ """ ++ exécute smbldap-useradd ++ """ ++ cmd = ["/usr/sbin/smbldap-useradd"] ++ cmd.extend(self.user_add_params) ++ cmd.extend(user_add_args) ++ etab = self.get_etab(login) ++ force_dn = {'usersdn="ou=utilisateurs,${etab},${suffix}"': 'usersdn="ou=utilisateurs,${specific},${suffix}"', ++ 'groupsdn="ou=local,ou=Groupes,${etab},${suffix}"': 'groupsdn="${suffix}"'} ++ launch_smbldap_tool(cmd, num_etab, etab, force_dn=force_dn) ++ + def _add_perso(self, login, **args): + """ + Crée les différents répertoires de l'utilisateur + """ + abc = join(HOME_PATH, login[0]) + rep = join(abc, login) + perso = join(rep, 'perso') + # Eole-AD + create_ad_home(login, rep) + if not isdir(perso): +@@ -145,45 +157,37 @@ class Enseignant(User): rep = join(AD_HOME_PATH, login) # répertoire supérieur clear_acl(rep) @@ -125,7 +181,7 @@ index 69f3411..a5db6da 100644 datas.append((MOD_REPLACE, 'intid', args['int_id'] )) if not_empty(args, 'entpersonjointure'): datas.append((MOD_REPLACE, 'ENTPersonJointure', args['entpersonjointure'])) -@@ -196,21 +188,21 @@ class Enseignant(User): +@@ -196,21 +200,21 @@ class Enseignant(User): datas.append((MOD_REPLACE, 'ENTAuxEnsCategoDiscipline', args['disciplines'])) datas.append((MOD_REPLACE, 'sn', args['nom'])) datas.append((MOD_REPLACE, 'givenName', args['prenom'])) @@ -148,7 +204,7 @@ index 69f3411..a5db6da 100644 """ Mise à niveau d'un compte enseignant """ -@@ -326,10 +318,14 @@ class Enseignant(User): +@@ -326,10 +330,14 @@ class Enseignant(User): return res def _is_enseignant(self, uid): @@ -226,33 +282,37 @@ index 45ec338..9a67c6d 100644 users = [] res = self.ldap_admin._search("(&%s%s)" % (USER_FILTER, filtre), attrs) for user in res: +diff --git usr/lib/python3/dist-packages/scribe/eoletools.py usr/lib/python3/dist-packages/scribe/eoletools.py +index a469716..0ceffc2 100644 +--- usr/lib/python3/dist-packages/scribe/eoletools.py ++++ usr/lib/python3/dist-packages/scribe/eoletools.py +@@ -617,21 +617,21 @@ def move_share_datas(filepath): + def launch_smbldap_tool(cmd, ref_etab, etab, force_dn={}): + tempfile = None + if etab != None and ref_etab != etab: + filename = '%s/etc/smbldap-tools/smbldap.conf' % conteneurs.get('container_path_fichier', '') + confdir = '/etc/smbldap-tools/' + fd, tempfile = mkstemp(suffix='.temp', dir='%s%s' % (conteneurs.get('container_path_fichier', ''), confdir)) + container_file = '%s%s' % (confdir, basename(tempfile)) + fh = open(filename, 'r') + filecontent = fh.read() + fh.close() +- newcontent = filecontent.replace('num_etab="{0}"'.format(ref_etab), 'num_etab="{0}"'.format(etab)) ++ newcontent = filecontent #filecontent.replace('num_etab="{0}"'.format(ref_etab), 'num_etab="{0}"'.format(etab)) + for old, new in list(force_dn.items()): + newcontent = newcontent.replace(old, new) + fh = open(tempfile, 'w') + fh.write(newcontent) + fh.close() + env = {'SMBLDAP_CONF': container_file} + else: + env = None + res = system_out(cmd, container=CONTAINER_NAME, env=env) + if tempfile is not None: diff --git usr/lib/python3/dist-packages/scribe/eoleuser.py usr/lib/python3/dist-packages/scribe/eoleuser.py -index 05569fd..b4e24e5 100644 +index 05569fd..c092698 100644 --- usr/lib/python3/dist-packages/scribe/eoleuser.py +++ usr/lib/python3/dist-packages/scribe/eoleuser.py -@@ -329,21 +329,21 @@ class User(LdapEntry): - """ - return {} - - def exec_smbldap_useradd(self, user_add_args, login): - """ - exécute smbldap-useradd - """ - cmd = ["/usr/sbin/smbldap-useradd"] - cmd.extend(self.user_add_params) - cmd.extend(user_add_args) -- etab = self.get_etab(login) -+ etab = self.get_etab(login, multi_etab=SUPPORT_ETAB) - force_dn = {'groupsdn="ou=local,ou=Groupes,${etab},${suffix}"': 'groupsdn="${suffix}"'} - tool.launch_smbldap_tool(cmd, num_etab, etab, force_dn=force_dn) - - def _add_perso(self, login, **args): - """ - Crée les différents répertoires de l'utilisateur - """ - pass - - def _add_scribe_user(self, login, **args): @@ -410,20 +410,25 @@ class User(LdapEntry): grp = Group() grp.ldap_admin = self.ldap_admin