Beispiel #1
0
	def create(self):
		if self.posted():
			zname = self.request.POST['name'];
			mname = self.request.POST['mname'];
			rname = self.request.POST['rname'];
			refresh = self.request.POST['refresh'];
			retry = self.request.POST['retry'];
			expire = self.request.POST['expire'];
			minimum = self.request.POST['minimum'];
			nstarget = self.request.POST['ns'];
			
			if zname[-1:] == '.':
				zname = zname[:-1];
			
			z = tutuzone.Zone(zname);
			
			soa = tuturecord.Record('SOA');
			soa.serial = 0;
			soa.mname = mname;
			soa.rname = rname;
			soa.refresh = refresh;
			soa.retry = retry;
			soa.expire = expire;
			soa.minimum = minimum;
			
			z.add_record('@', soa);
			
			ns = tuturecord.Record('NS');
			ns.target = nstarget;
			z.add_record('@', ns);
			
			z.save();
			
			namedconf = tutuconfig.get('namedconf', 'dnsbind');
			ncp = NamedConfParser();
			ncp.from_file(namedconf);
			ncp.add_zone(zname, z.get_filename());
			ncp.to_file(namedconf);
			
			return HTTPFound('/dns/zone/{}'.format(zname));
			
		import copy
		helpers = copy.copy(tuturecord.helpers);
		helpers['name'] = {'type': 'text', 'label': 'Zone Name', 'help':'FQDN of the zone'};
		helpers['ns'] = {'type': 'text', 'label': 'First NS record', 'help':'FQDN of the first NameServer of the zone'};
		zone = {
			'name': '', 'mname': '', 'rname': '', 'refresh': 604800,
			'retry': 86400, 'expire': 2419200, 'minimum': 86400, 'ns': ''
		};
		keys = ['name', 'mname', 'rname', 'refresh', 'retry', 'expire', 'minimum', 'ns'];
		
		return {'zone': zone, 'keys': keys, 'helpers': helpers};