UNPKG

@ngageoint/mage.sftp.service

Version:

The SFTP service package is a MAGE server plugin that sends observations to and SFTP location on create and update.

92 lines 4.95 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; const plugins_api_users_1 = require("@ngageoint/mage.service/lib/plugins.api/plugins.api.users"); const controller_1 = require("./controller/controller"); const plugins_api_db_1 = require("@ngageoint/mage.service/lib/plugins.api/plugins.api.db"); const plugins_api_1 = require("@ngageoint/mage.service/lib/plugins.api"); const plugins_api_observations_1 = require("@ngageoint/mage.service/lib/plugins.api/plugins.api.observations"); const plugins_api_events_1 = require("@ngageoint/mage.service/lib/plugins.api/plugins.api.events"); const entities_permissions_1 = require("@ngageoint/mage.service/lib/entities/authorization/entities.permissions"); const express_1 = __importDefault(require("express")); const logPrefix = '[mage.sftp]'; const logMethods = ['log', 'debug', 'info', 'warn', 'error']; const consoleOverrides = logMethods.reduce((overrides, fn) => { return Object.assign(Object.assign({}, overrides), { [fn]: { writable: false, value: (...args) => { globalThis.console[fn](new Date().toISOString(), '-', logPrefix, ...args); } } }); }, {}); const console = Object.create(globalThis.console, consoleOverrides); const InjectedServices = { stateRepository: plugins_api_1.PluginStateRepositoryToken, eventRepository: plugins_api_events_1.MageEventRepositoryToken, observationRepository: plugins_api_observations_1.ObservationRepositoryToken, userRepository: plugins_api_users_1.UserRepositoryToken, attachmentStore: plugins_api_observations_1.AttachmentStoreToken, getDbConnection: plugins_api_db_1.MongooseDbConnectionToken }; /** * The MAGE SFTP Plugin finds new MAGE observations and if enabled will send observations * to an SFTP endpoint. */ const sftpPluginHooks = { inject: { stateRepository: plugins_api_1.PluginStateRepositoryToken, eventRepository: plugins_api_events_1.MageEventRepositoryToken, observationRepository: plugins_api_observations_1.ObservationRepositoryToken, userRepository: plugins_api_users_1.UserRepositoryToken, attachmentStore: plugins_api_observations_1.AttachmentStoreToken, getDbConnection: plugins_api_db_1.MongooseDbConnectionToken }, init: (services) => __awaiter(void 0, void 0, void 0, function* () { console.info('intializing sftp plugin'); const { getDbConnection } = services; const dbConnection = yield getDbConnection(); const controller = new controller_1.SftpController(console, services, dbConnection); controller.start(); return { webRoutes: { protected: (requestContext) => { const routes = express_1.default.Router() .use(express_1.default.json()) .use((req, res, next) => __awaiter(void 0, void 0, void 0, function* () { const context = requestContext(req); const user = context.requestingPrincipal(); if (!user.role.permissions.find(x => x === entities_permissions_1.SettingPermission.UPDATE_SETTINGS)) { return res.sendStatus(403); } next(); })); routes.route('/configuration') .get((_req, res, _next) => __awaiter(void 0, void 0, void 0, function* () { const config = yield controller.getConfiguration(); res.json(config); })) .post((req, res, _next) => __awaiter(void 0, void 0, void 0, function* () { yield controller.stop(); const configuration = req.body; yield controller.updateConfiguration(configuration); yield controller.start(); res.status(200); })); return routes; } } }; }) }; module.exports = sftpPluginHooks; //# sourceMappingURL=index.js.map