// ==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 = `
`;
//--- 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);
})();