@ -1500,7 +1500,7 @@ class servUnix(shareLdap):
self . relComputersDN = self . servSambaObj . relComputersDN
def getLdapObjInFile ( self ) :
""" Cо е дине ние с LDAP администратором Samba сервиса"""
""" Cо е дине ние с LDAP администратором Unix сервиса"""
return shareLdap . getLdapObjInFile ( self , " unix " )
def createHomeDir ( self , userName , homeDir , skelDir ) :
@ -2026,6 +2026,46 @@ class servUnix(shareLdap):
self . printSUCCESS ( _ ( " Added user in Unix service " ) + " ... " )
return True
def setUserJabberID ( self , userName , jabberID ) :
""" Устанавливает для пользователя jabberID """
searchUser = self . searchUnixUser ( userName )
if not searchUser :
return True
modAttrs = [ ]
if searchUser [ 0 ] [ 0 ] [ 1 ] . has_key ( ' registeredAddress ' ) :
modAttrs . append ( ( ldap . MOD_REPLACE , ' registeredAddress ' , jabberID ) )
else :
modAttrs . append ( ( ldap . MOD_ADD , ' registeredAddress ' , jabberID ) )
userDN = self . addDN ( ' uid= ' + userName , self . relUsersDN )
if not self . modAttrsDN ( userDN , modAttrs ) :
self . printERROR ( _ ( " Can not modify registeredAddress attribute in \
Unix service " ))
return False
return True
def getUserJabberID ( self , userName ) :
""" Выдаем jabberID """
searchUser = self . searchUnixUser ( userName )
if not searchUser :
self . printERROR ( _ ( " User %s not found in Unix service " ) \
% str ( userName ) )
return False
if searchUser [ 0 ] [ 0 ] [ 1 ] . has_key ( ' registeredAddress ' ) :
return searchUser [ 0 ] [ 0 ] [ 1 ] [ ' registeredAddress ' ] [ 0 ]
else :
return " "
def deleteUserJabberID ( self , userName ) :
""" Удаляет jabberID пользователя """
if self . getUserJabberID ( userName ) :
modAttrs = [ ( ldap . MOD_DELETE , ' registeredAddress ' , None ) ]
userDN = self . addDN ( ' uid= ' + userName , self . relUsersDN )
if not self . modAttrsDN ( userDN , modAttrs ) :
self . printERROR ( _ ( " Can not delete registeredAddress attribute \
in Unix service " ))
return False
return True
def setUserMail ( self , userName , mail ) :
""" Устанавливает для пользователя основной почтовый адрес """
searchUser = self . searchUnixUser ( userName )
@ -2057,6 +2097,7 @@ class servUnix(shareLdap):
return " "
def deleteUserMail ( self , userName ) :
""" Удаляет почтовый адрес пользователя """
if self . getUserMail ( userName ) :
modAttrs = [ ( ldap . MOD_DELETE , ' mail ' , None ) ]
userDN = self . addDN ( ' uid= ' + userName , self . relUsersDN )
@ -4126,6 +4167,12 @@ class servJabber(shareLdap):
" departmentNumber " )
return resSearch
def searchAllUsers ( self ) :
""" Находит у всех пользователей uid и JabberID """
resSearch = self . searchLdapDN ( " * " , self . relUsersDN ,
" uid " , [ " uid " , " mail " ] )
return resSearch
def searchUsersToHostName ( self , hostName ) :
""" Находит всех пользователей с данным именем хоста """
resSearch = self . searchLdapDN ( " *@ %s " % hostName , self . relUsersDN ,
@ -4362,10 +4409,37 @@ in Jabber service"))
return False
res = self . searchUserToNameOrId ( userName )
if not res :
self . printERROR (
_ ( " User %s is not found in Jabber service " ) % \
str ( userName ) + " ... " )
self . printERROR ( _ ( " User %s is not found in Jabber service " ) % \
str ( userName ) + " ... " )
return False
# Изменяемые аттрибуты пользователя
modAttrs = [ ]
# Изменяем Jabber ID
if options . has_key ( ' j ' ) :
# Изменяем JID
jabberId = options [ ' j ' ]
if not " @ " in jabberId :
jabberId = " %s @ %s " % ( jabberId , self . clVars . Get ( " sr_jabber_host " ) )
else :
if len ( jabberId . split ( " @ " ) ) != 2 :
self . printERROR ( _ ( " JID %s incorrect " ) % jabberId + " ... " )
return False
searchUser = self . searchUserToId ( jabberId )
if searchUser :
foundUserName = searchUser [ 0 ] [ 0 ] [ 1 ] [ ' uid ' ] [ 0 ]
self . printERROR ( _ ( " User %s " ) % str ( foundUserName ) + " " + \
_ ( " has a JID %s " ) % jabberId + " ... " )
return False
# добавляем jabberID в Unix
if self . isServiceSetup ( " unix " , False ) :
if not self . servUnixObj . setUserJabberID ( userName , jabberId ) :
self . printERROR ( _ ( " Failed set jabberID for user %s \
in Unix service . . . " ) %s tr(jabberId))
return False
if res [ 0 ] [ 0 ] [ 1 ] . has_key ( ' mail ' ) :
modAttrs . append ( ( ldap . MOD_REPLACE , ' mail ' , jabberId ) )
else :
modAttrs . append ( ( ldap . MOD_ADD , ' mail ' , jabberId ) )
# Изменяет группу в которую входит пользователь
if options . has_key ( ' g ' ) :
userGroup = options [ ' g ' ]
@ -4381,8 +4455,6 @@ in Jabber service"))
self . printERROR ( _ ( " Can not add jpeg photo for user " ) + " " + \
str ( userName ) )
return False
# Изменяемые аттрибуты пользователя
modAttrs = [ ]
# Включаем пользователя
if options . has_key ( ' U ' ) :
modAttrs + = [ ( ldap . MOD_REPLACE , ' initials ' , " Yes " ) ]
@ -4421,6 +4493,8 @@ in Jabber service"))
" ... " )
if options . has_key ( ' P ' ) or options . has_key ( ' p ' ) :
self . printSUCCESS ( _ ( " Modified Jabber user password " ) + " ... " )
if options . has_key ( ' j ' ) :
self . printSUCCESS ( _ ( " Modified JID " ) + " ... " )
if options . has_key ( ' i ' ) :
self . printSUCCESS ( _ ( " Set image %s for Jabber user " ) % \
str ( options [ ' i ' ] ) + " " + str ( userName ) + " ... " )
@ -4496,6 +4570,12 @@ in Jabber service"))
" ... " )
return False
uid = resSearch [ 0 ] [ 0 ] [ 1 ] [ ' uid ' ] [ 0 ]
# Удаляем jabberID из Unix сервиса
# добавляем jabberID в Unix
if self . isServiceSetup ( " unix " , False ) and \
self . servUnixObj . searchUnixUser ( uid ) :
if not self . servUnixObj . deleteUserJabberID ( uid ) :
return False
# Удаляем пользователя
delDN = self . addDN ( " uid= " + uid , self . relUsersDN )
if not self . delDN ( delDN ) :
@ -4572,6 +4652,25 @@ in Jabber service"))
self . printSUCCESS ( _ ( " Added group in Jabber service " ) + " ... " )
return True
@adminConnectLdap
def updateJabberIdInUnix ( self ) :
""" Перезаписывает на основании текущих jabberID в Unix сервисе """
if not self . isServiceSetup ( " unix " , False ) :
return True
searchUsers = self . searchAllUsers ( )
flagError = False
for fieldUser in searchUsers :
if fieldUser [ 0 ] [ 1 ] . has_key ( " mail " ) :
userName = fieldUser [ 0 ] [ 1 ] [ ' uid ' ] [ 0 ]
jabberId = fieldUser [ 0 ] [ 1 ] [ ' mail ' ] [ 0 ]
if not self . servUnixObj . setUserJabberID ( userName , jabberId ) :
self . printERROR ( _ ( " Failed set jabberID for user %s \
in Unix service . . . " ) %s tr(jabberId))
flagError = True
break
if flagError :
return False
return True
@adminConnectLdap
def addUserJabberServer ( self , userName , options , checkSetup = True ) :
@ -4581,8 +4680,27 @@ in Jabber service"))
return False
#jabber id
jabberId = " %s @ %s " % ( userName , self . clVars . Get ( " sr_jabber_host " ) )
if options . has_key ( ' j ' ) :
# Изменяем JID
jabberId = options [ ' j ' ]
if not " @ " in jabberId :
jabberId = " %s @ %s " % ( jabberId , self . clVars . Get ( " sr_jabber_host " ) )
else :
if len ( jabberId . split ( " @ " ) ) != 2 :
self . printERROR ( _ ( " JID %s incorrect " ) % jabberId + " ... " )
return False
# добавляем jabberID в Unix
if self . isServiceSetup ( " unix " , False ) :
if not self . servUnixObj . setUserJabberID ( userName , jabberId ) :
self . printERROR ( _ ( " Failed set jabberID for user %s \
in Unix service . . . " ) %s tr(jabberId))
return False
self . clVars . Set ( " sr_jabber_user_id " , jabberId )
if self . searchUserToName ( userName ) :
self . printERROR ( _ ( " User %s exists in Jabber service " ) % userName )
return False
if self . searchUserToId ( jabberId ) :
self . printERROR ( _ ( " User exists in Jabber service " ) )
self . printERROR ( _ ( " JID %s exists in Jabber service " ) % jabberId )
return False
# Пароль пользователя Jabber
userPwd = self . getUserPassword ( options , " p " , " P " )
@ -4600,9 +4718,7 @@ in Jabber service"))
# Проверяем установку сервиса не печатая ошибку в случае
# если сервис не установлен
if self . isServiceSetup ( " unix " , False ) :
# Cо зда е м обеъкт сервиса Unix
servUnixObj = servUnix ( )
resUnix = servUnixObj . searchUnixUser ( userName )
resUnix = self . servUnixObj . searchUnixUser ( userName )
# Берем комментарий для пользователя из Unix
if resUnix and resUnix [ 0 ] [ 0 ] [ 1 ] . has_key ( ' cn ' ) :
fullNameUser = resUnix [ 0 ] [ 0 ] [ 1 ] [ ' cn ' ] [ 0 ]
@ -4617,7 +4733,7 @@ in Jabber service"))
if self . ldapObj . getError ( ) :
print _ ( " LDAP Error " ) + " : " + self . ldapObj . getError ( ) . strip ( )
return False
# загружаем картинку
# загружаем картинку
if options . has_key ( ' i ' ) :
photoFile = options [ ' i ' ]
if not self . setJpegPhotoUser ( userName , photoFile ) :
@ -5802,7 +5918,7 @@ outdated. If the backup is obsolete, use cl-backup."))
self . printERROR ( _ ( " variable ' ld_repl_id ' empty " ) + " ... " )
return False
if printReplServ and self . clVars . Get ( " ld_repl_set " ) == " on " :
# Вывод списка реплицируемых с ерверов
# Вывод списка реплицируемых <EFBFBD> ерверов
unixReplServ = self . clVars . Get ( " ld_repl_unix_servers " )
sambaReplServ = self . clVars . Get ( " ld_repl_samba_servers " )
mailReplServ = self . clVars . Get ( " ld_repl_mail_servers " )
@ -5997,13 +6113,16 @@ it was added by the calculate-server")
return False
self . printOK ( _ ( " Restarting service %s " ) % " LDAP " )
if not flagError and serviceUpdate in [ " all " , " jabber " ] :
# Замена имени хоста для сервиса Jabber
# Замена имени хоста для сервиса Jabber в LDAP
if options . has_key ( " host " ) :
if self . clVars . Get ( " sr_jabber_host " ) != previousJabberHost :
# Установка в LDAP ветке Jabber cе р вис а нового имени хоста
if not self . servJabberObj . setHostName ( newHostName ,
previousJabberHost ) :
return False
# Update jabberID записей в сервисе Unix
if not self . servJabberObj . updateJabberIdInUnix ( ) :
return False
if not flagError and serviceUpdate in [ " all " , " unix " , " samba " , " mail " ] :
# создаем объект репликации
objRepl = servRepl ( )
@ -7336,6 +7455,13 @@ to this group")
' helpChapter ' : _ ( " Mail service options " ) ,
' help ' : _ ( " force use GROUP for the new user Unix service account " )
} ,
{ ' progAccess ' : ( 3 , ) ,
' shortOption ' : " j " ,
' longOption ' : " jid " ,
' optVal ' : " JID " ,
' helpChapter ' : _ ( " Jabber service options " ) ,
' help ' : _ ( " force use JID for the new user Jabber service account " )
} ,
{ ' progAccess ' : ( 3 , ) ,
' shortOption ' : " g " ,
' longOption ' : " gid " ,
@ -7574,6 +7700,13 @@ the password will be changed only for Samba account")
' helpChapter ' : _ ( " Jabber service options " ) ,
' help ' : _ ( " force use GROUP as new Jabber group " )
} ,
{ ' progAccess ' : ( 5 , ) ,
' shortOption ' : " j " ,
' longOption ' : " jid " ,
' optVal ' : " JID " ,
' helpChapter ' : _ ( " Jabber service options " ) ,
' help ' : _ ( " force use JID for the user Jabber service account " )
} ,
{ ' progAccess ' : ( 5 , ) ,
' shortOption ' : " G " ,
' longOption ' : " groups " ,