def get_urllist_report_graph_data_(request,
                                   urllist_ids,
                                   report_type: str = "web") -> JsonResponse:
    return JsonResponse(get_urllist_timeline_graph(get_account(request),
                                                   urllist_ids, report_type),
                        encoder=JSEncoder,
                        safe=False)
def remove_tag_(request):
    data = get_json_body(request)
    remove_tag(account=get_account(request),
               urllist_id=data.get('urllist_id', []),
               url_ids=data.get('url_ids', []),
               tag=data.get('tag', ""))
    return JsonResponse(operation_response(success=True), safe=False)
Ejemplo n.º 3
0
def delete_url_from_urllist_(request):
    account = get_account(request)
    request = get_json_body(request)
    items_deleted, item_details = delete_url_from_urllist(
        account, request.get('list_id'), request.get('url_id'))
    return JsonResponse({
        'items_deleted': items_deleted,
        'success': items_deleted
    })
def get_accounts(request) -> HttpResponse:
    myaccount = get_account(request)
    scans = AccountInternetNLScan.objects.all().filter(
        account=myaccount.id).count()
    lists = UrlList.objects.all().filter(account=myaccount.id).count()
    users = list(User.objects.all().filter(
        dashboarduser__account=myaccount.id).values_list('username',
                                                         flat=True))
    current_account = {
        'id':
        myaccount.id,
        'name':
        myaccount.name,
        'scans':
        scans,
        'lists':
        lists,
        'users':
        users,
        'label':
        f"{myaccount.id}: {myaccount.name} (Lists: {lists}, Scans: {scans}, Users: {len(users)})"
    }

    accounts = Account.objects.all().values_list('id', 'name').order_by('id')

    account_data = []
    # add some metadata to the accounts, so it's more clear where you are switching to:
    for account in accounts:
        scans = AccountInternetNLScan.objects.all().filter(
            account=account[0]).count()
        lists = UrlList.objects.all().filter(account=account[0]).count()
        users = list(User.objects.all().filter(
            dashboarduser__account=account[0]).values_list('username',
                                                           flat=True))
        account_information = {
            'id':
            account[0],
            'name':
            account[1],
            'scans':
            scans,
            'lists':
            lists,
            'users':
            users,
            'label':
            f"{account[0]}: {account[1]} (Lists: {lists}, Scans: {scans}, Users: {len(users)})"
        }

        account_data.append(account_information)

    return JsonResponse({
        'current_account': current_account,
        'accounts': account_data
    })
def save_ad_hoc_tagged_report_(request, report_id: int):
    data = get_json_body(request)
    tags = data.get('tags', [])
    try:
        at_when: Optional[datetime] = datetime.fromisoformat(
            f"{data.get('custom_date')} {data.get('custom_time')}")
    except ValueError:
        at_when = None
    return JsonResponse(
        save_ad_hoc_tagged_report(get_account(request), report_id, tags,
                                  at_when))
def get_ad_hoc_tagged_report_(request, report_id: int):
    data = get_json_body(request)
    tags = data.get('tags', [])

    try:
        at_when: Optional[datetime] = datetime.fromisoformat(
            f"{data.get('custom_date')} {data.get('custom_time')}")
    except ValueError:
        at_when = None

    return HttpResponse(  # pylint: disable=http-response-with-content-type-json
        ad_hoc_tagged_report(get_account(request), report_id, tags, at_when),
        content_type="application/json")
Ejemplo n.º 7
0
def get_accounts(request) -> HttpResponse:
    account = get_account(request)

    accounts = Account.objects.all().values_list('id', 'name')

    account_data = []
    # add some metadata to the accounts, so it's more clear where you are switching to:
    for account in accounts:
        account_information = {'id': account[0], 'name': account[1]}
        account_information['scans'] = AccountInternetNLScan.objects.all().filter(
            account=account_information['id']).count()
        account_information['lists'] = UrlList.objects.all().filter(account=account_information['id']).count()
        account_information['users'] = list(User.objects.all().filter(
            dashboarduser__account=account_information['id']).values_list('username', flat=True))

        account_data.append(account_information)

    return JsonResponse({'current_account': account, 'accounts': account_data})
Ejemplo n.º 8
0
def powertools(request) -> HttpResponse:

    # only for the true superusers :)
    if not request.user.is_staff and request.user.is_active and request.user.is_superuser:
        return report.dashboard(request)

    # account switching.=
    if request.POST.get('change_account', None):
        dashboard_user = DashboardUser.objects.all().filter(
            user=request.user).first()
        # very new users don't have the dashboarduser fields filled in, and are thus not connected to an account.
        if not dashboard_user:
            dashboard_user = DashboardUser(
                **{
                    'account': Account.objects.all().first(),
                    'user': request.user
                })

        dashboard_user.account = Account.objects.get(
            id=request.POST.get('change_account'))
        dashboard_user.save()

    selected_account_id: int = 0
    account = get_account(request)
    if account:
        selected_account_id = account.pk
    # end account switching

    # Fast account creation. Of the most basic kind.
    state, add_account_and_user_form = default_form_logic(
        InstantAccountAddForm, request)

    response = render(
        request,
        'internet_nl_dashboard/templates/internet_nl_dashboard/powertools.html',
        {
            'add_account_and_user_form': add_account_and_user_form,
            'add_account_and_user_form_state': state,
            'menu_item_powertools': "current",
            'selected_account': selected_account_id,
            'accounts': list(Account.objects.all().values('id', 'name')),
        })

    return inject_default_language_cookie(request, response)
def tags_in_urllist_(request, urllist_id):
    return JsonResponse(tags_in_urllist(account=get_account(request),
                                        urllist_id=urllist_id),
                        safe=False)
Ejemplo n.º 10
0
def get_previous_report_(request, urllist_id, at_when):
    return JsonResponse(get_previous_report(get_account(request), urllist_id, at_when), encoder=JSEncoder, safe=False)
Ejemplo n.º 11
0
def get_report_(request, report_id) -> HttpResponse:
    return HttpResponse(get_report(get_account(request), report_id), content_type="application/json")
Ejemplo n.º 12
0
def get_report_(request, report_id) -> JsonResponse:
    return JsonResponse(get_report(get_account(request), report_id), encoder=JSEncoder, safe=False)
Ejemplo n.º 13
0
def cancel_scan_(request):
    account = get_account(request)
    request = get_json_body(request)
    response = cancel_scan(account, request.get('id'))
    return JsonResponse(response)
Ejemplo n.º 14
0
def get_scan_status_of_list_(request, urllist_id: int) -> JsonResponse:
    return JsonResponse(get_scan_status_of_list(account=get_account(request),
                                                list_id=urllist_id),
                        encoder=JSEncoder)
Ejemplo n.º 15
0
def running_scans(request) -> JsonResponse:
    account = get_account(request)

    # list of dicts: In order to allow non-dict objects to be serialized set the safe parameter to False.
    return JsonResponse(get_scan_monitor_data(account), encoder=JSEncoder, safe=False)
Ejemplo n.º 16
0
def alter_url_in_urllist_(request):
    return JsonResponse(
        alter_url_in_urllist(get_account(request), get_json_body(request)))
Ejemplo n.º 17
0
def add_urls_to_urllist(request):
    return JsonResponse(
        save_urllist_content(get_account(request), get_json_body(request)))
Ejemplo n.º 18
0
def save_report_settings_(request) -> JsonResponse:
    return JsonResponse(save_report_settings(get_account(request), get_json_body(request)))
Ejemplo n.º 19
0
def scan_now_(request):
    return JsonResponse(scan_now(get_account(request), get_json_body(request)))
Ejemplo n.º 20
0
def get_report_settings_(request) -> JsonResponse:
    return JsonResponse(get_report_settings(get_account(request)))
Ejemplo n.º 21
0
def get_urllist_report_graph_data_(request, urllist_id) -> JsonResponse:
    return JsonResponse(get_urllist_report_graph_data(get_account(request), urllist_id), encoder=JSEncoder, safe=False)
Ejemplo n.º 22
0
def get_lists(request) -> JsonResponse:
    return JsonResponse(
        get_urllists_from_account(account=get_account(request)),
        encoder=JSEncoder,
        safe=False)
Ejemplo n.º 23
0
def get_report_differences_compared_to_current_list_(request, report_id):
    return JsonResponse(get_report_differences_compared_to_current_list(get_account(request), report_id),
                        encoder=JSEncoder, safe=True)
Ejemplo n.º 24
0
def get_urllist_content_(request, urllist_id: int) -> JsonResponse:
    return JsonResponse(get_urllist_content(account=get_account(request),
                                            urllist_id=urllist_id),
                        encoder=JSEncoder)
Ejemplo n.º 25
0
def get_recent_reports_(request) -> JsonResponse:
    return JsonResponse(get_recent_reports(get_account(request)), encoder=JSEncoder, safe=False)
Ejemplo n.º 26
0
def save_list_content(request, urllist_name: str,
                      urls: List[str]) -> JsonResponse:
    return JsonResponse(save_urllist_content_by_name(get_account(request),
                                                     urllist_name, urls),
                        encoder=JSEncoder)
Ejemplo n.º 27
0
def update_list_settings_(request):
    return JsonResponse(
        update_list_settings(get_account(request), get_json_body(request)))
Ejemplo n.º 28
0
def delete_list_(request):
    return JsonResponse(
        delete_list(get_account(request), get_json_body(request)))
Ejemplo n.º 29
0
def subdomain_discovery_scan_status_(request, urllist_id) -> JsonResponse:
    return JsonResponse(scan_status(get_account(request), urllist_id),
                        encoder=JSEncoder,
                        safe=False)
def get_report_(request, report_id) -> HttpResponse:
    # Explicitly NOT use jsonresponse as this loads the json data into an encoder which is extremely slow on large files
    return HttpResponse(  # pylint: disable=http-response-with-content-type-json
        get_report(get_account(request), report_id),
        content_type="application/json")