ControlD IP Flusher

Automatically flush IP addresses from ControlD Endpoint device logs in Legacy mode.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         ControlD IP Flusher
// @description  Automatically flush IP addresses from ControlD Endpoint device logs in Legacy mode.
// @author       @T3SL4
// @namespace    https://github.com/0x11DFE
// @version      05/12/24
// @license	 MIT
// @icon         https://i.imgur.com/I7yP7HH.jpeg
// @icon64       https://i.imgur.com/Ec7CwUP.jpeg
// @match        *://controld.com/dashboard/*
// @grant        none
// ==/UserScript==

(function() {
  'use strict';

  /**
   * This script automates the removal of IP address entries from
   * the Endpoint device logs in ControlD's Legacy DNS resolver mode.
   *
   * ControlD, a powerful DNS management service, offers a Legacy mode
   * for older devices that may not support modern DNS protocols. In this mode,
   * ControlD logs the IP addresses of devices making DNS queries. This script
   * helps you automatically clear these logs by continuously checking for
   * new IP address entries on the ControlD page and deleting them.
   *
   * Why is this useful?
   * - Privacy: Regularly flushing IP logs can help maintain privacy by
   *   reducing the amount of historical data stored.
   * - Troubleshooting: Clearing logs can be helpful when diagnosing network
   *   issues or testing new configurations.
   *
   * IMPORTANT: This script is specifically designed for ControlD's Legacy
   * DNS resolver mode with the "Auto Authorize IP" feature enabled.
   * Ensure you have this configuration before running the script.
   *
   * In order for this script to function correctly, you must first navigate
   * to the "Endpoint Devices" tab within ControlD and click into the specific
   * device's "IPs" section. This will allow the script to continuously monitor
   * and clear the IP address entries for that device.
   *
   * Disclaimer: This script is provided as-is and may require adjustments
   * based on the specific structure of the ControlD webpage. Use it responsibly
   * and at your own risk.
   */

  // Function to simulate a click on an element with an optional delay
  const clickElement = (selector, delay = 0) => {
    setTimeout(() => {
      const element = document.querySelector(selector);
      if (element) {
        element.click();
      } else {
        console.error(`Element not found: ${selector}`);
      }
    }, delay);
  };

  const deleteIPs = () => {
    // Select all IP address elements
    const ipButtons = document.querySelectorAll("[aria-label='select ip']");

    if (ipButtons.length > 0) {
      // Select all IP addresses
      ipButtons.forEach(btn => btn.click());

      // Click the delete button after a short delay
      clickElement("[aria-label='delete ips button']", 500); // .5s

      // Click the confirmation button after another delay
      clickElement("[aria-label='confirm delete ip button']", 500); // .5s

    } else {
      // No IP addresses found, check again after a delay
      setTimeout(deleteIPs, 5000); // Check every 5s
    }
  };

  // Start the process
  deleteIPs();

})();