Changeset 8076


Ignore:
Timestamp:
Sep 12, 2018, 8:54:10 AM (11 months ago)
Author:
hectorgh
Message:

improving llum import function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • n4d-server-plugins/trunk/fuentes/server-install-files/usr/share/n4d/python-plugins/Golem.py

    r8027 r8076  
    396396                                ret=self.delete_student(item.properties["uid"],delete_data)
    397397                                ret_list.append(item.properties["uid"] +":"+ret)
    398                                
     398               
     399               
     400                self.ldap.set_xid("Students",20000)
     401
    399402                return ret_list
    400403                               
     
    413416                                ret_list.append(item.properties["uid"] +":"+ret)
    414417
     418                self.ldap.set_xid("Teachers",5000)
     419
    415420                return ret_list
    416421                       
     
    513518               
    514519                result=self.ldap.add_to_group_type(group,uid)
    515 
    516520                user_info={}
    517521                user_info["uid"]=uid
    518                
    519                 path=self.ldap.get_dn(uid)
    520                
    521                 if path.find("ou=Students")!=-1:
    522                         user_info["profile"]="students"
    523                 if path.find("ou=Teachers")!=-1:
    524                         user_info["profile"]="teachers"
    525                 if path.find("ou=Other")!=-1:
    526                         user_info["profile"]="others"   
    527                        
    528                
    529 
    530                 self.peter_pan.execute_python_dir('/usr/share/n4d/hooks/golem',('add_to_group'),{'group':{'cn':group},'user':user_info})
    531                 #return must be "true" (string)
    532                
     522                try:
     523                        path=self.ldap.get_dn(uid)
     524                       
     525                        if path.find("ou=Students")!=-1:
     526                                user_info["profile"]="students"
     527                        if path.find("ou=Teachers")!=-1:
     528                                user_info["profile"]="teachers"
     529                        if path.find("ou=Other")!=-1:
     530                                user_info["profile"]="others"   
     531                               
     532                       
     533
     534                        self.peter_pan.execute_python_dir('/usr/share/n4d/hooks/golem',('add_to_group'),{'group':{'cn':group},'user':user_info})
     535                        #return must be "true" (string)
     536                except:
     537                        pass
     538                       
    533539                return result
    534540               
     
    555561                surname=unicode(surname).encode("utf8")
    556562                result=self.ldap.change_student_name(uid,name)
    557                 #print result
    558563                result2=self.ldap.change_student_surname(uid,surname)
    559                 #print result2
    560564                if result==result2 and result=="true":
    561565                       
     
    671675       
    672676        def add_group(self,properties):
     677               
    673678                properties["description"]=unicode(properties["description"]).encode("utf8")
    674679                result=self.ldap.add_group(properties)
     
    677682                        self.create_group_folder(properties["cn"])
    678683                except Exception as e:
    679                         print(e)
     684                        return result
    680685               
    681686                try:
     
    689694        def get_students_passwords(self):
    690695               
    691                 list = self.ldap.get_students_passwords()
    692 
    693                 return self.quicksort(list)
     696                slist = self.ldap.get_students_passwords()
     697
     698                return self.quicksort(slist)
    694699               
    695700        #def get_students_passwords
     701
     702        def get_teachers_passwords_encrypted(self):
     703
     704                tlist= self.ldap.get_teachers_passwords()
     705
     706                return self.quicksort(tlist)
     707
     708        #def get_teachers_passwords_encrypted
     709       
    696710       
    697711        def get_teachers_passwords(self):
    698                
    699                 ret=self.light_get_user_list()
    700                
     712
     713                ret=self.ldap.get_teachers_passwords()
    701714                tmp_teachers={}
    702 
    703                 for item in ret:
    704                        
    705                         if item[-1]=="teachers":
    706                                 teacher={}
    707                                 teacher["uid"]=item[1]
    708                                 teacher["cn"]=item[3]
    709                                 teacher["sn"]=item[4]
    710                                 teacher["passwd"]="#! UNKNOWN PASSWORD !#"     
    711                                 tmp_teachers[item[1]]=teacher
     715                for teacher in ret:
     716                        tmp_teachers[teacher["uid"]]=teacher
    712717                               
    713718                               
     
    715720
    716721                final_ret=[]
    717 
    718722                for item in ret2:
    719723                        if item["uid"] in tmp_teachers:
     
    724728                        final_ret.append(tmp_teachers[item])
    725729                       
    726                
    727730                return final_ret
    728731               
    729732        #def get_teachers_passwords
    730733       
    731         def get_all_passwords(self,force_teachers=True):
     734       
     735        def get_all_passwords(self,force_teachers=False):
     736               
    732737                slist=self.ldap.get_students_passwords()
    733                 if not force_teachers:
    734                         list2=self.pw.get_passwords()
    735                 else:
    736                         list2=self.get_teachers_passwords()
     738                list2=self.get_teachers_passwords()
     739
    737740                for item in list2:
    738741                        slist.append(item)
     742
    739743                return self.quicksort(slist)
    740744               
     
    972976               
    973977                        user_list=self.get_user_list("*")
    974                         pwd_list=self.get_all_passwords(True)
     978                        slist=self.get_students_passwords()
     979                        tlist=self.get_teachers_passwords_encrypted()
     980                        pwd_list=self.quicksort(slist+tlist)
     981       
    975982                        groups=self.get_available_groups()
    976983                       
     
    9951002                                else:
    9961003                                        continue
    997                                
    9981004                                exported_users[item["uid"]]={}
    9991005                                exported_users[item["uid"]]["profile"]=profile
     
    10151021                                        exported_users[item["uid"]]["sambaLMPassword"]=item["sambaLMPassword"]
    10161022                               
     1023
     1024                        tmp_pwd=self.get_teachers_passwords()
     1025
     1026                        for teacher in tmp_pwd:
     1027                                if teacher["uid"] in exported_users:
     1028                                        exported_users[teacher["uid"]]["known_password"]=teacher["passwd"]
     1029
    10171030                        exported={}
    10181031                        exported["groups"]=exported_groups
     
    10221035               
    10231036                except Exception as e:
    1024 
    10251037                        return [False,str(e)]
    10261038               
     
    10291041        #def export_llum_info
    10301042       
     1043       
    10311044        def import_llum_info(self,exported_info):
     1045       
     1046                def sort_users_by_uidNumber(dic_a):
     1047                       
     1048                        new_dic={}
     1049                        new_dic["groups"]=dic_a["groups"]
     1050                        new_dic["users"]={}
     1051                        for user in dic_a["users"]:
     1052                               
     1053                                try:
     1054                                        uidn=int(dic_a["users"][user]["uidNumber"])
     1055                                        dic_a["users"][user]["uid"]=user
     1056                                        new_dic["users"][uidn]=dic_a["users"][user]
     1057                                       
     1058                                except Exception as e:
     1059                                        continue
     1060                               
     1061                        return new_dic
     1062                       
     1063                #def sort_users_by_uidNumber
     1064               
     1065                exported_info=sort_users_by_uidNumber(exported_info)
     1066               
     1067                skipped=[]
    10321068               
    10331069                try:
     
    10391075                                self.add_group(properties)
    10401076                               
    1041                         for user in sorted(exported_info["users"]):
    1042                                
     1077                        for uidn in sorted(exported_info["users"]):
     1078
     1079                                user=exported_info["users"][uidn]["uid"]
     1080               
    10431081                                uids={}
    10441082                                for key in self.ldap.xid_counters:
    10451083                                        uids[key]=int(self.ldap.xid_counters[key])
    10461084
    1047                                
    10481085                                properties={}
    10491086                                properties["uid"]=user
    1050                                 properties["cn"]=exported_info["users"][user]["cn"]
    1051                                 properties["sn"]=exported_info["users"][user]["sn"]
    1052                                 properties["userPassword"]=exported_info["users"][user]["userPassword"]
    1053                                 properties["sambaLMPassword"]=exported_info["users"][user]["sambaLMPassword"]
    1054                                 properties["sambaNTPassword"]=exported_info["users"][user]["sambaNTPassword"]
    1055                                
    1056                                 if "uidNumber" in exported_info["users"][user]:
    1057                                         properties["uidNumber"]=exported_info["users"][user]["uidNumber"]
    1058 
    1059                                 if "x-lliurex-usertype" in exported_info["users"][user]:
    1060                                         properties["x-lliurex-usertype"]=exported_info["users"][user]["x-lliurex-usertype"]
     1087                                properties["cn"]=exported_info["users"][uidn]["cn"]
     1088                                properties["sn"]=exported_info["users"][uidn]["sn"]
     1089                                properties["userPassword"]=exported_info["users"][uidn]["userPassword"]
     1090                                properties["sambaLMPassword"]=exported_info["users"][uidn]["sambaLMPassword"]
     1091                                properties["sambaNTPassword"]=exported_info["users"][uidn]["sambaNTPassword"]
     1092                               
     1093                                if "uidNumber" in exported_info["users"][uidn]:
     1094                                        properties["uidNumber"]=exported_info["users"][uidn]["uidNumber"]
     1095
     1096                                if "x-lliurex-usertype" in exported_info["users"][uidn]:
     1097                                        properties["x-lliurex-usertype"]=exported_info["users"][uidn]["x-lliurex-usertype"]
    10611098                                else:
    10621099                                        properties["x-lliurex-usertype"]="generic"
    10631100
    1064                                 profile=exported_info["users"][user]["profile"]
    1065                                
     1101                                profile=exported_info["users"][uidn]["profile"]
     1102                               
     1103                                if int(uids[profile]) > properties["uidNumber"] :
     1104                                        print("Skipping %s ..."%user)
     1105                                        skipped.append(user)
     1106                                        continue
     1107                               
     1108                                self.ldap.set_xid(profile,properties["uidNumber"])
     1109                                uids[profile]=properties["uidNumber"]
     1110                                self.ldap.xid_counters[profile]=str(uids[profile])
    10661111                               
    10671112                                ret=self.add_user(profile,properties)
     
    10731118                                                       
    10741119                                        if profile=="Teachers":
    1075                                                
    1076                                                 password=properties["userPassword"]
    1077                                                 if "{SSHA}" in properties["userPassword"]:
    1078                                                         password="#! CHANGED MANUALLY !#"
     1120                                                if "known_password" in exported_info["users"][uidn]:
     1121                                                        password=exported_info["users"][uidn]["known_password"]
     1122                                                else:   
     1123                                                        password=properties["userPassword"]
     1124
     1125                                                if "{SSHA}" in password:
     1126                                                        password="#! UNKNOWN PASSWORD !#"
    10791127                                                       
    10801128                                                self.pw.add_password(properties["uid"],properties["cn"],properties["sn"],password)     
     
    10821130                        for group in exported_info["groups"]:
    10831131                       
    1084                                 for user in exported_info["groups"][group]["members"]:
    1085                                         self.add_to_group(user,group)
     1132                                for i in exported_info["groups"][group]["members"]:
     1133                                        try:
     1134                                                if i not in skipped:
     1135                                                        self.add_to_group(i,group)
     1136                                        except Exception as e:
     1137                                                pass
    10861138                                       
    10871139                        for user in exported_info["users"]:
    10881140                               
    1089                                 if exported_info["users"][user]["is_admin"]:
     1141                                if exported_info["users"][uidn]["is_admin"]:
    10901142                                        self.add_teacher_to_admins(user)
    10911143                                       
    1092                                        
    1093                         for profile in uids:
    1094                                 if uids[profile] != int(self.ldap.xid_counters[profile]):
    1095                                         self.ldap.set_xid(profile,uids[profile])
    1096                                         self.ldap.xid_counters[profile]=str(uids[profile])
    1097                                
    1098                        
    10991144                        return[True,]
     1145                       
    11001146                except Exception as e:
    1101                        
     1147                        print e
    11021148                        return [False,str(e)]
    11031149               
Note: See TracChangeset for help on using the changeset viewer.