@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
36 lines • 4.57 kB
JavaScript
import { TelnetNegotiator } from './telnet-negotiator';
export class ShellAdapter {
constructor(terminal, termType = 'xterm-256color') {
this.terminal = terminal;
this.termType = termType;
}
filterNonPrintable(str) {
// get rid of �
const helpArr = str.split('�');
str = helpArr.join('');
return str;
}
setTermType(type) {
this.termType = type;
}
filterReceiveData(data) {
// negotiate telnet signals, if any
const telnet = new TelnetNegotiator(this.terminal, this.termType);
const telnetData = telnet.negotiate(data);
// decode text for display
const textDecoder = new TextDecoder();
const decodedToDisplay = textDecoder.decode(data);
return {
dataToSend: telnetData.dataToSend,
dataToDisplay: telnetData.isOutput ? this.filterNonPrintable(decodedToDisplay) : ''
};
}
filterSendData(data) {
const sendQueue = [];
for (let i = 0; i < data.length; i++) {
sendQueue.push(data.charCodeAt(i));
}
return sendQueue.length ? new Uint8Array(sendQueue) : '';
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlbW90ZS1hY2Nlc3MvdGVybWluYWwtdmlld2VyL3NoZWxsLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFDVSxRQUFrQixFQUNsQixXQUFXLGdCQUFnQjtRQUQzQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQW1CO0lBQ2xDLENBQUM7SUFFSixrQkFBa0IsQ0FBQyxHQUFXO1FBQzVCLGVBQWU7UUFDZixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFJO1FBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQUk7UUFDcEIsbUNBQW1DO1FBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUxQywwQkFBMEI7UUFDMUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUN0QyxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEQsT0FBTztZQUNMLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtZQUNqQyxhQUFhLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDcEYsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBSTtRQUNqQixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbG5ldE5lZ290aWF0b3IgfSBmcm9tICcuL3RlbG5ldC1uZWdvdGlhdG9yJztcbmltcG9ydCB0eXBlIHsgVGVybWluYWwgfSBmcm9tICdAeHRlcm0veHRlcm0nO1xuXG5leHBvcnQgY2xhc3MgU2hlbGxBZGFwdGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZXJtaW5hbDogVGVybWluYWwsXG4gICAgcHJpdmF0ZSB0ZXJtVHlwZSA9ICd4dGVybS0yNTZjb2xvcidcbiAgKSB7fVxuXG4gIGZpbHRlck5vblByaW50YWJsZShzdHI6IHN0cmluZykge1xuICAgIC8vIGdldCByaWQgb2Yg77+9XG4gICAgY29uc3QgaGVscEFyciA9IHN0ci5zcGxpdCgn77+9Jyk7XG4gICAgc3RyID0gaGVscEFyci5qb2luKCcnKTtcblxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBzZXRUZXJtVHlwZSh0eXBlKSB7XG4gICAgdGhpcy50ZXJtVHlwZSA9IHR5cGU7XG4gIH1cblxuICBmaWx0ZXJSZWNlaXZlRGF0YShkYXRhKSB7XG4gICAgLy8gbmVnb3RpYXRlIHRlbG5ldCBzaWduYWxzLCBpZiBhbnlcbiAgICBjb25zdCB0ZWxuZXQgPSBuZXcgVGVsbmV0TmVnb3RpYXRvcih0aGlzLnRlcm1pbmFsLCB0aGlzLnRlcm1UeXBlKTtcbiAgICBjb25zdCB0ZWxuZXREYXRhID0gdGVsbmV0Lm5lZ290aWF0ZShkYXRhKTtcblxuICAgIC8vIGRlY29kZSB0ZXh0IGZvciBkaXNwbGF5XG4gICAgY29uc3QgdGV4dERlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgICBjb25zdCBkZWNvZGVkVG9EaXNwbGF5ID0gdGV4dERlY29kZXIuZGVjb2RlKGRhdGEpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGFUb1NlbmQ6IHRlbG5ldERhdGEuZGF0YVRvU2VuZCxcbiAgICAgIGRhdGFUb0Rpc3BsYXk6IHRlbG5ldERhdGEuaXNPdXRwdXQgPyB0aGlzLmZpbHRlck5vblByaW50YWJsZShkZWNvZGVkVG9EaXNwbGF5KSA6ICcnXG4gICAgfTtcbiAgfVxuXG4gIGZpbHRlclNlbmREYXRhKGRhdGEpIHtcbiAgICBjb25zdCBzZW5kUXVldWUgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNlbmRRdWV1ZS5wdXNoKGRhdGEuY2hhckNvZGVBdChpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbmRRdWV1ZS5sZW5ndGggPyBuZXcgVWludDhBcnJheShzZW5kUXVldWUpIDogJyc7XG4gIH1cbn1cbiJdfQ==