Skip to content

Commit

Permalink
SD Inspector: use new keys & domains structure
Browse files Browse the repository at this point in the history
- Keys updated to be able to use the new key format from WASM
  • Loading branch information
MathJud committed Jul 31, 2024
1 parent fc165a3 commit 1b39f8f
Show file tree
Hide file tree
Showing 4 changed files with 345 additions and 253 deletions.
14 changes: 14 additions & 0 deletions demo/playground/domains.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,20 @@ class Domains {
// TODO: auto remove keys
}

/// add domain only if it does not yet exist
///
/// returns true if it was added, false otherwise
add_domain_if_inexistent(domain_name, key) {
// check if domain exists
let domain = this.get_domain(domain_name)
if (domain) {
return false
}
// add the domain
this.add_domain(domain_name, key)
return true
}

/// add domain
add_domain(domain_name, key) {
let dns_item = new Dns(domain_name, key);
Expand Down
4 changes: 2 additions & 2 deletions demo/playground/keys.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class Keys {
})

for (let i = 0; i < keys.length; i++) {
const filename = keys[i];
const filename = keys[i].Name;
const domain = this.domain_from_filename(filename);
const key = new Key(domain, filename);
this.keys.push(key)
Expand All @@ -47,7 +47,7 @@ class Keys {
// TODO: check & update status of new keys
for (let i = 0; i < keys.length; i++) {
if (!this.key_exists(keys[i])) {
const filename = keys[i];
const filename = keys[i].Name;
const domain = this.domain_from_filename(filename);
const key = new Key(domain, filename);
this.keys.push(key)
Expand Down
69 changes: 62 additions & 7 deletions demo/playground/sd_inspector.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,77 @@
<link rel="stylesheet" href="sig0namectl.css"/>
<link rel="stylesheet" href="sd.css"/>
<script src="https://cdn.jsdelivr.net/npm/dohjs@latest/dist/doh.min.js"></script>
<script src="sig0_wasm.js"></script>
<script src="sig0.js"></script>
<script src="keys.js"></script>
<script src="dns.js"></script>
<script src="domains.js"></script>
<script src="sd_inspector.js"></script>
<script>
/// Event listener for when WASM is ready
var keys = null
var domains = new Domains(['zembla.zenr.io','dns-sd.org'])

// start initialization when WASM is ready
window.addEventListener('wasm_ready', function(){
console.log('WASM is ready')

keys = new Keys()
});

// update domains on key change
window.addEventListener('keys_ready', function(){
domains.keys_updated(keys.keys)
})
window.addEventListener('keys_updated', function(){
domains.keys_updated(keys.keys)
})

/// Add event listeners for domains object
window.addEventListener('domains_ready', function(){
// create new domains for each domain
for (let i=0; i<domains.domains.length; i++) {
add_new_domain(domains.domains[i].domain, domains.domains[i])
}
})
window.addEventListener('domains_updated', function(){
// create inexistent domains
update_ui_domains()
})

/// update domains
function update_ui_domains() {
for (let i=0; i<domains.domains.length; i++) {
// check if this domain exists in the UI
const domain = get_ui_domain(domains.domains[i].domain)
// create if it does not exist
if (!domain) {
add_new_domain(domains.domains[i].domain, domains.domains[i])
}
}
}

/// get domain from UI
function get_ui_domain(domain_name) {
const ul = document.getElementById("domains").getElementsByTagName("ul")[0];
for (const child of ul.children) {
if(child.dns.domain === domain_name) {
return child
}
}
return null
}

/// add a new domain name
function add_new_domain(domain_name) {
let ul = document.getElementById("domains").getElementsByTagName("ul")[0];
let li = new UiDomain(domain_name)
function add_new_domain(domain_name, dns) {
const ul = document.getElementById("domains").getElementsByTagName("ul")[0];
const li = new UiDomain(domain_name, dns)
ul.appendChild(li);
}

/// submit a domain name for addition
function submit_domain(event, form) {
add_new_domain(form.domain_name.value);
domains.add_domain_if_inexistent(form.domain_name.value);
event.preventDefault();
form.domain_name.value = null;
}
Expand Down Expand Up @@ -76,8 +134,5 @@ <h2 class="title">TXT Entry</h2>
<li class="entry"></li>
</ul>
</section>
<script>
add_new_domain("zembla.zenr.io");
</script>
</body>
</html>
Loading

0 comments on commit 1b39f8f

Please sign in to comment.