replaced xml2json with xml2js

pull/2/head
vzakharchenko 3 years ago
parent 3d862bb090
commit e7d2c58c47

@ -1,7 +1,7 @@
/* eslint-disable */ /* eslint-disable */
const {restCalls} = require("../src/utils/DefaultRestCalls"); const {restCalls} = require("../src/utils/DefaultRestCalls");
const parser = require('xml2json'); const parser = require('xml2js');
const CryptoJS = require('crypto-js'); const CryptoJS = require('crypto-js');
const {RSAKey} = require('./rsa'); const {RSAKey} = require('./rsa');
@ -107,7 +107,7 @@ async function getPublicKey(session){
'cookie': `sessionId=${session.SesInfo}`, 'cookie': `sessionId=${session.SesInfo}`,
__RequestVerificationToken: session.TokInfo __RequestVerificationToken: session.TokInfo
}); });
const message = JSON.parse(parser.toJson(resp)); const message = await parser.parseStringPromise(resp);
return message.response; return message.response;
} }

@ -1,6 +1,6 @@
{ {
"name": "e3372h-320-cli", "name": "e3372h-320-cli",
"version": "1.0.0", "version": "1.0.1",
"description": "e3372h-320 client", "description": "e3372h-320 client",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@ -24,7 +24,7 @@
"axios": "^0.24.0", "axios": "^0.24.0",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"get-random-values": "^1.2.2", "get-random-values": "^1.2.2",
"xml2json": "^0.12.0", "xml2js": "^0.4.23",
"yargs": "^17.2.1" "yargs": "^17.2.1"
}, },
"repository": { "repository": {
@ -40,6 +40,7 @@
], ],
"devDependencies": { "devDependencies": {
"@shopify/eslint-plugin": "^40.4.0", "@shopify/eslint-plugin": "^40.4.0",
"@types/xml2js": "^0.4.9",
"@types/xml2json": "^0.11.4", "@types/xml2json": "^0.11.4",
"@types/yargs": "^17.0.4", "@types/yargs": "^17.0.4",
"@typescript-eslint/eslint-plugin": "^5.2.0", "@typescript-eslint/eslint-plugin": "^5.2.0",

@ -1,6 +1,6 @@
import fs from "fs"; import fs from "fs";
import parser from 'xml2json'; import parser from 'xml2js';
import {SessionData} from './startSession'; import {SessionData} from './startSession';
import {restCalls} from "./utils/DefaultRestCalls"; import {restCalls} from "./utils/DefaultRestCalls";
@ -34,7 +34,7 @@ export async function getSMSByUsers(sessionData: SessionData,
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8;enc', 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8;enc',
Cookie: `SessionId=${sessionData.SesInfo}`, Cookie: `SessionId=${sessionData.SesInfo}`,
}); });
const pwdret = JSON.parse(parser.toJson(resp)); const pwdret = await parser.parseStringPromise((resp));
const ret = huawei.dataDecrypt(scram, smsNonce, smsSalt, nonceStr, pwdret); const ret = huawei.dataDecrypt(scram, smsNonce, smsSalt, nonceStr, pwdret);
if (exportFormat !== 'hide') { if (exportFormat !== 'hide') {
@ -42,11 +42,10 @@ export async function getSMSByUsers(sessionData: SessionData,
await saveFile(exportFile, ret); await saveFile(exportFile, ret);
console.info(`xml file ${exportFile} created`); console.info(`xml file ${exportFile} created`);
} else if (exportFormat === 'json') { } else if (exportFormat === 'json') {
await saveFile(exportFile, parser.toJson(ret)); await saveFile(exportFile, JSON.stringify(await parser.parseStringPromise(ret)));
console.info(`json file ${exportFile} created`); console.info(`json file ${exportFile} created`);
} else { } else {
const text = parser.toJson(ret); const json = await parser.parseStringPromise(ret);
const json = JSON.parse(text);
if (Array.isArray(json.response.messages.message)) { if (Array.isArray(json.response.messages.message)) {
json.response.messages.message.forEach((message: any) => { json.response.messages.message.forEach((message: any) => {
console.log(`MessageId: ${message.index} Phone: ${message.phone} Message: ${JSON.stringify(message.content)}`); console.log(`MessageId: ${message.index} Phone: ${message.phone} Message: ${JSON.stringify(message.content)}`);
@ -59,8 +58,7 @@ export async function getSMSByUsers(sessionData: SessionData,
} }
if (deleteAfter) { if (deleteAfter) {
const text = parser.toJson(ret); const json = await parser.parseStringPromise(ret);
const json = JSON.parse(text);
const messages = json.response.messages.message; const messages = json.response.messages.message;
for (let i = 0; i < messages.length; i++) { for (let i = 0; i < messages.length; i++) {
await deleteMessage(sessionData, messages[i].index); await deleteMessage(sessionData, messages[i].index);
@ -79,8 +77,7 @@ export async function getContactSMSPages(sessionData: SessionData,
Cookie: `SessionId=${sessionData.SesInfo}`, Cookie: `SessionId=${sessionData.SesInfo}`,
}); });
const text = parser.toJson(resp); const json = await parser.parseStringPromise(resp);
const json = JSON.parse(text);
let number = Math.floor(json.response.count / 21); let number = Math.floor(json.response.count / 21);
if (number > 0) { if (number > 0) {
number += 1; number += 1;
@ -90,7 +87,7 @@ export async function getContactSMSPages(sessionData: SessionData,
await saveFile(exportFile, resp); await saveFile(exportFile, resp);
console.info(`xml file ${exportFile} created`); console.info(`xml file ${exportFile} created`);
} else if (exportFormat === 'json') { } else if (exportFormat === 'json') {
await saveFile(exportFile, parser.toJson(resp)); await saveFile(exportFile, JSON.stringify(await parser.parseStringPromise(resp)));
console.info(`json file ${exportFile} created`); console.info(`json file ${exportFile} created`);
} else { } else {
console.info(`${number}`); console.info(`${number}`);
@ -103,8 +100,7 @@ export async function getSMSPages(sessionData: SessionData,
exportFile: string, exportFile: string,
exportFormat: ExportFormat) { exportFormat: ExportFormat) {
const resp = await restCalls.fetchData(`http://${sessionData.url}/api/sms/sms-count`, 'GET'); const resp = await restCalls.fetchData(`http://${sessionData.url}/api/sms/sms-count`, 'GET');
const text = parser.toJson(resp); const json = await parser.parseStringPromise(resp);
const json = JSON.parse(text);
let number = Math.floor((json.response.LocalInbox + json.response.LocalOutbox) / 21); let number = Math.floor((json.response.LocalInbox + json.response.LocalOutbox) / 21);
if (number > 0) { if (number > 0) {
number += 1; number += 1;
@ -114,7 +110,7 @@ export async function getSMSPages(sessionData: SessionData,
await saveFile(exportFile, resp); await saveFile(exportFile, resp);
console.info(`xml file ${exportFile} created`); console.info(`xml file ${exportFile} created`);
} else if (exportFormat === 'json') { } else if (exportFormat === 'json') {
await saveFile(exportFile, parser.toJson(resp)); await saveFile(exportFile, JSON.stringify(await parser.parseStringPromise(resp)));
console.info(`json file ${exportFile} created`); console.info(`json file ${exportFile} created`);
} else { } else {
console.info(`${number}`); console.info(`${number}`);
@ -131,10 +127,9 @@ export async function deleteMessage(sessionData: SessionData,
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8;enc', 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8;enc',
Cookie: `SessionId=${sessionData.SesInfo}`, Cookie: `SessionId=${sessionData.SesInfo}`,
}); });
const text = parser.toJson(resp); const json = await parser.parseStringPromise(resp);
const json = JSON.parse(text);
if (json.response !== 'OK') { if (json.response !== 'OK') {
throw new Error(`Delete message error: ${text}`); throw new Error(`Delete message error: ${JSON.stringify(json)}`);
} }
console.info('Message or Contact deleted'); console.info('Message or Contact deleted');
} }
@ -153,10 +148,9 @@ export async function sendMessage(sessionData: SessionData,
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8;enc', 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8;enc',
Cookie: `SessionId=${sessionData.SesInfo}`, Cookie: `SessionId=${sessionData.SesInfo}`,
}); });
const text = parser.toJson(resp); const json = await parser.parseStringPromise(resp);
const json = JSON.parse(text);
if (json.response !== 'OK') { if (json.response !== 'OK') {
throw new Error(`Delete message error: ${text}`); throw new Error(`Delete message error: ${JSON.stringify(json)}`);
} }
console.info('Message sent'); console.info('Message sent');
} }
@ -183,17 +177,16 @@ export async function getSMSContacts(sessionData: SessionData,
__RequestVerificationToken: sessionData.TokInfo, __RequestVerificationToken: sessionData.TokInfo,
Cookie: `SessionId=${sessionData.SesInfo}`, Cookie: `SessionId=${sessionData.SesInfo}`,
}); });
const pwdret = JSON.parse(parser.toJson(resp)); const pwdret = await parser.parseStringPromise(resp);
const ret = huawei.dataDecrypt(scram, smsNonce, smsSalt, nonceStr, pwdret); const ret = huawei.dataDecrypt(scram, smsNonce, smsSalt, nonceStr, pwdret);
if (exportFormat === 'xml') { if (exportFormat === 'xml') {
await saveFile(exportFile, ret); await saveFile(exportFile, ret);
console.info(`xml file ${exportFile} created`); console.info(`xml file ${exportFile} created`);
} else if (exportFormat === 'json') { } else if (exportFormat === 'json') {
await saveFile(exportFile, parser.toJson(ret)); await saveFile(exportFile, JSON.stringify(await parser.parseStringPromise(ret)));
console.info(`json file ${exportFile} created`); console.info(`json file ${exportFile} created`);
} else { } else {
const text = parser.toJson(ret); const json = await parser.parseStringPromise(ret);
const json = JSON.parse(text);
if (Array.isArray(json.response.messages.message)) { if (Array.isArray(json.response.messages.message)) {
json.response.messages.message.forEach((message: any) => { json.response.messages.message.forEach((message: any) => {
console.log(`MessageId: ${message.index} Phone: ${message.phone} lastMessage: ${JSON.stringify(message.content)}`); console.log(`MessageId: ${message.index} Phone: ${message.phone} lastMessage: ${JSON.stringify(message.content)}`);

@ -1,6 +1,6 @@
import fs from "fs"; import fs from "fs";
import parser from "xml2json"; import parser from "xml2js";
import {SessionData} from "./startSession"; import {SessionData} from "./startSession";
import {restCalls} from "./utils/DefaultRestCalls"; import {restCalls} from "./utils/DefaultRestCalls";
@ -19,10 +19,9 @@ export async function controlMobileData(sessionData: SessionData, mobileStatus:
__RequestVerificationToken: sessionData.TokInfo, __RequestVerificationToken: sessionData.TokInfo,
Cookie: `SessionId=${sessionData.SesInfo}`, Cookie: `SessionId=${sessionData.SesInfo}`,
}); });
const text = parser.toJson(resp); const json = await parser.parseStringPromise(resp);
const json = JSON.parse(text);
if (json.response !== 'OK') { if (json.response !== 'OK') {
throw new Error(`Control Mobile Data error: ${text}`); throw new Error(`Control Mobile Data error: ${JSON.stringify(json)}`);
} }
console.log(`Control Mobile Data changed to ${mobileStatus}`); console.log(`Control Mobile Data changed to ${mobileStatus}`);
} }
@ -33,10 +32,9 @@ export async function reconnect(sessionData: SessionData) {
__RequestVerificationToken: sessionData.TokInfo, __RequestVerificationToken: sessionData.TokInfo,
Cookie: `SessionId=${sessionData.SesInfo}`, Cookie: `SessionId=${sessionData.SesInfo}`,
}); });
const text = parser.toJson(resp); const json = await parser.parseStringPromise(resp);
const json = JSON.parse(text);
if (json.response !== 'OK') { if (json.response !== 'OK') {
throw new Error(`Reconnecting error: ${text}`); throw new Error(`Reconnecting error: ${JSON.stringify(json)}`);
} }
console.log('Reconnected'); console.log('Reconnected');
} }
@ -52,11 +50,10 @@ export async function status(sessionData: SessionData, exportFile: string,
await saveFile(exportFile, resp); await saveFile(exportFile, resp);
console.info(`xml file ${exportFile} created`); console.info(`xml file ${exportFile} created`);
} else if (exportFormat === 'json') { } else if (exportFormat === 'json') {
await saveFile(exportFile, parser.toJson(resp)); await saveFile(exportFile, JSON.stringify(await parser.parseStringPromise(resp)));
console.info(`json file ${exportFile} created`); console.info(`json file ${exportFile} created`);
} else { } else {
const text = parser.toJson(resp); const json = await parser.parseStringPromise(resp);
const json = JSON.parse(text);
const response = json.response; const response = json.response;
Object.keys(response).forEach((key) => { Object.keys(response).forEach((key) => {
console.info(`${key}=${response[key]}`); console.info(`${key}=${response[key]}`);

@ -1,4 +1,4 @@
import parser from 'xml2json'; import parser from 'xml2js';
import {restCalls} from "./utils/DefaultRestCalls"; import {restCalls} from "./utils/DefaultRestCalls";
@ -29,7 +29,7 @@ type SessionData0 = {
// //
async function getSessionId(url: string): Promise<SessionData0> { async function getSessionId(url: string): Promise<SessionData0> {
const resp = await restCalls.fetchData(`http://${url}/api/webserver/SesTokInfo`, 'GET'); const resp = await restCalls.fetchData(`http://${url}/api/webserver/SesTokInfo`, 'GET');
const message = JSON.parse(parser.toJson(resp)); const message = await parser.parseStringPromise(resp);
return message.response; return message.response;
} }
// //

Loading…
Cancel
Save