def gen_domain( self, domain, dname, records, rdomain ): if domain == 0 or dname == "root": print "Root domain, skipping" return else: print "Generating %s" % (dname) #if not re.search( "^10" ,self.ip_from_domainname(dname) ): # return self.gen_NS( domain, dname, rdomain ) records_to_remove = [] search_string = "^"+self.ip_from_domainname(dname).replace('.','\.')+"\." for record in records: longip, name = record ip = long2ip(longip) # TODO compile this if re.search( search_string, ip ): #self.printer.print_PTR( ip, name ) possible = PTR.objects.filter( ip_str = ip, name=name, ip_type='4' ) if possible: ptr = possible[0] else: ptr = PTR( ip_str = ip, name=name, ip_type='4' ) ptr.full_clean() ptr.save() records_to_remove.append( record ) for record in records_to_remove: records.remove(record) self.gen_ORIGIN( domain, dname, 999 )
def gen_domain(self, domain, dname, records): if domain == 0 or dname == "root": print "Root domain, skipping" return else: print "Generating %s" % (dname) #if not re.search( "^10" ,self.ip_from_domainname(dname) ): # return self.gen_ORIGIN(domain, dname, 999) self.gen_NS(domain, dname) self.gen_ORIGIN(domain, 'in-addr.arpa', 999) records_to_remove = [] search_string = "^" + self.ip_from_domainname(dname).replace( '.', '\.') + "\." for record in records: longip, name = record ip = long2ip(longip) # TODO compile this if re.search(search_string, ip): self.printer.print_PTR(ip, name) records_to_remove.append(record) for record in records_to_remove: records.remove(record) self.gen_ORIGIN(domain, dname, 999)
def gen_domain( self, domain, dname, records ): if domain == 0 or dname == "root": print "Root domain, skipping" return else: print "Generating %s" % (dname) #if not re.search( "^10" ,self.ip_from_domainname(dname) ): # return self.gen_ORIGIN( domain, dname, 999 ) self.gen_NS( domain, dname ) self.gen_ORIGIN( domain, 'in-addr.arpa', 999 ) records_to_remove = [] search_string = "^"+self.ip_from_domainname(dname).replace('.','\.')+"\." for record in records: longip, name = record ip = long2ip(longip) # TODO compile this if re.search( search_string, ip ): self.printer.print_PTR( ip, name ) records_to_remove.append( record ) for record in records_to_remove: records.remove(record) self.gen_ORIGIN( domain, dname, 999 )
def gen_host( self, domain, dname ): self.cur.execute("SELECT * FROM `host` WHERE `domain`='%s';" % (domain)) records = self.cur.fetchall() for record in records: if record[1] == 0: continue self.printer.print_A( record[3] , long2ip(record[1]) )
def gen_dyn_records( self ): self.cur.execute("SELECT start, end FROM ranges WHERE type='dynamic' ORDER by start") ip_ranges = self.cur.fetchall() PTR_records = [] for ip_range in ip_ranges: for ip in range(ip_range[0],ip_range[1]+1): PTR_records.append( (ip,long2ip(ip).replace('.','-')) ) return PTR_records
def gen_host(self, domain, dname): self.cur.execute("SELECT * FROM `host` WHERE `domain`='%s';" % (domain)) records = self.cur.fetchall() for record in records: if record[1] == 0: continue self.printer.print_A(record[3], long2ip(record[1]))
def gen_dyn_ranges( self, domain, dname ): ##self.printer.print_raw( "; Gen dyn_ranges for %s\n" % (dname) ) self.cur.execute( "SELECT start, end FROM ranges, zone_range\ WHERE ranges.id = zone_range.range AND zone_range.default_domain = %s\ AND ranges.type='dynamic' ORDER by start" % (domain) ) ip_ranges = self.cur.fetchall() for ip_range in ip_ranges: for ip in range(ip_range[0],ip_range[1]+1): ip = long2ip(ip)
def gen_dyn_records(self): self.cur.execute( "SELECT start, end FROM ranges WHERE type='dynamic' ORDER by start" ) ip_ranges = self.cur.fetchall() PTR_records = [] for ip_range in ip_ranges: for ip in range(ip_range[0], ip_range[1] + 1): PTR_records.append((ip, long2ip(ip).replace('.', '-'))) return PTR_records
def reverse_zones_build(self, build_dir): # Reverse zones Reverse_Zone.BUILD_DIR = build_dir rev_zone = Reverse_Zone(self.cur, self.fd, 0, '') records = rev_zone.gen_all_records() rev_zone.walk_tree(0, 'root', records) if self.run_records_test: print "===========THESE WERE NOT INCLUDED IN THE REVERSE BUILD===========" # Test for records that were not added to the build. for record in records: print "%s %s" % (long2ip(record[0]), record[1])
def reverse_zones_build( self, build_dir ): # Reverse zones Reverse_Zone.BUILD_DIR = build_dir rev_zone = Reverse_Zone( self.cur, self.fd, 0, '' ) records = rev_zone.gen_all_records() rev_zone.walk_tree( 0, 'root', records ) if self.run_records_test: print "===========THESE WERE NOT INCLUDED IN THE REVERSE BUILD===========" # Test for records that were not added to the build. for record in records: print "%s %s" % (long2ip(record[0]), record[1])
def gen_host( self, domain, dname, cdomain ): self.cur.execute("SELECT * FROM `host` WHERE `domain`='%s';" % (domain)) records = self.cur.fetchall() for record in records: if record[1] == 0: continue #self.printer.print_A( record[3] , long2ip(record[1]) ) name= record[3] ip_str = long2ip(record[1]) arec, _ = AddressRecord.objects.get_or_create( label=name, domain= cdomain, ip_str=ip_str, ip_type='4' )
def gen_dyn_ranges(self, domain, dname): self.printer.print_raw("; Gen dyn_ranges for %s\n" % (dname)) self.cur.execute("SELECT start, end FROM ranges, zone_range\ WHERE ranges.id = zone_range.range AND zone_range.default_domain = %s\ AND ranges.type='dynamic' ORDER by start" % (domain)) ip_ranges = self.cur.fetchall() for ip_range in ip_ranges: for ip in range(ip_range[0], ip_range[1] + 1): ip = long2ip(ip) self.printer.print_A(ip.replace('.', '-'), ip)
def gen_forward_pointers(self, domain, dname): sql = "SELECT * FROM `pointer` WHERE hostname LIKE '%" + dname + "' AND `type`='forward' ORDER BY hostname" self.cur.execute(sql) records = self.cur.fetchall() # We have abosulte names in the pointer table so print a root origin. self.gen_ORIGIN(domain, '', 999) for record in records: if record[1] == 0: continue self.printer.print_A(record[2], long2ip(record[1])) # Revert to dname origin. self.gen_ORIGIN(domain, dname, 999)
def gen_forward_pointers( self, domain, dname ): sql = "SELECT * FROM `pointer` WHERE hostname LIKE '%"+dname+"' AND `type`='forward' ORDER BY hostname" self.cur.execute(sql) records = self.cur.fetchall() # We have abosulte names in the pointer table so print a root origin. self.gen_ORIGIN( domain, '', 999 ) for record in records: if record[1] == 0: continue self.printer.print_A( record[2] , long2ip(record[1]) ) # Revert to dname origin. self.gen_ORIGIN( domain, dname , 999 )
cdomain.save() for ip_str in ip_strs: AddressRecord(label="", domain=cdomain, ip_str=ip_str, ip_type='4').save() for server, prio, ttl in mx_data: mx = MX(label="", domain=cdomain, server=server, priority=prio, ttl=ttl) mx.save() print "Adding: {0} MX {1}".format(mx.fqdn, mx.server) else: cdomain = cdomain[0] ip_str = long2ip(record[1]) try: AddressRecord.objects.get_or_create( label=name, domain= cdomain, ip_str=ip_str, ip_type='4' ) except ValidationError, e: print "ERROR: %s name: %s domain: %s ip: %s" % (str(e), name, cdomain.name, ip_str ) # Revert to dname origin. self.gen_ORIGIN( domain, dname , 999 ) """ Generate all A records from the host table. """ def gen_host( self, domain, dname, cdomain ): self.cur.execute("SELECT * FROM `host` WHERE `domain`='%s';" % (domain)) records = self.cur.fetchall()