|
|
|
@ -4431,13 +4431,13 @@ class servJabber(shareLdap):
|
|
|
|
|
def searchAllUsers(self):
|
|
|
|
|
"""Находит у всех пользователей uid и JabberID"""
|
|
|
|
|
resSearch = self.searchLdapDN("*", self.relUsersDN,
|
|
|
|
|
"uid",["uid","mail"])
|
|
|
|
|
"uid",["uid", "cn", "mail"])
|
|
|
|
|
return resSearch
|
|
|
|
|
|
|
|
|
|
def searchUsersToHostName(self, hostName):
|
|
|
|
|
"""Находит всех пользователей с данным именем хоста"""
|
|
|
|
|
resSearch = self.searchLdapDN("*@%s" %hostName, self.relUsersDN,
|
|
|
|
|
"mail",["uid","mail"])
|
|
|
|
|
"mail",["uid", "mail"])
|
|
|
|
|
return resSearch
|
|
|
|
|
|
|
|
|
|
def searchUserToNameOrId(self, nameOrId):
|
|
|
|
@ -4656,7 +4656,7 @@ in Jabber service"))
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def modUserJabberServer(self, userName, options):
|
|
|
|
|
def modUserJabberServer(self, userName, options, printSuccess=True):
|
|
|
|
|
"""Модифицирует настройки пользователя Jabber в LDAP"""
|
|
|
|
|
# Проверим установлен ли сервис jabber
|
|
|
|
|
if not self.initialChecks("jabber"):
|
|
|
|
@ -4677,13 +4677,14 @@ in Jabber service"))
|
|
|
|
|
else:
|
|
|
|
|
if len(jabberId.split("@")) != 2:
|
|
|
|
|
self.printERROR(_("JID %s incorrect") %jabberId)
|
|
|
|
|
return False
|
|
|
|
|
return False
|
|
|
|
|
searchUser = self.searchUserToId(jabberId)
|
|
|
|
|
if searchUser:
|
|
|
|
|
foundUserName = searchUser[0][0][1]['uid'][0]
|
|
|
|
|
self.printERROR(_("User %s") %str(foundUserName) + " " +\
|
|
|
|
|
if foundUserName != userName:
|
|
|
|
|
self.printERROR(_("User %s") %str(foundUserName) + " " +\
|
|
|
|
|
_("has a JID %s") %jabberId)
|
|
|
|
|
return False
|
|
|
|
|
return False
|
|
|
|
|
# добавляем jabberID в Unix
|
|
|
|
|
if self.isServiceSetup("unix",False):
|
|
|
|
|
if not self.servUnixObj.setUserJabberID(userName, jabberId):
|
|
|
|
@ -4694,6 +4695,7 @@ in Unix service") %str(jabberId))
|
|
|
|
|
modAttrs.append((ldap.MOD_REPLACE, 'mail', jabberId))
|
|
|
|
|
else:
|
|
|
|
|
modAttrs.append((ldap.MOD_ADD, 'mail', jabberId))
|
|
|
|
|
modAttrs.append((ldap.MOD_REPLACE,'cn',jabberId.partition("@")[0]))
|
|
|
|
|
# Изменяет группу в которую входит пользователь
|
|
|
|
|
if options.has_key('g'):
|
|
|
|
|
userGroup = options['g']
|
|
|
|
@ -4718,8 +4720,7 @@ in Unix service") %str(jabberId))
|
|
|
|
|
# Изменяем комментарий к пользователю
|
|
|
|
|
if options.has_key('c'):
|
|
|
|
|
comment = options['c']
|
|
|
|
|
modAttrs += [(ldap.MOD_REPLACE, 'sn', comment),
|
|
|
|
|
(ldap.MOD_REPLACE, 'cn', comment)]
|
|
|
|
|
modAttrs += [(ldap.MOD_REPLACE, 'sn', comment)]
|
|
|
|
|
# Изменяем пароль пользователя
|
|
|
|
|
userPwd = self.getUserPassword(options, "p", "P")
|
|
|
|
|
if userPwd == False:
|
|
|
|
@ -4737,17 +4738,19 @@ in Unix service") %str(jabberId))
|
|
|
|
|
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"))
|
|
|
|
|
if options.has_key('j'):
|
|
|
|
|
self.printSUCCESS(_("Modified JID"))
|
|
|
|
|
if options.has_key('i'):
|
|
|
|
|
if printSuccess:
|
|
|
|
|
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"))
|
|
|
|
|
if options.has_key('j'):
|
|
|
|
|
self.printSUCCESS(_("Modified JID"))
|
|
|
|
|
if printSuccess and options.has_key('i'):
|
|
|
|
|
self.printSUCCESS(_("Set image %s for Jabber user")%\
|
|
|
|
|
str(options['i']) + " " + str(userName))
|
|
|
|
|
return True
|
|
|
|
@ -4900,17 +4903,29 @@ in Unix service") %str(jabberId))
|
|
|
|
|
%groupName)
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
@adminConnectLdap
|
|
|
|
|
def updateJabberIdInUnix(self):
|
|
|
|
|
"""Перезаписывает на основании текущих jabberID в Unix сервисе"""
|
|
|
|
|
if not self.isServiceSetup("unix",False):
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def upgradeService(self):
|
|
|
|
|
"""Обновляет настройки и базу данных
|
|
|
|
|
|
|
|
|
|
Используется при установке сервиса и его апдейте
|
|
|
|
|
"""
|
|
|
|
|
# Флаг ошибки
|
|
|
|
|
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]
|
|
|
|
|
cn = fieldUser[0][1]['cn'][0]
|
|
|
|
|
if cn != jabberId.partition("@")[0]:
|
|
|
|
|
options = {"j":jabberId}
|
|
|
|
|
# Изменяем аттрибут cn у всех пользователей
|
|
|
|
|
if not self.modUserJabberServer(userName, options, False):
|
|
|
|
|
self.printERROR(_("Failed set jabberID for user %s \
|
|
|
|
|
in Jabber service") %str(jabberId))
|
|
|
|
|
flagError = True
|
|
|
|
|
break
|
|
|
|
|
# Изменяем jabberId у всех пользователей сервиса Unix
|
|
|
|
|
if not self.servUnixObj.setUserJabberID(userName, jabberId):
|
|
|
|
|
self.printERROR(_("Failed set jabberID for user %s \
|
|
|
|
|
in Unix service") %str(jabberId))
|
|
|
|
@ -4920,6 +4935,7 @@ in Unix service") %str(jabberId))
|
|
|
|
|
return False
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@adminConnectLdap
|
|
|
|
|
def addUserJabberServer(self, userName, options, checkSetup=True):
|
|
|
|
|
"""Добавляет jabber пользователя"""
|
|
|
|
@ -5053,12 +5069,29 @@ in Unix service") %str(jabberId))
|
|
|
|
|
# Jabber host
|
|
|
|
|
fullHostName = "%s.%s"%(self.clVars.Get('os_net_hostname'),
|
|
|
|
|
self.clVars.Get('os_net_domain'))
|
|
|
|
|
jabberHosts = fullHostName
|
|
|
|
|
if options.has_key("host"):
|
|
|
|
|
fullHostName = options['host']
|
|
|
|
|
if not "." in fullHostName:
|
|
|
|
|
fullHostName = "%s.%s" %(fullHostName,
|
|
|
|
|
self.clVars.Get('os_net_domain'))
|
|
|
|
|
self.clVars.Set("sr_jabber_host",fullHostName,True)
|
|
|
|
|
# Устанавливаем дополнительные хосты jabber cервиса
|
|
|
|
|
if options.has_key("hosts"):
|
|
|
|
|
hosts = options['hosts'].split(",")
|
|
|
|
|
jabberHostsList = [self.clVars.Get("sr_jabber_host")]
|
|
|
|
|
for host in hosts:
|
|
|
|
|
apHost = host
|
|
|
|
|
if not "." in host:
|
|
|
|
|
apHost = "%s.%s" %(host,
|
|
|
|
|
self.clVars.Get('os_net_domain'))
|
|
|
|
|
jabberHostsList.append(apHost)
|
|
|
|
|
unicHostsList = []
|
|
|
|
|
for host in jabberHostsList:
|
|
|
|
|
if not host in unicHostsList:
|
|
|
|
|
unicHostsList.append(host)
|
|
|
|
|
jabberHosts = ",".join(unicHostsList)
|
|
|
|
|
self.clVars.Set("sr_jabber_hosts",jabberHosts,True)
|
|
|
|
|
|
|
|
|
|
if options.has_key("history"):
|
|
|
|
|
history = options["history"].strip()
|
|
|
|
@ -5135,6 +5168,9 @@ in Unix service") %str(jabberId))
|
|
|
|
|
#запишем переменные для сервера
|
|
|
|
|
jabberHost = self.clVars.Get("sr_jabber_host")
|
|
|
|
|
self.clVars.Write("sr_jabber_host",jabberHost,True,"local")
|
|
|
|
|
self.clVars.Write("sr_jabber_hosts",
|
|
|
|
|
self.clVars.Get("sr_jabber_hosts"),
|
|
|
|
|
True,"local")
|
|
|
|
|
self.clVars.Write("sr_jabber_history",
|
|
|
|
|
self.clVars.Get("sr_jabber_history"),
|
|
|
|
|
True,"local")
|
|
|
|
@ -6766,7 +6802,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>ерверов
|
|
|
|
|
# Вывод списка реплицируемых cерверов
|
|
|
|
|
unixReplServ = self.clVars.Get("ld_repl_unix_servers")
|
|
|
|
|
sambaReplServ = self.clVars.Get("ld_repl_samba_servers")
|
|
|
|
|
mailReplServ = self.clVars.Get("ld_repl_mail_servers")
|
|
|
|
@ -6827,6 +6863,22 @@ outdated. If the backup is obsolete, use cl-backup."))
|
|
|
|
|
if newHostName != previousJabberHost:
|
|
|
|
|
# Устанавливаем перемемнную
|
|
|
|
|
self.clVars.Set("sr_jabber_host",newHostName,True)
|
|
|
|
|
# Устанавливаем дополнительные хосты jabber cервиса
|
|
|
|
|
if options.has_key("hosts"):
|
|
|
|
|
hosts = options['hosts'].split(",")
|
|
|
|
|
jabberHostsList = [self.clVars.Get("sr_jabber_host")]
|
|
|
|
|
for host in hosts:
|
|
|
|
|
apHost = host
|
|
|
|
|
if not "." in host:
|
|
|
|
|
apHost = "%s.%s" %(host,
|
|
|
|
|
self.clVars.Get('os_net_domain'))
|
|
|
|
|
jabberHostsList.append(apHost)
|
|
|
|
|
unicHostsList = []
|
|
|
|
|
for host in jabberHostsList:
|
|
|
|
|
if not host in unicHostsList:
|
|
|
|
|
unicHostsList.append(host)
|
|
|
|
|
jabberHosts = ",".join(unicHostsList)
|
|
|
|
|
self.clVars.Set("sr_jabber_hosts",jabberHosts,True)
|
|
|
|
|
# находим установленные сервисы
|
|
|
|
|
servInstalled = self.getServiceSetup()
|
|
|
|
|
if not servInstalled:
|
|
|
|
@ -6865,7 +6917,7 @@ outdated. If the backup is obsolete, use cl-backup."))
|
|
|
|
|
if service == "ldap":
|
|
|
|
|
continue
|
|
|
|
|
if service == "samba":
|
|
|
|
|
# Получаем от п<EFBFBD>льзователя доверительные сети
|
|
|
|
|
# Получаем от пoльзователя доверительные сети
|
|
|
|
|
# для сервиса Samba
|
|
|
|
|
if options.has_key("a") and\
|
|
|
|
|
not service in noInputAllowNetServices:
|
|
|
|
@ -6973,8 +7025,8 @@ outdated. If the backup is obsolete, use cl-backup."))
|
|
|
|
|
if not self.servJabberObj.setHostName(newHostName,
|
|
|
|
|
previousJabberHost):
|
|
|
|
|
return False
|
|
|
|
|
# Update jabberID записей в сервисе Unix
|
|
|
|
|
if not self.servJabberObj.updateJabberIdInUnix():
|
|
|
|
|
# Update jabberID записей в сервисе Unix и изменение сn записей
|
|
|
|
|
if not self.servJabberObj.upgradeService():
|
|
|
|
|
return False
|
|
|
|
|
if not flagError and serviceUpdate in ["all","unix","samba","mail"]:
|
|
|
|
|
# создаем объект репликации
|
|
|
|
@ -7011,6 +7063,9 @@ outdated. If the backup is obsolete, use cl-backup."))
|
|
|
|
|
self.clVars.Write("sr_jabber_host",
|
|
|
|
|
self.clVars.Get("sr_jabber_host"),
|
|
|
|
|
True,"local")
|
|
|
|
|
self.clVars.Write("sr_jabber_hosts",
|
|
|
|
|
self.clVars.Get("sr_jabber_hosts"),
|
|
|
|
|
True,"local")
|
|
|
|
|
# Переменные для почты
|
|
|
|
|
if "mail" in servInstalled and serviceUpdate in ["all","mail"]:
|
|
|
|
|
self.clVars.Write("sr_mail_type",
|
|
|
|
@ -8217,7 +8272,7 @@ The default group type is 2.")
|
|
|
|
|
'longOption':"delete",
|
|
|
|
|
'optVal':"USERS",
|
|
|
|
|
'helpChapter':_("Common options"),
|
|
|
|
|
'help':_("delete members (comma delimted)")
|
|
|
|
|
'help':_("delete members (comma delimited)")
|
|
|
|
|
},
|
|
|
|
|
{'progAccess':(2,),
|
|
|
|
|
'shortOption':"n",
|
|
|
|
@ -8798,6 +8853,12 @@ the password will be changed only for Samba account")
|
|
|
|
|
'helpChapter':_("Jabber service options"),
|
|
|
|
|
'help':_("jabber host, default - hostname")
|
|
|
|
|
},
|
|
|
|
|
{'progAccess':(6,),
|
|
|
|
|
'optVal':"HOSTS",
|
|
|
|
|
'longOption':"hosts",
|
|
|
|
|
'helpChapter':_("Jabber service options"),
|
|
|
|
|
'help':_("jabber supplementary hosts, (comma delimited)")
|
|
|
|
|
},
|
|
|
|
|
{'progAccess':(6,),
|
|
|
|
|
'optVal':"CONDITION",
|
|
|
|
|
'longOption':"history",
|
|
|
|
@ -8894,6 +8955,12 @@ the password will be changed only for Samba account")
|
|
|
|
|
'helpChapter':_("Jabber service options"),
|
|
|
|
|
'help':_("jabber host, default - hostname")
|
|
|
|
|
},
|
|
|
|
|
{'progAccess':(9,),
|
|
|
|
|
'optVal':"HOSTS",
|
|
|
|
|
'longOption':"hosts",
|
|
|
|
|
'helpChapter':_("Jabber service options"),
|
|
|
|
|
'help':_("jabber supplementary hosts, (comma delimited)")
|
|
|
|
|
},
|
|
|
|
|
{'progAccess':(9,),
|
|
|
|
|
'shortOption':"a",
|
|
|
|
|
'longOption':"allow",
|
|
|
|
@ -9066,17 +9133,11 @@ the password will be changed only for Samba account")
|
|
|
|
|
'help':pcs(" unix", self.column_width,
|
|
|
|
|
"unix " + servName, self.consolewidth-self.column_width)
|
|
|
|
|
},
|
|
|
|
|
{'progAccess':(3,4,5,6,7,9,12,14),
|
|
|
|
|
{'progAccess':(0,1,2,3,4,5,6,7,9,12,14),
|
|
|
|
|
'helpChapter':_("Services"),
|
|
|
|
|
'help':pcs(" samba", self.column_width,
|
|
|
|
|
"samba " + servName, self.consolewidth-self.column_width)
|
|
|
|
|
},
|
|
|
|
|
{'progAccess':(0,1,2,),
|
|
|
|
|
'helpChapter':_("Services"),
|
|
|
|
|
'help':pcs(" samba", self.column_width,
|
|
|
|
|
_("using unix group"),
|
|
|
|
|
self.consolewidth-self.column_width)
|
|
|
|
|
},
|
|
|
|
|
{'progAccess':(0,1,2,3,4,5,6,7,9,12,14),
|
|
|
|
|
'helpChapter':_("Services"),
|
|
|
|
|
'help':pcs(" mail", self.column_width,
|
|
|
|
|