diff --git a/client_certificates.php b/client_certificates.php index 64f49f7d..cb712070 100644 --- a/client_certificates.php +++ b/client_certificates.php @@ -42,64 +42,99 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
Export
+ + + +
- - "> - - - - - - - - - - + - ?> +
NameDomainIssued ByExpireAction
+ "> - - - - - + + + + + - + + - -
)" data-target="#editCertificateModal"> - +
+
NameDomainIssued ByExpireAction
+ while ($row = mysqli_fetch_array($sql)) { + $certificate_id = intval($row['certificate_id']); + $certificate_name = htmlentities($row['certificate_name']); + $certificate_domain = htmlentities($row['certificate_domain']); + $certificate_issued_by = htmlentities($row['certificate_issued_by']); + $certificate_expire = htmlentities($row['certificate_expire']); + + ?> + + +
+ +
+ + + )" data-target="#editCertificateModal"> + + + + + + + + + + + + + + + + + +
@@ -110,94 +145,8 @@ require_once("client_certificate_edit_modal.php"); require_once("client_certificate_add_modal.php"); ?> - + + - // Send a GET request to post.php as post.php?certificate_get_json_details=true&client_id=NUM&certificate_id=NUM - jQuery.get( - "ajax.php", - {certificate_get_json_details: 'true', client_id: client_id, certificate_id: certificate_id}, - function(data) { - - // If we get a response from post.php, parse it as JSON - const response = JSON.parse(data); - - // Access the certificate (one) and domains (multiple) - const certificate = response.certificate[0]; - const domains = response.domains; - - // Populate the cert modal fields - document.getElementById("editHeader").innerText = certificate.certificate_name; - document.getElementById("editCertificateId").value = certificate_id; - document.getElementById("editCertificateName").value = certificate.certificate_name; - document.getElementById("editDomain").value = certificate.certificate_domain; - document.getElementById("editIssuedBy").value = certificate.certificate_issued_by; - document.getElementById("editExpire").value = certificate.certificate_expire; - document.getElementById("editPublicKey").value = certificate.certificate_public_key; - - // Select the domain dropdown - var domainDropdown = document.getElementById("editDomainId"); - - // Clear domain dropdown - var i, L = domainDropdown.options.length -1; - for(i = L; i >= 0; i--) { - domainDropdown.remove(i); - } - domainDropdown[domainDropdown.length] = new Option('- Domain -', '0'); - - // Populate domain dropdown - domains.forEach(domain => { - if (parseInt(domain.domain_id) == parseInt(certificate.certificate_domain_id)) { - // Selected domain - domainDropdown[domainDropdown.length] = new Option(domain.domain_name, domain.domain_id, true, true); - } - else{ - domainDropdown[domainDropdown.length] = new Option(domain.domain_name, domain.domain_id); - } - }); - } - ); - } - - - - - + diff --git a/js/certificate_edit_modal.js b/js/certificate_edit_modal.js new file mode 100644 index 00000000..77e891cc --- /dev/null +++ b/js/certificate_edit_modal.js @@ -0,0 +1,47 @@ +function populateCertificateEditModal(client_id, certificate_id) { + + // Send a GET request to post.php as post.php?certificate_get_json_details=true&client_id=NUM&certificate_id=NUM + jQuery.get( + "ajax.php", + {certificate_get_json_details: 'true', client_id: client_id, certificate_id: certificate_id}, + function(data) { + + // If we get a response from post.php, parse it as JSON + const response = JSON.parse(data); + + // Access the certificate (one) and domains (multiple) + const certificate = response.certificate[0]; + const domains = response.domains; + + // Populate the cert modal fields + document.getElementById("editHeader").innerText = certificate.certificate_name; + document.getElementById("editCertificateId").value = certificate_id; + document.getElementById("editCertificateName").value = certificate.certificate_name; + document.getElementById("editDomain").value = certificate.certificate_domain; + document.getElementById("editIssuedBy").value = certificate.certificate_issued_by; + document.getElementById("editExpire").value = certificate.certificate_expire; + document.getElementById("editPublicKey").value = certificate.certificate_public_key; + + // Select the domain dropdown + var domainDropdown = document.getElementById("editDomainId"); + + // Clear domain dropdown + var i, L = domainDropdown.options.length -1; + for(i = L; i >= 0; i--) { + domainDropdown.remove(i); + } + domainDropdown[domainDropdown.length] = new Option('- Domain -', '0'); + + // Populate domain dropdown + domains.forEach(domain => { + if (parseInt(domain.domain_id) == parseInt(certificate.certificate_domain_id)) { + // Selected domain + domainDropdown[domainDropdown.length] = new Option(domain.domain_name, domain.domain_id, true, true); + } + else{ + domainDropdown[domainDropdown.length] = new Option(domain.domain_name, domain.domain_id); + } + }); + } + ); +} diff --git a/js/certificate_fetch_ssl.js b/js/certificate_fetch_ssl.js new file mode 100644 index 00000000..e3b099ea --- /dev/null +++ b/js/certificate_fetch_ssl.js @@ -0,0 +1,37 @@ +function fetchSSL(type) +{ + // Get the domain name input & issued/expire/key fields, based on whether this is a new cert or updating an existing + if (type == 'new') { + var domain = document.getElementById("domain").value; + var issuedBy = document.getElementById("issuedBy"); + var expire = document.getElementById("expire"); + var publicKey = document.getElementById("publicKey"); + + } + if (type == 'edit') { + var domain = document.getElementById("editDomain").value; + var issuedBy = document.getElementById("editIssuedBy"); + var expire = document.getElementById("editExpire"); + var publicKey = document.getElementById("editPublicKey"); + } + + //Send a GET request to post.php as post.php?certificate_fetch_parse_json_details=TRUE&domain=DOMAIN + jQuery.get( + "ajax.php", + {certificate_fetch_parse_json_details: 'TRUE', domain: domain}, + function(data) { + //If we get a response from post.php, parse it as JSON + const ssl_data = JSON.parse(data); + + if (ssl_data.success == "TRUE") { + // Fill the form fields with the cert data + issuedBy.value = ssl_data.issued_by; + expire.value = ssl_data.expire; + publicKey.value = ssl_data.public_key; + } + else{ + alert("Error whilst parsing/retrieving details for domain") + } + } + ); +} diff --git a/post.php b/post.php index 40654083..03c87f7d 100644 --- a/post.php +++ b/post.php @@ -6151,6 +6151,35 @@ if(isset($_GET['delete_certificate'])){ } +if (isset($_POST['bulk_delete_certificates'])) { + validateAdminRole(); + validateCSRFToken($_POST['csrf_token']); + + $count = 0; // Default 0 + $certificate_ids = $_POST['certificate_ids']; // Get array of scheduled tickets IDs to be deleted + + if (!empty($certificate_ids)) { + + // Cycle through array and delete each scheduled ticket + foreach ($certificate_ids as $certificate_id) { + + $certificate_id = intval($certificate_id); + mysqli_query($mysqli, "DELETE FROM certificates WHERE certificate_id = $certificate_id"); + mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Certificate', log_action = 'Delete', log_description = '$session_name deleted certificate (bulk)', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id, log_entity_id = $certificate_id, company_id = $session_company_id"); + + $count++; + } + + // Logging + mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Certificate', log_action = 'Delete', log_description = '$session_name bulk deleted $count certificates', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id, company_id = $session_company_id"); + + $_SESSION['alert_message'] = "Deleted $count certificate(s)"; + + } + + header("Location: " . $_SERVER["HTTP_REFERER"]); +} + if(isset($_GET['export_client_certificates_csv'])){ validateTechRole();