Files
rengine/scanEngine/views.py
T
2021-04-25 23:43:57 +05:30

228 lines
8.5 KiB
Python

import io
import re
import os
from django.shortcuts import render, get_object_or_404
from scanEngine.models import EngineType, Wordlist, Configuration, InterestingLookupModel
from scanEngine.forms import AddEngineForm, UpdateEngineForm, AddWordlistForm, InterestingLookupForm
from scanEngine.forms import ConfigurationForm
from django.contrib import messages
from django import http
from django.urls import reverse
from django.conf import settings
def index(request):
engine_type = EngineType.objects.all().order_by('id')
context = {
'engine_li': 'active',
'scan_engine_nav_active': 'true',
'engine_type': engine_type, }
return render(request, 'scanEngine/index.html', context)
def add_engine(request):
form = AddEngineForm()
if request.method == "POST":
form = AddEngineForm(request.POST)
if form.is_valid():
form.save()
messages.add_message(
request,
messages.INFO,
'Scan Engine Added successfully')
return http.HttpResponseRedirect(reverse('scan_engine_index'))
context = {
'scan_engine_nav_active':
'true', 'form': form}
return render(request, 'scanEngine/add_engine.html', context)
def delete_engine(request, id):
obj = get_object_or_404(EngineType, id=id)
if request.method == "POST":
obj.delete()
responseData = {'status': 'true'}
messages.add_message(
request,
messages.INFO,
'Engine successfully deleted!')
else:
responseData = {'status': 'false'}
messages.add_message(
request,
messages.INFO,
'Oops! Engine could not be deleted!')
return http.JsonResponse(responseData)
def update_engine(request, id):
engine = get_object_or_404(EngineType, id=id)
form = UpdateEngineForm()
if request.method == "POST":
form = UpdateEngineForm(request.POST, instance=engine)
if form.is_valid():
form.save()
messages.add_message(
request,
messages.INFO,
'Engine edited successfully')
return http.HttpResponseRedirect(reverse('scan_engine_index'))
else:
form.set_value(engine)
context = {
'scan_engine_nav_active':
'true', 'form': form}
return render(request, 'scanEngine/update_engine.html', context)
def wordlist_list(request):
wordlists = Wordlist.objects.all().order_by('id')
context = {
'wordlist_nav_active':
'true', 'wordlists': wordlists}
return render(request, 'scanEngine/wordlist/index.html', context)
def add_wordlist(request):
context = {'wordlist_nav_active': 'true'}
form = AddWordlistForm(request.POST or None, request.FILES or None)
if request.method == "POST":
if form.is_valid() and 'upload_file' in request.FILES:
txt_file = request.FILES['upload_file']
if txt_file.content_type == 'text/plain':
wordlist_content = txt_file.read().decode('UTF-8')
wordlist_path = '/app/tools/wordlist/'
wordlist_file = open(
wordlist_path +
form.cleaned_data['short_name'] + '.txt',
'w')
wordlist_file.write(wordlist_content)
Wordlist.objects.create(
name=form.cleaned_data['name'],
short_name=form.cleaned_data['short_name'],
count=wordlist_content.count('\n'))
messages.add_message(
request,
messages.INFO,
'Wordlist ' + form.cleaned_data['name'] +
' added successfully')
return http.HttpResponseRedirect(reverse('wordlist_list'))
context['form'] = form
return render(request, 'scanEngine/wordlist/add.html', context)
def delete_wordlist(request, id):
obj = get_object_or_404(Wordlist, id=id)
if request.method == "POST":
os.remove(
settings.TOOL_LOCATION +
'wordlist/' +
obj.short_name +
'.txt')
obj.delete()
responseData = {'status': 'true'}
messages.add_message(
request,
messages.INFO,
'Wordlist successfully deleted!')
else:
responseData = {'status': 'false'}
messages.add_message(
request,
messages.INFO,
'Oops! Wordlist could not be deleted!')
return http.JsonResponse(responseData)
def configuration_list(request):
configurations = Configuration.objects.all().order_by('id')
context = {
'configuration_nav_active':
'true', 'configurations': configurations}
return render(request, 'scanEngine/configuration/index.html', context)
def add_configuration(request):
context = {'configuration_nav_active': 'true'}
form = ConfigurationForm(request.POST or None)
if request.method == "POST":
if form.is_valid():
form.save()
messages.add_message(
request,
messages.INFO,
'Configuration added successfully')
return http.HttpResponseRedirect(reverse('configuration_list'))
context['form'] = form
return render(request, 'scanEngine/configuration/add.html', context)
def delete_configuration(request, id):
obj = get_object_or_404(Configuration, id=id)
if request.method == "POST":
obj.delete()
responseData = {'status': 'true'}
messages.add_message(
request,
messages.INFO,
'Configuration successfully deleted!')
else:
responseData = {'status': 'false'}
messages.add_message(
request,
messages.INFO,
'Oops! Configuration could not be deleted!')
return http.JsonResponse(responseData)
def update_configuration(request, id):
configuration = get_object_or_404(Configuration, id=id)
form = ConfigurationForm()
if request.method == "POST":
form = ConfigurationForm(request.POST, instance=configuration)
if form.is_valid():
form.save()
messages.add_message(
request,
messages.INFO,
'Configuration edited successfully')
return http.HttpResponseRedirect(reverse('configuration_list'))
else:
form.set_value(configuration)
context = {
'configuration_nav_active':
'true', 'form': form}
return render(request, 'scanEngine/configuration/update.html', context)
def interesting_lookup(request):
lookup_keywords = None
context = {}
context['scan_engine_nav_active'] = 'true'
context['interesting_lookup_li'] = 'active'
form = InterestingLookupForm()
if InterestingLookupModel.objects.filter(custom_type=True).exists():
lookup_keywords = InterestingLookupModel.objects.filter(custom_type=True).order_by('-id')[0]
else:
form.initial_checkbox()
if request.method == "POST":
if lookup_keywords:
form = InterestingLookupForm(request.POST, instance=lookup_keywords)
else:
form = InterestingLookupForm(request.POST or None)
print(form.errors)
if form.is_valid():
print(form.cleaned_data)
form.save()
messages.add_message(
request,
messages.INFO,
'Lookup Keywords updated successfully')
return http.HttpResponseRedirect(reverse('interesting_lookup'))
if lookup_keywords:
form.set_value(lookup_keywords)
context['interesting_lookup_found'] = True
context['form'] = form
context['default_lookup'] = InterestingLookupModel.objects.filter(id=1)
return render(request, 'scanEngine/lookup.html', context)