diff --git a/knotdns.js b/knotdns.js index 849ebddf5086bfcd8c6609ac4f3f622fd9483cf1..b50f8627819fb21d08d959ac4ede448a1db37358 100644 --- a/knotdns.js +++ b/knotdns.js @@ -4,14 +4,23 @@ const exec = util.promisify(require('child_process').exec); const config = require('./config'); async function updateRecord(domain, ip) { - await exec("/usr/sbin/knotc zone-begin " + config.config().higherLevelDomain); try { - await exec("/usr/sbin/knotc zone-unset " + config.config().higherLevelDomain + " " + domain); + await exec("/usr/sbin/knotc zone-begin " + config.config().higherLevelDomain); + try { + await exec("/usr/sbin/knotc zone-unset " + config.config().higherLevelDomain + " " + domain); + } catch { + console.log("Could not unset domain " + domain); + } + await exec("/usr/sbin/knotc zone-set " + config.config().higherLevelDomain + " " + domain + " 60 A " + ip); + await exec("/usr/sbin/knotc zone-commit " + config.config().higherLevelDomain); } catch { - console.log("Could not unset domain " + domain); + try { + await exec("/usr/sbin/knotc zone-abort " + config.config().higherLevelDomain); + console.log("Problem with manipulating DNS zone " + config.config().higherLevelDomain + ". Aborted transaction."); + } catch { + console.log("Problem with manipulating DNS zone " + config.config().higherLevelDomain + ". Could not even abort transaction."); + } } - await exec("/usr/sbin/knotc zone-set " + config.config().higherLevelDomain + " " + domain + " 60 A " + ip); - await exec("/usr/sbin/knotc zone-commit " + config.config().higherLevelDomain); } module.exports = {