Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
shakerg committed Jan 6, 2025
1 parent dde59d0 commit 69d1363
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 121 deletions.
26 changes: 16 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

116 changes: 7 additions & 109 deletions public/index.html
Original file line number Diff line number Diff line change
@@ -1,124 +1,22 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TLS Inspection Results</title>
<style>
body {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
font-family: Arial, sans-serif;
}
#results {
margin-top: 20px;
text-align: center;
}
.preferred {
font-weight: bold;
color: green;
}
.fail {
color: red;
}
.pass {
color: green;
}
.spinner {
display: none;
width: 40px;
height: 40px;
border: 4px solid #f3f3f3;
border-top: 4px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
margin: 20px auto;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
</style>
<title>TLS Inspection</title>
<link rel="stylesheet" href="style.css">
</head>

<body>
<h1>TLS Inspection Results</h1>
<h1>TLS Inspection</h1>
<div>
<input type="text" id="hostname" placeholder="Enter hostname" />
<button id="runButton">Run</button>
</div>
<div id="spinner" class="spinner"></div>
<div id="results"></div>

<script>
document.getElementById('runButton').addEventListener('click', runTest);

async function runTest() {
const hostnameInput = document.getElementById('hostname');
const hostname = hostnameInput.value.trim();
hostnameInput.value = hostname;

const spinner = document.getElementById('spinner');
const resultsDiv = document.getElementById('results');

if (!hostname) {
alert('Please enter a hostname');
return;
}

spinner.style.display = 'block';
resultsDiv.innerHTML = '';

try {
await new Promise(resolve => setTimeout(resolve, 3000));

const response = await fetch(`/results?hostname=${encodeURIComponent(hostname)}`);

if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}

const data = await response.json();

// Display TLS Version
const tlsVersionElement = document.createElement('div');
tlsVersionElement.textContent = `TLS Version: ${data.tlsVersion}`;
tlsVersionElement.classList.add('preferred');
resultsDiv.appendChild(tlsVersionElement);

// Display Preferred Cipher
const preferredCipherElement = document.createElement('div');
preferredCipherElement.textContent = `Preferred Cipher: ${data.preferredCipher.name}`;
preferredCipherElement.classList.add('preferred');
resultsDiv.appendChild(preferredCipherElement);

// Display TLS 1.0 Availability
const tls10Element = document.createElement('div');
tls10Element.textContent = `TLS 1.0 Available: ${data.tls10Available ? 'Yes' : 'No'}`;
tls10Element.classList.add(data.tls10Available ? 'fail' : 'pass');
resultsDiv.appendChild(tls10Element);

// Display TLS 1.1 Availability
const tls11Element = document.createElement('div');
tls11Element.textContent = `TLS 1.1 Available: ${data.tls11Available ? 'Yes' : 'No'}`;
tls11Element.classList.add(data.tls11Available ? 'fail' : 'pass');
resultsDiv.appendChild(tls11Element);

// Display Ciphers
data.ciphers.forEach(result => {
const resultElement = document.createElement('div');
resultElement.textContent = `${result.cipher}: ${result.status}`;
resultElement.classList.add(result.status.toLowerCase());
resultsDiv.appendChild(resultElement);
});
} catch (error) {
resultsDiv.textContent = `Error: ${error.message}`;
} finally {
spinner.style.display = 'none';
}
}
</script>
<script src="script.js"></script>
</body>

</html>
66 changes: 66 additions & 0 deletions public/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
document.getElementById('runButton').addEventListener('click', runTest);

async function runTest() {
const hostnameInput = document.getElementById('hostname');
const hostname = hostnameInput.value.trim();
hostnameInput.value = hostname;

const spinner = document.getElementById('spinner');
const resultsDiv = document.getElementById('results');

if (!hostname) {
alert('Please enter a hostname');
return;
}

spinner.style.display = 'block';
resultsDiv.innerHTML = '';

try {
await new Promise(resolve => setTimeout(resolve, 3000));

const response = await fetch(`/results?hostname=${encodeURIComponent(hostname)}`);

if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}

const data = await response.json();

// Display TLS Version
const tlsVersionElement = document.createElement('div');
tlsVersionElement.textContent = `TLS Version: ${data.tlsVersion}`;
tlsVersionElement.classList.add('preferred');
resultsDiv.appendChild(tlsVersionElement);

// Display Preferred Cipher
const preferredCipherElement = document.createElement('div');
preferredCipherElement.textContent = `Preferred Cipher: ${data.preferredCipher.name}`;
preferredCipherElement.classList.add('preferred');
resultsDiv.appendChild(preferredCipherElement);

// Display TLS 1.0 Availability
const tls10Element = document.createElement('div');
tls10Element.textContent = `TLS 1.0 Available: ${data.tls10Available ? 'Yes' : 'No'}`;
tls10Element.classList.add(data.tls10Available ? 'fail' : 'pass');
resultsDiv.appendChild(tls10Element);

// Display TLS 1.1 Availability
const tls11Element = document.createElement('div');
tls11Element.textContent = `TLS 1.1 Available: ${data.tls11Available ? 'Yes' : 'No'}`;
tls11Element.classList.add(data.tls11Available ? 'fail' : 'pass');
resultsDiv.appendChild(tls11Element);

// Display Ciphers
data.ciphers.forEach(result => {
const resultElement = document.createElement('div');
resultElement.textContent = `${result.cipher}: ${result.status}`;
resultElement.classList.add(result.status.toLowerCase());
resultsDiv.appendChild(resultElement);
});
} catch (error) {
resultsDiv.textContent = `Error: ${error.message}`;
} finally {
spinner.style.display = 'none';
}
}
42 changes: 42 additions & 0 deletions public/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
body {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
font-family: Arial, sans-serif;
}

#results {
margin-top: 20px;
text-align: center;
}

.preferred {
font-weight: bold;
color: green;
}

.fail {
color: red;
}

.pass {
color: green;
}

.spinner {
display: none;
width: 40px;
height: 40px;
border: 4px solid #f3f3f3;
border-top: 4px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
to {
transform: rotate(360deg);
}
}
5 changes: 3 additions & 2 deletions tlsreader.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ function getTlsResults(hostname) {
testSocket.end();
callback();
});

testSocket.on('error', () => {
callback();
});
Expand Down Expand Up @@ -82,7 +83,7 @@ function getTlsResults(hostname) {

exec(command, (error, stdout, stderr) => {
if (error) {
results.ciphers.push({ cipher, status: 'Fail', error: error.message });
results.ciphers.push({ cipher, status: 'NA', error: error.message });
} else {
const output = stdout + stderr;
const cipherRegex = /Cipher\s*:\s*(.*)/;
Expand All @@ -91,7 +92,7 @@ function getTlsResults(hostname) {
if (match && match[1].trim() === cipher) {
results.ciphers.push({ cipher, status: 'Pass' });
} else {
results.ciphers.push({ cipher, status: 'Fail' });
results.ciphers.push({ cipher, status: 'NA' });
}
}

Expand Down

0 comments on commit 69d1363

Please sign in to comment.