List Subdomain api modified for no interesting models

This commit is contained in:
Yogesh Ojha
2021-07-22 11:42:34 +05:30
parent cab2e12bee
commit c19ef92d7e
19 changed files with 256 additions and 78 deletions
+13
View File
@@ -7,6 +7,19 @@ from scanEngine.models import *
from django.db.models import F, JSONField, Value
class OnlySubdomainNameSerializer(serializers.ModelSerializer):
class Meta:
model = Subdomain
fields = ['name', 'id']
class ScanHistorySerializer(serializers.ModelSerializer):
class Meta:
model = ScanHistory
fields = '__all__'
depth = 1
class OrganizationSerializer(serializers.ModelSerializer):
class Meta:
+3 -2
View File
@@ -6,9 +6,9 @@ from .views import *
app_name = 'api'
router = routers.DefaultRouter()
router.register(r'scanHistory', SubdomainViewset)
router.register(r'listDatatableSubdomain', SubdomainDatatableViewSet)
router.register(r'listSubdomains', ListSubdomainsViewSet)
router.register(r'listSubdomains', SubdomainsViewSet)
router.register(r'listEndpoints', EndPointViewSet)
@@ -44,6 +44,7 @@ urlpatterns = [
path('queryTargetsInOrganization/', ListTargetsInOrganization.as_view(), name='queryTargetsInOrganization'),
path('listOrganizations/', ListOrganizations.as_view(), name='listOrganizations'),
path('listEngines/', ListEngines.as_view(), name='listEngines'),
path('listScanHistory/', ListScanHistory.as_view(), name='listScanHistory'),
]
urlpatterns += router.urls
+26 -20
View File
@@ -17,6 +17,14 @@ from startScan.models import *
from targetApp.models import *
class ListScanHistory(APIView):
def get(self, request, format=None):
req = self.request
scan_history = ScanHistory.objects.all().order_by('-start_scan_date')
scan_history = ScanHistorySerializer(scan_history, many=True)
return Response({'scan_histories': scan_history.data})
class ListEngines(APIView):
def get(self, request, format=None):
req = self.request
@@ -207,27 +215,25 @@ class ListSubdomains(APIView):
ip_address = req.query_params.get('ip_address')
port = req.query_params.get('port')
tech = req.query_params.get('tech')
if scan_id and ip_address:
subdomain = Subdomain.objects.filter(
ip_addresses__address=ip_address).filter(
scan_history__id=scan_id)
serializer = SubdomainSerializer(subdomain, many=True)
return Response({"subdomains": serializer.data})
elif scan_id and tech:
subdomain = Subdomain.objects.filter(
technologies__name=tech).filter(
scan_history__id=scan_id)
serializer = SubdomainSerializer(subdomain, many=True)
return Response({"subdomains": serializer.data})
elif scan_id and port:
subdomain = Subdomain.objects.filter(
subdomain_query = Subdomain.objects.filter(scan_history__id=scan_id)
if ip_address:
subdomain_query = subdomain_query.filter(ip_addresses__address=ip_address)
if tech:
subdomain_query = subdomain_query.filter(technologies__name=tech)
if port:
subdomain_query = subdomain_query.filter(
ip_addresses__in=IpAddress.objects.filter(
ports__in=Port.objects.filter(
number=port))).filter(
scan_history=scan_id)
serializer = SubdomainSerializer(subdomain, many=True)
return Response({"subdomains": serializer.data})
number=port)))
if 'no_lookup_interesting' in req.query_params:
serializer = OnlySubdomainNameSerializer(subdomain_query, many=True)
else:
serializer = SubdomainSerializer(subdomain_query, many=True)
return Response({"subdomains": serializer.data})
class ListOsintUsers(APIView):
def get(self, request, format=None):
@@ -299,7 +305,7 @@ class IpAddressViewSet(viewsets.ModelViewSet):
queryset, self.request, view=self)
class ListSubdomainsViewSet(viewsets.ModelViewSet):
class SubdomainsViewSet(viewsets.ModelViewSet):
queryset = Subdomain.objects.none()
serializer_class = SubdomainSerializer
@@ -500,7 +506,7 @@ class InterestingEndpointViewSet(viewsets.ModelViewSet):
queryset, self.request, view=self)
class SubdomainViewset(viewsets.ModelViewSet):
class SubdomainDatatableViewSet(viewsets.ModelViewSet):
queryset = Subdomain.objects.none()
serializer_class = SubdomainSerializer