develop
asamoukin 16 years ago
parent bdaf9afdb6
commit 2b12bb415f

@ -214,7 +214,7 @@ class cl_client(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
resSearch = self.searchLdapDN(userName, self.relUsersDN, "uid")
return resSearch
def getLdapObjBind(self, host):
def getLdapObjBind(self, host, printError=True):
"""Получаем объект ldapFunction
Соединяемся пользователем bind
@ -224,11 +224,14 @@ class cl_client(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
bindDn = self.clVars.Get("ld_bind_dn")
bindPw = self.clVars.Get("ld_bind_pw")
if not (bindDn or bindPw):
self.printERROR(_("not found LDAP bind DN or password") + " ...")
if printError:
self.printERROR(_("not found LDAP bind DN or password") +\
" ...")
return False
ldapObj = cl_utils2.ldapFun(bindDn, bindPw, host)
if ldapObj.getError():
self.printERROR (_("LDAP connect error") + ": " +\
if printError:
self.printERROR (_("LDAP connect error") + ": " +\
ldapObj.getError().strip())
return False
# Устанавливаем у объекта соединение и объект LDAP функций
@ -271,17 +274,28 @@ class cl_client(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
filePasswd = "/etc/passwd"
return self.searchLineInFile(userName, filePasswd)
def getUserUidGid(self, userName):
def getUserLdapInfo(self, userName, printError=True):
"""Выдаем uid и gid пользователя"""
searchUser = self.searchUnixUser(userName)
if not searchUser:
self.printERROR(_("User %s not found in Unix service")\
if printError:
self.printERROR(_("User %s not found in Unix service")\
%str(userName))
return False
if searchUser[0][0][1].has_key('uidNumber') and\
searchUser[0][0][1].has_key('gidNumber'):
return (searchUser[0][0][1]['uidNumber'][0],
searchUser[0][0][1]['gidNumber'][0])
uid = False
gid = False
fullName = ""
mail = ""
if searchUser[0][0][1].has_key('uidNumber'):
uid = searchUser[0][0][1]['uidNumber'][0]
if searchUser[0][0][1].has_key('gidNumber'):
gid = searchUser[0][0][1]['gidNumber'][0]
if searchUser[0][0][1].has_key('cn'):
fullName = searchUser[0][0][1]['cn'][0]
if searchUser[0][0][1].has_key('mail'):
mail = searchUser[0][0][1]['mail'][0]
if uid and gid:
return (uid,gid,fullName,mail)
else:
return ()
@ -362,33 +376,44 @@ class cl_client(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
#%str(userName))
#return False
def getUidAndGidUser(self, userName):
def getUserPasswdInfo(self, userName):
"""получаем uid и gid пользователя из /etc/passwd"""
resPasswd = self.searchPasswdUser(userName)
if resPasswd:
uid = resPasswd.split(":")[2]
gid = resPasswd.split(":")[3]
full_name = resPasswd.split(":")[4]
return (uid, gid, full_name)
mail = ""
return (uid, gid, full_name,mail)
else:
return False
def createHome(self, userName):
"""Создание пользовательской директории с настройками для kde4"""
# Подсоединяемся к серверу
#if not self.getLdapObjBind(server):
#return False
# Создаем объект переменных
self.createClVars()
#uidGid = self.getUserUidGid(userName)
uidGid = self.getUidAndGidUser(userName)
uidGid = False
# Подсоединяемся к серверу
domain = self.clVars.Get("cl_remote_host")
connectLdap = False
if domain:
if not self.getLdapObjBind(domain):
return False
connectLdap = True
if connectLdap:
# uid и gid и mail из Ldap
uidGid = self.getUserLdapInfo(userName,False)
if not uidGid:
# uid и gid и mail из passwd
uidGid = self.getUserPasswdInfo(userName)
if not uidGid:
self.printERROR(_(" Not found user uid and gid"))
return False
uid = int(uidGid[0])
gid = int(uidGid[1])
fullName = uidGid[2]
mail = uidGid[3]
# Создаем пользовательскую директорию
homeDir = os.path.join("/home",userName)
self.clVars.Set('cl_root_path',homeDir,True)
@ -400,6 +425,7 @@ class cl_client(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
# Записываем переменную логин
self.clVars.Set('ur_login',userName)
self.clVars.Set('ur_fullname',fullName)
self.clVars.Set('ur_mail',mail)
# Применяем профили для пользователя
if not self.applyProfilesFromUser():
self.printERROR(_(" Not apply user profile"))

@ -27,6 +27,9 @@
# списка значений переменных)
class Data:
#базовый суффикс LDAP
#Vl soft_ldap_base
ld_base_dn = {}
#DN всех сервисов
#V soft_ldap_sevices_dn
@ -61,6 +64,9 @@ class Data:
#V soft_ldap_user_full_name
ur_fullname = {'mode':"w"}
# Почтовый адрес пользователя
ur_mail = {'mode':"w"}
#Разрешение X по вертикали
hr_x11_height = {'mode':"w"}

Loading…
Cancel
Save