def handle(self, *zonefiles, **options):
        overwrite = options.get('overwrite')
        verbosity = int(options.get('verbosity', 1))

        # Determine owner
        User = get_user_model()
        try:
            owner = User.objects.get(username=options.get('username'))
        except User.DoesNotExist:
            owner = None

        # Process zonefiles
        for zonefile in zonefiles:
            if os.path.isfile(zonefile):
                f = open(zonefile, 'r')
                data = f.read()
                f.close()
                try:
                    process_zone_file(None, data, owner, overwrite=overwrite)
                except Exception as e:
                    sys.stderr.write('error: %s: %s\n' % (str(e), zonefile))
                    sys.stderr.flush()
                else:
                    if verbosity:
                        sys.stdout.write('success: %s\n' % zonefile)
                        sys.stdout.flush()
Beispiel #2
0
def import_zone_view(request):
    if request.method == 'POST':  # If the form has been submitted...
        form = ZoneImportForm(request.POST)  # A form bound to the POST data
        if form.is_valid():  # All validation rules pass
            # Process the data in form.cleaned_data
            origin = form.cleaned_data['origin']
            zonetext = form.cleaned_data['zonetext']
            overwrite = form.cleaned_data['overwrite']

            try:
                process_zone_file(origin, zonetext, overwrite)
            except Exception as e:
                info_dict = {
                    'strerror': mark_safe(str(e)),
                }
                return render_to_response('powerdns_manager/import/error.html',
                                          info_dict,
                                          mimetype='text/html')
            return render_to_response('powerdns_manager/import/success.html',
                                      {},
                                      mimetype='text/html')

    else:
        form = ZoneImportForm()  # An unbound form

    info_dict = {
        'form': form,
    }
    return render_to_response('powerdns_manager/import/zone.html',
                              info_dict,
                              context_instance=RequestContext(request),
                              mimetype='text/html')
Beispiel #3
0
def import_zone_view(request):
    if request.method == 'POST': # If the form has been submitted...
        form = ZoneImportForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            origin = form.cleaned_data['origin']
            zonetext = form.cleaned_data['zonetext']
            overwrite = form.cleaned_data['overwrite']
            
            try:
                process_zone_file(origin, zonetext, request.user, overwrite)
            except Exception as e:
                info_dict = {
                    'strerror': mark_safe(str(e)),
                }
                return render_to_response('powerdns_manager/zone/import/error.html', info_dict)
            return render_to_response('powerdns_manager/zone/import/success.html', {})
            
    else:
        form = ZoneImportForm() # An unbound form

    info_dict = {
        'form': form,
    }
    return render_to_response(
        'powerdns_manager/zone/import/zonefile.html', info_dict, context_instance=RequestContext(request))
def template_create_zone_view(request, template_id):
    """Create zone from template.
    
    Accepts a template ID.
    
    An intermediate page asking for the origin of the new zone is used.
    
    """
    # Permission check on models.
    if not request.user.has_perms([
            'powerdns_manager.add_domain',
        ]):
        messages.error(request, 'Insufficient permissions for this action.')
        return HttpResponseRedirect(reverse('admin:powerdns_manager_zonetemplate_changelist'))
    
    if request.method == 'POST':
        origin = request.POST.get('origin')
        
        # Get the models
        ZoneTemplate = cache.get_model('powerdns_manager', 'ZoneTemplate')
        Domain = cache.get_model('powerdns_manager', 'Domain')
        
        template_obj = ZoneTemplate.objects.get(id=template_id)
        template_obj_display = force_unicode(template_obj)
        
        # Check template ownership.
        if request.user != template_obj.created_by:
            messages.error(request, 'Permission denied for template: %s' % template_obj_display)
            return HttpResponseRedirect(reverse('admin:powerdns_manager_zonetemplate_changelist'))
        else:
            # Replace placeholder with origin in the template content.
            zonetext = template_obj.content.replace('#origin#', origin)
            
            process_zone_file(origin, zonetext, request.user)
            
            messages.info(request, "Successfully created zone '%s' from template '%s'." % (origin, template_obj.name))
            
            # Redirect to the new zone's change form.
            domain_obj = Domain.objects.get(name=origin)
            return HttpResponseRedirect(reverse('admin:powerdns_manager_domain_change', args=(domain_obj.id,)))
                    
                    # Create log entry
#                     LogEntry.objects.log_action(
#                         user_id         = request.user.pk, 
#                         content_type_id = ContentType.objects.get_for_model(obj).pk,
#                         object_id       = obj.pk,
#                         object_repr     = obj_display, 
#                         action_flag     = CHANGE
#                     )

    else:
        form = TemplateOriginForm()
        
    info_dict = {
        'form': form,
        'template_id': template_id,
    }
    return render_to_response(
        'powerdns_manager/template/create_zone.html', info_dict, context_instance=RequestContext(request))
Beispiel #5
0
def template_create_zone_view(request, template_id):
    """Create zone from template.
    
    Accepts a template ID.
    
    An intermediate page asking for the origin of the new zone is used.
    
    """
    # Permission check on models.
    if not request.user.has_perms([
            'powerdns_manager.add_domain',
        ]):
        messages.error(request, 'Insufficient permissions for this action.')
        return HttpResponseRedirect(reverse('admin:powerdns_manager_zonetemplate_changelist'))
    
    if request.method == 'POST':
        origin = request.POST.get('origin')
        
        # Get the models
        ZoneTemplate = get_model('powerdns_manager', 'ZoneTemplate')
        Domain = get_model('powerdns_manager', 'Domain')
        
        template_obj = ZoneTemplate.objects.get(id=template_id)
        template_obj_display = force_text(template_obj)
        
        # Check template ownership.
        if request.user != template_obj.created_by:
            messages.error(request, 'Permission denied for template: %s' % template_obj_display)
            return HttpResponseRedirect(reverse('admin:powerdns_manager_zonetemplate_changelist'))
        else:
            # Replace placeholder with origin in the template content.
            zonetext = template_obj.content.replace('#origin#', origin)
            
            process_zone_file(origin, zonetext, request.user)
            
            messages.info(request, "Successfully created zone '%s' from template '%s'." % (origin, template_obj.name))
            
            # Redirect to the new zone's change form.
            domain_obj = Domain.objects.get(name=origin)
            return HttpResponseRedirect(reverse('admin:powerdns_manager_domain_change', args=(domain_obj.id,)))
                    
                    # Create log entry
#                     LogEntry.objects.log_action(
#                         user_id         = request.user.pk, 
#                         content_type_id = ContentType.objects.get_for_model(obj).pk,
#                         object_id       = obj.pk,
#                         object_repr     = obj_display, 
#                         action_flag     = CHANGE
#                     )

    else:
        form = TemplateOriginForm()
        
    info_dict = {
        'form': form,
        'template_id': template_id,
    }
    return render_to_response(
        'powerdns_manager/template/create_zone.html', info_dict, context_instance=RequestContext(request))
def import_zone_view(request):
    if request.method == 'POST': # If the form has been submitted...
        form = ZoneImportForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            origin = form.cleaned_data['origin']
            zonetext = form.cleaned_data['zonetext']
            overwrite = form.cleaned_data['overwrite']
            
            try:
                process_zone_file(origin, zonetext, overwrite)
            except Exception, e:
                info_dict = {
                    'strerror': mark_safe(str(e)),
                }
                return render_to_response('powerdns_manager/import/error.html', info_dict, mimetype='text/html')
            return render_to_response('powerdns_manager/import/success.html', {}, mimetype='text/html')
    def handle(self, *zonefiles, **options):
        overwrite = options.get('overwrite')
        verbosity = int(options.get('verbosity', 1))

        for zonefile in zonefiles:
            if os.path.isfile(zonefile):
                f = open(zonefile, 'r')
                data = f.read()
                f.close()
                try:
                    process_zone_file(None, data, overwrite=overwrite)
                except Exception, e:
                    sys.stderr.write('error: %s: %s\n' % (str(e), zonefile))
                    sys.stderr.flush()
                else:
                    if verbosity:
                        sys.stdout.write('success: %s\n' % zonefile)
                        sys.stdout.flush()
Beispiel #8
0
    def handle(self, *zonefiles, **options):
        overwrite = options.get('overwrite')
        verbosity = int(options.get('verbosity', 1))

        for zonefile in zonefiles:
            if os.path.isfile(zonefile):
                f = open(zonefile, 'r')
                data = f.read()
                f.close()
                try:
                    process_zone_file(None, data, overwrite=overwrite)
                except Exception as e:
                    sys.stderr.write('error: %s: %s\n' % (str(e), zonefile))
                    sys.stderr.flush()
                else:
                    if verbosity:
                        sys.stdout.write('success: %s\n' % zonefile)
                        sys.stdout.flush()
Beispiel #9
0
def import_zone_view(request):
    if request.method == 'POST':  # If the form has been submitted...
        form = ZoneImportForm(request.POST)  # A form bound to the POST data
        if form.is_valid():  # All validation rules pass
            # Process the data in form.cleaned_data
            origin = form.cleaned_data['origin']
            zonetext = form.cleaned_data['zonetext']
            overwrite = form.cleaned_data['overwrite']

            try:
                process_zone_file(origin, zonetext, request.user, overwrite)
            except Exception, e:
                info_dict = {
                    'strerror': mark_safe(str(e)),
                }
                return render_to_response(
                    'powerdns_manager/zone/import/error.html', info_dict)
            return render_to_response(
                'powerdns_manager/zone/import/success.html', {})