def Check(self): ok=True ips=self.IpAddress.splitlines() ok=self.CheckValid(ok, self.Hostname, xlt("Please enter Host Name")) if self.isNew: ok=self.CheckValid(ok, not self.node.hosts4.get(self.Hostname) and not self.node.hosts6.get(self.Hostname), xlt("Host record already exists")) ok=self.CheckValid(ok, len(ips)>0, xlt("Please enter IP Address")) for ip in ips: ip=ip.strip() ok = self.CheckValid(ok, checkIpAddress(ip), xlt("Please enter valid IP Address")) ok=self.CheckValid(ok, timeToFloat(self.ttl), xlt("Please enter valid TTL")) if self.ttl6: ok=self.CheckValid(ok, timeToFloat(self.ttl6), xlt("Please enter valid AAAA TTL")) return ok
def Check(self): ok=True if not self.rds: ok=self.CheckValid(ok, self.Recordname, xlt(("Enter %s") % self.RecordNameStatic)) if self.rdtype == rdatatype.CNAME: foundSame=self.node.cnames.get(self.Recordname) foundOther=self.node.hosts4.get(self.Recordname) if not foundOther: foundOther=self.node.hosts6.get(self.Recordname) if not foundOther: foundOther=self.node.ptrs.get(self.Recordname) if not foundOther: # SIG, NXT and KEY allowed foundOther=self.node.others.get(self.Recordname) ok=self.CheckValid(ok, not foundOther, xlt("CNAME collides with existing record")) else: foundSame=self.node.others.get(self.Recordname, {}).get(self.rdtype) # SIG, NXT and KEY: CNAME allowed foundCname=self.node.cnames.get(self.Recordname) ok=self.CheckValid(ok, not foundCname, xlt("Record collides with existing CNAME record")) ok=self.CheckValid(ok, not foundSame, xlt("Record of same type and name already exists")) ok=self.CheckValid(ok, timeToFloat(self.TTL), xlt("Please enter valid TTL value")) return ok
def Check(self): ok = True if not self.rds: ok = self.CheckValid(ok, self.Recordname, xlt(("Enter %s") % self.RecordNameStatic)) if self.rdtype == rdatatype.CNAME: foundSame = self.node.cnames.get(self.Recordname) foundOther = self.node.hosts4.get(self.Recordname) if not foundOther: foundOther = self.node.hosts6.get(self.Recordname) if not foundOther: foundOther = self.node.ptrs.get(self.Recordname) if not foundOther: # SIG, NXT and KEY allowed foundOther = self.node.others.get(self.Recordname) ok = self.CheckValid( ok, not foundOther, xlt("CNAME collides with existing record")) else: foundSame = self.node.others.get(self.Recordname, {}).get(self.rdtype) # SIG, NXT and KEY: CNAME allowed foundCname = self.node.cnames.get(self.Recordname) ok = self.CheckValid( ok, not foundCname, xlt("Record collides with existing CNAME record")) ok = self.CheckValid( ok, not foundSame, xlt("Record of same type and name already exists")) ok = self.CheckValid(ok, timeToFloat(self.TTL), xlt("Please enter valid TTL value")) return ok
def Check(self): ok = True ips = self.IpAddress.splitlines() ok = self.CheckValid(ok, self.Hostname, xlt("Please enter Host Name")) if self.isNew: ok = self.CheckValid( ok, not self.node.hosts4.get(self.Hostname) and not self.node.hosts6.get(self.Hostname), xlt("Host record already exists")) ok = self.CheckValid(ok, len(ips) > 0, xlt("Please enter IP Address")) for ip in ips: ip = ip.strip() ok = self.CheckValid(ok, checkIpAddress(ip), xlt("Please enter valid IP Address")) ok = self.CheckValid(ok, timeToFloat(self.ttl), xlt("Please enter valid TTL")) if self.ttl6: ok = self.CheckValid(ok, timeToFloat(self.ttl6), xlt("Please enter valid AAAA TTL")) return ok
def valFmt(val, unit): if not unit: return val ul = unit.lower() if ul == "8kb": return floatToSize(int(val) * 8192) val = "%s %s" % (val, unit) if ul in ['kb', 'mb', 'gb']: return floatToSize(sizeToFloat(val[:-1] + "iB")) elif ul in ['ms', 's', 'h', 'min']: return floatToTime(timeToFloat(val)) else: return val
def valFmt(val, unit): if not unit: return val ul=unit.lower() if ul == "8kb": return floatToSize(int(val)*8192) val="%s %s" % (val, unit) if ul in ['kb', 'mb', 'gb']: return floatToSize(sizeToFloat(val[:-1] + "iB")) elif ul in ['ms', 's', 'h', 'min']: return floatToTime(timeToFloat(val)) else: return val
def Save(self): ttl=int(timeToFloat(self.TTL)) rds=None for value in self.Value.splitlines(): value=value.strip() if not value: continue if self.dataclass == list: value=removeSmartQuote(value) data=shlexSplit(value, ' ') else: data=self.dataclass(value) if not rds: rds=Rdataset(ttl, rdataclass.IN, self.rdtype, data) else: rds.add(Rdata(rds, data), ttl) return self._save(rds)
def Save(self): ttl = int(timeToFloat(self.TTL)) rds = None for value in self.Value.splitlines(): value = value.strip() if not value: continue if self.dataclass == list: value = removeSmartQuote(value) data = shlexSplit(value, ' ') else: data = self.dataclass(value) if not rds: rds = Rdataset(ttl, rdataclass.IN, self.rdtype, data) else: rds.add(Rdata(rds, data), ttl) return self._save(rds)
def Save(self): self.grid.SaveEditControlValue() ttl=int(timeToFloat(self.TTL)) rds=None for row in range(self.grid.GetNumberRows()-1): vals=[] for col in range(self.grid.GetNumberCols()): val=self.grid.GetCellValue(row, col).strip() coltype=type(self.slotvals[col]) if coltype == Name: vals.append(DnsName(val)) elif coltype == list: vals.append(val.split(' ')) else: vals.append(coltype(val)) if not rds: rds=Rdataset(ttl, rdataclass.IN, self.rdtype, *tuple(vals)) else: rds.add(Rdata(rds, *tuple(vals)), ttl) return self._save(rds)
def Save(self): self.grid.SaveEditControlValue() ttl = int(timeToFloat(self.TTL)) rds = None for row in range(self.grid.GetNumberRows() - 1): vals = [] for col in range(self.grid.GetNumberCols()): val = self.grid.GetCellValue(row, col).strip() coltype = type(self.slotvals[col]) if coltype == Name: vals.append(DnsName(val)) elif coltype == list: vals.append(val.split(' ')) else: vals.append(coltype(val)) if not rds: rds = Rdataset(ttl, rdataclass.IN, self.rdtype, *tuple(vals)) else: rds.add(Rdata(rds, *tuple(vals)), ttl) return self._save(rds)
def Save(self): ttl4=int(timeToFloat(self.TTL)) if self.ttl6: ttl6=int(timeToFloat(self.TTL6)) else: ttl6=ttl4 name=str(self.Hostname) updater=self.node.Updater() if self.node.hosts4.get(name): updater.delete(name, "A") if self.node.hosts4.get(name): updater.delete(name, "AAAA") h4=None h6=None addresses=self.IpAddress.splitlines() for address in addresses: address=address.strip() if not address: continue if checkIpAddress(address) == 4: if h4: h4.add(Rdata(h4, address), ttl4) else: h4=Rdataset(ttl4, rdataclass.IN, rdatatype.A, address) else: if h6: h6.add(Rdata(h6, address), ttl6) else: h6=Rdataset(ttl6, rdataclass.IN, rdatatype.AAAA, address) if h4: updater.add(name, h4) if h6: updater.add(name, h6) msg=self.node.GetServer().Send(updater) if msg.rcode() != rcode.NOERROR: self.SetStatus(xlt("DNS update failed: %s") % rcode.to_text(msg.rcode())) return False self.node.hosts4[name] = h4 self.node.hosts6[name] = h6 prevAddresses=self['IpAddress'].unchangedValue.splitlines() if self.CreatePtr: dnsName=DnsAbsName(name, self.node.zonename) for address in addresses: if address in prevAddresses: prevAddresses.remove(address) ptr, zone=self.node.GetServer().GetZoneName(DnsRevName(address)) if zone: if zone.endswith("in-addr.arpa"): ttl=ttl4 else: ttl=ttl6 updater=self.node.GetConnection().Updater(zone) updater.delete(ptr, 'PTR') updater.add(ptr, Rdataset(ttl, rdataclass.IN, rdatatype.PTR, dnsName)) _msg=self.node.GetServer().Send(updater) for address in prevAddresses: ptr, zone=self.node.GetServer().GetZoneName(DnsRevName(address)) if zone: updater=self.node.GetConnection().Updater(zone) updater.delete(ptr, 'PTR') _msg=self.node.GetServer().Send(updater) return True
def Save(self): ttl4 = int(timeToFloat(self.TTL)) if self.ttl6: ttl6 = int(timeToFloat(self.TTL6)) else: ttl6 = ttl4 name = str(self.Hostname) updater = self.node.Updater() if self.node.hosts4.get(name): updater.delete(name, "A") if self.node.hosts4.get(name): updater.delete(name, "AAAA") h4 = None h6 = None addresses = self.IpAddress.splitlines() for address in addresses: address = address.strip() if not address: continue if checkIpAddress(address) == 4: if h4: h4.add(Rdata(h4, address), ttl4) else: h4 = Rdataset(ttl4, rdataclass.IN, rdatatype.A, address) else: if h6: h6.add(Rdata(h6, address), ttl6) else: h6 = Rdataset(ttl6, rdataclass.IN, rdatatype.AAAA, address) if h4: updater.add(name, h4) if h6: updater.add(name, h6) msg = self.node.GetServer().Send(updater) if msg.rcode() != rcode.NOERROR: self.SetStatus( xlt("DNS update failed: %s") % rcode.to_text(msg.rcode())) return False self.node.hosts4[name] = h4 self.node.hosts6[name] = h6 prevAddresses = self['IpAddress'].unchangedValue.splitlines() if self.CreatePtr: dnsName = DnsAbsName(name, self.node.zonename) for address in addresses: if address in prevAddresses: prevAddresses.remove(address) ptr, zone = self.node.GetServer().GetZoneName( DnsRevName(address)) if zone: if zone.endswith("in-addr.arpa"): ttl = ttl4 else: ttl = ttl6 updater = self.node.GetConnection().Updater(zone) updater.delete(ptr, 'PTR') updater.add( ptr, Rdataset(ttl, rdataclass.IN, rdatatype.PTR, dnsName)) _msg = self.node.GetServer().Send(updater) for address in prevAddresses: ptr, zone = self.node.GetServer().GetZoneName( DnsRevName(address)) if zone: updater = self.node.GetConnection().Updater(zone) updater.delete(ptr, 'PTR') _msg = self.node.GetServer().Send(updater) return True