|
|
|
@ -14929,19 +14929,22 @@ this DNS server')%nameServer)
|
|
|
|
|
'minimum':self.zoneMinimum}
|
|
|
|
|
for nameOpt in zoneTimeIntervals.keys():
|
|
|
|
|
valueOpt = zoneTimeIntervals[nameOpt]
|
|
|
|
|
globals()[nameOpt] = valueOpt
|
|
|
|
|
locals()[nameOpt] = valueOpt
|
|
|
|
|
if options.has_key(nameOpt):
|
|
|
|
|
valueOpt = options[nameOpt]
|
|
|
|
|
globals()[nameOpt] = valueOpt.upper()
|
|
|
|
|
if not self.checkTimeValue(valueOpt):
|
|
|
|
|
locals()[nameOpt] = valueOpt.upper()
|
|
|
|
|
if not self.checkTimeValue(locals()[nameOpt]):
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_('Incorrect command line options "--%s')\
|
|
|
|
|
%nameOpt + " " + '%s"'%valueOpt)
|
|
|
|
|
return False
|
|
|
|
|
# создание основной зоны
|
|
|
|
|
if not self.createMasterZone(zoneName, nameServer, email,
|
|
|
|
|
namesServers, "1", refresh, update,
|
|
|
|
|
expiry, minimum):
|
|
|
|
|
namesServers, "1",
|
|
|
|
|
locals()['refresh'],
|
|
|
|
|
locals()['update'],
|
|
|
|
|
locals()['expiry'],
|
|
|
|
|
locals()['minimum']):
|
|
|
|
|
return False
|
|
|
|
|
# Добавление localhost.имя_зоны
|
|
|
|
|
if forwardZone:
|
|
|
|
@ -14961,8 +14964,10 @@ this DNS server')%nameServer)
|
|
|
|
|
# Добавляем обратную зону
|
|
|
|
|
if not self.createMasterZone(zoneNameReverse, nameServer,
|
|
|
|
|
email,namesServers, "1",
|
|
|
|
|
refresh, update, expiry,
|
|
|
|
|
minimum):
|
|
|
|
|
locals()['refresh'],
|
|
|
|
|
locals()['update'],
|
|
|
|
|
locals()['expiry'],
|
|
|
|
|
locals()['minimum']):
|
|
|
|
|
return False
|
|
|
|
|
# Добавление A записи для первичного DNS сервера
|
|
|
|
|
optionsR = {"autoptr":"off","t":"a","host":nameServer,
|
|
|
|
@ -15185,9 +15190,9 @@ this DNS server')%nameServer)
|
|
|
|
|
if len(soaData)!=7:
|
|
|
|
|
self.printERROR(_("Incorrect SOA Record in DNS zone %s")%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
# Все авторитативные сервера зоны, в случае slаve зоны
|
|
|
|
|
namesServers = map(lambda x: delDot(x), nSRecords)
|
|
|
|
|
oldNamesServers = map(lambda x: delDot(x), nSRecords)
|
|
|
|
|
if options.has_key('servers'):
|
|
|
|
|
namesServers = options['servers'].split(",")
|
|
|
|
|
flagErrorNs = False
|
|
|
|
@ -15233,7 +15238,8 @@ this DNS server')%nameServer)
|
|
|
|
|
return False
|
|
|
|
|
# Почтовый адрес администратора зоны
|
|
|
|
|
splEmail = soaData[1].partition(".")
|
|
|
|
|
email = "%s@%s"%(splEmail[0], splEmail[2])
|
|
|
|
|
email = "%s@%s"%(splEmail[0], delDot(splEmail[2]))
|
|
|
|
|
oldEmail = email
|
|
|
|
|
if options.has_key('email'):
|
|
|
|
|
email = options['email']
|
|
|
|
|
# Серийный номер зоны
|
|
|
|
@ -15248,11 +15254,11 @@ this DNS server')%nameServer)
|
|
|
|
|
'minimum':soaData[6]}
|
|
|
|
|
for nameOpt in zoneTimeIntervals.keys():
|
|
|
|
|
valueOpt = zoneTimeIntervals[nameOpt]
|
|
|
|
|
globals()[nameOpt] = valueOpt
|
|
|
|
|
locals()[nameOpt] = valueOpt
|
|
|
|
|
if options.has_key(nameOpt):
|
|
|
|
|
valueOpt = options[nameOpt]
|
|
|
|
|
globals()[nameOpt] = valueOpt.upper()
|
|
|
|
|
if not self.checkTimeValue(valueOpt):
|
|
|
|
|
locals()[nameOpt] = valueOpt.upper()
|
|
|
|
|
if not self.checkTimeValue(locals()[nameOpt]):
|
|
|
|
|
self.printERROR(_('Incorrect command line options "--%s')\
|
|
|
|
|
%nameOpt + " " + '%s"'%valueOpt)
|
|
|
|
|
return False
|
|
|
|
@ -15261,10 +15267,10 @@ this DNS server')%nameServer)
|
|
|
|
|
sOAList = [addDot(nameServer),
|
|
|
|
|
addDot(".".join(email.split("@"))),
|
|
|
|
|
serialNumber,
|
|
|
|
|
refresh,
|
|
|
|
|
update,
|
|
|
|
|
expiry,
|
|
|
|
|
minimum]
|
|
|
|
|
locals()['refresh'],
|
|
|
|
|
locals()['update'],
|
|
|
|
|
locals()['expiry'],
|
|
|
|
|
locals()['minimum']]
|
|
|
|
|
optKeys = options.keys()
|
|
|
|
|
if len(optKeys)>1:
|
|
|
|
|
sOARecord = " ".join(sOAList)
|
|
|
|
@ -15283,10 +15289,28 @@ this DNS server')%nameServer)
|
|
|
|
|
self.printERROR(_("Can not modify new SOA record for zone %s\
|
|
|
|
|
in LDAP")%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
# Результат исполнения для пользователя
|
|
|
|
|
# Изменен ли главный сервер авторизации
|
|
|
|
|
if nameServer != soaData[0]:
|
|
|
|
|
self.printSUCCESS(_("Modified master autoritative DNS server"))
|
|
|
|
|
# Изменен ли почтовый адрес администратора зоны
|
|
|
|
|
if addDot(".".join(oldEmail.split("@"))) !=\
|
|
|
|
|
addDot(".".join(email.split("@"))):
|
|
|
|
|
self.printSUCCESS(_("Modified email administrator zone"))
|
|
|
|
|
# Изменены ли авторитативные DNS сервера зоны
|
|
|
|
|
if set(oldNamesServers) != set(namesServers):
|
|
|
|
|
self.printSUCCESS(\
|
|
|
|
|
_("Modified all autoritative DNS servers for zone"))
|
|
|
|
|
# Вывод модифицированных параметров времени
|
|
|
|
|
for nameOpt in zoneTimeIntervals.keys():
|
|
|
|
|
valueOld = zoneTimeIntervals[nameOpt]
|
|
|
|
|
valueNew = locals()[nameOpt]
|
|
|
|
|
if valueOld != valueNew:
|
|
|
|
|
self.printSUCCESS(_("Modified %s")%nameOpt)
|
|
|
|
|
else:
|
|
|
|
|
self.printERROR(_("Can not found command line options"))
|
|
|
|
|
return False
|
|
|
|
|
self.printSUCCESS(_("OK"))
|
|
|
|
|
self.printOK(_('Modified zone "%s"')%zoneName)
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -16392,7 +16416,7 @@ with type DNS record PTR (options "-t")'))
|
|
|
|
|
def checkTimeValue(self, timeValue):
|
|
|
|
|
"""Проверяет корректность переменной времени"""
|
|
|
|
|
# разбиваем строку на символы
|
|
|
|
|
charList = map(lambda x: a[x:x+1], range(len(timeValue)))
|
|
|
|
|
charList = map(lambda x: timeValue[x:x+1], range(len(timeValue)))
|
|
|
|
|
if not charList:
|
|
|
|
|
return False
|
|
|
|
|
# Проверяем последний символ на число
|
|
|
|
|