diff --git a/backend/internal/PiHoleDNSPlugin.js b/backend/internal/PiHoleDNSPlugin.js index 54f66e30..d4109f4d 100644 --- a/backend/internal/PiHoleDNSPlugin.js +++ b/backend/internal/PiHoleDNSPlugin.js @@ -8,7 +8,7 @@ const PIHOLE_LOGIN_URL = 'http://'+process.env.PIHOLE_IP+'/admin/index.php'; const PIHOLE_CUSTOMDNS_URL = 'http://'+process.env.PIHOLE_IP+'/admin/scripts/pi-hole/php/customdns.php'; // Function to update Pi-hole with domain and IP -async function updatePihole(domain, ip) { +async function updatePihole(domain, ip,action) { try { // Step 1: Login to Pi-hole to get session cookie const loginResponse = await axios.post(PIHOLE_LOGIN_URL, qs.stringify({ @@ -22,7 +22,6 @@ async function updatePihole(domain, ip) { }); if (loginResponse.status === 200) { - console.log('Login successful'); // Extract session cookie (PHPSESSID) const cookies = loginResponse.headers['set-cookie']; const sessionCookie = cookies.find((cookie) => cookie.startsWith('PHPSESSID')); @@ -44,7 +43,6 @@ async function updatePihole(domain, ip) { // Extract token value from element with ID "token" const token = $('#token').text().trim(); - console.log('Token retrieved:', token); // Step 3: Add custom DNS record with explicit session cookie and token const headers = { @@ -60,7 +58,7 @@ async function updatePihole(domain, ip) { // Request data including token const requestData = { - action: 'add', + action: action, ip: ip, domain: domain, token: token // Use the token retrieved from the HTML page @@ -71,7 +69,7 @@ async function updatePihole(domain, ip) { headers: headers }); - console.log('Custom DNS record added:', addRecordResponse.data); + console.log('PiHole API:', addRecordResponse.data); } else { console.error('Login failed:', loginResponse.statusText); } diff --git a/backend/internal/proxy-host.js b/backend/internal/proxy-host.js index 0b6cfec1..1d86460a 100644 --- a/backend/internal/proxy-host.js +++ b/backend/internal/proxy-host.js @@ -68,7 +68,7 @@ const internalProxyHost = { // Update PiHole for (let i = 0; i < row.domain_names.length; i++) { - piHole.updatePihole(row.domain_names[i], row.forward_host); + piHole.updatePihole(row.domain_names[i], row.forward_host, 'add'); } return row; @@ -77,7 +77,7 @@ const internalProxyHost = { // Update PiHole for (let i = 0; i < row.domain_names.length; i++) { - piHole.updatePihole(row.domain_names[i], row.forward_host); + piHole.updatePihole(row.domain_names[i], row.forward_host, 'add'); } return row; @@ -166,9 +166,18 @@ const internalProxyHost = { data.certificate_id = cert.id; }) .then(() => { + // Update PiHole + for (let i = 0; i < row.domain_names.length; i++) { + piHole.updatePihole(row.domain_names[i], row.forward_host, 'delete'); + } return row; }); } else { + // Update PiHole + for (let i = 0; i < row.domain_names.length; i++) { + piHole.updatePihole(row.domain_names[i], row.forward_host, 'delete'); + + } return row; } }) @@ -194,6 +203,7 @@ const internalProxyHost = { meta: data }) .then(() => { + return saved_row; }); }); @@ -213,6 +223,9 @@ const internalProxyHost = { .then((new_meta) => { row.meta = new_meta; row = internalHost.cleanRowCertificateMeta(row); + for (let i = 0; i < row.domain_names.length; i++) { + piHole.updatePihole(row.domain_names[i], row.forward_host, 'add'); + } return _.omit(row, omissions()); }); }); @@ -288,6 +301,12 @@ const internalProxyHost = { is_deleted: 1 }) .then(() => { + // Update PiHole + + for (let i = 0; i < row.domain_names.length; i++) { + piHole.updatePihole(row.domain_names[i], row.forward_host, 'delete').then(); + console.log('Deleted from PiHole: ' + row.domain_names[i]); + } // Delete Nginx Config return internalNginx.deleteConfig('proxy_host', row) .then(() => {