develop
asamoukin 16 years ago
parent d91c5e4aff
commit 745494802a

@ -5,4 +5,5 @@ uid: #-soft_ldap_user_login-#
cn: #-soft_ldap_user_full_name-#
sn: #-soft_ldap_user_full_name-#
mail: #-soft_ldap_user_login-#@#-net_host-#.#-sys_domain-#
initials: Yes
userPassword: #-soft_ldap_user_pw_hash-#

@ -29,6 +29,7 @@
{ldap_uids, [{"mail", "%u@#-net_host-#.#-sys_domain-#"}]}.
{ldap_base, "#-soft_ldap_admin_jabber-#"}.
{ldap_rootdn, "#-soft_ldap_admin_jabber-#"}.
{ldap_filter, "(initials=Yes)"}.
{ldap_password, "#-soft_ldap_admin_jabberpw-#"}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.

@ -0,0 +1,135 @@
# Calculate format=ldap\
chmod=0640\
chown=root:ldap\
append=replace
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/misc.schema
#?soft_samba_setup==yes||soft_ldap_setup_name==samba#
include /etc/openldap/schema/samba.schema
#soft_samba_setup#
#?soft_mail_setup==yes||soft_ldap_setup_name==mail#
include /etc/openldap/schema/mail.schema
#soft_mail_setup#
schemacheck on
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.arg
# Уровень отладочных сообщений
loglevel 0
allow bind_v2
modulepath /usr/lib/openldap/modules
# Доступ к аттрибуту userPassword
access to attrs=userPassword
by self write
by dn="#-soft_ldap_admin-#" write
#?soft_samba_setup==yes||soft_ldap_setup_name==samba#
by dn="#-soft_ldap_admin_samba-#" write
#soft_samba_setup#
#?soft_unix_setup==yes||soft_ldap_setup_name==unix#
by dn="#-soft_ldap_admin_unix-#" write
#soft_unix_setup#
#?soft_mail_setup==yes||soft_ldap_setup_name==mail#
by dn="#-soft_ldap_admin_mail-#" read
#soft_mail_setup#
#?soft_jabber_setup==yes||soft_ldap_setup_name==jabber#
by dn="#-soft_ldap_admin_jabber-#" read
#soft_jabber_setup#
by * auth
# Доступ к аттрибутам Samba
#?soft_samba_setup==yes||soft_ldap_setup_name==samba#
access to attrs=sambaLMPassword,sambaNTPassword
by dn="#-soft_ldap_admin-#" write
by dn="#-soft_ldap_admin_samba-#" write
by * none
#soft_samba_setup#
# Доступ к пользователю только для просмотра
access to dn.base="#-soft_ldap_bind-#"
by dn="#-soft_ldap_admin-#" write
by dn="#-soft_ldap_bind-#" read
by * none
# Доступ к администратору сервера LDAP
access to dn.base="#-soft_ldap_admin-#"
by dn="#-soft_ldap_admin-#" write
by * none
# Доступ к ветке Samba
#?soft_samba_setup==yes||soft_ldap_setup_name==samba#
access to dn.regex=".*#-soft_ldap_admin_samba-#$"
by dn="#-soft_ldap_admin-#" write
by dn="#-soft_ldap_admin_samba-#" write
by dn="#-soft_ldap_admin_unix-#" write
by dn="#-soft_ldap_bind-#" read
by * none
#soft_samba_setup#
# Доступ к ветке Unix
#?soft_unix_setup==yes||soft_ldap_setup_name==unix#
access to dn.regex=".*#-soft_ldap_admin_unix-#$"
by dn="#-soft_ldap_admin-#" write
by dn="#-soft_ldap_admin_samba-#" write
by dn="#-soft_ldap_admin_unix-#" write
by dn="#-soft_ldap_bind-#" read
by * none
#soft_unix_setup#
# Доступ к ветке Mail
#?soft_mail_setup==yes||soft_ldap_setup_name==mail#
access to dn.regex=".*#-soft_ldap_admin_mail-#$"
by dn="#-soft_ldap_admin-#" write
by dn="#-soft_ldap_admin_mail-#" read
by * none
#soft_mail_setup#
# Доступ к ветке Jabber
#?soft_jabber_setup==yes||soft_ldap_setup_name==jabber#
access to dn.regex=".*#-soft_ldap_admin_jabber-#$"
by dn="#-soft_ldap_admin-#" write
by dn="#-soft_ldap_admin_jabber-#" read
by * none
#soft_jabber_setup#
# Доступ к остальным веткам сервисов
access to dn.regex=".*ou=([^,]+),#-soft_ldap_sevices_dn-#$"
by dn="#-soft_ldap_admin-#" write
by dn.regex="ou=$1,#-soft_ldap_sevices_dn-#" write
by * none
# Закрываем доступ к веткам
access to dn.regex=".*,#-soft_ldap_sevices_dn-#"
by dn="#-soft_ldap_admin-#" write
by * none
# Доступ ко всем аттрибутам
access to *
by dn="#-soft_ldap_admin-#" write
by self write
by * read
# Доступ по умолчанию только для чтения
defaultaccess read
# Тип базы данных
database ldbm
suffix "#-soft_ldap_base-#"
checkpoint 1024 5
cachesize 10000
directory /var/lib/openldap-data
index objectClass eq
index cn pres,sub,eq
index sn pres,sub,eq
index uid pres,sub,eq
index uidNumber eq
index gidNumber eq
index default sub

@ -237,7 +237,6 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
# apache и jabber
service.remove('backup')
service.remove('apache')
service.remove('jabber')
return service
def applyProfilesFromService(self, service):
@ -1586,8 +1585,8 @@ class servUnix(shareLdap):
textLine = self.execProg("mv %s %s" %(homeDirOld, homeDirNew))
if not (textLine == None):
self.printERROR(_("Can not move home directory") + " ...")
modAttrs = ((ldap.MOD_REPLACE, 'homeDirectory',
homeDirOld),)
modAttrs = [(ldap.MOD_REPLACE, 'homeDirectory',
homeDirOld)]
self.modAttrsDN(DN, modAttrs)
return False
else:
@ -1822,11 +1821,6 @@ class servUnix(shareLdap):
_("press Y") +", "+ _("if not n")
if not self.dialogYesNo(messDialog):
return True
# Проверим запущен ли ldap
if not self.getRunService("ldap"):
# Запускаем LDAP сервер
if not self.runLdapServer():
return False
# Имя устанавливаемого сервиса
self.clVars.Set("soft_ldap_setup_name","unix")
self.clVars.Write("soft_unix_setup","no")
@ -1836,8 +1830,14 @@ class servUnix(shareLdap):
# файлов профилей
if not self.applyProfilesFromService('unix'):
return False
# Рестартуем LDAP
self.restartLdapServer()
# Проверим запущен ли ldap
if not self.getRunService("ldap"):
# Запускаем LDAP сервер
if not self.runLdapServer():
return False
else:
if not self.restartLdapServer():
return False
#Cоединение с Ldap (администратор)
shareLdap.getLdapObjInFile(self)
# Удаляем предыдущую ветку сервиса Unix
@ -2395,7 +2395,7 @@ class servMail(shareLdap):
self.printSUCCESS(_("Locked Mail user %s")% str(userName)+\
" ...")
if options.has_key('u'):
self.printSUCCESS(_("Unlocked Mail user %s")% str(userName)+
self.printSUCCESS(_("Unlocked Mail user %s")% str(userName)+\
" ...")
if not options:
self.printSUCCESS(_("Changed Mail user password") + " ...")
@ -2661,6 +2661,18 @@ class servMail(shareLdap):
# Имя устанавливаемого сервиса
self.clVars.Set("soft_ldap_setup_name","mail")
self.clVars.Write("soft_mail_setup","no")
# Cоздаем объект профиль устанавливая директорию samba для
# файлов профилей
if not self.applyProfilesFromService('mail'):
return False
# Проверим запущен ли ldap
if not self.getRunService("ldap"):
# Запускаем LDAP сервер
if not self.runLdapServer():
return False
else:
if not self.restartLdapServer():
return False
# Находим в LDAP Mail сервис
resSearch = self.searchService()
ret = True
@ -2682,16 +2694,6 @@ class servMail(shareLdap):
if self.ldapObj.getError():
print _("LDAP Error") + ": " + self.ldapObj.getError().strip()
return False
# Cоздаем объект профиль устанавливая директорию samba для
# файлов профилей
if not self.applyProfilesFromService('mail'):
return False
textLine = self.execProg("/etc/init.d/slapd restart")
if "ok" in textLine:
self.printOK("LDAP" + " " + _("restart")+ " ...")
else:
self.printNotOK("LDAP" + " " + _("restart")+ " ...")
return False
# Записываем данные администратора сервиса Mail
ldapParser = iniLdapParser()
ldapParser.setVar("mail",
@ -2751,20 +2753,14 @@ class servJabber(shareLdap):
# создаем объект сервиса Unix
self.servUnixObj = servUnix()
def searchGroupName(self, groupName):
def searchGroupToName(self, groupName):
"""Находит группу сервиса Jabber по её имени"""
resSearch = self.searchLdapDN(groupName, self.relGroupsDN, "cn")
return resSearch
def searchGroupDesc(self, descr):
"""Находит группу сервиса Jabber по её description"""
resSearch = self.searchLdapDN(descr, self.relGroupsDN,
"departmentNumber")
return resSearch
def searchUserToJabberId(self, mail):
def searchUserToId(self, jabberId):
"""Находит пользователя по Jabber ID в сервисе Jabber"""
resSearch = self.searchLdapDN(mail, self.relUsersDN, "mail")
resSearch = self.searchLdapDN(jabberId, self.relUsersDN, "mail")
return resSearch
def searchUserToName(self, name):
@ -2772,68 +2768,74 @@ class servJabber(shareLdap):
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)
def searchUsersToGroup(self, descr):
"""Находит пользователей по description"""
resSearch = self.searchLdapDN(descr, self.relUsersDN,
"departmentNumber")
return resSearch
def searchJabberGroup(self, nameOrDesc):
"""Находит группу сервиса Jabber по названию или description"""
resSearch = self.searchGroupName(nameOrDesc)
def searchUserToNameOrId(self, nameOrId):
"""Находит пользователя сервиса Jabber по имени или id"""
resSearch = self.searchUserToName(nameOrId)
if resSearch:
return resSearch
resSearch = self.searchGroupDesc(nameOrDesc)
resSearch = self.searchUserToId(nameOrId)
return resSearch
def setUserGroup(self, userName, groupName):
def setUserGroup(self, userName, groupName, userS=False, groupS=False):
"""Устанавливает Jabber группу для пользователя"""
groupSearch = self.searchJabberGroup(groupName)
if groupS:
groupSearch = groupS
else:
groupSearch = self.searchGroupToName(groupName)
if not groupSearch:
self.printERROR(_("Group name is not found in Jabber service") +\
" ...")
return False
userSearch = self.searchJabberUser(userName)
if userS:
userSearch = userS
else:
userSearch = self.searchUserToNameOrId(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]
descr = groupSearch[0][0][1]["cn"][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)
return self.modAttrsDN(userDN, modAttrs)
def addUsersGroupJabber(self, users, groupName):
def addUsersGroupJabber(self, users, groupName, replaceFlag=False):
"""Добавляет пользователей из списка в Jabber группу"""
groupSearch = self.searchJabberGroup(groupName)
groupSearch = self.searchGroupToName(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)
userSearch = self.searchUserToNameOrId(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'):
if not replaceFlag and\
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 flagFalse:
return False
for userName in users:
if not self.setUserGroup(userName, groupName):
flagFalse = True
break
@ -2843,26 +2845,184 @@ class servJabber(shareLdap):
def delUsersGroupJabber(self, users, groupName):
"""Удаляет пользователей из списка в Jabber группе"""
groupSearch = self.searchJabberGroup(groupName)
groupSearch = self.searchGroupToName(groupName)
if not groupSearch:
self.printERROR(_("Group name is not found in Jabber service") +\
" ...")
return False
flagFalse = False
res = True
for userName in users:
userSearch = self.searchJabberUser(userName)
userSearch = self.searchUserToNameOrId(userName)
if userSearch[0][0][1].has_key('departmentNumber'):
modAttrs = ((ldap.MOD_DELETE, 'departmentNumber', None))
if not userSearch[0][0][1]['departmentNumber'][0] == \
groupSearch[0][0][1]['cn'][0]:
self.printERROR(_("User %s is not found in group %s")%\
(str(userName),str(groupName)) + " ...")
res = False
break
else:
self.printERROR(_("User %s is not a member of any group")%\
str(userName) + " ...")
res = False
break
if not res:
return False
for userName in users:
userSearch = self.searchUserToNameOrId(userName)
uid = userSearch[0][0][1]['uid'][0]
modAttrs = [(ldap.MOD_DELETE, 'departmentNumber', None)]
userDN = self.addDN("uid="+uid, self.relUsersDN)
res = self.modAttrsDN(userDN, modAttrs)
if not res:
break
return res
def renameGroup(self, oldName, newName):
"""Изменяет имя группы"""
searchOldGroup = self.searchGroupToName(oldName)
if not searchOldGroup:
self.printERROR(\
_("Old group name %s not found in Jabber service")%str(oldName)+\
" ...")
return False
searchNewGroup = self.searchGroupToName(newName)
if searchNewGroup:
self.printERROR(\
_("New group name %s found in Jabber service")%str(newName)+\
" ...")
return False
groupDN = self.addDN("cn="+oldName, self.relGroupsDN)
searchUsers = self.searchUsersToGroup(oldName)
if searchUsers:
flagError = False
for data in searchUsers:
uid = data[0][1]['uid'][0]
userDN = self.addDN("uid="+uid, self.relUsersDN)
return self.modAttrsDN(groupDN, modAttrs)
modAttrs = [(ldap.MOD_REPLACE,
'departmentNumber',
newName)]
res = self.modAttrsDN(userDN, modAttrs)
if not res:
flagError = True
break
if flagError:
return False
newFirstDn = "cn=" + newName
oldDN = groupDN
res = self.modifyElemDN(oldDN, newFirstDn)
return res
def modUserJabberPasswd(self, userName, options):
"""Устанавливает пароль Jabber пользователя и меняет его опции"""
resSearch = self.searchUserToNameOrId(userName)
if not resSearch:
self.printERROR(
_("User %s is not found in Jabber service") % str(userName) +\
" ...")
return False
# Изменяемые аттрибуты пользователя
modAttrs = []
# Включаем пользователя
if options.has_key('u'):
modAttrs += [(ldap.MOD_REPLACE, 'initials', "Yes")]
# Выключаем пользователя
elif options.has_key('l'):
modAttrs += [(ldap.MOD_REPLACE, 'initials', "No")]
if not options:
optPasswd = {"p":""}
userPwd = self.getUserPassword(optPasswd, "p", False)
if userPwd == False:
return False
userPwdHash = userPwd
if resSearch[0][0][1].has_key('userPassword'):
modAttrs.append((ldap.MOD_REPLACE, 'userPassword',
userPwdHash))
else:
modAttrs.append((ldap.MOD_ADD, 'userPassword',
userPwdHash))
if modAttrs:
uid = resSearch[0][0][1]['uid'][0]
DN = self.addDN("uid="+userName, self.relUsersDN)
if not self.modAttrsDN(DN, modAttrs):
return False
if options.has_key('l'):
self.printSUCCESS(_("Locked Jabber user %s")% str(userName)+\
" ...")
if options.has_key('u'):
self.printSUCCESS(_("Unlocked Jabber user %s")%\
str(userName)+ " ...")
if not options:
self.printSUCCESS(_("Changed Jabber user password") + " ...")
return True
return False
def modUserJabberServer(self, userName, options):
"""Модифицирует настройки пользователя Jabber в LDAP"""
res = self.searchUserToNameOrId(userName)
if not res:
self.printERROR(
_("User %s is not found in Jabber service")%\
str(userName) + " ...")
return False
# Изменяет группу в которую входит пользователь
if options.has_key('g'):
userGroup = options['g']
if self.setUserGroup(userName, userGroup, res):
self.printSUCCESS(_("Replaced user group") + " ...")
else:
self.printERROR(_("Not replaced user group") + " ...")
return False
# Изменяемые аттрибуты пользователя
modAttrs = []
# Включаем пользователя
if options.has_key('U'):
modAttrs += [(ldap.MOD_REPLACE, 'initials', "Yes")]
# Выключаем пользователя
elif options.has_key('L'):
modAttrs += [(ldap.MOD_REPLACE, 'initials', "No")]
# Изменяем коментарий к пользователю
if options.has_key('c'):
comment = options['c']
modAttrs += [(ldap.MOD_REPLACE, 'sn', comment),
(ldap.MOD_REPLACE, 'cn', comment)]
# Изменяем пароль пользователя
userPwd = self.getUserPassword(options, "p", "P")
if userPwd == False:
return False
if userPwd:
userPwdHash = userPwd
if res[0][0][1].has_key('userPassword'):
modAttrs.append((ldap.MOD_REPLACE, 'userPassword',
userPwdHash))
else:
modAttrs.append((ldap.MOD_ADD, 'userPassword',
userPwdHash))
if modAttrs:
uid = res[0][0][1]['uid'][0]
DN = self.addDN("uid="+uid, self.relUsersDN)
if not self.modAttrsDN(DN, modAttrs):
return False
if options.has_key('c'):
self.printSUCCESS(_("Modified comment (full name)") + " ...")
if options.has_key('L'):
self.printSUCCESS(_("Locked Jabber user %s")%str(userName) +
" ...")
if options.has_key('U'):
self.printSUCCESS(_("Unlocked Jabber user %s")%str(userName) +
" ...")
if options.has_key('P') or options.has_key('p'):
self.printSUCCESS(_("Modified Jabber user password") + " ...")
return True
def modGroupJabberServer(self, groupName, options):
"""Модифицирует настройки группы пользователей Jabber"""
searchGroup = self.searchJabberGroup(groupName)
searchGroup = self.searchGroupToName(groupName)
if not searchGroup:
self.printERROR(_("group name not found in Jabber service") +\
" ...")
self.printERROR(_("Group name %s is not found in Jabber service")\
%str(groupName) + " ...")
return False
# Добавляем список пользователей в группу
if options.has_key('a'):
@ -2888,87 +3048,95 @@ class servJabber(shareLdap):
self.printERROR(_("Can not delete list users from group") +\
" " + str(groupName) + " ...")
return False
# Изменяем коментарий к группе
if options.has_key('c'):
gecos = options['c']
modAttrs = [(ldap.MOD_REPLACE, 'description', gecos)]
groupDN = self.addDN("cn="+groupName, self.relGroupsDN)
if self.modAttrsDN(groupDN, modAttrs):
self.printSUCCESS(_("Modified group comment") + " ...")
else:
self.printERROR(_("Can not modify comment 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:
oldGroupName = searchGroup[0][0][1]["cn"][0]
if self.renameGroup(oldGroupName, newGroupName):
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") +\
" ...")
self.printERROR(_("Can not rename group") +\
" " + str(groupName) + " ...")
return False
return True
def delUserJabberServer(self, userName, options):
"""Удаляем Jabber пользователя"""
# Ищем Jabber пользователя
resSearch = self.searchUserToNameOrId(userName)
if not resSearch:
self.printERROR (_("ERROR") + ": " +\
_("User %s is not found in Jabber service") % str(userName) +\
" ...")
return False
uid = resSearch[0][0][1]['uid'][0]
# Удаляем пользователя
delDN = self.addDN("uid=" + uid, self.relUsersDN)
if not self.delDN(delDN):
self.printERROR(_("Mail user %s is not deleted")%userName +\
" ...")
return False
self.printSUCCESS(_("Mail user %s is deleted")%userName +\
" ...")
return True
def delGroupJabberServer(self, groupName, options):
"""Удаляет группу пользователей Jabber"""
res = self.searchGroupToName(groupName)
if not res:
self.printERROR(
_("Group %s is not found in Jabber service")%groupName +\
" ...")
return False
users = []
flagError = False
searchUsers = self.searchUsersToGroup(groupName)
if searchUsers:
for data in searchUsers:
users.append(data[0][1]['uid'][0])
if not self.delUsersGroupJabber(users, groupName):
flagError = True
if not flagError:
delDN = self.addDN("cn="+groupName, self.relGroupsDN)
res = self.delDN(delDN)
if not res:
flagError = True
if flagError:
self.printERROR(_("Can not delete Jabber group") +\
" " + groupName + " ...")
return False
else:
self.printSUCCESS( _("Jabber group %s is deleted")%groupName +\
" ...")
return True
@adminConnectLdap
def addGroupJabberServer(self, groupName, options):
"""Добавляет группу пользователей Jabber"""
# Если группа существует выходим без ошибки
if self.searchGroupName(groupName):
if self.searchGroupToName(groupName):
self.printERROR(\
_("group name %s is found in Jabber service") %\
str(groupName) + " ...")
return False
self.clVars.Set("soft_ldap_group_name",groupName)
# Коментарий к группе
gecos = self.servUnixObj.groupGecos
# Комментарий к группе
groupGecos = self.servUnixObj.groupGecos
if options.has_key('c'):
gecos = options['c']
self.clVars.Set("soft_ldap_group_desc",gecos)
groupGecos = options['c']
self.clVars.Set("soft_ldap_group_desc",groupGecos)
ldifFile = self.ldifFileGroup
groupLdif = self.createLdif(ldifFile)
if not groupLdif:
@ -2990,10 +3158,9 @@ class servJabber(shareLdap):
jabberId = "%s@%s.%s" %(userName,
self.clVars.Get("net_host"),
self.clVars.Get("sys_domain"))
if self.searchUserToJabberId(jabberId):
if self.searchUserToId(jabberId):
self.printERROR(_("User exists in Jabber service"))
return False
# Пароль пользователя Jabber
userPwd = self.getUserPassword(options, "p", "P")
if userPwd == False:
@ -3005,11 +3172,9 @@ class servJabber(shareLdap):
self.clVars.Set("soft_ldap_user_login", userName)
#Полное имя пользователя
fullNameUser = self.servUnixObj.fullNameUser
if options.has_key('c'):
fullNameUser = options['c']
self.clVars.Set("soft_ldap_user_full_name",fullNameUser)
ldifFile = self.ldifFileUser
userLdif = self.createLdif(ldifFile)
if not self.ldapObj.getError():
@ -3020,7 +3185,6 @@ class servJabber(shareLdap):
if self.ldapObj.getError():
print _("LDAP Error") + ": " + self.ldapObj.getError().strip()
return False
self.printSUCCESS(_("Added user in Jabber service") + " ...")
return True
@ -3072,12 +3236,24 @@ class servJabber(shareLdap):
# останавливаем сервис Jabber
if not self.stopServices(["jabber"]):
return False
# Подключаемся к LDAP cерверу
if not shareLdap.getLdapObjInFile(self):
return False
# Имя устанавливаемого сервиса
self.clVars.Set("soft_ldap_setup_name","jabber")
self.clVars.Write("soft_jabber_setup","no")
# Cоздаем объект профиль устанавливая директорию jabber для
# файлов профилей
if not self.applyProfilesFromService('jabber'):
return False
# Проверим запущен ли ldap
if not self.getRunService("ldap"):
# Запускаем LDAP сервер
if not self.runLdapServer():
return False
else:
if not self.restartLdapServer():
return False
# Подключаемся к LDAP cерверу
if not shareLdap.getLdapObjInFile(self):
return False
# Находим в LDAP Jabber сервис
resSearch = self.searchService()
ret = True
@ -3099,10 +3275,6 @@ class servJabber(shareLdap):
if self.ldapObj.getError():
print _("LDAP Error") + ": " + self.ldapObj.getError().strip()
return False
# Cоздаем объект профиль устанавливая директорию jabber для
# файлов профилей
if not self.applyProfilesFromService('jabber'):
return False
# Администратор сервиса
adminName = "admin"
adminFullName = "%s@%s.%s" %(adminName,
@ -3363,6 +3535,14 @@ class servSamba(shareLdap):
# файлов профилей
if not self.applyProfilesFromService('samba'):
return False
# Проверим запущен ли ldap
if not self.getRunService("ldap"):
# Запускаем LDAP сервер
if not self.runLdapServer():
return False
else:
if not self.restartLdapServer():
return False
# Записываем данные администратора сервиса Samba
ldapParser = iniLdapParser()
ldapParser.setVar("samba",
@ -3577,6 +3757,10 @@ class servLdap(shareLdap):
serv = "mail"
servicePaths.append(os.path.join(profilePath,serv))
servInstalled.append(serv)
if self.clVars.Get("soft_jabber_setup") == "yes":
serv = "jabber"
servicePaths.append(os.path.join(profilePath,serv))
servInstalled.append(serv)
return (servicePaths, servInstalled)
@adminConnectLdap
@ -3707,7 +3891,7 @@ class servLdap(shareLdap):
for service in servInstalled:
if service == "unix" or service == "ldap":
continue
if service == "mail":
elif service == "mail":
if not self.startDaemons('mail',['postfix', 'dovecot']):
flagError = True
break
@ -3716,6 +3900,10 @@ class servLdap(shareLdap):
self.setDaemonAutostart("dovecot")):
flagError = True
break
elif service == "jabber":
if not self.startDaemons('jabber',['ejabberd']):
flagError = True
break
else:
if not self.startDaemons(service,[service]):
flagError = True
@ -4362,6 +4550,13 @@ class cl_ldap(shareLdap):
'helpChapter':_("Mail service options"),
'help':_("new value of the COMMENT field")
},
{'progAccess':(5,),
'shortOption':"c",
'longOption':"comment",
'optVal':_("COMMENT"),
'helpChapter':_("Jabber service options"),
'help':_("new value of the COMMENT field (full name user)")
},
{'progAccess':(5,),
'shortOption':"e",
'longOption':"alt-emails",
@ -4383,6 +4578,13 @@ class cl_ldap(shareLdap):
'helpChapter':_("Unix service options"),
'help':_("force use GROUP as new primary group")
},
{'progAccess':(5,),
'shortOption':"g",
'longOption':"group",
'optVal':_("GROUP"),
'helpChapter':_("Jabber service options"),
'help':_("force use GROUP as new Jabber group")
},
{'progAccess':(5,),
'shortOption':"G",
'longOption':"groups",
@ -4532,7 +4734,7 @@ class cl_ldap(shareLdap):
'help':pcs(" mail", self.column_width,
"mail " + servName, self.consolewidth-self.column_width)
},
{'progAccess':(0,3,6,),
{'progAccess':(0,1,2,3,4,5,6,7,),
'helpChapter':_("Services"),
'help':pcs(" jabber", self.column_width,
"jabber " + servName, self.consolewidth-self.column_width)
@ -4867,8 +5069,9 @@ class tsOpt(cl_base.opt):
else:
self.handlerErrOpt()
# В случае остсутствия опций командной строки
if notOptError and not self.opt:
if notOptError and not self.opt and self.params.has_key('service'):
self.printErrorNotOpt()
self.flagHelp = True
def printErrorNotOpt(self):
"""Сообщение в случае отсутствия опций"""

@ -44,6 +44,12 @@ if __name__ == "__main__":
if obj.delGroupMailServer(optObj.params['group'],
optObj.opt):
flagError = False
elif optObj.params['service'] == "jabber":
obj = cl_ldap.servJabber()
# Добавляем группу
if obj.delGroupJabberServer(optObj.params['group'],
optObj.opt):
flagError = False
if flagError:
sys.exit(1)
else:

@ -43,6 +43,12 @@ if __name__ == "__main__":
if not obj.modGroupMailServer(optObj.params['group'],
optObj.opt):
flagError = True
elif optObj.params['service'] == "jabber":
obj = cl_ldap.servJabber()
# Добавляем группу
if not obj.modGroupJabberServer(optObj.params['group'],
optObj.opt):
flagError = True
if flagError:
sys.exit(1)
else:

@ -47,6 +47,11 @@ if __name__ == "__main__":
# Добавляем Mail пользователя
if obj.modUserMailPasswd(optObj.params['user'], optObj.opt):
flagError = False
elif optObj.params['service'] == "jabber":
obj = cl_ldap.servJabber()
# Добавляем Mail пользователя
if obj.modUserJabberPasswd(optObj.params['user'], optObj.opt):
flagError = False
if flagError:
sys.exit(1)
else:

@ -47,8 +47,12 @@ if __name__ == "__main__":
# Удаляем пользователя сервиса Mail
if obj.delUserMailServer(optObj.params['user'], optObj.opt):
flagError = False
elif optObj.params['service'] == "jabber":
obj = cl_ldap.servJabber()
# Удаляем пользователя сервиса Mail
if obj.delUserJabberServer(optObj.params['user'], optObj.opt):
flagError = False
if flagError:
sys.exit(1)
else:
sys.exit(0)

@ -48,6 +48,11 @@ if __name__ == "__main__":
# Добавляем Mail пользователя
if obj.modUserMailServer(optObj.params['user'], optObj.opt):
flagError = False
elif optObj.params['service'] == "jabber":
obj = cl_ldap.servJabber()
# Добавляем Mail пользователя
if obj.modUserJabberServer(optObj.params['user'], optObj.opt):
flagError = False
if flagError:
sys.exit(1)
else:

Loading…
Cancel
Save