From 5ea7811fde808dd1fd9ecd402fee9615fc0b63bc Mon Sep 17 00:00:00 2001 From: Yogesh Ojha Date: Tue, 11 Apr 2023 09:45:31 +0530 Subject: [PATCH] revert multiple target imports --- web/targetApp/templates/target/add.html | 204 +++++++++++++++++++++++- 1 file changed, 200 insertions(+), 4 deletions(-) diff --git a/web/targetApp/templates/target/add.html b/web/targetApp/templates/target/add.html index 93cd5e3e..6e2998e6 100644 --- a/web/targetApp/templates/target/add.html +++ b/web/targetApp/templates/target/add.html @@ -25,8 +25,18 @@ Add or Import Targets
-
+
+
+
+
+ {% csrf_token %} +
+
+
+ + {{ form.name }} + (View WHOIS) + {% if form.errors %} +
+ {{ form.errors.name|striptags }} +
+ {% endif %} +
+
+
+ + {{ form.description }} +
+
+
+ + {{ form.h1_team_handle }} +
+
+
+
+ + +
+ (reNgine will automatically fetch whois and domain related information if selected.) +
+
+
+ +
+
+
+
+
{% csrf_token %}
- + + + + +
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+ + + +
+ +
+
+
+
+ {% csrf_token %} +
+
+
@@ -126,6 +220,108 @@ Add or Import Targets add_multiple_targets_btn.disabled = false; } }); + + $('#ip_address').on('change keyup',function(){ + var resolve_ip_button = document.getElementById("resolve_ip_button"); + var ip_addr = $("#ip_address").val(); + if (/^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$/.test(ip_addr)) { + resolve_ip_button.disabled = false; + } + else { + resolve_ip_button.disabled = true; + } + }); + + // hide all checkbox by default + $("#all_domains_checkbox").hide(); + $("#resolve_ip_button").click(function(){ + // get ip address + var ip_addr = $("#ip_address").val(); + $('#resolved_domains_div').empty(); + swal.fire({ + title: `Fetching domains`, + text: `Please wait while we fetch domains associated with IP address or CIDR ${ip_address.value}`, + padding: '2em', + onOpen: function() { + swal.showLoading() + return fetch(`/api/tools/ip_to_domain/?format=json&ip_address=${ip_address.value}`, { + method: 'GET', + credentials: "same-origin", + headers: { + "X-CSRFToken": getCookie("csrftoken") + } + }) + .then(function(response) { + return response.json(); + }).then(function(json_data) { + if (json_data['status']) { + // #resolved_domains_div + $("#all_domains_checkbox").show(); + $('#resolved_domains_div').append(`${json_data['domains'].length} domains associated with IP Address ${ip_address.value}
`); + $('#resolved_domains_div').append(`Please select the domains to import.`); + $('#resolved_domains_div').append(`
`); + for (var domain in json_data['domains']) { + $('#domains_checkbox').append(` +
+
+ + +
+
` + ); + } + swal.close(); + // resolved_ip_domains if any is checked, then only enable add button + $(".resolved_ip_domains").change(function(){ + var add_multiple_targets_btn = document.getElementById("add-ip-target"); + var checked_count = $('.resolved_ip_domains:checked').length; + if (checked_count > 0) { + add_multiple_targets_btn.disabled = false; + $('#add_ip_target_btn').html(`Add ${checked_count} Targets`); + } + else{ + add_multiple_targets_btn.disabled = true; + } + }); + } + else{ + $("#all_domains_checkbox").hide(); + swal.close(); + swal({ + title: `Sorry, no domains associated with IP Address ${ip_address.value}!`, + type: 'error', + padding: '2em' + }) + } + }) + .catch(function() { + swal.insertQueueStep({ + type: 'error', + title: 'Oops! Unable to fetch domains for this IP!' + }) + }) + } + }); + }); + + // if select all checkbox is checked, select all domains + $("#select_all_ip_domains").click(function () { + $(".resolved_ip_domains").prop('checked', $(this).prop('checked')); + document.getElementById("add-ip-target").disabled = false; + var checked_count = $('.resolved_ip_domains:checked').length; + $('#add_ip_target_btn').html(`Add ${checked_count} Targets`); + }); + + $('#domainName').on('change keyup',function(){ + if ($('#domainName').val().length) { + $("#add-single-target").removeAttr("disabled"); + $("#btn_view_whois").removeClass("btn disabled"); + } + else{ + $("#add-single-target").prop("disabled", true); + $("#btn_view_whois").addClass("btn disabled"); + } + }); }); function showname (file, id) {