in greengrass-opcua-adapter-nodejs/config_agent.js [105:256]
function configInit(serverConfigs, callback) {
jsonFile.readFile(`${folder}/${clientConfigfileName}`, function (err, configList) {
if (err) {
throw err;
}
if (isEmpty(configList.keepSessionAlive)) {
throw new Error("configList.keepSessionAlive is empty or whitespace");
}
if (!Number.isInteger(configList.connectionStrategy.maxRetry)) {
throw new Error("configList.connectionStrategy.maxRetry is not a number");
}
if (!Number.isInteger(configList.connectionStrategy.initialDelay)) {
throw new Error("invalid .connectionStrategy.initialDelay is not a number");
}
if (!Number.isInteger(configList.connectionStrategy.maxDelay)) {
throw new Error("connectionStrategy.maxDelay is not a number");
}
if (!Number.isInteger(configList.checkServerConfigInterval)) {
throw new Error("connectionStrategy.maxDelay is not a number");
}
clientOptions.keepSessionAlive = configList.keepSessionAlive;
clientOptions.connectionStrategy.maxRetry = configList.connectionStrategy.maxRetry;
clientOptions.connectionStrategy.initialDelay = configList.connectionStrategy.initialDelay;
clientOptions.connectionStrategy.maxDelay = configList.connectionStrategy.maxDelay;
clientOptions.checkServerConfigInterval = configList.checkServerConfigInterval;
customerOption.customUploadDataStrategy = configList.customUploadDataStrategy;
// Adjust the parameter in customerOption
if (isEmpty(customerOption.customUploadDataStrategy.sendAllDataToCloud)) {
customerOption.customUploadDataStrategy.sendAllDataToCloud = false;
}
// Overwrite the sendAllDataToCloud configuration from environment variable
if (typeof process.env.AWS_LAMBDA_OPCUA_ADAPTER_SEND_ALL_DATA_TO_CLOUD != 'undefined') {
console.log(configInit.name + ":process.env.AWS_LAMBDA_OPCUA_ADAPTER_SEND_ALL_DATA_TO_CLOUD: " + process.env.AWS_LAMBDA_OPCUA_ADAPTER_SEND_ALL_DATA_TO_CLOUD);
if ( process.env.AWS_LAMBDA_OPCUA_ADAPTER_SEND_ALL_DATA_TO_CLOUD == 'true' ) {
customerOption.customUploadDataStrategy.sendAllDataToCloud = true;
} else {
customerOption.customUploadDataStrategy.sendAllDataToCloud = false;
}
}
// Overwrite the pollingInSecond configuration from environment variable
if (typeof process.env.AWS_LAMBDA_OPCUA_ADAPTER_POLL_IN_SECOND != 'undefined') {
console.log(configInit.name + ":process.env.AWS_LAMBDA_OPCUA_ADAPTER_POLL_IN_SECOND: " + process.env.AWS_LAMBDA_OPCUA_ADAPTER_POLL_IN_SECOND);
if ( !isNaN( process.env.AWS_LAMBDA_OPCUA_ADAPTER_POLL_IN_SECOND ) ) {
customerOption.customUploadDataStrategy.pollingInSecond = +process.env.AWS_LAMBDA_OPCUA_ADAPTER_POLL_IN_SECOND;
}
}
// Read the accumulative white list from environment variable
if (typeof process.env.AWS_LAMBDA_OPCUA_ADAPTER_ACCUMULATIVE_WHITE_LIST != 'undefined') {
console.log(configInit.name + ":process.env.AWS_LAMBDA_OPCUA_ADAPTER_ACCUMULATIVE_WHITE_LIST: " + process.env.AWS_LAMBDA_OPCUA_ADAPTER_ACCUMULATIVE_WHITE_LIST);
// Check if the environment variable is string
if (typeof process.env.AWS_LAMBDA_OPCUA_ADAPTER_ACCUMULATIVE_WHITE_LIST === 'string')
{
customerOption.customUploadDataStrategy.enableAccumulativeData = true;
customerOption.customUploadDataStrategy.accumulativeWhiteList = process.env.AWS_LAMBDA_OPCUA_ADAPTER_ACCUMULATIVE_WHITE_LIST.split(',');
console.log("customerOption.customUploadDataStrategy.accumulativeWhiteList.length:"+customerOption.customUploadDataStrategy.accumulativeWhiteList.length);
}
}
console.dir(customerOption);
readFailTolerance = configList.reportTolerance;
reportStatus = configList.reportStatus;
console.log(configInit.name + ":configList.keepSessionAlive: " + configList.keepSessionAlive);
console.log(configInit.name + ":configList.connectionStrategy.maxRetry: " + configList.connectionStrategy.maxRetry);
console.log(configInit.name + ":configList.connectionStrategy.initialDelay: " + configList.connectionStrategy.initialDelay);
console.log(configInit.name + ":configList.connectionStrategy.maxDelay: " + configList.connectionStrategy.maxDelay);
console.log(configInit.name + ":configList.checkServerConfigInterval: " + configList.checkServerConfigInterval);
});
jsonFile.readFile(`${folder}/${certConfigName}`, function (err, configList) {
if (err) {
throw err;
}
if (isEmptyOrWhitespace(configList.certPath)) {
throw new Error("configList.certPath is empty or whitespace");
}
certConfig.certPath = configList.certPath;
console.log(configInit.name + ":configList.certPath: " + configList.certPath);
});
jsonFile.readFile(`${folder}/${serverConfigfileName}`, function (err, configList) {
if (err) {
throw err;
}
var stats = fs.statSync(`${folder}/${serverConfigfileName}`);
var serverFileLastModifyTime = stats.mtime;
configList["serInfo"].forEach((config)=> {
if (isEmptyOrWhitespace(config.endpointName)) {
console.log("invalid endpointName");
return;
}
if (isEmptyOrWhitespace(config.endpointUrl)) {
console.log("invalid endpointUrl");
return;
}
if (config.OpcNodes.length <= 0) {
console.log("No OpcNodes!");
return;
}
var serverConfig = {
server: {
name: "",
url: "",
certExist:false
},
userIdentity: null,
subscriptions: [],
connection: false
};
console.log(configInit.name + ": endpointName: " + config.endpointName);
console.log(configInit.name + ": endpointUrl: " + config.endpointUrl);
for (let j = 0; j < config.OpcNodes.length; j += 1) {
serverConfig.subscriptions.push(config.OpcNodes[j]);
console.log(configInit.name + " serverConfig.subscriptions.id: " + serverConfig.subscriptions[j].id);
console.log(configInit.name + " serverConfig.subscriptions.displayName: " + serverConfig.subscriptions[j].displayName);
}
console.log(configInit.name + " serverConfig.subscriptions node length:" + serverConfig.subscriptions.length);
serverConfig.server.url = config.endpointUrl;
serverConfig.server.name = config.endpointName;
// set default is certificate mode if user didn't set certExist in published_nodes.json
if ( config.certExist ) {
serverConfig.server.certExist = config.certExist;
} else {
serverConfig.server.certExist = false;
}
console.log(configInit.name + " serverConfig.server.certExist: " + serverConfig.server.certExist);
serverConfig.server.userIdentity = config.userIdentity;
serverConfigs.push(serverConfig);
LastModifiedtime = serverFileLastModifyTime;
});
callback();
});
}