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