2026-05-14 14:20:51 -04:00
|
|
|
const { Etcd3 } = require("etcd3");
|
|
|
|
|
const client = new Etcd3({
|
|
|
|
|
hosts: 'http://127.0.0.1:2379',
|
|
|
|
|
});
|
2026-05-14 11:15:30 -04:00
|
|
|
|
2026-05-14 14:20:51 -04:00
|
|
|
function DomainToCoreDNS(domain) {
|
|
|
|
|
const prefix = "/skydns/";
|
|
|
|
|
const parts = domain.split(".");
|
|
|
|
|
if (parts.length < 2) return false;
|
|
|
|
|
const path = parts.reverse().join("/");
|
|
|
|
|
return prefix + path;
|
2026-05-14 11:15:30 -04:00
|
|
|
}
|
|
|
|
|
|
2026-05-14 14:20:51 -04:00
|
|
|
async function GetAllRecords(domain) {
|
2026-05-14 14:47:48 -04:00
|
|
|
console.log(`GetAllRecords for ${domain}`);
|
|
|
|
|
|
2026-05-14 14:51:10 -04:00
|
|
|
const prefix = DomainToCoreDNS(domain);
|
2026-05-14 14:20:51 -04:00
|
|
|
if (!prefix) throw new Error("Invalid domain");
|
2026-05-14 14:49:19 -04:00
|
|
|
console.log(`Prefix is ${prefix}`);
|
2026-05-14 14:20:51 -04:00
|
|
|
const kvs = await client.getAll().prefix(prefix).strings();
|
2026-05-14 14:55:25 -04:00
|
|
|
console.log(`KVs are ${JSON.stringify(kvs)}`);
|
2026-05-14 14:20:51 -04:00
|
|
|
return kvs;
|
2026-05-14 11:15:30 -04:00
|
|
|
}
|
|
|
|
|
|
2026-05-14 14:20:51 -04:00
|
|
|
async function RegisterNewDomain(domain) {
|
|
|
|
|
const prefix = DomainToCoreDNS(domain);
|
2026-05-14 14:32:57 -04:00
|
|
|
if (!prefix) throw new Error("Invalid domain");
|
2026-05-14 11:15:30 -04:00
|
|
|
|
2026-05-14 14:32:57 -04:00
|
|
|
const key = `${prefix}`;
|
2026-05-14 14:20:51 -04:00
|
|
|
const value = JSON.stringify({ host: '10.66.66.1' });
|
2026-05-14 11:15:30 -04:00
|
|
|
|
2026-05-14 14:20:51 -04:00
|
|
|
await client.put(key).value(value);
|
2026-05-14 11:15:30 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
2026-05-14 14:21:46 -04:00
|
|
|
GetAllRecords,
|
|
|
|
|
RegisterNewDomain
|
2026-05-14 11:15:30 -04:00
|
|
|
}
|