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' })
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)