// ==UserScript== // @name MODEM HUAWEI WEBUI HILINK IP HUNTER // @namespace http://facebook.com/fakieh.maulana // @version 13.0 // @description This userscript automatically reconnects the huawei web ui dashboard until a valid ip listed is detected. // @author Fakieh Maulana // @match http://192.168.8.1/html/home.html // @updateURL https://openuserjs.org/meta/fakiehmaulana/MODEM_HUAWEI_WEBUI_HILINK_IP_HUNTER.meta.js // ==/UserScript== (function() { 'use strict'; var username = localStorage.iphUsername || "admin"; var password = localStorage.iphPassword || "admin"; var working_ip = localStorage.iphPatterns || "" ; var RC = localStorage.iphRC || "60" ; $('<input type="hidden" id="username" />').val(username).appendTo('body'); $('<input type="hidden" id="password" />').val(password).appendTo('body'); $('<div class="wlan_status" />') .html('<h2>IP Hunter</h2>') .append( $('<table id="ip_hunter" width="95%" />') .append('<tr><td colspan="2" id="err"></td></tr>') .append('<tr><td>Username:</td><td><input type="text" id="iph_username" style="width:92%;" /></td></tr>') .append('<tr><td>Password:</td><td><input type="password" id="iph_password" style="width:92%;" /></td></tr>') .append('<tr><td>IP Patterns:</td><td><input type="text" id="iph_patterns" style="width:92%;" /></td></tr>') .append('<tr><td>Auto Reconnect(detik):</td><td><input type="text" id="iph_RC" style="width:92%;" /></td></tr>') .append($('<tr />').html($('<td colspan="5" style="padding: 3px 0;" />') .append($('<button style="margin-right: 3px; padding: 3px 10px;" />').text('Save Changes').click(function(){ localStorage.iphUsername = $('#iph_username').val(); localStorage.iphPassword = $('#iph_password').val(); localStorage.iphPatterns = $('#iph_patterns').val(); localStorage.iphRC = $('#iph_RC').val(); l('Changes has been saved.'); $('#password').val($('#iph_password').val()); login(g_destnation, function() { console.clear(); l('Successfully logged in to dashboard!'); s(); }); setTimeout(function() { if($('.error_message').text().length > 1) { l($('.error_message').text()); $('.error_message').hide(); } }, 300); location.reload(); })) .append($('<button style="margin-right: 3px; padding: 3px 10px;" />').text('Login').click(function(){ $('#password').val($('#iph_password').val()); login(g_destnation, function() { console.clear(); l('Successfully logged in to dashboard!'); s(); }); setTimeout(function() { if($('.error_message').text().length > 1) { l($('.error_message').text()); $('.error_message').hide(); } }, 300); })) .append($('<button style="margin-right: 3px; padding: 3px 10px;" />').text('Auto Reconnect ON').click(function(){ rc(); })) .append($('<button style="margin-right: 3px; padding: 3px 10px;" />').text('Connect/Reconnect').click(function(){ l(' '); l('Loading..'); r(); })) .append('<tr><td colspan="2"><textarea style="height:90px;" id="ip_hunter_log" readonly>-IP eg: 10.;100.11;100.12\n-kalo ip nyangkut(ga mau ganti) cabut trs colok modem\n-matiin auto reconnect close browser</textarea></td></tr>') )) ) .appendTo('.login_info') ; $('#iph_username').val(username); $('#iph_password').val(password); $('#iph_patterns').val(working_ip); $('#iph_RC').val(RC); function rc() {setInterval(function() { r(); }, RC*1000); } function l(msg) { console.log(msg); setTimeout(function() { var iphLog = $('#ip_hunter_log')[0]; iphLog.value += "\n"+msg; iphLog.scrollTop = iphLog.scrollHeight; }, 200); } function s() { l('Scanning IP...'); getAjaxData('api/monitoring/status', function($xml) { var ret = xml2object($xml); if (ret.type == 'response') { var current_ip = ret.response.WanIPAddress; var supported = false; if(current_ip && current_ip !== "") { console.info('Current IP: ', current_ip); l('Current IP: ' + current_ip); working_ip.split(";").forEach(function(ip, index) { if(current_ip.split(ip).length > 1) { supported = true; l('Match pattern: '+ ip); } else { l('IP ('+current_ip+') not match'); } if((index + 1) === working_ip.split(";").length) { if(!supported) { l('Reconnecting..'); r(); } else { l('IP ('+current_ip+') match'); l('Connected'); } } }); } else { setTimeout(function() { s(); }, 2000); } } }, { sync: true }); } function r() { g_network_action = { dataswitch: "0" }; //l('Turning off...'); saveAjaxData('api/dialup/mobile-dataswitch', object2xml('request', g_network_action), function($xml) { var ret = xml2object($xml); l('Disconnecting...'); //l('Turned off.'); if(ret.response == "OK") { setTimeout(function() { g_network_action = { dataswitch: "1" }; //l('Turning on...'); saveAjaxData('api/dialup/mobile-dataswitch', object2xml('request', g_network_action), function($xml) { var ret = xml2object($xml); l('Connecting..'); setTimeout(function() { s(); }, 2000); }); }, 2000); } }); } login(g_destnation, function() { console.clear(); l('Successfully logged in to dashboard !'); s(); }); setTimeout(function() { if($('.error_message').text().length > 1) { l($('.error_message').text()); $('.error_message').hide(); } }, 100); })();