@nodefony/http-bundle
Version:
Nodefony Framework Bundle HTTP
177 lines (170 loc) • 4.26 kB
JavaScript
/*
* NODEFONY CONFIG BUNDLE httpBundle
*
*/
const path = require('path');
const readFile = function (Path) {
try {
return fs.readFileSync(Path, {
encoding: "utf8"
});
} catch (e) {
console.error(e);
throw e;
}
};
const createSecret = function () {
let sercretPath = path.resolve("config", "certificates", "ca", "private", "ca.key.pem");
return crypto.createHash('sha256').update(String(readFile(sercretPath))).digest('base64').substr(0, 32);
};
const secret = createSecret();
const createIv = function () {
let sercretPath = path.resolve("config", "certificates", "ca", "public", "public.key.pem");
return crypto.createHash('sha256').update(String(readFile(sercretPath))).digest('base64').substr(0, 16);
};
const iv = createIv();
const tmpDir = kernel.tmpDir.path || "/tmp"
module.exports = {
watch: false,
// For more options parser formidable @see : https://github.com/felixge/node-formidable
request: {
uploadDir: tmpDir,
maxFileSize: 524288000, // 500 MB //10MB 10485760
multiples: true,
maxFieldsSize: 2097152, // 2MB
maxFields: 1000,
encoding: 'utf-8'
},
//For more options parser QS @see : https://github.com/ljharb/qs
queryString: {
parameterLimit: 1000,
delimiter: "&",
ignoreQueryPrefix: true
},
/*
* SERVERS HTTP
* @see : https://nodejs.org/dist/latest-v8.x/docs/api/http.html#http_class_http_server
*/
http: {
maxHeadersCount: null,
timeout: null, // For Keep alive spec
responseTimeout: 30000, // In ms | 30 seconds by default
headers: null
},
https: {
maxHeadersCount: null,
timeout: null, // For keep alive spec
responseTimeout: 30000, // In MS | 30 seconds by default
headers: null,
certificats: {
options: {
rejectUnauthorized: false
}
}
},
http2: {
enablePush: true
},
/**
* SERVERS WEBSOCKET
* For more options @see : https://github.com/theturtle32/WebSocket-Node/blob/master/docs/WebSocketServer.md#server-config-options
*/
websocket: {
keepaliveInterval: 20000,
keepaliveGracePeriod: 10000,
closeTimeout: 5000
},
websocketSecure: {
keepaliveInterval: 20000,
keepaliveGracePeriod: 10000,
closeTimeout: 5000
},
sockjs: {
protocol: "https",
websocket: true,
domain: "localhost",
port: 5152,
prefix: "/sockjs-node",
stats: {
cached: false,
cachedAssets: false
}
},
/**
* SERVERS STACTIC FILES
*
* For dev only
* use varnish or similar reverse proxy caches
*
* you can add directory for find statics file
* name:
* path: "/mydirectory/"
* maxage: 30*24*60*60*1000 # override default maxage
*
*/
statics: {
defaultOptions: {
cacheControl: true,
maxAge: (96 * 60 * 60)
},
web: {
path: "web",
options: {
maxAge: (30 * 24 * 60 * 60 * 1000)
}
}
},
/**
* SESSIONS MANAGER
* name : cookies session name
* handler : files | sequelize | memcached
*
* MEMCACHED
* https://github.com/3rd-Eden/memcached
*/
session: {
start: false, // false || true || Name Session Context
use_strict_mode: true,
name: "nodefony",
handler: "files", // files | orm | memcached "nodefony.session.storage"
save_path: "/tmp/sessions",
gc_probability: 1,
gc_divisor: 100,
gc_maxlifetime: 1440,
hash_function: "md5", // sha1
use_cookies: true,
use_only_cookies: true,
referer_check: false,
cookie: {
maxAge: 0, // like cookie_lifetime =>seconde
httpOnly: true, // don't see by script (javascript)
secure: false, // https only
signed: false
},
encrypt: {
algorithm: "aes-256-ctr",
password: secret,
iv: iv
},
/**
* SERVICE memcached
*/
memcached: {
servers: {
nodefony: {
location: "127.0.0.1",
port: 11211,
weight: 1
}
},
options: {
debug: false,
timeout: 5000
},
}
},
/**
* SERVICE requestClient
*/
requestClient: null
}