From eed6b07a60e2d3ab4b1da7631b1cbcdf0606825a Mon Sep 17 00:00:00 2001 From: Artem Lavrenov Date: Thu, 25 Jun 2020 22:46:19 +0300 Subject: [PATCH] add other jsmp plugins --- otherjsmp/SipNet.jsmb | 82 ++++++++++++++++ otherjsmp/StrelkaCard_Ru.jsmb | 49 +++++++++ otherjsmp/avtodor-tr.jsmb | 67 +++++++++++++ otherjsmp/beeline.jsmb | 148 ++++++++++++++++++++++++++++ otherjsmp/megafon.jsmb | 130 ++++++++++++++++++++++++ otherjsmp/mts_20200229-used.jsmb | 164 +++++++++++++++++++++++++++++++ otherjsmp/readme.md | 1 + otherjsmp/tele2-api.jsmb | 121 +++++++++++++++++++++++ 8 files changed, 762 insertions(+) create mode 100644 otherjsmp/SipNet.jsmb create mode 100644 otherjsmp/StrelkaCard_Ru.jsmb create mode 100644 otherjsmp/avtodor-tr.jsmb create mode 100644 otherjsmp/beeline.jsmb create mode 100644 otherjsmp/megafon.jsmb create mode 100644 otherjsmp/mts_20200229-used.jsmb create mode 100644 otherjsmp/readme.md create mode 100644 otherjsmp/tele2-api.jsmb diff --git a/otherjsmp/SipNet.jsmb b/otherjsmp/SipNet.jsmb new file mode 100644 index 0000000..c5337f1 --- /dev/null +++ b/otherjsmp/SipNet.jsmb @@ -0,0 +1,82 @@ +// Плагин для программы MobileBalance: http://mtsoft.ru/mobilebalance/ +// +// Инструкция по использованию: +// 1. зайти в настройки программы MobileBalance, перейти на закладку "Плагины: Операторы", добавить плагин. +// 2. После этого перейти на закладку "Телефоны" и в качестве оператора выбрать оператора с названием, указанным ниже. +// +// FullName : VoIP оператор SipNet +// ShortName : SipNet +// Version : 07.06.2020 v2 +// Icon : 789C73F2FDC600016540AC01C40250CCC8C002166F0062616E08166040060D10C9860608058240C6810307803448E43F1831FCFF0FA140102404E2E3007FCE43089CF49933E7A1FC337869A83A5C00009F949135 +// Author : MTSoft Исправил ArtyLa +// Types : MTSoft +// Descript : Текущий баланс у оператора IP-телефонии SipNet +// Descript : Сайт оператора: https://customer.sipnet.ru/ +// Descript : Личный кабинет: https://customer.sipnet.ru/index.m + +function main(){ + var p = 0; + // Заходим на главную страницу + document.location="https://www.sipnet.ru/cabinet-login"; + if(!external.WaitBrowser) return; + response.pages[p++]=external.source; + // Вводим логин и пароль и submit форму + if(document.getElementById("login-field")){ + document.getElementById("login-field").value=request.loginValue; + document.getElementById("password-field").value=request.passwValue; + document.getElementById("login-form-submit").click(); + + if(!external.WaitBrowser) return; + response.pages[p++]=external.source; + }; + xmlhttp = external.getXmlHttp() + xmlhttp.open('GET', "https://www.sipnet.ru/cabinet-login", false); + xmlhttp.send(null); + if(xmlhttp.status == 200) + { + external.SaveStrToLogFile(xmlhttp.responseText); + } + + // Забираем информацию + html=document.documentElement.outerHTML; + html=xmlhttp.responseText + // Преобразуем в одну стрку и удаляем лишние пробелы + html = html.replace(/\r|\n/g, "").replace(/>\s+/g, ">"); + + // Баланс + balanceParsed=false; + regexp=/Баланс.*?>.*?>.*?>(.*?) /i; + if (res=regexp.exec(html)){ + tmpBalance=res[1].replace(/ |\xA0/, ""); // Удаляем пробелы + tmpBalance=tmpBalance.replace(",", "."); // Заменяем запятую на точку + response.Balance=parseFloat(tmpBalance); + balanceParsed=true; + }; + + // ФИО + regexp=/user-full-name.*?>.*?>(.*?).*?>(.*?).*?>.*?>(.*?)\s+/g, ">"); + + // Баланс + balanceParsed=false; + regexp=/Баланс<\/td>.*?(.*?)Клиент ?<\/td>.*?(.*?)Лицевой счет<\/td>.*?(.*?) 0){ + kperiod = ppi.rcRatePeriod.indexOf('dayly') !==-1 ? 30 : 1; + paid_sum = ppi['rcRate'] * kperiod + } + free=0; paid=0; + for(var i=0; i0){ + kperiod = el.rcRatePeriod.indexOf('dayly') !==-1 ? 30 : 1 + fee = el.rcRate * kperiod + } + if(fee > 0){ free++; } else{ paid++; paid_sum += fee; } + } + response.UslugiOn=free + '/' + subscr + '/' + paid + '/(' + paid_sum + ')'; + + //Статус блокировки + jsonStatus = api('info/status'); + oStatus = json(jsonStatus); + response.BlockStatus = oStatus.status; + + // Остатки + jsonRests = api('info/rests'); + oRests = json(jsonRests); + if (oRests.meta.status == 'OK' && oRests.rests.length>0 ){ // данные есть + response.Min = 0; + response.Internet = 0; + response.SMS = 0; + for(var i=0;i + + // Вводим логин и пароль и submit форму + if(document.all.Login) { + document.getElementById("phone").value=request.loginValue; + document.getElementById("password").value=request.passwValue; + document.getElementById("password").form.onsubmit(); + if(!external.WaitBrowser) return; + response.pages[p++]=external.source; + }; + + // Получаем имя, тариф, баланс + url = 'https://lk.mts.ru/api/login/userInfo'; + xmlhttp = external.getXmlHttp(); + xmlhttp.open('GET', url, false); + xmlhttp.send(null); + if (xmlhttp.status == '200') { + response.pages[p++]=xmlhttp.responseText; + html=xmlhttp.responseText; + regexp=/balance..(.*?),/; + if (res=regexp.exec(html)){ + tmp=res[0].replace(/balance..|,/gm, ""); + tmp=Math.floor(tmp*100)/100; // Оставляет 2 цифры после точки + response.Balance=parseFloat(tmp); + }; + regexp=/displayName...(.*?)",/; + if (res=regexp.exec(html)){ + response.UserName=res[1]; + }; + regexp=/tariff...(.*?)",/; + if (res=regexp.exec(html)) { + response.TarifPlan=res[1]; + }; + + external.sleep(300); + }; + + // Остатки + var xmlhttp = external.getXmlHttp(); + xmlhttp.open('GET', 'https://lk.mts.ru/api/sharing/counters', false); + xmlhttp.send(null); + response.pages[p++]=xmlhttp.responseText; + CountersKey=xmlhttp.responseText.replace(/"/gm, ""); + external.sleep(300); + + uri = 'https://lk.mts.ru/api/longtask/check/' + CountersKey + '?for=api/sharing/counters'; + + sleepmSec=1000; + i=1; + do { + sleepmT=sleepmSec*i; + external.sleep(sleepmT); + xmlhttp = external.getXmlHttp(); + xmlhttp.open('GET', uri); + xmlhttp.send(null); + external.sleep(300); + i++; + } while ( xmlhttp.status == 1223 ); + response.pages[p++]=xmlhttp.responseText; + + html=xmlhttp.responseText; + // Минуты + regexp=/unitType...(\D+)...packageType...Calling(.*?)parts(.*?)amount..(.*?),(.*?)UsedByMe..,..amount..(.*?),/g; + if (res=regexp.exec(html)){ + min = 1; + if (res[1] == 'Second') { + min=60; + }; + tmp=res[6]/min; // Секунды в минуты + response.Min=parseFloat(tmp); + tmp=res[4]/min; + response.SpendMin=parseFloat(tmp); + }; + + // SMS + regexp=/packageType...Messaging(.*?)UsedByMe..,..amount..(.*?),/; + if (res=regexp.exec(html)){ + tmp=res[0].replace(/packageType...Messaging(.*?)UsedByMe..,..amount..|,/gm, ""); + response.SMS=parseFloat(tmp); + }; + // Интернет + // Определяем единицу измерения, чтобы определить мультипликатор для приведения значения к КБ + regexp=/unitType...(\D+)...packageType...Internet(.*?)/; + if (res=regexp.exec(html)) { + switch (res[1]) { + case 'KByte': + unitMult=1; + break; + default: + unitMult=1; + }; + }; + // Определяем значение трафика и приводим его к требуемым единицам измерения + regexp=/packageType...Internet(.*?)amount..(.*?)..partType...UsedByMe..,..amount..(.*?),/; + if (res=regexp.exec(html)){ + tmp = res[3]; + if ( usedByMe ) { + tmp = res[2]; + }; + tmp=tmp*unitMult/unitDiv; // Приводим ед. изм к КБ (*unitMult), а затем в нужные единицы (например ГБ - /unitDiv). Определяется по переменой interUnit + tmp=Math.floor(tmp*100)/100; // Оставляет 2 цифры после точки + response.Internet=parseFloat(tmp); + }; + + // Выходим + external.sleep(500); + document.location="https://login.mts.ru/amserver/UI/Logout"; + if(!external.WaitBrowser) return; + +}; + +main(); diff --git a/otherjsmp/readme.md b/otherjsmp/readme.md new file mode 100644 index 0000000..efaf876 --- /dev/null +++ b/otherjsmp/readme.md @@ -0,0 +1 @@ +Другие обычные jsmb плагины, сложил сюда для чтобы не искать. \ No newline at end of file diff --git a/otherjsmp/tele2-api.jsmb b/otherjsmp/tele2-api.jsmb new file mode 100644 index 0000000..bf396de --- /dev/null +++ b/otherjsmp/tele2-api.jsmb @@ -0,0 +1,121 @@ +// Плагин для программы MobileBalance: http://mtsoft.ru/mobilebalance/ +// +// Инструкция по использованию: +// 1. зайти в настройки программы MobileBalance, перейти на закладку "Плагины: Операторы", добавить плагин. +// 2. После этого перейти на закладку "Телефоны" и в качестве оператора выбрать оператора с названием, указанным ниже. +// +// FullName : Tele2 api +// ShortName : T2api +// Version : 18.06.2020 +// Icon : 789CAD532DA8C250143E0F5E31080B83D581618F056141EBE00583F0C06235D9865530894D64C13010C12C68B50D8345C3FA82C16A90051141C7E6DF39CF5DAE6F4E1EBCF7C11776EE77CE3DDF39BB9F5FF97720E46FFCB851B8F30DE4EF83FB398FCBE5F267FABE0F994C060A85029CCF678AD56A358ABDE2683422EDE170A05E645966F9BAAEC79BFD01CBB2487B3C1EE95B5114963F180CC0300CEAA35AAD42A5528172B90CB95C0E5455A5BB86C361623E72329940B3D9846EB70BBD5E0F1CC7A1386A4EA713D326E5E35C70263C168B456C7E49F948BC07FBE7B15C2E1F346118422A95225FCFF68335F91A8220D0CCF16C3C1E93CF76BB4D1E77BB1DF3C6F78231DE4BBD5EA7F833341A0D9A99A669502A95C81F6AB7DB2DF519017B984EA7D0E974683FD96C96CE716FA669329DE779AC0FFEBF705D37E613678E75715711B01ECE68BD5E8324492F771131080210459169E7F379CCE766B379F92E56AB15A4D369D2CE66B387DC56ABF5ABB7B5DFEFA1DFEF9357DC6FB15804DBB6FFE5DD22AF62AEE146 +// Author : comprech & y-greek & Arty +// Types : comprech & y-greek & Arty +// Descript : Tеле2 через api, которое нашёл comprech. Добавил получение списка услуг. +// Descript : Нет привязки к региону (?) + +function main() { + var p = 0; + + // alert! + function alert(s){ window.alert(s); } + + // возвращает object из строки json + function json(str) { + try { var obj = eval('(' + str + ')'); } + catch(e) { obj = str; } + return obj; + } + + //Проверяет существование переменной + function isset (variable) { + if(typeof(variable) != "undefined" && variable !== null) + { + return true; + } + return false; + } + + // аргументы 3, 4... - Headers. Каждый header - массив из двух элементов ['headerName', 'headerValue'] + function post(uri, data) { + xmlhttp = external.getXmlHttp(); + xmlhttp.open("POST", uri, false); + for(var i=2; i 0){ free++; } else{ paid++; paid_sum += fee; } + } + response.UslugiOn=free + '/' + paid + '(' + paid_sum + ')'; + + // Остатки + oRests = api('rests'); + //alert(jsonRests); + if (oRests.rests.length>0){ // данные есть + response.Min = 0 + response.Internet = 0 + response.BlockStatus = '' + for(var i=0;i