You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.4 KiB
TypeScript
67 lines
2.4 KiB
TypeScript
3 years ago
|
import fs from "fs";
|
||
|
|
||
|
import parser from "xml2json";
|
||
|
|
||
|
import {SessionData} from "./startSession";
|
||
|
import {restCalls} from "./utils/DefaultRestCalls";
|
||
|
import {ExportFormat} from "./utils/Constants";
|
||
|
|
||
|
|
||
|
type MobileStatus = 'on' | 'off';
|
||
|
|
||
|
async function saveFile(filename: string, data: string) {
|
||
|
await fs.promises.writeFile(filename, data);
|
||
|
}
|
||
|
|
||
|
export async function controlMobileData(sessionData: SessionData, mobileStatus: MobileStatus) {
|
||
|
const data = `<?xml version="1.0" encoding="UTF-8"?><request><dataswitch>${mobileStatus === 'on' ? 1 : 0}</dataswitch></request>`;
|
||
|
const resp = await restCalls.sendData(`http://${sessionData.url}/api/dialup/mobile-dataswitch`, 'POST', data, {
|
||
|
__RequestVerificationToken: sessionData.TokInfo,
|
||
|
Cookie: `SessionId=${sessionData.SesInfo}`,
|
||
|
});
|
||
|
const text = parser.toJson(resp);
|
||
|
const json = JSON.parse(text);
|
||
|
if (json.response !== 'OK') {
|
||
|
throw new Error(`Control Mobile Data error: ${text}`);
|
||
|
}
|
||
|
console.log(`Control Mobile Data changed to ${mobileStatus}`);
|
||
|
}
|
||
|
|
||
|
export async function reconnect(sessionData: SessionData) {
|
||
|
const data = `<?xml version: "1.0" encoding="UTF-8"?><request><ReconnectAction>1</ReconnectAction></request>`;
|
||
|
const resp = await restCalls.sendData(`http://${sessionData.url}/api/net/reconnect`, 'POST', data, {
|
||
|
__RequestVerificationToken: sessionData.TokInfo,
|
||
|
Cookie: `SessionId=${sessionData.SesInfo}`,
|
||
|
});
|
||
|
const text = parser.toJson(resp);
|
||
|
const json = JSON.parse(text);
|
||
|
if (json.response !== 'OK') {
|
||
|
throw new Error(`Reconnecting error: ${text}`);
|
||
|
}
|
||
|
console.log('Reconnected');
|
||
|
}
|
||
|
|
||
|
export async function status(sessionData: SessionData, exportFile: string,
|
||
|
exportFormat: ExportFormat) {
|
||
|
const resp = await restCalls.fetchData(`http://${sessionData.url}/api/monitoring/status`, 'GET', {
|
||
|
__RequestVerificationToken: sessionData.TokInfo,
|
||
|
Cookie: `SessionId=${sessionData.SesInfo}`,
|
||
|
});
|
||
|
if (exportFormat !== 'hide') {
|
||
|
if (exportFormat === 'xml') {
|
||
|
await saveFile(exportFile, resp);
|
||
|
console.info(`xml file ${exportFile} created`);
|
||
|
} else if (exportFormat === 'json') {
|
||
|
await saveFile(exportFile, parser.toJson(resp));
|
||
|
console.info(`json file ${exportFile} created`);
|
||
|
} else {
|
||
|
const text = parser.toJson(resp);
|
||
|
const json = JSON.parse(text);
|
||
|
const response = json.response;
|
||
|
Object.keys(response).forEach((key) => {
|
||
|
console.info(`${key}=${response[key]}`);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
}
|