@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
73 lines • 10.7 kB
JavaScript
import { Injectable } from '@angular/core';
import { gettext, hookRoute, hookService, ViewContext } from '@c8y/ngx-components';
import { canActivateRemoteAccess, RemoteAccessService } from '@c8y/ngx-components/remote-access/data';
import { BsModalService } from 'ngx-bootstrap/modal';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/ngx-components/remote-access/data";
import * as i2 from "ngx-bootstrap/modal";
export class SSHRemoteAccessProtocolProviderService {
constructor(remoteAccess, bsModalService) {
this.remoteAccess = remoteAccess;
this.bsModalService = bsModalService;
this.protocolName = 'SSH';
this.protocolLabel = gettext('SSH');
this.protocolDescription = gettext('Allows to connect to an SSH service.');
this.protocolIcon = 'laptop';
}
async addEndpoint(deviceId) {
const modalResult = await this.openSSHEndpointModal({});
if (!modalResult) {
return modalResult;
}
return this.remoteAccess.addConfiguration(deviceId, modalResult);
}
removeEndpoint(deviceId, currentEndpointConfig) {
return this.remoteAccess.deleteConfiguration(deviceId, currentEndpointConfig.id);
}
async editEndpoint(deviceId, currentEndpointConfig) {
const modalResult = await this.openSSHEndpointModal(currentEndpointConfig);
if (!modalResult) {
return modalResult;
}
return this.remoteAccess.updateConfiguration(deviceId, modalResult);
}
async connectEndpointHref(deviceId, configuration) {
return `/device/${deviceId}/ssh/${configuration.id}`;
}
async getDefaultEndpointConfiguration() {
return {
hostname: '127.0.0.1',
port: 22
};
}
async openSSHEndpointModal(currentConfiguration) {
const { RemoteAccessSshEndpointModalComponent } = await import('@c8y/ngx-components/remote-access/ssh/remote-access-ssh-endpoint-modal');
try {
const modalRef = this.bsModalService.show(RemoteAccessSshEndpointModalComponent, {
initialState: { currentValue: currentConfiguration }
});
return (await modalRef.content.result);
}
catch (e) {
// modal closed
return null;
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SSHRemoteAccessProtocolProviderService, deps: [{ token: i1.RemoteAccessService }, { token: i2.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SSHRemoteAccessProtocolProviderService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SSHRemoteAccessProtocolProviderService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: i1.RemoteAccessService }, { type: i2.BsModalService }] });
export const remoteAccessSSHProviders = [
hookRoute({
loadComponent: () => import('@c8y/ngx-components/remote-access/terminal-viewer').then(m => m.TerminalViewerComponent),
path: 'ssh/:configurationId',
context: ViewContext.Device,
tabs: [],
canActivate: [canActivateRemoteAccess]
}),
hookService('remoteAccessProtocolHook', SSHRemoteAccessProtocolProviderService)
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9yZW1vdGUtYWNjZXNzL3NzaC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRixPQUFPLEVBQ0wsdUJBQXVCLEVBR3ZCLG1CQUFtQixFQUNwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUdyRCxNQUFNLE9BQU8sc0NBQXNDO0lBTWpELFlBQ1ksWUFBaUMsRUFDakMsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVAxQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixrQkFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQix3QkFBbUIsR0FBRyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUN0RSxpQkFBWSxHQUFHLFFBQWlCLENBQUM7SUFLOUIsQ0FBQztJQUVKLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBZ0I7UUFDaEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxjQUFjLENBQ1osUUFBZ0IsRUFDaEIscUJBQWdEO1FBRWhELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQ2hCLFFBQWdCLEVBQ2hCLHFCQUFnRDtRQUVoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixRQUFnQixFQUNoQixhQUF3QztRQUV4QyxPQUFPLFdBQVcsUUFBUSxRQUFRLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLCtCQUErQjtRQUNuQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLFdBQVc7WUFDckIsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVTLEtBQUssQ0FBQyxvQkFBb0IsQ0FDbEMsb0JBQXdEO1FBRXhELE1BQU0sRUFBRSxxQ0FBcUMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUM1RCx3RUFBd0UsQ0FDekUsQ0FBQztRQUNGLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxFQUFFO2dCQUMvRSxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUU7YUFDckQsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQThCLENBQUM7UUFDdEUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxlQUFlO1lBQ2YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzsrR0FwRVUsc0NBQXNDO21IQUF0QyxzQ0FBc0MsY0FEekIsTUFBTTs7NEZBQ25CLHNDQUFzQztrQkFEbEQsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBd0VsQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxTQUFTLENBQUM7UUFDUixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQyxtREFBbUQsQ0FBQyxDQUFDLElBQUksQ0FDOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQy9CO1FBQ0gsSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixPQUFPLEVBQUUsV0FBVyxDQUFDLE1BQU07UUFDM0IsSUFBSSxFQUFFLEVBQUU7UUFDUixXQUFXLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztLQUN2QyxDQUFDO0lBQ0YsV0FBVyxDQUFDLDBCQUEwQixFQUFFLHNDQUFzQyxDQUFDO0NBQ2hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXR0ZXh0LCBob29rUm91dGUsIGhvb2tTZXJ2aWNlLCBWaWV3Q29udGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgY2FuQWN0aXZhdGVSZW1vdGVBY2Nlc3MsXG4gIFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24sXG4gIFJlbW90ZUFjY2Vzc1Byb3RvY29sUHJvdmlkZXIsXG4gIFJlbW90ZUFjY2Vzc1NlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9yZW1vdGUtYWNjZXNzL2RhdGEnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTU0hSZW1vdGVBY2Nlc3NQcm90b2NvbFByb3ZpZGVyU2VydmljZSBpbXBsZW1lbnRzIFJlbW90ZUFjY2Vzc1Byb3RvY29sUHJvdmlkZXIge1xuICBwcm90b2NvbE5hbWUgPSAnU1NIJztcbiAgcHJvdG9jb2xMYWJlbCA9IGdldHRleHQoJ1NTSCcpO1xuICBwcm90b2NvbERlc2NyaXB0aW9uID0gZ2V0dGV4dCgnQWxsb3dzIHRvIGNvbm5lY3QgdG8gYW4gU1NIIHNlcnZpY2UuJyk7XG4gIHByb3RvY29sSWNvbiA9ICdsYXB0b3AnIGFzIGNvbnN0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZW1vdGVBY2Nlc3M6IFJlbW90ZUFjY2Vzc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgYWRkRW5kcG9pbnQoZGV2aWNlSWQ6IHN0cmluZyk6IFByb21pc2U8UmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnN0IG1vZGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5vcGVuU1NIRW5kcG9pbnRNb2RhbCh7fSk7XG4gICAgaWYgKCFtb2RhbFJlc3VsdCkge1xuICAgICAgcmV0dXJuIG1vZGFsUmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlbW90ZUFjY2Vzcy5hZGRDb25maWd1cmF0aW9uKGRldmljZUlkLCBtb2RhbFJlc3VsdCk7XG4gIH1cblxuICByZW1vdmVFbmRwb2ludChcbiAgICBkZXZpY2VJZDogc3RyaW5nLFxuICAgIGN1cnJlbnRFbmRwb2ludENvbmZpZzogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvblxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdGVBY2Nlc3MuZGVsZXRlQ29uZmlndXJhdGlvbihkZXZpY2VJZCwgY3VycmVudEVuZHBvaW50Q29uZmlnLmlkKTtcbiAgfVxuXG4gIGFzeW5jIGVkaXRFbmRwb2ludChcbiAgICBkZXZpY2VJZDogc3RyaW5nLFxuICAgIGN1cnJlbnRFbmRwb2ludENvbmZpZzogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvblxuICApOiBQcm9taXNlPFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24+IHtcbiAgICBjb25zdCBtb2RhbFJlc3VsdCA9IGF3YWl0IHRoaXMub3BlblNTSEVuZHBvaW50TW9kYWwoY3VycmVudEVuZHBvaW50Q29uZmlnKTtcbiAgICBpZiAoIW1vZGFsUmVzdWx0KSB7XG4gICAgICByZXR1cm4gbW9kYWxSZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVtb3RlQWNjZXNzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oZGV2aWNlSWQsIG1vZGFsUmVzdWx0KTtcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3RFbmRwb2ludEhyZWYoXG4gICAgZGV2aWNlSWQ6IHN0cmluZyxcbiAgICBjb25maWd1cmF0aW9uOiBSZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAvZGV2aWNlLyR7ZGV2aWNlSWR9L3NzaC8ke2NvbmZpZ3VyYXRpb24uaWR9YDtcbiAgfVxuXG4gIGFzeW5jIGdldERlZmF1bHRFbmRwb2ludENvbmZpZ3VyYXRpb24oKTogUHJvbWlzZTxQYXJ0aWFsPFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24+PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvc3RuYW1lOiAnMTI3LjAuMC4xJyxcbiAgICAgIHBvcnQ6IDIyXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBvcGVuU1NIRW5kcG9pbnRNb2RhbChcbiAgICBjdXJyZW50Q29uZmlndXJhdGlvbjogUGFydGlhbDxSZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uPlxuICApOiBQcm9taXNlPFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24gfCBudWxsPiB7XG4gICAgY29uc3QgeyBSZW1vdGVBY2Nlc3NTc2hFbmRwb2ludE1vZGFsQ29tcG9uZW50IH0gPSBhd2FpdCBpbXBvcnQoXG4gICAgICAnQGM4eS9uZ3gtY29tcG9uZW50cy9yZW1vdGUtYWNjZXNzL3NzaC9yZW1vdGUtYWNjZXNzLXNzaC1lbmRwb2ludC1tb2RhbCdcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhSZW1vdGVBY2Nlc3NTc2hFbmRwb2ludE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICAgIGluaXRpYWxTdGF0ZTogeyBjdXJyZW50VmFsdWU6IGN1cnJlbnRDb25maWd1cmF0aW9uIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIChhd2FpdCBtb2RhbFJlZi5jb250ZW50LnJlc3VsdCkgYXMgUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBtb2RhbCBjbG9zZWRcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcmVtb3RlQWNjZXNzU1NIUHJvdmlkZXJzID0gW1xuICBob29rUm91dGUoe1xuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICBpbXBvcnQoJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVtb3RlLWFjY2Vzcy90ZXJtaW5hbC12aWV3ZXInKS50aGVuKFxuICAgICAgICBtID0+IG0uVGVybWluYWxWaWV3ZXJDb21wb25lbnRcbiAgICAgICksXG4gICAgcGF0aDogJ3NzaC86Y29uZmlndXJhdGlvbklkJyxcbiAgICBjb250ZXh0OiBWaWV3Q29udGV4dC5EZXZpY2UsXG4gICAgdGFiczogW10sXG4gICAgY2FuQWN0aXZhdGU6IFtjYW5BY3RpdmF0ZVJlbW90ZUFjY2Vzc11cbiAgfSksXG4gIGhvb2tTZXJ2aWNlKCdyZW1vdGVBY2Nlc3NQcm90b2NvbEhvb2snLCBTU0hSZW1vdGVBY2Nlc3NQcm90b2NvbFByb3ZpZGVyU2VydmljZSlcbl07XG4iXX0=