|
|
|
@ -729,7 +729,7 @@ in a sambaDomainName',
|
|
|
|
|
delDaemons = []
|
|
|
|
|
for service in servInstalled:
|
|
|
|
|
if not service in self.servicesDaemons.keys():
|
|
|
|
|
self.printERROR(_("Can not supported service '%s'")%service)
|
|
|
|
|
self.printERROR(_("Not supported service '%s'")%service)
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_("Can not deleted service from default runlevel"))
|
|
|
|
|
flagError = True
|
|
|
|
@ -7555,7 +7555,7 @@ outdated. If the backup is obsolete, use cl-backup."))
|
|
|
|
|
listIncorrectServices = list(set(servInstalled)-\
|
|
|
|
|
set(self.notLdapServices))
|
|
|
|
|
if listIncorrectServices:
|
|
|
|
|
self.printERROR(_("LDAP service is not setup"))
|
|
|
|
|
self.printERROR(_("LDAP service is not setuped"))
|
|
|
|
|
self.printERROR(_("Services %s need LDAP service")\
|
|
|
|
|
%", ".join(listIncorrectServices))
|
|
|
|
|
self.printERROR(_("Can not create backup file"))
|
|
|
|
@ -8699,7 +8699,7 @@ class cl_ldap(shareLdap):
|
|
|
|
|
_("Mail service options")],
|
|
|
|
|
"help-jabber":[_("Common options"),
|
|
|
|
|
_("Jabber service options")],
|
|
|
|
|
"help-ftp":[_("Common opProxytions"),
|
|
|
|
|
"help-ftp":[_("Common options"),
|
|
|
|
|
_("FTP service options")],
|
|
|
|
|
"help-proxy":[_("Common options"),
|
|
|
|
|
_("Proxy service options")],
|
|
|
|
@ -10124,7 +10124,7 @@ name), delete forward record")
|
|
|
|
|
'longOption':"ip",
|
|
|
|
|
'optVal':"IP_ADDRESS",
|
|
|
|
|
'helpChapter':_("Common options"),
|
|
|
|
|
'help':_("ip address, delete revese record")
|
|
|
|
|
'help':_("ip address, delete reverse record")
|
|
|
|
|
},
|
|
|
|
|
{'progAccess':(17,),
|
|
|
|
|
'longOption':"mx",
|
|
|
|
@ -13023,7 +13023,7 @@ class cl_info(cl_utils2.cl_smartcon, prnServ):
|
|
|
|
|
not servDhcpObj.isCorrectStringNet(net):
|
|
|
|
|
self.printERROR(_('Incorrect network %s')%net)
|
|
|
|
|
self.printWARNING(_("Example network") + " :")
|
|
|
|
|
self.printWARNING(_('"-N 192.168.0.0/24"'))
|
|
|
|
|
self.printWARNING('"-N 192.168.0.0/24"')
|
|
|
|
|
return False
|
|
|
|
|
dhcpObj = dncpTxt()
|
|
|
|
|
dataNets = dhcpObj.getDataInAllSubnet()
|
|
|
|
@ -13074,10 +13074,10 @@ class cl_info(cl_utils2.cl_smartcon, prnServ):
|
|
|
|
|
hostname = options["H"]
|
|
|
|
|
# Проверка правильности названия хоста
|
|
|
|
|
if '.' in hostname:
|
|
|
|
|
self.printERROR(_('Command line options "--h %s" incorrectly')\
|
|
|
|
|
self.printERROR(_('Command line option "-H %s" incorrectly')\
|
|
|
|
|
%hostname)
|
|
|
|
|
self.printWARNING(_("Example") + " :")
|
|
|
|
|
self.printWARNING(_('"--h computer'))
|
|
|
|
|
self.printWARNING('"-H computer"')
|
|
|
|
|
return False
|
|
|
|
|
dhcpObj = dncpTxt()
|
|
|
|
|
dataHosts = dhcpObj.getDataInAllHost()
|
|
|
|
@ -13224,7 +13224,7 @@ class cl_info(cl_utils2.cl_smartcon, prnServ):
|
|
|
|
|
%zoneName)
|
|
|
|
|
self.printWARNING(_("Example network for reverse zone") +\
|
|
|
|
|
" :")
|
|
|
|
|
self.printWARNING(_('"192.168.0.0/24"'))
|
|
|
|
|
self.printWARNING('"192.168.0.0/24"')
|
|
|
|
|
return False
|
|
|
|
|
dataIP = servDnsObj.getDomainAndZoneFromIP(network)
|
|
|
|
|
if not dataIP:
|
|
|
|
@ -13292,7 +13292,7 @@ for %s DNS zone")%zoneName)
|
|
|
|
|
aRecords = zoneData[0][0][1]['aRecord']
|
|
|
|
|
soaData = map(lambda x: delDot(x), soaRecord.split(" "))
|
|
|
|
|
if len(soaData)!=7:
|
|
|
|
|
self.printERROR(_("Incorrect SOA Record in DNS zone %s")\
|
|
|
|
|
self.printERROR(_("Incorrect SOA record in DNS zone %s")\
|
|
|
|
|
%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
# Авторитативный сервер
|
|
|
|
@ -13597,7 +13597,7 @@ with another option."))
|
|
|
|
|
'groups':'relGroupsDN',
|
|
|
|
|
'computers':'relComputersDN'}
|
|
|
|
|
if not branchData.has_key(branch):
|
|
|
|
|
self.printERROR(_("getQueryLDAP service=%s")%service)
|
|
|
|
|
self.printERROR("getQueryLDAP service=%s"%service)
|
|
|
|
|
self.printERROR(_("ERROR: getQueryLDAP incorrect branch=%s")%branch)
|
|
|
|
|
return False
|
|
|
|
|
relAttr = branchData[branch]
|
|
|
|
@ -13611,7 +13611,7 @@ with another option."))
|
|
|
|
|
if not servObj.isServiceSetup(service):
|
|
|
|
|
return False
|
|
|
|
|
if not servObj.__dict__.has_key(relAttr):
|
|
|
|
|
self.printERROR(_("getQueryLDAP service=%s")%service)
|
|
|
|
|
self.printERROR("getQueryLDAP service=%s"%service)
|
|
|
|
|
self.printERROR(_("ERROR: getQueryLDAP incorrect branch=%s")%branch)
|
|
|
|
|
return False
|
|
|
|
|
searchRes = servObj.searchLdapDN(searchStr, getattr(servObj, relAttr),
|
|
|
|
@ -15994,7 +15994,7 @@ class servDns(shareLdap):
|
|
|
|
|
return False
|
|
|
|
|
if not self.startServices(['dns'],False):
|
|
|
|
|
return False
|
|
|
|
|
self.printOK(_("Append DNS slave zone %s")%zoneName)
|
|
|
|
|
self.printOK(_("Appended DNS slave zone %s")%zoneName)
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def createMasterZone(self, zoneName,
|
|
|
|
@ -16054,7 +16054,7 @@ class servDns(shareLdap):
|
|
|
|
|
|
|
|
|
|
if not self.startServices(['dns'],False):
|
|
|
|
|
return False
|
|
|
|
|
self.printOK(_("Append DNS master zone %s")%zoneName)
|
|
|
|
|
self.printOK(_("Appended DNS master zone %s")%zoneName)
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def deleteZone(self, zoneName):
|
|
|
|
@ -16119,11 +16119,11 @@ class servDns(shareLdap):
|
|
|
|
|
mx - MX записи для зоны
|
|
|
|
|
"""
|
|
|
|
|
if not nameServer:
|
|
|
|
|
self.printERROR(_("Empty name server in sOA Record in zone %s")\
|
|
|
|
|
self.printERROR(_("Empty name server in SOA record in zone %s")\
|
|
|
|
|
%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
if not namesServers:
|
|
|
|
|
self.printERROR(_("Empty autoritative names servers in sOA Record\
|
|
|
|
|
self.printERROR(_("Empty autoritative names servers in SOA record\
|
|
|
|
|
in zone %s")%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
# Метод добавляющий в конце текста точку если ее нет
|
|
|
|
@ -16131,7 +16131,7 @@ class servDns(shareLdap):
|
|
|
|
|
# Имя первичного DNS сервера
|
|
|
|
|
nameServerDot = addDot(nameServer)
|
|
|
|
|
if not emailAddr:
|
|
|
|
|
self.printERROR(_("Empty email address in sOA Record in zone %s")\
|
|
|
|
|
self.printERROR(_("Empty email address in SOA record in zone %s")\
|
|
|
|
|
%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
# Почтовый адрес администратора зоны
|
|
|
|
@ -16143,7 +16143,7 @@ class servDns(shareLdap):
|
|
|
|
|
incorrectTimeValues = filter(lambda x: not regTime.search(x),\
|
|
|
|
|
sOATimeParams)
|
|
|
|
|
if incorrectTimeValues:
|
|
|
|
|
self.printERROR(_("Values %s incorrect in sOA Record")\
|
|
|
|
|
self.printERROR(_("Values %s incorrect in SOA record")\
|
|
|
|
|
%", ".join(incorrectTimeValues))
|
|
|
|
|
return False
|
|
|
|
|
# Добавление точки если необходимо в каждое имя DNS сервера
|
|
|
|
@ -16181,7 +16181,7 @@ class servDns(shareLdap):
|
|
|
|
|
if not self.addEntry(zoneBaseDN, zoneBaseEntry, zoneBaseErrorMessage):
|
|
|
|
|
return False
|
|
|
|
|
zoneDomainDN = self.addDN("relativeDomainName=@",zoneBaseDN)
|
|
|
|
|
zoneDomainErrorMessage = _("Can not add sOA Record in zone %s")%zoneName
|
|
|
|
|
zoneDomainErrorMessage = _("Can not add SOA record in zone %s")%zoneName
|
|
|
|
|
zoneDomainEntry = [('objectclass', ['top','dNSZone']),
|
|
|
|
|
('relativeDomainName', ["@"]),
|
|
|
|
|
('zoneName',[zoneName]),
|
|
|
|
@ -16220,8 +16220,8 @@ class servDns(shareLdap):
|
|
|
|
|
optKeys = options.keys()
|
|
|
|
|
incompKeys = ["host","ip"]
|
|
|
|
|
if set(incompKeys)<=set(optKeys):
|
|
|
|
|
self.printERROR(_('Command line options "--host" (A record) \
|
|
|
|
|
incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
self.printERROR(_('Command line option "--host" (A record) \
|
|
|
|
|
incompatible with option "--ip" (PTR record)'))
|
|
|
|
|
return False
|
|
|
|
|
# Флаг MX - записи
|
|
|
|
|
flagDeleteMX = False
|
|
|
|
@ -16243,8 +16243,8 @@ incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
return False
|
|
|
|
|
elif options.has_key('ip'):
|
|
|
|
|
if flagDeleteMX:
|
|
|
|
|
self.printERROR(_('Command line options "--mx" (MX record) \
|
|
|
|
|
incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
self.printERROR(_('Command line option "--mx" (MX record) \
|
|
|
|
|
incompatible with option "--ip" (PTR record)'))
|
|
|
|
|
return False
|
|
|
|
|
# ip адрес
|
|
|
|
|
typeRec = "ptr"
|
|
|
|
@ -16304,7 +16304,7 @@ incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
if flagDeleteMX:
|
|
|
|
|
pass
|
|
|
|
|
elif typeRec == "a":
|
|
|
|
|
self.printSUCCESS(_("Deleted A record in LDAP"))
|
|
|
|
|
self.printSUCCESS(_("Deleted A record from LDAP"))
|
|
|
|
|
self.printSUCCESS("%s --> %s"%(domainName,foundIP))
|
|
|
|
|
self.printSUCCESS("")
|
|
|
|
|
if printWarning:
|
|
|
|
@ -16316,7 +16316,7 @@ incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
self.printWARNING("%s --> %s"%(ip,domainName))
|
|
|
|
|
self.printWARNING("")
|
|
|
|
|
elif typeRec == "ptr":
|
|
|
|
|
self.printSUCCESS(_("Deleted PTR record in LDAP"))
|
|
|
|
|
self.printSUCCESS(_("Deleted PTR record from LDAP"))
|
|
|
|
|
self.printSUCCESS("%s --> %s"%(ip, delDot(foundDomainName)))
|
|
|
|
|
self.printSUCCESS("")
|
|
|
|
|
if printWarning:
|
|
|
|
@ -16328,7 +16328,7 @@ incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
self.printWARNING("%s --> %s"%(host,ip))
|
|
|
|
|
self.printWARNING("")
|
|
|
|
|
elif typeRec == "cname":
|
|
|
|
|
self.printSUCCESS(_("Deleted CNAME record in LDAP"))
|
|
|
|
|
self.printSUCCESS(_("Deleted CNAME record from LDAP"))
|
|
|
|
|
self.printSUCCESS("%s --> %s"%(domainName,foundCName))
|
|
|
|
|
self.printSUCCESS("")
|
|
|
|
|
return True
|
|
|
|
@ -16362,7 +16362,7 @@ incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
zoneName = delDot(options["n"].lower())
|
|
|
|
|
if not zoneName:
|
|
|
|
|
self.printERROR(_('Incorrect zone name'))
|
|
|
|
|
self.printERROR(_('Error in command line options "-n"'))
|
|
|
|
|
self.printERROR(_('Error in command line option "-n"'))
|
|
|
|
|
return False
|
|
|
|
|
# Проверка на прямую зону
|
|
|
|
|
forwardZone = self.isForwardName(zoneName)
|
|
|
|
@ -16375,7 +16375,7 @@ incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
%zoneName)
|
|
|
|
|
self.printWARNING(_("Example network for reverse zone") +\
|
|
|
|
|
" :")
|
|
|
|
|
self.printWARNING(_('"-n 192.168.0.0/24"'))
|
|
|
|
|
self.printWARNING('"-n 192.168.0.0/24"')
|
|
|
|
|
return False
|
|
|
|
|
dataIP = self.getDomainAndZoneFromIP(network)
|
|
|
|
|
if not dataIP:
|
|
|
|
@ -16409,7 +16409,7 @@ incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
DN = self.addDN("relativeDomainName=@", relZoneDN)
|
|
|
|
|
if not self.modAttrsDN(DN, modAttrs):
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_("Can not delete A records in zone %s")\
|
|
|
|
|
_("Can not delete A records in zone %s")\
|
|
|
|
|
%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
self.printSUCCESS(_("Deleted A records in zone %s")%zoneName)
|
|
|
|
@ -16475,7 +16475,7 @@ incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
zoneName = delDot(options["n"].lower())
|
|
|
|
|
if not zoneName:
|
|
|
|
|
self.printERROR(_('Incorrect zone name'))
|
|
|
|
|
self.printERROR(_('Error in command line options "-n"'))
|
|
|
|
|
self.printERROR(_('Error in command line option "-n"'))
|
|
|
|
|
return False
|
|
|
|
|
# Проверка на прямую зону
|
|
|
|
|
forwardZone = self.isForwardName(zoneName)
|
|
|
|
@ -16489,12 +16489,12 @@ incompatible with options "--ip" (PTR record)'))
|
|
|
|
|
# Проверка на недопустимые ключи для обратной зоны
|
|
|
|
|
# ip зоны для обратной зоны недопустим
|
|
|
|
|
if options.has_key('ip'):
|
|
|
|
|
self.printERROR(_('Command line options "--ip" \
|
|
|
|
|
self.printERROR(_('Command line option "--ip" \
|
|
|
|
|
incompatible with reverse DNS zone %s')%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
# MX записи для обратной зоны недопустимы
|
|
|
|
|
if options.has_key('mx'):
|
|
|
|
|
self.printERROR(_('Command line options "--mx" \
|
|
|
|
|
self.printERROR(_('Command line option "--mx" \
|
|
|
|
|
incompatible with reverse DNS zone %s')%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
network, spl, netmask = zoneName.rpartition("/")
|
|
|
|
@ -16504,7 +16504,7 @@ incompatible with reverse DNS zone %s')%zoneName)
|
|
|
|
|
%zoneName)
|
|
|
|
|
self.printWARNING(_("Example network for reverse zone") +\
|
|
|
|
|
" :")
|
|
|
|
|
self.printWARNING(_('"-n 192.168.0.0/24"'))
|
|
|
|
|
self.printWARNING('"-n 192.168.0.0/24"')
|
|
|
|
|
return False
|
|
|
|
|
netSpl = network.split(".")
|
|
|
|
|
netSpl.pop()
|
|
|
|
@ -16547,7 +16547,7 @@ incompatible with reverse DNS zone %s')%zoneName)
|
|
|
|
|
if not flagZoneMaster:
|
|
|
|
|
if not self.isCorrectStringNet(options['servers'], False):
|
|
|
|
|
self.printERROR(_('Incorrect autoritatives servers IP'))
|
|
|
|
|
self.printERROR(_('Error in command line options \
|
|
|
|
|
self.printERROR(_('Error in command line option \
|
|
|
|
|
"--servers"'))
|
|
|
|
|
self.printWARNING(_('Example:'))
|
|
|
|
|
self.printWARNING('--servers 192.168.0.1,192.168.0.2')
|
|
|
|
@ -16560,7 +16560,7 @@ incompatible with reverse DNS zone %s')%zoneName)
|
|
|
|
|
break
|
|
|
|
|
if flagErrorNs:
|
|
|
|
|
self.printERROR(_('Incorrect autoritatives servers names'))
|
|
|
|
|
self.printERROR(_('Error in command line options \
|
|
|
|
|
self.printERROR(_('Error in command line option \
|
|
|
|
|
"--servers"'))
|
|
|
|
|
self.printWARNING(_('Example:'))
|
|
|
|
|
self.printWARNING('--servers ns.domain.ru,ns1.domain.ru')
|
|
|
|
@ -16576,14 +16576,14 @@ incompatible with reverse DNS zone %s')%zoneName)
|
|
|
|
|
nameServer = delDot(options["server"].lower())
|
|
|
|
|
if self.isCorrectStringNet(nameServer, False):
|
|
|
|
|
self.printERROR(_('Incorrect autoritative server'))
|
|
|
|
|
self.printERROR(_('Error in command line options \
|
|
|
|
|
self.printERROR(_('Error in command line option \
|
|
|
|
|
"--server"'))
|
|
|
|
|
self.printWARNING(_('Example:'))
|
|
|
|
|
self.printWARNING('--server ns.domain.com')
|
|
|
|
|
return False
|
|
|
|
|
if not nameServer:
|
|
|
|
|
self.printERROR(_('Incorrect autoritative server name'))
|
|
|
|
|
self.printERROR(_('Error in command line options \
|
|
|
|
|
self.printERROR(_('Error in command line option \
|
|
|
|
|
"--server"'))
|
|
|
|
|
return False
|
|
|
|
|
# Добавляем мастер сервер в имена авторитативаных серверов
|
|
|
|
@ -16913,7 +16913,7 @@ this DNS server')%nameServer)
|
|
|
|
|
zoneName = delDot(options["n"].lower())
|
|
|
|
|
if not zoneName:
|
|
|
|
|
self.printERROR(_('Incorrect zone name'))
|
|
|
|
|
self.printERROR(_('Error in command line options "-n"'))
|
|
|
|
|
self.printERROR(_('Error in command line option "-n"'))
|
|
|
|
|
return False
|
|
|
|
|
# Проверка на прямую зону
|
|
|
|
|
forwardZone = self.isForwardName(zoneName)
|
|
|
|
@ -16926,7 +16926,7 @@ this DNS server')%nameServer)
|
|
|
|
|
%zoneName)
|
|
|
|
|
self.printWARNING(_("Example network for reverse zone") +\
|
|
|
|
|
" :")
|
|
|
|
|
self.printWARNING(_('"-n 192.168.0.0/24"'))
|
|
|
|
|
self.printWARNING('"-n 192.168.0.0/24"')
|
|
|
|
|
return False
|
|
|
|
|
dataIP = self.getDomainAndZoneFromIP(network)
|
|
|
|
|
if not dataIP:
|
|
|
|
@ -16960,7 +16960,7 @@ with option "--mxmod"')
|
|
|
|
|
options['mxmod'].split(","))
|
|
|
|
|
modMxServers = self.unicList(modMxServers)
|
|
|
|
|
if len(modMxServers)!=2:
|
|
|
|
|
self.printERROR(_('Incorrect command line options "--mxmod"'))
|
|
|
|
|
self.printERROR(_('Incorrect command line option "--mxmod"'))
|
|
|
|
|
self.printWARNING(_("Example") + ":")
|
|
|
|
|
self.printWARNING("--mxmod old.mail.host,new.mail.host")
|
|
|
|
|
return False
|
|
|
|
@ -16981,7 +16981,7 @@ with option "--mxmod"')
|
|
|
|
|
nSRecords = zoneData[0][0][1]['nSRecord']
|
|
|
|
|
soaData = map(lambda x: delDot(x), soaRecord.split(" "))
|
|
|
|
|
if len(soaData)!=7:
|
|
|
|
|
self.printERROR(_("Incorrect SOA Record in DNS zone %s")%zoneName)
|
|
|
|
|
self.printERROR(_("Incorrect SOA record in DNS zone %s")%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
# Все авторитативные сервера зоны, в случае slаve зоны
|
|
|
|
|
namesServers = map(lambda x: delDot(x), nSRecords)
|
|
|
|
@ -17059,7 +17059,7 @@ with option "--mxmod"')
|
|
|
|
|
break
|
|
|
|
|
if flagErrorNs:
|
|
|
|
|
self.printERROR(_('Incorrect autoritatives servers names'))
|
|
|
|
|
self.printERROR(_('Error in command line options "--servers"'))
|
|
|
|
|
self.printERROR(_('Error in command line option "--servers"'))
|
|
|
|
|
self.printWARNING(_('Example:'))
|
|
|
|
|
self.printWARNING('--servers ns.domain.ru,ns1.domain.ru')
|
|
|
|
|
return False
|
|
|
|
@ -17069,14 +17069,14 @@ with option "--mxmod"')
|
|
|
|
|
nameServer = delDot(options["server"].lower())
|
|
|
|
|
if self.isCorrectStringNet(nameServer, False):
|
|
|
|
|
self.printERROR(_('Incorrect autoritative server'))
|
|
|
|
|
self.printERROR(_('Error in command line options \
|
|
|
|
|
self.printERROR(_('Error in command line option \
|
|
|
|
|
"--server"'))
|
|
|
|
|
self.printWARNING(_('Example:'))
|
|
|
|
|
self.printWARNING('--server ns.domain.com')
|
|
|
|
|
return False
|
|
|
|
|
if not nameServer:
|
|
|
|
|
self.printERROR(_('Incorrect autoritative server name'))
|
|
|
|
|
self.printERROR(_('Error in command line options \
|
|
|
|
|
self.printERROR(_('Error in command line option \
|
|
|
|
|
"--server"'))
|
|
|
|
|
return False
|
|
|
|
|
# Добавляем мастер сервер в имена авторитативаных серверов
|
|
|
|
@ -17142,7 +17142,7 @@ with option "--mxmod"')
|
|
|
|
|
map(lambda x: addDot(x), namesServers)))
|
|
|
|
|
DN = self.addDN("relativeDomainName=@", relZoneDN)
|
|
|
|
|
if not self.modAttrsDN(DN, modAttrs):
|
|
|
|
|
self.printERROR(_("Can not modify new SOA record for zone %s\
|
|
|
|
|
self.printERROR(_("Can not modify new SOA record for zone %s \
|
|
|
|
|
in LDAP")%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
# Результат исполнения для пользователя
|
|
|
|
@ -17191,7 +17191,7 @@ with option "--ip"')
|
|
|
|
|
elif autoMod == "off":
|
|
|
|
|
modOther = False
|
|
|
|
|
else:
|
|
|
|
|
self.printERROR(_('Command line options "--automod %s" \
|
|
|
|
|
self.printERROR(_('Command line option "--automod %s" \
|
|
|
|
|
incorrect, use "--automod on" or "--automod off"')%autoMod)
|
|
|
|
|
return False
|
|
|
|
|
# По умолчанию прямой тип записи
|
|
|
|
@ -17267,8 +17267,8 @@ with option "--mxmod"')
|
|
|
|
|
_('Optional comand line option %s it has a wrong value')\
|
|
|
|
|
%addQ([key])[0])
|
|
|
|
|
self.printWARNING(_('Valid values are the options %s')\
|
|
|
|
|
%addQ([key])[0] + " " + _('(%s)')\
|
|
|
|
|
% " or ".join(map(lambda x: '"%s"'%x, value)))
|
|
|
|
|
%addQ([key])[0] + " " + '(%s)'\
|
|
|
|
|
% (" "+_("or")+" ").join(map(lambda x: '"%s"'%x, value)))
|
|
|
|
|
return False
|
|
|
|
|
# Проверка лишних опций
|
|
|
|
|
unnecessaryOpt = list(set(optKeys)-set(requiredOpt+optionalOpt.keys()))
|
|
|
|
@ -17279,16 +17279,16 @@ with option "--mxmod"')
|
|
|
|
|
|
|
|
|
|
mxServers = []
|
|
|
|
|
if options.has_key('mx'):
|
|
|
|
|
# Оключаем мод<EFBFBD>фикацию обратной зоны
|
|
|
|
|
# Оключаем модификацию обратной зоны
|
|
|
|
|
modOther = False
|
|
|
|
|
# Почтовые серверы для доменного имени
|
|
|
|
|
if typeRec == "ptr":
|
|
|
|
|
self.printERROR(_('Command line options "--mx" \
|
|
|
|
|
incompatible with PTR record (options "-t")'))
|
|
|
|
|
self.printERROR(_('Command line option "--mx" \
|
|
|
|
|
incompatible with PTR record (option "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
if typeRec == "cname":
|
|
|
|
|
self.printERROR(_('Command line options "--mx" \
|
|
|
|
|
incompatible with CNAME record (options "-t")'))
|
|
|
|
|
self.printERROR(_('Command line option "--mx" \
|
|
|
|
|
incompatible with CNAME record (option "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
mxServers=map(lambda x: delDot(x.lower()),
|
|
|
|
|
options['mx'].split(","))
|
|
|
|
@ -17302,18 +17302,18 @@ incompatible with CNAME record (options "-t")'))
|
|
|
|
|
modOther = False
|
|
|
|
|
# Почтовые cерверы для доменного имени
|
|
|
|
|
if typeRec == "ptr":
|
|
|
|
|
self.printERROR(_('Command line options "--mxmod" \
|
|
|
|
|
incompatible with PTR record (options "-t")'))
|
|
|
|
|
self.printERROR(_('Command line option "--mxmod" \
|
|
|
|
|
incompatible with PTR record (option "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
if typeRec == "cname":
|
|
|
|
|
self.printERROR(_('Command line options "--mxmod" \
|
|
|
|
|
incompatible with CNAME record (options "-t")'))
|
|
|
|
|
self.printERROR(_('Command line option "--mxmod" \
|
|
|
|
|
incompatible with CNAME record (option "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
modMxServers=map(lambda x: delDot(x.lower()),\
|
|
|
|
|
options['mxmod'].split(","))
|
|
|
|
|
modMxServers = self.unicList(modMxServers)
|
|
|
|
|
if len(modMxServers)!=2:
|
|
|
|
|
self.printERROR(_('Incorrect command line options "--mxmod"'))
|
|
|
|
|
self.printERROR(_('Incorrect command line option "--mxmod"'))
|
|
|
|
|
self.printWARNING(_("Example") + ":")
|
|
|
|
|
self.printWARNING("--mxmod old.mail.host,new.mail.host")
|
|
|
|
|
return False
|
|
|
|
@ -17489,7 +17489,7 @@ is incompatible with option "--ip"')
|
|
|
|
|
if self.searchCNameInLDAP(domainName):
|
|
|
|
|
self.printERROR(_("CNAME record %s exists in LDAP")\
|
|
|
|
|
%domainName)
|
|
|
|
|
self.printWARNING(_('Use command line options "-t cname"'))
|
|
|
|
|
self.printWARNING(_('Use command line option "-t cname"'))
|
|
|
|
|
return False
|
|
|
|
|
foundMain = self.searchDomainNameInLDAP(domainName)
|
|
|
|
|
if not foundMain:
|
|
|
|
@ -17758,11 +17758,11 @@ is incompatible with option "--ip"')
|
|
|
|
|
otherIP = ip
|
|
|
|
|
if typeRec == "cname":
|
|
|
|
|
self.printERROR(_('IP address %s')%ip + " " +\
|
|
|
|
|
_('incompatible with CNAME record (options "-t")'))
|
|
|
|
|
_('incompatible with CNAME record (option "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
if "cname" in optKeys:
|
|
|
|
|
self.printERROR(_('IP address %s')%ip + " " +\
|
|
|
|
|
_('incompatible with CNAME record (options "--cname")'))
|
|
|
|
|
_('incompatible with CNAME record (option "--cname")'))
|
|
|
|
|
return False
|
|
|
|
|
# Поиск модифицируемой записи в DNS
|
|
|
|
|
# Поиск основной записи
|
|
|
|
@ -17870,7 +17870,7 @@ is incompatible with option "--ip"')
|
|
|
|
|
if self.searchCNameInLDAP(domainName):
|
|
|
|
|
self.printERROR(_("CNAME record %s exists in LDAP")\
|
|
|
|
|
%domainName)
|
|
|
|
|
self.printWARNING(_('Use command line options "-t cname"'))
|
|
|
|
|
self.printWARNING(_('Use command line option "-t cname"'))
|
|
|
|
|
return False
|
|
|
|
|
foundMain = self.searchDomainNameInLDAP(domainName)
|
|
|
|
|
if not foundMain:
|
|
|
|
@ -18131,12 +18131,12 @@ is incompatible with option "--ip"')
|
|
|
|
|
createPtr = True
|
|
|
|
|
if options.has_key('autoptr'):
|
|
|
|
|
if typeRec == "ptr":
|
|
|
|
|
self.printERROR(_('Command line options "--autoptr" \
|
|
|
|
|
incompatible with type DNS record PTR (options "-t")'))
|
|
|
|
|
self.printERROR(_('Command line option "--autoptr" \
|
|
|
|
|
incompatible with type DNS record PTR (option "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
if typeRec == "cname":
|
|
|
|
|
self.printERROR(_('Command line options "--autoptr" \
|
|
|
|
|
incompatible with type DNS record CNAME (options "-t")'))
|
|
|
|
|
self.printERROR(_('Command line option "--autoptr" \
|
|
|
|
|
incompatible with type DNS record CNAME (option "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
autoPtr = options['autoptr']
|
|
|
|
|
if autoPtr == "on":
|
|
|
|
@ -18144,7 +18144,7 @@ incompatible with type DNS record CNAME (options "-t")'))
|
|
|
|
|
elif autoPtr == "off":
|
|
|
|
|
createPtr = False
|
|
|
|
|
else:
|
|
|
|
|
self.printERROR(_('Command line options "--autoptr %s" \
|
|
|
|
|
self.printERROR(_('Command line option "--autoptr %s" \
|
|
|
|
|
incorrect, use "--autoptr on" or "--autoptr off"')%autoPtr)
|
|
|
|
|
return False
|
|
|
|
|
# Удаляет лишние точки в названии
|
|
|
|
@ -18165,12 +18165,12 @@ incorrect, use "--autoptr on" or "--autoptr off"')%autoPtr)
|
|
|
|
|
cnZoneName = ""
|
|
|
|
|
if options.has_key('cname'):
|
|
|
|
|
if options.has_key('ip'):
|
|
|
|
|
self.printERROR(_('Command line options "--ip" incompatible \
|
|
|
|
|
with type DNS record CNAME (options "-t")'))
|
|
|
|
|
self.printERROR(_('Command line option "--ip" incompatible \
|
|
|
|
|
with type DNS record CNAME (option "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
if options.has_key('mx'):
|
|
|
|
|
self.printERROR(_('Command line options "--mx" incompatible \
|
|
|
|
|
with type DNS record CNAME (options "-t")'))
|
|
|
|
|
self.printERROR(_('Command line option "--mx" incompatible \
|
|
|
|
|
with type DNS record CNAME (option "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
# Доменное каноническое имя (имя включающее домен) для CNAME
|
|
|
|
|
cnDomainName = delDot(options['cname'].lower())
|
|
|
|
@ -18198,8 +18198,8 @@ with type DNS record CNAME (options "-t")'))
|
|
|
|
|
if options.has_key('mx'):
|
|
|
|
|
# Почтовые серверы для доменного имени
|
|
|
|
|
if typeRec == "ptr":
|
|
|
|
|
self.printERROR(_('Command line options "--mx" incompatible \
|
|
|
|
|
with type DNS record PTR (options "-t")'))
|
|
|
|
|
self.printERROR(_('Command line option "--mx" incompatible \
|
|
|
|
|
with type DNS record PTR (option "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
mxServers = map(lambda x: delDot(x.lower()),\
|
|
|
|
|
options['mx'].split(","))
|
|
|
|
@ -18388,7 +18388,7 @@ with type DNS record PTR (options "-t")'))
|
|
|
|
|
if flagForward:
|
|
|
|
|
errorMessage = _("Can not add A record in LDAP")
|
|
|
|
|
else:
|
|
|
|
|
errorMessage = _("Can not add RTR record in LDAP")
|
|
|
|
|
errorMessage = _("Can not add PTR record in LDAP")
|
|
|
|
|
# Добавляем запись для хоста
|
|
|
|
|
if not self.addEntry(domainDN, domainEntry,errorMessage):
|
|
|
|
|
return False
|
|
|
|
@ -18424,19 +18424,19 @@ with type DNS record PTR (options "-t")'))
|
|
|
|
|
return False
|
|
|
|
|
foundNames = self.searchDomainNameInLDAP("@.%s"%zoneName)
|
|
|
|
|
if not foundNames:
|
|
|
|
|
self.printERROR(_("Can not found SOA Record in DNS zone %s")\
|
|
|
|
|
self.printERROR(_("Can not found SOA record in DNS zone %s")\
|
|
|
|
|
%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
sOARecord = foundNames[0][0][1]['sOARecord'][0]
|
|
|
|
|
sOAList = sOARecord.split(" ")
|
|
|
|
|
if len(sOAList)!=7:
|
|
|
|
|
self.printERROR(_("Incorrect SOA Record in DNS zone %s")%zoneName)
|
|
|
|
|
self.printERROR(_("Incorrect SOA record in DNS zone %s")%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
try:
|
|
|
|
|
serialNumber = str(ctypes.c_uint32(int(sOAList[2])).value + 1)
|
|
|
|
|
except:
|
|
|
|
|
self.printERROR(_("Incorrect SOA Record in DNS zone %s")%zoneName)
|
|
|
|
|
self.printERROR(_("Incorrect serial number %s in SOA Record")\
|
|
|
|
|
self.printERROR(_("Incorrect SOA record in DNS zone %s")%zoneName)
|
|
|
|
|
self.printERROR(_("Incorrect serial number %s in SOA record")\
|
|
|
|
|
%str(sOAList[2]))
|
|
|
|
|
return False
|
|
|
|
|
sOAList[2] = serialNumber
|
|
|
|
@ -18445,7 +18445,7 @@ with type DNS record PTR (options "-t")'))
|
|
|
|
|
modAttrs = [(ldap.MOD_REPLACE, 'sOARecord', sOARecord)]
|
|
|
|
|
DN = self.addDN("relativeDomainName=@", relZoneDN)
|
|
|
|
|
if not self.modAttrsDN(DN, modAttrs):
|
|
|
|
|
self.printERROR(_("Can not write new serial number for zone %s\
|
|
|
|
|
self.printERROR(_("Can not write new serial number for zone %s \
|
|
|
|
|
in LDAP")%zoneName)
|
|
|
|
|
return False
|
|
|
|
|
return True
|
|
|
|
@ -18681,16 +18681,16 @@ class servDhcp(shareLdap):
|
|
|
|
|
hostname = options["host"]
|
|
|
|
|
# Проверка правильности названия хоста
|
|
|
|
|
if '.' in hostname:
|
|
|
|
|
self.printERROR(_('Command line options "--host %s" incorrectly')\
|
|
|
|
|
self.printERROR(_('Command line option "--host %s" incorrectly')\
|
|
|
|
|
%hostname)
|
|
|
|
|
self.printWARNING(_("Example") + " :")
|
|
|
|
|
self.printWARNING(_('"--host computer'))
|
|
|
|
|
self.printWARNING('"--host computer')
|
|
|
|
|
return False
|
|
|
|
|
# ip адрес хоста
|
|
|
|
|
ip = options["ip"]
|
|
|
|
|
# проверка правильности ip
|
|
|
|
|
if "," in ip or not self.isCorrectStringNet(ip, False):
|
|
|
|
|
self.printERROR(_('Command line options "--ip %s" incorrectly')%ip)
|
|
|
|
|
self.printERROR(_('Command line option "--ip %s" incorrectly')%ip)
|
|
|
|
|
self.printERROR(_("IP address %s incorrectly")%ip)
|
|
|
|
|
return False
|
|
|
|
|
dhcpObj = dncpTxt()
|
|
|
|
@ -18701,11 +18701,11 @@ class servDhcp(shareLdap):
|
|
|
|
|
# mac адрес хоста
|
|
|
|
|
mac = options["mac"]
|
|
|
|
|
if not self.isCorrectMacAddress(mac):
|
|
|
|
|
self.printERROR(_('Command line options "--mac %s" incorrectly')\
|
|
|
|
|
self.printERROR(_('Command line option "--mac %s" incorrectly')\
|
|
|
|
|
%mac)
|
|
|
|
|
self.printERROR(_("Mac address %s incorrectly")%mac)
|
|
|
|
|
self.printWARNING(_("Example") + " :")
|
|
|
|
|
self.printWARNING(_('"--mac 00:23:32:fa:b7:07'))
|
|
|
|
|
self.printWARNING('"--mac 00:23:32:fa:b7:07')
|
|
|
|
|
return False
|
|
|
|
|
# Проверка наличия mac адреса в конфигурационном файле
|
|
|
|
|
if not self.isNotExistsStaticMAC(mac, dhcpObj):
|
|
|
|
@ -18867,7 +18867,7 @@ eth0, eth1, ... etc."%net)
|
|
|
|
|
ip = options["ip"]
|
|
|
|
|
# проверка правильности ip
|
|
|
|
|
if "," in ip or not self.isCorrectStringNet(ip, False):
|
|
|
|
|
self.printERROR(_('Command line options "--ip %s" incorrectly')\
|
|
|
|
|
self.printERROR(_('Command line option "--ip %s" incorrectly')\
|
|
|
|
|
%ip)
|
|
|
|
|
self.printERROR(_("IP address %s incorrectly")%ip)
|
|
|
|
|
return False
|
|
|
|
@ -18888,10 +18888,10 @@ eth0, eth1, ... etc."%net)
|
|
|
|
|
mac = options["mac"]
|
|
|
|
|
if not self.isCorrectMacAddress(mac):
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_('Command line options "--mac %s" incorrectly') %mac)
|
|
|
|
|
_('Command line option "--mac %s" incorrectly') %mac)
|
|
|
|
|
self.printERROR(_("Mac address %s incorrectly")%mac)
|
|
|
|
|
self.printWARNING(_("Example") + " :")
|
|
|
|
|
self.printWARNING(_('"--mac 00:23:32:fa:b7:07'))
|
|
|
|
|
self.printWARNING('"--mac 00:23:32:fa:b7:07')
|
|
|
|
|
return False
|
|
|
|
|
# Проверка наличия mac адреса в конфигурационном файле
|
|
|
|
|
if not self.isNotExistsStaticMAC(mac, dhcpObj):
|
|
|
|
@ -18922,7 +18922,7 @@ eth0, eth1, ... etc."%net)
|
|
|
|
|
not self.isCorrectStringNet(net):
|
|
|
|
|
self.printERROR(_('Incorrect network %s')%net)
|
|
|
|
|
self.printWARNING(_("Example network") + " :")
|
|
|
|
|
self.printWARNING(_('"192.168.0.0/24"'))
|
|
|
|
|
self.printWARNING('"192.168.0.0/24"')
|
|
|
|
|
return False
|
|
|
|
|
dhcpObj = dncpTxt()
|
|
|
|
|
xmlNodesNet = dhcpObj.getXMLNet(network)
|
|
|
|
@ -18937,7 +18937,7 @@ eth0, eth1, ... etc."%net)
|
|
|
|
|
# Проверка коректности ip роутера
|
|
|
|
|
if "," in router or not self.isCorrectStringNet(router, False):
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_('Command line options "--router %s" incorrectly')\
|
|
|
|
|
_('Command line option "--router %s" incorrectly')\
|
|
|
|
|
%router)
|
|
|
|
|
self.printERROR(_("IP address %s incorrectly")%router)
|
|
|
|
|
return False
|
|
|
|
@ -18976,7 +18976,7 @@ eth0, eth1, ... etc."%net)
|
|
|
|
|
if not self.isCorrectStringNet(dnsIP, False) or\
|
|
|
|
|
len(dnsIP.split(',')) > 3:
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_('Command line options "--dnsip %s" incorrectly')%dnsIP)
|
|
|
|
|
_('Command line option "--dnsip %s" incorrectly')%dnsIP)
|
|
|
|
|
self.printERROR(_("IP addresses %s incorrectly")%dnsIP)
|
|
|
|
|
return False
|
|
|
|
|
domainsTxt = " ".join(domainNames)
|
|
|
|
@ -19033,10 +19033,10 @@ eth0, eth1, ... etc."%net)
|
|
|
|
|
hostname = options["host"]
|
|
|
|
|
# Проверка правильности названия хоста
|
|
|
|
|
if '.' in hostname:
|
|
|
|
|
self.printERROR(_('Command line options "--host %s" incorrectly')\
|
|
|
|
|
self.printERROR(_('Command line option "--host %s" incorrectly')\
|
|
|
|
|
%hostname)
|
|
|
|
|
self.printWARNING(_("Example") + " :")
|
|
|
|
|
self.printWARNING(_('"--host computer'))
|
|
|
|
|
self.printWARNING('"--host computer')
|
|
|
|
|
return False
|
|
|
|
|
dhcpObj = dncpTxt()
|
|
|
|
|
ip = ""
|
|
|
|
@ -19087,7 +19087,7 @@ eth0, eth1, ... etc."%net)
|
|
|
|
|
not self.isCorrectStringNet(net):
|
|
|
|
|
self.printERROR(_('Incorrect network %s')%net)
|
|
|
|
|
self.printWARNING(_("Example network") + " :")
|
|
|
|
|
self.printWARNING(_('"--net 192.168.0.0/24"'))
|
|
|
|
|
self.printWARNING('"--net 192.168.0.0/24"')
|
|
|
|
|
return False
|
|
|
|
|
netIP = net.partition("/")[0]
|
|
|
|
|
dhcpObj = dncpTxt()
|
|
|
|
@ -19157,7 +19157,7 @@ eth0, eth1, ... etc."%net)
|
|
|
|
|
not self.isCorrectStringNet(net):
|
|
|
|
|
self.printERROR(_('Incorrect network %s')%net)
|
|
|
|
|
self.printWARNING(_("Example network") + " :")
|
|
|
|
|
self.printWARNING(_('"--net 192.168.0.0/24"'))
|
|
|
|
|
self.printWARNING('"--net 192.168.0.0/24"')
|
|
|
|
|
return False
|
|
|
|
|
# проверка наличия сети на интерфейсах сервера
|
|
|
|
|
if not self.isCorrectNet(net):
|
|
|
|
@ -19166,7 +19166,7 @@ eth0, eth1, ... etc."%net)
|
|
|
|
|
router = options["router"]
|
|
|
|
|
# Проверка коректности ip роутера
|
|
|
|
|
if "," in router or not self.isCorrectStringNet(router, False):
|
|
|
|
|
self.printERROR(_('Command line options "--router %s" incorrectly')\
|
|
|
|
|
self.printERROR(_('Command line option "--router %s" incorrectly')\
|
|
|
|
|
%router)
|
|
|
|
|
self.printERROR(_("IP address %s incorrectly")%router)
|
|
|
|
|
return False
|
|
|
|
@ -19199,7 +19199,7 @@ eth0, eth1, ... etc."%net)
|
|
|
|
|
if not self.isCorrectStringNet(dnsIP, False) or\
|
|
|
|
|
len(dnsIP.split(',')) > 3:
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_('Command line options "--dnsip %s" incorrectly')%dnsIP)
|
|
|
|
|
_('Command line option "--dnsip %s" incorrectly')%dnsIP)
|
|
|
|
|
self.printERROR(_("IP addresses %s incorrectly")%dnsIP)
|
|
|
|
|
return False
|
|
|
|
|
dhcpObj = dncpTxt()
|
|
|
|
@ -19444,7 +19444,7 @@ incompatible, use one of the options"))
|
|
|
|
|
domain = options['domain']
|
|
|
|
|
listDomain = filter(lambda x: x.strip(), domain.split(" "))
|
|
|
|
|
if not listDomain:
|
|
|
|
|
self.printERROR(_('Incorrect command line options "--domain"'))
|
|
|
|
|
self.printERROR(_('Incorrect command line option "--domain"'))
|
|
|
|
|
return False
|
|
|
|
|
domain = listDomain[0].strip()
|
|
|
|
|
host = options['host']
|
|
|
|
@ -19672,7 +19672,7 @@ incompatible, use one of the options"))
|
|
|
|
|
IPsNetwork = list(set(dnsNetIPs) & set(rangeNetIPs))
|
|
|
|
|
if not IPsNetwork:
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_('Command line options "--dnsip %s" incorrectly')\
|
|
|
|
|
_('Command line option "--dnsip %s" incorrectly')\
|
|
|
|
|
%dnsIP)
|
|
|
|
|
self.printERROR(_("Can not found ip address dns servers in \
|
|
|
|
|
network %s")%net)
|
|
|
|
@ -19682,9 +19682,9 @@ network %s")%net)
|
|
|
|
|
netDnsServer = list(set(netIPs) & set(IPsNetwork))
|
|
|
|
|
if not netDnsServer:
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_('Command line options "--dnsip %s" incorrectly')\
|
|
|
|
|
_('Command line option "--dnsip %s" incorrectly')\
|
|
|
|
|
%dnsIP)
|
|
|
|
|
self.printERROR(_("Can not found dns ip in net interfaces"))
|
|
|
|
|
self.printERROR(_("Can not found DNS server ip in net interfaces"))
|
|
|
|
|
return False
|
|
|
|
|
# ip этого DNS сервера
|
|
|
|
|
ipserver = filter(lambda x: x.rpartition(".")[0] in netDnsServer,\
|
|
|
|
@ -20098,7 +20098,7 @@ network %s")%net)
|
|
|
|
|
try:
|
|
|
|
|
os.chmod(cl_log.log.logDir,0755)
|
|
|
|
|
except:
|
|
|
|
|
self.printERROR(_("Can not set mode 0755 in %s")\
|
|
|
|
|
self.printERROR(_("Can not set mode 0755 for %s")\
|
|
|
|
|
%cl_log.log.logDir)
|
|
|
|
|
return False
|
|
|
|
|
if dUid !=0 or dGid !=0:
|
|
|
|
|