From 12746a82d6eb50a39e8a86fbfaf11edda1ce29ee Mon Sep 17 00:00:00 2001 From: Raghuram Subramani <raghus2247@gmail.com> Date: Mon, 07 Apr 2025 15:10:40 +0530 Subject: [PATCH] add rev --- rev/.gitignore | 1 + rev/main.js | 1396 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ rev/package-lock.json | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ rev/package.json | 6 ++++++ rev/rev.js | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 1659 insertions(+) diff --git a/rev/.gitignore b/rev/.gitignore new file mode 100644 index 0000000..c2658d7 100644 --- /dev/null +++ a/rev/.gitignore @@ -1,0 +1,1 @@ +node_modules/ diff --git a/rev/main.js b/rev/main.js new file mode 100644 index 0000000..e6e7b8c 100644 --- /dev/null +++ a/rev/main.js @@ -1,0 +1,1396 @@ +var hostIP = "https://app.ecourts.gov.in/ecourt_mobile_DC/"; +var netConnectCnt = 0; +var isOnline = true; +var isConnErrorMsgShown = false; +var casesCountArr; +//localization global variables +var global_language = "English"; +var globalLanguageJSONObj = null; +var globalServerLabelsJSONObj = null; +var complexes = ""; +var bilingual_flag = 0; +var cnrNumbersFromLocalStorage = window.localStorage.getItem("CNR Numbers"); +var labelsarr = window.sessionStorage.GLOBAL_LABELS != null ? JSON.parse(window.sessionStorage.GLOBAL_LABELS) : null; +var totalNoOfEstLabel = labelsarr ? labelsarr[390] : "Total Number of Establishments in Court Complex"; +var totalNoOfCasesLabel = labelsarr ? labelsarr[83] : "Total Number of Cases"; +var partyNameLabel = labelsarr ? labelsarr[30] : "Party Name"; +var srNoLabel = labelsarr ? labelsarr[84] : "Sr.No"; +var caseNoLabel = labelsarr ? labelsarr[9] : "Case Number"; +var courtComplexSelectLabel = labelsarr ? labelsarr[268] : "Select Court Complex"; +var globaliv = "4B6250655368566D"; +var randomiv = ""; +var jwttoken = ""; +var regenerateWebserviceCallFlag = false; + +//Fetch parameter passed to url of html. +function getParameterByName(name, url) { + if (!url) + url = window.location.href; + name = name.replace(/[\[\]]/g, "\\$&"); + var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), + results = regex.exec(url); + if (!results) + return null; + if (!results[2]) + return ''; + return decodeURIComponent(results[2].replace(/\+/g, " ")); +} + +function checkDeviceOnlineStatus() { + var condition = navigator.onLine ? "online" : "offline"; + if (condition == "offline") { + isOnline = false; + if (!isOnline) { + // showErrorMessage("Please check your internet connection and Try again"); + showErrorMessage(labelsarr[717]); + } + } else { + netConnectCnt = 0; + isOnline = true; + isConnErrorMsgShown = false; + } +} + +function displayConnErrorMsg() { + if (!isConnErrorMsgShown) { + isConnErrorMsgShown = true; + showErrorMessage(labelsarr[717]); + // showErrorMessage("Please check your internet connection and Try again"); + } +} + +function ChangeUrl(title, url) { + if (typeof (history.pushState) != "undefined") { + var obj = { Title: title, Url: url }; + history.pushState(obj, obj.Title, obj.Url); + } else { + show("Browser does not support HTML5."); + } +} +//Fetches court complexes data from web service +function populateCourtComplexes() { + var state_code_data = window.localStorage.state_code; + var district_code_data = window.localStorage.district_code; + + $select = $('#court_codec'); + $select_pages = $('#court_code'); + + // if(complexes == "" || window.localStorage.SESSION_COURT_CODE == null || window.localStorage.SESSION_SELECTED_COMPLEX_CODE == null){ + if (complexes == "") { + var courtComplexWebServiceUrl = hostIP + "courtEstWebService.php"; + + var encrypted_data1 = ("fillCourtComplex"); + var encrypted_data2 = (state_code_data); + var encrypted_data3 = (district_code_data); + + var data = { action_code: encrypted_data1.toString(), state_code: encrypted_data2.toString(), dist_code: encrypted_data3.toString() }; + + //web service call to get court complexes + callToWebService(courtComplexWebServiceUrl, data, courtComplexWebServiceResult); + function courtComplexWebServiceResult(data) { + var obj = (data.courtComplex); + myApp.hidePleaseWait(); + if (obj != null) { + complexes = obj; + // window.sessionStorage.setItem("SESSION_COMPLEXES", data.courtComplex); + populateComplexes(obj); + } else { + $('#court_codec').append('<option id="" value="">' + courtComplexSelectLabel + '</option>'); + $('#court_code').append('<option id="" value="">' + courtComplexSelectLabel + '</option>'); + } + + } + } + else { + // var obj = decodeResponse(complexes); + populateComplexes(complexes); + } + + +} + +//Fills court complex select box +function populateComplexes(obj) { + $('#court_codec').empty(); + $('#court_code').empty(); + + // $select.append('<option id="" value="">Select Court Complex</option>'); + $('#court_codec').append('<option id="" value="">' + courtComplexSelectLabel + '</option>'); + $('#court_code').append('<option id="" value="">' + courtComplexSelectLabel + '</option>'); + var txt_court_complex_name = null; + $.each(obj, function (key, val) { + + if (bilingual_flag == 0) { + txt_court_complex_name = val.court_complex_name; + + $('#court_codec').append('<option id="' + val.njdg_est_code + '" value="' + val.njdg_est_code + '" complex_code="' + val.complex_code + '">' + txt_court_complex_name + '</option>'); + $('#court_code').append('<option id="' + val.njdg_est_code + '" value="' + val.njdg_est_code + '" complex_code="' + val.complex_code + '">' + txt_court_complex_name + '</option>'); + + } else { + if (val.lcourt_complex_name != "") { + txt_court_complex_name = val.lcourt_complex_name; + $('#court_codec').append('<option id="' + val.njdg_est_code + '" value="' + val.njdg_est_code + '" complex_code="' + val.complex_code + '">' + txt_court_complex_name + '</option>'); + $('#court_code').append('<option id="' + val.njdg_est_code + '" value="' + val.njdg_est_code + '" complex_code="' + val.complex_code + '">' + txt_court_complex_name + '</option>'); + } + } + }); + + if (window.localStorage.SESSION_COURT_CODE != null) { + $('#court_codec').val(window.localStorage.SESSION_COURT_CODE); + if ($('#court_code')) { + $('#court_code').val(window.localStorage.SESSION_COURT_CODE); + } + } +} + +//show case history for selected case +$(document).on('click', '.case_history_link', function (e) { + e.preventDefault(); + + var case_number = $(this).attr("case_no"); + var court_code = $(this).attr("court_code"); + + var caseHistoryWsUrl = hostIP + "caseHistoryWebService.php"; + var state_code_data = window.localStorage.state_code; + var district_code_data = window.localStorage.district_code; + + var encrypted_data4 = (localStorage.LANGUAGE_FLAG); + // var encrypted_data5=0; + // if(localStorage.LANGUAGE_FLAG=="english"){ + // encrypted_data5 = ("0"); + // }else{ + // encrypted_data5 = ("1"); + // } + + encrypted_data5 = (bilingual_flag.toString()); + + var data = { state_code: (state_code_data), dist_code: (district_code_data), case_no: (case_number), court_code: (court_code), language_flag: encrypted_data4.toString(), bilingual_flag: encrypted_data5.toString() }; + + // $('#loading').modal('show'); + + //web service call to get case history + callToWebService(caseHistoryWsUrl, data, caseHistoryWebServiceResult); + function caseHistoryWebServiceResult(data) { + // $('#loading').modal('hide'); + myApp.hidePleaseWait(); + + if (data.history != null) { + if (CheckBrowser()) { + window.sessionStorage.setItem("case_history", JSON.stringify((data.history))); + } + if (window.localStorage.getItem("SELECTED_COURT") === "DC") { + // window.location = 'case_history.html'; + $.ajax({ + type: "GET", + url: "case_history.html" + }).done(function (data) { + // $("#caseHistoryModal").show(); + $("#historyData").html(data); + $("#caseHistoryModal").modal('show'); + $("#case_history_label").focus(); + + }); + } + else if (window.localStorage.getItem("SELECTED_COURT") === "HC") { + // window.location = 'case_history_hc.html'; + + $.ajax({ + type: "GET", + url: "case_history_hc.html" + }).done(function (data) { + $("#caseHistoryModal_hc").show(); + $("#historyData_hc").html(data); + $("#caseHistoryModal_hc").modal(); + }); + + } + } else { + showErrorMessage(labelsarr[718]); + // $('#loading').modal('hide'); + myApp.hidePleaseWait(); + } + + } + +}); + +//show filing case history for selected case +$(document).on('click', '.filing_case_history_link', function (e) { + e.preventDefault(); + + var case_number = $(this).attr("case_no"); + var court_code = $(this).attr("court_code"); + + var filingCaseHistoryWsUrl = hostIP + "filingCaseHistory.php"; + var state_code_data = window.localStorage.state_code; + var district_code_data = window.localStorage.district_code; + + var encrypted_data4 = (localStorage.LANGUAGE_FLAG); + var encrypted_data5 = 0; + // if(localStorage.LANGUAGE_FLAG=="english"){ + // encrypted_data5 = ("0"); + // }else{ + // encrypted_data5 = ("1"); + // } + encrypted_data5 = (bilingual_flag.toString()); + var data = { state_code: (state_code_data), dist_code: (district_code_data), case_no: (case_number), court_code: (court_code), language_flag: encrypted_data4.toString(), bilingual_flag: encrypted_data5.toString() }; + + // $('#loading').modal('show'); + + //web service call to get filing case history + callToWebService(filingCaseHistoryWsUrl, data, filingCaseHistoryResult); + function filingCaseHistoryResult(data) { + if (data.history != null) { + if (CheckBrowser()) { + window.sessionStorage.setItem("filing_case_history", JSON.stringify((data.history))); + } + + // window.location = 'filing_case_history.html'; + $.ajax({ + type: "GET", + url: "filing_case_history.html" + }).done(function (data) { + // $("#caseHistoryModal").show(); + $("#historyData").html(data); + $("#caseHistoryModal").modal(); + }); + + // $('#loading').modal('hide'); + myApp.hidePleaseWait(); + } else { + showErrorMessage(labelsarr[718]); + // $('#loading').modal('hide'); + myApp.hidePleaseWait(); + } + } +}); + + + +//check if browser supports localstorage +function CheckBrowser() { + if ('localStorage' in window && window['localStorage'] !== null) { + // we can use localStorage object to store data + return true; + } else { + return false; + } +} + + +/*get data from web service. Called when there is no data in local storage for selected search*/ +function displayCasesTable(url, request_data) { + arrCourtEstCodes = []; + arrCourtEstCodes = window.localStorage.SESSION_COURT_CODE.split(','); + total_Cases = ''; + $("#headers").empty(); + + + var headerArray = []; + headerArray.push('<a style="color:#212529;" href="#" id="total_est_header">' + totalNoOfEstLabel + ':<span id="totalEstablishmentsSpanId"></span> </a></div>'); + headerArray.push('<br>'); + headerArray.push('<label>' + totalNoOfCasesLabel + ': <span id="totalcasesId"></span></label></div>'); + $("#headers").append(headerArray); + + var state_code_data = window.localStorage.state_code; + var district_code_data = window.localStorage.district_code; + $("#accordion_search").empty(); + //Total number of establishments (comma separated values of court codes) + var establishments_count = arrCourtEstCodes.length; + //count used to check if data fetched for all the establishments. + var count1 = 0; + // $('#loading').modal('show'); + myApp.showPleaseWait(); + var jsonData = {}; + + + /* for (var i = 0; i <= arrCourtEstCodes.length - 1; i++) { + if(arrCourtEstCodes[i] != ","){*/ + + var encrypted_data1 = state_code_data; + var encrypted_data2 = district_code_data; + var encrypted_data3 = arrCourtEstCodes; + var encrypted_data4 = (localStorage.LANGUAGE_FLAG); + // var encrypted_data5=null; + // if(localStorage.LANGUAGE_FLAG=="english"){ + // encrypted_data5 = ("0"); + // }else{ + // encrypted_data5 = ("1"); + // } + encrypted_data5 = (bilingual_flag.toString()); + + + var data1 = { state_code: encrypted_data1.toString(), dist_code: encrypted_data2.toString(), court_code_arr: encrypted_data3.toString(), language_flag: encrypted_data4.toString(), bilingual_flag: encrypted_data5.toString() }; + + var data = $.extend({}, data1, request_data); + + //Establishment name appears on each panel + var establishment_name; + + //Id for panels of each establishement + var collapseid = 0; + + //populate the result table with court establishment as collapse field + callToWebService(url, data, caseStatusSearchResult); + function caseStatusSearchResult(responseData) { + var obj_caseNos = null; + if (responseData != null) { + if (responseData.msg) { + if ((responseData.status) == 'fail') { + myApp.hidePleaseWait(); + showErrorMessage((responseData.msg)); + } + } else { + for (const val in responseData) { + var data = responseData[val]; + + obj_caseNos = (data.caseNos); + if (obj_caseNos != null) { + var obj_courtcode = (data.court_code); + + var obj_establishment_name = (data.establishment_name); + + jsonData[JSON.stringify(obj_courtcode)] = JSON.stringify(data); + // window.sessionStorage.setItem("SET_RESULT", JSON.stringify(jsonData)); + window.sessionStorage.setItem("SET_RESULT", true); + + + var panel_body = []; + var totalCases = obj_caseNos.length; + total_Cases = Number(totalCases) + Number(total_Cases); + var trHTML = ''; + var court_code = obj_courtcode; + + panel_id = 'card' + state_code_data + district_code_data + court_code; + + + establishment_name = obj_establishment_name; + establishment_name = establishment_name + " : " + totalCases; + + panel_body.push('<div class="card" id=' + panel_id + '">'); + panel_body.push('<div class="card-header"><h4 class="panel-title"><a class="card-link collapsed panel-title-a" data-toggle="collapse" data-target="#' + panel_id + '" href="#' + panel_id + '">' + establishment_name + '</a></h4></div>'); + panel_body.push("<div id=" + panel_id + " class='collapse'><div class='card-body'><table class='table tbl-result'><thead><tr><th>" + srNoLabel + "</th><th>" + caseNoLabel + "</th><th>" + partyNameLabel + "</th></tr></thead><tbody>"); + + collapseid++; + var index = 0; + var txt_type_name = null; + $.each(obj_caseNos, function (key, val) { + index++; + // if(localStorage.LANGUAGE_FLAG=="english"){ + if (bilingual_flag != "1") { + txt_type_name = val.type_name; + } else { + txt_type_name = val.ltype_name; + } + var petresName = val.petnameadArr; + var case_type_number = txt_type_name + '/' + val.case_no2 + '/' + val.reg_year; + + var casehistorylink = ''; + var case_no_ = val.case_no; + if (val.case_no == null) { + case_no_ = val.filing_no; + casehistorylink = 'filing_case_history_link'; + } else { + casehistorylink = 'case_history_link'; + } + + var hrefurl = "<a style='color:#03A8D8;text-decoration:underline;' href='#' class='" + casehistorylink + " 'court_code='" + court_code + "'cino='" + val.cino + "'case_no='" + case_no_ + "'>" + case_type_number + '</a>'; + + trHTML += "<tr><td>" + index + "</td><td>" + hrefurl + "</td><td>" + petresName + "</td></tr>"; + panel_body.push("<tr><td>" + index + "</td><td>" + hrefurl + "</td><td>" + petresName + "</td></tr>"); + }); + + panel_body.push("</tbody></table></div></div>"); + count1++; + panel_body.push('</div>'); + if (Number(totalCases) != 0) { + $("#accordion_search").append(panel_body.join("")); + } + + document.getElementById('totalcasesId').innerHTML = total_Cases; + document.getElementById('totalEstablishmentsSpanId').innerHTML = establishments_count; + + } else { + document.getElementById('totalEstablishmentsSpanId').innerHTML = establishments_count; + + } + } + } + + } else { + //establishments_count -= 1; + document.getElementById('totalEstablishmentsSpanId').innerHTML = establishments_count; + + } + if (count1 == establishments_count) { + // $('#loading').modal('hide'); + + // $('#goButton').prop('autofocus'); + // $('#total_est_header').attr('style','background:red'); + myApp.hidePleaseWait(); + $('#goButton').focus(); + } + + + } + + + + + /* }else { + /*If connection to establishment fails, reduce the total number of establishments*/ + /*establishments_count -= 1; + document.getElementById('totalEstablishmentsSpanId').innerHTML = establishments_count; + +} +}*/ +} +/*function to display header for all forms, case history , view business and writ info*/ +function second_header() { + // $("#header").load("header.html", function (response, status, xhr) { + + // $('#go_back_link').on('click', function (event) { + // event.preventDefault(); + // window.location = "index.html"; + // }); + + // }); + + $("#header_srchpage").load("header.html", function (response, status, xhr) { + + $('#go_back_link').on('click', function (event) { + backButtonHistory.pop(); + window.sessionStorage.removeItem("SET_RESULT"); + $("#searchPageModal").modal('hide'); + var prev_selected_btn = window.sessionStorage.getItem("Selected_screen"); + $("." + prev_selected_btn).focus(); + }); + + $("#open_close1").on('click', function (event) { + if ($("#mySidenav1").is(':visible')) { + closeNav1(); + } else { + openNav1(); + } + }); + }); +} + +/*To Export saved cases from local storage to myCases.txt file from device internal storage*/ +function backupContent(socialSharing, savetodatadir, showSuccessAlert) { + //var cnrNumbersStr = window.localStorage.getItem("CNR Numbers"); + var cnrNumbersStr = 0; + var cnrNumbersArr_parsed; + var CNR_array = localStorage.getItem("CNR Numbers"); + if (CNR_array) { + cnrNumbersArrLength = JSON.parse(CNR_array).length; + cnrNumbersArr_parsed = JSON.parse(CNR_array); + } + + if (CNR_array && cnrNumbersArr_parsed.length != 0) { + cnrNumbersStr = CNR_array; + var fileName = ''; + if (!showSuccessAlert) { + fileName = 'myCases.txt'; + } else { + fileName = 'myCases_backup.txt'; + } + + var data = cnrNumbersStr; + if (socialSharing === "drive") { + myApp.showPleaseWait(); + window.plugins.googleplus.login( + { + // 'scopes' : 'https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.apps.readonly https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.metadata https://www.googleapis.com/auth/drive.scripts', + + 'scopes': 'https://www.googleapis.com/auth/drive.file', + 'webClientId': '658126779023-qls50eu22l3r5dipb8a4jm6kirdcrg83.apps.googleusercontent.com', // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required. + 'offline': true, // optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server + }, + function (obj) { + var access_token = obj.accessToken; + var boundary = "foo_bar_baz"; + const delimiter = "\r\n--" + boundary + "\r\n"; + const close_delim = "\r\n--" + boundary + "--"; + var fileContent = cnrNumbersStr; // As a sample, upload a text file. + var tmpfile = new Blob([fileContent], { type: 'text/plain' }); + var contentType = 'text/plain'; + + var metadata = { + "name": 'myCases.txt', + "mimeType": 'text/plain' + }; + + var multipartRequestBody = + delimiter + 'Content-Type: application/json\r\n\r\n' + + JSON.stringify(metadata) + + delimiter + 'Content-Type: ' + contentType + '\r\n' + '\r\n' + + cnrNumbersStr + + close_delim; + + //var fileId = window.localStorage.getItem("FILE_ID"); + + $.ajax({ + type: "GET", + beforeSend: function (request) { + request.setRequestHeader("Authorization", "Bearer" + " " + access_token); + }, + url: "https://www.googleapis.com/drive/v3/files?q=(name = 'myCases.txt')", + + success: function (data) { + //alert(JSON.stringify(data)); + if (data.files.length == 1) { + var fileId = data.files[0].id; + $.ajax({ + type: "PATCH", + beforeSend: function (request) { + request.setRequestHeader("Authorization", "Bearer" + " " + access_token); + request.setRequestHeader("Content-Type", 'multipart/related; boundary="' + boundary + '"'); + + }, + url: "https://www.googleapis.com/upload/drive/v3/files/" + fileId + "/?uploadType=multipart", + + success: function (data) { + alert(labelsarr[676]); + myApp.hidePleaseWait(); + localStorage.setItem("LAST_MyCASES_EXPORT", new Date()); + $("#exportCasesWarning").hide(); + $("#my_cases_text").show(); + + }, + error: function (error) { + alert(error); + myApp.hidePleaseWait(); + //alert('error'+JSON.stringify(error)); + }, + async: true, + data: multipartRequestBody, + cache: false, + contentType: false, + processData: false, + crossDomain: true + }); + } else if (data.files.length == 0) { + $.ajax({ + type: "POST", + beforeSend: function (request) { + request.setRequestHeader("Authorization", "Bearer" + " " + access_token); + request.setRequestHeader("Content-Type", 'multipart/related; boundary="' + boundary + '"'); + + }, + url: "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart", + + success: function (data) { + alert(labelsarr[677]); + myApp.hidePleaseWait(); + localStorage.setItem("LAST_MyCASES_EXPORT", new Date()); + $("#exportCasesWarning").hide(); + $("#my_cases_text").show(); + + }, + error: function (error) { + //alert('error'+JSON.stringify(error)); + alert(labelsarr[705]); + myApp.hidePleaseWait(); + }, + async: true, + data: multipartRequestBody, + cache: false, + contentType: false, + processData: false, + crossDomain: true + }); + } else if (data.files.length > 1) { + alert(labelsarr[671]); + myApp.hidePleaseWait(); + } + + }, + error: function (error) { + myApp.hidePleaseWait(); + alert(labelsarr[705]); + } + }); + }, + function (msg) { + myApp.hidePleaseWait(); + alert(labelsarr[705]); + } + + ); + } else if (socialSharing === "telegram") { + window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function (directoryEntry) { + directoryEntry.getFile(fileName, { create: true }, function (fileEntry) { + fileEntry.createWriter(function (fileWriter) { + fileWriter.onwriteend = function (result) { + window.plugins.socialsharing.shareVia('telegram', 'Message via telegram', fileName, cordova.file.externalRootDirectory + fileName, function (e) { alert(e) }, function (e) { alert(e) }); + }; + fileWriter.onerror = function (error) { + showErrorMessage(error); + }; + fileWriter.write(data); + }, function (error) { + showErrorMessage(error); + }); + }, function (error) { + showErrorMessage(error); + }); + }, function (error) { + showErrorMessage(error); + }); + + } else if (socialSharing === "email") { + var storageLocation; + switch (device.platform) { + case "Android": + if (savetodatadir) { + storageLocation = cordova.file.externalDataDirectory; + } else { + storageLocation = cordova.file.externalRootDirectory + "Download/"; + } + break; + + case "iOS": + storageLocation = cordova.file.documentsDirectory; + break; + } + + window.resolveLocalFileSystemURL(storageLocation, function (directoryEntry) { + directoryEntry.getFile(fileName, { create: true }, function (fileEntry) { + fileEntry.createWriter(function (fileWriter) { + fileWriter.onwriteend = function (result) { + window.plugins.socialsharing.shareViaEmail('Message', + 'Subject', + null, + null, + null, + [storageLocation + fileName], + function (e) { }, + function (e) { + localStorage.setItem("LAST_MyCASES_EXPORT", new Date()); + $("#exportCasesWarning").hide(); + $("#my_cases_text").show(); + }); + }; + fileWriter.onerror = function (error) { + if (savetodatadir) { + showErrorMessage("error1 " + error.code, error.code); + } + }; + fileWriter.write(data); + }, function (error) { + if (savetodatadir) { + showErrorMessage("error2 " + error.code, error.code); + } + }); + }, function (error) { + if (savetodatadir) { + showErrorMessage("error3 " + error.code, error.code); + } + }); + }, function (error) { + if (savetodatadir) { + showErrorMessage("error4 " + error.code, error.code); + } + }); + if (!savetodatadir) { + backupContent(socialSharing, true); + } + + } else if (socialSharing === "device") { + + myApp.showPleaseWait(); + var storageLocation; + switch (device.platform) { + case "Android": + if (savetodatadir) { + storageLocation = cordova.file.externalDataDirectory; + } else { + storageLocation = cordova.file.externalRootDirectory + "Download/"; + } + break; + + case "iOS": + storageLocation = cordova.file.documentsDirectory; + break; + } + + // window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function (directoryEntry) { + window.resolveLocalFileSystemURL(storageLocation, function (directoryEntry) { + directoryEntry.getFile(fileName, { create: true, exclusive: false }, function (fileEntry) { + fileEntry.createWriter(function (fileWriter) { + fileWriter.onwriteend = function (result) { + myApp.hidePleaseWait(); + if (savetodatadir && !showSuccessAlert) { + alert(labelsarr[678]); + } + + if (!showSuccessAlert) { + localStorage.setItem("LAST_MyCASES_EXPORT", new Date()); + $("#exportCasesWarning").hide(); + $("#my_cases_text").show(); + } + }; + fileWriter.onerror = function (error) { + myApp.hidePleaseWait(); + if (savetodatadir) { + showErrorMessage("error1 " + error.code, error.code); + } + }; + fileWriter.write(data); + }, function (error) { + myApp.hidePleaseWait(); + if (savetodatadir) { + showErrorMessage("error2 " + error.code, error.code); + } + }); + }, function (error) { + myApp.hidePleaseWait(); + if (savetodatadir) { + showErrorMessage("error3 " + error.code, error.code); + } + }); + }, function (error) { + myApp.hidePleaseWait(); + if (savetodatadir) { + showErrorMessage("error4 " + error.code, error.code); + } + }); + if (!savetodatadir) { + backupContent(socialSharing, true); + } + + } + } else { + myApp.hidePleaseWait(); + if (savetodatadir && !showSuccessAlert) { + showErrorMessage(labelsarr[836]); + } + } + +} + + + +/*To Import cases from myCases.txt file from device internal storage to local storage and display in My Cases */ +function importFileFrom(socialSharing, readFromDataDir, showSuccsAlrt) { + var fileName = ''; // your file name + if (!showSuccsAlrt) { + fileName = 'myCases.txt'; + } else { + fileName = 'myCases_backup.txt'; + } + + if (socialSharing === "device") { + myApp.showPleaseWait(); + /*$.get('test.txt', function(data) { + backupcnrNumbersArray = JSON.parse(data); + if (backupcnrNumbersArray.length > 0) { + myApp.hidePleaseWait(); + localStorage.setItem("CNR Numbers", JSON.stringify(backupcnrNumbersArray)); + $("#showCaseDiv").show(); +// resetDatePicker(); + clearSearchText(); + $("#searchCasesButton").click(); + $("#allCasesBtn").addClass("active"); + $("#todaysCasesBtn").removeClass("active"); + + updateAllCasesAcordion(backupcnrNumbersArray); + setCalendarCountArr(backupcnrNumbersArray); + document.getElementById("mycases_span_id").innerHTML = backupcnrNumbersArray.length; + } else { + myApp.hidePleaseWait(); + showErrorMessage("No cases found"); + } + }, 'text');*/ + var storageLocation; + switch (device.platform) { + case "Android": + if (readFromDataDir) { + storageLocation = cordova.file.externalDataDirectory; + } else { + storageLocation = cordova.file.externalRootDirectory + "Download"; + } + break; + + case "iOS": + storageLocation = cordova.file.documentsDirectory; + break; + } + + window.resolveLocalFileSystemURL(storageLocation, function (directoryEntry) { + + directoryEntry.getFile(fileName, { create: false }, function (fileEntry) { + + fileEntry.file(function (file) { + + var reader = new FileReader(); + reader.onloadend = function (e) { + if (reader.result == null) { + myApp.hidePleaseWait(); + //showErrorMessage(labelsarr[672]+" "+fileName+" "+labelsarr[673]); + if (!readFromDataDir) { + importFileFrom(socialSharing, true); + } else if (!showSuccsAlrt) { + showErrorMessage(labelsarr[672] + " " + fileName + " " + labelsarr[673]); + } + } else { + backupcnrNumbersArray = JSON.parse(reader.result); + if (backupcnrNumbersArray.length > 0) { + if (showSuccsAlrt) { + $("#importCasesDialog").modal(); + } else { + localStorage.setItem("CNR Numbers", JSON.stringify(backupcnrNumbersArray)); + + $("#showCaseDiv").show(); + //resetDatePicker(); + clearSearchText(); + $("#searchCasesButton").click(); + $("#allCasesBtn").addClass("active"); + $("#todaysCasesBtn").removeClass("active"); + + setCalendarCountArr(backupcnrNumbersArray); + + updateAllCasesAcordion(); + document.getElementById("mycases_span_id").innerHTML = backupcnrNumbersArray.length; + myApp.hidePleaseWait(); + if (!showSuccsAlrt) { + alert(labelsarr[669]); + } + } + $("#btnYes").click(function () { + localStorage.setItem("CNR Numbers", JSON.stringify(backupcnrNumbersArray)); + + $("#showCaseDiv").show(); + //resetDatePicker(); + clearSearchText(); + $("#searchCasesButton").click(); + $("#allCasesBtn").addClass("active"); + $("#todaysCasesBtn").removeClass("active"); + + setCalendarCountArr(backupcnrNumbersArray); + + updateAllCasesAcordion(); + document.getElementById("mycases_span_id").innerHTML = backupcnrNumbersArray.length; + myApp.hidePleaseWait(); + if (!showSuccsAlrt) { + alert(labelsarr[669]); + } + $("#importCasesDialog").hide(); + }); + $("#btnCancle").click(function () { + $("#importCasesDialog").hide(); + return; + }); + + } else { + myApp.hidePleaseWait(); + //showErrorMessage(labelsarr[681]); + if (!readFromDataDir) { + importFileFrom(socialSharing, true); + } else if (!showSuccsAlrt) { + showErrorMessage(labelsarr[681]); + } + } + } + } + + reader.readAsText(file); + }, errorHandler); + }, onErrorCreateFile); + }); + function errorHandler() { + myApp.hidePleaseWait(); + if (!readFromDataDir) { + importFileFrom(socialSharing, true); + } else if (!showSuccsAlrt) { + showErrorMessage(labelsarr[672] + " " + fileName + " " + labelsarr[673]); + } + } + function onErrorCreateFile() { + myApp.hidePleaseWait(); + if (!readFromDataDir) { + importFileFrom(socialSharing, true); + } else if (!showSuccsAlrt) { + showErrorMessage(labelsarr[672] + " " + fileName + " " + labelsarr[673]); + } + } + + } else if (socialSharing === "drive") { + myApp.showPleaseWait(); + window.plugins.googleplus.login( + { + //'scopes' : 'https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.apps.readonly https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.metadata https://www.googleapis.com/auth/drive.scripts', + + 'scopes': 'https://www.googleapis.com/auth/drive.file', + 'webClientId': '658126779023-qls50eu22l3r5dipb8a4jm6kirdcrg83.apps.googleusercontent.com', // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required. + 'offline': true, // optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server + }, + function (obj) { + var access_token = obj.accessToken; + var contentType = 'text/plain'; + + $.ajax({ + type: "GET", + dataType: "json", + beforeSend: function (request) { + request.setRequestHeader("Authorization", "Bearer" + " " + access_token); + }, + url: "https://www.googleapis.com/drive/v3/files?q=(name = 'myCases.txt')", + + success: function (data) { + + myApp.hidePleaseWait(); + if (data.files.length == 1) { + var fileId = data.files[0].id; + $.ajax({ + type: "GET", + beforeSend: function (request1) { + request1.setRequestHeader("Authorization", "Bearer" + " " + access_token); + }, + url: "https://www.googleapis.com/drive/v3/files/" + fileId + "?alt=media", + + success: function (data) { + + backupcnrNumbersArray = JSON.parse(data); + if (backupcnrNumbersArray.length > 0) { + localStorage.setItem("CNR Numbers", JSON.stringify(backupcnrNumbersArray)); + + $("#showCaseDiv").show(); + //resetDatePicker(); + clearSearchText(); + $("#searchCasesButton").click(); + $("#allCasesBtn").addClass("active"); + $("#todaysCasesBtn").removeClass("active"); + + setCalendarCountArr(backupcnrNumbersArray); + + updateAllCasesAcordion(); + document.getElementById("mycases_span_id").innerHTML = backupcnrNumbersArray.length; + alert(labelsarr[669]); + myApp.hidePleaseWait(); + } else { + myApp.hidePleaseWait(); + showErrorMessage(labelsarr[681]); + } + }, + error: function (error) { + myApp.hidePleaseWait(); + alert(labelsarr[705]); + //alert('error'+JSON.stringify(error)); + } + }); + } else if (data.files.length == 0) { + myApp.hidePleaseWait(); + alert(labelsarr[670]); + } else if (data.files.length > 1) { + myApp.hidePleaseWait(); + alert(labelsarr[671]); + } + }, + error: function (error) { + myApp.hidePleaseWait(); + alert(labelsarr[705]); + //alert(JSON.stringify(error)); + } + + }); + }); + } +} + + +/*$.get('test.txt', function(data) { + + backupcnrNumbersArray = JSON.parse(data); + if (backupcnrNumbersArray.length > 0) { + localStorage.setItem("CNR Numbers", JSON.stringify(backupcnrNumbersArray)); + $("#showCaseDiv").show(); +// resetDatePicker(); + clearSearchText(); + $("#searchCasesButton").click(); + $("#allCasesBtn").addClass("active"); + $("#todaysCasesBtn").removeClass("active"); + + updateAllCasesAcordion(backupcnrNumbersArray); + setCalendarCountArr(backupcnrNumbersArray); + document.getElementById("mycases_span_id").innerHTML = backupcnrNumbersArray.length; + } else { + showErrorMessage("No cases found"); + } + }, 'text'); */ + +// function ConfirmDialog(message) { +// $('<div></div>').appendTo('body') +// .html('<div><h6>' + message + '?</h6></div>') +// .dialog({ +// modal: true, +// title: 'Delete message', +// zIndex: 10000, +// autoOpen: true, +// width: 'auto', +// resizable: false, +// buttons: { +// Yes: function() { +// $('body').append('<h1>Confirm Dialog Result: <i>Yes</i></h1>'); +// $(this).dialog("close"); +// }, +// No: function() { +// $('body').append('<h1>Confirm Dialog Result: <i>No</i></h1>'); +// $(this).dialog("close"); +// } +// }, +// close: function(event, ui) { +// $(this).remove(); +// } +// }); +// }; + +//below code to import language string files for localization... +function importLanguageFile() { + var getAllLabelsWebServiceUrl = hostIP + "getAllLabelsWebService.php"; + + var encrypted_data1 = (localStorage.getItem("LANGUAGE_FLAG")); + if (localStorage.LANGUAGE_FLAG == "english") { + var encrypted_data2 = ("0"); + } else { + var encrypted_data2 = ("1"); + } + + /* */ + // var bilingual_flag1 = "1"; + // var encrypted_data2 = (bilingual_flag1.toString()); + + // var encrypted_data2 = (bilingual_flag.toString()); + var data = { language_flag: encrypted_data1.toString(), bilingual_flag: encrypted_data2.toString() }; + + //web service call to get court complexes + callToWebService(getAllLabelsWebServiceUrl, data, getAllLabelsWebServiceResult); + function getAllLabelsWebServiceResult(data) { + var obj = (data.allLabels); + + if (window.sessionStorage.LANGUAGES_AVAILABLE == null) { + var languages = (data.languages_available); + window.sessionStorage.setItem("LANGUAGES_AVAILABLE", JSON.stringify(languages)); + populateLabelsRadioButtons(languages); + } else { + populateLabelsRadioButtons(JSON.parse(window.sessionStorage.LANGUAGES_AVAILABLE)); + } + myApp.hidePleaseWait(); + if (obj != null) { + resetLabelsOnIndexPage(obj); + resetAllTabPanels(); + } else { + showErrorMessage(labelsarr[675]); + } + } +} + +//variable to save cause list result in session storage(To avoid repeat ajax calls once result is retrieved) +var CAUSE_LIST_RESULT = ''; + +/*setter for cause list result called after getting the result for cause +list seatch +*@cause_list_result : stringified cases json object +*/ +function setCauseListResult(cause_list_result) { + CAUSE_LIST_RESULT = cause_list_result; +} + +//getter for cause list result called to get cause list search result after page reload +function getCauseListResult() { + return CAUSE_LIST_RESULT; +} + +//function to retain state of collapse fields after page reload +$(document).on("show.bs.collapse", ".collapse", function (event) { + var active = $(this).attr('id'); + var panels = localStorage.panels === undefined ? new Array() : JSON.parse(localStorage.panels); + if ($.inArray(active, panels) == -1) //check that the element is not in the array + panels.push(active); + localStorage.panels = JSON.stringify(panels); +}); + +//function to retain state of collapse fields after page reload +$(document).on("hidden.bs.collapse", ".collapse", function (event) { + var active = $(this).attr('id'); + var panels = localStorage.panels === undefined ? new Array() : JSON.parse(localStorage.panels); + var elementIndex = $.inArray(active, panels); + if (elementIndex !== -1) //check the array + { + panels.splice(elementIndex, 1); //remove item from array + } + localStorage.panels = JSON.stringify(panels); //save array on localStorage +}); + + +function setRandomIv(riv) { + randomiv = riv; +} + +function getRandomIv() { + return randomiv; +} + + +/* +*function to decrypt response +*@result : encrypted result +*/ +function decodeResponse(result) { + var key = CryptoJS.enc.Hex.parse('3273357638782F413F4428472B4B6250'); + var iv_random = CryptoJS.enc.Hex.parse(result.trim().slice(0, 32)); + var result_split = result.trim().slice(32); + var bytes = CryptoJS.AES.decrypt(result_split.trim(), key, { iv: iv_random }, { mode: CryptoJS.mode.CBC }); + var plaintext = bytes.toString(CryptoJS.enc.Utf8); + s = plaintext; + s = s.replace(/\\n/g, "\\n") + .replace(/\\'/g, "\\'") + .replace(/\\"/g, '\\"') + .replace(/\\&/g, "\\&") + .replace(/\\r/g, "\\r") + .replace(/\\t/g, "\\t") + .replace(/\\b/g, "\\b") + .replace(/\\f/g, "\\f"); + // remove non-printable and other non-valid JSON chars + s = s.replace(/[\u0000-\u0019]+/g, ""); + return s; +} + + +//Function to generate random hex number +function genRanHex(size) { + var hex = [...Array(size)] + .map(() => Math.floor(Math.random() * 16).toString(16)).join(''); + return hex; +} + +//common code for spinner +var myApp; +myApp = myApp || (function () { + + var pleaseWaitDiv = $('<div class="modal" id="pleaseWaitDialog" data-backdrop="static"data-keyboard="false"><div class="modal-content" style="margin-top:50%;"><div class="modal-body text-center"><i class="fa fa-spinner fa-spin fa-3x fa-fw"></i><h3 style="color:#FFF;font-weight: bold;" >loading...</h3></div></div></div>'); + + return { + showPleaseWait: function () { + pleaseWaitDiv.modal('show'); + }, + hidePleaseWait: function () { + pleaseWaitDiv.modal('hide'); + }, + + }; +})(); +//spinner code ends + +//common function to show error messages +function showErrorMessage(message) { + $.bootstrapGrowl(message, { + ele: 'body', // which element to append to + type: 'danger', // (null, 'info', 'danger', 'success') + offset: { from: 'bottom', amount: 20 }, // 'top', or 'bottom' + align: 'center', // ('left', 'right', or 'center') + width: 'auto', // (integer, or 'auto') + delay: 2000, // Time while the message will be displayed. It's not equivalent to the *demo* timeOut! + allow_dismiss: false, // If true then will display a cross to close the popup. + stackup_spacing: 10 // spacing between consecutively stacked growls. + }); +} + +//common function to show info messages +function showInfoMessage(message) { + $.bootstrapGrowl(message, { + ele: 'body', // which element to append to + type: 'info', // (null, 'info', 'danger', 'success') + offset: { from: 'bottom', amount: 20 }, // 'top', or 'bottom' + align: 'center', // ('left', 'right', or 'center') + width: 'auto', // (integer, or 'auto') + delay: 2000, // Time while the message will be displayed. It's not equivalent to the *demo* timeOut! + allow_dismiss: false, // If true then will display a cross to close the popup. + stackup_spacing: 10 // spacing between consecutively stacked growls. + }); +} + + +function getCalendarCountArr() { + return casesCountArr; +} + +function setCalendarCountArr(cnrNumbersArr) { + + if (cnrNumbersArr && cnrNumbersArr.length > 0) { + calendarDates = cnrNumbersArr.reduce(function (calendarDates, current) { + + var caseInfo = JSON.parse(current); + + /*let dtNextStr = ""; + let dtLastStr = ""; + let dtDecStr = "";*/ + + var dtNextStr = ""; + var dtLastStr = ""; + var dtDecStr = ""; + + if (caseInfo.date_next_list) { + dtNext = caseInfo.date_next_list.split('-'); + dtNextStr = (dtNext[2] + "-" + dtNext[1] + "-" + dtNext[0]); + } + + if (caseInfo.date_last_list) { + dtLast = caseInfo.date_last_list.split('-'); + dtLastStr = (dtLast[2] + "-" + dtLast[1] + "-" + dtLast[0]); + } + + if (caseInfo.date_of_decision) { + dtDec = caseInfo.date_of_decision.split('-'); + dtDecStr = (dtDec[2] + "-" + dtDec[1] + "-" + dtDec[0]); + } + + if (dtNextStr) { + calendarDates[dtNextStr] = calendarDates[dtNextStr] || []; + calendarDates[dtNextStr].push(current); + } + + if (dtLastStr) { + if ((dtNextStr != dtLastStr) && (dtNextStr != dtDecStr) && (dtLastStr != dtDecStr)) { + calendarDates[dtLastStr] = calendarDates[dtLastStr] || []; + calendarDates[dtLastStr].push(current); + } + } + + if (dtDecStr) { + if ((dtNextStr != dtLastStr) && (dtNextStr != dtDecStr)) { + calendarDates[dtDecStr] = calendarDates[dtDecStr] || []; + calendarDates[dtDecStr].push(current); + } + } + + return calendarDates; + + }, {}); + var calendarCntArr = {}; + $.each(calendarDates, function (index, value) { + //let length = calendarDates[index].length; + var length = calendarDates[index].length; + calendarCntArr[index] = length; + }); + casesCountArr = calendarCntArr; + } else { + casesCountArr = null; + } +} + +function mapMarkerClicked() { + // window.location = 'map.html?navigation_link=case_history.html&state_code='+state_code+'&dist_code='+district_code+'&court_code='+court_code+'&complex_code='+complex_code; + + $.ajax({ + type: "GET", + url: "map.html?navigation_link=home" + }).done(function (data) { + // $("#caseHistoryModal").show(); + document.getElementById("mySidenav").style.display = "none"; + $("#mapData").html(data); + $("#mapModal").modal(); + }); + +} + +//checks connection +function checkConnection() { + var networkState = navigator.connection && navigator.connection.type; + if ((networkState == 'offline') || (networkState == 'none')) { + + netConnectCnt = netConnectCnt + 1; + if (netConnectCnt <= 1) { + showErrorMessage(labelsarr[717]); + // showErrorMessage("Please check your internet connection and Try again"); + } + isOnline = false; + } else { + isOnline = true; + } +} + +function callToWebService(url, data, callback) { + var data1 = encryptData(data); + header = { + 'Authorization': 'Bearer ' + encryptData(jwttoken) + }; + + cordova.plugin.http.setRequestTimeout(180); + cordova.plugin.http.get(url, { + params: data1 + }, header, function (response) { + + var responseDecoded = JSON.parse(decodeResponse(response.data)); + + if (responseDecoded.token) { + jwttoken = responseDecoded.token; + } + + if (responseDecoded.status && responseDecoded.status == 'N') { + if (responseDecoded.status_code == '401') { + if (!regenerateWebserviceCallFlag) { + regenerateWebserviceCallFlag = true; + cordova.getAppVersion.getPackageName(function (pkgname) { + var uidObj = { + "uid": "324456" + ":" + pkgname + }; + data = { + ...data, + ...uidObj + }; + callToWebService(url, data, callback); + }); + } else { + showErrorMessage("Session expired !"); + } + } + if (responseDecoded.msg) + showErrorMessage(responseDecoded.msg); + } else { + callback(responseDecoded); + regenerateWebserviceCallFlag = false; + } + }, function (response) { + //showErrorMessage(labelsarr[705]); + myApp.hidePleaseWait(); + regenerateWebserviceCallFlag = false; + }); + + + function encryptData(data) { + var dataEncoded = JSON.stringify(data); + generateGlobalIv(); + var randomiv = genRanHex(16); + var key = CryptoJS.enc.Hex.parse('4D6251655468576D5A7134743677397A'); + var iv = CryptoJS.enc.Hex.parse(globaliv + randomiv); + var encrypted = CryptoJS.AES.encrypt((dataEncoded), key, { + iv: iv + }); + var encrypted_data = encrypted.ciphertext.toString(CryptoJS.enc.Base64); + encrypted_data = randomiv + globalIndex + encrypted_data; + return encrypted_data; + } + + function generateGlobalIv() { + var a = ["556A586E32723575", "34743777217A2543", "413F4428472B4B62", "48404D635166546A", "614E645267556B58", "655368566D597133"]; + var test_arr = [0, 1, 2, 3, 4, 5]; + shuffle(test_arr); + + function shuffle(array) { + var i = 0, + j = 0, + temp = null + + for (i = array.length - 1; i > 0; i -= 1) { + j = Math.floor(Math.random() * (i + 1)) + temp = array[i] + array[i] = array[j] + array[j] = temp + } + } + globaliv = a[test_arr[0]].toString(); + globalIndex = test_arr[0]; + } +} diff --git a/rev/package-lock.json b/rev/package-lock.json new file mode 100644 index 0000000..7351f0a 100644 --- /dev/null +++ a/rev/package-lock.json @@ -1,0 +1,109 @@ +{ + "name": "rev", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "crypto-js": "^4.2.0", + "node-fetch": "^3.3.2" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + } + } +} diff --git a/rev/package.json b/rev/package.json new file mode 100644 index 0000000..0446880 100644 --- /dev/null +++ a/rev/package.json @@ -1,0 +1,6 @@ +{ + "dependencies": { + "crypto-js": "^4.2.0", + "node-fetch": "^3.3.2" + } +} diff --git a/rev/rev.js b/rev/rev.js new file mode 100644 index 0000000..2bfd9ef 100644 --- /dev/null +++ a/rev/rev.js @@ -1,0 +1,147 @@ +const CryptoJS = require('crypto-js'); +const { URLSearchParams } = require('url'); +const dns = require('dns').promises; + +// Configuration and state +const hostIP = "https://app.ecourts.gov.in/ecourt_mobile_DC/"; +let jwttoken = ""; +let regenerateWebserviceCallFlag = false; +let globaliv = "4B6250655368566D"; +let globalIndex = 0; + +// Utility: Check internet connection +async function checkDeviceOnlineStatus() { + try { + await dns.lookup('google.com'); + return true; + } catch { + console.error("Please check your internet connection and try again"); + return false; + } +} + +// Show error message (replace alert with console) +function showErrorMessage(message) { + console.error("Error:", message); +} + +// Generate random hex +function genRanHex(size) { + return [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join(''); +} + +// Generate global IV +function generateGlobalIv() { + const ivOptions = [ + "556A586E32723575", "34743777217A2543", "413F4428472B4B62", + "48404D635166546A", "614E645267556B58", "655368566D597133" + ]; + const indices = [0, 1, 2, 3, 4, 5]; + for (let i = indices.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [indices[i], indices[j]] = [indices[j], indices[i]]; + } + globaliv = ivOptions[indices[0]]; + globalIndex = indices[0]; + return globaliv; +} + +// Encrypt data +function encryptData(data) { + const dataEncoded = JSON.stringify(data); + generateGlobalIv(); + const randomiv = genRanHex(16); + const key = CryptoJS.enc.Hex.parse('4D6251655468576D5A7134743677397A'); + const iv = CryptoJS.enc.Hex.parse(globaliv + randomiv); + + const encrypted = CryptoJS.AES.encrypt(dataEncoded, key, { iv }); + let encrypted_data = encrypted.ciphertext.toString(CryptoJS.enc.Base64); + encrypted_data = randomiv + globalIndex + encrypted_data; + return encrypted_data; +} + +// Decrypt response +function decodeResponse(result) { + const key = CryptoJS.enc.Hex.parse('3273357638782F413F4428472B4B6250'); + const iv_random = CryptoJS.enc.Hex.parse(result.trim().slice(0, 32)); + const result_split = result.trim().slice(32); + + const bytes = CryptoJS.AES.decrypt(result_split, key, { iv: iv_random }); + let plaintext = bytes.toString(CryptoJS.enc.Utf8); + plaintext = plaintext.replace(/[\u0000-\u0019]+/g, ""); + return plaintext; +} + +// API call wrapper +async function callToWebService(url, data, callback) { + const online = await checkDeviceOnlineStatus(); + if (!online) return; + + try { + const encryptedData = encryptData(data); + const headers = { + 'Content-Type': 'application/json', + }; + + headers['Authorization'] = 'Bearer ' + encryptData(jwttoken); + + const params = new URLSearchParams({ data: encryptedData }); + const fullUrl = `${url}?${params.toString()}`; + + const res = await fetch(fullUrl, { + method: 'GET', + headers + }); + + const responseText = await res.text(); + const decodedResponse = JSON.parse(decodeResponse(responseText)); + + if (decodedResponse.token) { + jwttoken = decodedResponse.token; + } + + console.log(decodedResponse) + if (decodedResponse.status === 'N') { + if (decodedResponse.status_code === '401') { + if (!regenerateWebserviceCallFlag) { + regenerateWebserviceCallFlag = true; + const packageName = "com.eCourts.mobile"; + const uidObj = { uid: "324456:" + packageName }; + const newData = { ...data, ...uidObj }; + return callToWebService(url, newData, callback); + } else { + showErrorMessage("Session expired!"); + } + } + + if (decodedResponse.msg) { + showErrorMessage(decodedResponse.msg); + } + + return; + } + + callback(decodedResponse); + regenerateWebserviceCallFlag = false; + + } catch (error) { + console.error('Error calling web service:', error.message); + showErrorMessage("An error occurred while processing your request."); + regenerateWebserviceCallFlag = false; + } +} + +// Fetch Court Complexes +async function getCourtComplexes(state_code, dist_code, callback) { + const url = hostIP + "courtEstWebService.php"; + const data = { + action_code: "fillCourtComplex", + state_code, + dist_code + }; + await callToWebService(url, data, callback); +} + +getCourtComplexes("1", "101", (res) => { + console.log("Court Complexes:", res.courtComplex); +}); -- rgit 0.1.5