From ba477a68dd4e4e89bbb83ed784dc7d42c713524c Mon Sep 17 00:00:00 2001 From: Nattapon Wongpaet Date: Fri, 10 Aug 2018 18:00:04 +0700 Subject: [PATCH] change structure code --- ais-structure/index.js | 40 ++++++++++++++++++++++++++++++++++++++++ ais-structure/package-lock.json | 1131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ais-structure/package.json | 35 +++++++++++++++++++++++++++++++++++ ais-structure/src/config/config.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ ais-structure/src/config/express.js | 268 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ais-structure/src/config/log4js_config.json | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ais-structure/src/config/passport.js | 17 +++++++++++++++++ ais-structure/src/logger/log-rotator-util.js | 280 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ais-structure/src/logger/logger.js | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ais-structure/src/modules/login/login.ctrl.js | 34 ++++++++++++++++++++++++++++++++++ ais-structure/src/modules/login/login.route.js | 8 ++++++++ ais-structure/src/modules/vizcard/postVizCard.ctrl.js | 11 +++++++++++ ais-structure/src/modules/vizcard/vizCard.ctrl.js | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ais-structure/src/modules/vizcard/vizCard.route.js | 12 ++++++++++++ app.js | 48 ------------------------------------------------ app_srfp.js | 93 --------------------------------------------------------------------------------------------- bin/www | 90 ------------------------------------------------------------------------------------------ config/config.js | 25 ------------------------- config/log4js.json | 45 --------------------------------------------- config/logger.js | 3 --- config/writeLog.rar | Bin 5114 -> 0 bytes logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.detail | 1 - logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.stat | 3 --- logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.summary | 1 - logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.detail | 1 - logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.stat | 3 --- logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.summary | 1 - package-lock.json | 1225 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- package.json | 23 ----------------------- public/image/image.jpg | Bin 58363 -> 0 bytes public/stylesheets/style.css | 8 -------- routes/CMF/customerMembership.js | 9 --------- routes/CMF/index.js | 11 ----------- routes/CMF/vizCard.js | 98 -------------------------------------------------------------------------------------------------- routes/users.js | 9 --------- sc-structure/app.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/app_srfp.js | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/bin/www | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/config/config.js | 25 +++++++++++++++++++++++++ sc-structure/config/log4js.json | 45 +++++++++++++++++++++++++++++++++++++++++++++ sc-structure/config/logger.js | 3 +++ sc-structure/config/writeLog.rar | Bin 0 -> 5114 bytes sc-structure/log/access | 0 sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.detail | 1 + sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.stat | 3 +++ sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.summary | 1 + sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.detail | 1 + sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.stat | 3 +++ sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.summary | 1 + sc-structure/package-lock.json | 1225 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/package.json | 23 +++++++++++++++++++++++ sc-structure/public/image/image.jpg | Bin 0 -> 58363 bytes sc-structure/public/stylesheets/style.css | 8 ++++++++ sc-structure/routes/CMF/customerMembership.js | 9 +++++++++ sc-structure/routes/CMF/index.js | 11 +++++++++++ sc-structure/routes/CMF/vizCard.js | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/routes/users.js | 9 +++++++++ sc-structure/srfp_genesis.js | 323 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/srfp_genesis_backup.js | 278 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/srfp_genesis_backup_2.js | 316 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/utils/SutisAlarm.js | 35 +++++++++++++++++++++++++++++++++++ sc-structure/utils/SutisDetail.js | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/utils/SutisLog.js | 288 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/utils/SutisLogSummary.js | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/utils/SutisStat.js | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sc-structure/views/error.jade | 5 +++++ sc-structure/views/index.jade | 5 +++++ sc-structure/views/layout.jade | 7 +++++++ srfp_genesis.js | 323 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- srfp_genesis_backup.js | 278 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- srfp_genesis_backup_2.js | 316 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- utils/SutisAlarm.js | 35 ----------------------------------- utils/SutisDetail.js | 70 ---------------------------------------------------------------------- utils/SutisLog.js | 288 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ utils/SutisLogSummary.js | 75 --------------------------------------------------------------------------- utils/SutisStat.js | 64 ---------------------------------------------------------------- views/error.jade | 5 ----- views/index.jade | 5 ----- views/layout.jade | 7 ------- 79 files changed, 5337 insertions(+), 3163 deletions(-) create mode 100644 ais-structure/index.js create mode 100644 ais-structure/package-lock.json create mode 100644 ais-structure/package.json create mode 100644 ais-structure/src/config/config.js create mode 100644 ais-structure/src/config/express.js create mode 100644 ais-structure/src/config/log4js_config.json create mode 100644 ais-structure/src/config/passport.js create mode 100644 ais-structure/src/logger/log-rotator-util.js create mode 100644 ais-structure/src/logger/logger.js create mode 100644 ais-structure/src/modules/login/login.ctrl.js create mode 100644 ais-structure/src/modules/login/login.route.js create mode 100644 ais-structure/src/modules/vizcard/postVizCard.ctrl.js create mode 100644 ais-structure/src/modules/vizcard/vizCard.ctrl.js create mode 100644 ais-structure/src/modules/vizcard/vizCard.route.js delete mode 100644 app.js delete mode 100644 app_srfp.js delete mode 100644 bin/www delete mode 100644 config/config.js delete mode 100644 config/log4js.json delete mode 100644 config/logger.js delete mode 100644 config/writeLog.rar delete mode 100644 logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.detail delete mode 100644 logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.stat delete mode 100644 logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.summary delete mode 100644 logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.detail delete mode 100644 logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.stat delete mode 100644 logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.summary delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 public/image/image.jpg delete mode 100644 public/stylesheets/style.css delete mode 100644 routes/CMF/customerMembership.js delete mode 100644 routes/CMF/index.js delete mode 100644 routes/CMF/vizCard.js delete mode 100644 routes/users.js create mode 100644 sc-structure/app.js create mode 100644 sc-structure/app_srfp.js create mode 100644 sc-structure/bin/www create mode 100644 sc-structure/config/config.js create mode 100644 sc-structure/config/log4js.json create mode 100644 sc-structure/config/logger.js create mode 100644 sc-structure/config/writeLog.rar create mode 100644 sc-structure/log/access create mode 100644 sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.detail create mode 100644 sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.stat create mode 100644 sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.summary create mode 100644 sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.detail create mode 100644 sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.stat create mode 100644 sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.summary create mode 100644 sc-structure/package-lock.json create mode 100644 sc-structure/package.json create mode 100644 sc-structure/public/image/image.jpg create mode 100644 sc-structure/public/stylesheets/style.css create mode 100644 sc-structure/routes/CMF/customerMembership.js create mode 100644 sc-structure/routes/CMF/index.js create mode 100644 sc-structure/routes/CMF/vizCard.js create mode 100644 sc-structure/routes/users.js create mode 100644 sc-structure/srfp_genesis.js create mode 100644 sc-structure/srfp_genesis_backup.js create mode 100644 sc-structure/srfp_genesis_backup_2.js create mode 100644 sc-structure/utils/SutisAlarm.js create mode 100644 sc-structure/utils/SutisDetail.js create mode 100644 sc-structure/utils/SutisLog.js create mode 100644 sc-structure/utils/SutisLogSummary.js create mode 100644 sc-structure/utils/SutisStat.js create mode 100644 sc-structure/views/error.jade create mode 100644 sc-structure/views/index.jade create mode 100644 sc-structure/views/layout.jade delete mode 100644 srfp_genesis.js delete mode 100644 srfp_genesis_backup.js delete mode 100644 srfp_genesis_backup_2.js delete mode 100644 utils/SutisAlarm.js delete mode 100644 utils/SutisDetail.js delete mode 100644 utils/SutisLog.js delete mode 100644 utils/SutisLogSummary.js delete mode 100644 utils/SutisStat.js delete mode 100644 views/error.jade delete mode 100644 views/index.jade delete mode 100644 views/layout.jade diff --git a/ais-structure/index.js b/ais-structure/index.js new file mode 100644 index 0000000..63a5e92 --- /dev/null +++ b/ais-structure/index.js @@ -0,0 +1,40 @@ +const crypto = require('crypto'); +const fs = require("fs"); +const http = require("http"); +const https = require("https"); + + +/* ------------- [START STORE CONFIG] ------------ */ +process.env.NODE_ENV = process.env.NODE_ENV || 'development'; +const config = require('./src/config/config').get(process.env.NODE_ENV); + +/* ------------- [END STORE CONFIG] ------------ */ +/* ------------- [START IMPORT OUR MODULE] ------------ */ +const logger = require('./src/logger/logger'); +const express = require('./src/config/express'); +var app = express(); +/* ------------- [END IMPORT OUR MODULE] ------------ */ + +/* ------------- [END IMPORT SSL CONFIG] ------------ */ +/* ------------- [START INITIAL OUR APPLICATION] ------------ */ +if ( (config.app_https === 'true' ) ) { + /* ------------- [START IMPORT SSL CONFIG] ------------ */ + const privateKey = fs.readFileSync(config.KEY); + const certificate = fs.readFileSync(config.CERT); + + const options = { + key: privateKey, + cert: certificate + }; + options.rejectUnauthorized = false ; + https.createServer(options, app).listen(config.app_port); + logger.info(`Is Secure : | Port : ${config.app_port}`); +} else { + http.createServer(app).listen(config.app_port); + logger.info(`Isn't Secure : | Port : ${config.app_port}`); +} +logger.info("ENVIRONMENT : "+ process.env.NODE_ENV); +// logger.info("App Port: "+config.app_port); +/* ------------- [END INITIAL OUR APPLICATION] ------------ */ + +module.exports = app; diff --git a/ais-structure/package-lock.json b/ais-structure/package-lock.json new file mode 100644 index 0000000..ee42359 --- /dev/null +++ b/ais-structure/package-lock.json @@ -0,0 +1,1131 @@ +{ + "name": "SRFc", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "2.1.19", + "negotiator": "0.6.1" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "2.1.2" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "basic-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", + "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "1.6.16" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "circular-json": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.5.tgz", + "integrity": "sha512-13YaR6kiz0kBNmIVM87Io8Hp7bWOo4r61vkEANy8iH9R9bc6avud/1FT0SBpqR1RpIQADOh/Q+yHZDA1iL6ysA==" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", + "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", + "requires": { + "cookie": "0.3.1", + "cookie-signature": "1.0.6" + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-format": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", + "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", + "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "requires": { + "accepts": "1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.4", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "1.4.0", + "type-is": "1.6.16", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.3", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.16" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + } + } + }, + "express-jwt": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/express-jwt/-/express-jwt-5.3.1.tgz", + "integrity": "sha512-1C9RNq0wMp/JvsH/qZMlg3SIPvKu14YkZ4YYv7gJQ1Vq+Dv8LH9tLKenS5vMNth45gTlEUGx+ycp9IHIlaHP/g==", + "requires": { + "async": "1.5.2", + "express-unless": "0.3.1", + "jsonwebtoken": "8.3.0", + "lodash.set": "4.3.2" + } + }, + "express-load": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/express-load/-/express-load-1.1.16.tgz", + "integrity": "sha512-R+HNkLZMbUCJQ42VPx4sGbs/a0Xv//XUNRft2WqgBz7+6qL8QyTsqBdwPh3h33lxFFrwHKfF4Wn65sDg8POiHA==", + "requires": { + "async": "0.2.9" + }, + "dependencies": { + "async": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz", + "integrity": "sha1-32MGD789Myhqdqr21Vophtn/hhk=" + } + } + }, + "express-unless": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/express-unless/-/express-unless-0.3.1.tgz", + "integrity": "sha1-JVfBRudb65A+LSR/m1ugFFJpbiA=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" + }, + "dependencies": { + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.19" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "http": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/http/-/http-0.0.0.tgz", + "integrity": "sha1-huYybSnF0Dnen6xYSkVon5KfT3I=" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.5.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" + } + }, + "https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", + "integrity": "sha1-PDfHrhqO65ZpBKKtHpdaGUt+06Q=" + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": "2.1.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsonwebtoken": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.3.0.tgz", + "integrity": "sha512-oge/hvlmeJCH+iIz1DwcO7vKPkNGJHhgkspk8OH3VKlw+mbi42WtD4ig1+VXRln765vxptAv+xT26Fd3cteqag==", + "requires": { + "jws": "3.1.5", + "lodash.includes": "4.3.0", + "lodash.isboolean": "3.0.3", + "lodash.isinteger": "4.0.4", + "lodash.isnumber": "3.0.3", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.once": "4.1.1", + "ms": "2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", + "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.10", + "safe-buffer": "5.1.1" + } + }, + "jws": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", + "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", + "requires": { + "jwa": "1.1.6", + "safe-buffer": "5.1.1" + } + }, + "jwt-decode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz", + "integrity": "sha1-fYa9VmefWM5qhHBKZX3TkruoGnk=" + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, + "log4js": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.4.tgz", + "integrity": "sha512-4rQ1TrOf85lxB0+hBiPF27Zw8pGTHxKZq8FYfum1TNhx/KMUlQ+LL4bMKcdzc7zoAFF992w8+MFQm3BQbUgePA==", + "requires": { + "circular-json": "0.5.5", + "date-format": "1.2.0", + "debug": "3.1.0", + "streamroller": "0.7.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-cache": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "integrity": "sha1-eJCwHVLADI68nVM+H46xfjA0hxo=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "requires": { + "mime-db": "1.35.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "moment": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" + }, + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "requires": { + "basic-auth": "2.0.0", + "debug": "2.6.9", + "depd": "1.1.2", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "passport": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.4.0.tgz", + "integrity": "sha1-xQlWkTR71a07XhgCOMORTRbwWBE=", + "requires": { + "passport-strategy": "1.0.0", + "pause": "0.0.1" + } + }, + "passport-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=", + "requires": { + "passport-strategy": "1.0.0" + } + }, + "passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=" + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "0.11.10", + "util": "0.10.4" + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.19", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.1", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + } + }, + "request-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz", + "integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=", + "requires": { + "bluebird": "3.5.1", + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.4" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "requires": { + "lodash": "4.17.10" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.3", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + }, + "dependencies": { + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "streamroller": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", + "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", + "requires": { + "date-format": "1.2.0", + "debug": "3.1.0", + "mkdirp": "0.5.1", + "readable-stream": "2.3.6" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.19" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "xml-js": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.7.tgz", + "integrity": "sha512-1hn0xwwfMcWywnJxqiOXiv+pZaOJyf/YWcUeqJICF0BFb+IOkRFSkKyeA0V62WqTHXNdBxNuCFHhS/w2DtYpoA==", + "requires": { + "sax": "1.2.4" + } + } + } +} diff --git a/ais-structure/package.json b/ais-structure/package.json new file mode 100644 index 0000000..48ba25b --- /dev/null +++ b/ais-structure/package.json @@ -0,0 +1,35 @@ +{ + "name": "SRFc", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "body-parser": "^1.18.3", + "cookie-parser": "^1.4.3", + "express": "^4.16.3", + "express-jwt": "^5.3.1", + "express-load": "^1.1.16", + "fs": "0.0.1-security", + "http": "0.0.0", + "https": "^1.0.0", + "jwt-decode": "^2.2.0", + "lodash": "^4.17.10", + "log4js": "^3.0.4", + "memory-cache": "^0.2.0", + "moment": "^2.22.2", + "morgan": "^1.9.0", + "passport": "^0.4.0", + "passport-local": "^1.0.0", + "path": "^0.12.7", + "request": "^2.87.0", + "request-promise": "^4.2.2", + "uuid": "^3.3.2", + "xml-js": "^1.6.7" + } +} diff --git a/ais-structure/src/config/config.js b/ais-structure/src/config/config.js new file mode 100644 index 0000000..00c7b14 --- /dev/null +++ b/ais-structure/src/config/config.js @@ -0,0 +1,51 @@ +/* ------------- [START SERVER CONFIG VARIABLES] ------------ */ +var config = { + development: { + app_host: "0.0.0.0", + app_port: "3000", + app_https: false, + KEY: "key1.pem", + CERT: "cert1.pem", + service: { + PANDORA: { + // URI : 'http://25.27.7.151:34618', //JBOSS IOT + URI : 'http://25.27.7.151:34680', //JBOSS DEV + URI_EQX: "http://25.27.7.151:15300", //EQUINOX + //URI: "http://localhost:8080", + KEY: "./PANDORA_CERT/server.key", + CERT: "./PANDORA_CERT/server.pem", + PREFIX: "/phxPartner/v1/partner" + } + }, + http_req_timeout: 120, + session: 30 //minutes + } + }; + /* ------------- [END SERVER CONFIG VARIABLES] ------------ */ + + /* ------------- [START SERVER GET FUNTION] ------------ */ + exports.get = function get(env) { + var cfg = config[env] || config.development; + cfg.app_host = process.env.APP_HOST || cfg.app_host; + cfg.app_port = process.env.APP_PORT || cfg.app_port; + cfg.app_https = process.env.USE_HTTPS || cfg.app_https; + cfg.db_ip_port = process.env.DATABASE_IP_PORT || cfg.db_ip_port; + cfg.pandora_key = process.env.PANDORA_KEY || cfg.pandora_key; + cfg.pandora_cert = process.env.PANDORA_CERT || cfg.pandora_cert; + cfg.KEY = process.env.KEY || cfg.KEY; + cfg.CERT = process.env.CERT || cfg.CERT; + cfg.tmp_path = process.env.TMP_PATH || cfg.tmp_path; + var envService = null; + try { + if (process.env.SERVICE && process.env.SERVICE.length > 0) { + envService = JSON.parse(process.env.SERVICE); + } + } catch (error) { + envService = null; + } + cfg.service = envService != null ? envService : cfg.service; + return cfg; + }; + + /* ------------- [END SERVER GET FUNTION] ------------ */ + \ No newline at end of file diff --git a/ais-structure/src/config/express.js b/ais-structure/src/config/express.js new file mode 100644 index 0000000..94fdc4b --- /dev/null +++ b/ais-structure/src/config/express.js @@ -0,0 +1,268 @@ +/* ------------- [START IMPORT MODULE] ------------ */ +const express = require('express'); +const morgan = require("morgan"); +const cookieParser = require('cookie-parser'); +const bodyParser = require('body-parser'); +const path = require('path'); +var env = process.env.NODE_ENV || 'development'; +/* ------------- [END SET ENVIRONMENT] ------------ */ +/* ------------- [START STORE CONFIG] ------------ */ +const config = require('./config').get(env); + +/* ------------- [END IMPORT MODULE] ------------ */ +/* ------------- [START IMPORT OUR UTIL] ------------ */ +//var logger = require('../utils/logger'); +var log4js = require('log4js'); +var moment = require('moment'); +var passport = require('passport'); +var memCache = require('memory-cache'); +var jwtDecode = require('jwt-decode'); +var uuid = require('uuid'); + +var expireTimeDef = 30 * 60 * 1000; //minutes * seconds * 1000 ==> ms +memCache.put('expires-ms-def', expireTimeDef); + + + +/* ------------- [END IMPORT OUR UTIL] ------------ */ +/* ------------- [START IMPLEMENT] ------------ */ +module.exports = function () { + var logger = require("../logger/logger"); + + var app = express(); + app.use(bodyParser.urlencoded({ + extended: true + })); + app.use(bodyParser.json()); + app.use(cookieParser()); + + require('./passport'); + app.use(passport.initialize()); + app.use(passport.session()); + var isRevokedCallback = function (req, payload, done) { + + return done(null, false); + }; + + var jwt = require('express-jwt'); + var auth = jwt({ + secret: 'ccsm', + userProperty: 'currentUser', + getToken: function fromHeaderOrQuerystring(req) { + if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') { + return req.headers.authorization.split(' ')[1]; + } + if (req.headers.authorization && req.headers.authorization.length > 0) { + return req.headers.authorization; + } else if (req.query && req.query.token) { + return req.query.token; + } + return null; + }, + isRevoked: isRevokedCallback + }); + + function getCurrentUser(req, res, next) { + var token = null; + var tokenHeader = req.headers["x-authorization"] || req.headers.authorization ; + if (tokenHeader && tokenHeader.split(' ')[0] === 'Bearer') { + token = tokenHeader.split(' ')[1]; + } else if (req.query && req.query.token) { + token = req.query.token; + } + if (token == null) { + res.send(401); + return; + } + var decoded = jwtDecode(token); + if (!decoded.userGroup) { + if (decoded.role) { + var userGroupArr = decoded.role.split('#'); + if (userGroupArr.length > 0) { + decoded.userGroup = userGroupArr; + } + } + + } + // console.log(decoded); + req.currentUser = decoded; + next(); + } + + logger.info("Overriding 'Express' logger"); + morgan.token('id', function getId(req) { + return req.id; + }); + + morgan.token('user-id', function getId(req) { + return req.currentUser ? req.currentUser.username : ''; + }); + + function getRemoteIp(req ,res){ + var remoteIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress || ''; + if(remoteIp.indexOf(':') > -1 ){ + var tmp = remoteIp.split(':'); + remoteIp = tmp.length > 0 ? tmp[tmp.length -1 ]:remoteIp; + } + return remoteIp; + } + + morgan.token('remote-ip', getRemoteIp); + + morgan.token('uri', function(req, res){ + return req.originalUrl || req.url ; + }) + + morgan.token('json', function(req, res){ + var body = req.body && req.body != {} ? JSON.parse(JSON.stringify(req.body)): null ; + var bodyStr = body != null ? JSON.stringify(body):''; + var cfgLog = config.LOG || {}; + if(bodyStr.length > 0 && cfgLog.exclude){ + for (var key in cfgLog.exclude) { + if (cfgLog.exclude.hasOwnProperty(key)) { + var pattern = '("'+key+'":")(?:\\"|[^"])*"' + var reg = new RegExp(pattern, 'g'); + bodyStr = bodyStr.replace(reg , '"'+key+'":"'+cfgLog.exclude[key]+'"') + } + } + } + if(req.url.startsWith("/service/auth/oauth2")){ + console.log(config); + console.log(req.url); + return '' ; + } + return bodyStr.length > 0 && bodyStr != '{}' ? bodyStr:'' ; + }) + + + + + app.all('/api/*', getCurrentUser, function (req, res, next) { + res.header("Access-Control-Allow-Origin", "*"); + res.header("Access-Control-Allow-Headers", "X-Requested-With"); + // var headerLog = req.currentUser ? + '' + req.currentUser.username + ':'+req.id: req.id; + next(); + }); + + app.use('/api/*', function (req, res, next) { + if (req.currentUser && !req.baseUrl.startsWith('/api/refresh-token')) { + //update Time Expire for keep alive + } + next(); + }); + + app.use(function (req, res, next) { + req.id = req.headers['x-request-id'] || uuid.v4(); + var remoteIp = getRemoteIp(req, res); + var username =req.currentUser?req.currentUser.username:''; + var headerLog = 'IP|'+remoteIp+'|USER|'+username+'|REQUESTID|'+req.id; + + logger.setHeader(headerLog); + next(); + }); + + function logResponseBody(req, res, next) { + var oldWrite = res.write, + oldEnd = res.end; + + var chunks = []; + + res.write = function (chunk) { + chunks.push(chunk); + oldWrite.apply(res, arguments); + }; + + res.end = function (chunk) { + var body = ''; + + if (typeof chunk !== 'string' && !(chunk instanceof Buffer)) { + res["resBody"] = body ; + oldEnd.apply(res, arguments); + return ; + } + + if (!(chunk instanceof String || typeof chunk === 'string' ) ) + chunks.push(chunk); + try { + //console.dir(chunks); + body = chunks.length > 0? Buffer.concat(chunks).toString('utf8') :''; + } catch (error) { + logger.errorStack(error); + } + + res["resBody"] = body ; + + oldEnd.apply(res, arguments); + }; + + next(); + } + + app.use(logResponseBody); + + morgan.token('resp-body', function(req, res){ + return res.resBody?res.resBody:'' ; + }) + + + // app.use(morgan('IP|:remote-ip|USER|:user-id|REQUESTID|:id|METHOD|:method|URI|:uri|REQUESTBODY|:json|RESPSTATUS|:status|RESPBODY|:resp-body|RESPTIME|:response-time', { + // "stream": logger.stream + // })); + + //app.use(logResponseBody); + /* ------------- [START LOAD API ROUTE] ------------ */ + // var ALL_ROUTES = require('../routes/index').GET_ALL_ROUTES(); + // app.use('/', ALL_ROUTES); + + logger.info("load module"); + var load = require('express-load'); + // load('modules', { + // cwd: 'server', + // verbose: true + // }).then('utils', { + // cwd: 'server', + // verbose: true + // }).into(app); + // {checkext:true, extlist:['.js','.myextension']} + var cwdPath = path.join(__dirname, '..'); + load('modules', { + cwd: cwdPath, + checkext:true, + extlist:['service.js'] + }).into(app); + load('modules', { + cwd: cwdPath , + checkext:true, + extlist:['ctrl.js'] + }).into(app); + load('modules', { + cwd: cwdPath, + // verbose: true, + checkext:true, + extlist:['route.js'] + }).into(app); + // load('utils', { + // cwd: 'server', + // // verbose: true + // }).into(app); + /* ------------- [END LOAD API ROUTE] ------------ */ + /* ------------- [START NOT MATCH ROUTE - 404 ] ------------ */ + + app.all('/error', function (req, res) { + logger.error('Got Redirect Error'); + res.status(500).send({ + error: "Connection close!" + }); + // Future Action. + }); + // app.all('*', function (req, res) { + // logger.info('[TRACE] Server 404 request:' + req.originalUrl); + // res.status(500).send({ + // error: "Connection close!" + // }); + // // Future Action. + // }); + /* ------------- [END NOT MATCH ROUTE - 404 ] ------------ */ + return app; +}; +/* ------------- [END IMPLEMENT] ------------ */ \ No newline at end of file diff --git a/ais-structure/src/config/log4js_config.json b/ais-structure/src/config/log4js_config.json new file mode 100644 index 0000000..f6533c3 --- /dev/null +++ b/ais-structure/src/config/log4js_config.json @@ -0,0 +1,59 @@ +{ + "appenders": { + "out": { + "type": "stdout", + "layout": { + "type": "pattern", + "pattern": "TIMESTAMP|%d{ISO8601}|LOGTYPE|%p|%m" + } + }, + "app": { + "type": "file", + "filename": "app/app.log", + "layout": { + "type": "pattern", + "pattern": "TIMESTAMP|%d{ISO8601}|LOGTYPE|%p|%m" + }, + "category": [ + "SRFc-app" + ] + }, + "access": { + "type": "file", + "filename": "access/access.log", + "layout": { + "type": "pattern", + "pattern": "TIMESTAMP|%d{ISO8601}|LOGTYPE|%p|%m" + }, + "category": [ + "SRFc-access" + ] + }, + "service": { + "type": "file", + "filename": "service/service.log", + "layout": { + "type": "pattern", + "pattern": "TIMESTAMP|%d{ISO8601}|LOGTYPE|%p|%m" + }, + "category": [ + "SRFc-service" + ] + } + }, + "categories": { + "default": { + "appenders": ["out", "app"], + "level": "debug" + }, + "SRFc-access": { + "appenders": ["out", "access"], + "level": "info" + } + , + "SRFc-service": { + "appenders": [ "out","service"], + "level": "info" + } + } +} diff --git a/ais-structure/src/config/passport.js b/ais-structure/src/config/passport.js new file mode 100644 index 0000000..5d37db1 --- /dev/null +++ b/ais-structure/src/config/passport.js @@ -0,0 +1,17 @@ +//var models = require('../models'); +var fs = require('fs'); +var passport = require('passport'); +var LocalStrategy = require('passport-local').Strategy; + +// var name = 'username'; +// var pw = 'password'; +passport.use(new LocalStrategy({ + // usernameField: name, + // passwordField: pw + }, + function(username, password, done) { + console.log("authen is start."); + var user = { id : 'guest' , firstName : 'srfc' , lastname: 'demo' }; + return done(null, user); + } +)); \ No newline at end of file diff --git a/ais-structure/src/logger/log-rotator-util.js b/ais-structure/src/logger/log-rotator-util.js new file mode 100644 index 0000000..db3a2d0 --- /dev/null +++ b/ais-structure/src/logger/log-rotator-util.js @@ -0,0 +1,280 @@ +var fs = require('fs'); +var util = require('util'); +var zlib = require('zlib'); +var events = require('events'); + +/** + * Performs scheduled and on demand log rotation on files + */ +function Logrotator() { + events.EventEmitter.call(this); + this.timers = {}; +} + +util.inherits(Logrotator, events.EventEmitter); + +/** + * Schedules a file for rotation. emits a 'rotate' event whenever the file has been rotated. + * @param file full file path to rotate + * @param options rotation options + * - schedule - how often to check for file rotation conditions. possible values are '1s', '1m', '1h'. default is 5m. + * - size - size of the file to trigger rotation. possible values are '1k', '1m', '1g'. default is 10m. + * - count - number of files to keep. default is 3. + * - compress - whether to gzip rotated files. default is true. + * - format - a function to build the name of a rotated file. the function receives the index of the rotated file. + * default format is the index itself. + */ +Logrotator.prototype.register = function(file, options) { + + options = util._extend({schedule: '5m'}, options); + + var match = options.schedule.match(/^([0-9]+)(s|m|h)$/); + if (!match) { + this.emit('error', 'incorrect schedule format ' + options.schedule); + return; + } + + if (this.timers[file]) { + this.unregister(file); + } + + // calculate the schedule + var multi = this._timeMultiplier(match[2]); + var schedule = parseInt(match[1]) * multi; + var scheduleMinute = parseInt(match[1]) ; + var _this = this; + + // perform rotation + function _doRotate() { + _this.rotate(file, options, function(err, rotated) { + if (err) { + _this.emit('error', err); + return; + } + if (rotated) { + _this.emit('rotate', file); + } + }); + } + + // register the rotation timer + this.timers[file] = setInterval(function() { + var d = new Date(); + var n = d.getMinutes(); + if( (n % scheduleMinute) == 0 ){ + _doRotate(); + } + + }, 60 * 1000 ); + + // immediately rotate + // _doRotate(); //ignore +}; + +/** + * Remove the scheduled rotation of a file + * @param file the file to stop rotating + */ +Logrotator.prototype.unregister = function(file) { + if (!this.timers[file]) { + return; + } + + clearInterval(this.timers[file]); + delete this.timers[file]; +}; + +/** + * Stop all schedulers + */ +Logrotator.prototype.stop = function() { + var _this = this; + Object.keys(this.timers).forEach(function(name) { + clearInterval(_this.timers[name]); + }); + this.timers = {}; +}; + +Logrotator.prototype._timeMultiplier = function(multi) { + switch (multi) { + case 's': + return 1000; + case 'm': + return 60*1000; + case 'h': + return 60*60*1000; + } +}; + +Logrotator.prototype._sizeMultiplier = function(multi) { + switch (multi) { + case 'k': + return 1024; + case 'm': + return 1024*1024; + case 'g': + return 1024*1024*1024; + } +}; + +/** + * Rotate a file now if size conditions are met. + * @param file full file path to rotate + * @param options rotation options + * - size - size of the file to trigger rotation. possible values are '1k', '1m', '1g'. default is 10m. + * - count - number of files to keep. default is 3. + * - compress - gzip rotated files. default is true. + * - format - a function to build the name of a rotated file. the function receives the index of the rotated file. + * default format is the index itself. + * @param cb - invoked on completion, receives 'err' on error + */ +Logrotator.prototype.rotate = function(file, options, cb) { + + if (!cb) { + cb = options; + options = null; + } + + options = util._extend({size: '10m', count: 3, compress: true}, options); + + var match = options.size.match(/^([0-9]+)(k|m|g)$/); + if (!match) { + cb('incorrect size format ' + options.size); + return; + } + + var multi = this._sizeMultiplier(match[2]); + var size = parseInt(match[1]) * multi; + + // check if the file reached the trigger size + var _this = this; + fs.stat(file, function(err, stats) { + if (err) { + var message = null; + // if file does not exist, ignore + if (err.code !== 'ENOENT') { + // other errors + message = file + ' stat failed: ' + err.message; + } + cb(message); + return; + } + + // this isn't a file + if (!stats.isFile()) { + cb(file + ' is not a file'); + return; + } + + // check file size to see if rotation is needed + if (stats.size >= size) { + _this._rotate(file, options.count, options, cb); + } else { + cb(null, false); + } + }); + +}; + +/** + * Get the correct file name based on params + * @param file + * @param index + * @param options + * @private + */ +Logrotator.prototype._filename = function(file, index, options) { + var format = index; + if (typeof options.format === 'function') { + format = options.format(index); + } + + var fileName = file + '.' + format; + if (options.compress) { + fileName += '.gz'; + } + return fileName; +}; + +/** + * The log rotation brains + * @param file + * @param index + * @param options + * @param cb + * @private + */ +Logrotator.prototype._rotate = function(file, index, options, cb) { + + // rotate all existing files + // 1. delete last file + // 2. rename all files to with +1 + // 3. read + compress current log into 1 + // 4. truncate file to size 0 + var _this = this; + var fileName = this._filename(file, index, options); + + // delete last file + if (index === options.count) { + fs.unlink(fileName, function(err) { + if (err && err.code !== 'ENOENT') { + cb('error deleting file ' + fileName + ': ' + err.message); + return; + } + _this._rotate(file, --index, options, cb); + }); + return; + } + + // rename all files to with +1 + if (index > 0) { + var renameTo = this._filename(file, index+1, options); + fs.rename(fileName, renameTo, function(err) { + if (err && err.code !== 'ENOENT') { + cb('error renaming file ' + fileName + ': ' + err.message); + return; + } + _this._rotate(file, --index, options, cb); + }); + + return; + } + + // read (and compress) the file log into index 1 + var fis = fs.createReadStream(file); + var fos = fs.createWriteStream(this._filename(file, 1, options)); + var pipe; + if (options.compress) { + pipe = fis.pipe(zlib.createGzip()).pipe(fos); + } else { + pipe = fis.pipe(fos); + } + + var error; + pipe.on('finish', function() { + if (error) { + return; + } + // truncate log file to size 0 + fs.truncate(file, 0, function(err) { + if (err) { + cb && cb('error truncating file ' + file + ': ' + err.message); + return; + } + cb && cb(null, true); + }) + }); + pipe.on('error', function(err) { + error = true; + cb('error compressing file ' + file + ': ' + err.message); + cb = null; + }); +}; + +// create a new log rotator +module.exports.create = function() { + return new Logrotator(); +}; + +// global log rotator +module.exports.rotator = new Logrotator(); \ No newline at end of file diff --git a/ais-structure/src/logger/logger.js b/ais-structure/src/logger/logger.js new file mode 100644 index 0000000..621ba8b --- /dev/null +++ b/ais-structure/src/logger/logger.js @@ -0,0 +1,142 @@ +var log4js = require('log4js'); +var mkdirp = require('mkdirp'); +var fs = require('fs'); +var path = require('path'); +var logrotate = require('./log-rotator-util'); +var moment = require('moment'); +var logConfigPath = path.join(__dirname, '..', 'config', 'log4js_config.json'); +var data = fs.readFileSync(logConfigPath, 'utf8'); +var logConfig = JSON.parse(data); + + +var logDir = process.env.LOG_PATH || './logs'; +var logRotateTime = process.env.LOG_ROTATE_TIME || '15'; + +// if (!fs.existsSync(logDir)){ +// fs.mkdirSync(logDir); +// } + +for (var key in logConfig.appenders) { + var logAppender = logConfig.appenders[key]; + if (logAppender.filename) { + + var pathFile = logDir+'/'+logAppender.filename; + var dirLog = path.dirname(pathFile); + if (!fs.existsSync(dirLog)){ + mkdirp(dirLog); + } + logAppender.filename = pathFile; + logConfig.appenders[key] = logAppender; + } +} +path.dirname(require.main.filename); + +log4js.configure(logConfig); +var rotator = null; +if (rotator == null) { + // "access": { + // "type": "file", + rotator = logrotate.rotator; + for (var key in logConfig.appenders) { + if (logConfig.appenders[key].type == 'file') { + var pathLogFile = logConfig.appenders[key].filename; + rotator.register(pathLogFile, { + schedule:logRotateTime+'m', + size: '0m', + compress: false, + count: 0, + format: function (index) { + let format = moment().format("YYYYMMDD_HHmm"); + return format; + } + }); + } + } + + rotator.on('error', function (err) { + // console.log('oops, an error occured!'); + }); + + // // 'rotate' event is invoked whenever a registered file gets rotated + // rotator.on('rotate', function (file) { + // console.log('file ' + file + ' was rotated!'); + // }); +} +var _logger = log4js.getLogger('phxpartners-app'); +var _serviceLogger = log4js.getLogger('phxpartners-service'); +var _accessLogger = log4js.getLogger('phxpartners-access'); + +var logger = module.exports = {}; + +logger.setHeader = function (fn) { + logger['header'] = fn; + // return this; +}; + +logger.debug = function (msg) { + var header = logger.header || ''; + _logger.debug(header + '::' + msg); +}; + +logger.info = function (msg) { + var header = logger.header || ''; + _logger.info(header + '::' + msg); +}; + +logger.trace = function (msg) { + var header = logger.header || ''; + _logger.trace(header + '::' + msg); +}; + +logger.warn = function (msg) { + var header = logger.header || ''; + _logger.warn(header + '::' + msg); +}; + +logger.error = function (msg, err) { + var header = logger.header || ''; + if (err) { + _logger.error(header + '::' + msg, err); + } else { + _logger.error(header + '::' + msg); + } +}; + +logger.errorStack = function (err) { + _logger.debug(err.stack || err); + var header = logger.header || ''; + _logger.error(header + '::' + JSON.stringify(err.stack || err)); + + // if (err) { + // _logger.error(header + '::' + msg, err); + // } else { + // _logger.error(header + '::' + msg); + // } +}; + +logger.log = function (msg) { + var header = logger.header || ''; + _logger.log(header + '::' + msg); +}; + +logger.fatal = function (msg) { + var header = logger.header || ''; + _logger.fatal(header + '::' + msg); +}; + +logger.stream = { + write: function (message, encoding) { + _accessLogger.info(message); + } +}; + +logger.serviceLog = _serviceLogger; +// function(msg) { +// // var header = logger.header || ''; +// _serviceLogger.info(msg); +// }; + +logger.logResponse = function (msg) { + var header = logger.header || ''; + _accessLogger.debug(header + '::' + msg); +}; \ No newline at end of file diff --git a/ais-structure/src/modules/login/login.ctrl.js b/ais-structure/src/modules/login/login.ctrl.js new file mode 100644 index 0000000..0227740 --- /dev/null +++ b/ais-structure/src/modules/login/login.ctrl.js @@ -0,0 +1,34 @@ +var fs = require('fs'); +var moment = require('moment'); +var _ = require('lodash'); +var env = process.env.NODE_ENV || 'development'; +var rp = require('request-promise'); +var logger = require('../../logger/logger'); +var cfg = require('../../config/config.js').get(env); + + +exports.login = function (req, res, next) { + // res.json('result'); + var currentUserId = req.query.userId ? req.query.userId : "test001"; + logger.info('Check Duplicate Session by id = [' + currentUserId + ']'); + // var data = req.body; + // logger.info(data); + var ret = { + responseCode: 200, + responseMessage: 'Success' + }; + try { + var now = moment(); + var expired = moment().add(cfg.session, 'minutes'); + ret.timestemp = expired; + res.json(ret); + + + } catch (error) { + logger.errorStack(error); + ret.responseCode = 500; + ret.responseMessage = 'Fail'; + ret.responseDescription = error.message; + res.json(ret); + } +}; \ No newline at end of file diff --git a/ais-structure/src/modules/login/login.route.js b/ais-structure/src/modules/login/login.route.js new file mode 100644 index 0000000..2c1a563 --- /dev/null +++ b/ais-structure/src/modules/login/login.route.js @@ -0,0 +1,8 @@ +module.exports = function (app) { + var loginCtrl = app.modules.login.loginCtrl; + + app.get('/user/login', + loginCtrl.login + ); + +}; diff --git a/ais-structure/src/modules/vizcard/postVizCard.ctrl.js b/ais-structure/src/modules/vizcard/postVizCard.ctrl.js new file mode 100644 index 0000000..f861b83 --- /dev/null +++ b/ais-structure/src/modules/vizcard/postVizCard.ctrl.js @@ -0,0 +1,11 @@ +var fs = require('fs'); +var moment = require('moment'); +var _ = require('lodash'); +var env = process.env.NODE_ENV || 'development'; +var rp = require('request-promise'); +var logger = require('../../logger/logger'); +var cfg = require('../../config/config.js').get(env); + +exports.postVizcard = function (req, res, next){ + res.send("post viz card"); +}; \ No newline at end of file diff --git a/ais-structure/src/modules/vizcard/vizCard.ctrl.js b/ais-structure/src/modules/vizcard/vizCard.ctrl.js new file mode 100644 index 0000000..810ad95 --- /dev/null +++ b/ais-structure/src/modules/vizcard/vizCard.ctrl.js @@ -0,0 +1,86 @@ +var fs = require('fs'); +var moment = require('moment'); +var _ = require('lodash'); +var env = process.env.NODE_ENV || 'development'; +var rp = require('request-promise'); +var logger = require('../../logger/logger'); +var cfg = require('../../config/config.js').get(env); +var request = require('request'); +var parseJson = require('xml-js'); +var _url = `http://localhost:8080` + +exports.vizcard = async function (req, res, next) { + var requestXml = ` + + + + axviz + 1234 + 30 + 1 + ${req.params.id} + + + ` + + // console.log(requestXml); + // console.log(req.query.fields) + + const result = await asyncRequest({ + url : _url, + body : requestXml, + method : 'POST' + }); + + // parseString(result.body, function (err, result1) { + // console.log(result1); + // }); + + var result1 = parseJson.xml2json(result.body, {compact: true, spaces: 4}) + result1 = JSON.parse(result1) + result1 = result1['soap:Envelope']['soap:Body']['tem:SearchCustomerResponse']['tem:SearchCustomerResult']['tem:CustomerSearchResult']; + delete result1._comment; + + var response = {}; + + response['resultCode'] = '20000'; + response['developerMessage'] = 'Success'; + + if(req.query.fields){ + var listFields = req.query.fields.split(","); + // console.log(listFields) + } + + for(var key in result1){ + var keyObj = capitalizeFirstLetter(key.replace('tem:','')) + // console.log(keyObj+' : '+result1[key]['_text']); + if(listFields){ + if(listFields.includes(keyObj)){ + response[keyObj] = result1[key]['_text']; + } + } else { + response[keyObj] = result1[key]['_text']; + } + } + + res.status(200).json(response); +}; + +function capitalizeFirstLetter(string) { + return string.charAt(0).toLowerCase() + string.slice(1); +} + +function asyncRequest (params = {}) { + return new Promise((resolve, reject) => { + request(params, function (error, response, body) { + if (error) { + reject(error); + } else { + resolve({ + 'body' : body, + 'response': response + }); + } + }); + }); +} \ No newline at end of file diff --git a/ais-structure/src/modules/vizcard/vizCard.route.js b/ais-structure/src/modules/vizcard/vizCard.route.js new file mode 100644 index 0000000..307b933 --- /dev/null +++ b/ais-structure/src/modules/vizcard/vizCard.route.js @@ -0,0 +1,12 @@ +module.exports = function (app) { + var vizcardCtrl = app.modules.vizcard.vizCardCtrl; + var postVizcardCtrl = app.modules.vizcard.postVizCardCtrl; + + app.get('/cmf/v2/vizCard/:id.json', + vizcardCtrl.vizcard + ); + + app.post('/cmf/v2/vizCard.json', + postVizcardCtrl.postVizcard + ); +}; diff --git a/app.js b/app.js deleted file mode 100644 index 46d690a..0000000 --- a/app.js +++ /dev/null @@ -1,48 +0,0 @@ -var express = require('express'); -var path = require('path'); -var favicon = require('serve-favicon'); -var logger = require('morgan'); -var cookieParser = require('cookie-parser'); -var bodyParser = require('body-parser'); - -var cmf = require('./routes/CMF/index'); -var users = require('./routes/users'); - -var app = express(); -var prefixUrl = '/appName/v2' - -// view engine setup -app.set('views', path.join(__dirname, 'views')); -app.set('view engine', 'jade'); - -// uncomment after placing your favicon in /public -//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); -app.use(logger('dev')); -app.use(bodyParser.json()); -app.use(bodyParser.urlencoded({ extended: false })); -app.use(cookieParser()); -app.use(express.static(path.join(__dirname, 'public'))); - -app.use(prefixUrl + '/', cmf); -app.use('/users', users); -app.listen(3000, () => console.log('Example app listening on port 3000!')) - -// catch 404 and forward to error handler -app.use(function(req, res, next) { - var err = new Error('Not Found'); - err.status = 404; - next(err); -}); - -// error handler -app.use(function(err, req, res, next) { - // set locals, only providing error in development - res.locals.message = err.message; - res.locals.error = req.app.get('env') === 'development' ? err : {}; - - // render the error page - res.status(err.status || 500); - res.render('error'); -}); - -module.exports = app; diff --git a/app_srfp.js b/app_srfp.js deleted file mode 100644 index 34251ae..0000000 --- a/app_srfp.js +++ /dev/null @@ -1,93 +0,0 @@ -var express = require('express'); -var path = require('path'); -var favicon = require('serve-favicon'); -var logger = require('morgan'); -var cookieParser = require('cookie-parser'); -var bodyParser = require('body-parser'); -var index = require('./routes/index'); -var users = require('./routes/users'); -var app = express(); -var fs = require('fs'); -var util = require('util'); -var crypto = require('crypto'); -var http = require("http"); -var url = require("url"); - -app.listen(3000, function () { - console.log('Example app listening on port 3000!') -}); - -/*const now=(unit)=>{ - - const hrTime=process.hrtime(); - switch (unit) { - case 'milli':return hrTime[0] * 1000 + hrTime[1] / 1000000; - case 'micro':return hrTime[0] * 1000000 + hrTime[1] / 1000; - case 'nano':return hrTime[0] * 1000000000 + hrTime[1] ; - break; - default:return hrTime[0] * 1000000000 + hrTime[1] ; - } -}*/ - -app.get('/multiMedia.json',function (req, res) { - var name = req.query.name; - var type = req.query.type; - var commadId = req.query.commandId; - var pathfile = null; - - if (type === 'audio') { - pathfile = './audio/' + name; - } else if (type === 'video') { - pathfile = './video/' + name; - } else if (type === 'image') { - pathfile = 'D:\\PROJECT@AIS\\SRFP_Node\\Genesis-SRFP\\public\\image\\' + name; - } else { - console.log('Access Denied'); - } - - // if (type === 'audio') { - // pathfile = path.join('D:', 'Node','Audio' , name); - // } else if (type === 'video') { - // pathfile = path.join('D:', 'Node','Video' , name); - // } else if (type === 'image') { - // pathfile = path.join('D:', 'Node','Image' , name); - // } else { - // console.log('Access Denied'); - // } - - var file = fs.readFileSync(pathfile); - var value = Buffer.from(file).toString('base64'); - - var stats = fs.statSync(pathfile); - var mtime = stats.mtime; - var size = stats.size; - - console.log(mtime.toISOString().replace(/T/, ' ').replace(/\..+/, '')); - // console.log(mtime.getTime()); - - // Get the if-modified-since header from the request - var reqModDate = req.headers['if-modified-since']; - // console.log('If-modify ' + new Date(reqModDate).toISOString().replace(/T/, ' ').replace(/\..+/, '')); - - if (reqModDate != null) { - reqModDate = new Date(reqModDate); - if (reqModDate.getTime() == mtime.getTime()) { - console.log("load from cache"); - res.writeHead(304, { - "Last-Modified": mtime.toUTCString() - }); - res.end(); - } else { - console.log("no cache"); - var fileName = "test.jpg"; - res.download(pathfile, fileName); - res.end(); - } - } else { - res.writeHead(304, { - "Last-Modified": mtime.toUTCString() - }); - res.end(); - } - // res.send(value.toString()); -}); diff --git a/bin/www b/bin/www deleted file mode 100644 index a2b33e4..0000000 --- a/bin/www +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var app = require('../app'); -var debug = require('debug')('srfpgenesis:server'); -var http = require('http'); - -/** - * Get port from environment and store in Express. - */ - -var port = normalizePort(process.env.PORT || '3000'); -app.set('port', port); - -/** - * Create HTTP server. - */ - -var server = http.createServer(app); - -/** - * Listen on provided port, on all network interfaces. - */ - -server.listen(port); -server.on('error', onError); -server.on('listening', onListening); - -/** - * Normalize a port into a number, string, or false. - */ - -function normalizePort(val) { - var port = parseInt(val, 10); - - if (isNaN(port)) { - // named pipe - return val; - } - - if (port >= 0) { - // port number - return port; - } - - return false; -} - -/** - * Event listener for HTTP server "error" event. - */ - -function onError(error) { - if (error.syscall !== 'listen') { - throw error; - } - - var bind = typeof port === 'string' - ? 'Pipe ' + port - : 'Port ' + port; - - // handle specific listen errors with friendly messages - switch (error.code) { - case 'EACCES': - console.error(bind + ' requires elevated privileges'); - process.exit(1); - break; - case 'EADDRINUSE': - console.error(bind + ' is already in use'); - process.exit(1); - break; - default: - throw error; - } -} - -/** - * Event listener for HTTP server "listening" event. - */ - -function onListening() { - var addr = server.address(); - var bind = typeof addr === 'string' - ? 'pipe ' + addr - : 'port ' + addr.port; - debug('Listening on ' + bind); -} diff --git a/config/config.js b/config/config.js deleted file mode 100644 index e50d85b..0000000 --- a/config/config.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -var config = {}; - -// config.statCodeTbl = {}; -config.log = {}; -config.mediaPath={}; - -config.log.logPath = 'D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\logTest\\'; -config.log.summaryPath = 'D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\logTest\\'; -config.log.statPath = 'D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\logTest\\'; -config.log.alarmPath = 'D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\logTest\\'; -config.log.detailPath = 'D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\logTest\\'; -config.log.projectName = 'SRFP_Genesis'; -config.log.logTime = 15; //Minute -config.log.statTime = 5; //Minute -config.log.alarmTime = 5; //Minute -config.log.detailTime = 15; //Minute -config.log.summaryTime = 15; //Minute - -config.mediaPath.video ="D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\source\\video\\";// --> mp4.m4a -config.mediaPath.image ='D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\source\\image\\';// --> jpg,jpeg,png -config.mediaPath.audio ='D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\source\\audio\\';// --> mp3,m4a - -module.exports = config; diff --git a/config/log4js.json b/config/log4js.json deleted file mode 100644 index 55b5002..0000000 --- a/config/log4js.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "appenders": { - "access": { - "type": "dateFile", - "filename": "log/access", - "pattern": ".yyyy-MM-dd-hh-mm.log", - "compress": false, - "category": "serverLog", - "layout": { - "type": "pattern", - "pattern": "%h %d{dd/MM/yyyy hh:mm} %m" - } - }, - "app": { - "type": "file", - "filename": "log/app.log", - "maxLogSize": 10485760, - "numBackups": 3 - }, - "errorFile": { - "type": "file", - "filename": "log/errors.log" - }, - "errors": { - "type": "logLevelFilter", - "level": "ERROR", - "appender": "errorFile" - } - }, - "categories": { - "default": { - "appenders": [ - "app", - "errors" - ], - "level": "DEBUG" - }, - "serverLog": { - "appenders": [ - "access" - ], - "level": "DEBUG" - } - } -} \ No newline at end of file diff --git a/config/logger.js b/config/logger.js deleted file mode 100644 index dc44f0e..0000000 --- a/config/logger.js +++ /dev/null @@ -1,3 +0,0 @@ -var SutisLog = require('../utils/SutisLog') -var logger = new SutisLog() -module.exports = logger \ No newline at end of file diff --git a/config/writeLog.rar b/config/writeLog.rar deleted file mode 100644 index a4aa9db..0000000 Binary files a/config/writeLog.rar and /dev/null differ diff --git a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.detail b/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.detail deleted file mode 100644 index 9ff09bb..0000000 --- a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.detail +++ /dev/null @@ -1 +0,0 @@ -20180521 09:49:19|DESKTOP-G5SEAPD|SRFP_Genesis - detail: {"SRFP-Genesis.Details":{"Session":"1","Scenario":"getMultimedia","Identity":"","InputTimeStamp":"20180521 09:49:19.959","Input":[{"Event":"SRFP-Genesis.getMultimedia","Type":"REQ","RawData":"http://localhost:3000/mulitiMedia.json?name=girl.jpg&type=image&commandId=1","Data":{"Name":"girl.jpg","Type":"image","CommandId":"1"}}],"OutputTimeStamp":"20180521 09:49:19.959","Output":[{"Event":"SRFP-Genesis.getMultimedia","Type":"RES","RawData":"girl.jpg","Data":{"Size":"null","Modified":"null"}}],"ProcessingTime":"0 ms"}} diff --git a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.stat b/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.stat deleted file mode 100644 index d005f90..0000000 --- a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.stat +++ /dev/null @@ -1,3 +0,0 @@ -20180521 09:49:19|DESKTOP-G5SEAPD|SRFP_Genesis - stat: SRFP-Genesis Returned Unknown URL -20180521 09:49:19|DESKTOP-G5SEAPD|SRFP_Genesis - stat: SRFP-Genesis Received Unknown URL Request -20180521 09:49:19|DESKTOP-G5SEAPD|SRFP_Genesis - stat: SRFP-Genesis Received Unknown URL Request diff --git a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.summary b/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.summary deleted file mode 100644 index 1f493d3..0000000 --- a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.summary +++ /dev/null @@ -1 +0,0 @@ -20180521 09:49:19|DESKTOP-G5SEAPD|SRFP_Genesis - summary: 20180521 09:49:19|null||getMultimedia|null|40400|Unknown URL|[client; getMultimedia(1); [40400; Unknown URL(1)]]|20180521 09:49:19|0 diff --git a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.detail b/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.detail deleted file mode 100644 index 3cd0f15..0000000 --- a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.detail +++ /dev/null @@ -1 +0,0 @@ -20180521 10:02:46|DESKTOP-G5SEAPD|SRFP_Genesis|{"SRFP-Genesis.Details":{"Session":"1","Scenario":"getMultimedia","Identity":"","InputTimeStamp":"20180521 10:02:46.944","Input":[{"Event":"SRFP-Genesis.getMultimedia","Type":"REQ","RawData":"http://localhost:3000/mulitiMedia.json?name=girl.jpg&type=image&commandId=1","Data":{"Name":"girl.jpg","Type":"image","CommandId":"1"}}],"OutputTimeStamp":"20180521 10:02:46.944","Output":[{"Event":"SRFP-Genesis.getMultimedia","Type":"RES","RawData":"girl.jpg","Data":{"Size":"null","Modified":"null"}}],"ProcessingTime":"0 ms"}} diff --git a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.stat b/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.stat deleted file mode 100644 index 2ba71b0..0000000 --- a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.stat +++ /dev/null @@ -1,3 +0,0 @@ -20180521 10:02:46|DESKTOP-G5SEAPD|SRFP_Genesis|SRFP-Genesis Received Unknown URL Request -20180521 10:02:46|DESKTOP-G5SEAPD|SRFP_Genesis|SRFP-Genesis Returned Unknown URL -20180521 10:02:46|DESKTOP-G5SEAPD|SRFP_Genesis|SRFP-Genesis Received Unknown URL Request diff --git a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.summary b/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.summary deleted file mode 100644 index ba95dd9..0000000 --- a/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.summary +++ /dev/null @@ -1 +0,0 @@ -20180521 10:02:46|null||getMultimedia|null|40400|Unknown URL|[client; getMultimedia(1); [40400; Unknown URL(1)]]|20180521 10:02:46|1 diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 8c99af8..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1225 +0,0 @@ -{ - "name": "srfpgenesis", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", - "requires": { - "mime-types": "2.1.17", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=" - }, - "acorn-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", - "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", - "requires": { - "acorn": "2.7.0" - } - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "asap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz", - "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "2.1.2" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "basic-auth": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", - "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", - "requires": { - "safe-buffer": "5.1.1" - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.15" - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "character-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz", - "integrity": "sha1-wN3kqxgnE7kZuXCVmhI+zBow/NY=" - }, - "circular-json": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.5.tgz", - "integrity": "sha512-13YaR6kiz0kBNmIVM87Io8Hp7bWOo4r61vkEANy8iH9R9bc6avud/1FT0SBpqR1RpIQADOh/Q+yHZDA1iL6ysA==" - }, - "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", - "requires": { - "commander": "2.8.1", - "source-map": "0.4.4" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "requires": { - "graceful-readlink": "1.0.1" - } - } - } - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", - "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=" - }, - "constantinople": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz", - "integrity": "sha1-S5RdmTeQe82Y7ldRIsOBdRZUQUE=", - "requires": { - "acorn": "2.7.0" - } - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-parser": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", - "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", - "requires": { - "cookie": "0.3.1", - "cookie-signature": "1.0.6" - } - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "css": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "integrity": "sha1-k4aBHKgrzMnuf7WnMrHioxfIo+c=", - "requires": { - "css-parse": "1.0.4", - "css-stringify": "1.0.5" - } - }, - "css-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", - "integrity": "sha1-OLBQP7+dqfVOnB29pg4UXHcRe90=" - }, - "css-stringify": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", - "integrity": "sha1-sNBClG2ylTu50pKQCmy19tASIDE=" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "1.0.0" - } - }, - "date-format": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", - "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=" - }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "easysoap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/easysoap/-/easysoap-2.0.1.tgz", - "integrity": "sha512-pMLbaDcR3BGVy94yTEyZbsY7OXKm4xmM5FLy+bOz1mYSNt2drNOQSuj7bim2WGiJwoE648wtqa8wHnZbNjuFQw==", - "requires": { - "request": "2.87.0", - "underscore": "1.9.1", - "wsdlrdr": "0.4.0", - "xmldoc": "1.1.2" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, - "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "express": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.5.tgz", - "integrity": "sha1-ZwI1ypWYiQpa6BcLg9tyK4Qu2Sc=", - "requires": { - "accepts": "1.3.4", - "array-flatten": "1.1.1", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.0.6", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "1.1.5", - "qs": "6.5.0", - "range-parser": "1.2.0", - "send": "0.15.6", - "serve-static": "1.12.6", - "setprototypeof": "1.0.3", - "statuses": "1.3.1", - "type-is": "1.6.15", - "utils-merge": "1.0.0", - "vary": "1.1.2" - }, - "dependencies": { - "qs": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.0.tgz", - "integrity": "sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg==" - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "finalhandler": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", - "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" - }, - "dependencies": { - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - } - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.17" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "1.0.0" - } - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.4.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.2" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ipaddr.js": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", - "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=" - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jade": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz", - "integrity": "sha1-nIDlOMEtP7lcjZu5VZ+gzAQEBf0=", - "requires": { - "character-parser": "1.2.1", - "clean-css": "3.4.28", - "commander": "2.6.0", - "constantinople": "3.0.2", - "jstransformer": "0.0.2", - "mkdirp": "0.5.1", - "transformers": "2.1.0", - "uglify-js": "2.8.29", - "void-elements": "2.0.1", - "with": "4.0.3" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jstransformer": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz", - "integrity": "sha1-eq4pqQPRls+glz2IXT5HlH7Ndqs=", - "requires": { - "is-promise": "2.1.0", - "promise": "6.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "log4js": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.4.tgz", - "integrity": "sha512-4rQ1TrOf85lxB0+hBiPF27Zw8pGTHxKZq8FYfum1TNhx/KMUlQ+LL4bMKcdzc7zoAFF992w8+MFQm3BQbUgePA==", - "requires": { - "circular-json": "0.5.5", - "date-format": "1.2.0", - "debug": "3.1.0", - "streamroller": "0.7.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "requires": { - "mime-db": "1.30.0" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "morgan": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", - "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", - "requires": { - "basic-auth": "2.0.0", - "debug": "2.6.9", - "depd": "1.1.2", - "on-finished": "2.3.0", - "on-headers": "1.0.1" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" - }, - "optimist": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", - "requires": { - "wordwrap": "0.0.3" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "promise": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz", - "integrity": "sha1-LOcp9rlLRcJoka0GAsXJDgTG7vY=", - "requires": { - "asap": "1.0.0" - } - }, - "proxy-addr": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", - "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", - "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.4.0" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" - } - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { - "align-text": "0.1.4" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "send": { - "version": "0.15.6", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.6.tgz", - "integrity": "sha1-IPI6nJJbdiq4JwX+L52yUqzkfjQ=", - "requires": { - "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.2", - "mime": "1.3.4", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - }, - "dependencies": { - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - } - } - }, - "serve-favicon": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.5.tgz", - "integrity": "sha512-s7F8h2NrslMkG50KxvlGdj+ApSwaLex0vexuJ9iFf3GLTIp1ph/l1qZvRe9T9TJEYZgmq72ZwJ2VYiAEtChknw==", - "requires": { - "etag": "1.8.1", - "fresh": "0.5.2", - "ms": "2.0.0", - "parseurl": "1.3.2", - "safe-buffer": "5.1.1" - } - }, - "serve-static": { - "version": "1.12.6", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.6.tgz", - "integrity": "sha1-uXN3P2NEmTTaVOW+ul4x2fQhFXc=", - "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.15.6" - } - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": "1.0.1" - } - }, - "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", - "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - }, - "streamroller": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", - "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", - "requires": { - "date-format": "1.2.0", - "debug": "3.1.0", - "mkdirp": "0.5.1", - "readable-stream": "2.3.6" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "requires": { - "punycode": "1.4.1" - } - }, - "transformers": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "integrity": "sha1-XSPLNVYd2F3Gf7hIIwm0fVPM6ac=", - "requires": { - "css": "1.0.8", - "promise": "2.0.0", - "uglify-js": "2.2.5" - }, - "dependencies": { - "is-promise": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=" - }, - "promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "integrity": "sha1-RmSKqdYFr10ucMMCS/WUNtoCuA4=", - "requires": { - "is-promise": "1.0.1" - } - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "requires": { - "amdefine": "1.0.1" - } - }, - "uglify-js": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=", - "requires": { - "optimist": "0.3.7", - "source-map": "0.1.43" - } - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.17" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, - "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, - "with": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz", - "integrity": "sha1-7v0VTp550sjTQXtkeo8U2f7M4U4=", - "requires": { - "acorn": "1.2.2", - "acorn-globals": "1.0.9" - }, - "dependencies": { - "acorn": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", - "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=" - } - } - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - }, - "wsdlrdr": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/wsdlrdr/-/wsdlrdr-0.4.0.tgz", - "integrity": "sha512-9JZLfnxRx4j8nABatZwYt+DN5p0/4NW5LAIk4oac3rt6sdn9O2pxsoHVrgvk8hPrKya0lw1Ql30sdKzNn4hSWg==", - "requires": { - "request": "2.87.0", - "xmldoc": "1.1.2" - } - }, - "xml-js": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.7.tgz", - "integrity": "sha512-1hn0xwwfMcWywnJxqiOXiv+pZaOJyf/YWcUeqJICF0BFb+IOkRFSkKyeA0V62WqTHXNdBxNuCFHhS/w2DtYpoA==", - "requires": { - "sax": "1.2.4" - } - }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - }, - "xmldoc": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", - "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==", - "requires": { - "sax": "1.2.4" - } - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 2934ca8..0000000 --- a/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "srfpgenesis", - "version": "0.0.0", - "private": true, - "scripts": { - "start": "node ./bin/www" - }, - "dependencies": { - "body-parser": "~1.18.2", - "cookie-parser": "~1.4.3", - "dateformat": "^3.0.3", - "debug": "~2.6.9", - "easysoap": "^2.0.1", - "express": "^4.15.5", - "jade": "~1.11.0", - "log4js": "^3.0.4", - "morgan": "~1.9.0", - "request": "^2.87.0", - "serve-favicon": "~2.4.5", - "xml-js": "^1.6.7", - "xml2js": "^0.4.19" - } -} diff --git a/public/image/image.jpg b/public/image/image.jpg deleted file mode 100644 index fd15f5f..0000000 Binary files a/public/image/image.jpg and /dev/null differ diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css deleted file mode 100644 index 9453385..0000000 --- a/public/stylesheets/style.css +++ /dev/null @@ -1,8 +0,0 @@ -body { - padding: 50px; - font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; -} - -a { - color: #00B7FF; -} diff --git a/routes/CMF/customerMembership.js b/routes/CMF/customerMembership.js deleted file mode 100644 index 39d7aa6..0000000 --- a/routes/CMF/customerMembership.js +++ /dev/null @@ -1,9 +0,0 @@ -var express = require('express'); -var router = express.Router(); - -/* GET users listing. */ -router.get('/', function(req, res, next) { - res.send('customer membership'); -}); - -module.exports = router; diff --git a/routes/CMF/index.js b/routes/CMF/index.js deleted file mode 100644 index c1b7b27..0000000 --- a/routes/CMF/index.js +++ /dev/null @@ -1,11 +0,0 @@ -let express = require('express'); -let router = express.Router(); - -// load controllers -const vizCard = require('./vizCard'); -const customerMembership = require('./customerMembership'); - -router.use('/vizCard.json', vizCard); -router.use('/customerMembership.json', customerMembership); - -module.exports = router; \ No newline at end of file diff --git a/routes/CMF/vizCard.js b/routes/CMF/vizCard.js deleted file mode 100644 index fb448a4..0000000 --- a/routes/CMF/vizCard.js +++ /dev/null @@ -1,98 +0,0 @@ -'use strict'; -var express = require('express'); -var router = express.Router(); -const request = require('request'); -var parseJson = require('xml-js'); -var custom_log = require('../../config/logger'); -var config = require('../../config/config'); -var stat = require('../../utils/SutisStat'); -var alarm = require('../../utils/SutisAlarm'); -var detail = require('../../utils/SutisDetail'); -var logger = require('../../utils/SutisLogSummary'); - -var _url = `http://localhost:8080` - -router.get('/',async function(req, res, next) { - - var cmd = 'vizCard' - - var requestXml = ` - - - - axviz - 1234 - 30 - 1 - ${req.query.id} - - - ` - - console.log(requestXml); - // console.log(req.query.fields) - - const result = await asyncRequest({ - url : _url, - body : requestXml, - method : 'POST' - }); - - // parseString(result.body, function (err, result1) { - // console.log(result1); - // }); - - var result1 = parseJson.xml2json(result.body, {compact: true, spaces: 4}) - result1 = JSON.parse(result1) - result1 = result1['soap:Envelope']['soap:Body']['tem:SearchCustomerResponse']['tem:SearchCustomerResult']['tem:CustomerSearchResult']; - delete result1._comment; - - var response = {}; - - if(req.query.fields){ - var listFields = req.query.fields.split(","); - // console.log(listFields) - } - - for(var key in result1){ - var keyObj = capitalizeFirstLetter(key.replace('tem:','')) - // console.log(keyObj+' : '+result1[key]['_text']); - if(listFields){ - if(listFields.includes(keyObj)){ - response[keyObj] = result1[key]['_text']; - } - } else { - response[keyObj] = result1[key]['_text']; - } - } - - stat.recv(cmd, '20000'); - stat.retn(cmd, '20000'); - - res.status(200).json({ - resultCode: '20000', - resultDescription: 'Success', - resultData: response - }); -}); - -function capitalizeFirstLetter(string) { - return string.charAt(0).toLowerCase() + string.slice(1); -} - -function asyncRequest (params = {}) { - return new Promise((resolve, reject) => { - request(params, function (error, response, body) { - if (error) { - reject(error); - } else { - resolve({ - 'body' : body, - 'response': response - }); - } - }); - }); -} - -module.exports = router; diff --git a/routes/users.js b/routes/users.js deleted file mode 100644 index 623e430..0000000 --- a/routes/users.js +++ /dev/null @@ -1,9 +0,0 @@ -var express = require('express'); -var router = express.Router(); - -/* GET users listing. */ -router.get('/', function(req, res, next) { - res.send('respond with a resource'); -}); - -module.exports = router; diff --git a/sc-structure/app.js b/sc-structure/app.js new file mode 100644 index 0000000..46d690a --- /dev/null +++ b/sc-structure/app.js @@ -0,0 +1,48 @@ +var express = require('express'); +var path = require('path'); +var favicon = require('serve-favicon'); +var logger = require('morgan'); +var cookieParser = require('cookie-parser'); +var bodyParser = require('body-parser'); + +var cmf = require('./routes/CMF/index'); +var users = require('./routes/users'); + +var app = express(); +var prefixUrl = '/appName/v2' + +// view engine setup +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'jade'); + +// uncomment after placing your favicon in /public +//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); +app.use(logger('dev')); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: false })); +app.use(cookieParser()); +app.use(express.static(path.join(__dirname, 'public'))); + +app.use(prefixUrl + '/', cmf); +app.use('/users', users); +app.listen(3000, () => console.log('Example app listening on port 3000!')) + +// catch 404 and forward to error handler +app.use(function(req, res, next) { + var err = new Error('Not Found'); + err.status = 404; + next(err); +}); + +// error handler +app.use(function(err, req, res, next) { + // set locals, only providing error in development + res.locals.message = err.message; + res.locals.error = req.app.get('env') === 'development' ? err : {}; + + // render the error page + res.status(err.status || 500); + res.render('error'); +}); + +module.exports = app; diff --git a/sc-structure/app_srfp.js b/sc-structure/app_srfp.js new file mode 100644 index 0000000..34251ae --- /dev/null +++ b/sc-structure/app_srfp.js @@ -0,0 +1,93 @@ +var express = require('express'); +var path = require('path'); +var favicon = require('serve-favicon'); +var logger = require('morgan'); +var cookieParser = require('cookie-parser'); +var bodyParser = require('body-parser'); +var index = require('./routes/index'); +var users = require('./routes/users'); +var app = express(); +var fs = require('fs'); +var util = require('util'); +var crypto = require('crypto'); +var http = require("http"); +var url = require("url"); + +app.listen(3000, function () { + console.log('Example app listening on port 3000!') +}); + +/*const now=(unit)=>{ + + const hrTime=process.hrtime(); + switch (unit) { + case 'milli':return hrTime[0] * 1000 + hrTime[1] / 1000000; + case 'micro':return hrTime[0] * 1000000 + hrTime[1] / 1000; + case 'nano':return hrTime[0] * 1000000000 + hrTime[1] ; + break; + default:return hrTime[0] * 1000000000 + hrTime[1] ; + } +}*/ + +app.get('/multiMedia.json',function (req, res) { + var name = req.query.name; + var type = req.query.type; + var commadId = req.query.commandId; + var pathfile = null; + + if (type === 'audio') { + pathfile = './audio/' + name; + } else if (type === 'video') { + pathfile = './video/' + name; + } else if (type === 'image') { + pathfile = 'D:\\PROJECT@AIS\\SRFP_Node\\Genesis-SRFP\\public\\image\\' + name; + } else { + console.log('Access Denied'); + } + + // if (type === 'audio') { + // pathfile = path.join('D:', 'Node','Audio' , name); + // } else if (type === 'video') { + // pathfile = path.join('D:', 'Node','Video' , name); + // } else if (type === 'image') { + // pathfile = path.join('D:', 'Node','Image' , name); + // } else { + // console.log('Access Denied'); + // } + + var file = fs.readFileSync(pathfile); + var value = Buffer.from(file).toString('base64'); + + var stats = fs.statSync(pathfile); + var mtime = stats.mtime; + var size = stats.size; + + console.log(mtime.toISOString().replace(/T/, ' ').replace(/\..+/, '')); + // console.log(mtime.getTime()); + + // Get the if-modified-since header from the request + var reqModDate = req.headers['if-modified-since']; + // console.log('If-modify ' + new Date(reqModDate).toISOString().replace(/T/, ' ').replace(/\..+/, '')); + + if (reqModDate != null) { + reqModDate = new Date(reqModDate); + if (reqModDate.getTime() == mtime.getTime()) { + console.log("load from cache"); + res.writeHead(304, { + "Last-Modified": mtime.toUTCString() + }); + res.end(); + } else { + console.log("no cache"); + var fileName = "test.jpg"; + res.download(pathfile, fileName); + res.end(); + } + } else { + res.writeHead(304, { + "Last-Modified": mtime.toUTCString() + }); + res.end(); + } + // res.send(value.toString()); +}); diff --git a/sc-structure/bin/www b/sc-structure/bin/www new file mode 100644 index 0000000..a2b33e4 --- /dev/null +++ b/sc-structure/bin/www @@ -0,0 +1,90 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var app = require('../app'); +var debug = require('debug')('srfpgenesis:server'); +var http = require('http'); + +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(process.env.PORT || '3000'); +app.set('port', port); + +/** + * Create HTTP server. + */ + +var server = http.createServer(app); + +/** + * Listen on provided port, on all network interfaces. + */ + +server.listen(port); +server.on('error', onError); +server.on('listening', onListening); + +/** + * Normalize a port into a number, string, or false. + */ + +function normalizePort(val) { + var port = parseInt(val, 10); + + if (isNaN(port)) { + // named pipe + return val; + } + + if (port >= 0) { + // port number + return port; + } + + return false; +} + +/** + * Event listener for HTTP server "error" event. + */ + +function onError(error) { + if (error.syscall !== 'listen') { + throw error; + } + + var bind = typeof port === 'string' + ? 'Pipe ' + port + : 'Port ' + port; + + // handle specific listen errors with friendly messages + switch (error.code) { + case 'EACCES': + console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + console.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +} + +/** + * Event listener for HTTP server "listening" event. + */ + +function onListening() { + var addr = server.address(); + var bind = typeof addr === 'string' + ? 'pipe ' + addr + : 'port ' + addr.port; + debug('Listening on ' + bind); +} diff --git a/sc-structure/config/config.js b/sc-structure/config/config.js new file mode 100644 index 0000000..e50d85b --- /dev/null +++ b/sc-structure/config/config.js @@ -0,0 +1,25 @@ +'use strict'; + +var config = {}; + +// config.statCodeTbl = {}; +config.log = {}; +config.mediaPath={}; + +config.log.logPath = 'D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\logTest\\'; +config.log.summaryPath = 'D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\logTest\\'; +config.log.statPath = 'D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\logTest\\'; +config.log.alarmPath = 'D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\logTest\\'; +config.log.detailPath = 'D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\logTest\\'; +config.log.projectName = 'SRFP_Genesis'; +config.log.logTime = 15; //Minute +config.log.statTime = 5; //Minute +config.log.alarmTime = 5; //Minute +config.log.detailTime = 15; //Minute +config.log.summaryTime = 15; //Minute + +config.mediaPath.video ="D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\source\\video\\";// --> mp4.m4a +config.mediaPath.image ='D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\source\\image\\';// --> jpg,jpeg,png +config.mediaPath.audio ='D:\\PROJECT@AIS\\SRFP_Node\\SRFPGenesis_TestLog\\source\\audio\\';// --> mp3,m4a + +module.exports = config; diff --git a/sc-structure/config/log4js.json b/sc-structure/config/log4js.json new file mode 100644 index 0000000..55b5002 --- /dev/null +++ b/sc-structure/config/log4js.json @@ -0,0 +1,45 @@ +{ + "appenders": { + "access": { + "type": "dateFile", + "filename": "log/access", + "pattern": ".yyyy-MM-dd-hh-mm.log", + "compress": false, + "category": "serverLog", + "layout": { + "type": "pattern", + "pattern": "%h %d{dd/MM/yyyy hh:mm} %m" + } + }, + "app": { + "type": "file", + "filename": "log/app.log", + "maxLogSize": 10485760, + "numBackups": 3 + }, + "errorFile": { + "type": "file", + "filename": "log/errors.log" + }, + "errors": { + "type": "logLevelFilter", + "level": "ERROR", + "appender": "errorFile" + } + }, + "categories": { + "default": { + "appenders": [ + "app", + "errors" + ], + "level": "DEBUG" + }, + "serverLog": { + "appenders": [ + "access" + ], + "level": "DEBUG" + } + } +} \ No newline at end of file diff --git a/sc-structure/config/logger.js b/sc-structure/config/logger.js new file mode 100644 index 0000000..dc44f0e --- /dev/null +++ b/sc-structure/config/logger.js @@ -0,0 +1,3 @@ +var SutisLog = require('../utils/SutisLog') +var logger = new SutisLog() +module.exports = logger \ No newline at end of file diff --git a/sc-structure/config/writeLog.rar b/sc-structure/config/writeLog.rar new file mode 100644 index 0000000..a4aa9db Binary files /dev/null and b/sc-structure/config/writeLog.rar differ diff --git a/sc-structure/log/access b/sc-structure/log/access new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/sc-structure/log/access diff --git a/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.detail b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.detail new file mode 100644 index 0000000..9ff09bb --- /dev/null +++ b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.detail @@ -0,0 +1 @@ +20180521 09:49:19|DESKTOP-G5SEAPD|SRFP_Genesis - detail: {"SRFP-Genesis.Details":{"Session":"1","Scenario":"getMultimedia","Identity":"","InputTimeStamp":"20180521 09:49:19.959","Input":[{"Event":"SRFP-Genesis.getMultimedia","Type":"REQ","RawData":"http://localhost:3000/mulitiMedia.json?name=girl.jpg&type=image&commandId=1","Data":{"Name":"girl.jpg","Type":"image","CommandId":"1"}}],"OutputTimeStamp":"20180521 09:49:19.959","Output":[{"Event":"SRFP-Genesis.getMultimedia","Type":"RES","RawData":"girl.jpg","Data":{"Size":"null","Modified":"null"}}],"ProcessingTime":"0 ms"}} diff --git a/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.stat b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.stat new file mode 100644 index 0000000..d005f90 --- /dev/null +++ b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.stat @@ -0,0 +1,3 @@ +20180521 09:49:19|DESKTOP-G5SEAPD|SRFP_Genesis - stat: SRFP-Genesis Returned Unknown URL +20180521 09:49:19|DESKTOP-G5SEAPD|SRFP_Genesis - stat: SRFP-Genesis Received Unknown URL Request +20180521 09:49:19|DESKTOP-G5SEAPD|SRFP_Genesis - stat: SRFP-Genesis Received Unknown URL Request diff --git a/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.summary b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.summary new file mode 100644 index 0000000..1f493d3 --- /dev/null +++ b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805210945.summary @@ -0,0 +1 @@ +20180521 09:49:19|DESKTOP-G5SEAPD|SRFP_Genesis - summary: 20180521 09:49:19|null||getMultimedia|null|40400|Unknown URL|[client; getMultimedia(1); [40400; Unknown URL(1)]]|20180521 09:49:19|0 diff --git a/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.detail b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.detail new file mode 100644 index 0000000..3cd0f15 --- /dev/null +++ b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.detail @@ -0,0 +1 @@ +20180521 10:02:46|DESKTOP-G5SEAPD|SRFP_Genesis|{"SRFP-Genesis.Details":{"Session":"1","Scenario":"getMultimedia","Identity":"","InputTimeStamp":"20180521 10:02:46.944","Input":[{"Event":"SRFP-Genesis.getMultimedia","Type":"REQ","RawData":"http://localhost:3000/mulitiMedia.json?name=girl.jpg&type=image&commandId=1","Data":{"Name":"girl.jpg","Type":"image","CommandId":"1"}}],"OutputTimeStamp":"20180521 10:02:46.944","Output":[{"Event":"SRFP-Genesis.getMultimedia","Type":"RES","RawData":"girl.jpg","Data":{"Size":"null","Modified":"null"}}],"ProcessingTime":"0 ms"}} diff --git a/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.stat b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.stat new file mode 100644 index 0000000..2ba71b0 --- /dev/null +++ b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.stat @@ -0,0 +1,3 @@ +20180521 10:02:46|DESKTOP-G5SEAPD|SRFP_Genesis|SRFP-Genesis Received Unknown URL Request +20180521 10:02:46|DESKTOP-G5SEAPD|SRFP_Genesis|SRFP-Genesis Returned Unknown URL +20180521 10:02:46|DESKTOP-G5SEAPD|SRFP_Genesis|SRFP-Genesis Received Unknown URL Request diff --git a/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.summary b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.summary new file mode 100644 index 0000000..ba95dd9 --- /dev/null +++ b/sc-structure/logTest/DESKTOP-G5SEAPD_SRFP_Genesis_201805211000.summary @@ -0,0 +1 @@ +20180521 10:02:46|null||getMultimedia|null|40400|Unknown URL|[client; getMultimedia(1); [40400; Unknown URL(1)]]|20180521 10:02:46|1 diff --git a/sc-structure/package-lock.json b/sc-structure/package-lock.json new file mode 100644 index 0000000..8c99af8 --- /dev/null +++ b/sc-structure/package-lock.json @@ -0,0 +1,1225 @@ +{ + "name": "srfpgenesis", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=" + }, + "acorn-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", + "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", + "requires": { + "acorn": "2.7.0" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "asap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz", + "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "2.1.2" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "basic-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", + "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "character-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz", + "integrity": "sha1-wN3kqxgnE7kZuXCVmhI+zBow/NY=" + }, + "circular-json": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.5.tgz", + "integrity": "sha512-13YaR6kiz0kBNmIVM87Io8Hp7bWOo4r61vkEANy8iH9R9bc6avud/1FT0SBpqR1RpIQADOh/Q+yHZDA1iL6ysA==" + }, + "clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "requires": { + "commander": "2.8.1", + "source-map": "0.4.4" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": "1.0.1" + } + } + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", + "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=" + }, + "constantinople": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz", + "integrity": "sha1-S5RdmTeQe82Y7ldRIsOBdRZUQUE=", + "requires": { + "acorn": "2.7.0" + } + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", + "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", + "requires": { + "cookie": "0.3.1", + "cookie-signature": "1.0.6" + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "css": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", + "integrity": "sha1-k4aBHKgrzMnuf7WnMrHioxfIo+c=", + "requires": { + "css-parse": "1.0.4", + "css-stringify": "1.0.5" + } + }, + "css-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", + "integrity": "sha1-OLBQP7+dqfVOnB29pg4UXHcRe90=" + }, + "css-stringify": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", + "integrity": "sha1-sNBClG2ylTu50pKQCmy19tASIDE=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-format": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", + "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=" + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "easysoap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/easysoap/-/easysoap-2.0.1.tgz", + "integrity": "sha512-pMLbaDcR3BGVy94yTEyZbsY7OXKm4xmM5FLy+bOz1mYSNt2drNOQSuj7bim2WGiJwoE648wtqa8wHnZbNjuFQw==", + "requires": { + "request": "2.87.0", + "underscore": "1.9.1", + "wsdlrdr": "0.4.0", + "xmldoc": "1.1.2" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.15.5", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.5.tgz", + "integrity": "sha1-ZwI1ypWYiQpa6BcLg9tyK4Qu2Sc=", + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.0.6", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.5", + "qs": "6.5.0", + "range-parser": "1.2.0", + "send": "0.15.6", + "serve-static": "1.12.6", + "setprototypeof": "1.0.3", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vary": "1.1.2" + }, + "dependencies": { + "qs": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.0.tgz", + "integrity": "sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg==" + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "finalhandler": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", + "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.17" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", + "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jade": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz", + "integrity": "sha1-nIDlOMEtP7lcjZu5VZ+gzAQEBf0=", + "requires": { + "character-parser": "1.2.1", + "clean-css": "3.4.28", + "commander": "2.6.0", + "constantinople": "3.0.2", + "jstransformer": "0.0.2", + "mkdirp": "0.5.1", + "transformers": "2.1.0", + "uglify-js": "2.8.29", + "void-elements": "2.0.1", + "with": "4.0.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jstransformer": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz", + "integrity": "sha1-eq4pqQPRls+glz2IXT5HlH7Ndqs=", + "requires": { + "is-promise": "2.1.0", + "promise": "6.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "log4js": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.4.tgz", + "integrity": "sha512-4rQ1TrOf85lxB0+hBiPF27Zw8pGTHxKZq8FYfum1TNhx/KMUlQ+LL4bMKcdzc7zoAFF992w8+MFQm3BQbUgePA==", + "requires": { + "circular-json": "0.5.5", + "date-format": "1.2.0", + "debug": "3.1.0", + "streamroller": "0.7.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "requires": { + "basic-auth": "2.0.0", + "debug": "2.6.9", + "depd": "1.1.2", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "optimist": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", + "requires": { + "wordwrap": "0.0.3" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "promise": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz", + "integrity": "sha1-LOcp9rlLRcJoka0GAsXJDgTG7vY=", + "requires": { + "asap": "1.0.0" + } + }, + "proxy-addr": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", + "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.4.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "send": { + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.6.tgz", + "integrity": "sha1-IPI6nJJbdiq4JwX+L52yUqzkfjQ=", + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.3.4", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + } + } + }, + "serve-favicon": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.5.tgz", + "integrity": "sha512-s7F8h2NrslMkG50KxvlGdj+ApSwaLex0vexuJ9iFf3GLTIp1ph/l1qZvRe9T9TJEYZgmq72ZwJ2VYiAEtChknw==", + "requires": { + "etag": "1.8.1", + "fresh": "0.5.2", + "ms": "2.0.0", + "parseurl": "1.3.2", + "safe-buffer": "5.1.1" + } + }, + "serve-static": { + "version": "1.12.6", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.6.tgz", + "integrity": "sha1-uXN3P2NEmTTaVOW+ul4x2fQhFXc=", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.15.6" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + }, + "streamroller": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", + "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", + "requires": { + "date-format": "1.2.0", + "debug": "3.1.0", + "mkdirp": "0.5.1", + "readable-stream": "2.3.6" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "1.4.1" + } + }, + "transformers": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "integrity": "sha1-XSPLNVYd2F3Gf7hIIwm0fVPM6ac=", + "requires": { + "css": "1.0.8", + "promise": "2.0.0", + "uglify-js": "2.2.5" + }, + "dependencies": { + "is-promise": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", + "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=" + }, + "promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", + "integrity": "sha1-RmSKqdYFr10ucMMCS/WUNtoCuA4=", + "requires": { + "is-promise": "1.0.1" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "requires": { + "amdefine": "1.0.1" + } + }, + "uglify-js": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=", + "requires": { + "optimist": "0.3.7", + "source-map": "0.1.43" + } + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "with": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz", + "integrity": "sha1-7v0VTp550sjTQXtkeo8U2f7M4U4=", + "requires": { + "acorn": "1.2.2", + "acorn-globals": "1.0.9" + }, + "dependencies": { + "acorn": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", + "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=" + } + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "wsdlrdr": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/wsdlrdr/-/wsdlrdr-0.4.0.tgz", + "integrity": "sha512-9JZLfnxRx4j8nABatZwYt+DN5p0/4NW5LAIk4oac3rt6sdn9O2pxsoHVrgvk8hPrKya0lw1Ql30sdKzNn4hSWg==", + "requires": { + "request": "2.87.0", + "xmldoc": "1.1.2" + } + }, + "xml-js": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.7.tgz", + "integrity": "sha512-1hn0xwwfMcWywnJxqiOXiv+pZaOJyf/YWcUeqJICF0BFb+IOkRFSkKyeA0V62WqTHXNdBxNuCFHhS/w2DtYpoA==", + "requires": { + "sax": "1.2.4" + } + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.7" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, + "xmldoc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", + "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==", + "requires": { + "sax": "1.2.4" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } +} diff --git a/sc-structure/package.json b/sc-structure/package.json new file mode 100644 index 0000000..2934ca8 --- /dev/null +++ b/sc-structure/package.json @@ -0,0 +1,23 @@ +{ + "name": "srfpgenesis", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "node ./bin/www" + }, + "dependencies": { + "body-parser": "~1.18.2", + "cookie-parser": "~1.4.3", + "dateformat": "^3.0.3", + "debug": "~2.6.9", + "easysoap": "^2.0.1", + "express": "^4.15.5", + "jade": "~1.11.0", + "log4js": "^3.0.4", + "morgan": "~1.9.0", + "request": "^2.87.0", + "serve-favicon": "~2.4.5", + "xml-js": "^1.6.7", + "xml2js": "^0.4.19" + } +} diff --git a/sc-structure/public/image/image.jpg b/sc-structure/public/image/image.jpg new file mode 100644 index 0000000..fd15f5f Binary files /dev/null and b/sc-structure/public/image/image.jpg differ diff --git a/sc-structure/public/stylesheets/style.css b/sc-structure/public/stylesheets/style.css new file mode 100644 index 0000000..9453385 --- /dev/null +++ b/sc-structure/public/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} diff --git a/sc-structure/routes/CMF/customerMembership.js b/sc-structure/routes/CMF/customerMembership.js new file mode 100644 index 0000000..39d7aa6 --- /dev/null +++ b/sc-structure/routes/CMF/customerMembership.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +/* GET users listing. */ +router.get('/', function(req, res, next) { + res.send('customer membership'); +}); + +module.exports = router; diff --git a/sc-structure/routes/CMF/index.js b/sc-structure/routes/CMF/index.js new file mode 100644 index 0000000..c1b7b27 --- /dev/null +++ b/sc-structure/routes/CMF/index.js @@ -0,0 +1,11 @@ +let express = require('express'); +let router = express.Router(); + +// load controllers +const vizCard = require('./vizCard'); +const customerMembership = require('./customerMembership'); + +router.use('/vizCard.json', vizCard); +router.use('/customerMembership.json', customerMembership); + +module.exports = router; \ No newline at end of file diff --git a/sc-structure/routes/CMF/vizCard.js b/sc-structure/routes/CMF/vizCard.js new file mode 100644 index 0000000..fb448a4 --- /dev/null +++ b/sc-structure/routes/CMF/vizCard.js @@ -0,0 +1,98 @@ +'use strict'; +var express = require('express'); +var router = express.Router(); +const request = require('request'); +var parseJson = require('xml-js'); +var custom_log = require('../../config/logger'); +var config = require('../../config/config'); +var stat = require('../../utils/SutisStat'); +var alarm = require('../../utils/SutisAlarm'); +var detail = require('../../utils/SutisDetail'); +var logger = require('../../utils/SutisLogSummary'); + +var _url = `http://localhost:8080` + +router.get('/',async function(req, res, next) { + + var cmd = 'vizCard' + + var requestXml = ` + + + + axviz + 1234 + 30 + 1 + ${req.query.id} + + + ` + + console.log(requestXml); + // console.log(req.query.fields) + + const result = await asyncRequest({ + url : _url, + body : requestXml, + method : 'POST' + }); + + // parseString(result.body, function (err, result1) { + // console.log(result1); + // }); + + var result1 = parseJson.xml2json(result.body, {compact: true, spaces: 4}) + result1 = JSON.parse(result1) + result1 = result1['soap:Envelope']['soap:Body']['tem:SearchCustomerResponse']['tem:SearchCustomerResult']['tem:CustomerSearchResult']; + delete result1._comment; + + var response = {}; + + if(req.query.fields){ + var listFields = req.query.fields.split(","); + // console.log(listFields) + } + + for(var key in result1){ + var keyObj = capitalizeFirstLetter(key.replace('tem:','')) + // console.log(keyObj+' : '+result1[key]['_text']); + if(listFields){ + if(listFields.includes(keyObj)){ + response[keyObj] = result1[key]['_text']; + } + } else { + response[keyObj] = result1[key]['_text']; + } + } + + stat.recv(cmd, '20000'); + stat.retn(cmd, '20000'); + + res.status(200).json({ + resultCode: '20000', + resultDescription: 'Success', + resultData: response + }); +}); + +function capitalizeFirstLetter(string) { + return string.charAt(0).toLowerCase() + string.slice(1); +} + +function asyncRequest (params = {}) { + return new Promise((resolve, reject) => { + request(params, function (error, response, body) { + if (error) { + reject(error); + } else { + resolve({ + 'body' : body, + 'response': response + }); + } + }); + }); +} + +module.exports = router; diff --git a/sc-structure/routes/users.js b/sc-structure/routes/users.js new file mode 100644 index 0000000..623e430 --- /dev/null +++ b/sc-structure/routes/users.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +/* GET users listing. */ +router.get('/', function(req, res, next) { + res.send('respond with a resource'); +}); + +module.exports = router; diff --git a/sc-structure/srfp_genesis.js b/sc-structure/srfp_genesis.js new file mode 100644 index 0000000..f4e2b63 --- /dev/null +++ b/sc-structure/srfp_genesis.js @@ -0,0 +1,323 @@ +var express = require('express'); +var path = require('path'); +var app = express(); +var fs = require('fs'); +var logger = require('./config/logger'); +var config = require('./config/config'); + +function checkReq(req) { + var regex_filetype = /^.*\.(jpg|jpeg|png|mp3|mp4|m4a)$/ig; + var regex_datetime = /(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s\d{1,2}\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\sGMT$/g; + var regex_commandId = /^\d+$/g; + + var reqModDate = req.get('If-Modified-Since'); + var errorCase = null; + // logger.error('>>>>>>>>> ' + req.url); + + if (reqModDate != null) { + // logger.error('Req Header Not null'); + if (!regex_datetime.test(reqModDate)) { + logger.error('[invalid] date format: ' + reqModDate); + errorCase = 'req.If-Modified-Since=' + reqModDate; + + var resc = '40300'; + var desc = 'Missing or invalid parameter'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + var missingInvalid = errorCase; + return [resc, desc, prompt, missingInvalid]; + } + } + + if (req.query.name && req.query.type && req.query.commandId) { + if (regex_filetype.test(req.query.name)) { + return true; + } + } + + if (!req.query.name) { + logger.error('[missing or invalid]: name'); + errorCase = 'req.name=' + req.query.name; + } else if (!req.query.type) { + logger.error('[missing or invalid]: type'); + errorCase = 'req.type=' + req.query.type; + } else if (!req.query.commandId) { + logger.error('[missing or invalid]: commandId'); + errorCase = 'req.commandId=' + req.query.commandId; + } + + var resc = '40300'; + var desc = 'Missing or invalid parameter'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + var missingInvalid = errorCase; + return [resc, desc, prompt, missingInvalid]; + +}; + +function checkFile(req) { + var path; + if (req.query.type === 'audio') { + path = config.mediaPath.audio + req.query.name; + } else if (req.query.type === 'video') { + path = config.mediaPath.video + req.query.name; + } else if (req.query.type === 'image') { + path = config.mediaPath.image + req.query.name; + } else { + var resc = '40401'; + var desc = 'File not found'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + var missingInvalid = 'req.name=' + req.query.name; + return [resc, desc, prompt, missingInvalid]; + } + + if (fs.existsSync(path)) { + try { + fs.accessSync(path, fs.constants.R_OK); + var file_name = req.query.name; + return [true, file_name, path]; + } catch (err) { + var resc = '40101'; + var desc = 'Access denied'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + var missingInvalid = 'req.name=' + req.query.name; + return [resc, desc, prompt, missingInvalid]; + } + } else { + var resc = '40401'; + var desc = 'File not found'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + var missingInvalid = 'req.name=' + req.query.name; + return [resc, desc, prompt, missingInvalid]; + } +}; + +function checkHeader(req, path_file) { + try { + // var reqModDate = req.headers['If-Modified-Since']; + var reqModDate = req.get('If-Modified-Since'); + var stats = fs.statSync(path_file); + var mtime = stats.mtime; + var size = stats['size']; + + if (reqModDate != null) { + reqModDate = new Date(reqModDate); + + logger.info('[If-Modified-Since]: ' + reqModDate.toUTCString()); + logger.info('[Modified-File] : ' + mtime.toUTCString()); + + if (reqModDate.toUTCString() == mtime.toUTCString()) { + logger.info('[Req Header]: If-Modified-Since == Modified File'); + return [304, mtime, size]; + } else { + logger.info('[Req Header]: If-Modified-Since != Modified File'); + return [200, mtime, size]; + } + } else { + logger.info('[Req Header]: No-header: If-Modified-Since'); + logger.info('[Modified-File]: ' + mtime.toUTCString()); + return [200, mtime, size]; + } + } catch (error) { + logger.error('[Error check header!!!]'); + return [200, mtime, size]; + } +}; + +function writeApplog(req) { + + logger.info('[Start getMultimedia Validate Parameter]: ' + 'name: ' + req.query.name + ', type=' + req.query.type + ', commandId=' + req.query.commandId); + logger.info('[incommigHeader: If-Modified-Since]: ' + req.get('If-Modified-Since')); + logger.info('[incomming url]: ' + req.protocol + '://' + req.get('host') + req.originalUrl); +} + +app.listen(8080, function() { + logger.info('============================='); + logger.info('SRFP-Genesis on port 8080!'); +}); + +app.get('/multiMedia.json', function(req, res) { + var summaryLog; + var request = checkReq(req); + var fileReq = checkFile(req); + // var headerReq = checkHeader(req, fileReq[2]); + + var session = req.query.commandId; + var cmd = 'getMultimedia'; + var identity = ''; + var reqfile = req.query.name; + + writeApplog(req); + + // [Check Request] + if (request == true && fileReq[0] == true) { + var resc = '20000'; + var desc = 'Success'; + + var headerReq = checkHeader(req, fileReq[2]); + var statusCode = headerReq[0]; + var mtime = headerReq[1]; + var size = headerReq[2]; + + summaryLog = logger.summary(session, cmd, identity, resc, desc); + summaryLog.addSuccessBlock('client', cmd, 'null', 'Success'); + summaryLog.addSuccessBlock('null', 'getFile', resc, desc); + + logger.statRecv(cmd, resc); + logger.statRetn(cmd, resc); + logger.detail(req, cmd, size, mtime.toUTCString()); + + var content_type; + var regex_image = /^.*\.(jpg|jpeg)$/ig; + var regex_png = /^.*\.(png)$/ig; + var regex_mp3 = /^.*\.(mp3)$/ig; + var regex_mp4 = /^.*\.(mp4)$/ig; + var regex_m4a = /^.*\.(m4a)$/ig; + + if (regex_image.test(checkFile(req)[1])) { + content_type = 'image/jpeg'; + } else if (regex_png.test(checkFile(req)[1])) { + content_type = 'image/png'; + } else if (regex_mp3.test(checkFile(req)[1])) { + content_type = 'audio/mpeg'; + } else if (regex_mp4.test(checkFile(req)[1])) { + content_type = 'video/mp4'; + } else if (regex_m4a.test(checkFile(req)[1])) { + content_type = 'audio/m4a'; + } + + logger.info('[Path File]: ' + fileReq[2]); + + if (statusCode == 200) { + logger.info('[statusCode]: 200'); + var resc = '20000'; + var desc = 'Success'; + + logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + + res.writeHead(200, { + "Last-Modified": mtime.toUTCString(), + "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', + "Content-Type": content_type, + "Content-Length": size + }); + fs.createReadStream(checkFile(req)[2]).pipe(res); + // res.write(img); + // res.end(); + + } + // return 304! + else { + logger.info('[statusCode]: 304'); + var resc = '20000'; + var desc = 'Success'; + + logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + + res.writeHead(304, { + // "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', + "Content-Type": content_type, + "Content-Length": size + }); + res.end(); + + } + } else if (request == true && fileReq[0] != true) { + var status_code = fileReq[0].substring(0, 3); + + logger.error('[statusCode]: ' + status_code); + logger.error('[resultCode]: ' + fileReq[0] + ', [developerMessage]: ' + fileReq[1]); + + summaryLog = logger.summary(session, cmd, identity, fileReq[0], fileReq[1]); + summaryLog.addSuccessBlock('client', cmd, 'null', 'Success'); + summaryLog.addErrorBlock('null', 'getFile', fileReq[0], fileReq[1], fileReq[3]); + + logger.statRecv(cmd, fileReq[0]); + logger.statRetn(cmd, fileReq[0]); + logger.detail(req, cmd, null, null); + + res.writeHead(status_code, { + // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', + "Content-Type": 'application/json' + }); + res.write(fileReq[2]); + res.end(); + + } else if (request != true) { + var status_code = request[0].substring(0, 3); + + logger.error('[statusCode]: ' + status_code); + logger.error('[resultCode]: ' + request[0] + ', [developerMessage]: ' + request[1]); + + summaryLog = logger.summary(session, cmd, identity, request[0], request[1]); + summaryLog.addErrorBlock('client', cmd, request[0], request[1], request[3]); + + logger.statRecv(cmd, request[0]); + logger.statRetn(cmd, request[0]); + logger.alarm(cmd, request[0]); + logger.detail(req, cmd, null, null); + + res.writeHead(status_code, { + // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', + "Content-Type": 'application/json' + }); + res.write(request[2]); + res.end(); + + } else { + var resc = '50000'; + var desc = 'System error'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; + + logger.error('[statusCode]: 500'); + logger.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + + summaryLog = logger.summary(session, cmd, identity, resc, desc); + summaryLog.addErrorBlock('client', cmd, resc, desc, 'system_error'); + + logger.statRecv(cmd, resc); + logger.statRetn(cmd, resc); + logger.alarm(cmd, resc); + logger.detail(req, cmd, null, null); + + res.writeHead(500, { + // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', + "Content-Type": 'application/json' + }); + res.write(prompt); + res.end(); + } + summaryLog.flush(); + logger.info('============================='); +}); + +app.use(function(req, res, next) { + writeApplog(req); + var resc = '40400'; + var desc = 'Unknown URL'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + + var session = 'null'; + var cmd = 'getMultimedia'; + var identity = 'null'; + + logger.error('[statusCode]: 404'); + logger.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + + logger.statRecv(cmd, resc); + logger.statRetn(cmd, resc); + logger.alarm(cmd, resc); + logger.detail(req, cmd, null, null); + + summaryLog = logger.summary(session, cmd, identity, resc, desc); + summaryLog.addErrorBlock('client', cmd, resc, desc, 'req.url=' + req.url); + summaryLog.flush(); + + + res.writeHead(404, { + // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', + "Content-Type": 'application/json' + }); + res.write(prompt); + res.end(); + + logger.info('============================='); +}); diff --git a/sc-structure/srfp_genesis_backup.js b/sc-structure/srfp_genesis_backup.js new file mode 100644 index 0000000..231e3f3 --- /dev/null +++ b/sc-structure/srfp_genesis_backup.js @@ -0,0 +1,278 @@ +var express = require('express'); +var path = require('path'); +var app = express(); +var fs = require('fs'); +var util = require('util'); +var crypto = require('crypto'); +var http = require("http"); +var url = require("url"); +//var logger = require('./config/logger'); +var config = require('./config/config'); +var stat = require('./utils/SutisStat'); +var detail = require('./utils/SutisDetail'); +//var summaryLog = require('./utils/SutisLogSummary'); +var logger = require('./utils/SutisLogSummary'); + +function checkReq(req) { + var regex_filetype = /^.*\.(jpg|jpeg|png|mp3|mp4|m4a)$/ig; + var regex_datetime = /(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s\d{1,2}\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s[0-2][0-3]:[0-5][0-9]:[0-5][0-9]\sGMT$/g; + + // var reqModDate = req.get('If-Modified-Since') + // logger.error('>>>>>>>>> ' + req.url); + + if (req.query.name != null && req.query.type != null && req.query.commandId != null) { + if (regex_filetype.test(req.query.name) == true) { + return true; + } + } + + var resc = '40300'; + var desc = 'Missing or invalid parameter'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + return [resc, desc, prompt]; + +}; + +function checkFile(req) { + var path; + if (req.query.type === 'audio') { + path = config.mediaPath.audio + req.query.name; + } else if (req.query.type === 'video') { + path = config.mediaPath.video + req.query.name; + } else if (req.query.type === 'image') { + path = config.mediaPath.image + req.query.name; + } else { + var resc = '40401'; + var desc = 'File not found'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; + return [resc, desc, prompt]; + } + + if (fs.existsSync(path)) { + try { + fs.accessSync(path, fs.constants.R_OK); + var file_name = req.query.name; + return [true, file_name, path]; + } catch (err) { + var resc = '40101'; + var desc = 'Access denied'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; + return [resc, desc, prompt]; + } + } else { + var resc = '40401'; + var desc = 'File not found'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; + return [resc, desc, prompt]; + } +}; + +function checkHeader(req, path_file) { + try { + // var reqModDate = req.headers['If-Modified-Since']; + var reqModDate = req.get('If-Modified-Since') + var stats = fs.statSync(path_file); + var mtime = stats.mtime; + var size = stats['size']; + + if (reqModDate != null) { + reqModDate = new Date(reqModDate); + + logger.info('[If-Modified-Since]: ' + reqModDate.toUTCString()); + logger.info('[Modified-File] : ' + mtime.toUTCString()); + + if (reqModDate.toUTCString() == mtime.toUTCString()) { + logger.info('[Req Header]: If-Modified-Since == Modified File'); + return [304, mtime, size]; + } else { + logger.info('[Req Header]: If-Modified-Since != Modified File'); + return [200, mtime, size]; + } + } else { + logger.info('[Req Header]: No-header: If-Modified-Since'); + logger.info('[Modified-File]: ' + mtime.toUTCString()); + return [200, mtime, size]; + } + } catch (error) { + logger.error('[Error check header!!!]'); + return [200, mtime, size]; + } +}; + +function writeApplog(req) { + + logger.info('[Start getMultimedia Validate Parameter]: ' + 'name: ' + req.query.name + ', type=' + req.query.type + ', commandId=' + req.query.commandId); + logger.info('[incommigHeader: If-Modified-Since]: ' + req.get('If-Modified-Since')); + logger.info('[incomming url]: ' + req.protocol + '://' + req.get('host') + req.originalUrl); +} + +app.listen(3000, function() { + logger.info('============================='); + logger.info('SRFP-Genesis on port 3000!'); +}); + +app.get('/multiMedia.json', function(req, res) { + var sumaryLog; + var request = checkReq(req); + var fileReq = checkFile(req); + + var session = req.query.commandId; + var cmd = 'getMultimedia'; + var identiry = 'null'; + + writeApplog(req); + + // [Check Request] + if (request == true && fileReq[0] == true) { + var headerReq = checkHeader(req, fileReq[2]); + var statusCode = headerReq[0]; + var mtime = headerReq[1]; + var size = headerReq[2]; + + // logger.info('>>> Last-Modified: ' + mtime.toUTCString()); + + var content_type; + var regex_image = /^.*\.(jpg|jpeg)$/ig; + var regex_png = /^.*\.(png)$/ig; + var regex_mp3 = /^.*\.(mp3)$/ig; + var regex_mp4 = /^.*\.(mp4)$/ig; + var regex_m4a = /^.*\.(m4a)$/ig; + + if (regex_image.test(checkFile(req)[1])) { + content_type = 'image/jpeg'; + } else if (regex_png.test(checkFile(req)[1])) { + content_type = 'image/png'; + } else if (regex_mp3.test(checkFile(req)[1])) { + content_type = 'audio/mpeg'; + } else if (regex_mp4.test(checkFile(req)[1])) { + content_type = 'video/mp4'; + } else if (regex_m4a.test(checkFile(req)[1])) { + content_type = 'audio/m4a'; + } + + logger.info('[Path File]: ' + fileReq[2]); + + if (statusCode == 200) { + logger.info('[statusCode]: 200'); + var resc = '20000'; + var desc = 'Success'; + + logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + + sumaryLog = logger.summary(session, cmd, identiry); + sumaryLog.addSuccessBlock('client', cmd, resc, desc); + stat.recv(cmd, resc); + stat.retn(cmd, resc); + detail.write(req, cmd, size, mtime); + + res.writeHead(200, { + "Last-Modified": mtime.toUTCString(), + "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', + "Content-Type": content_type, + "Content-Length": size + }); + fs.createReadStream(checkFile(req)[2]).pipe(res); + // res.write(img); + // res.end(); + + } + // return 304! + else { + logger.info('[statusCode]: 304'); + var resc = '20000'; + var desc = 'Success'; + + logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + + sumaryLog = logger.summary(session, cmd, identiry); + sumaryLog.addSuccessBlock('client', cmd, resc, desc); + stat.recv(cmd, resc); + stat.retn(cmd, resc); + detail.write(req, cmd, size, mtime); + + res.writeHead(304, { + // "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', + "Content-Type": content_type, + "Content-Length": size + }); + res.end(); + + } + } else { + if (request != true) { + logger.error('[resultCode]: ' + request[0] + ', [developerMessage]: ' + request[1]); + sumaryLog = logger.summary(session, cmd, identiry); + sumaryLog.addErrorBlock('client', cmd, request[0], request[1]); + stat.recv(cmd, request[0]); + stat.retn(cmd, request[0]); + detail.write(req, cmd, size, mtime); + + res.writeHead(request[0].substring(0, 3), { + // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', + "Content-Type": 'application/json' + }); + res.write(request[2]); + res.end(); + // res.send(); + + } else if (fileReq != true) { + + logger.error('[resultCode]: ' + fileReq[0] + ', [developerMessage]: ' + fileReq[1]); + sumaryLog = logger.summary(session, cmd, identiry); + sumaryLog.addErrorBlock('client', cmd, fileReq[0], fileReq[1]); + stat.recv(cmd, fileReq[0]); + stat.retn(cmd, fileReq[0]); + detail.write(req, cmd, size, mtime); + + res.writeHead(fileReq[0].substring(0, 3), { + // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', + "Content-Type": 'application/json' + }); + res.write(fileReq[2]); + res.end(); + } else { + var resc = '50000'; + var desc = 'System error'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; + + logger.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + sumaryLog = logger.summary(session, cmd, identiry); + sumaryLog.addErrorBlock('client', cmd, resc, desc); + stat.recv(cmd, resc); + stat.retn(cmd, resc); + detail.write(req, cmd, null, null); + + res.writeHead(500, { + // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', + "Content-Type": 'application/json' + }); + res.write(prompt); + res.end(); + } + } + sumaryLog.flush(); + logger.info('============================='); +}); + +app.use(function(req, res, next) { + writeApplog(req); + var resc = '40400'; + var desc = 'Unknown URL'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + + var session = 'null'; + var cmd = 'getMultimedia'; + var identiry = 'null'; + + logger.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + sumaryLog = logger.summary(session, cmd, identiry); + sumaryLog.addErrorBlock('client', cmd, resc, desc); + stat.recv(cmd, resc); + stat.retn(cmd, resc); + detail.write(req, cmd, null, null); + sumaryLog.flush(); + + res.status(404).send(prompt); + + logger.info('============================='); +}); \ No newline at end of file diff --git a/sc-structure/srfp_genesis_backup_2.js b/sc-structure/srfp_genesis_backup_2.js new file mode 100644 index 0000000..623f227 --- /dev/null +++ b/sc-structure/srfp_genesis_backup_2.js @@ -0,0 +1,316 @@ +var express = require('express'); +var path = require('path'); +var app = express(); +var fs = require('fs'); +// var util = require('util'); +// var crypto = require('crypto'); +// var http = require("http"); +var url = require("url"); +var custom_log = require('./config/logger'); +var config = require('./config/config'); +var stat = require('./utils/SutisStat'); +var alarm = require('./utils/SutisAlarm'); +var detail = require('./utils/SutisDetail'); +var logger = require('./utils/SutisLogSummary'); + +function checkReq(req) { + var regex_filetype = /^.*\.(jpg|jpeg|png|mp3|mp4|m4a)$/ig; + var regex_datetime = /(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s\d{1,2}\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\sGMT$/g; + var regex_commandId = /^\d+$/g; + + var reqModDate = req.get('If-Modified-Since'); + var errorCase = null; + // logger.error('>>>>>>>>> ' + req.url); + + if (reqModDate != null) { + // logger.error('Req Header Not null'); + if (!regex_datetime.test(reqModDate)) { + logger.error('[invalid] date format: ' + reqModDate); + errorCase = 'req.If-Modified-Since=' + reqModDate; + + var resc = '40300'; + var desc = 'Missing or invalid parameter'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + var missingInvalid = errorCase; + return [resc, desc, prompt, missingInvalid]; + } + } + + if (req.query.name && req.query.type && req.query.commandId) { + if (regex_filetype.test(req.query.name)) { + return true; + } + } + + if (!req.query.name) { + logger.error('[missing or invalid]: name'); + errorCase = 'req.name=' + req.query.name; + } else if (!req.query.type) { + logger.error('[missing or invalid]: type'); + errorCase = 'req.type=' + req.query.type; + } else if (!req.query.commandId) { + logger.error('[missing or invalid]: commandId'); + errorCase = 'req.commandId=' + req.query.commandId; + } + + var resc = '40300'; + var desc = 'Missing or invalid parameter'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + var missingInvalid = errorCase; + return [resc, desc, prompt, missingInvalid]; + +}; + +function checkFile(req) { + var path; + if (req.query.type === 'audio') { + path = config.mediaPath.audio + req.query.name; + } else if (req.query.type === 'video') { + path = config.mediaPath.video + req.query.name; + } else if (req.query.type === 'image') { + path = config.mediaPath.image + req.query.name; + } else { + var resc = '40401'; + var desc = 'File not found'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + var missingInvalid = 'req.name=' + req.query.name; + return [resc, desc, prompt, missingInvalid]; + } + + if (fs.existsSync(path)) { + try { + fs.accessSync(path, fs.constants.R_OK); + var file_name = req.query.name; + return [true, file_name, path]; + } catch (err) { + var resc = '40101'; + var desc = 'Access denied'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + var missingInvalid = 'req.name=' + req.query.name; + return [resc, desc, prompt, missingInvalid]; + } + } else { + var resc = '40401'; + var desc = 'File not found'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + var missingInvalid = 'req.name=' + req.query.name; + return [resc, desc, prompt, missingInvalid]; + } +}; + +function checkHeader(req, path_file) { + try { + // var reqModDate = req.headers['If-Modified-Since']; + var reqModDate = req.get('If-Modified-Since'); + var stats = fs.statSync(path_file); + var mtime = stats.mtime; + var size = stats['size']; + + if (reqModDate != null) { + reqModDate = new Date(reqModDate); + + logger.info('[If-Modified-Since]: ' + reqModDate.toUTCString()); + logger.info('[Modified-File] : ' + mtime.toUTCString()); + + if (reqModDate.toUTCString() == mtime.toUTCString()) { + logger.info('[Req Header]: If-Modified-Since == Modified File'); + return [304, mtime, size]; + } else { + logger.info('[Req Header]: If-Modified-Since != Modified File'); + return [200, mtime, size]; + } + } else { + logger.info('[Req Header]: No-header: If-Modified-Since'); + logger.info('[Modified-File]: ' + mtime.toUTCString()); + return [200, mtime, size]; + } + } catch (error) { + logger.error('[Error check header!!!]'); + return [200, mtime, size]; + } +}; + +function writeApplog(req) { + + logger.info('[Start getMultimedia Validate Parameter]: ' + 'name: ' + req.query.name + ', type=' + req.query.type + ', commandId=' + req.query.commandId); + logger.info('[incommigHeader: If-Modified-Since]: ' + req.get('If-Modified-Since')); + logger.info('[incomming url]: ' + req.protocol + '://' + req.get('host') + req.originalUrl); +} + +app.listen(3000, function () { + logger.info('============================='); + logger.info('SRFP-Genesis on port 3000!'); +}); + +app.get('/multiMedia.json', function (req, res) { + var sumaryLog; + var request = checkReq(req); + var fileReq = checkFile(req); + // var headerReq = checkHeader(req, fileReq[2]); + + var session = req.query.commandId; + var cmd = 'getMultimedia'; + var identity = ''; + var reqfile = req.query.name; + + writeApplog(req); + + // [Check Request] + if (request == true && fileReq[0] == true) { + var resc = '20000'; + var desc = 'Success'; + + var headerReq = checkHeader(req, fileReq[2]); + var statusCode = headerReq[0]; + var mtime = headerReq[1]; + var size = headerReq[2]; + + sumaryLog = logger.summary(session, cmd, identity, resc, desc); + sumaryLog.addSuccessBlock('client', cmd, 'null', 'Success'); + sumaryLog.addSuccessBlock('null', 'getFile', resc, desc); + stat.recv(cmd, resc); + stat.retn(cmd, resc); + detail.write(req, cmd, size, mtime.toUTCString()); + + var content_type; + var regex_image = /^.*\.(jpg|jpeg)$/ig; + var regex_png = /^.*\.(png)$/ig; + var regex_mp3 = /^.*\.(mp3)$/ig; + var regex_mp4 = /^.*\.(mp4)$/ig; + var regex_m4a = /^.*\.(m4a)$/ig; + + if (regex_image.test(checkFile(req)[1])) { + content_type = 'image/jpeg'; + } else if (regex_png.test(checkFile(req)[1])) { + content_type = 'image/png'; + } else if (regex_mp3.test(checkFile(req)[1])) { + content_type = 'audio/mpeg'; + } else if (regex_mp4.test(checkFile(req)[1])) { + content_type = 'video/mp4'; + } else if (regex_m4a.test(checkFile(req)[1])) { + content_type = 'audio/m4a'; + } + + logger.info('[Path File]: ' + fileReq[2]); + + if (statusCode == 200) { + logger.info('[statusCode]: 200'); + var resc = '20000'; + var desc = 'Success'; + + logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + + res.writeHead(200, { + "Last-Modified": mtime.toUTCString(), + "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', + "Content-Type": content_type, + "Content-Length": size + }); + fs.createReadStream(checkFile(req)[2]).pipe(res); + // res.write(img); + // res.end(); + + } + // return 304! + else { + logger.info('[statusCode]: 304'); + var resc = '20000'; + var desc = 'Success'; + + logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + + res.writeHead(304, { + // "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', + "Content-Type": content_type, + "Content-Length": size + }); + res.end(); + + } + } else if (request == true && fileReq[0] != true) { + sumaryLog = logger.summary(session, cmd, identity, fileReq[0], fileReq[1]); + sumaryLog.addSuccessBlock('client', cmd, 'null', 'Success'); + sumaryLog.addErrorBlock('null', 'getFile', fileReq[0], fileReq[1], fileReq[3]); + stat.recv(cmd, fileReq[0]); + stat.retn(cmd, fileReq[0]); + detail.write(req, cmd, null, null); + + } else if (request != true) { + var status_code = request[0].substring(0, 3); + logger.error('[statusCode]: ' + status_code); + logger.error('[resultCode]: ' + request[0] + ', [developerMessage]: ' + request[1]); + sumaryLog = logger.summary(session, cmd, identity, request[0], request[1]); + sumaryLog.addErrorBlock('client', cmd, request[0], request[1], request[3]); + stat.recv(cmd, request[0]); + stat.retn(cmd, request[0]); + alarm.recv(cmd, request[0]); + detail.write(req, cmd, null, null); + + res.writeHead(status_code, { + // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', + "Content-Type": 'application/json' + }); + res.write(request[2]); + res.end(); + + + } else { + var resc = '50000'; + var desc = 'System error'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; + + logger.error('[statusCode]: 500'); + logger.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + sumaryLog = logger.summary(session, cmd, identity, resc, desc); + sumaryLog.addErrorBlock('client', cmd, resc, desc, 'system_error'); + stat.recv(cmd, resc); + stat.retn(cmd, resc); + alarm.recv(cmd, resc); + detail.write(req, cmd, null, null); + + res.writeHead(500, { + // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', + "Content-Type": 'application/json' + }); + res.write(prompt); + res.end(); + } + sumaryLog.flush(); + logger.info('============================='); +}); + +app.use(function (req, res, next) { + writeApplog(req); + var resc = '40400'; + var desc = 'Unknown URL'; + var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; + + var session = 'null'; + var cmd = 'getMultimedia'; + var identity = 'null'; + + var summaryLog; + + custom_log.error('[statusCode]: 404'); + custom_log.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); + + + custom_log.statRecv(cmd, resc); + custom_log.statRetn(cmd, resc); + custom_log.alarm(cmd, resc); + + summaryLog = custom_log.summaryLog(session, cmd, identity, resc, desc); + summaryLog.addErrorBlock('client', cmd, resc, desc, 'req.url=' + req.url); + summaryLog.flush(); + + custom_log.detail(req, cmd, null, null); + + res.writeHead(404, { + "Content-Type": 'application/json' + }); + res.write(prompt); + res.end(); + + // logger.info('============================='); + custom_log.info('============================='); +}); diff --git a/sc-structure/utils/SutisAlarm.js b/sc-structure/utils/SutisAlarm.js new file mode 100644 index 0000000..3d35c49 --- /dev/null +++ b/sc-structure/utils/SutisAlarm.js @@ -0,0 +1,35 @@ +'use strict'; +var logger = require('./SutisLogSummary'); +var alarm ={}; +var nodeName = 'SRFP-Genesis'; +// var statTbl = require('../config/config'); + +alarm.recv=function(cmd, errCode){ + + var alarmName = nodeName; + if (errCode == 40400) { + alarmName = alarmName + ' Received Unknown URL Request'; + }else if (errCode == 40300) { + alarmName = alarmName + ' Received Bad '+ cmd + ' Request'; + } + else{ + // statName = statName + ' Received ' + cmd + ' err ' + statDesc; + } + logger.alarm(alarmName); +}; + +// stat.retn=function(cmd, errCode){ + +// var statName = nodeName; +// if(errCode == 20000){ +// statName = statName + ' Returned ' + cmd + ' Success'; +// } else if (errCode == 40400) { +// statName = statName + ' Returned Unknown URL'; +// } else if (errCode == 40300 || errCode == 40401 || errCode == 40101) { +// statName = statName + ' Returned ' + cmd + ' Error'; +// } else{ +// // statName = statName + ' Received ' + cmd + ' err ' + statDesc; +// } +// logger.stat(statName); +// }; +module.exports = alarm; diff --git a/sc-structure/utils/SutisDetail.js b/sc-structure/utils/SutisDetail.js new file mode 100644 index 0000000..c2566d1 --- /dev/null +++ b/sc-structure/utils/SutisDetail.js @@ -0,0 +1,70 @@ +'use strict'; +var logger = require('./SutisLogSummary'); +var detail ={}; +var nodeName = 'SRFP-Genesis'; +var dateFormat = require('dateformat'); +// var dateFMT = 'l'; +var dateFMT = 'yyyymmdd HH:MM:ss.l'; + +function dateTimeReq(dateFMT) { + var date = new Date(); + var dateMs = 'l'; + var dateFor = dateFormat(date, dateFMT); + var dateForms = dateFormat(date, dateMs); + return [dateFor, dateForms] +} + +function dateTimeRes(dateFMT) { + // var time = new Date(); + // var dateTime = formatDate(new Date(), dateFMT) + // return [dateTime,time.getTime()]; + + var date = new Date(); + var dateMs = 'l'; + var dateFor = dateFormat(date, dateFMT); + var dateForms = dateFormat(date, dateMs); + return [dateFor, dateForms] +} + +detail.write=function(req, cmd, size, mtime){ + var requestTime = dateTimeReq(dateFMT); + var responseTime = dateTimeRes(dateFMT); + var processTime = parseInt(responseTime[1]-requestTime[1]); + + var appDetail = '{'+ + '"' + nodeName + '.Details' + '":{' + + '"Session":"'+ req.query.commandId +'",' + + '"Scenario":"'+ cmd +'",' + + '"Identity":"",' + + '"InputTimeStamp":"'+ requestTime[0] +'",' + + '"Input":' + '[' + + '{'+ + '"Event":"'+ nodeName +'.'+ cmd +'",' + + '"Type":"REQ",' + + '"RawData":"' + req.protocol + '://' + req.get('host') + req.originalUrl +'",' + + '"Data":' + '{'+ + '"Name":"'+ req.query.name + '",' + + '"Type":"'+ req.query.type + '",' + + '"CommandId":"'+ req.query.commandId + '"' + + '}' + + '}'+ + '],'+ + '"OutputTimeStamp":"'+ responseTime[0] +'",' + + '"Output":' + '[' + + '{'+ + '"Event":"'+ nodeName +'.'+ cmd +'",' + + '"Type":"' + 'RES",' + + '"RawData":"'+ req.query.name +'",' + + '"Data":' + '{'+ + '"Size":"'+ size + '",' + + '"Modified":"'+ mtime + '"' + + '}' + + '}'+ + '],'+ + '"ProcessingTime":"'+ processTime +' ms"' + + '}' + + '}' + logger.detail(appDetail); +}; + +module.exports = detail; diff --git a/sc-structure/utils/SutisLog.js b/sc-structure/utils/SutisLog.js new file mode 100644 index 0000000..d3bd728 --- /dev/null +++ b/sc-structure/utils/SutisLog.js @@ -0,0 +1,288 @@ +var fs = require('fs'); +var os = require("os"); +var config = null; +var logCfg = require('../config/config'); + +var dateFormat = require('dateformat'); + +function SutisLog() { +} +function getDateTimeFormat(time) { + + var years = new Date().getFullYear(); + var months = new Date().getMonth() + 1; + var day = new Date().getDate(); + var hours = new Date().getHours(); + var mins = new Date().getMinutes(); + var monthFormatted = months < 10 ? "0" + months : months; + var dayFormatted = day < 10 ? "0" + day : day; + var hourFormatted = hours < 10 ? "0" + hours : hours; + var result = ""; + var minFormatted = null; + var div = null; + + if ((mins % time) > 0) { + minFormatted = ((Math.floor(mins / time)) * time); + } else { + minFormatted = mins; + } + + minFormatted = minFormatted < 10 ? "0" + minFormatted : minFormatted; + result = '' + years + monthFormatted + dayFormatted + hourFormatted + minFormatted; + return result; +} + +function getDateTimeLogFormat() { + var dates = new Date(); + var years = dates.getFullYear(); + var months = dates.getMonth() + 1; + var day = dates.getDate(); + var hours = dates.getHours(); + var minutes = dates.getMinutes(); + var second = new Date().getSeconds(); + var millisecs = dates.getMilliseconds(); + var monthFormatted = months < 10 ? "0" + months : months; + var dayFormatted = day < 10 ? "0" + day : day; + var hourFormatted = hours < 10 ? "0" + hours : hours; + var minFormatted = minutes < 10 ? "0" + minutes : minutes; + var secFormatted = second < 10 ? "0" + second : second; + var milliFormatted = null; + + if (millisecs < 10) { + milliFormatted = "00" + millisecs; + } + else if (millisecs < 100) { + milliFormatted = "0" + millisecs; + } + else { + milliFormatted = millisecs; + } + + // return '[' + years + '-' + monthFormatted + '-' + dayFormatted + ' ' + hourFormatted + ':' + minFormatted + ':' + secFormatted + ':' + milliFormatted + ']'; + var detail = years + monthFormatted + dayFormatted + ' ' + hourFormatted + ':' + minFormatted + ':' + secFormatted + '|' + os.hostname() + '|' + logCfg.log.projectName + '|'; + return detail; +} + +function getLogFileName() { + return os.hostname() + '_' + logCfg.log.projectName + '_' + getDateTimeFormat(logCfg.log.logTime) + '.log'; +} +function getStatFileName() { + return os.hostname() + '_' + logCfg.log.projectName + '_' + getDateTimeFormat(logCfg.log.statTime) + '.stat'; +} +function getAlarmFileName() { + return os.hostname() + '_' + logCfg.log.projectName + '_' + getDateTimeFormat(logCfg.log.alarmTime) + '.stat'; +} +function getSummaryFileName() { + return os.hostname() + '_' + logCfg.log.projectName + '_' + getDateTimeFormat(logCfg.log.summaryTime) + '.summary'; +} +function getDetailFileName() { + return os.hostname() + '_' + logCfg.log.projectName + '_' + getDateTimeFormat(logCfg.log.detailTime) + '.detail'; +} + +SutisLog.prototype.info = function (logMessage) { + var stream = fs.createWriteStream(logCfg.log.logPath + '/' + getLogFileName(), { 'flags': 'a' }); + stream.once('open', function (fd) { + stream.write(getDateTimeLogFormat() + ' - info: ' + logMessage + '\n'); + stream.end(); + }); +}; + +SutisLog.prototype.error = function (logMessage) { + var stream = fs.createWriteStream(logCfg.log.logPath + '/' + getLogFileName(), { 'flags': 'a' }); + + stream.once('open', function (fd) { + stream.write(getDateTimeLogFormat() + ' - error: ' + logMessage + '\n'); + stream.end(); + }); +}; +// session, cmd, identity, resultCode, resultDescription +SutisLog.prototype.summaryLog = function (session, cmd, identity, resultCode, resultDescription) { + var dateFMT = 'yyyymmdd HH:MM:ss'; + + var stream = fs.createWriteStream(logCfg.log.summaryPath + '/' + getSummaryFileName(), { 'flags': 'a' }); + + // var test = { + // x1: function() { + // stream.once('open', function (fd) { + // stream.write(getDateTimeLogFormat() + ' - summary: ' + 'txt-+-+-+dhjsdhfjkshfjsd' + '\n'); + // stream.end(); + // }); + // } + // } + // return test; + + var summaryLog = { + requestTime: new Date(), + session: session, + initInvoke: '', //only equinox platform + cmd: cmd, + identity: identity, + resultCode: resultCode, + resultDescription: resultDescription, + blockDetail: [], + + addSuccessBlock: function(node, cmd, statusCode, detail){ + this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ statusCode+'; '+detail+'(1)]]'); + }, + + addErrorBlock: function(node, cmd, statusCode, detail, errorDetail){ + this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ statusCode+'; '+detail+'(1)]]'); + }, + + flush : function(){ + var endTime = new Date(); + + var txt = dateFormat(this.requestTime, dateFMT) + '|'; + txt += this.session +'|'; + txt += this.initInvoke +'|' + txt += this.cmd +'|' + txt += this.identity +'|' + txt += this.resultCode +'|' + txt += this.resultDescription +'|' + txt += this.blockDetail +'|' + txt += dateFormat(endTime, dateFMT) +'|' + txt += (endTime.getTime() - this.requestTime.getTime()); + + stream.once('open', function (fd) { + stream.write(txt + '\n'); + stream.end(); + }); + + } + }; + return summaryLog; +}; + +SutisLog.prototype.detail = function (req, cmd, size, mtime) { + var stream = fs.createWriteStream(logCfg.log.detailPath + '/' + getDetailFileName(), { 'flags': 'a' }); + + var nodeName = 'SRFP-Genesis'; + var dateFormat = require('dateformat'); + // var dateFMT = 'l'; + var dateFMT = 'yyyymmdd HH:MM:ss.l'; + + function dateTimeReq(dateFMT) { + var date = new Date(); + var dateMs = 'l'; + var dateFor = dateFormat(date, dateFMT); + var dateForms = dateFormat(date, dateMs); + return [dateFor, dateForms] + } + + function dateTimeRes(dateFMT) { + // var time = new Date(); + // var dateTime = formatDate(new Date(), dateFMT) + // return [dateTime,time.getTime()]; + + var date = new Date(); + var dateMs = 'l'; + var dateFor = dateFormat(date, dateFMT); + var dateForms = dateFormat(date, dateMs); + return [dateFor, dateForms] + } + + var requestTime = dateTimeReq(dateFMT); + var responseTime = dateTimeRes(dateFMT); + var processTime = parseInt(responseTime[1] - requestTime[1]); + + var appDetail = '{' + + '"' + nodeName + '.Details' + '":{' + + '"Session":"' + req.query.commandId + '",' + + '"Scenario":"' + cmd + '",' + + '"Identity":"",' + + '"InputTimeStamp":"' + requestTime[0] + '",' + + '"Input":' + '[' + + '{' + + '"Event":"' + nodeName + '.' + cmd + '",' + + '"Type":"REQ",' + + '"RawData":"' + req.protocol + '://' + req.get('host') + req.originalUrl + '",' + + '"Data":' + '{' + + '"Name":"' + req.query.name + '",' + + '"Type":"' + req.query.type + '",' + + '"CommandId":"' + req.query.commandId + '"' + + '}' + + '}' + + '],' + + '"OutputTimeStamp":"' + responseTime[0] + '",' + + '"Output":' + '[' + + '{' + + '"Event":"' + nodeName + '.' + cmd + '",' + + '"Type":"' + 'RES",' + + '"RawData":"' + req.query.name + '",' + + '"Data":' + '{' + + '"Size":"' + size + '",' + + '"Modified":"' + mtime + '"' + + '}' + + '}' + + '],' + + '"ProcessingTime":"' + processTime + ' ms"' + + '}' + + '}'; + + stream.once('open', function (fd) { + stream.write(getDateTimeLogFormat() + appDetail + '\n'); + stream.end(); + }); +}; + +SutisLog.prototype.statRecv = function (cmd, errCode) { + var nodeName = 'SRFP-Genesis'; + var stream = fs.createWriteStream(logCfg.log.statPath + '/' + getStatFileName(), { 'flags': 'a' }); + + var statName = nodeName; + if (errCode == 20000 || errCode == 40401 || errCode == 40101) { + statName = statName + ' Received Request'; + } else if (errCode == 40400) { + statName = statName + ' Received Unknown URL Request'; + } else if (errCode == 40300) { + statName = statName + ' Received Bad ' + cmd + ' Request'; + } + else { + statName = statName + ' Received ' + cmd + ' error'; + } + stream.once('open', function (fd) { + stream.write(getDateTimeLogFormat() + statName + '\n'); + stream.end(); + }); +}; + +SutisLog.prototype.statRetn = function (cmd, errCode) { + var nodeName = 'SRFP-Genesis'; + var stream = fs.createWriteStream(logCfg.log.statPath + '/' + getStatFileName(), { 'flags': 'a' }); + + var statName = nodeName; + if (errCode == 20000) { + statName = statName + ' Returned ' + cmd + ' Success'; + } else if (errCode == 40400) { + statName = statName + ' Returned Unknown URL'; + } else if (errCode == 40300 || errCode == 40401 || errCode == 40101 || errCode == 50000) { + statName = statName + ' Returned ' + cmd + ' Error'; + } else { + // statName = statName + ' Returned ' + cmd + ' err ' + statDesc; + } + stream.once('open', function (fd) { + stream.write(getDateTimeLogFormat() + statName + '\n'); + stream.end(); + }); +}; + +SutisLog.prototype.alarm = function (cmd, errCode) { + var nodeName = 'SRFP-Genesis'; + var stream = fs.createWriteStream(logCfg.log.alarmPath + '/' + getAlarmFileName(), { 'flags': 'a' }); + + var alarmName = nodeName; + if (errCode == 40400) { + alarmName = alarmName + ' Received Unknown URL Request'; + } else if (errCode == 40300) { + alarmName = alarmName + ' Received Bad ' + cmd + ' Request'; + } + else { + // alarmName = alarmName + ' Received ' + cmd + ' err ' + statDesc; + } + stream.once('open', function (fd) { + stream.write(getDateTimeLogFormat() + alarmName + '\n'); + stream.end(); + }); +}; +module.exports = SutisLog; + diff --git a/sc-structure/utils/SutisLogSummary.js b/sc-structure/utils/SutisLogSummary.js new file mode 100644 index 0000000..04921ba --- /dev/null +++ b/sc-structure/utils/SutisLogSummary.js @@ -0,0 +1,75 @@ +var log4js = require('log4js'); +log4js.configure('./config/log4js.json'); + +var log = log4js.getLogger('serverLog'); +var stat = log4js.getLogger('statLog'); +var alarm = log4js.getLogger('alarmLog'); +var detail = log4js.getLogger('datailLog'); +var summary = log4js.getLogger('summaryLog'); + +var dateFMT = 'yyyymmdd HH:MM:ss'; +var dateFormat = require('dateformat'); + + +var l = {}; +l.debug = function(_log){ + log.debug(_log); +} +l.info = function(_log){ + log.info(_log); +} +l.warn = function(_log){ + log.warn(_log); +} +l.error = function(_log){ + log.error(_log); +} +l.stat = function(statName){ + stat.info(statName); +} +l.alarm = function(alarmName){ + alarm.info(alarmName); +} +l.detail = function(appDetail){ + detail.info(appDetail); +} + +l.summary = function(session, cmd, identity, resultCode, resultDescription){ + var summaryLog = { + requestTime: new Date(), + session: session, + initInvoke: '', //only equinox platform + cmd: cmd, + identity: identity, + resultCode: resultCode, + resultDescription: resultDescription, + blockDetail: [], + + addSuccessBlock: function(node, cmd, statusCode, detail){ + this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ statusCode+'; '+detail+'(1)]]'); + }, + + addErrorBlock: function(node, cmd, statusCode, detail, errorDetail){ + this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ statusCode+'; '+detail+'(1)]]'); + }, + + flush : function(){ + var endTime = new Date(); + + var txt = dateFormat(this.requestTime, dateFMT) + '|'; + txt += this.session +'|'; + txt += this.initInvoke +'|' + txt += this.cmd +'|' + txt += this.identity +'|' + txt += this.resultCode +'|' + txt += this.resultDescription +'|' + txt += this.blockDetail +'|' + txt += dateFormat(endTime, dateFMT) +'|' + txt += (endTime.getTime() - this.requestTime.getTime()); + + summary.info(txt); + } + }; + return summaryLog; +} +module.exports = l; \ No newline at end of file diff --git a/sc-structure/utils/SutisStat.js b/sc-structure/utils/SutisStat.js new file mode 100644 index 0000000..57646e4 --- /dev/null +++ b/sc-structure/utils/SutisStat.js @@ -0,0 +1,64 @@ +'use strict'; +var logger = require('./SutisLogSummary'); +var stat ={}; +var nodeName = 'SRFP-Genesis'; +// var statTbl = require('../config/config'); + +// stat.sendReq=function(cmd){ +// var statName = nodeName + ' send ' + cmd + ' req.'; +// logger.stat(statName); +// }; + +// stat.sendRes=function(cmd, errCode){ +// var statDesc; +// if(!errCode){ +// errCode = "50000"; + +// }else{ +// statDesc = statTbl[errCode]; +// if(!statDesc){ +// errCode = "90000"; +// } +// } +// statDesc = statTbl[errCode]; + +// var statName = nodeName; +// if(errCode == '20000'){ +// statName = statName + ' send ' + cmd + ' success res '+ errCode +'.'; +// }else{ +// statName = statName + ' send ' + cmd + ' err ' + statDesc.toLowerCase() +' res '+ errCode +'.'; +// } +// logger.stat(statName); +// }; + +stat.recv=function(cmd, errCode){ + + var statName = nodeName; + if(errCode == 20000 || errCode == 40401 || errCode == 40101){ + statName = statName + ' Received Request'; + } else if (errCode == 40400) { + statName = statName + ' Received Unknown URL Request'; + }else if (errCode == 40300) { + statName = statName + ' Received Bad '+ cmd + ' Request'; + } + else{ + statName = statName + ' Received ' + cmd + ' error'; + } + logger.stat(statName); +}; + +stat.retn=function(cmd, errCode){ + + var statName = nodeName; + if(errCode == 20000){ + statName = statName + ' Returned ' + cmd + ' Success'; + } else if (errCode == 40400) { + statName = statName + ' Returned Unknown URL'; + } else if (errCode == 40300 || errCode == 40401 || errCode == 40101 || errCode == 50000) { + statName = statName + ' Returned ' + cmd + ' Error'; + } else{ + // statName = statName + ' Returned ' + cmd + ' err ' + statDesc; + } + logger.stat(statName); +}; +module.exports = stat; diff --git a/sc-structure/views/error.jade b/sc-structure/views/error.jade new file mode 100644 index 0000000..43a41a7 --- /dev/null +++ b/sc-structure/views/error.jade @@ -0,0 +1,5 @@ +extends layout + +block content + h1= message + h2= error.status diff --git a/sc-structure/views/index.jade b/sc-structure/views/index.jade new file mode 100644 index 0000000..3d63b9a --- /dev/null +++ b/sc-structure/views/index.jade @@ -0,0 +1,5 @@ +extends layout + +block content + h1= title + p Welcome to #{title} diff --git a/sc-structure/views/layout.jade b/sc-structure/views/layout.jade new file mode 100644 index 0000000..15af079 --- /dev/null +++ b/sc-structure/views/layout.jade @@ -0,0 +1,7 @@ +doctype html +html + head + title= title + link(rel='stylesheet', href='/stylesheets/style.css') + body + block content diff --git a/srfp_genesis.js b/srfp_genesis.js deleted file mode 100644 index f4e2b63..0000000 --- a/srfp_genesis.js +++ /dev/null @@ -1,323 +0,0 @@ -var express = require('express'); -var path = require('path'); -var app = express(); -var fs = require('fs'); -var logger = require('./config/logger'); -var config = require('./config/config'); - -function checkReq(req) { - var regex_filetype = /^.*\.(jpg|jpeg|png|mp3|mp4|m4a)$/ig; - var regex_datetime = /(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s\d{1,2}\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\sGMT$/g; - var regex_commandId = /^\d+$/g; - - var reqModDate = req.get('If-Modified-Since'); - var errorCase = null; - // logger.error('>>>>>>>>> ' + req.url); - - if (reqModDate != null) { - // logger.error('Req Header Not null'); - if (!regex_datetime.test(reqModDate)) { - logger.error('[invalid] date format: ' + reqModDate); - errorCase = 'req.If-Modified-Since=' + reqModDate; - - var resc = '40300'; - var desc = 'Missing or invalid parameter'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - var missingInvalid = errorCase; - return [resc, desc, prompt, missingInvalid]; - } - } - - if (req.query.name && req.query.type && req.query.commandId) { - if (regex_filetype.test(req.query.name)) { - return true; - } - } - - if (!req.query.name) { - logger.error('[missing or invalid]: name'); - errorCase = 'req.name=' + req.query.name; - } else if (!req.query.type) { - logger.error('[missing or invalid]: type'); - errorCase = 'req.type=' + req.query.type; - } else if (!req.query.commandId) { - logger.error('[missing or invalid]: commandId'); - errorCase = 'req.commandId=' + req.query.commandId; - } - - var resc = '40300'; - var desc = 'Missing or invalid parameter'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - var missingInvalid = errorCase; - return [resc, desc, prompt, missingInvalid]; - -}; - -function checkFile(req) { - var path; - if (req.query.type === 'audio') { - path = config.mediaPath.audio + req.query.name; - } else if (req.query.type === 'video') { - path = config.mediaPath.video + req.query.name; - } else if (req.query.type === 'image') { - path = config.mediaPath.image + req.query.name; - } else { - var resc = '40401'; - var desc = 'File not found'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - var missingInvalid = 'req.name=' + req.query.name; - return [resc, desc, prompt, missingInvalid]; - } - - if (fs.existsSync(path)) { - try { - fs.accessSync(path, fs.constants.R_OK); - var file_name = req.query.name; - return [true, file_name, path]; - } catch (err) { - var resc = '40101'; - var desc = 'Access denied'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - var missingInvalid = 'req.name=' + req.query.name; - return [resc, desc, prompt, missingInvalid]; - } - } else { - var resc = '40401'; - var desc = 'File not found'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - var missingInvalid = 'req.name=' + req.query.name; - return [resc, desc, prompt, missingInvalid]; - } -}; - -function checkHeader(req, path_file) { - try { - // var reqModDate = req.headers['If-Modified-Since']; - var reqModDate = req.get('If-Modified-Since'); - var stats = fs.statSync(path_file); - var mtime = stats.mtime; - var size = stats['size']; - - if (reqModDate != null) { - reqModDate = new Date(reqModDate); - - logger.info('[If-Modified-Since]: ' + reqModDate.toUTCString()); - logger.info('[Modified-File] : ' + mtime.toUTCString()); - - if (reqModDate.toUTCString() == mtime.toUTCString()) { - logger.info('[Req Header]: If-Modified-Since == Modified File'); - return [304, mtime, size]; - } else { - logger.info('[Req Header]: If-Modified-Since != Modified File'); - return [200, mtime, size]; - } - } else { - logger.info('[Req Header]: No-header: If-Modified-Since'); - logger.info('[Modified-File]: ' + mtime.toUTCString()); - return [200, mtime, size]; - } - } catch (error) { - logger.error('[Error check header!!!]'); - return [200, mtime, size]; - } -}; - -function writeApplog(req) { - - logger.info('[Start getMultimedia Validate Parameter]: ' + 'name: ' + req.query.name + ', type=' + req.query.type + ', commandId=' + req.query.commandId); - logger.info('[incommigHeader: If-Modified-Since]: ' + req.get('If-Modified-Since')); - logger.info('[incomming url]: ' + req.protocol + '://' + req.get('host') + req.originalUrl); -} - -app.listen(8080, function() { - logger.info('============================='); - logger.info('SRFP-Genesis on port 8080!'); -}); - -app.get('/multiMedia.json', function(req, res) { - var summaryLog; - var request = checkReq(req); - var fileReq = checkFile(req); - // var headerReq = checkHeader(req, fileReq[2]); - - var session = req.query.commandId; - var cmd = 'getMultimedia'; - var identity = ''; - var reqfile = req.query.name; - - writeApplog(req); - - // [Check Request] - if (request == true && fileReq[0] == true) { - var resc = '20000'; - var desc = 'Success'; - - var headerReq = checkHeader(req, fileReq[2]); - var statusCode = headerReq[0]; - var mtime = headerReq[1]; - var size = headerReq[2]; - - summaryLog = logger.summary(session, cmd, identity, resc, desc); - summaryLog.addSuccessBlock('client', cmd, 'null', 'Success'); - summaryLog.addSuccessBlock('null', 'getFile', resc, desc); - - logger.statRecv(cmd, resc); - logger.statRetn(cmd, resc); - logger.detail(req, cmd, size, mtime.toUTCString()); - - var content_type; - var regex_image = /^.*\.(jpg|jpeg)$/ig; - var regex_png = /^.*\.(png)$/ig; - var regex_mp3 = /^.*\.(mp3)$/ig; - var regex_mp4 = /^.*\.(mp4)$/ig; - var regex_m4a = /^.*\.(m4a)$/ig; - - if (regex_image.test(checkFile(req)[1])) { - content_type = 'image/jpeg'; - } else if (regex_png.test(checkFile(req)[1])) { - content_type = 'image/png'; - } else if (regex_mp3.test(checkFile(req)[1])) { - content_type = 'audio/mpeg'; - } else if (regex_mp4.test(checkFile(req)[1])) { - content_type = 'video/mp4'; - } else if (regex_m4a.test(checkFile(req)[1])) { - content_type = 'audio/m4a'; - } - - logger.info('[Path File]: ' + fileReq[2]); - - if (statusCode == 200) { - logger.info('[statusCode]: 200'); - var resc = '20000'; - var desc = 'Success'; - - logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - - res.writeHead(200, { - "Last-Modified": mtime.toUTCString(), - "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', - "Content-Type": content_type, - "Content-Length": size - }); - fs.createReadStream(checkFile(req)[2]).pipe(res); - // res.write(img); - // res.end(); - - } - // return 304! - else { - logger.info('[statusCode]: 304'); - var resc = '20000'; - var desc = 'Success'; - - logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - - res.writeHead(304, { - // "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', - "Content-Type": content_type, - "Content-Length": size - }); - res.end(); - - } - } else if (request == true && fileReq[0] != true) { - var status_code = fileReq[0].substring(0, 3); - - logger.error('[statusCode]: ' + status_code); - logger.error('[resultCode]: ' + fileReq[0] + ', [developerMessage]: ' + fileReq[1]); - - summaryLog = logger.summary(session, cmd, identity, fileReq[0], fileReq[1]); - summaryLog.addSuccessBlock('client', cmd, 'null', 'Success'); - summaryLog.addErrorBlock('null', 'getFile', fileReq[0], fileReq[1], fileReq[3]); - - logger.statRecv(cmd, fileReq[0]); - logger.statRetn(cmd, fileReq[0]); - logger.detail(req, cmd, null, null); - - res.writeHead(status_code, { - // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', - "Content-Type": 'application/json' - }); - res.write(fileReq[2]); - res.end(); - - } else if (request != true) { - var status_code = request[0].substring(0, 3); - - logger.error('[statusCode]: ' + status_code); - logger.error('[resultCode]: ' + request[0] + ', [developerMessage]: ' + request[1]); - - summaryLog = logger.summary(session, cmd, identity, request[0], request[1]); - summaryLog.addErrorBlock('client', cmd, request[0], request[1], request[3]); - - logger.statRecv(cmd, request[0]); - logger.statRetn(cmd, request[0]); - logger.alarm(cmd, request[0]); - logger.detail(req, cmd, null, null); - - res.writeHead(status_code, { - // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', - "Content-Type": 'application/json' - }); - res.write(request[2]); - res.end(); - - } else { - var resc = '50000'; - var desc = 'System error'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; - - logger.error('[statusCode]: 500'); - logger.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - - summaryLog = logger.summary(session, cmd, identity, resc, desc); - summaryLog.addErrorBlock('client', cmd, resc, desc, 'system_error'); - - logger.statRecv(cmd, resc); - logger.statRetn(cmd, resc); - logger.alarm(cmd, resc); - logger.detail(req, cmd, null, null); - - res.writeHead(500, { - // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', - "Content-Type": 'application/json' - }); - res.write(prompt); - res.end(); - } - summaryLog.flush(); - logger.info('============================='); -}); - -app.use(function(req, res, next) { - writeApplog(req); - var resc = '40400'; - var desc = 'Unknown URL'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - - var session = 'null'; - var cmd = 'getMultimedia'; - var identity = 'null'; - - logger.error('[statusCode]: 404'); - logger.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - - logger.statRecv(cmd, resc); - logger.statRetn(cmd, resc); - logger.alarm(cmd, resc); - logger.detail(req, cmd, null, null); - - summaryLog = logger.summary(session, cmd, identity, resc, desc); - summaryLog.addErrorBlock('client', cmd, resc, desc, 'req.url=' + req.url); - summaryLog.flush(); - - - res.writeHead(404, { - // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', - "Content-Type": 'application/json' - }); - res.write(prompt); - res.end(); - - logger.info('============================='); -}); diff --git a/srfp_genesis_backup.js b/srfp_genesis_backup.js deleted file mode 100644 index 231e3f3..0000000 --- a/srfp_genesis_backup.js +++ /dev/null @@ -1,278 +0,0 @@ -var express = require('express'); -var path = require('path'); -var app = express(); -var fs = require('fs'); -var util = require('util'); -var crypto = require('crypto'); -var http = require("http"); -var url = require("url"); -//var logger = require('./config/logger'); -var config = require('./config/config'); -var stat = require('./utils/SutisStat'); -var detail = require('./utils/SutisDetail'); -//var summaryLog = require('./utils/SutisLogSummary'); -var logger = require('./utils/SutisLogSummary'); - -function checkReq(req) { - var regex_filetype = /^.*\.(jpg|jpeg|png|mp3|mp4|m4a)$/ig; - var regex_datetime = /(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s\d{1,2}\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s[0-2][0-3]:[0-5][0-9]:[0-5][0-9]\sGMT$/g; - - // var reqModDate = req.get('If-Modified-Since') - // logger.error('>>>>>>>>> ' + req.url); - - if (req.query.name != null && req.query.type != null && req.query.commandId != null) { - if (regex_filetype.test(req.query.name) == true) { - return true; - } - } - - var resc = '40300'; - var desc = 'Missing or invalid parameter'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - return [resc, desc, prompt]; - -}; - -function checkFile(req) { - var path; - if (req.query.type === 'audio') { - path = config.mediaPath.audio + req.query.name; - } else if (req.query.type === 'video') { - path = config.mediaPath.video + req.query.name; - } else if (req.query.type === 'image') { - path = config.mediaPath.image + req.query.name; - } else { - var resc = '40401'; - var desc = 'File not found'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; - return [resc, desc, prompt]; - } - - if (fs.existsSync(path)) { - try { - fs.accessSync(path, fs.constants.R_OK); - var file_name = req.query.name; - return [true, file_name, path]; - } catch (err) { - var resc = '40101'; - var desc = 'Access denied'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; - return [resc, desc, prompt]; - } - } else { - var resc = '40401'; - var desc = 'File not found'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; - return [resc, desc, prompt]; - } -}; - -function checkHeader(req, path_file) { - try { - // var reqModDate = req.headers['If-Modified-Since']; - var reqModDate = req.get('If-Modified-Since') - var stats = fs.statSync(path_file); - var mtime = stats.mtime; - var size = stats['size']; - - if (reqModDate != null) { - reqModDate = new Date(reqModDate); - - logger.info('[If-Modified-Since]: ' + reqModDate.toUTCString()); - logger.info('[Modified-File] : ' + mtime.toUTCString()); - - if (reqModDate.toUTCString() == mtime.toUTCString()) { - logger.info('[Req Header]: If-Modified-Since == Modified File'); - return [304, mtime, size]; - } else { - logger.info('[Req Header]: If-Modified-Since != Modified File'); - return [200, mtime, size]; - } - } else { - logger.info('[Req Header]: No-header: If-Modified-Since'); - logger.info('[Modified-File]: ' + mtime.toUTCString()); - return [200, mtime, size]; - } - } catch (error) { - logger.error('[Error check header!!!]'); - return [200, mtime, size]; - } -}; - -function writeApplog(req) { - - logger.info('[Start getMultimedia Validate Parameter]: ' + 'name: ' + req.query.name + ', type=' + req.query.type + ', commandId=' + req.query.commandId); - logger.info('[incommigHeader: If-Modified-Since]: ' + req.get('If-Modified-Since')); - logger.info('[incomming url]: ' + req.protocol + '://' + req.get('host') + req.originalUrl); -} - -app.listen(3000, function() { - logger.info('============================='); - logger.info('SRFP-Genesis on port 3000!'); -}); - -app.get('/multiMedia.json', function(req, res) { - var sumaryLog; - var request = checkReq(req); - var fileReq = checkFile(req); - - var session = req.query.commandId; - var cmd = 'getMultimedia'; - var identiry = 'null'; - - writeApplog(req); - - // [Check Request] - if (request == true && fileReq[0] == true) { - var headerReq = checkHeader(req, fileReq[2]); - var statusCode = headerReq[0]; - var mtime = headerReq[1]; - var size = headerReq[2]; - - // logger.info('>>> Last-Modified: ' + mtime.toUTCString()); - - var content_type; - var regex_image = /^.*\.(jpg|jpeg)$/ig; - var regex_png = /^.*\.(png)$/ig; - var regex_mp3 = /^.*\.(mp3)$/ig; - var regex_mp4 = /^.*\.(mp4)$/ig; - var regex_m4a = /^.*\.(m4a)$/ig; - - if (regex_image.test(checkFile(req)[1])) { - content_type = 'image/jpeg'; - } else if (regex_png.test(checkFile(req)[1])) { - content_type = 'image/png'; - } else if (regex_mp3.test(checkFile(req)[1])) { - content_type = 'audio/mpeg'; - } else if (regex_mp4.test(checkFile(req)[1])) { - content_type = 'video/mp4'; - } else if (regex_m4a.test(checkFile(req)[1])) { - content_type = 'audio/m4a'; - } - - logger.info('[Path File]: ' + fileReq[2]); - - if (statusCode == 200) { - logger.info('[statusCode]: 200'); - var resc = '20000'; - var desc = 'Success'; - - logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - - sumaryLog = logger.summary(session, cmd, identiry); - sumaryLog.addSuccessBlock('client', cmd, resc, desc); - stat.recv(cmd, resc); - stat.retn(cmd, resc); - detail.write(req, cmd, size, mtime); - - res.writeHead(200, { - "Last-Modified": mtime.toUTCString(), - "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', - "Content-Type": content_type, - "Content-Length": size - }); - fs.createReadStream(checkFile(req)[2]).pipe(res); - // res.write(img); - // res.end(); - - } - // return 304! - else { - logger.info('[statusCode]: 304'); - var resc = '20000'; - var desc = 'Success'; - - logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - - sumaryLog = logger.summary(session, cmd, identiry); - sumaryLog.addSuccessBlock('client', cmd, resc, desc); - stat.recv(cmd, resc); - stat.retn(cmd, resc); - detail.write(req, cmd, size, mtime); - - res.writeHead(304, { - // "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', - "Content-Type": content_type, - "Content-Length": size - }); - res.end(); - - } - } else { - if (request != true) { - logger.error('[resultCode]: ' + request[0] + ', [developerMessage]: ' + request[1]); - sumaryLog = logger.summary(session, cmd, identiry); - sumaryLog.addErrorBlock('client', cmd, request[0], request[1]); - stat.recv(cmd, request[0]); - stat.retn(cmd, request[0]); - detail.write(req, cmd, size, mtime); - - res.writeHead(request[0].substring(0, 3), { - // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', - "Content-Type": 'application/json' - }); - res.write(request[2]); - res.end(); - // res.send(); - - } else if (fileReq != true) { - - logger.error('[resultCode]: ' + fileReq[0] + ', [developerMessage]: ' + fileReq[1]); - sumaryLog = logger.summary(session, cmd, identiry); - sumaryLog.addErrorBlock('client', cmd, fileReq[0], fileReq[1]); - stat.recv(cmd, fileReq[0]); - stat.retn(cmd, fileReq[0]); - detail.write(req, cmd, size, mtime); - - res.writeHead(fileReq[0].substring(0, 3), { - // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', - "Content-Type": 'application/json' - }); - res.write(fileReq[2]); - res.end(); - } else { - var resc = '50000'; - var desc = 'System error'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; - - logger.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - sumaryLog = logger.summary(session, cmd, identiry); - sumaryLog.addErrorBlock('client', cmd, resc, desc); - stat.recv(cmd, resc); - stat.retn(cmd, resc); - detail.write(req, cmd, null, null); - - res.writeHead(500, { - // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', - "Content-Type": 'application/json' - }); - res.write(prompt); - res.end(); - } - } - sumaryLog.flush(); - logger.info('============================='); -}); - -app.use(function(req, res, next) { - writeApplog(req); - var resc = '40400'; - var desc = 'Unknown URL'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - - var session = 'null'; - var cmd = 'getMultimedia'; - var identiry = 'null'; - - logger.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - sumaryLog = logger.summary(session, cmd, identiry); - sumaryLog.addErrorBlock('client', cmd, resc, desc); - stat.recv(cmd, resc); - stat.retn(cmd, resc); - detail.write(req, cmd, null, null); - sumaryLog.flush(); - - res.status(404).send(prompt); - - logger.info('============================='); -}); \ No newline at end of file diff --git a/srfp_genesis_backup_2.js b/srfp_genesis_backup_2.js deleted file mode 100644 index 623f227..0000000 --- a/srfp_genesis_backup_2.js +++ /dev/null @@ -1,316 +0,0 @@ -var express = require('express'); -var path = require('path'); -var app = express(); -var fs = require('fs'); -// var util = require('util'); -// var crypto = require('crypto'); -// var http = require("http"); -var url = require("url"); -var custom_log = require('./config/logger'); -var config = require('./config/config'); -var stat = require('./utils/SutisStat'); -var alarm = require('./utils/SutisAlarm'); -var detail = require('./utils/SutisDetail'); -var logger = require('./utils/SutisLogSummary'); - -function checkReq(req) { - var regex_filetype = /^.*\.(jpg|jpeg|png|mp3|mp4|m4a)$/ig; - var regex_datetime = /(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s\d{1,2}\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\sGMT$/g; - var regex_commandId = /^\d+$/g; - - var reqModDate = req.get('If-Modified-Since'); - var errorCase = null; - // logger.error('>>>>>>>>> ' + req.url); - - if (reqModDate != null) { - // logger.error('Req Header Not null'); - if (!regex_datetime.test(reqModDate)) { - logger.error('[invalid] date format: ' + reqModDate); - errorCase = 'req.If-Modified-Since=' + reqModDate; - - var resc = '40300'; - var desc = 'Missing or invalid parameter'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - var missingInvalid = errorCase; - return [resc, desc, prompt, missingInvalid]; - } - } - - if (req.query.name && req.query.type && req.query.commandId) { - if (regex_filetype.test(req.query.name)) { - return true; - } - } - - if (!req.query.name) { - logger.error('[missing or invalid]: name'); - errorCase = 'req.name=' + req.query.name; - } else if (!req.query.type) { - logger.error('[missing or invalid]: type'); - errorCase = 'req.type=' + req.query.type; - } else if (!req.query.commandId) { - logger.error('[missing or invalid]: commandId'); - errorCase = 'req.commandId=' + req.query.commandId; - } - - var resc = '40300'; - var desc = 'Missing or invalid parameter'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - var missingInvalid = errorCase; - return [resc, desc, prompt, missingInvalid]; - -}; - -function checkFile(req) { - var path; - if (req.query.type === 'audio') { - path = config.mediaPath.audio + req.query.name; - } else if (req.query.type === 'video') { - path = config.mediaPath.video + req.query.name; - } else if (req.query.type === 'image') { - path = config.mediaPath.image + req.query.name; - } else { - var resc = '40401'; - var desc = 'File not found'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - var missingInvalid = 'req.name=' + req.query.name; - return [resc, desc, prompt, missingInvalid]; - } - - if (fs.existsSync(path)) { - try { - fs.accessSync(path, fs.constants.R_OK); - var file_name = req.query.name; - return [true, file_name, path]; - } catch (err) { - var resc = '40101'; - var desc = 'Access denied'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - var missingInvalid = 'req.name=' + req.query.name; - return [resc, desc, prompt, missingInvalid]; - } - } else { - var resc = '40401'; - var desc = 'File not found'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - var missingInvalid = 'req.name=' + req.query.name; - return [resc, desc, prompt, missingInvalid]; - } -}; - -function checkHeader(req, path_file) { - try { - // var reqModDate = req.headers['If-Modified-Since']; - var reqModDate = req.get('If-Modified-Since'); - var stats = fs.statSync(path_file); - var mtime = stats.mtime; - var size = stats['size']; - - if (reqModDate != null) { - reqModDate = new Date(reqModDate); - - logger.info('[If-Modified-Since]: ' + reqModDate.toUTCString()); - logger.info('[Modified-File] : ' + mtime.toUTCString()); - - if (reqModDate.toUTCString() == mtime.toUTCString()) { - logger.info('[Req Header]: If-Modified-Since == Modified File'); - return [304, mtime, size]; - } else { - logger.info('[Req Header]: If-Modified-Since != Modified File'); - return [200, mtime, size]; - } - } else { - logger.info('[Req Header]: No-header: If-Modified-Since'); - logger.info('[Modified-File]: ' + mtime.toUTCString()); - return [200, mtime, size]; - } - } catch (error) { - logger.error('[Error check header!!!]'); - return [200, mtime, size]; - } -}; - -function writeApplog(req) { - - logger.info('[Start getMultimedia Validate Parameter]: ' + 'name: ' + req.query.name + ', type=' + req.query.type + ', commandId=' + req.query.commandId); - logger.info('[incommigHeader: If-Modified-Since]: ' + req.get('If-Modified-Since')); - logger.info('[incomming url]: ' + req.protocol + '://' + req.get('host') + req.originalUrl); -} - -app.listen(3000, function () { - logger.info('============================='); - logger.info('SRFP-Genesis on port 3000!'); -}); - -app.get('/multiMedia.json', function (req, res) { - var sumaryLog; - var request = checkReq(req); - var fileReq = checkFile(req); - // var headerReq = checkHeader(req, fileReq[2]); - - var session = req.query.commandId; - var cmd = 'getMultimedia'; - var identity = ''; - var reqfile = req.query.name; - - writeApplog(req); - - // [Check Request] - if (request == true && fileReq[0] == true) { - var resc = '20000'; - var desc = 'Success'; - - var headerReq = checkHeader(req, fileReq[2]); - var statusCode = headerReq[0]; - var mtime = headerReq[1]; - var size = headerReq[2]; - - sumaryLog = logger.summary(session, cmd, identity, resc, desc); - sumaryLog.addSuccessBlock('client', cmd, 'null', 'Success'); - sumaryLog.addSuccessBlock('null', 'getFile', resc, desc); - stat.recv(cmd, resc); - stat.retn(cmd, resc); - detail.write(req, cmd, size, mtime.toUTCString()); - - var content_type; - var regex_image = /^.*\.(jpg|jpeg)$/ig; - var regex_png = /^.*\.(png)$/ig; - var regex_mp3 = /^.*\.(mp3)$/ig; - var regex_mp4 = /^.*\.(mp4)$/ig; - var regex_m4a = /^.*\.(m4a)$/ig; - - if (regex_image.test(checkFile(req)[1])) { - content_type = 'image/jpeg'; - } else if (regex_png.test(checkFile(req)[1])) { - content_type = 'image/png'; - } else if (regex_mp3.test(checkFile(req)[1])) { - content_type = 'audio/mpeg'; - } else if (regex_mp4.test(checkFile(req)[1])) { - content_type = 'video/mp4'; - } else if (regex_m4a.test(checkFile(req)[1])) { - content_type = 'audio/m4a'; - } - - logger.info('[Path File]: ' + fileReq[2]); - - if (statusCode == 200) { - logger.info('[statusCode]: 200'); - var resc = '20000'; - var desc = 'Success'; - - logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - - res.writeHead(200, { - "Last-Modified": mtime.toUTCString(), - "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', - "Content-Type": content_type, - "Content-Length": size - }); - fs.createReadStream(checkFile(req)[2]).pipe(res); - // res.write(img); - // res.end(); - - } - // return 304! - else { - logger.info('[statusCode]: 304'); - var resc = '20000'; - var desc = 'Success'; - - logger.info('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - - res.writeHead(304, { - // "Content-Disposition": 'attachment; filename="' + checkFile(req)[1] + '"', - "Content-Type": content_type, - "Content-Length": size - }); - res.end(); - - } - } else if (request == true && fileReq[0] != true) { - sumaryLog = logger.summary(session, cmd, identity, fileReq[0], fileReq[1]); - sumaryLog.addSuccessBlock('client', cmd, 'null', 'Success'); - sumaryLog.addErrorBlock('null', 'getFile', fileReq[0], fileReq[1], fileReq[3]); - stat.recv(cmd, fileReq[0]); - stat.retn(cmd, fileReq[0]); - detail.write(req, cmd, null, null); - - } else if (request != true) { - var status_code = request[0].substring(0, 3); - logger.error('[statusCode]: ' + status_code); - logger.error('[resultCode]: ' + request[0] + ', [developerMessage]: ' + request[1]); - sumaryLog = logger.summary(session, cmd, identity, request[0], request[1]); - sumaryLog.addErrorBlock('client', cmd, request[0], request[1], request[3]); - stat.recv(cmd, request[0]); - stat.retn(cmd, request[0]); - alarm.recv(cmd, request[0]); - detail.write(req, cmd, null, null); - - res.writeHead(status_code, { - // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', - "Content-Type": 'application/json' - }); - res.write(request[2]); - res.end(); - - - } else { - var resc = '50000'; - var desc = 'System error'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}';; - - logger.error('[statusCode]: 500'); - logger.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - sumaryLog = logger.summary(session, cmd, identity, resc, desc); - sumaryLog.addErrorBlock('client', cmd, resc, desc, 'system_error'); - stat.recv(cmd, resc); - stat.retn(cmd, resc); - alarm.recv(cmd, resc); - detail.write(req, cmd, null, null); - - res.writeHead(500, { - // "Content-Disposition": 'attachment; filename="' + req.query.name + '"', - "Content-Type": 'application/json' - }); - res.write(prompt); - res.end(); - } - sumaryLog.flush(); - logger.info('============================='); -}); - -app.use(function (req, res, next) { - writeApplog(req); - var resc = '40400'; - var desc = 'Unknown URL'; - var prompt = '{"prompt":{"resultCode":"' + resc + '","developerMessage":"' + desc + '"}}'; - - var session = 'null'; - var cmd = 'getMultimedia'; - var identity = 'null'; - - var summaryLog; - - custom_log.error('[statusCode]: 404'); - custom_log.error('[resultCode]: ' + resc + ', [developerMessage]: ' + desc); - - - custom_log.statRecv(cmd, resc); - custom_log.statRetn(cmd, resc); - custom_log.alarm(cmd, resc); - - summaryLog = custom_log.summaryLog(session, cmd, identity, resc, desc); - summaryLog.addErrorBlock('client', cmd, resc, desc, 'req.url=' + req.url); - summaryLog.flush(); - - custom_log.detail(req, cmd, null, null); - - res.writeHead(404, { - "Content-Type": 'application/json' - }); - res.write(prompt); - res.end(); - - // logger.info('============================='); - custom_log.info('============================='); -}); diff --git a/utils/SutisAlarm.js b/utils/SutisAlarm.js deleted file mode 100644 index 3d35c49..0000000 --- a/utils/SutisAlarm.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; -var logger = require('./SutisLogSummary'); -var alarm ={}; -var nodeName = 'SRFP-Genesis'; -// var statTbl = require('../config/config'); - -alarm.recv=function(cmd, errCode){ - - var alarmName = nodeName; - if (errCode == 40400) { - alarmName = alarmName + ' Received Unknown URL Request'; - }else if (errCode == 40300) { - alarmName = alarmName + ' Received Bad '+ cmd + ' Request'; - } - else{ - // statName = statName + ' Received ' + cmd + ' err ' + statDesc; - } - logger.alarm(alarmName); -}; - -// stat.retn=function(cmd, errCode){ - -// var statName = nodeName; -// if(errCode == 20000){ -// statName = statName + ' Returned ' + cmd + ' Success'; -// } else if (errCode == 40400) { -// statName = statName + ' Returned Unknown URL'; -// } else if (errCode == 40300 || errCode == 40401 || errCode == 40101) { -// statName = statName + ' Returned ' + cmd + ' Error'; -// } else{ -// // statName = statName + ' Received ' + cmd + ' err ' + statDesc; -// } -// logger.stat(statName); -// }; -module.exports = alarm; diff --git a/utils/SutisDetail.js b/utils/SutisDetail.js deleted file mode 100644 index c2566d1..0000000 --- a/utils/SutisDetail.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; -var logger = require('./SutisLogSummary'); -var detail ={}; -var nodeName = 'SRFP-Genesis'; -var dateFormat = require('dateformat'); -// var dateFMT = 'l'; -var dateFMT = 'yyyymmdd HH:MM:ss.l'; - -function dateTimeReq(dateFMT) { - var date = new Date(); - var dateMs = 'l'; - var dateFor = dateFormat(date, dateFMT); - var dateForms = dateFormat(date, dateMs); - return [dateFor, dateForms] -} - -function dateTimeRes(dateFMT) { - // var time = new Date(); - // var dateTime = formatDate(new Date(), dateFMT) - // return [dateTime,time.getTime()]; - - var date = new Date(); - var dateMs = 'l'; - var dateFor = dateFormat(date, dateFMT); - var dateForms = dateFormat(date, dateMs); - return [dateFor, dateForms] -} - -detail.write=function(req, cmd, size, mtime){ - var requestTime = dateTimeReq(dateFMT); - var responseTime = dateTimeRes(dateFMT); - var processTime = parseInt(responseTime[1]-requestTime[1]); - - var appDetail = '{'+ - '"' + nodeName + '.Details' + '":{' + - '"Session":"'+ req.query.commandId +'",' + - '"Scenario":"'+ cmd +'",' + - '"Identity":"",' + - '"InputTimeStamp":"'+ requestTime[0] +'",' + - '"Input":' + '[' + - '{'+ - '"Event":"'+ nodeName +'.'+ cmd +'",' + - '"Type":"REQ",' + - '"RawData":"' + req.protocol + '://' + req.get('host') + req.originalUrl +'",' + - '"Data":' + '{'+ - '"Name":"'+ req.query.name + '",' + - '"Type":"'+ req.query.type + '",' + - '"CommandId":"'+ req.query.commandId + '"' + - '}' + - '}'+ - '],'+ - '"OutputTimeStamp":"'+ responseTime[0] +'",' + - '"Output":' + '[' + - '{'+ - '"Event":"'+ nodeName +'.'+ cmd +'",' + - '"Type":"' + 'RES",' + - '"RawData":"'+ req.query.name +'",' + - '"Data":' + '{'+ - '"Size":"'+ size + '",' + - '"Modified":"'+ mtime + '"' + - '}' + - '}'+ - '],'+ - '"ProcessingTime":"'+ processTime +' ms"' + - '}' + - '}' - logger.detail(appDetail); -}; - -module.exports = detail; diff --git a/utils/SutisLog.js b/utils/SutisLog.js deleted file mode 100644 index d3bd728..0000000 --- a/utils/SutisLog.js +++ /dev/null @@ -1,288 +0,0 @@ -var fs = require('fs'); -var os = require("os"); -var config = null; -var logCfg = require('../config/config'); - -var dateFormat = require('dateformat'); - -function SutisLog() { -} -function getDateTimeFormat(time) { - - var years = new Date().getFullYear(); - var months = new Date().getMonth() + 1; - var day = new Date().getDate(); - var hours = new Date().getHours(); - var mins = new Date().getMinutes(); - var monthFormatted = months < 10 ? "0" + months : months; - var dayFormatted = day < 10 ? "0" + day : day; - var hourFormatted = hours < 10 ? "0" + hours : hours; - var result = ""; - var minFormatted = null; - var div = null; - - if ((mins % time) > 0) { - minFormatted = ((Math.floor(mins / time)) * time); - } else { - minFormatted = mins; - } - - minFormatted = minFormatted < 10 ? "0" + minFormatted : minFormatted; - result = '' + years + monthFormatted + dayFormatted + hourFormatted + minFormatted; - return result; -} - -function getDateTimeLogFormat() { - var dates = new Date(); - var years = dates.getFullYear(); - var months = dates.getMonth() + 1; - var day = dates.getDate(); - var hours = dates.getHours(); - var minutes = dates.getMinutes(); - var second = new Date().getSeconds(); - var millisecs = dates.getMilliseconds(); - var monthFormatted = months < 10 ? "0" + months : months; - var dayFormatted = day < 10 ? "0" + day : day; - var hourFormatted = hours < 10 ? "0" + hours : hours; - var minFormatted = minutes < 10 ? "0" + minutes : minutes; - var secFormatted = second < 10 ? "0" + second : second; - var milliFormatted = null; - - if (millisecs < 10) { - milliFormatted = "00" + millisecs; - } - else if (millisecs < 100) { - milliFormatted = "0" + millisecs; - } - else { - milliFormatted = millisecs; - } - - // return '[' + years + '-' + monthFormatted + '-' + dayFormatted + ' ' + hourFormatted + ':' + minFormatted + ':' + secFormatted + ':' + milliFormatted + ']'; - var detail = years + monthFormatted + dayFormatted + ' ' + hourFormatted + ':' + minFormatted + ':' + secFormatted + '|' + os.hostname() + '|' + logCfg.log.projectName + '|'; - return detail; -} - -function getLogFileName() { - return os.hostname() + '_' + logCfg.log.projectName + '_' + getDateTimeFormat(logCfg.log.logTime) + '.log'; -} -function getStatFileName() { - return os.hostname() + '_' + logCfg.log.projectName + '_' + getDateTimeFormat(logCfg.log.statTime) + '.stat'; -} -function getAlarmFileName() { - return os.hostname() + '_' + logCfg.log.projectName + '_' + getDateTimeFormat(logCfg.log.alarmTime) + '.stat'; -} -function getSummaryFileName() { - return os.hostname() + '_' + logCfg.log.projectName + '_' + getDateTimeFormat(logCfg.log.summaryTime) + '.summary'; -} -function getDetailFileName() { - return os.hostname() + '_' + logCfg.log.projectName + '_' + getDateTimeFormat(logCfg.log.detailTime) + '.detail'; -} - -SutisLog.prototype.info = function (logMessage) { - var stream = fs.createWriteStream(logCfg.log.logPath + '/' + getLogFileName(), { 'flags': 'a' }); - stream.once('open', function (fd) { - stream.write(getDateTimeLogFormat() + ' - info: ' + logMessage + '\n'); - stream.end(); - }); -}; - -SutisLog.prototype.error = function (logMessage) { - var stream = fs.createWriteStream(logCfg.log.logPath + '/' + getLogFileName(), { 'flags': 'a' }); - - stream.once('open', function (fd) { - stream.write(getDateTimeLogFormat() + ' - error: ' + logMessage + '\n'); - stream.end(); - }); -}; -// session, cmd, identity, resultCode, resultDescription -SutisLog.prototype.summaryLog = function (session, cmd, identity, resultCode, resultDescription) { - var dateFMT = 'yyyymmdd HH:MM:ss'; - - var stream = fs.createWriteStream(logCfg.log.summaryPath + '/' + getSummaryFileName(), { 'flags': 'a' }); - - // var test = { - // x1: function() { - // stream.once('open', function (fd) { - // stream.write(getDateTimeLogFormat() + ' - summary: ' + 'txt-+-+-+dhjsdhfjkshfjsd' + '\n'); - // stream.end(); - // }); - // } - // } - // return test; - - var summaryLog = { - requestTime: new Date(), - session: session, - initInvoke: '', //only equinox platform - cmd: cmd, - identity: identity, - resultCode: resultCode, - resultDescription: resultDescription, - blockDetail: [], - - addSuccessBlock: function(node, cmd, statusCode, detail){ - this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ statusCode+'; '+detail+'(1)]]'); - }, - - addErrorBlock: function(node, cmd, statusCode, detail, errorDetail){ - this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ statusCode+'; '+detail+'(1)]]'); - }, - - flush : function(){ - var endTime = new Date(); - - var txt = dateFormat(this.requestTime, dateFMT) + '|'; - txt += this.session +'|'; - txt += this.initInvoke +'|' - txt += this.cmd +'|' - txt += this.identity +'|' - txt += this.resultCode +'|' - txt += this.resultDescription +'|' - txt += this.blockDetail +'|' - txt += dateFormat(endTime, dateFMT) +'|' - txt += (endTime.getTime() - this.requestTime.getTime()); - - stream.once('open', function (fd) { - stream.write(txt + '\n'); - stream.end(); - }); - - } - }; - return summaryLog; -}; - -SutisLog.prototype.detail = function (req, cmd, size, mtime) { - var stream = fs.createWriteStream(logCfg.log.detailPath + '/' + getDetailFileName(), { 'flags': 'a' }); - - var nodeName = 'SRFP-Genesis'; - var dateFormat = require('dateformat'); - // var dateFMT = 'l'; - var dateFMT = 'yyyymmdd HH:MM:ss.l'; - - function dateTimeReq(dateFMT) { - var date = new Date(); - var dateMs = 'l'; - var dateFor = dateFormat(date, dateFMT); - var dateForms = dateFormat(date, dateMs); - return [dateFor, dateForms] - } - - function dateTimeRes(dateFMT) { - // var time = new Date(); - // var dateTime = formatDate(new Date(), dateFMT) - // return [dateTime,time.getTime()]; - - var date = new Date(); - var dateMs = 'l'; - var dateFor = dateFormat(date, dateFMT); - var dateForms = dateFormat(date, dateMs); - return [dateFor, dateForms] - } - - var requestTime = dateTimeReq(dateFMT); - var responseTime = dateTimeRes(dateFMT); - var processTime = parseInt(responseTime[1] - requestTime[1]); - - var appDetail = '{' + - '"' + nodeName + '.Details' + '":{' + - '"Session":"' + req.query.commandId + '",' + - '"Scenario":"' + cmd + '",' + - '"Identity":"",' + - '"InputTimeStamp":"' + requestTime[0] + '",' + - '"Input":' + '[' + - '{' + - '"Event":"' + nodeName + '.' + cmd + '",' + - '"Type":"REQ",' + - '"RawData":"' + req.protocol + '://' + req.get('host') + req.originalUrl + '",' + - '"Data":' + '{' + - '"Name":"' + req.query.name + '",' + - '"Type":"' + req.query.type + '",' + - '"CommandId":"' + req.query.commandId + '"' + - '}' + - '}' + - '],' + - '"OutputTimeStamp":"' + responseTime[0] + '",' + - '"Output":' + '[' + - '{' + - '"Event":"' + nodeName + '.' + cmd + '",' + - '"Type":"' + 'RES",' + - '"RawData":"' + req.query.name + '",' + - '"Data":' + '{' + - '"Size":"' + size + '",' + - '"Modified":"' + mtime + '"' + - '}' + - '}' + - '],' + - '"ProcessingTime":"' + processTime + ' ms"' + - '}' + - '}'; - - stream.once('open', function (fd) { - stream.write(getDateTimeLogFormat() + appDetail + '\n'); - stream.end(); - }); -}; - -SutisLog.prototype.statRecv = function (cmd, errCode) { - var nodeName = 'SRFP-Genesis'; - var stream = fs.createWriteStream(logCfg.log.statPath + '/' + getStatFileName(), { 'flags': 'a' }); - - var statName = nodeName; - if (errCode == 20000 || errCode == 40401 || errCode == 40101) { - statName = statName + ' Received Request'; - } else if (errCode == 40400) { - statName = statName + ' Received Unknown URL Request'; - } else if (errCode == 40300) { - statName = statName + ' Received Bad ' + cmd + ' Request'; - } - else { - statName = statName + ' Received ' + cmd + ' error'; - } - stream.once('open', function (fd) { - stream.write(getDateTimeLogFormat() + statName + '\n'); - stream.end(); - }); -}; - -SutisLog.prototype.statRetn = function (cmd, errCode) { - var nodeName = 'SRFP-Genesis'; - var stream = fs.createWriteStream(logCfg.log.statPath + '/' + getStatFileName(), { 'flags': 'a' }); - - var statName = nodeName; - if (errCode == 20000) { - statName = statName + ' Returned ' + cmd + ' Success'; - } else if (errCode == 40400) { - statName = statName + ' Returned Unknown URL'; - } else if (errCode == 40300 || errCode == 40401 || errCode == 40101 || errCode == 50000) { - statName = statName + ' Returned ' + cmd + ' Error'; - } else { - // statName = statName + ' Returned ' + cmd + ' err ' + statDesc; - } - stream.once('open', function (fd) { - stream.write(getDateTimeLogFormat() + statName + '\n'); - stream.end(); - }); -}; - -SutisLog.prototype.alarm = function (cmd, errCode) { - var nodeName = 'SRFP-Genesis'; - var stream = fs.createWriteStream(logCfg.log.alarmPath + '/' + getAlarmFileName(), { 'flags': 'a' }); - - var alarmName = nodeName; - if (errCode == 40400) { - alarmName = alarmName + ' Received Unknown URL Request'; - } else if (errCode == 40300) { - alarmName = alarmName + ' Received Bad ' + cmd + ' Request'; - } - else { - // alarmName = alarmName + ' Received ' + cmd + ' err ' + statDesc; - } - stream.once('open', function (fd) { - stream.write(getDateTimeLogFormat() + alarmName + '\n'); - stream.end(); - }); -}; -module.exports = SutisLog; - diff --git a/utils/SutisLogSummary.js b/utils/SutisLogSummary.js deleted file mode 100644 index 04921ba..0000000 --- a/utils/SutisLogSummary.js +++ /dev/null @@ -1,75 +0,0 @@ -var log4js = require('log4js'); -log4js.configure('./config/log4js.json'); - -var log = log4js.getLogger('serverLog'); -var stat = log4js.getLogger('statLog'); -var alarm = log4js.getLogger('alarmLog'); -var detail = log4js.getLogger('datailLog'); -var summary = log4js.getLogger('summaryLog'); - -var dateFMT = 'yyyymmdd HH:MM:ss'; -var dateFormat = require('dateformat'); - - -var l = {}; -l.debug = function(_log){ - log.debug(_log); -} -l.info = function(_log){ - log.info(_log); -} -l.warn = function(_log){ - log.warn(_log); -} -l.error = function(_log){ - log.error(_log); -} -l.stat = function(statName){ - stat.info(statName); -} -l.alarm = function(alarmName){ - alarm.info(alarmName); -} -l.detail = function(appDetail){ - detail.info(appDetail); -} - -l.summary = function(session, cmd, identity, resultCode, resultDescription){ - var summaryLog = { - requestTime: new Date(), - session: session, - initInvoke: '', //only equinox platform - cmd: cmd, - identity: identity, - resultCode: resultCode, - resultDescription: resultDescription, - blockDetail: [], - - addSuccessBlock: function(node, cmd, statusCode, detail){ - this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ statusCode+'; '+detail+'(1)]]'); - }, - - addErrorBlock: function(node, cmd, statusCode, detail, errorDetail){ - this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ statusCode+'; '+detail+'(1)]]'); - }, - - flush : function(){ - var endTime = new Date(); - - var txt = dateFormat(this.requestTime, dateFMT) + '|'; - txt += this.session +'|'; - txt += this.initInvoke +'|' - txt += this.cmd +'|' - txt += this.identity +'|' - txt += this.resultCode +'|' - txt += this.resultDescription +'|' - txt += this.blockDetail +'|' - txt += dateFormat(endTime, dateFMT) +'|' - txt += (endTime.getTime() - this.requestTime.getTime()); - - summary.info(txt); - } - }; - return summaryLog; -} -module.exports = l; \ No newline at end of file diff --git a/utils/SutisStat.js b/utils/SutisStat.js deleted file mode 100644 index 57646e4..0000000 --- a/utils/SutisStat.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict'; -var logger = require('./SutisLogSummary'); -var stat ={}; -var nodeName = 'SRFP-Genesis'; -// var statTbl = require('../config/config'); - -// stat.sendReq=function(cmd){ -// var statName = nodeName + ' send ' + cmd + ' req.'; -// logger.stat(statName); -// }; - -// stat.sendRes=function(cmd, errCode){ -// var statDesc; -// if(!errCode){ -// errCode = "50000"; - -// }else{ -// statDesc = statTbl[errCode]; -// if(!statDesc){ -// errCode = "90000"; -// } -// } -// statDesc = statTbl[errCode]; - -// var statName = nodeName; -// if(errCode == '20000'){ -// statName = statName + ' send ' + cmd + ' success res '+ errCode +'.'; -// }else{ -// statName = statName + ' send ' + cmd + ' err ' + statDesc.toLowerCase() +' res '+ errCode +'.'; -// } -// logger.stat(statName); -// }; - -stat.recv=function(cmd, errCode){ - - var statName = nodeName; - if(errCode == 20000 || errCode == 40401 || errCode == 40101){ - statName = statName + ' Received Request'; - } else if (errCode == 40400) { - statName = statName + ' Received Unknown URL Request'; - }else if (errCode == 40300) { - statName = statName + ' Received Bad '+ cmd + ' Request'; - } - else{ - statName = statName + ' Received ' + cmd + ' error'; - } - logger.stat(statName); -}; - -stat.retn=function(cmd, errCode){ - - var statName = nodeName; - if(errCode == 20000){ - statName = statName + ' Returned ' + cmd + ' Success'; - } else if (errCode == 40400) { - statName = statName + ' Returned Unknown URL'; - } else if (errCode == 40300 || errCode == 40401 || errCode == 40101 || errCode == 50000) { - statName = statName + ' Returned ' + cmd + ' Error'; - } else{ - // statName = statName + ' Returned ' + cmd + ' err ' + statDesc; - } - logger.stat(statName); -}; -module.exports = stat; diff --git a/views/error.jade b/views/error.jade deleted file mode 100644 index 43a41a7..0000000 --- a/views/error.jade +++ /dev/null @@ -1,5 +0,0 @@ -extends layout - -block content - h1= message - h2= error.status diff --git a/views/index.jade b/views/index.jade deleted file mode 100644 index 3d63b9a..0000000 --- a/views/index.jade +++ /dev/null @@ -1,5 +0,0 @@ -extends layout - -block content - h1= title - p Welcome to #{title} diff --git a/views/layout.jade b/views/layout.jade deleted file mode 100644 index 15af079..0000000 --- a/views/layout.jade +++ /dev/null @@ -1,7 +0,0 @@ -doctype html -html - head - title= title - link(rel='stylesheet', href='/stylesheets/style.css') - body - block content -- libgit2 0.21.2