Beispiel #1
0
def update(request):
    suri = get_suri()

    if not request.user.is_staff:
        return redirect('/')

    if suri == None:
        form = SuricataForm()
        context = {'creation': True, 'form': form}
        return scirius_render(request, 'suricata/edit.html', context)
    if request.method == 'POST':
        form = SuricataUpdateForm(request.POST)
        if not form.is_valid():
            return scirius_render(request, 'suricata/update.html', {
                'suricata': suri,
                'error': "Invalid form"
            })
        message = []
        if form.cleaned_data['reload']:
            try:
                suri.ruleset.update()
            except IOError, errors:
                return index(request,
                             error="Can not fetch data: %s" % (errors))
            message.append("Rule downloaded at %s. " %
                           (suri.ruleset.updated_date) + ".")
        if form.cleaned_data['build']:
            suri.generate()
            suri.updated_date = timezone.now()
            suri.save()
            message.append("Successful ruleset build at " +
                           str(suri.updated_date) + ".")
        if form.cleaned_data['push']:
            ret = suri.push()
            suri.updated_date = timezone.now()
            suri.save()
            if ret:
                message.append("Successful asked ruleset reload at " +
                               str(suri.updated_date))
            else:
                message.append("Suricata restart already asked.")

        ua = UserAction(action='modify',
                        options='ruleset',
                        user=request.user,
                        userobject=suri,
                        comment=form.cleaned_data['comment'])
        ua.save()
        context = {'message': message, 'suricata': suri}
        return scirius_render(request, 'suricata/update.html', context)
Beispiel #2
0
def edit(request):
    suri = get_suri()

    if not request.user.is_staff:
        return redirect('/')

    if request.method == 'POST':
        if suri:
            suri.updated_date = timezone.now()
            form = SuricataForm(request.POST, instance=suri)
        else:
            form = SuricataForm(request.POST)
        if form.is_valid():
            if suri:
                form.save()
                ua = UserAction(action='modify',
                                options='suricata',
                                user=request.user,
                                userobject=suri,
                                comment=form.cleaned_data['comment'])
                ua.save()
                return redirect(index)
            try:
                suricata = Suricata.objects.create(
                    name=form.cleaned_data['name'],
                    descr=form.cleaned_data['descr'],
                    output_directory=form.cleaned_data['output_directory'],
                    created_date=timezone.now(),
                    updated_date=timezone.now(),
                    ruleset=form.cleaned_data['ruleset'],
                    yaml_file=form.cleaned_data['yaml_file'],
                )
            except IntegrityError, error:
                return scirius_render(request, 'suricata/edit.html', {
                    'form': form,
                    'error': error
                })
            ua = UserAction(action='create',
                            options='suricata',
                            user=request.user,
                            userobject=suricata,
                            comment=form.cleaned_data['comment'])
            ua.save()
            return redirect(index)
        else:
            return scirius_render(request, 'suricata/edit.html', {
                'form': form,
                'error': 'Invalid form'
            })