This repository has been archived by the owner on Feb 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 67
/
bluemix-settings.js
110 lines (92 loc) · 4.24 KB
/
bluemix-settings.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/**
* Copyright 2014, 2019 IBM Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
var path = require("path");
var fs = require("fs");
const IBMCloudEnv = require('ibm-cloud-env');
IBMCloudEnv.init('/server/config/mappings.json');
const cloudantUrl = IBMCloudEnv.getString('cloudant_url');
const REGEX_LEADING_ALPHA = /^[^a-zA-Z]*/;
const REGEX_ALPHA_NUM = /[^a-zA-Z0-9]/g;
function _sanitizeAppName(name) {
name = name || 'node-red';
return name.toLowerCase().replace(REGEX_LEADING_ALPHA, '').replace(REGEX_ALPHA_NUM, '');
}
var dbName = _sanitizeAppName(process.env.NODE_RED_STORAGE_DB_NAME || IBMCloudEnv.getString('application_name') || "nodered");
var userDir = path.join(__dirname,".node-red");
// Ensure userDir exists - something that is normally taken care of by
// localfilesystem storage when running locally
if(!fs.existsSync(userDir)) fs.mkdirSync(userDir);
if(!fs.existsSync(path.join(userDir,"node_modules"))) fs.mkdirSync(path.join(userDir,"node_modules"));
var settings = module.exports = {
uiPort: process.env.PORT || 1880,
mqttReconnectTime: 15000,
debugMaxLength: 1000,
//Flag for enabling Appmetrics dashboard (https://github.com/RuntimeTools/appmetrics-dash)
useAppmetrics: false,
userDir: userDir,
flowFile: "flows.json",
// Add the bluemix-specific nodes in
nodesDir: path.join(__dirname,"nodes"),
// Blacklist the non-bluemix friendly nodes
nodesExcludes:['90-exec.js','28-tail.js','10-file.js','23-watch.js'],
// Enable module reinstalls on start-up; this ensures modules installed
// post-deploy are restored after a restage
externalModules: {
autoInstall: true,
},
// Move the admin UI
httpAdminRoot: '/red',
// Serve up the welcome page
httpStaticRoot: path.join(__dirname,"public"),
functionGlobalContext: { },
// Configure the logging output
logging: {
// Only console logging is currently supported
console: {
// Level of logging to be recorded. Options are:
// fatal - only those errors which make the application unusable should be recorded
// error - record errors which are deemed fatal for a particular request + fatal errors
// warn - record problems which are non fatal + errors + fatal errors
// info - record information about the general running of the application + warn + error + fatal errors
// debug - record information which is more verbose than info + info + warn + error + fatal errors
// trace - record very detailed logging + debug + info + warn + error + fatal errors
// off - turn off all logging (doesn't affect metrics or audit)
level: "info",
// Whether or not to include metric events in the log output
metrics: false,
// Whether or not to include audit events in the log output
audit: true
}
}
};
if (!cloudantUrl) {
console.log("Failed to find the Cloudant URL");
console.log("Falling back to local filesystem storage. Changes will *not* be saved across application restarts.");
} else {
// Set the Cloudant storage module settings
settings.cloudantService = {
// The name of the service instance to use.
name: process.env.NODE_RED_STORAGE_NAME || "cloudant",
// The URL to use
url: cloudantUrl,
// The name of the database to use
db: dbName,
// The prefix for all document names stored by this instance.
prefix: process.env.NODE_RED_STORAGE_APP_NAME || "nodered"
}
console.log("Using Cloudant service: "+settings.cloudantService.name+" db:"+settings.cloudantService.db+" prefix:"+settings.cloudantService.prefix);
settings.storageModule = require("./cloudantStorage");
}