@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
JavaScript
;
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