/**
* Module for user provided API configurations
* @module api/config
*/
/** @lends module:api/config */
var countlyConfig = {
/**
* MongoDB connection definition and options
* @type {object}
* @property {string} [host=localhost] - host where to connect to mongodb, default localhost
* @property {array=} replSetServers - array with multiple hosts, if you are connecting to replica set, provide this instead of host
* @property {string=} replicaName - replica name, must provide for replica set connection to work
* @property {string} [db=countly] - countly database name, default countly
* @property {number} [port=27017] - port to use for mongodb connection, default 27017
* @property {number} [max_pool_size=500] - how large pool size connection per process to create, default 500 per process, not recommended to be more than 1000 per server
* @property {string=} username - username for authenticating user, if mongodb supports authentication
* @property {string=} password - password for authenticating user, if mongodb supports authentication
* @property {object=} dbOptions - provide raw driver database options
* @property {object=} serverOptions - provide raw driver server options, used for all, single, mongos and replica set servers
*/
mongodb: {
host: "localhost",
db: "countly",
port: 27017,
max_pool_size: 500,
//username: test,
//password: test,
//mongos: false,
/*
dbOptions:{
//db options
}
*/
},
/* or for a replica set
mongodb: {
replSetServers : [
'192.168.3.1:27017',
'192.168.3.2:27017'
],
replicaName: "test",
db: "countly",
username: test,
password: test,
max_pool_size: 100,
dbOptions:{
//db options
}
},
*/
/* or define as a url
//mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
mongodb: "mongodb://localhost:27017/countly",
*/
/**
* Default API configuration
* @type {object}
* @property {number} [port=3001] - api port number to use, default 3001
* @property {string} [host=localhost] - host to which to bind connection
* @property {number} [max_sockets=1024] - maximal amount of sockets to open simultaneously
* @property {number} workers - amount of paralel countly processes to run, defaults to cpu/core amount
* @property {number} [timeout=120000] - nodejs server request timeout, need to also increase nginx timeout too for longer requests
* @property {number} maxUploadFileSize - limit the size of uploaded file
*/
api: {
port: 3001,
host: "localhost",
max_sockets: 1024,
timeout: 120000,
maxUploadFileSize: 200 * 1024 * 1024, // 200MB
ssl: {
enabled: false,
key: "/path/to/ssl/private.key",
cert: "/path/to/ssl/certificate.crt",
// ca: "/path/to/ssl/ca_bundle.crt" // Optional: for client certificate verification, uncomment to activate
}
},
/**
* Path to use for countly directory, empty path if installed at root of website
* @type {string}
*/
path: "",
/**
* Default logging settings
* @type {object}
* @property {string} [default=warn] - default level of logging for {@link logger}
* @property {array=} info - modules to log for information level for {@link logger}
*/
logging: {
info: ["jobs", "push"],
default: "warn"
},
/**
* Default proxy settings, if provided then countly uses ip address from the right side of x-forwarded-for header ignoring list of provided proxy ip addresses
* @type {array=}
*/
ignoreProxies: [/*"127.0.0.1"*/],
/**
* Default settings to be used for {@link module:api/utils/utils.encrypt} and {@link module:api/utils/utils.decrypt} functions and for commandline
* @type {object}
* @property {string} key - key used for encryption and decryption
* @property {string|Buffer} iv - initialization vector to make encryption more secure
* @property {string} algorithm - name of the algorithm to use for encryption. The algorithm is dependent on OpenSSL, examples are 'aes192', etc. On recent OpenSSL releases, openssl list-cipher-algorithms will display the available cipher algorithms. Default value is aes-256-cbc
* @property {string} input_encoding - how encryption input is encoded. Used as output for decrypting. Default utf-8.
* @property {string} output_encoding - how encryption output is encoded. Used as input for decrypting. Default hex.
* @property {string} reports_key - key used for encryption of reports links
*/
encryption: {},
/**
* Specifies where to store files. Value "fs" means file system or basically storing files on hard drive. Another currently supported option is "gridfs" storing files in MongoDB database using GridFS. By default fallback to "fs";
* @type {string} [default=fs]
*/
fileStorage: "gridfs",
/**
* Specifies after how long time configurations are reloded from data base. Default value is 10000 (10 seconds)
* @type {integer} [default=10000]
**/
reloadConfigAfter: 10000,
/**
* Specifies if jobs are run on this countly instance
* Usable only in case when there are multiple countly instances connected to single database. Has to be set to true for at least one instance.
*/
preventJobs: false,
/**
* Share same database connection pool between databases
*/
shared_connection: true,
/**
* Simple SMTP mail sender configuration.
* Can only be used when you don't have custom mailer extend ({@code countly/extend/mail.js}).
* If omited, sendmail will be used. Sendmail is not installed in Docker images.
* @type {Object}
*/
mail: {
// nodemailer transport to use (only nodemailer-sendmail-transport & nodemailer-smtp-transport are installed by default,
//transport: 'nodemailer-smtp-transport',
// config object passed to the transport
config: {
//host: 'smtp.example.com',
//port: 25,
//auth: {
//user: 'USER',
//pass: 'PASSWORD'
//},
},
// standard strings used in email templates
strings: {
//from: 'countly@example.com',
//hithere: 'there' // as in "Hi, there" when name is unknown
}
}
};
module.exports = require('./configextender')('API', countlyConfig, process.env);