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