develop
asamoukin 16 years ago
parent 30671ab642
commit d91c5e4aff

@ -2752,15 +2752,208 @@ class servJabber(shareLdap):
self.servUnixObj = servUnix()
def searchGroupName(self, groupName):
"""Находит группу сервиса Unix по её имени"""
"""Находит группу сервиса Jabber по её имени"""
resSearch = self.searchLdapDN(groupName, self.relGroupsDN, "cn")
return resSearch
def searchUserToMail(self, mail):
"""Находит пользователя по почтовому адресу в сервисе Jabber"""
def searchGroupDesc(self, descr):
"""Находит группу сервиса Jabber по её description"""
resSearch = self.searchLdapDN(descr, self.relGroupsDN,
"departmentNumber")
return resSearch
def searchUserToJabberId(self, mail):
"""Находит пользователя по Jabber ID в сервисе Jabber"""
resSearch = self.searchLdapDN(mail, self.relUsersDN, "mail")
return resSearch
def searchUserToName(self, name):
"""Находит пользователя по имени в сервисе Jabber"""
resSearch = self.searchLdapDN(name, self.relUsersDN, "uid")
return resSearch
def searchJabberUser(self, nameOrId):
"""Находит пользователя сервиса Jabber по имени или id"""
resSearch = self.searchUserToName(nameOrId)
if resSearch:
return resSearch
resSearch = self.searchUserToJabberId(nameOrId)
return resSearch
def searchJabberGroup(self, nameOrDesc):
"""Находит группу сервиса Jabber по названию или description"""
resSearch = self.searchGroupName(nameOrDesc)
if resSearch:
return resSearch
resSearch = self.searchGroupDesc(nameOrDesc)
return resSearch
def setUserGroup(self, userName, groupName):
"""Устанавливает Jabber группу для пользователя"""
groupSearch = self.searchJabberGroup(groupName)
if not groupSearch:
self.printERROR(_("Group name is not found in Jabber service") +\
" ...")
return False
userSearch = self.searchJabberUser(userName)
if not userSearch:
self.printERROR(_("User %s is not found in Jabber service")%\
str(userName) + " ...")
return False
modAttrs = []
descr = groupSearch[0][0][1]["description"][0]
uid = userSearch[0][0][1]["uid"][0]
if userSearch[0][0][1].has_key('departmentNumber'):
modAttrs.append((ldap.MOD_REPLACE, 'departmentNumber', descr))
else:
modAttrs.append((ldap.MOD_ADD, 'departmentNumber', descr))
userDN = self.addDN("uid="+uid, self.relUsersDN)
return self.modAttrsDN(groupDN, modAttrs)
def addUsersGroupJabber(self, users, groupName):
"""Добавляет пользователей из списка в Jabber группу"""
groupSearch = self.searchJabberGroup(groupName)
if not groupSearch:
self.printERROR(_("Group name is not found in Jabber service") +\
" ...")
return False
flagFalse = False
for userName in users:
userSearch = self.searchJabberUser(userName)
if not userSearch:
self.printERROR(_("User %s is not found in Jabber service")%\
str(userName) + " ...")
flagFalse = True
break
if userSearch[0][0][1].has_key('departmentNumber'):
self.printERROR(_("User %s is found in group %s")%\
(str(userName),str(groupName)) + " ...")
self.printWARNING(_("Delete user %s in group %s")%\
(str(userName),str(groupName)) + " ...")
flagFalse = True
break
if not self.setUserGroup(userName, groupName):
flagFalse = True
break
if flagFalse:
return False
return True
def delUsersGroupJabber(self, users, groupName):
"""Удаляет пользователей из списка в Jabber группе"""
groupSearch = self.searchJabberGroup(groupName)
if not groupSearch:
self.printERROR(_("Group name is not found in Jabber service") +\
" ...")
return False
flagFalse = False
for userName in users:
userSearch = self.searchJabberUser(userName)
if userSearch[0][0][1].has_key('departmentNumber'):
modAttrs = ((ldap.MOD_DELETE, 'departmentNumber', None))
userDN = self.addDN("uid="+uid, self.relUsersDN)
return self.modAttrsDN(groupDN, modAttrs)
def modGroupJabberServer(self, groupName, options):
"""Модифицирует настройки группы пользователей Jabber"""
searchGroup = self.searchJabberGroup(groupName)
if not searchGroup:
self.printERROR(_("group name not found in Jabber service") +\
" ...")
return False
# Добавляем список пользователей в группу
if options.has_key('a'):
# добавляемые пользователи в группу
users = options['a'].split(',')
res = self.addUsersGroupJabber(users, groupName)
if res:
self.printSUCCESS(_("Appended list users to group") + " " +\
str(groupName) + " ...")
else:
self.printERROR(_("Can not append list users to group") +\
" " + str(groupName) + " ...")
return False
# Удаляем список пользователей из группы
if options.has_key('d'):
# удаляемые пользователи из группы
users = options['d'].split(',')
res = self.delUsersGroupJabber(users, groupName)
if res:
self.printSUCCESS(_("Deleted list users from group") + " " +\
str(groupName) + " ...")
else:
self.printERROR(_("Can not delete list users from group") +\
" " + str(groupName) + " ...")
return False
# Изменяем имя группы
attrDelete = []
attrAppend = []
modGroupName = groupName
if options.has_key('n'):
newGroupName = options['n']
if self.searchMailGroupToName(newGroupName):
self.printERROR(
_("group name %s is found in Mail service")%\
str(newGroupName) + " ...")
return False
# изменяем адрес и альтернативный адрес
altEmails = searchGroup[0][0][1]["mailAlternateAddress"]
for altEmail in altEmails:
splAltEmail = altEmail.split("@")
grName = splAltEmail[0]
if groupName == grName:
altEmailDomen = ""
if len(splAltEmail)==2:
altEmailDomen = splAltEmail[1]
newAltEmail = "%s@%s" %(newGroupName,altEmailDomen)
attrDelete.append(
(ldap.MOD_DELETE, 'mailAlternateAddress',
altEmail))
attrAppend.append(
(ldap.MOD_ADD, 'mailAlternateAddress',
newAltEmail))
break
email = searchGroup[0][0][1]["mail"][0]
splEmail = email.split("@")
emailDomen = ""
if len(splEmail)==2:
emailDomen = splEmail[1]
newEmail = "%s@%s" %(newGroupName,emailDomen)
attrAppend.append((ldap.MOD_REPLACE, 'mail', newEmail))
attrAppend.append((ldap.MOD_REPLACE, 'mailMessageStore',
newGroupName + "/"))
newFirstDn = "cn=" + newGroupName
oldDN = self.addDN("cn=" + groupName, self.relGroupsDN)
res = self.modifyElemDN(oldDN, newFirstDn)
if res:
self.printSUCCESS(_("Group renamed") + " ...")
modGroupName = newGroupName
else:
self.printERROR(_("Can not rename group") + "...")
return False
modAttrs = attrAppend + attrDelete
# Изменяем коментарий к группе
if options.has_key('c'):
gecos = options['c']
modAttrs.append((ldap.MOD_REPLACE, 'description', gecos))
if modAttrs:
groupDN = self.addDN("cn=" + modGroupName, self.relGroupsDN)
res = self.modAttrsDN(groupDN, modAttrs)
if res:
if options.has_key('c'):
self.printSUCCESS(_("Modified group comment") + " ...")
return True
else:
if options.has_key('c'):
self.printSUCCESS(_("Can not modify group comment") +\
" ...")
return False
return True
@adminConnectLdap
def addGroupJabberServer(self, groupName, options):
"""Добавляет группу пользователей Jabber"""
@ -2794,10 +2987,10 @@ class servJabber(shareLdap):
def addUserJabberServer(self, userName, options):
"""Добавляет jabber пользователя"""
#jabber id
mail = "%s@%s.%s" %(userName,
jabberId = "%s@%s.%s" %(userName,
self.clVars.Get("net_host"),
self.clVars.Get("sys_domain"))
if self.searchUserToMail(mail):
if self.searchUserToJabberId(jabberId):
self.printERROR(_("User exists in Jabber service"))
return False

@ -57,12 +57,10 @@ class Data:
}
#имя для базового суффикса LDAP
soft_ldap_root= {'mode':"r",
'type':('param','soft'),
'value':'calculate'}
'type':('param','soft')}
#запись для пользователя root
soft_ldap_admin= {'mode':"r",
'type':('param','soft'),
'value':'calculate'}
'type':('param','soft')}
#имя пользователя root для LDAP
soft_ldap_adminname= {'mode':"r",
'type':('param','soft'),
@ -154,7 +152,7 @@ class Data:
#Имя для всех сервисов
soft_ldap_sevices_dn_name = {'mode':"r",
'type':('param','soft'),
'value':'Services',
'value' : 'Services'
}
#DN всех сервисов
soft_ldap_sevices_dn= {'mode':"r",

Loading…
Cancel
Save