|
|
|
@ -19,8 +19,8 @@ import sys
|
|
|
|
|
import re
|
|
|
|
|
#import popen2
|
|
|
|
|
import ldap
|
|
|
|
|
import cStringIO
|
|
|
|
|
from ldif import LDIFParser
|
|
|
|
|
import cStringIO, StringIO
|
|
|
|
|
from ldif import LDIFParser, LDIFWriter
|
|
|
|
|
import cl_base
|
|
|
|
|
import cl_profile
|
|
|
|
|
import cl_utils2
|
|
|
|
@ -36,6 +36,8 @@ import time
|
|
|
|
|
# Для ввода символа
|
|
|
|
|
import tty
|
|
|
|
|
import termios
|
|
|
|
|
# Для ldif
|
|
|
|
|
import base64
|
|
|
|
|
|
|
|
|
|
Version = "calculate-server 0.0.1"
|
|
|
|
|
|
|
|
|
@ -477,29 +479,12 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
|
|
|
|
|
except ldap.LDAPError, e:
|
|
|
|
|
self.printERROR("fullElementDN: "+e[0]['desc'])
|
|
|
|
|
return False
|
|
|
|
|
outText = ""
|
|
|
|
|
lenDNlist = len(dnList)
|
|
|
|
|
dnIter = 0
|
|
|
|
|
FDOUT = StringIO.StringIO("")
|
|
|
|
|
writer = LDIFWriter(FDOUT)
|
|
|
|
|
for dn, f in dnList:
|
|
|
|
|
dnIter += 1
|
|
|
|
|
outText += "dn: " + dn + "\n"
|
|
|
|
|
listObjectClass = []
|
|
|
|
|
listOtherAttr = []
|
|
|
|
|
attrs = f.keys()
|
|
|
|
|
attrs.sort()
|
|
|
|
|
for attr in attrs:
|
|
|
|
|
for val in f[attr]:
|
|
|
|
|
attrText = attr + ": " + val
|
|
|
|
|
if attr == "objectClass":
|
|
|
|
|
listObjectClass.append(attrText)
|
|
|
|
|
else:
|
|
|
|
|
listOtherAttr.append(attrText)
|
|
|
|
|
listAttr = listObjectClass + listOtherAttr
|
|
|
|
|
for i in listAttr:
|
|
|
|
|
outText += i + "\n"
|
|
|
|
|
if dnIter < lenDNlist:
|
|
|
|
|
outText += "\n"
|
|
|
|
|
return outText
|
|
|
|
|
writer.unparse(dn, f)
|
|
|
|
|
FDOUT.seek(0)
|
|
|
|
|
return FDOUT.read()
|
|
|
|
|
|
|
|
|
|
@adminConnectLdap
|
|
|
|
|
def deleteDN(self, relDelDN):
|
|
|
|
@ -3260,12 +3245,18 @@ class servLdap(shareLdap):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def startAllSetupServices(self):
|
|
|
|
|
"""Запускаем все работающие установленные сервисы"""
|
|
|
|
|
"""Запускаем все работающие установленные сервисы
|
|
|
|
|
|
|
|
|
|
а также прописываем в автозапуск
|
|
|
|
|
"""
|
|
|
|
|
# находим установленные сервисы
|
|
|
|
|
servicePaths, servInstalled = self.getServiceSetupPathProfiles()
|
|
|
|
|
if 'ldap' in servInstalled:
|
|
|
|
|
if not self.startDaemons('ldap',['slapd']):
|
|
|
|
|
return False
|
|
|
|
|
# Устанавливаем автозапуск демона
|
|
|
|
|
if not self.setDaemonAutostart("slapd"):
|
|
|
|
|
return False
|
|
|
|
|
flagError = False
|
|
|
|
|
for service in servInstalled:
|
|
|
|
|
if service == "unix" or service == "ldap":
|
|
|
|
@ -3274,10 +3265,18 @@ class servLdap(shareLdap):
|
|
|
|
|
if not self.startDaemons('mail',['postfix', 'dovecot']):
|
|
|
|
|
flagError = True
|
|
|
|
|
break
|
|
|
|
|
# Устанавливаем автозапуск демонов
|
|
|
|
|
if not (self.setDaemonAutostart("postfix") and\
|
|
|
|
|
self.setDaemonAutostart("dovecot")):
|
|
|
|
|
flagError = True
|
|
|
|
|
break
|
|
|
|
|
else:
|
|
|
|
|
if not self.startDaemons(service,[service]):
|
|
|
|
|
flagError = True
|
|
|
|
|
break
|
|
|
|
|
# Устанавливаем автозапуск демона
|
|
|
|
|
if not self.setDaemonAutostart(service):
|
|
|
|
|
return False
|
|
|
|
|
if flagError:
|
|
|
|
|
return False
|
|
|
|
|
else:
|
|
|
|
@ -3373,7 +3372,7 @@ class servLdap(shareLdap):
|
|
|
|
|
os.remove(self.tmpListFile)
|
|
|
|
|
if os.path.exists(self.archLdifFile):
|
|
|
|
|
os.remove(self.archLdifFile)
|
|
|
|
|
# Стартуем все сервисы
|
|
|
|
|
# Стартуем все сервисы и прописываем в автозагрузку
|
|
|
|
|
if not self.startAllSetupServices():
|
|
|
|
|
return False
|
|
|
|
|
self.printOK(_("Restored all installed services") + " ...")
|
|
|
|
|