Добавлен cl-rebuild скрипт для перенастройки конфигурационных файлов и генерации LDAP базы, для работы использует резервную копию настроек и базы.

Новая нумерация версий.

git-svn-id: http://svn.calculate.ru/calculate2/calculate-server/trunk@745 c91db197-33c1-4113-bf15-f8a5c547ca64
develop
asamoukin 16 years ago
parent 4c00979368
commit 21e36741aa

@ -7,7 +7,7 @@ calculate-server needs the following library version installed, in order to run:
Python >= 2.3
python-ldap >= 2.0.0
pyxml >= 0.8
calculate-lib >= 0.0.6
calculate-lib >= 2.0.6
To install calculate-server , just execute the install script 'setup.py'.
Example:

@ -36,9 +36,12 @@ import time
# Для ввода символа
import tty
import termios
# Работа со временем
import time
import datetime
Version = "calculate-server 0.0.5"
Version = "calculate-server 2.0.5"
tr = cl_base.lang()
tr.setLanguage(sys.modules[__name__])
@ -495,6 +498,7 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
def startServices(self, servInstalled, printSuccess=True):
"""Запускает все сервисы поданные на вход этому методу
Также прописывает в автозагрузку
Входные даннные - список названий сервисов
"""
if 'ldap' in servInstalled:
@ -1085,6 +1089,8 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
lines = FD.readlines()
FD.close()
for line in lines:
if not line in ":":
continue
num = int(line.split(":")[numEl])
if num<=numMax and num>=numMin:
lst.append(num)
@ -4903,7 +4909,7 @@ class servLdap(shareLdap):
return True
def getServiceSetupPathProfiles(self):
"""находим пути к профилям установленных сервисов
"""Находим пути к профилям установленных сервисов
Выдаем два списка ([пути к профилям сервисов],[установленные сервисы])
"""
@ -4922,6 +4928,64 @@ class servLdap(shareLdap):
servInstalled.append(serv)
return (servicePaths, servInstalled)
def rebuildServer(self, options):
"""Перегенерирует конфигурационные файлы, и базу данных LDAP"""
bFile = self.getArchFile()
if not bFile:
return False
self.printSUCCESS(_("Used backup file %s")%str(bFile))
archFileTime = time.localtime(os.stat(bFile)[stat.ST_MTIME])
timeFile = datetime.datetime(archFileTime[0],archFileTime[1],
archFileTime[2],archFileTime[3],
archFileTime[4],archFileTime[5])
localTime = time.localtime()
timeLocal = datetime.datetime(localTime[0],localTime[1],
localTime[2],localTime[3],
localTime[4],localTime[5])
if timeLocal < timeFile:
self.printERROR(_("Incorrect system time or time create file %s")\
%bFile)
return False
deltaTime = timeLocal - timeFile
if deltaTime.days == 0:
deltaSec = deltaTime.seconds
dHours = int(deltaSec/3600)
dMinutes = int((deltaSec - dHours*3600)/60)
dSeconds = deltaSec - dHours*3600 - dMinutes*60
hours = _("hours")
minutes = _("minutes")
seconds = _("seconds")
if dHours:
timeBackup = "%s %s %s %s %s %s"%\
(dHours,hours,dMinutes,minutes,dSeconds,seconds)
elif dMinutes:
timeBackup = "%s %s %s %s"%(dMinutes,minutes,dSeconds,seconds)
elif dSeconds:
timeBackup = "%s %s"%(dSeconds,seconds)
self.printWARNING(_("The backup file is created %s ago")%timeBackup)
else:
self.printWARNING(_("The backup file is created %s days ago")\
%deltaTime.days)
self.printWARNING(_("cl-rebuld uses a file backup, make sure it is not \
outdated. If the backup is obsolete, use cl-backup."))
messDialog = \
_("If you are ready to continue executing the program")+", "+\
_("input 'yes'") +", "+ _("if not 'no'")
if not self.dialogYesNo(messDialog):
return True
# Восстанавливаем сервисы не запуская их и не прописывая в автозагрузку
if not self.restoreServer(False):
return False
if not self.updateServer({}, "all"):
return False
self.printOK(_("Rebuilding all services") + " ...")
return True
def rebuildLdapServer(self, options):
"""Перегенерирует конфигурационные файлы, и базу данных LDAP"""
return self.rebuildServer(options)
def updateServer(self, options, serviceUpdate):
"""Перегенерируем конфигурационные файлы
@ -4974,15 +5038,21 @@ class servLdap(shareLdap):
if not flagError and not self.applyProfilesFromService(service):
flagError = True
break
self.printOK(_("Update config from service %s")\
self.printOK(_("Updating config from service %s")\
%service.capitalize())
self.stopServices([service])
self.startServices([service], False)
if not self.stopServices([service]):
return False
if not self.startServices([service], False):
return False
self.printOK(_("Restarting service %s")%service.capitalize())
# Перезапускаем ldap
if not flagError:
service = "ldap"
self.stopServices([service])
self.startServices([service], False)
if not self.stopServices([service]):
return False
if not self.startServices([service], False):
return False
self.printOK(_("Restarting service %s")%service.capitalize())
#запишем переменные для сервера
if not flagError:
self.clVars.Write("sr_jabber_history",
@ -5055,6 +5125,14 @@ class servLdap(shareLdap):
for iniFile in iniFiles:
if os.path.exists(iniFile):
allArchFiles.append(iniFile)
profileDirs = self.clVars.Get("cl_profile_path")
if len(profileDirs)>1:
profileDirs = profileDirs[1:]
# Добавляем в архивацию профили клиента
profileDirs.append('/var/calculate/remote/client-profile')
for pDir in profileDirs:
if os.path.exists(pDir):
scanPrivDirs.append(pDir)
if "samba" in servInstalled:
scanPrivDirs.append(self.sambaPrivate)
if "mail" in servInstalled:
@ -5109,10 +5187,8 @@ class servLdap(shareLdap):
servInstalled = self.getServiceSetup()
return self.startServices(servInstalled)
def restoreServer(self):
"""Восстанавливает из архива все установленные сервисы
Восстановленные сервисы будут запущены
def getArchFile(self):
"""Возвращает имя архивного файла из директории backup
"""
if not os.path.exists(self.backupDirectory):
self.printERROR(_("Path for backup is not found") + ": " +\
@ -5139,6 +5215,16 @@ class servLdap(shareLdap):
self.printERROR(_("Backup file is not found") + ": " +\
str(bFile))
return False
return bFile
def restoreServer(self, startServices=True):
"""Восстанавливает из архива все установленные сервисы
Восстановленные сервисы будут запущены
"""
bFile = self.getArchFile()
if not bFile:
return False
# Создаем объект переменных clVars
self.createClVars()
# останавливаем сервисы
@ -5199,11 +5285,13 @@ class servLdap(shareLdap):
os.remove(self.tmpListFile)
if os.path.exists(self.archLdifFile):
os.remove(self.archLdifFile)
# Стартуем все сервисы и прописываем в автозагрузку
# считаем переменные из ini файлов
self.clVars.flIniFile()
if not self.startAllSetupServices():
return False
self.printOK(_("Restored all installed services") + " ...")
if startServices:
# Стартуем все сервисы и прописываем в автозагрузку
if not self.startAllSetupServices():
return False
self.printOK(_("Restored all installed services") + " ...")
return True
def __del__(self):
@ -5407,6 +5495,7 @@ class cl_ldap(shareLdap):
'cl-passwd':7,
'cl-backup':8,
'cl-update':9,
'cl-rebuild':10,
}
# Cвязь сервисов и действующих опций
self.relServices = {"samba":[_("Common options"),
@ -6308,6 +6397,11 @@ the password will be changed only for Samba account")
'helpChapter':_("Usage"),
'help': cmdName + " " + _("service")
},
{
'progAccess':(10,),
'helpChapter':_("Usage"),
'help': cmdName
},
# Function
{
'progAccess':(0,),
@ -6359,6 +6453,12 @@ the password will be changed only for Samba account")
'helpChapter':"Function",
'help':_("Updates configuration files for the service")
},
{
'progAccess':(10,),
'helpChapter':"Function",
'help':_("Rebuild configuration files and LDAP database for all \
services")
},
# Примеры
{
'progAccess':(0,),
@ -6432,6 +6532,13 @@ the password will be changed only for Samba account")
"# "+_("update config files from Samba services") + ".",
self.consolewidth-self.column_width)
},
{
'progAccess':(10,),
'helpChapter':_("Examples"),
'help':pcs(" cl-rebuild", self.column_width,
"# "+_("rebuild all services") + ".",
self.consolewidth-self.column_width)
},
#{
#'helpChapter':_("Examples"),
#'help':pcs(" " + cmdName + " --env boot", self.column_width,

@ -392,7 +392,7 @@ class Data:
# Calculate плюс версия калкулэйта для записи в заголовок файла
# объединяемого с профилем
#setup_name
cl_ver = {'value':'Calculate-server 0.0.5'}
cl_ver = {'value':'Calculate-server 2.0.5'}
#-----------------------------------------------------
#Служебные переменные
#-----------------------------------------------------

@ -116,7 +116,7 @@ data_files += create_data_files (data_dirs_share, share_calculate_dir)
setup(
name = 'calculate-server',
version = "0.0.5",
version = "2.0.5",
description = "The program for configuring server-data linux",
author = "Calculate Pack",
author_email = "support@calculate.ru",
@ -134,5 +134,6 @@ setup(
"./scripts/cl-passwd",
"./scripts/cl-setup",
"./scripts/cl-backup",
"./scripts/cl-update",],
"./scripts/cl-update",
"./scripts/cl-rebuild",],
)

Loading…
Cancel
Save