Load config from DB

This commit is contained in:
Zaid Abdulla committed 2018-12-27 22:23:37 -08:00
1 parent 4530967b6b
commit 819e8a52a3
4 files changed
+203 -65

No files matched your search

+76 -40
View File
@@ -57,7 +57,7 @@ function writeResponse(sessionContext, res, close) {
// Close connection after last request in session
if (close) res.headers["Connection"] = "close";
if (config.get("DEBUG", sessionContext.deviceId)) {
if (sessionContext.debug) {
const dump =
`# RESPONSE ${new Date(Date.now())}\n` +
JSON.stringify(res.headers) +
@@ -195,7 +195,12 @@ function inform(sessionContext, rpc) {
cwmpVersion: sessionContext.cwmpVersion
});
const cookiesPath = config.get("COOKIES_PATH", sessionContext.deviceId);
const cookiesPath = localCache.getConfig(
sessionContext.cacheSnapshot,
"cwmp.cookiesPath",
sessionContext.configContext
);
if (cookiesPath) {
res.headers["Set-Cookie"] = `session=${
sessionContext.sessionId
@@ -284,7 +289,11 @@ function applyPresets(sessionContext) {
const blackList = {};
let whiteList = null;
let whiteListProvisions = null;
const RETRY_DELAY = config.get("RETRY_DELAY", sessionContext.deviceId);
const RETRY_DELAY = localCache.getConfig(
sessionContext.cacheSnapshot,
"cwmp.retryDelay",
sessionContext.configContext
);
if (sessionContext.faults) {
for (const [channel, fault] of Object.entries(sessionContext.faults)) {
@@ -1062,7 +1071,7 @@ function listener(httpRequest, httpResponse) {
logger.accessWarn(w);
}
if (config.get("DEBUG", sessionContext.deviceId)) {
if (sessionContext.debug) {
const dump =
`# REQUEST ${new Date(Date.now())}\n` +
JSON.stringify(httpRequest.headers) +
@@ -1165,45 +1174,72 @@ function listener(httpRequest, httpResponse) {
stats.initiatedSessions += 1;
const deviceId = common.generateDeviceId(rpc.cpeRequest.deviceId);
session.init(
deviceId,
rpc.cwmpVersion,
rpc.sessionTimeout || config.get("SESSION_TIMEOUT", deviceId),
(err, _sessionContext) => {
if (err) return void throwError(err, httpResponse);
localCache.getCurrentSnapshot((err, cacheSnapshot) => {
if (err) return void throwError(err, httpResponse);
_sessionContext.httpRequest = httpRequest;
_sessionContext.httpResponse = httpResponse;
_sessionContext.sessionId = crypto.randomBytes(8).toString("hex");
httpRequest.connection.setTimeout(_sessionContext.timeout * 1000);
const configContext = {
id: deviceId,
serialNumber: rpc.cpeRequest.deviceId["SerialNumber"],
productClass: rpc.cpeRequest.deviceId["ProductClass"],
oui: rpc.cpeRequest.deviceId["OUI"]
};
getDueTasksAndFaultsAndOperations(
deviceId,
_sessionContext.timestamp,
(err, dueTasks, faults, operations, cacheUntil) => {
if (err) return void throwError(err, httpResponse);
_sessionContext.tasks = dueTasks;
_sessionContext.operations = operations;
_sessionContext.cacheUntil = cacheUntil;
_sessionContext.faults = faults;
_sessionContext.retries = {};
for (const [k, v] of Object.entries(_sessionContext.faults)) {
if (v.expiry >= _sessionContext.timestamp) {
// Delete expired faults
delete _sessionContext.faults[k];
if (!_sessionContext.faultsTouched)
_sessionContext.faultsTouched = {};
_sessionContext.faultsTouched[k] = true;
} else {
_sessionContext.retries[k] = v.retries;
}
}
parsedRpc(_sessionContext, rpc, parseWarnings);
}
const sessionTimeout =
rpc.sessionTimeout ||
localCache.getConfig(
cacheSnapshot,
"cwmp.sessionTimeout",
configContext
);
}
);
session.init(
deviceId,
rpc.cwmpVersion,
sessionTimeout,
(err, _sessionContext) => {
if (err) return void throwError(err, httpResponse);
_sessionContext.cacheSnapshot = cacheSnapshot;
_sessionContext.configContext = configContext;
_sessionContext.debug = localCache.getConfig(
cacheSnapshot,
"cwmp.debug",
configContext
);
_sessionContext.httpRequest = httpRequest;
_sessionContext.httpResponse = httpResponse;
_sessionContext.sessionId = crypto.randomBytes(8).toString("hex");
httpRequest.connection.setTimeout(_sessionContext.timeout * 1000);
getDueTasksAndFaultsAndOperations(
deviceId,
_sessionContext.timestamp,
(err, dueTasks, faults, operations, cacheUntil) => {
if (err) return void throwError(err, httpResponse);
_sessionContext.tasks = dueTasks;
_sessionContext.operations = operations;
_sessionContext.cacheUntil = cacheUntil;
_sessionContext.faults = faults;
_sessionContext.retries = {};
for (const [k, v] of Object.entries(_sessionContext.faults)) {
if (v.expiry >= _sessionContext.timestamp) {
// Delete expired faults
delete _sessionContext.faults[k];
if (!_sessionContext.faultsTouched)
_sessionContext.faultsTouched = {};
_sessionContext.faultsTouched[k] = true;
} else {
_sessionContext.retries[k] = v.retries;
}
}
parsedRpc(_sessionContext, rpc, parseWarnings);
}
);
}
);
});
});
});
}