feat: add shareable links

This commit is contained in:
2026-01-14 17:08:15 +01:00
parent cde424e881
commit d584e11453
2 changed files with 93 additions and 0 deletions

View File

@@ -96,6 +96,35 @@ document.addEventListener('DOMContentLoaded', () => {
}
}
// --- URL Parameter Functions ---
/**
* Updates the URL with DNS lookup parameters
* @param {string} domain - The domain name
* @param {string} type - The DNS record type
*/
function updateUrlParams(domain, type) {
const url = new URL(window.location);
url.searchParams.set('domain', domain);
url.searchParams.set('type', type);
window.history.pushState({}, '', url);
}
/**
* Reads URL parameters and returns domain and type if present
* @returns {object|null} Object with domain and type, or null if not present
*/
function getUrlParams() {
const urlParams = new URLSearchParams(window.location.search);
const domain = urlParams.get('domain');
const type = urlParams.get('type');
if (domain && type) {
return { domain, type };
}
return null;
}
// --- DNS Lookup Specific Functions ---
function displayDnsResults(data, outputEl) {
if (!data.records || Object.keys(data.records).length === 0) {
@@ -114,6 +143,10 @@ document.addEventListener('DOMContentLoaded', () => {
dnsLookupErrorEl.classList.remove('hidden');
return;
}
// Update URL with parameters
updateUrlParams(domain, type);
fetchAndDisplay(
'/dns-lookup',
{ domain, type },
@@ -126,6 +159,21 @@ document.addEventListener('DOMContentLoaded', () => {
);
}
/**
* Executes DNS lookup from URL parameters if they exist
*/
function executeLookupFromUrl() {
const params = getUrlParams();
if (params) {
// Populate the input fields
dnsDomainInput.value = params.domain;
dnsTypeSelect.value = params.type;
// Trigger the lookup
handleDnsLookupClick();
}
}
// --- Initial Load & Event Listeners ---
fetchVersionInfo(); // Lade Versionsinfo für Footer
@@ -134,4 +182,7 @@ document.addEventListener('DOMContentLoaded', () => {
if (event.key === 'Enter') handleDnsLookupClick();
});
// Execute lookup from URL parameters if present
executeLookupFromUrl();
}); // End DOMContentLoaded

View File

@@ -328,6 +328,28 @@ document.addEventListener('DOMContentLoaded', () => {
// --- Lookup Functions ---
// --- URL Parameter Functions ---
/**
* Updates the URL with IP lookup parameter
* @param {string} ip - The IP address or domain to lookup
*/
function updateLookupUrlParams(ip) {
const url = new URL(window.location);
url.searchParams.set('ip', ip);
window.history.pushState({}, '', url);
}
/**
* Reads URL parameters and returns IP if present
* @returns {string|null} IP or domain from URL, or null if not present
*/
function getLookupUrlParams() {
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get('ip');
}
/** Zeigt Fehler im Lookup-Bereich an */
function showLookupError(message) {
if (!lookupErrorEl) return;
@@ -780,6 +802,9 @@ document.addEventListener('DOMContentLoaded', () => {
resetLookupResults(); // Reset results before starting
hideLookupError();
// Update URL with the query parameter
updateLookupUrlParams(query);
if (isValidIpAddress(query)) {
// Input is an IP address
console.log(`Lookup button clicked for IP: ${query}`);
@@ -829,6 +854,20 @@ document.addEventListener('DOMContentLoaded', () => {
}
}
/**
* Executes IP lookup from URL parameters if they exist
*/
function executeLookupFromUrl() {
const ipParam = getLookupUrlParams();
if (ipParam && lookupIpInput) {
// Populate the input field
lookupIpInput.value = ipParam;
// Trigger the lookup
handleLookupClick();
}
}
// --- Initial Load & Event Listeners ---
fetchIpInfo(); // Lade Infos zur eigenen IP
fetchVersionInfo(); // Lade Versionsinfo für Footer
@@ -845,4 +884,7 @@ document.addEventListener('DOMContentLoaded', () => {
// Der Event Listener für den IP-Link wird jetzt in fetchIpInfo() hinzugefügt,
// nachdem die IP erfolgreich abgerufen wurde.
// Execute lookup from URL parameters if present
executeLookupFromUrl();
}); // End DOMContentLoaded