forked from CITKParus/P8-ExchangeService
Добавлен модуль управления CORS-заголовками, обновлена версия LODASH
This commit is contained in:
parent
506cce697b
commit
7c8cca6084
@ -10,6 +10,7 @@
|
|||||||
const _ = require("lodash"); //Работа с массивами и коллекциями
|
const _ = require("lodash"); //Работа с массивами и коллекциями
|
||||||
const EventEmitter = require("events"); //Обработчик пользовательских событий
|
const EventEmitter = require("events"); //Обработчик пользовательских событий
|
||||||
const express = require("express"); //WEB-сервер Express
|
const express = require("express"); //WEB-сервер Express
|
||||||
|
const cors = require("cors"); //Управление заголовками безопасности для WEB-сервера Express
|
||||||
const bodyParser = require("body-parser"); //Модуль для Express (разбор тела входящего запроса)
|
const bodyParser = require("body-parser"); //Модуль для Express (разбор тела входящего запроса)
|
||||||
const { ServerError } = require("./server_errors"); //Типовая ошибка
|
const { ServerError } = require("./server_errors"); //Типовая ошибка
|
||||||
const {
|
const {
|
||||||
@ -71,6 +72,8 @@ class InQueue extends EventEmitter {
|
|||||||
this.notifier = prms.notifier;
|
this.notifier = prms.notifier;
|
||||||
//WEB-приложение
|
//WEB-приложение
|
||||||
this.webApp = express();
|
this.webApp = express();
|
||||||
|
this.webApp.use(cors());
|
||||||
|
this.webApp.options("*", cors());
|
||||||
//WEB-сервер
|
//WEB-сервер
|
||||||
this.srv = null;
|
this.srv = null;
|
||||||
} else {
|
} else {
|
||||||
@ -309,9 +312,7 @@ class InQueue extends EventEmitter {
|
|||||||
await this.logger.info(`Входящее сообщение ${q.nId} успешно отработано`, { nQueueId: q.nId });
|
await this.logger.info(`Входящее сообщение ${q.nId} успешно отработано`, { nQueueId: q.nId });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
//Тема и текст уведомления об ошибке
|
//Тема и текст уведомления об ошибке
|
||||||
let sSubject = `Ошибка обработки входящего сообщения сервером приложений для функции "${
|
let sSubject = `Ошибка обработки входящего сообщения сервером приложений для функции "${prms.function.sCode}" сервиса "${prms.service.sCode}"`;
|
||||||
prms.function.sCode
|
|
||||||
}" сервиса "${prms.service.sCode}"`;
|
|
||||||
let sMessage = makeErrorText(e);
|
let sMessage = makeErrorText(e);
|
||||||
//Если сообщение очереди успели создать
|
//Если сообщение очереди успели создать
|
||||||
if (q) {
|
if (q) {
|
||||||
@ -328,9 +329,7 @@ class InQueue extends EventEmitter {
|
|||||||
{ nQueueId: q.nId }
|
{ nQueueId: q.nId }
|
||||||
);
|
);
|
||||||
//Добавим чуть больше информации в тему сообщения
|
//Добавим чуть больше информации в тему сообщения
|
||||||
sSubject = `Ошибка обработки входящего сообщения ${q.nId} сервером приложений для функции "${
|
sSubject = `Ошибка обработки входящего сообщения ${q.nId} сервером приложений для функции "${prms.function.sCode}" сервиса "${prms.service.sCode}"`;
|
||||||
prms.function.sCode
|
|
||||||
}" сервиса "${prms.service.sCode}"`;
|
|
||||||
} else {
|
} else {
|
||||||
//Ограничимся общей ошибкой
|
//Ограничимся общей ошибкой
|
||||||
await this.logger.error(sMessage, {
|
await this.logger.error(sMessage, {
|
||||||
@ -375,20 +374,23 @@ class InQueue extends EventEmitter {
|
|||||||
//Для любых запросов к корневому адресу сервиса - ответ о том, что это за сервис, и что он работает
|
//Для любых запросов к корневому адресу сервиса - ответ о том, что это за сервис, и что он работает
|
||||||
this.webApp.all(srvs.sSrvRoot, (req, res) => {
|
this.webApp.all(srvs.sSrvRoot, (req, res) => {
|
||||||
res.status(200).send(
|
res.status(200).send(
|
||||||
`<html><body><center><br><h1>Сервер приложений ПП Парус 8</h1><h3>Сервис: ${
|
`<html><body><center><br><h1>Сервер приложений ПП Парус 8</h1><h3>Сервис: ${srvs.sName}</h3></center></body></html>`
|
||||||
srvs.sName
|
|
||||||
}</h3></center></body></html>`
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
//Для всех статических функций сервиса...
|
//Для всех статических функций сервиса...
|
||||||
_.forEach(_.filter(srvs.functions, fn => fn.sFnURL.startsWith("@")), fn => {
|
_.forEach(
|
||||||
|
_.filter(srvs.functions, fn => fn.sFnURL.startsWith("@")),
|
||||||
|
fn => {
|
||||||
this.webApp.use(
|
this.webApp.use(
|
||||||
buildURL({ sSrvRoot: srvs.sSrvRoot, sFnURL: fn.sFnURL.substr(1) }),
|
buildURL({ sSrvRoot: srvs.sSrvRoot, sFnURL: fn.sFnURL.substr(1) }),
|
||||||
express.static(`${this.inComing.sStaticDir}/${fn.sFnURL.substr(1)}`)
|
express.static(`${this.inComing.sStaticDir}/${fn.sFnURL.substr(1)}`)
|
||||||
);
|
);
|
||||||
});
|
}
|
||||||
|
);
|
||||||
//Для всех функций сервиса (кроме статических)...
|
//Для всех функций сервиса (кроме статических)...
|
||||||
_.forEach(_.filter(srvs.functions, fn => !fn.sFnURL.startsWith("@")), fn => {
|
_.forEach(
|
||||||
|
_.filter(srvs.functions, fn => !fn.sFnURL.startsWith("@")),
|
||||||
|
fn => {
|
||||||
//...собственный обработчик, в зависимости от указанного способа передачи параметров
|
//...собственный обработчик, в зависимости от указанного способа передачи параметров
|
||||||
this.webApp[fn.nFnPrmsType == objServiceFnSchema.NFN_PRMS_TYPE_POST ? "post" : "get"](
|
this.webApp[fn.nFnPrmsType == objServiceFnSchema.NFN_PRMS_TYPE_POST ? "post" : "get"](
|
||||||
buildURL({ sSrvRoot: srvs.sSrvRoot, sFnURL: fn.sFnURL }),
|
buildURL({ sSrvRoot: srvs.sSrvRoot, sFnURL: fn.sFnURL }),
|
||||||
@ -420,7 +422,8 @@ class InQueue extends EventEmitter {
|
|||||||
res.status(500).send(makeErrorText(new ServerError(SERR_WEB_SERVER, err.message)));
|
res.status(500).send(makeErrorText(new ServerError(SERR_WEB_SERVER, err.message)));
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
//Запросы на адреса, не входящие в состав объявленных сервисов - 404 NOT FOUND
|
//Запросы на адреса, не входящие в состав объявленных сервисов - 404 NOT FOUND
|
||||||
this.webApp.use("*", (req, res) => {
|
this.webApp.use("*", (req, res) => {
|
||||||
|
20
package-lock.json
generated
20
package-lock.json
generated
@ -135,6 +135,15 @@
|
|||||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||||
},
|
},
|
||||||
|
"cors": {
|
||||||
|
"version": "2.8.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
||||||
|
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
||||||
|
"requires": {
|
||||||
|
"object-assign": "^4",
|
||||||
|
"vary": "^1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"dashdash": {
|
"dashdash": {
|
||||||
"version": "1.14.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||||
@ -407,9 +416,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lodash": {
|
"lodash": {
|
||||||
"version": "4.17.11",
|
"version": "4.17.15",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
|
||||||
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
|
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
|
||||||
},
|
},
|
||||||
"media-typer": {
|
"media-typer": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
@ -469,6 +478,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
||||||
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
|
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
|
||||||
},
|
},
|
||||||
|
"object-assign": {
|
||||||
|
"version": "4.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||||
|
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
|
||||||
|
},
|
||||||
"on-finished": {
|
"on-finished": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||||
|
@ -19,9 +19,10 @@
|
|||||||
"homepage": "https://github.com/CITKParus/ExchangeService#readme",
|
"homepage": "https://github.com/CITKParus/ExchangeService#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"body-parser": "^1.18.3",
|
"body-parser": "^1.18.3",
|
||||||
|
"cors": "^2.8.5",
|
||||||
"express": "^4.16.4",
|
"express": "^4.16.4",
|
||||||
"js2xmlparser": "^3.0.0",
|
"js2xmlparser": "^3.0.0",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.15",
|
||||||
"module-alias": "^2.1.0",
|
"module-alias": "^2.1.0",
|
||||||
"nodemailer": "^4.7.0",
|
"nodemailer": "^4.7.0",
|
||||||
"oracledb": "^2.3.0",
|
"oracledb": "^2.3.0",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user