chore: init
This commit is contained in:
48
index.ts
Normal file
48
index.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import { createServer } from "node:http";
|
||||
import { networkInterfaces } from "node:os";
|
||||
|
||||
const IONOS_TOKEN = process.env.IONOS_TOKEN;
|
||||
const IPV4 = process.env.IPV4;
|
||||
if (!IONOS_TOKEN || !IPV4) {
|
||||
console.error("Missing IONOS_TOKEN or IPV4 environment variable.");
|
||||
process.exit(1);
|
||||
}
|
||||
const IONOS_ENDPOINT = "https://ipv4.api.hosting.ionos.com/dns/v1/dyndns?q=" + IONOS_TOKEN + "&ipv4=" + IPV4;
|
||||
|
||||
function getMyIPv6() {
|
||||
const ifs = networkInterfaces();
|
||||
for (const name in ifs) {
|
||||
for (const iface of ifs[name]!) {
|
||||
if (iface.family === "IPv6" && !iface.internal) {
|
||||
return iface.address;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
const server = createServer(async (req, res) => {
|
||||
const ipv6 = getMyIPv6();
|
||||
if (ipv6) {
|
||||
console.log(`My IPv6 address: ${ipv6}`);
|
||||
} else {
|
||||
console.error("No IPv6 address found.");
|
||||
res.writeHead(503);
|
||||
res.end("");
|
||||
return;
|
||||
}
|
||||
const ionos = await fetch(IONOS_ENDPOINT + "&ipv6=" + ipv6);
|
||||
if (!ionos.ok) {
|
||||
console.error("Failed to update IONOS DNS record:", ionos.statusText);
|
||||
res.writeHead(502);
|
||||
res.end("");
|
||||
return;
|
||||
}
|
||||
res.writeHead(200);
|
||||
res.end("");
|
||||
});
|
||||
|
||||
const PORT = 10205;
|
||||
server.listen(PORT, () => {
|
||||
console.log(`Server is running on http://localhost:${PORT}`);
|
||||
});
|
||||
Reference in New Issue
Block a user