From ff0f43f6fcae558f841575d08d0e53fe0c64450c Mon Sep 17 00:00:00 2001 From: octt <6083316-octospacc@users.noreply.gitlab.com> Date: Fri, 19 May 2023 15:11:55 +0000 Subject: [PATCH] Update TP-Link Hacks.user.js --- TP-Link Hacks.user.js | 169 +++++++++++++++++------------------------- 1 file changed, 69 insertions(+), 100 deletions(-) diff --git a/TP-Link Hacks.user.js b/TP-Link Hacks.user.js index 7a72ef3..a020548 100644 --- a/TP-Link Hacks.user.js +++ b/TP-Link Hacks.user.js @@ -19,114 +19,83 @@ var Ips = GM_getValue('IPs'); var IsPageAllowed = (Ips.length == 0 || (Ips.length > 0 && Ips.includes(location.hostname))); if (IsPageAllowed) { - -//var Intvs = {}; -//var Cmd = new URLSearchParams(window.location.hash.toLowerCase()).get('hackcmd'); -//if (Cmd) { -// localStorage.setItem('PrevCmd', Cmd); -//} else { -// Cmd = localStorage.getItem('PrevCmd'); -// localStorage.removeItem('PrevCmd'); -//}; - -// Note: localStorage is reset on new login and isn't reliable, we must use sessionStorage -var Opts = new URLSearchParams(location.hash.toLowerCase()).get('tplinkhacks'); -if (Opts !== null) { - sessionStorage.setItem('HacksPrevOpts', Opts); -} else { - Opts = sessionStorage.getItem('HacksPrevOpts'); - sessionStorage.removeItem('HacksPrevOpts'); -}; -Opts = JSON.parse(Opts); - -function qs(Query) { - return document.querySelector(Query); -}; - -//function IntvKey(Name) { -// return `${Date.now()}-${Name}`; -//}; - -function WaitTill(Cond, Fun) { - /*Intvs[Key]*/ - var Intv = setInterval(function(){ - if (Cond()) { - //console.log(Key); - clearInterval(Intv/*Intvs[Key]*/); - Fun(); - }; - }, 100); - //function Call() { - // if (Cond) Fun(); - // else { Rept(); console.log(0); } - //}; - //function Rept() { setTimeout(Call, 50); }; - //Rept(); -}; - -function WaitElClick(Query, Fun) { - WaitTill(function(){ return qs(Query); }, function(){ - qs(Query).click(); - if (Fun) Fun(); - }); -}; - -function AfterCmd() { - console.log('[TP-Link Hacks] Command completed.'); - if (Opts.closeafter) { - var Wait = 5000; - console.log(`[TP-Link Hacks] CloseAfter was specified. The page will close itself in ${Wait/1000} seconds.`); - setTimeout(function(){ window.close(); }, 5000); + // Note: localStorage is reset on new login and isn't reliable, we must use sessionStorage + var Opts = new URLSearchParams(location.hash.toLowerCase()).get('tplinkhacks'); + if (Opts !== null) { + sessionStorage.setItem('HacksPrevOpts', Opts); + } else { + Opts = sessionStorage.getItem('HacksPrevOpts'); + sessionStorage.removeItem('HacksPrevOpts'); }; -}; + Opts = JSON.parse(Opts); -function ReLogin() { - // Attempt to logout if needed - //qs('#logout-button a').click(); - //qs('#global-confirm #global-confirm-btn-ok a').click(); + function qs(Query) { + return document.querySelector(Query); + }; - // Attempt to login if needed - //try { - WaitTill(function(){ return qs('#local-login-pwd input'); }, function(){ - qs('#local-login-pwd input').value = GM_getValue('Password'); - WaitElClick('#local-login-button a'); - }); - //qs('#local-login-pwd input').value = GM_getValue('Password', 'admin'); - //qs('#local-login-button a').click(); - //} catch(Ex) {}; -}; + function WaitTill(Cond, Fun) { + var Intv = setInterval(function(){ + if (Cond()) { + clearInterval(Intv); + Fun(); + }; + }, 100); + }; -function Reboot() { - WaitElClick('#main-menu *[navi-value="advanced"] a', function(){ - WaitElClick('#navigator *[navi-value="reboot"] a', function(){ - WaitElClick('#reboot-button a', function(){ - WaitElClick('#global-confirm #global-confirm-btn-ok a', function(){ - AfterCmd(); - }); }); }); }); -}; + function WaitElClick(Query, Fun) { + WaitTill(function(){ return qs(Query); }, function(){ + qs(Query).click(); + if (Fun) Fun(); + }); + }; -function OpenLogs() { - WaitElClick('#main-menu *[navi-value="advanced"] a', function(){ - WaitElClick('#navigator *[navi-value="sysLog"] a', function(){ - AfterCmd(); - }); }); -}; - -function Main() { - if (Opts && Opts.cmd) { - console.log(`[TP-Link Hacks] Trying to call command: ${Opts.cmd}.`); - ReLogin(); - switch (Opts.cmd.toLowerCase()) { - case 'reboot': Reboot(); break; - case 'openlogs': OpenLogs(); break; + function AfterCmd() { + console.log('[TP-Link Hacks] Command completed.'); + if (Opts.closeafter) { + var Wait = 5000; + console.log(`[TP-Link Hacks] CloseAfter was specified. The page will close itself in ${Wait/1000} seconds.`); + setTimeout(function(){ window.close(); }, 5000); }; }; -}; -window.addEventListener('load', function(){ - // Wait a bit for the WebUI to settle down, accounting for slow machines/connections - setTimeout(Main, 1500); -}); + function ReLogin() { + WaitTill(function(){ return qs('#local-login-pwd input'); }, function(){ + qs('#local-login-pwd input').value = GM_getValue('Password'); + WaitElClick('#local-login-button a'); + }); + }; + + function Reboot() { + WaitElClick('#main-menu *[navi-value="advanced"] a', function(){ + WaitElClick('#navigator *[navi-value="reboot"] a', function(){ + WaitElClick('#reboot-button a', function(){ + WaitElClick('#global-confirm #global-confirm-btn-ok a', function(){ + AfterCmd(); + }); }); }); }); + }; + + function OpenLogs() { + WaitElClick('#main-menu *[navi-value="advanced"] a', function(){ + WaitElClick('#navigator *[navi-value="sysLog"] a', function(){ + AfterCmd(); + }); }); + }; + + function Main() { + if (Opts && Opts.cmd) { + console.log(`[TP-Link Hacks] Trying to call command: ${Opts.cmd}.`); + ReLogin(); + switch (Opts.cmd.toLowerCase()) { + case 'reboot': Reboot(); break; + case 'openlogs': OpenLogs(); break; + }; + }; + }; + + window.addEventListener('load', function(){ + // Wait a bit for the WebUI to settle down, accounting for slow machines/connections + setTimeout(Main, 1500); + }); } else { console.log('[TP-Link Hacks] Script matched this page but the IP whitelist check is negative. Stopping.');