CircleFTP IDM Download Fix

Fix IDM Showing The Connection Was Actively Refused By Machine Error

// ==UserScript==
// @name         CircleFTP IDM Download Fix
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Fix IDM Showing The Connection Was Actively Refused By Machine Error 
// @author       BlazeFTL
// @match        *://circleftp.net/*
// @match        *://*.circleftp.net/*
// @grant        none
// @license      MIT
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    function fixLinks(root = document) {
        root.querySelectorAll('a[href][download]').forEach(link => {
            // Remove target
            if (link.hasAttribute('target')) {
                link.removeAttribute('target');
            }

            // If download is empty, set it to the filename from href
            if (link.getAttribute('download') === '') {
                try {
                    const url = new URL(link.href);
                    const filename = url.pathname.split('/').pop();
                    if (filename) link.setAttribute('download', filename);
                } catch(e) {
                    console.warn('Download link parse failed:', e);
                }
            }
        });
    }

    // Run initially
    fixLinks();

    // Watch for dynamically loaded content
    const observer = new MutationObserver(mutations => {
        for (const m of mutations) {
            for (const node of m.addedNodes) {
                if (node.nodeType === 1) fixLinks(node);
            }
        }
    });
    observer.observe(document.body, { childList: true, subtree: true });
})();