// ==UserScript== // @name IP Hunter for ZTE-MF63 // @namespace Jhay-Ar // @version 2.0.0 // @description This userscript automatically reconnects the mobile data for some ZTE MF63 modems until it connects to a matching IP address. // @author Jhay-Ar // @match http://192.168.0.1/index.html // @match http://ufi.home/index.html // @require https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/todc-bootstrap/3.3.6-3.3.6/js/bootstrap.min.js // @resource buttonCSS https://raw.githubusercontent.com/necolas/css3-github-buttons/master/gh-buttons.css // @resource btnCSS https://raw.githubusercontent.com/jrd2na/assets.github.io/master/bootstrap2.min.css // @grant GM_addStyle // @grant GM_getResourceText // @grant GM_getResourceURL // @downloadURL https://update.greasyfork.icu/scripts/26623/IP%20Hunter%20for%20ZTE-MF63.user.js // @updateURL https://update.greasyfork.icu/scripts/26623/IP%20Hunter%20for%20ZTE-MF63.meta.js // ==/UserScript== console.log("Start"); document.head.appendChild(cssElement(GM_getResourceURL ("githubButtonIconSet"))); document.head.appendChild(cssElement(GM_getResourceURL ("buttonCSS"))); document.head.appendChild(cssElement(GM_getResourceURL ("btnCSS"))); function cssElement(url) { var link = document.createElement("link"); link.href = url; link.rel="stylesheet"; link.type="text/css"; return link; } function myFunc () { 'use strict'; var ButtonHtml = ` `; var modalHtml = `

IP Hunter

by Jhay-R

 
`; //--- Add nodes to page $("#footer").prepend(ButtonHtml); $("body").prepend(modalHtml); //--- Attach event to button // NOT NECESSARY, bootsrap creates event listeners automatically /*$(".button-group").find("button").click(function(evt){ console.log("Click.", $('#myModal')); $('#myModal').modal("show"); }); */ } myFunc(); (function() { 'use strict'; //if(document.location.hash !== "#login"){ var zte_service = null; var zte_device_info = null; var zte_device_info_init = null; var valid_ip = ""; var hunter_handler = null; var ppp_status = null; //connected: "ppp_connected", disconnected: "ppp_disconnected" var ppp_loading = null; $("#txt_pattern").val(localStorage.zte_valid_ip || valid_ip); $("#btn_init").click(function(){ var valid_ip_val = $("#txt_pattern").val() || valid_ip; if(valid_ip_val !== ""){ localStorage.zte_valid_ip = valid_ip_val; //zte_device_info_init = require.s.contexts._.defined['status\/device_info']; //zte_device_info_init.init(); zte_service = require.s.contexts._.defined.service; zte_device_info = zte_service.getDeviceInfo(); ppp_status = zte_device_info.connectStatus; if(this.value == "Search"){ $("#div_iphunt_logs").empty(); this.value = "Stop"; hunter_handler = setInterval(function(){ if(ppp_loading) return; zte_device_info = zte_service.getDeviceInfo(); var e = zte_device_info.wanIpAddress; $("#div_iphunt_logs").append("Current IP: "+ e + "
"); var res_ip = false; localStorage.zte_valid_ip.split(";").forEach(function(l,a){res_ip = res_ip || e.startsWith(l);}); if(!res_ip){ $("#div_iphunt_logs").append("Reconnecting...
"); if(ppp_status == "ppp_connected"){ ppp_loading = 1; zte_service.disconnect({}, function(d){ zte_service.connect({}, function(d){ ppp_status = d.status; ppp_loading = null; }); }); } } else{ $("#div_iphunt_logs").append("Success. Found IP: "+ e + "
"); $("#div_iphunt_logs").append("Stopped.
"); $("#btn_init").val("Search"); ppp_loading = null; clearInterval(hunter_handler); } $("#div_iphunt_logs").scrollTop($("#div_iphunt_logs")[0].scrollHeight); }, 300); } else if(this.value == "Stop"){ this.value = "Search"; $("#div_iphunt_logs").append("Searching has stopped
"); ppp_loading = null; clearInterval(hunter_handler); } } else{ $("#div_iphunt_logs").empty(); $("#div_iphunt_logs").append("Invalid IP Patern
"); }}); //} setInterval(function(){ var $frm_iphunt = $("#frm-iphunt"); if(document.location.hash !== "#login"){ if($frm_iphunt.is(":visible")) return; $frm_iphunt.show(); } else{ if(!$frm_iphunt.is(":visible")) return; $frm_iphunt.hide(); } }, 300); })();