Modify methods run and stop service

develop
Самоукин Алексей 15 years ago
parent ed98c4a170
commit 80388a0a05

@ -244,7 +244,10 @@ class prnServ:
if service in ["ldap", "dns", "dhcp", "ftp"]:
ret = service.upper()
else:
ret = service.capitalize()
if service=="mail_relay":
ret = "Mail"
else:
ret = service.capitalize()
return ret
class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon, prnServ):
@ -252,6 +255,17 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon, prnServ):
# DN сервисов относительно базового
ServicesDN = "ou=Services"
# Сервисы и демоны
servicesDaemons = {"ldap":["slapd"],
"unix":["slapd"],
"samba":["samba"],
"mail":["postfix","dovecot"],
"mail_relay":["postfix"],
"jabber":["ejabberd"],
"ftp":["proftpd"],
"proxy":["squid"],
"dns":["named"],
"dhcp":["dhcpd"]}
def __init__(self):
# Переменная объект Vars
@ -712,24 +726,15 @@ in a sambaDomainName',
Входные данные - список названий сервисов
"""
flagError = False
services = {"ldap":["slapd"],
"unix":["slapd"],
"samba":["samba"],
"mail":["postfix","dovecot"],
"jabber":["ejabberd"],
"ftp":["proftpd"],
"proxy":["squid"],
"dns":["named"],
"dhcp":["dhcpd"]}
delDaemons = []
for service in servInstalled:
if not service in services.keys():
if not service in self.servicesDaemons.keys():
self.printERROR(_("Can not supported service '%s'")%service)
self.printERROR(\
_("Can not deleted service from default runlevel"))
flagError = True
break
for daemon in services[service]:
for daemon in self.servicesDaemons[service]:
if not daemon in delDaemons:
delDaemons.append(daemon)
if not self.delDaemonAutostart(daemon):
@ -769,83 +774,32 @@ in a sambaDomainName',
Также прописывает в автозагрузку
Входные даннные - список названий сервисов
"""
addDaemons = []
if 'ldap' in servInstalled or 'unix' in servInstalled:
if not self.startDaemons('ldap',['slapd'], printSuccess):
return False
# Устанавливаем автозапуск демона
if not self.setDaemonAutostart("slapd"):
return False
addDaemons.append("slapd")
flagError = False
for service in servInstalled:
if service == "unix" or service == "ldap":
continue
elif service == "mail":
if not self.startDaemons('mail',['postfix', 'dovecot'],
printSuccess):
flagError = True
break
# Устанавливаем автозапуск демонов
if not (self.setDaemonAutostart("postfix") and\
self.setDaemonAutostart("dovecot")):
flagError = True
break
# В случае почтового релея
elif service == "mail_relay":
if not self.startDaemons('mail',['postfix'],
printSuccess):
flagError = True
break
# Устанавливаем автозапуск демонов
if not self.setDaemonAutostart("postfix"):
flagError = True
break
elif service == "jabber":
if not self.startDaemons('jabber',['ejabberd'], printSuccess):
flagError = True
break
# Устанавливаем автозапуск демона
if not self.setDaemonAutostart("ejabberd"):
flagError = True
break
elif service == "ftp":
if not self.startDaemons('ftp',['proftpd'], printSuccess):
flagError = True
break
# Устанавливаем автозапуск демона
if not self.setDaemonAutostart("proftpd"):
flagError = True
break
elif service == "proxy":
if not self.startDaemons('proxy',['squid'], printSuccess):
flagError = True
break
# Устанавливаем автозапуск демона
if not self.setDaemonAutostart("squid"):
flagError = True
break
elif service == "dns":
if not self.startDaemons('dns',['named'], printSuccess):
flagError = True
break
# Устанавливаем автозапуск демона
if not self.setDaemonAutostart("named"):
flagError = True
break
elif service == "dhcp":
if not self.startDaemons('dhcp',['dhcpd'], printSuccess):
flagError = True
break
# Устанавливаем автозапуск демона
if not self.setDaemonAutostart("dhcpd"):
flagError = True
break
else:
if not self.startDaemons(service,[service], printSuccess):
flagError = True
break
# Устанавливаем автозапуск демона
if not self.setDaemonAutostart(service):
return False
if not service in self.servicesDaemons.keys():
self.printERROR(_("Can not supported service '%s'")%service)
self.printERROR(_("Can not add service at default runlevel"))
flagError = True
break
for daemon in self.servicesDaemons[service]:
if not daemon in addDaemons:
addDaemons.append(daemon)
if not self.startDaemons(service, [daemon], printSuccess):
flagError = True
break
if not self.setDaemonAutostart(daemon):
flagError = True
break
if flagError:
break
if flagError:
return False
else:
@ -856,137 +810,95 @@ in a sambaDomainName',
Входные даннные - список названий сервисов
"""
addDaemons = []
if 'ldap' in servInstalled or 'unix' in servInstalled:
addDaemons.append("slapd")
flagError = False
flagLdap = False
for service in servInstalled:
if service == "unix" or service == "ldap":
flagLdap = True
# В случае почтового релея
elif service == "mail_relay":
if self.getRunDaemons(["postfix"]):
textLines = self.execProg("/etc/init.d/postfix stop")
if textLines == False:
self.printERROR( "Postfix" + " " +
_("service is not stopped"))
flagError = True
break
elif service == "mail":
if self.getRunDaemons(["postfix"]):
textLines = self.execProg("/etc/init.d/postfix stop")
if textLines == False:
self.printERROR( "Postfix" + " " +
_("service is not stopped"))
flagError = True
break
if self.getRunDaemons(["dovecot"]):
textLines = self.execProg("/etc/init.d/dovecot stop")
if textLines == False:
self.printERROR("Dovecot" + " " +
_("service is not stopped"))
flagError = True
break
elif service == "jabber":
if self.getRunService("jabber"):
textLines = self.execProg("/etc/init.d/ejabberd stop")
if textLines == False:
self.printERROR( "Ejabberd" + " " +
_("service is not stopped"))
flagError = True
break
strCmd = "ps ax"
listProcess = self.execProg(strCmd,False,False)
if listProcess == False:
self.printERROR(_('Can not execute "%s"')%strCmd)
return False
killPid = []
for process in listProcess:
if "erlang" in process:
killPid.append(process.split(" ")[0])
if killPid and " ".join(killPid).strip():
textLine = self.execProg("kill %s" %" ".join(killPid))
if textLine == False:
self.printERROR(_("Can not 'kill %s'")\
%" ".join(killPid))
if not service in self.servicesDaemons.keys():
self.printERROR(_("Can not supported service '%s'")%service)
self.printERROR(_("Can not stop service"))
flagError = True
break
# Название сервиса для вывода на экран
servicePrn = self.printNameService(service)
for daemon in self.servicesDaemons[service]:
if not daemon in addDaemons:
addDaemons.append(daemon)
# Если демон запущен и не squid то останавливаем его
if not daemon in ["squid"] and self.getRunDaemons([daemon]):
ret = self.execProg("/etc/init.d/%s stop"%daemon)
if ret == False:
self.printERROR(servicePrn + " " +\
_("service is not stopped"))
flagError = True
break
elif service == "ftp":
if self.getRunDaemons(["proftpd"]):
textLines = self.execProg("/etc/init.d/proftpd stop")
if textLines == False:
self.printERROR( "Proftpd" + " " +
_("service is not stopped"))
flagError = True
break
elif service == "proxy":
if self.getRunDaemons(["squid"]):
errStopProxy = False
# Создаем 2 процесса
pid = os.fork()
tic = 0
if pid:
message = _("Waiting for squid to shutdown") + " "
self.printSUCCESS(message, 0, False)
perm = [0]
offset = 0
while not perm[0]:
perm = os.waitpid(pid, os.WNOHANG)
if perm[1]:
errStopProxy = True
# Удаляем процессы ejabberd
if daemon == "ejabberd":
strCmd = "ps ax"
listProcess = self.execProg(strCmd,False,False)
if listProcess == False:
self.printERROR(_('Can not execute "%s"')%strCmd)
return False
killPid = []
for process in listProcess:
if "erlang" in process:
killPid.append(process.split(" ")[0])
if killPid and " ".join(killPid).strip():
textLine=self.execProg("kill %s" %" ".join(killPid))
if textLine == False:
self.printERROR(_("Can not 'kill %s'")\
%" ".join(killPid))
flagError = True
break
time.sleep(0.1)
tic += 1
if tic>=15:
sys.stdout.flush()
sys.stdout.write(".")
offset += 1
tic = 0
if errStopProxy:
self.printOnlyNotOK(" ",self.lenString(message)+\
elif daemon == "squid" and self.getRunDaemons(["squid"]):
errStopProxy = False
# Создаем 2 процесса
pid = os.fork()
tic = 0
if pid:
message = _("Waiting for squid to shutdown") + " "
self.printSUCCESS(message, 0, False)
perm = [0]
offset = 0
while not perm[0]:
perm = os.waitpid(pid, os.WNOHANG)
if perm[1]:
errStopProxy = True
break
time.sleep(0.1)
tic += 1
if tic>=15:
sys.stdout.flush()
sys.stdout.write(".")
offset += 1
tic = 0
if errStopProxy:
self.printOnlyNotOK(" ",\
self.lenString(message)+\
offset+3)
else:
self.printOnlyOK(" ",self.lenString(message)+\
offset+3)
else:
self.printOnlyOK(" ",self.lenString(message)+\
offset+3)
else:
sys.stdout.flush()
if os.system("/etc/init.d/squid stop &>/dev/null"):
sys.exit(1)
else:
sys.exit(0)
# Если ошибка при остановке proxy сервера
if errStopProxy:
self.printERROR( "Squid" + " " +
_("service is not stopped"))
flagError = True
break
elif service == "dns":
if self.getRunDaemons(["named"]):
textLines = self.execProg("/etc/init.d/named stop")
if textLines == False:
self.printERROR( "DNS" + " " +
_("service is not stopped"))
flagError = True
break
elif service == "dhcp":
if self.getRunDaemons(["dhcpd"]):
textLines = self.execProg("/etc/init.d/dhcpd stop")
if textLines == False:
self.printERROR( "DHCP" + " " +
_("service is not stopped"))
flagError = True
break
elif self.getRunService(service):
stopService = service
textLines = self.execProg("/etc/init.d/%s stop" %(stopService))
if textLines == False:
self.printERROR( str(service) + " " +
_("service is not stopped"))
flagError = True
break
if flagLdap:
sys.stdout.flush()
if os.system("/etc/init.d/squid stop &>/dev/null"):
sys.exit(1)
else:
sys.exit(0)
# Если ошибка при остановке proxy сервера
if errStopProxy:
self.printERROR(servicePrn + " " +\
_("service is not stopped"))
flagError = True
break
if flagError:
break
if not flagError and "slapd" in addDaemons:
if self.getRunService('ldap'):
textLines = self.execProg("/etc/init.d/slapd stop")
if textLines == False:
self.printERROR( "LDAP" + " " +
self.printERROR("LDAP" + " " +\
_("service is not stopped"))
flagError = True
if flagError:
@ -1103,29 +1015,18 @@ in a sambaDomainName',
def getRunService(self, nameService, printError=False):
"""Проверка, запущен ли сервис с данным именем"""
flagError = False
if nameService == "mail":
daemons = ['postfix','dovecot']
if not self.getRunDaemons(daemons,printError):
flagError = True
elif nameService == "ldap":
if not self.getRunDaemons(['slapd'],printError):
flagError = True
elif nameService == "jabber":
if not self.getRunDaemons(['ejabberd'],printError):
flagError = True
elif nameService == "ftp":
if not self.getRunDaemons(['proftpd'],printError):
flagError = True
elif nameService == "dhcp":
if not self.getRunDaemons(['dhcpd'],printError):
flagError = True
else:
if not self.getRunDaemons([nameService],printError):
flagError = True
if not nameService in self.servicesDaemons.keys():
self.printERROR(_("Can not supported service '%s'")%nameService)
self.printERROR(_("Can not check run service"))
return False
# Названия демонов для сервиса
daemons = self.servicesDaemons[nameService]
if not self.getRunDaemons(daemons, printError):
flagError = True
if flagError:
if printError:
self.printERROR( nameService.capitalize + " " +
_("service is not started"))
self.printERROR(self.printNameService(nameService) + " " +\
_("service is not started"))
return False
return True

Loading…
Cancel
Save