Changeset 8087


Ignore:
Timestamp:
Sep 13, 2018, 2:14:27 PM (14 months ago)
Author:
hectorgh
Message:

making sure we import every user, changing its uidNumber if needed

Location:
n4d-server-plugins/trunk/fuentes/server-install-files/usr/share/n4d/python-plugins
Files:
2 edited

Legend:

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

    r8078 r8087  
    10481048       
    10491049                def sort_users_by_uidNumber(dic_a):
    1050                        
     1050               
     1051                                               
    10511052                        new_dic={}
    10521053                        new_dic["groups"]=dic_a["groups"]
    10531054                        new_dic["users"]={}
     1055                        new_dic["skipped_users"]={}
    10541056                        for user in dic_a["users"]:
    10551057                               
     
    10571059                                        uidn=int(dic_a["users"][user]["uidNumber"])
    10581060                                        dic_a["users"][user]["uid"]=user
    1059                                         new_dic["users"][uidn]=dic_a["users"][user]
     1061                                        if uidn not in new_dic["users"]:
     1062                                                new_dic["users"][uidn]=dic_a["users"][user]
     1063                                        else:
     1064                                                if "uidNumber" in dic_a["users"][user]:
     1065                                                        dic_a["users"][user].pop("uidNumber")
     1066                                                new_dic["skipped_users"][user]=dic_a["users"][user]
    10601067                                       
    10611068                                except Exception as e:
     
    10681075                exported_info=sort_users_by_uidNumber(exported_info)
    10691076               
     1077                               
    10701078                skipped=[]
     1079                skipped_uidn=[]
    10711080               
    10721081                try:
     
    10761085                                properties["description"]=exported_info["groups"][group]["description"]
    10771086                                properties["cn"]=group
     1087                                print("Adding group %s..."%group)
    10781088                                self.add_group(properties)
    10791089                               
     
    10811091
    10821092                                user=exported_info["users"][uidn]["uid"]
    1083                
    10841093                                uids={}
    10851094                                for key in self.ldap.xid_counters:
     
    11131122                                self.ldap.xid_counters[profile]=str(uids[profile])
    11141123                               
     1124                                print("Adding user %s..."%user)
    11151125                                ret=self.add_user(profile,properties)
    11161126                               
     
    11291139                                                        password="#! UNKNOWN PASSWORD !#"
    11301140                                                       
    1131                                                 self.pw.add_password(properties["uid"],properties["cn"],properties["sn"],password)     
     1141                                                self.pw.add_password(properties["uid"],properties["cn"],properties["sn"],password)
     1142
     1143
     1144                        # Adding skipped users with new uidnumber
     1145                       
     1146                        # part 1: those skipped because they already had conflicting uids in llum file
     1147                       
     1148                        for user in exported_info["skipped_users"]:
     1149                               
     1150                                properties={}
     1151                                properties["uid"]=user
     1152                                properties["cn"]=exported_info["skipped_users"][user]["cn"]
     1153                                properties["sn"]=exported_info["skipped_users"][user]["sn"]
     1154                                properties["userPassword"]=exported_info["skipped_users"][user]["userPassword"]
     1155                                properties["sambaLMPassword"]=exported_info["skipped_users"][user]["sambaLMPassword"]
     1156                                properties["sambaNTPassword"]=exported_info["skipped_users"][user]["sambaNTPassword"]
     1157                                if "x-lliurex-usertype" in exported_info["skipped_users"][user]:
     1158                                        properties["x-lliurex-usertype"]=exported_info["skipped_users"][user]["x-lliurex-usertype"]
     1159                                else:
     1160                                        properties["x-lliurex-usertype"]="generic"
     1161                                profile=exported_info["skipped_users"][user]["profile"]
     1162                               
     1163                               
     1164                                #without uidNumber, add_user should automatically get the next one
     1165                                print("Trying to add skipped.1 user %s..."%user)
     1166                                ret=self.add_user(profile,properties)
     1167                               
     1168                                if "true" in str(ret):
     1169
     1170                                        if profile=="Teachers":
     1171                                                if "known_password" in exported_info["skipped_users"][user]:
     1172                                                        password=exported_info["skipped_users"][user]["known_password"]
     1173                                                else:   
     1174                                                        password=properties["userPassword"]
     1175
     1176                                                if "{SSHA}" in password:
     1177                                                        password="#! UNKNOWN PASSWORD !#"
     1178                                                       
     1179                                                self.pw.add_password(properties["uid"],properties["cn"],properties["sn"],password)
     1180
     1181                                        uidn=self.ldap.xid_counters[profile]
     1182                                        properties["uidNumber"]=uidn
     1183                                        properties["profile"]=profile.lower()
     1184                                       
     1185                                        # llum already calls regenerate files function afterwards
     1186                                        #self.exist_home_or_create(properties)
     1187                       
     1188                        # part 2: those who couldnt be added because there was already another user with that uidNumber
     1189
     1190                        for uidn in skipped_uidn:
     1191                               
     1192                                user=exported_info["users"][uidn]["uid"]
     1193                               
     1194                                properties={}
     1195                                properties["uid"]=user
     1196                                properties["cn"]=exported_info["users"][uidn]["cn"]
     1197                                properties["sn"]=exported_info["users"][uidn]["sn"]
     1198                                properties["userPassword"]=exported_info["users"][uidn]["userPassword"]
     1199                                properties["sambaLMPassword"]=exported_info["users"][uidn]["sambaLMPassword"]
     1200                                properties["sambaNTPassword"]=exported_info["users"][uidn]["sambaNTPassword"]
     1201                                if "x-lliurex-usertype" in exported_info["users"][uidn]:
     1202                                        properties["x-lliurex-usertype"]=exported_info["users"][uidn]["x-lliurex-usertype"]
     1203                                else:
     1204                                        properties["x-lliurex-usertype"]="generic"
     1205                               
     1206                                profile=exported_info["users"][uidn]["profile"]
     1207                                '''
     1208                                properties["uidNumber"]=self.ldap.xid_counters[profile]
     1209                                uids[profile]=properties["uidNumber"]
     1210                                exported_info["users"][uidn]["uidNumber"]=properties["uidNumber"]
     1211                                '''
     1212                               
     1213                                #without uidNumber, add_user should automatically get the next one
     1214                                print("Trying to add skipped.2 user %s..."%user)
     1215                                ret=self.add_user(profile,properties)
     1216
     1217                                if "true" in str(ret):
     1218                                        '''
     1219                                        if "uidNumber" in properties:
     1220                                                if uids[profile] < int(properties["uidNumber"]):
     1221                                                        uids[profile]=int(properties["uidNumber"])
     1222                                        '''
     1223                                        if profile=="Teachers":
     1224                                                if "known_password" in exported_info["users"][uidn]:
     1225                                                        password=exported_info["users"][uidn]["known_password"]
     1226                                                else:   
     1227                                                        password=properties["userPassword"]
     1228
     1229                                                if "{SSHA}" in password:
     1230                                                        password="#! UNKNOWN PASSWORD !#"
     1231                                                       
     1232                                                self.pw.add_password(properties["uid"],properties["cn"],properties["sn"],password)
     1233                                               
     1234                                        uidn=self.ldap.xid_counters[profile]
     1235                                        properties["uidNumber"]=uidn
     1236                                        properties["profile"]=profile.lower()
     1237                                       
     1238                                        # llum already calls regenerate files function afterwards
     1239                                        #self.exist_home_or_create(properties)
     1240                                        skipped.remove(user)
     1241                               
    11321242                               
    11331243                        for group in exported_info["groups"]:
     
    11361246                                        try:
    11371247                                                if i not in skipped:
     1248                                                        print("Adding user %s to group %s..."%(i,group))
    11381249                                                        self.add_to_group(i,group)
    11391250                                        except Exception as e:
     1251                                                print e
    11401252                                                pass
     1253                                               
    11411254                                       
    1142                         for user in exported_info["users"]:
     1255                        for uidn in exported_info["users"]:
    11431256                               
    11441257                                if exported_info["users"][uidn]["is_admin"]:
    11451258                                        self.add_teacher_to_admins(user)
     1259                                       
     1260                        for user in exported_info["skipped_users"]:
     1261                               
     1262                                if exported_info["skipped_users"][user]["is_admin"]:
     1263                                        self.add_teacher_to_admins(user)
     1264                                       
    11461265                                       
    11471266                        return[True,]
  • n4d-server-plugins/trunk/fuentes/server-install-files/usr/share/n4d/python-plugins/LdapManager.py

    r4994 r8087  
    325325                try:
    326326                        self.ldap.modify_s(path,mod_list)
     327                        self.xid_counters[ou]=str(value)
    327328                        return True
    328329                except Exception as e:
Note: See TracChangeset for help on using the changeset viewer.