UNPKG

on-http-y1

Version:
97 lines (83 loc) 2.41 kB
// Copyright 2016, EMC, Inc. 'use strict'; module.exports = SshFactory; SshFactory.$provide = 'Serializables.V1.Ssh'; SshFactory.$inject = [ 'Promise', 'Serializable', 'Services.Encryption' ]; function SshFactory (Promise, Serializable, encryption) { function Ssh (defaults) { Serializable.call(this, Ssh.schema, defaults); } Ssh.schema = { id: 'Serializables.V1.Ssh', type: 'object', definitions:{ credentials: { host: { type: 'string' }, user: { type: 'string' }, password: { type: 'string' }, publicKey: { type: 'string' }, privateKey: { type: 'string' } } }, properties:{ service: { type: 'string' }, config: { type: 'object', anyOf:[ { required: ['host', 'user', 'password'], properties: { $ref: '#/definitions/credentials' } }, { required: ['host', 'user', 'privateKey'], properties: { $ref: '#/definitions/credentials' } } ] } }, required: ['service', 'config'] }; Serializable.register(SshFactory, Ssh); Ssh.prototype.serialize = function (target) { this.defaults(target); if (this.password) { this.password = 'REDACTED'; } if (this.privateKey) { this.privateKey = 'REDACTED'; } return Promise.resolve(this); }; Ssh.prototype.deserialize = function (target) { var self = this; self.defaults(target); if (self.config.password) { self.config.password = encryption.encrypt(self.config.password); } if (self.config.privateKey) { self.config.privateKey = encryption.encrypt(self.config.privateKey); } return self.validateAsModel(); }; return Ssh; }