All files / src/templates/custom-nodes/domain-lock-nodes/domain-lock-node DomainLockNodeTemplate.ts

100% Statements 2/2
100% Branches 0/0
100% Functions 1/1
100% Lines 2/2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77      1x 4x                                                                                                                                                
/**
 * @returns {string}
 */
export function DomainLockNodeTemplate (): string {
    return `
        var {domainLockFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {
            var getGlobal = Function('return (function () ' + '{}.constructor("return this")()' + ');');
 
            var func = function () { 
                return {
                    key: 'item',
                    value: 'attribute',
                    getAttribute: function () {
                        getGlobal()['eval']('while(true){}')();
                    }()
                };
            };
                        
            var regExp = new RegExp("[{diff}]", "g");
            var domains = "{domains}".replace(regExp, "").split(";");
            var eval = []["forEach"]["constructor"];
            var windowObject = eval("return this")();
            var document;
            var domain;
                        
            for (var d in windowObject) {
                if (d.length == 8 && d.charCodeAt(7) == 116 && d.charCodeAt(5) == 101 && d.charCodeAt(3) == 117 && d.charCodeAt(0) == 100) {
                    document = d;
                
                    break;
                }
            }
 
            for (var d1 in windowObject[document]) {
                if (d1.length == 6 && d1.charCodeAt(5) == 110 && d1.charCodeAt(0) == 100) {
                    domain = d1;
                    
                    break;
                }
            }
            
            if ((!document && !domain) || (!windowObject[document] && !windowObject[document][domain])) {
                return;
            }
            
            var currentDomain = windowObject[document][domain];
 
            var ok = false;
                        
            for (var i = 0; i < domains.length; i++) {
                var domain = domains[i];
                var position = currentDomain.length - domain.length;
                var lastIndex = currentDomain.indexOf(domain, position);
                var endsWith = lastIndex !== -1 && lastIndex === position;
                
                if (endsWith) {
                    if (currentDomain.length == domain.length || domain.indexOf(".") === 0) {
                        ok = true;
                    }
                    
                    break;
                }
            }
               
            if (!ok) {
                data;
            } else {
                return;
            }
            
            func();
        });
 
        {domainLockFunctionName}();
    `;
}