В команды cl-useradd и cl-usermod для сервиса Jabber добавлен ключ '-j, --jid' позволяющий указать Jabber ID

Изменен алгоритм для update Jabber сервиса, теперь он добавляет каждому пользователю Unix сервиса jabber ID если пользователь с таким же именем найден в Jabber сервисе

git-svn-id: http://svn.calculate.ru/calculate2/calculate-server/trunk@1211 c91db197-33c1-4113-bf15-f8a5c547ca64
develop
asamoukin 15 years ago
parent b5e288a6b9
commit 8219e419c0

@ -4,6 +4,6 @@ objectClass: inetOrgPerson
uid: #-ur_name-#
cn: #-ur_fio-#
sn: #-ur_fio-#
mail: #-ur_name-#@#-sr_jabber_host-#
mail: #-sr_jabber_user_id-#
initials: Yes
userPassword: #-ur_hash-#

@ -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 ...") %str(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 ...") %str(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 ...") %str(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",

@ -139,6 +139,9 @@ class Data:
# имя компьютера с настроенным сервисом Jabber
sr_jabber_host = {}
# jabber id пользователя
sr_jabber_user_id = {'mode':"w"}
# шифрование при получении - ''/ssl
sr_jabber_crypt = {'mode':"w",'value':'ssl'}

Loading…
Cancel
Save