From 13ad7f3603792c17119bf1757d96d65441edc434 Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Thu, 8 Aug 2024 21:13:37 +0300 Subject: [PATCH] Slightly improve alignment inside config_defaults file --- config/config_defaults.go | 1243 +++++++++++++++++++------------------ 1 file changed, 625 insertions(+), 618 deletions(-) diff --git a/config/config_defaults.go b/config/config_defaults.go index 6cecf64b4..1ce75f7df 100644 --- a/config/config_defaults.go +++ b/config/config_defaults.go @@ -28,53 +28,53 @@ const CGRATES_CFG_JSON = ` // This is what you get when you load CGRateS with an empty configuration file. "general": { - "node_id": "", // identifier of this instance in the cluster, if empty it will be autogenerated - "logger":"*syslog", // controls the destination of logs <*syslog|*stdout> - "log_level": 6, // control the level of messages logged (0-emerg to 7-debug) - "rounding_decimals": 5, // system level precision for floats - "dbdata_encoding": "*msgpack", // encoding used to store object data in strings: <*msgpack|*json> - "tpexport_dir": "/var/spool/cgrates/tpe", // path towards export folder for offline TariffPlans - "poster_attempts": 3, // number of attempts before considering post request failed (eg: *http_post, CDR exports) + "node_id": "", // identifier of this instance in the cluster, if empty it will be autogenerated + "logger":"*syslog", // controls the destination of logs <*syslog|*stdout> + "log_level": 6, // control the level of messages logged (0-emerg to 7-debug) + "rounding_decimals": 5, // system level precision for floats + "dbdata_encoding": "*msgpack", // encoding used to store object data in strings: <*msgpack|*json> + "tpexport_dir": "/var/spool/cgrates/tpe", // path towards export folder for offline TariffPlans + "poster_attempts": 3, // number of attempts before considering post request failed (eg: *http_post, CDR exports) "failed_posts_dir": "/var/spool/cgrates/failed_posts", // directory path where we store failed requests - "failed_posts_ttl": "5s", // time to wait before writing the failed posts in a single file - "default_request_type": "*rated", // default request type to consider when missing from requests: <""|*prepaid|*postpaid|*pseudoprepaid|*rated> - "default_category": "call", // default category to consider when missing from requests - "default_tenant": "cgrates.org", // default tenant to consider when missing from requests - "default_timezone": "Local", // default timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> - "default_caching": "*reload", // default actions to do when caching items - "caching_delay": "0s", // add delay before cache reload - "min_call_duration": "0s", // only authorize calls with allowed duration higher than this - "max_call_duration": "3h", // maximum call duration a prepaid call can last - "connect_attempts": 5, // initial server connect attempts - "reconnects": -1, // number of retries in case of connection lost - "max_reconnect_interval": "", // time to wait in between reconnect attempts - "connect_timeout": "1s", // consider connection unsuccessful on timeout, 0 to disable the feature - "reply_timeout": "2s", // consider connection down for replies taking longer than this value - "locking_timeout": "0", // timeout internal locks to avoid deadlocks - "digest_separator": ",", // separator to use in replies containing data digests - "digest_equal": ":", // equal symbol used in case of digests - "rsr_separator": ";", // separator used within RSR fields - "max_parallel_conns": 100, // the maximum number of connection used by the *parallel strategy + "failed_posts_ttl": "5s", // time to wait before writing the failed posts in a single file + "default_request_type": "*rated", // default request type to consider when missing from requests: <""|*prepaid|*postpaid|*pseudoprepaid|*rated> + "default_category": "call", // default category to consider when missing from requests + "default_tenant": "cgrates.org", // default tenant to consider when missing from requests + "default_timezone": "Local", // default timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> + "default_caching": "*reload", // default actions to do when caching items + "caching_delay": "0s", // add delay before cache reload + "min_call_duration": "0s", // only authorize calls with allowed duration higher than this + "max_call_duration": "3h", // maximum call duration a prepaid call can last + "connect_attempts": 5, // initial server connect attempts + "reconnects": -1, // number of retries in case of connection lost + "max_reconnect_interval": "", // time to wait in between reconnect attempts + "connect_timeout": "1s", // consider connection unsuccessful on timeout, 0 to disable the feature + "reply_timeout": "2s", // consider connection down for replies taking longer than this value + "locking_timeout": "0", // timeout internal locks to avoid deadlocks + "digest_separator": ",", // separator to use in replies containing data digests + "digest_equal": ":", // equal symbol used in case of digests + "rsr_separator": ";", // separator used within RSR fields + "max_parallel_conns": 100 // the maximum number of connection used by the *parallel strategy }, "cores": { - "caps": 0, // maximum concurrent request allowed ( 0 to disabled ) - "caps_strategy": "*busy", // strategy in case of concurrent requests reached - "caps_stats_interval": "0", // the interval duration we sample for caps stats ( 0 to disabled ) - "shutdown_timeout": "1s" // the duration to wait until all services are stopped + "caps": 0, // maximum concurrent request allowed ( 0 to disabled ) + "caps_strategy": "*busy", // strategy in case of concurrent requests reached + "caps_stats_interval": "0", // the interval duration we sample for caps stats ( 0 to disabled ) + "shutdown_timeout": "1s" // the duration to wait until all services are stopped }, "rpc_conns": { //"*localhost": { - //"conns": [ + //"conns": [ // rpc connections definitions //{ - //"address": "127.0.0.1:2012", + //"address": "127.0.0.1:2012", //"transport":"*json", //"connect_attempts": 5, //"reconnects": -1, - //"max_reconnect_interval": "" + //"max_reconnect_interval": "", //"connect_timeout":"1s", //"reply_timeout":"2s", //"tls":false, @@ -82,51 +82,51 @@ const CGRATES_CFG_JSON = ` //"client_certificate":"", //"ca_certificate":"" //} - //], - //}, -}, // rpc connections definitions + //] + //} +}, -"data_db": { // database used to store runtime data (eg: accounts) - "db_type": "*redis", // data_db type: <*redis|*mongo> - "db_host": "127.0.0.1", // data_db host address - "db_port": 6379, // data_db port to reach the database - "db_name": "10", // data_db database name to connect to - "db_user": "cgrates", // username to use when connecting to data_db - "db_password": "", // password to use when connecting to data_db - "remote_conns":[], // the conns that are queried when the items are not found in local DB - "remote_conn_id": "", // the ID to be sent to remote_conns to identify the connection - "replication_conns":[], // the conns the items are replicated - "replication_filtered": false, // if this is enabled the replication will be made only to the conns that received a get - "replication_cache": "", // the caching action that is executed on the replication_conns when the items are replicated +"data_db": { // database used to store runtime data (eg: accounts) + "db_type": "*redis", // data_db type: <*redis|*mongo> + "db_host": "127.0.0.1", // data_db host address + "db_port": 6379, // data_db port to reach the database + "db_name": "10", // data_db database name to connect to + "db_user": "cgrates", // username to use when connecting to data_db + "db_password": "", // password to use when connecting to data_db + "remote_conns":[], // the conns that are queried when the items are not found in local DB + "remote_conn_id": "", // the ID to be sent to remote_conns to identify the connection + "replication_conns":[], // the conns the items are replicated + "replication_filtered": false, // if this is enabled the replication will be made only to the conns that received a get + "replication_cache": "", // the caching action that is executed on the replication_conns when the items are replicated "items":{ - "*accounts": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*accounts": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, "*reverse_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*destinations": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*actions": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*account_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*timings": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*resources": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*destinations": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*actions": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*account_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*timings": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*resources": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, "*statqueue_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*ranking_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*trend_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*statqueues": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*threshold_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*filters": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*route_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*attribute_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*dispatcher_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*dispatcher_hosts": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*load_ids": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, - "*versions": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*ranking_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*trend_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*statqueues": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*threshold_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*filters": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*route_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*attribute_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*dispatcher_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*dispatcher_hosts": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*load_ids": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, + "*versions": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, "*resource_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, "*stat_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, "*threshold_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, @@ -138,23 +138,23 @@ const CGRATES_CFG_JSON = ` "*sessions_backup": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, }, "opts":{ - "redisMaxConns": 10, // the connection pool size - "redisConnectAttempts": 20, // the maximum amount of dial attempts - "redisSentinel": "", // the name of sentinel when used - "redisCluster": false, // if enabled the datadb will try to connect to the redis cluster - "redisClusterSync": "5s", // the sync interval for the redis cluster - "redisClusterOndownDelay": "0", // the delay before executing the commands if the redis cluster is in the CLUSTERDOWN state - "redisConnectTimeout": "0", // the amount of wait time until timeout for a connection attempt - "redisReadTimeout": "0", // the amount of wait time until timeout for reading operations - "redisWriteTimeout": "0", // the amount of wait time until timeout for writing operations - "redisPoolPipelineWindow": "150µs", // duration after which internal pipelines are flushed (0 disables implicit pipelining) + "redisMaxConns": 10, // the connection pool size + "redisConnectAttempts": 20, // the maximum amount of dial attempts + "redisSentinel": "", // the name of sentinel when used + "redisCluster": false, // if enabled the datadb will try to connect to the redis cluster + "redisClusterSync": "5s", // the sync interval for the redis cluster + "redisClusterOndownDelay": "0", // the delay before executing the commands if the redis cluster is in the CLUSTERDOWN state + "redisConnectTimeout": "0", // the amount of wait time until timeout for a connection attempt + "redisReadTimeout": "0", // the amount of wait time until timeout for reading operations + "redisWriteTimeout": "0", // the amount of wait time until timeout for writing operations + "redisPoolPipelineWindow": "150µs", // duration after which internal pipelines are flushed (0 disables implicit pipelining) "redisPoolPipelineLimit": 0, // maximum number of commands that can be pipelined before flushing (0 means no limit) - "redisTLS": false, // if true it will use a tls connection and use the redisClientCertificate, redisClientKey and redisCACertificate for tls connection - "redisClientCertificate":"", // path to client certificate - "redisClientKey":"", // path to client key - "redisCACertificate":"", // path to CA certificate (populate for self-signed certificate otherwise let it empty) - "mongoQueryTimeout":"10s", // timeout for query when mongo is used - "mongoConnScheme": "mongodb" // scheme for MongoDB connection + "redisTLS": false, // if true it will use a tls connection and use the redisClientCertificate, redisClientKey and redisCACertificate for tls connection + "redisClientCertificate":"", // path to client certificate + "redisClientKey":"", // path to client key + "redisCACertificate":"", // path to CA certificate (populate for self-signed certificate otherwise let it empty) + "mongoQueryTimeout":"10s", // timeout for query when mongo is used + "mongoConnScheme": "mongodb" // scheme for MongoDB connection } }, @@ -179,9 +179,9 @@ const CGRATES_CFG_JSON = ` "pgSSLMode": "disable", // determines whether or with what priority a secure SSL TCP/IP connection will be negotiated with the server "pgSSLCert": "", // file name of the client SSL certificate, replacing the default ~/.postgresql/postgresql.crt "pgSSLKey": "", // location for the secret key used for the client certificate - "pgSSLPassword: "", // specifies the password for the secret key specified in pgSSLKey + "pgSSLPassword": "", // specifies the password for the secret key specified in pgSSLKey "pgSSLRootCert": "", // name of a file containing SSL certificate authority (CA) certificate(s) - "pgSchema":"" // postgres schema to use + "pgSchema": "" // postgres schema to use }, "items":{ "*session_costs": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, @@ -214,37 +214,37 @@ const CGRATES_CFG_JSON = ` "listen": { - "rpc_json": "127.0.0.1:2012", // RPC JSON listening address - "rpc_gob": "127.0.0.1:2013", // RPC GOB listening address - "http": "127.0.0.1:2080", // HTTP listening address - "rpc_json_tls" : "127.0.0.1:2022", // RPC JSON TLS listening address - "rpc_gob_tls": "127.0.0.1:2023", // RPC GOB TLS listening address - "http_tls": "127.0.0.1:2280", // HTTP TLS listening address + "rpc_json": "127.0.0.1:2012", // RPC JSON listening address + "rpc_gob": "127.0.0.1:2013", // RPC GOB listening address + "http": "127.0.0.1:2080", // HTTP listening address + "rpc_json_tls" : "127.0.0.1:2022", // RPC JSON TLS listening address + "rpc_gob_tls": "127.0.0.1:2023", // RPC GOB TLS listening address + "http_tls": "127.0.0.1:2280" // HTTP TLS listening address }, "tls": { - "server_certificate" : "", // path to server certificate - "server_key":"", // path to server key - "client_certificate" : "", // path to client certificate - "client_key":"", // path to client key - "ca_certificate":"", // path to CA certificate (populate for self-signed certificate otherwise let it empty) - "server_policy":4, // server_policy determines the TLS Client Authentication (0-NoClientCert, 1-RequestClientCert, 2-RequireAnyClientCert, 3-VerifyClientCertIfGiven, 4-RequireAndVerifyClientCert) - "server_name":"", + "server_certificate" : "", // path to server certificate + "server_key":"", // path to server key + "client_certificate" : "", // path to client certificate + "client_key":"", // path to client key + "ca_certificate":"", // path to CA certificate (populate for self-signed certificate otherwise let it empty) + "server_policy":4, // server_policy determines the TLS Client Authentication (0-NoClientCert, 1-RequestClientCert, 2-RequireAnyClientCert, 3-VerifyClientCertIfGiven, 4-RequireAndVerifyClientCert) + "server_name":"" }, -"http": { // HTTP server configuration - "json_rpc_url": "/jsonrpc", // JSON RPC relative URL ("" to disable) - "registrars_url": "/registrar", // registrar service relative URL - "prometheus_url": "/prometheus", // endpoint for prometheus metrics - "ws_url": "/ws", // WebSockets relative URL ("" to disable) - "freeswitch_cdrs_url": "/freeswitch_json", // Freeswitch CDRS relative URL ("" to disable) - "http_cdrs": "/cdr_http", // CDRS relative URL ("" to disable) - "use_basic_auth": false, // use basic authentication - "auth_users": {}, // basic authentication usernames and base64-encoded passwords (eg: { "username1": "cGFzc3dvcmQ=", "username2": "cGFzc3dvcmQy "}) +"http": { // HTTP server configuration + "json_rpc_url": "/jsonrpc", // JSON RPC relative URL ("" to disable) + "registrars_url": "/registrar", // registrar service relative URL + "prometheus_url": "/prometheus", // endpoint for prometheus metrics + "ws_url": "/ws", // WebSockets relative URL ("" to disable) + "freeswitch_cdrs_url": "/freeswitch_json", // Freeswitch CDRS relative URL ("" to disable) + "http_cdrs": "/cdr_http", // CDRS relative URL ("" to disable) + "use_basic_auth": false, // use basic authentication + "auth_users": {}, // basic authentication usernames and base64-encoded passwords (eg: { "username1": "cGFzc3dvcmQ=", "username2": "cGFzc3dvcmQy "}) "client_opts":{ - "skipTlsVerify": false, // if enabled Http Client will accept any TLS certificate + "skipTlsVerify": false, // if enabled Http Client will accept any TLS certificate // configuration options for http.Transport "tlsHandshakeTimeout": "10s", @@ -261,93 +261,93 @@ const CGRATES_CFG_JSON = ` // configuration options for net.Dialer "dialTimeout": "30s", "dialFallbackDelay": "300ms", - "dialKeepAlive": "30s", - }, + "dialKeepAlive": "30s" + } }, "schedulers": { - "enabled": false, // start Scheduler service: - "cdrs_conns": [], // connections to CDRs for *cdrlog actions <""|*internal|$rpc_conns_id> - "thresholds_conns": [], // connections to ThresholdS for *reset_threshold action <""|*internal|$rpc_conns_id> - "stats_conns": [], // connections to StatS for *reset_stat_queue action: <""|*internal|$rpc_conns_id> - "filters": [], // only execute actions matching these filters - "dynaprepaid_actionplans": [], // actionPlans to be executed in case of *dynaprepaid request type + "enabled": false, // start Scheduler service: + "cdrs_conns": [], // connections to CDRs for *cdrlog actions <""|*internal|$rpc_conns_id> + "thresholds_conns": [], // connections to ThresholdS for *reset_threshold action <""|*internal|$rpc_conns_id> + "stats_conns": [], // connections to StatS for *reset_stat_queue action: <""|*internal|$rpc_conns_id> + "filters": [], // only execute actions matching these filters + "dynaprepaid_actionplans": [] // actionPlans to be executed in case of *dynaprepaid request type }, "caches":{ "partitions": { - "*destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // destination caching + "*destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // destination caching "*reverse_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // reverse destinations index caching - "*rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // rating plans caching - "*rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // rating profiles caching - "*actions": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // actions caching - "*action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // action plans caching + "*rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // rating plans caching + "*rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // rating profiles caching + "*actions": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // actions caching + "*action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // action plans caching "*account_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // account action plans index caching - "*action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // action triggers caching - "*shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // shared groups caching - "*timings": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // timings caching - "*resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control resource profiles caching - "*resources": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control resources caching - "*event_resources": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // matching resources to events + "*action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // action triggers caching + "*shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // shared groups caching + "*timings": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // timings caching + "*resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control resource profiles caching + "*resources": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control resources caching + "*event_resources": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // matching resources to events "*statqueue_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // statqueue profiles - "*ranking_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // stataggregator profiles - "*statqueues": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // statqueues with metrics + "*ranking_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // stataggregator profiles + "*statqueues": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // statqueues with metrics "*threshold_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control threshold profiles caching - "*thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control thresholds caching - "*filters": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control filters caching - "*route_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control route profile caching + "*thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control thresholds caching + "*filters": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control filters caching + "*route_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control route profile caching "*attribute_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control attribute profile caching - "*charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control charger profile caching + "*charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control charger profile caching "*dispatcher_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control dispatcher profile caching - "*dispatcher_hosts": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control dispatcher hosts caching - "*resource_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control resource filter indexes caching - "*stat_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control stat filter indexes caching - "*threshold_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control threshold filter indexes caching - "*route_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control route filter indexes caching - "*attribute_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control attribute filter indexes caching - "*charger_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control charger filter indexes caching - "*dispatcher_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control dispatcher filter indexes caching - "*reverse_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control reverse filter indexes caching used only for set and remove filters - "*dispatcher_routes": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control dispatcher routes caching - "*dispatcher_loads": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control dispatcher load( in case of *ratio ConnParams is present) - "*dispatchers": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control dispatcher interface - "*diameter_messages": {"limit": -1, "ttl": "3h", "static_ttl": false, "remote":false, "replicate": false}, // diameter messages caching - "*radius_packets": {"limit": -1, "ttl": "3h", "static_ttl": false, "remote":false, "replicate": false}, // radius packets caching - "*rpc_responses": {"limit": 0, "ttl": "2s", "static_ttl": false, "remote":false, "replicate": false}, // RPC responses caching - "*closed_sessions": {"limit": -1, "ttl": "10s", "static_ttl": false, "remote":false, "replicate": false}, // closed sessions cached for CDRs - "*event_charges": {"limit": 0, "ttl": "10s", "static_ttl": false, "remote":false, "replicate": false}, // events proccessed by ChargerS - "*cdr_ids": {"limit": -1, "ttl": "10m", "static_ttl": false, "remote":false, "replicate": false}, // protects CDRs against double-charging - "*load_ids": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control the load_ids for items - "*rpc_connections": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // RPC connections caching - "*uch": {"limit": -1, "ttl": "3h", "static_ttl": false, "remote":false, "replicate": false}, // User cache - "*stir": {"limit": -1, "ttl": "3h", "static_ttl": false, "remote":false, "replicate": false}, // stirShaken cache keys + "*dispatcher_hosts": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control dispatcher hosts caching + "*resource_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control resource filter indexes caching + "*stat_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control stat filter indexes caching + "*threshold_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control threshold filter indexes caching + "*route_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control route filter indexes caching + "*attribute_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control attribute filter indexes caching + "*charger_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control charger filter indexes caching + "*dispatcher_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control dispatcher filter indexes caching + "*reverse_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control reverse filter indexes caching used only for set and remove filters + "*dispatcher_routes": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control dispatcher routes caching + "*dispatcher_loads": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control dispatcher load( in case of *ratio ConnParams is present) + "*dispatchers": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // control dispatcher interface + "*diameter_messages": {"limit": -1, "ttl": "3h", "static_ttl": false, "remote":false, "replicate": false}, // diameter messages caching + "*radius_packets": {"limit": -1, "ttl": "3h", "static_ttl": false, "remote":false, "replicate": false}, // radius packets caching + "*rpc_responses": {"limit": 0, "ttl": "2s", "static_ttl": false, "remote":false, "replicate": false}, // RPC responses caching + "*closed_sessions": {"limit": -1, "ttl": "10s", "static_ttl": false, "remote":false, "replicate": false}, // closed sessions cached for CDRs + "*event_charges": {"limit": 0, "ttl": "10s", "static_ttl": false, "remote":false, "replicate": false}, // events proccessed by ChargerS + "*cdr_ids": {"limit": -1, "ttl": "10m", "static_ttl": false, "remote":false, "replicate": false}, // protects CDRs against double-charging + "*load_ids": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "remote":false, "replicate": false}, // control the load_ids for items + "*rpc_connections": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // RPC connections caching + "*uch": {"limit": -1, "ttl": "3h", "static_ttl": false, "remote":false, "replicate": false}, // User cache + "*stir": {"limit": -1, "ttl": "3h", "static_ttl": false, "remote":false, "replicate": false}, // stirShaken cache keys "*apiban":{"limit": -1, "ttl": "2m", "static_ttl": false, "remote":false, "replicate": false}, "*sentrypeer":{"limit": -1, "ttl": "86400s", "static_ttl": true, "remote":false, "replicate": false}, - "*caps_events": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // caps cached samples - "*replication_hosts": {"limit": 0, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // the replication hosts cache(used when replication_filtered is enbled) + "*caps_events": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // caps cached samples + "*replication_hosts": {"limit": 0, "ttl": "", "static_ttl": false, "remote":false, "replicate": false}, // the replication hosts cache(used when replication_filtered is enbled) }, "replication_conns": [], - "remote_conns": [], // the conns that are queried when the items are not found in cache + "remote_conns": [] // the conns that are queried when the items are not found in cache }, -"filters": { // Filters configuration (*new) - "stats_conns": [], // connections to StatS for <*stats> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id> - "resources_conns": [], // connections to ResourceS for <*resources> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id> - "apiers_conns": [], // connections to RALs for <*accounts> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id> +"filters": { // Filters configuration (*new) + "stats_conns": [], // connections to StatS for <*stats> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id> + "resources_conns": [], // connections to ResourceS for <*resources> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id> + "apiers_conns": [], // connections to RALs for <*accounts> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id> }, "rals": { - "enabled": false, // enable Rating/Accounting service: - "thresholds_conns": [], // connections to ThresholdS for account/balance updates, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id> - "stats_conns": [], // connections to StatS for account/balance updates, empty to disable stats functionality: <""|*internal|$rpc_conns_id> - "sessions_conns": [], // connections to SessionS for actions requiring them: <""|*internal|$rpc_conns_id> + "enabled": false, // enable Rating/Accounting service: + "thresholds_conns": [], // connections to ThresholdS for account/balance updates, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id> + "stats_conns": [], // connections to StatS for account/balance updates, empty to disable stats functionality: <""|*internal|$rpc_conns_id> + "sessions_conns": [], // connections to SessionS for actions requiring them: <""|*internal|$rpc_conns_id> "rp_subject_prefix_matching": false, // enables prefix matching for the rating profile subject - "remove_expired":true, // enables automatic removal of expired balances - "max_computed_usage": { // do not compute usage higher than this, prevents memory overload + "remove_expired":true, // enables automatic removal of expired balances + "max_computed_usage": { // do not compute usage higher than this, prevents memory overload "*any": "189h", "*voice": "72h", "*data": "107374182400", @@ -356,67 +356,67 @@ const CGRATES_CFG_JSON = ` }, "max_increments": 1000000, "fallback_depth": 3, - "balance_rating_subject":{ // default rating subject in case that balance rating subject is empty + "balance_rating_subject":{ // default rating subject in case that balance rating subject is empty "*any": "*zero1ns", "*voice": "*zero1s" - }, + } }, -"cdrs": { // CDRs config - "enabled": false, // start the CDR Server: - "extra_fields": [], // extra fields to store in CDRs for non-generic CDRs (ie: FreeSWITCH JSON) - "store_cdrs": true, // store cdrs in StorDB - "session_cost_retries": 5, // number of queries to session_costs before recalculating CDR - "chargers_conns": [], // connection to ChargerS for CDR forking, empty to disable billing for CDRs: <""|*internal|$rpc_conns_id> - "rals_conns": [], // connections to RALs for cost calculation: <""|*internal|$rpc_conns_id> - "attributes_conns": [], // connection to AttributeS for altering *raw CDRs, empty to disable attributes functionality: <""|*internal|$rpc_conns_id> - "thresholds_conns": [], // connection to ThresholdS for CDR reporting, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id> - "stats_conns": [], // connections to StatS for CDR reporting, empty to disable stats functionality: <""|*internal|$rpc_conns_id> - "online_cdr_exports":[], // list of CDRE profiles to use for real-time CDR exports - "scheduler_conns": [], // connections to SchedulerS in case of *dynaprepaid request - "ees_conns": [], // connections to EventExporter +"cdrs": { // CDRs config + "enabled": false, // start the CDR Server: + "extra_fields": [], // extra fields to store in CDRs for non-generic CDRs (ie: FreeSWITCH JSON) + "store_cdrs": true, // store cdrs in StorDB + "session_cost_retries": 5, // number of queries to session_costs before recalculating CDR + "chargers_conns": [], // connection to ChargerS for CDR forking, empty to disable billing for CDRs: <""|*internal|$rpc_conns_id> + "rals_conns": [], // connections to RALs for cost calculation: <""|*internal|$rpc_conns_id> + "attributes_conns": [], // connection to AttributeS for altering *raw CDRs, empty to disable attributes functionality: <""|*internal|$rpc_conns_id> + "thresholds_conns": [], // connection to ThresholdS for CDR reporting, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id> + "stats_conns": [], // connections to StatS for CDR reporting, empty to disable stats functionality: <""|*internal|$rpc_conns_id> + "online_cdr_exports":[], // list of CDRE profiles to use for real-time CDR exports + "scheduler_conns": [], // connections to SchedulerS in case of *dynaprepaid request + "ees_conns": [] // connections to EventExporter }, -"ers": { // EventReaderService - "enabled": false, // starts the EventReader service: - "sessions_conns": ["*internal"], // RPC Connections IDs - "ees_conns": [], // connection for routing processed and invalid messages through EEs - "concurrent_events": 1, // number of events to generate concurrently on CGRateS side - "partial_cache_ttl": "1s", // the duration to cache partial records when not pairing +"ers": { // EventReaderService + "enabled": false, // starts the EventReader service: + "sessions_conns": ["*internal"], // RPC Connections IDs + "ees_conns": [], // connection for routing processed and invalid messages through EEs + "concurrent_events": 1, // number of events to generate concurrently on CGRateS side + "partial_cache_ttl": "1s", // the duration to cache partial records when not pairing "readers": [ { - "id": "*default", // identifier of the EventReader profile - "type": "*none", // reader type <*file_csv> - "run_delay": "0", // sleep interval in seconds between consecutive runs, -1 to use automation via inotify or 0 to disable running all together - "concurrent_requests": 1024, // maximum simultaneous requests/files to process, 0 for unlimited - "source_path": "/var/spool/cgrates/ers/in", // read data from this path + "id": "*default", // identifier of the EventReader profile + "type": "*none", // reader type <*file_csv> + "run_delay": "0", // sleep interval in seconds between consecutive runs, -1 to use automation via inotify or 0 to disable running all together + "concurrent_requests": 1024, // maximum simultaneous requests/files to process, 0 for unlimited + "source_path": "/var/spool/cgrates/ers/in", // read data from this path "processed_path": "/var/spool/cgrates/ers/out", // move processed data here - "tenant": "", // tenant used by import - "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> - "filters": [], // limit parsing based on the filters - "flags": [], // flags to influence the event processing - "reconnects": -1, // number of retries in case of connection lost - "ees_success_ids": [], // ids of exporters used for moving the successfully processed event - "ees_failed_ids": [], // ids of exporters used for moving the unprocessed event - "max_reconnect_interval": "5m", // time to wait in between reconnect attempts + "tenant": "", // tenant used by import + "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> + "filters": [], // limit parsing based on the filters + "flags": [], // flags to influence the event processing + "reconnects": -1, // number of retries in case of connection lost + "ees_success_ids": [], // ids of exporters used for moving the successfully processed event + "ees_failed_ids": [], // ids of exporters used for moving the unprocessed event + "max_reconnect_interval": "5m", // time to wait in between reconnect attempts "opts": { // Partial - // "partialPath": "/", // the path were the partial events will be sent - "partialCacheAction": "*none", // the action that will be executed for the partial CSVs that are not matched<*none|*post_cdr|*dump_to_file> - "partialOrderField": "~*req.AnswerTime", // the field after what the events are order when merged - // "partialcsvFieldSeparator": "," // separator used when dumping the fields + // "partialPath": "/", // the path were the partial events will be sent + "partialCacheAction": "*none", // the action that will be executed for the partial CSVs that are not matched<*none|*post_cdr|*dump_to_file> + "partialOrderField": "~*req.AnswerTime", // the field after what the events are order when merged + // "partialcsvFieldSeparator": "," // separator used when dumping the fields // FileCSV - "csvRowLength": 0, // Number of fields from csv file, -1 to disable checking, 0 to inherit the lenght of first record - "csvFieldSeparator": ",", // separator used when reading the fields - "csvHeaderDefineChar": ":", // the starting character for header definition used in case of CSV files - // "csvLazyQuotes": false, // if a quote may appear in an unquoted field and a non-doubled quote may appear in a quoted field + "csvRowLength": 0, // Number of fields from csv file, -1 to disable checking, 0 to inherit the lenght of first record + "csvFieldSeparator": ",", // separator used when reading the fields + "csvHeaderDefineChar": ":", // the starting character for header definition used in case of CSV files + // "csvLazyQuotes": false, // if a quote may appear in an unquoted field and a non-doubled quote may appear in a quoted field // FileXML - // "xmlRootPath": "", // path towards one event in case of XML CDRs + // "xmlRootPath": "", // path towards one event in case of XML CDRs // AMQP and AMQPv1 // "amqpQueueID": "cgrates_cdrs", // identifier for the primary queue where messages are consumed (0.9.1/1.0) @@ -430,44 +430,44 @@ const CGRATES_CFG_JSON = ` // "amqpRoutingKey": "", // key used for routing messages to the primary queue (0.9.1) // Kafka - // "kafkaTopic": "cgrates", // the topic from were the events are read - // "kafkaGroupID": "cgrates", // the group that reads the events - // "kafkaMaxWait": "1ms", // the maximum amount of time to wait for new data to come - // "kafkaTLS": false, // if true it will try to authenticate the client - // "kafkaCAPath": "", // path to certificate authority pem - // "kafkaSkipTLSVerify": false, // if true it will skip certificate verification + // "kafkaTopic": "cgrates", // the topic from were the events are read + // "kafkaGroupID": "cgrates", // the group that reads the events + // "kafkaMaxWait": "1ms", // the maximum amount of time to wait for new data to come + // "kafkaTLS": false, // if true it will try to authenticate the client + // "kafkaCAPath": "", // path to certificate authority pem + // "kafkaSkipTLSVerify": false, // if true it will skip certificate verification // SQL - // "sqlDBName": "cgrates", // the name of the database from were the events are read - // "sqlTableName": "cdrs", // the name of the table from were the events are read - // "pgSSLMode": "disable", // the ssl mode for postgres db + // "sqlDBName": "cgrates", // the name of the database from were the events are read + // "sqlTableName": "cdrs", // the name of the table from were the events are read + // "pgSSLMode": "disable", // the ssl mode for postgres db // SQS and S3 // "awsRegion": "", // "awsKey": "", // "awsSecret": "", // "awsToken": "", - + // SQS - // "sqsQueueID": "cgrates_cdrs", // the queue id for SQS readers from were the events are read + // "sqsQueueID": "cgrates_cdrs", // the queue id for SQS readers from were the events are read // S3 - // "s3BucketID": "cgrates_cdrs", // the bucket id for S3 readers from were the events are read + // "s3BucketID": "cgrates_cdrs", // the bucket id for S3 readers from were the events are read // nats - // "natsJetStream": false, // controls if the nats reader uses the JetStream - // "natsConsumerName": "cgrates", // in case of JetStream the name of the consumer - // "natsStreamName": "cdrs", // the name of the NATS JetStream stream from which the consumer will read messages - "natsSubject": "cgrates_cdrs", // the subject from were the events are read - // "natsQueueID": "", // the queue id the consumer listen to - // "natsJWTFile": "", // the path to the JWT file( can be the chained file or the user file) - // "natsSeedFile": "", // the path to the seed files( if the JWT file is mention this is used as seedFile for the JWT user mentioned above) - // "natsCertificateAuthority": "", // the path to a custom certificate authority file( used by tls) - // "natsClientCertificate": "", // the path to a client certificate( used by tls) - // "natsClientKey": "", // the path to a client key( used by tls) - // "natsJetStreamMaxWait": "5s", // the maximum amount of time to wait for a response + // "natsJetStream": false, // controls if the nats reader uses the JetStream + // "natsConsumerName": "cgrates", // in case of JetStream the name of the consumer + // "natsStreamName": "cdrs", // the name of the NATS JetStream stream from which the consumer will read messages + "natsSubject": "cgrates_cdrs", // the subject from were the events are read + // "natsQueueID": "", // the queue id the consumer listen to + // "natsJWTFile": "", // the path to the JWT file( can be the chained file or the user file) + // "natsSeedFile": "", // the path to the seed files( if the JWT file is mention this is used as seedFile for the JWT user mentioned above) + // "natsCertificateAuthority": "", // the path to a custom certificate authority file( used by tls) + // "natsClientCertificate": "", // the path to a client certificate( used by tls) + // "natsClientKey": "", // the path to a client key( used by tls) + // "natsJetStreamMaxWait": "5s", // the maximum amount of time to wait for a response }, - "fields":[ // import fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value + "fields":[ // import fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value {"tag": "ToR", "path": "*cgreq.ToR", "type": "*variable", "value": "~*req.2", "mandatory": true}, {"tag": "OriginID", "path": "*cgreq.OriginID", "type": "*variable", "value": "~*req.3", "mandatory": true}, {"tag": "RequestType", "path": "*cgreq.RequestType", "type": "*variable", "value": "~*req.4", "mandatory": true}, @@ -481,278 +481,287 @@ const CGRATES_CFG_JSON = ` {"tag": "Usage", "path": "*cgreq.Usage", "type": "*variable", "value": "~*req.13", "mandatory": true}, ], "partial_commit_fields": [], - "cache_dump_fields": [], - }, - ], + "cache_dump_fields": [] + } + ] }, - -"ees": { // EventExporterService - "enabled": false, // starts the EventReader service: - "attributes_conns":[], // RPC Connections IDs + +"ees": { // EventExporterService + "enabled": false, // starts the EventReader service: + "attributes_conns":[], // RPC Connections IDs "cache": { "*file_csv": {"limit": -1, "ttl": "5s", "static_ttl": false}, }, "exporters": [ { - "id": "*default", // identifier of the EventReader profile - "type": "*none", // exporter type - "export_path": "/var/spool/cgrates/ees", // path where the exported events will be placed + "id": "*default", // identifier of the EventReader profile + "type": "*none", // exporter type + "export_path": "/var/spool/cgrates/ees", // path where the exported events will be placed "failed_posts_dir": "/var/spool/cgrates/failed_posts", // directory path where we store failed requests - "concurrent_requests": 0, // maximum simultaneous requests to process, 0 for unlimited - "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> - "filters": [], // limit parsing based on the filters - "flags": [], // flags to influence the event processing - "attribute_ids": [], // select Attribute profiles instead of discovering them - "attribute_context": "", // context used to discover matching Attribute profiles - "synchronous": false, // block processing until export has a result - "attempts": 1, // export attempts + "concurrent_requests": 0, // maximum simultaneous requests to process, 0 for unlimited + "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> + "filters": [], // limit parsing based on the filters + "flags": [], // flags to influence the event processing + "attribute_ids": [], // select Attribute profiles instead of discovering them + "attribute_context": "", // context used to discover matching Attribute profiles + "synchronous": false, // block processing until export has a result + "attempts": 1, // export attempts "opts": { // CSV - // "csvFieldSeparator": ",", // separator used when reading the fields + // "csvFieldSeparator": ",", // separator used when reading the fields // Elasticsearch options - // "elsCloud":true, // ExportPath will be an CLoud ID deployment - // "elsApiKey": "", // Base64-encoded token for authorization; if set, overrides username/password and service token. - // "elsUsername":"", // Username for HTTP Basic Authentication. - // "elsPassword":"", // Password for HTTP Basic Authentication. - // "elsServiceToken":"" // Service token for authorization; if set, overrides username/password. - // "elsCertificateFingerPrint":"" // SHA256 hex fingerprint given by Elasticsearch on first launch. - // "elsDiscoverNodesOnStart":false, // Discover nodes when initializing the client. Default: false. - // "elsDiscoverNodesInterval":"10s", // Discover nodes periodically. Default: disabled. - // "elsEnableDebugLogger":"false", // Enable the debug logging. - // "elsLogger":"", //The logger type can either be elsJson,elsColor and elsText - // "elsCompressRequestBody":false, //Enable compression on requests - // "elsCompressRequestBodyLevel":0, //Default: gzip.DefaultCompression, 9:BestCompression,-2:HuffmanOnly,1:BestSpeed - // "elsRetryOnStatus":[], // List of status codes for retry. Default: 502, 503, 504. - // "elsMaxRetries": 0, // Default: 3. - // "elsDisableRetry": false, // Default: false. - - - // "elsIndex": "", // ElsIndex - // "elsIfPrimaryTerm": 0, // ElsIfPrimaryTerm - // "elsIfSeqNo": 0, // ElsIfSeqNo - // "elsOpType": "", // ElsOpType - // "elsPipeline": "", // ElsPipeline - // "elsRouting": "", // ElsRouting - // "elsTimeout": "", // ElsTimeout - // "elsVersion": 0, // ElsVersionLow - // "elsVersionType": "", // ElsVersionType - // "elsWaitForActiveShards": "", // ElsWaitForActiveShards - - + // "elsCloud":true, // ExportPath will be an CLoud ID deployment + // "elsApiKey": "", // Base64-encoded token for authorization; if set, overrides username/password and service token. + // "elsUsername":"", // Username for HTTP Basic Authentication. + // "elsPassword":"", // Password for HTTP Basic Authentication. + // "elsServiceToken":"" // Service token for authorization; if set, overrides username/password. + // "elsCertificateFingerPrint":"" // SHA256 hex fingerprint given by Elasticsearch on first launch. + // "elsDiscoverNodesOnStart":false, // Discover nodes when initializing the client. Default: false. + // "elsDiscoverNodesInterval":"10s", // Discover nodes periodically. Default: disabled. + // "elsEnableDebugLogger":"false", // Enable the debug logging. + // "elsLogger":"", // The logger type can either be elsJson,elsColor and elsText + // "elsCompressRequestBody":false, // Enable compression on requests + // "elsCompressRequestBodyLevel":0, // Default: gzip.DefaultCompression, 9:BestCompression,-2:HuffmanOnly,1:BestSpeed + // "elsRetryOnStatus":[], // List of status codes for retry. Default: 502, 503, 504. + // "elsMaxRetries": 0, // Default: 3. + // "elsDisableRetry": false, // Default: false. + + + // "elsIndex": "", // ElsIndex + // "elsIfPrimaryTerm": 0, // ElsIfPrimaryTerm + // "elsIfSeqNo": 0, // ElsIfSeqNo + // "elsOpType": "", // ElsOpType + // "elsPipeline": "", // ElsPipeline + // "elsRouting": "", // ElsRouting + // "elsTimeout": "", // ElsTimeout + // "elsVersion": 0, // ElsVersionLow + // "elsVersionType": "", // ElsVersionType + // "elsWaitForActiveShards": "", // ElsWaitForActiveShards + + // SQL - // "sqlMaxIdleConns": 0, // SQLMaxIdleConns - // "sqlMaxOpenConns": 0, // SQLMaxOpenConns - // "sqlConnMaxLifetime": "0", // SQLConnMaxLifetime - // "mysqlDSNParams": {}, // DSN params + // "sqlMaxIdleConns": 0, // SQLMaxIdleConns + // "sqlMaxOpenConns": 0, // SQLMaxOpenConns + // "sqlConnMaxLifetime": "0", // SQLConnMaxLifetime + // "mysqlDSNParams": {}, // DSN params - // "sqlTableName":"cdrs", // the name of the table from where the events are exported - // "sqlDBName": "cgrates", // the name of the database from where the events are exported - // "pgSSLMode": "disable", // the SSLMode for postgres + // "sqlTableName":"cdrs", // the name of the table from where the events are exported + // "sqlDBName": "cgrates", // the name of the database from where the events are exported + // "pgSSLMode": "disable", // the SSLMode for postgres // Kafka - // "kafkaTopic": "cgrates_cdrs", // the topic from where the events are exported - // "kafkaBatchSize": 100, // limit on how many messages will be buffered before being sent - // "kafkaTLS": false, // if true, it will try to authenticate the server - // "kafkaCAPath": "", // path to certificate authority pem - // "kafkaSkipTLSVerify: false, // if true it will skip certificate verification - - + // "kafkaTopic": "cgrates_cdrs", // the topic from where the events are exported + // "kafkaBatchSize": 100, // limit on how many messages will be buffered before being sent + // "kafkaTLS": false, // if true, it will try to authenticate the server + // "kafkaCAPath": "", // path to certificate authority pem + // "kafkaSkipTLSVerify: false, // if true it will skip certificate verification + + // AMQP - // "amqpQueueID": "cgrates_cdrs", // the queue id for AMQP exporters from were the events are exported - // "amqpRoutingKey": "", // RoutingKey, amqp 0.9.1 exclusive - // "amqpExchange": "", // Exchange, amqp 0.9.1 exclusive - // "amqpExchangeType": "", // ExchangeType, amqp 0.9.1 exclusive - // "amqpUsername": "", // amqp 1.0 exclusive, used for SASL PLAIN auth, usually represents the policy name - // "amqpPassword": "", // amqp 1.0 exclusive, used for SASL PLAIN auth, populated with one of its policy's keys - + // "amqpQueueID": "cgrates_cdrs", // the queue id for AMQP exporters from were the events are exported + // "amqpRoutingKey": "", // RoutingKey, amqp 0.9.1 exclusive + // "amqpExchange": "", // Exchange, amqp 0.9.1 exclusive + // "amqpExchangeType": "", // ExchangeType, amqp 0.9.1 exclusive + // "amqpUsername": "", // amqp 1.0 exclusive, used for SASL PLAIN auth, usually represents the policy name + // "amqpPassword": "", // amqp 1.0 exclusive, used for SASL PLAIN auth, populated with one of its policy's keys + // SQS and S3 - // "awsRegion": "", // AWSRegion - // "awsKey": "", // AWSKey - // "awsSecret": "", // AWSSecret - // "awsToken": "", // AWSToken + // "awsRegion": "", // AWSRegion + // "awsKey": "", // AWSKey + // "awsSecret": "", // AWSSecret + // "awsToken": "", // AWSToken //SQS - // "sqsQueueID": "cgrates_cdrs", // the queue id for SQS exporters from were the events are exported + // "sqsQueueID": "cgrates_cdrs", // the queue id for SQS exporters from were the events are exported // S3 - // "s3BucketID": "cgrates_cdrs", // the bucket id for S3 readers from where the events that are exported - // "s3FolderPath": "", // S3FolderPath + // "s3BucketID": "cgrates_cdrs", // the bucket id for S3 readers from where the events that are exported + // "s3FolderPath": "", // S3FolderPath // Nats - // "natsJetStream": false, // controls if the nats poster uses the JetStream - // "natsSubject": "cgrates_cdrs", // the subject were the events are exported - // "natsJWTFile": "", // the path to the JWT file( can be the chained file or the user file) - // "natsSeedFile": "", // the path to the seed files( if the JWT file is mention this is used as seedFile for the JWT user mentioned above) - // "natsCertificateAuthority": "", // the path to a custom certificate authority file( used by tls) - // "natsClientCertificate": "", // the path to a client certificate( used by tls) - // "natsClientKey": "", // the path to a client key( used by tls) - // "natsJetStreamMaxWait": "5s", // the maximum amount of time to wait for a response + // "natsJetStream": false, // controls if the nats poster uses the JetStream + // "natsSubject": "cgrates_cdrs", // the subject were the events are exported + // "natsJWTFile": "", // the path to the JWT file( can be the chained file or the user file) + // "natsSeedFile": "", // the path to the seed files( if the JWT file is mention this is used as seedFile for the JWT user mentioned above) + // "natsCertificateAuthority": "", // the path to a custom certificate authority file( used by tls) + // "natsClientCertificate": "", // the path to a client certificate( used by tls) + // "natsClientKey": "", // the path to a client key( used by tls) + // "natsJetStreamMaxWait": "5s", // the maximum amount of time to wait for a response //RPC - // "rpcCodec": "", // for compression, encoding and decoding - // "serviceMethod": "", // the method that should be called trough RPC - // "keyPath": "" , // path to server key - // "certPath": "", // path to client certificate - // "caPath": "", // path to CA certificate - // "tls": false, // - // "connIDs": [], // connections for connManager to this exporter - // "rpcConnTimeout" : "1s", // connection unsuccessful on timeout - // "rpcReplyTimeout":"2s", // connection down at replies if taking longer that this value + // "rpcCodec": "", // for compression, encoding and decoding + // "serviceMethod": "", // the method that should be called trough RPC + // "keyPath": "" , // path to server key + // "certPath": "", // path to client certificate + // "caPath": "", // path to CA certificate + // "tls": false, + // "connIDs": [], // connections for connManager to this exporter + // "rpcConnTimeout" : "1s", // connection unsuccessful on timeout + // "rpcReplyTimeout":"2s", // connection down at replies if taking longer that this value // "rpcAPIOpts": {}, - }, // extra options for exporter - "fields":[] // import fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value + }, // extra options for exporter + "fields":[] // import fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value } ] }, "sessions": { - "enabled": false, // starts the session service: - "listen_bijson": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests - "listen_bigob": "", // address where to listen for bidirectional GOB-RPC requests - "chargers_conns": [], // connections to ChargerS for session forking <""|*internal|$rpc_conns_id> - "rals_conns": [], // connections to RALs for rating/accounting <""|*internal|$rpc_conns_id> - "cdrs_conns": [], // connections to CDRs for CDR posting <""|*internal|$rpc_conns_id> - "resources_conns": [], // connections to ResourceS for resources monitoring <""|*internal|$rpc_conns_id> - "thresholds_conns": [], // connections to ThresholdS for reporting session events <""|*internal|$rpc_conns_id> - "stats_conns": [], // connections to StatS for reporting session events <""|*internal|$rpc_conns_id> - "routes_conns": [], // connections to RouteS for querying routes for event <""|*internal|$rpc_conns_id> - "attributes_conns": [], // connections to AttributeS for altering event fields <""|*internal|$rpc_conns_id> - "replication_conns": [], // replicate sessions towards these session services - "debit_interval": "0s", // interval to perform debits on. - "store_session_costs": false, // enable storing of the session costs within CDRs - "default_usage":{ // the usage if the event is missing the usage field + "enabled": false, // starts the session service: + "listen_bijson": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests + "listen_bigob": "", // address where to listen for bidirectional GOB-RPC requests + "chargers_conns": [], // connections to ChargerS for session forking <""|*internal|$rpc_conns_id> + "rals_conns": [], // connections to RALs for rating/accounting <""|*internal|$rpc_conns_id> + "cdrs_conns": [], // connections to CDRs for CDR posting <""|*internal|$rpc_conns_id> + "resources_conns": [], // connections to ResourceS for resources monitoring <""|*internal|$rpc_conns_id> + "thresholds_conns": [], // connections to ThresholdS for reporting session events <""|*internal|$rpc_conns_id> + "stats_conns": [], // connections to StatS for reporting session events <""|*internal|$rpc_conns_id> + "routes_conns": [], // connections to RouteS for querying routes for event <""|*internal|$rpc_conns_id> + "attributes_conns": [], // connections to AttributeS for altering event fields <""|*internal|$rpc_conns_id> + "replication_conns": [], // replicate sessions towards these session services + "debit_interval": "0s", // interval to perform debits on. + "store_session_costs": false, // enable storing of the session costs within CDRs + "default_usage":{ // the usage if the event is missing the usage field "*any": "3h", "*voice": "3h", "*data": "1048576", "*sms": "1", }, - "session_ttl": "0s", // time after a session with no updates is terminated, not defined by default - //"session_ttl_max_delay": "", // activates session_ttl randomization and limits the maximum possible delay - //"session_ttl_last_used": "", // tweak LastUsed for sessions timing-out, not defined by default - //"session_ttl_usage": "", // tweak Usage for sessions timing-out, not defined by default - //"session_last_usage": "", // tweak LastUsage for session timing-out, not defined by default - "session_indexes": [], // index sessions based on these fields for GetActiveSessions API - "client_protocol": 2.0, // version of protocol to use when acting as JSON-PRC client <"0","1.0","2.0"> - "channel_sync_interval": "0", // sync channels to detect stale sessions (0 to disable) - "stale_chan_max_extra_usage": "0", // add random usage below max for stale channels - "terminate_attempts": 5, // attempts to get the session before terminating it - "alterable_fields": [], // the session fields that can be updated - //"min_dur_low_balance": "5s", // threshold which will trigger low balance warnings for prepaid calls (needs to be lower than debit_interval) + "session_ttl": "0s", // time after a session with no updates is terminated, not defined by default + //"session_ttl_max_delay": "", // activates session_ttl randomization and limits the maximum possible delay + //"session_ttl_last_used": "", // tweak LastUsed for sessions timing-out, not defined by default + //"session_ttl_usage": "", // tweak Usage for sessions timing-out, not defined by default + //"session_last_usage": "", // tweak LastUsage for session timing-out, not defined by default + "session_indexes": [], // index sessions based on these fields for GetActiveSessions API + "client_protocol": 2.0, // version of protocol to use when acting as JSON-PRC client <"0","1.0","2.0"> + "channel_sync_interval": "0", // sync channels to detect stale sessions (0 to disable) + "stale_chan_max_extra_usage": "0", // add random usage below max for stale channels + "terminate_attempts": 5, // attempts to get the session before terminating it + "alterable_fields": [], // the session fields that can be updated + //"min_dur_low_balance": "5s", // threshold which will trigger low balance warnings for prepaid calls (needs to be lower than debit_interval) "stir": { - "allowed_attest": ["*any"], // the default attest for stir/shaken authentication <*any|A|B|C> - "payload_maxduration": "-1", // the duration that stir header is valid after it was created - "default_attest": "A", // the default attest level if not mentioned in API - "publickey_path": "", // the path to the public key - "privatekey_path": "", // the path to the private key + "allowed_attest": ["*any"], // the default attest for stir/shaken authentication <*any|A|B|C> + "payload_maxduration": "-1", // the duration that stir header is valid after it was created + "default_attest": "A", // the default attest level if not mentioned in API + "publickey_path": "", // the path to the public key + "privatekey_path": "", // the path to the private key }, - "scheduler_conns": [], // connections to SchedulerS in case of *dynaprepaid request - "backup_interval": "0s", // backup active sessions regularly to dataDB: "0" - disables it; "-1" - dump at shutdown; <""|$dur> + "scheduler_conns": [], // connections to SchedulerS in case of *dynaprepaid request + "backup_interval": "0s", // backup active sessions regularly to dataDB: "0" - disables it; "-1" - dump at shutdown; <""|$dur> }, "asterisk_agent": { - "enabled": false, // starts the Asterisk agent: + "enabled": false, // starts the Asterisk agent: "sessions_conns": ["*birpc_internal"], - "create_cdr": false, // create CDR out of events and sends it to CDRS component - "asterisk_conns":[ // instantiate connections to multiple Asterisk servers - {"address": "127.0.0.1:8088", "user": "cgrates", "password": "CGRateS.org", "connect_attempts": 3, "reconnects": 5, "max_reconnect_interval": ""} - ], + "create_cdr": false, // create CDR out of events and sends it to CDRS component + "asterisk_conns":[ // instantiate connections to multiple Asterisk servers + { + "address": "127.0.0.1:8088", + "user": "cgrates", + "password": "CGRateS.org", + "connect_attempts": 3, + "reconnects": 5, + "max_reconnect_interval": "" + } + ] }, "freeswitch_agent": { - "enabled": false, // starts the FreeSWITCH agent: + "enabled": false, // starts the FreeSWITCH agent: "sessions_conns": ["*birpc_internal"], - "subscribe_park": true, // subscribe via fsock to receive park events - "create_cdr": false, // creates CDR out of events and sends them to CDRS component - "extra_fields": [], // extra fields to store in auth/CDRs when creating them - "low_balance_ann_file": "", // file to be played when low balance is reached for prepaid calls + "subscribe_park": true, // subscribe via fsock to receive park events + "create_cdr": false, // creates CDR out of events and sends them to CDRS component + "extra_fields": [], // extra fields to store in auth/CDRs when creating them + "low_balance_ann_file": "", // file to be played when low balance is reached for prepaid calls "empty_balance_context": "", // if defined, prepaid calls will be transferred to this context on empty balance "empty_balance_ann_file": "", // file to be played before disconnecting prepaid calls on empty balance (applies only if no context defined) "max_wait_connection": "2s", // maximum duration to wait for a connection to be retrieved from the pool "active_session_delimiter": ",", // delimiter for 'show channels' responses and requests - "event_socket_conns":[ // instantiate connections to multiple FreeSWITCH servers + "event_socket_conns":[ // instantiate connections to multiple FreeSWITCH servers { "address": "127.0.0.1:8021", // FreeSWITCH server address and port - "password": "ClueCon", // authentication password for FreeSWITCH - "reconnects": 5, // max reconnect attempts before giving up ("-1" for no limit) - "max_reconnect_interval": "", // max time between reconnects ("0" for no limit) - "reply_timeout": "1m", // max wait time for FreeSWITCH replies + "password": "ClueCon", // authentication password for FreeSWITCH + "reconnects": 5, // max reconnect attempts before giving up ("-1" for no limit) + "max_reconnect_interval": "", // max time between reconnects ("0" for no limit) + "reply_timeout": "1m", // max wait time for FreeSWITCH replies "alias":"" } - ], + ] }, "kamailio_agent": { - "enabled": false, // starts Kamailio agent: + "enabled": false, // starts Kamailio agent: "sessions_conns": ["*birpc_internal"], - "create_cdr": false, // create CDR out of events and sends them to CDRS component - "timezone": "", // timezone of the Kamailio server - "evapi_conns":[ // instantiate connections to multiple Kamailio servers - {"address": "127.0.0.1:8448", "reconnects": 5, "max_reconnect_interval": ""} - ], + "create_cdr": false, // create CDR out of events and sends them to CDRS component + "timezone": "", // timezone of the Kamailio server + "evapi_conns":[ // instantiate connections to multiple Kamailio servers + { + "address": "127.0.0.1:8448", + "reconnects": 5, + "max_reconnect_interval": "" + } + ] }, "diameter_agent": { - "enabled": false, // enables the diameter agent: - "listen": "127.0.0.1:3868", // address where to listen for diameter requests - "listen_net": "tcp", // transport type for diameter + "enabled": false, // enables the diameter agent: + "listen": "127.0.0.1:3868", // address where to listen for diameter requests + "listen_net": "tcp", // transport type for diameter "dictionaries_path": "/usr/share/cgrates/diameter/dict/", // path towards directory holding additional dictionaries to load "sessions_conns": ["*birpc_internal"], - "origin_host": "CGR-DA", // diameter Origin-Host AVP used in replies - "origin_realm": "cgrates.org", // diameter Origin-Realm AVP used in replies - "vendor_id": 0, // diameter Vendor-Id AVP used in replies - "product_name": "CGRateS", // diameter Product-Name AVP used in replies - "concurrent_requests": -1, // limit the number of active requests processed by the server <-1|0-n> - "synced_conn_requests": false, // process one request at the time per connection - "asr_template": "", // enable AbortSession message being sent to client on DisconnectSession - "rar_template": "", // template used to build the Re-Auth-Request - "forced_disconnect": "*none", // the request to send to diameter on DisconnectSession <*none|*asr|*rar> - "request_processors": [ // list of processors to be applied to diameter messages - ], + "origin_host": "CGR-DA", // diameter Origin-Host AVP used in replies + "origin_realm": "cgrates.org", // diameter Origin-Realm AVP used in replies + "vendor_id": 0, // diameter Vendor-Id AVP used in replies + "product_name": "CGRateS", // diameter Product-Name AVP used in replies + "concurrent_requests": -1, // limit the number of active requests processed by the server <-1|0-n> + "synced_conn_requests": false, // process one request at the time per connection + "asr_template": "", // enable AbortSession message being sent to client on DisconnectSession + "rar_template": "", // template used to build the Re-Auth-Request + "forced_disconnect": "*none", // the request to send to diameter on DisconnectSession <*none|*asr|*rar> + "request_processors": [] // list of processors to be applied to diameter messages }, "radius_agent": { - "enabled": false, // enables the radius agent: + "enabled": false, // enables the radius agent: "listeners":[ { - "network": "udp", // network to listen on - "auth_address": "127.0.0.1:1812", // address where to listen for radius authentication requests - "acct_address": "127.0.0.1:1813" // address where to listen for radius accounting requests + "network": "udp", // network to listen on + "auth_address": "127.0.0.1:1812", // address where to listen for radius authentication requests + "acct_address": "127.0.0.1:1813" // address where to listen for radius accounting requests } ], - "client_secrets": { // hash containing secrets for clients connecting here <*default|$client_ip> + "client_secrets": { // hash containing secrets for clients connecting here <*default|$client_ip> "*default": "CGRateS.org" }, - "client_dictionaries": { // per client path towards directory holding additional dictionaries to load (extra to RFC) - "*default": [ // key represents the client IP or catch-all <*default|$client_ip> + "client_dictionaries": { // per client path towards directory holding additional dictionaries to load (extra to RFC) + "*default": [ // key represents the client IP or catch-all <*default|$client_ip> "/usr/share/cgrates/radius/dict/", ] }, - "client_da_addresses": { // configuration for clients capable of handling Dynamic Authorization (CoA/DM) requests. - // "nasIdentifier": { // identifier for the NAS, typically the host from the initial RADIUS packet. - // "transport": "udp", // transport protocol for Dynamic Authorization requests, defaults to UDP. - // "host": "", // optionally specify an alternative host for DA requests. Defaults to the NAS identifier if empty. - // "port": 3799, // port for Dynamic Authorization requests, default is 3799. - // "flags": [] // additional options, currently supports *log for logging DA requests before sending. + "client_da_addresses": { // configuration for clients capable of handling Dynamic Authorization (CoA/DM) requests. + // "nasIdentifier": { // identifier for the NAS, typically the host from the initial RADIUS packet. + // "transport": "udp", // transport protocol for Dynamic Authorization requests, defaults to UDP. + // "host": "", // optionally specify an alternative host for DA requests. Defaults to the NAS identifier if empty. + // "port": 3799, // port for Dynamic Authorization requests, default is 3799. + // "flags": [] // additional options, currently supports *log for logging DA requests before sending. // } }, - "requests_cache_key": "", // used to choose the cache key of a RADIUS packet + "requests_cache_key": "", // used to choose the cache key of a RADIUS packet "sessions_conns": ["*internal"], - "dmr_template": "*dmr", // template used to build the Disconnect-Request packet - "coa_template": "*coa", // template used to build the CoA-Request packet - "request_processors": [ // request processors to be applied to Radius messages - ] + "dmr_template": "*dmr", // template used to build the Disconnect-Request packet + "coa_template": "*coa", // template used to build the CoA-Request packet + "request_processors": [] // request processors to be applied to Radius messages }, @@ -761,60 +770,59 @@ const CGRATES_CFG_JSON = ` "dns_agent": { - "enabled": false, // enables the DNS agent: + "enabled": false, // enables the DNS agent: "listeners":[ { - "address": "127.0.0.1:53", // address where to listen for DNS requests - "network": "udp" // network to listen on + "address": "127.0.0.1:53", // address where to listen for DNS requests + "network": "udp" // network to listen on } ], "sessions_conns": ["*internal"], - "timezone": "", // timezone of the events if not specified - "request_processors": [ // request processors to be applied to DNS messages - ], + "timezone": "", // timezone of the events if not specified + "request_processors": [] // request processors to be applied to DNS messages }, -"attributes": { // AttributeS config - "enabled": false, // starts attribute service: - "stats_conns": [], // connections to StatS, empty to disable: <""|*internal|$rpc_conns_id> - "resources_conns": [], // connections to ResourceS, empty to disable: <""|*internal|$rpc_conns_id> - "apiers_conns": [], // connections to ApierS, empty to disable: <""|*internal|$rpc_conns_id> - "indexed_selects": true, // enable profile matching exclusively on indexes - //"string_indexed_fields": [], // query indexes based on these fields for faster processing - "prefix_indexed_fields": [], // query indexes based on these fields for faster processing - "suffix_indexed_fields": [], // query indexes based on these fields for faster processing - "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) - "any_context": true, // if we match the *any context +"attributes": { // AttributeS config + "enabled": false, // starts attribute service: + "stats_conns": [], // connections to StatS, empty to disable: <""|*internal|$rpc_conns_id> + "resources_conns": [], // connections to ResourceS, empty to disable: <""|*internal|$rpc_conns_id> + "apiers_conns": [], // connections to ApierS, empty to disable: <""|*internal|$rpc_conns_id> + "indexed_selects": true, // enable profile matching exclusively on indexes + //"string_indexed_fields": [], // query indexes based on these fields for faster processing + "prefix_indexed_fields": [], // query indexes based on these fields for faster processing + "suffix_indexed_fields": [], // query indexes based on these fields for faster processing + "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) + "any_context": true, // if we match the *any context "opts": { "*profileIDs": [], - "*profileRuns": 0, // number of runs a profile will process the event - "*processRuns": 1, // number of run loops when processing event - "*profileIgnoreFilters": false, - }, + "*profileRuns": 0, // number of runs a profile will process the event + "*processRuns": 1, // number of run loops when processing event + "*profileIgnoreFilters": false + } }, -"chargers": { // ChargerS config - "enabled": false, // starts charger service: . - "attributes_conns": [], // connections to AttributeS for event fields altering <""|127.0.0.1:2013> - "indexed_selects": true, // enable profile matching exclusively on indexes - //"string_indexed_fields": [], // query indexes based on these fields for faster processing - "prefix_indexed_fields": [], // query indexes based on these fields for faster processing - "suffix_indexed_fields": [], // query indexes based on these fields for faster processing - "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) +"chargers": { // ChargerS config + "enabled": false, // starts charger service: . + "attributes_conns": [], // connections to AttributeS for event fields altering <""|127.0.0.1:2013> + "indexed_selects": true, // enable profile matching exclusively on indexes + //"string_indexed_fields": [], // query indexes based on these fields for faster processing + "prefix_indexed_fields": [], // query indexes based on these fields for faster processing + "suffix_indexed_fields": [], // query indexes based on these fields for faster processing + "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) }, -"resources": { // ResourceS config - "enabled": false, // starts ResourceLimiter service: . - "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> - "thresholds_conns": [], // connections to ThresholdS for resource reporting, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id> - "indexed_selects": true, // enable profile matching exclusively on indexes - //"string_indexed_fields": [], // query indexes based on these fields for faster processing - "prefix_indexed_fields": [], // query indexes based on these fields for faster processing - "suffix_indexed_fields": [], // query indexes based on these fields for faster processing - "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) +"resources": { // ResourceS config + "enabled": false, // starts ResourceLimiter service: . + "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> + "thresholds_conns": [], // connections to ThresholdS for resource reporting, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id> + "indexed_selects": true, // enable profile matching exclusively on indexes + //"string_indexed_fields": [], // query indexes based on these fields for faster processing + "prefix_indexed_fields": [], // query indexes based on these fields for faster processing + "suffix_indexed_fields": [], // query indexes based on these fields for faster processing + "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) "opts": { "*usageID": "", // "*usageTTL": "72h", @@ -823,36 +831,36 @@ const CGRATES_CFG_JSON = ` }, -"stats": { // StatS config - "enabled": false, // starts Stat service: . - "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> - "store_uncompressed_limit": 0, // used to compress data - "thresholds_conns": [], // connections to ThresholdS for StatUpdates, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id> - "indexed_selects": true, // enable profile matching exclusively on indexes - //"string_indexed_fields": [], // query indexes based on these fields for faster processing - "prefix_indexed_fields": [], // query indexes based on these fields for faster processing - "suffix_indexed_fields": [], // query indexes based on these fields for faster processing - "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) +"stats": { // StatS config + "enabled": false, // starts Stat service: . + "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> + "store_uncompressed_limit": 0, // used to compress data + "thresholds_conns": [], // connections to ThresholdS for StatUpdates, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id> + "indexed_selects": true, // enable profile matching exclusively on indexes + //"string_indexed_fields": [], // query indexes based on these fields for faster processing + "prefix_indexed_fields": [], // query indexes based on these fields for faster processing + "suffix_indexed_fields": [], // query indexes based on these fields for faster processing + "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) "opts": { "*profileIDs": [], "*profileIgnoreFilters": false, - }, + } }, -"trends":{ // TrendS config - "enabled": false, // starts TrendS service: . - "stats_conns": [], // connections to StatS ,empty to disable stats functionality: <""|*internal|$rpc_conns_id> +"trends":{ // TrendS config + "enabled": false, // starts TrendS service: . + "stats_conns": [], // connections to StatS ,empty to disable stats functionality: <""|*internal|$rpc_conns_id> }, -"thresholds": { // ThresholdS - "enabled": false, // starts ThresholdS service: . - "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> - "indexed_selects": true, // enable profile matching exclusively on indexes - "sessions_conns":[], // connections to SessionS <*internal|$rpc_conns_id> - //"string_indexed_fields": [], // query indexes based on these fields for faster processing - "prefix_indexed_fields": [], // query indexes based on these fields for faster processing - "suffix_indexed_fields": [], // query indexes based on these fields for faster processing - "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) +"thresholds": { // ThresholdS + "enabled": false, // starts ThresholdS service: . + "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> + "indexed_selects": true, // enable profile matching exclusively on indexes + "sessions_conns":[], // connections to SessionS <*internal|$rpc_conns_id> + //"string_indexed_fields": [], // query indexes based on these fields for faster processing + "prefix_indexed_fields": [], // query indexes based on these fields for faster processing + "suffix_indexed_fields": [], // query indexes based on these fields for faster processing + "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) "opts": { "*profileIDs": [], "*profileIgnoreFilters": false, @@ -860,18 +868,18 @@ const CGRATES_CFG_JSON = ` }, -"routes": { // RouteS config - "enabled": false, // starts RouteS service: . - "indexed_selects": true, // enable profile matching exclusively on indexes - //"string_indexed_fields": [], // query indexes based on these fields for faster processing - "prefix_indexed_fields": [], // query indexes based on these fields for faster processing - "suffix_indexed_fields": [], // query indexes based on these fields for faster processing - "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) - "attributes_conns": [], // connections to AttributeS for altering events before route queries: <""|*internal|$rpc_conns_id> - "resources_conns": [], // connections to ResourceS for *res sorting, empty to disable functionality: <""|*internal|$rpc_conns_id> - "stats_conns": [], // connections to StatS for *stats sorting, empty to disable stats functionality: <""|*internal|$rpc_conns_id> - "rals_conns": [], // connections to Rater for calculating cost, empty to disable stats functionality: <""|*internal|$rpc_conns_id> - "default_ratio":1, // default ratio used in case of *load strategy +"routes": { // RouteS config + "enabled": false, // starts RouteS service: . + "indexed_selects": true, // enable profile matching exclusively on indexes + //"string_indexed_fields": [], // query indexes based on these fields for faster processing + "prefix_indexed_fields": [], // query indexes based on these fields for faster processing + "suffix_indexed_fields": [], // query indexes based on these fields for faster processing + "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) + "attributes_conns": [], // connections to AttributeS for altering events before route queries: <""|*internal|$rpc_conns_id> + "resources_conns": [], // connections to ResourceS for *res sorting, empty to disable functionality: <""|*internal|$rpc_conns_id> + "stats_conns": [], // connections to StatS for *stats sorting, empty to disable stats functionality: <""|*internal|$rpc_conns_id> + "rals_conns": [], // connections to Rater for calculating cost, empty to disable stats functionality: <""|*internal|$rpc_conns_id> + "default_ratio":1, // default ratio used in case of *load strategy "opts": { "*context": "*routes", // "*profileCount": 1, @@ -883,22 +891,22 @@ const CGRATES_CFG_JSON = ` }, -"loaders": [ // LoaderS config +"loaders": [ // LoaderS config { - "id": "*default", // identifier of the Loader - "enabled": false, // starts as service: . - "tenant": "", // tenant used in filterS.Pass - "dry_run": false, // do not send the CDRs to CDRS, just parse them - "run_delay": "0", // sleep interval in seconds between consecutive runs, -1 to use automation via inotify or 0 to disable running all together - "lockfile_path": ".cgr.lck", // Filename containing concurrency lock in case of delayed processing + "id": "*default", // identifier of the Loader + "enabled": false, // starts as service: . + "tenant": "", // tenant used in filterS.Pass + "dry_run": false, // do not send the CDRs to CDRS, just parse them + "run_delay": "0", // sleep interval in seconds between consecutive runs, -1 to use automation via inotify or 0 to disable running all together + "lockfile_path": ".cgr.lck", // Filename containing concurrency lock in case of delayed processing "caches_conns": ["*internal"], - "field_separator": ",", // separator used in case of csv files - "tp_in_dir": "/var/spool/cgrates/loader/in", // absolute path towards the directory where the TPs are stored - "tp_out_dir": "/var/spool/cgrates/loader/out", // absolute path towards the directory where processed TPs will be moved - "data":[ // data profiles to load + "field_separator": ",", // separator used in case of csv files + "tp_in_dir": "/var/spool/cgrates/loader/in", // absolute path towards the directory where the TPs are stored + "tp_out_dir": "/var/spool/cgrates/loader/out", // absolute path towards the directory where processed TPs will be moved + "data":[ // data profiles to load { - "type": "*attributes", // data source type - "file_name": "Attributes.csv", // file name in the tp_in_dir + "type": "*attributes", // data source type + "file_name": "Attributes.csv", // file name in the tp_in_dir "fields": [ {"tag": "TenantID", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, {"tag": "ProfileID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, @@ -914,8 +922,8 @@ const CGRATES_CFG_JSON = ` ], }, { - "type": "*filters", // data source type - "file_name": "Filters.csv", // file name in the tp_in_dir + "type": "*filters", // data source type + "file_name": "Filters.csv", // file name in the tp_in_dir "fields": [ {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, @@ -926,8 +934,8 @@ const CGRATES_CFG_JSON = ` ], }, { - "type": "*resources", // data source type - "file_name": "Resources.csv", // file name in the tp_in_dir + "type": "*resources", // data source type + "file_name": "Resources.csv", // file name in the tp_in_dir "fields": [ {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, @@ -943,8 +951,8 @@ const CGRATES_CFG_JSON = ` ], }, { - "type": "*stats", // data source type - "file_name": "Stats.csv", // file name in the tp_in_dir + "type": "*stats", // data source type + "file_name": "Stats.csv", // file name in the tp_in_dir "fields": [ {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, @@ -962,8 +970,8 @@ const CGRATES_CFG_JSON = ` ], }, { - "type": "*thresholds", // data source type - "file_name": "Thresholds.csv", // file name in the tp_in_dir + "type": "*thresholds", // data source type + "file_name": "Thresholds.csv", // file name in the tp_in_dir "fields": [ {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, @@ -979,8 +987,8 @@ const CGRATES_CFG_JSON = ` ], }, { - "type": "*routes", // data source type - "file_name": "Routes.csv", // file name in the tp_in_dir + "type": "*routes", // data source type + "file_name": "Routes.csv", // file name in the tp_in_dir "fields": [ {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, @@ -1001,8 +1009,8 @@ const CGRATES_CFG_JSON = ` ], }, { - "type": "*chargers", // data source type - "file_name": "Chargers.csv", // file name in the tp_in_dir + "type": "*chargers", // data source type + "file_name": "Chargers.csv", // file name in the tp_in_dir "fields": [ {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, @@ -1014,8 +1022,8 @@ const CGRATES_CFG_JSON = ` ], }, { - "type": "*dispatchers", // data source type - "file_name": "DispatcherProfiles.csv", // file name in the tp_in_dir + "type": "*dispatchers", // data source type + "file_name": "DispatcherProfiles.csv", // file name in the tp_in_dir "fields": [ {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, @@ -1033,8 +1041,8 @@ const CGRATES_CFG_JSON = ` ], }, { - "type": "*dispatcher_hosts", // data source type - "file_name": "DispatcherHosts.csv", // file name in the tp_in_dir + "type": "*dispatcher_hosts", // data source type + "file_name": "DispatcherHosts.csv", // file name in the tp_in_dir "fields": [ {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, @@ -1057,52 +1065,52 @@ const CGRATES_CFG_JSON = ` "mailer": { - "server": "localhost", // the server to use when sending emails out - "auth_user": "cgrates", // authenticate to email server using this user - "auth_password": "CGRateS.org", // authenticate to email server with this password + "server": "localhost", // the server to use when sending emails out + "auth_user": "cgrates", // authenticate to email server using this user + "auth_password": "CGRateS.org", // authenticate to email server with this password "from_address": "cgr-mailer@localhost.localdomain" // from address used when sending emails out }, "suretax": { - "url": "", // API url - "client_number": "", // client number, provided by SureTax - "validation_key": "", // validation key provided by SureTax - "business_unit": "", // client’s Business Unit - "timezone": "Local", // convert the time of the events to this timezone before sending request out - "include_local_cost": false, // sum local calculated cost with tax one in final cost - "return_file_code": "0", // default or Quote purposes <0|Q> - "response_group": "03", // determines how taxes are grouped for the response <03|13> - "response_type": "D4", // determines the granularity of taxes and (optionally) the decimal precision for the tax calculations and amounts in the response - "regulatory_code": "03", // provider type - "client_tracking": "~*req.CGRID", // template extracting client information out of StoredCdr; - "customer_number": "~*req.Subject", // template extracting customer number out of StoredCdr; - "orig_number": "~*req.Subject", // template extracting origination number out of StoredCdr; - "term_number": "~*req.Destination", // template extracting termination number out of StoredCdr; - "bill_to_number": "", // template extracting billed to number out of StoredCdr; - "zipcode": "", // template extracting billing zip code out of StoredCdr; - "plus4": "", // template extracting billing zip code extension out of StoredCdr; - "p2pzipcode": "", // template extracting secondary zip code out of StoredCdr; - "p2pplus4": "", // template extracting secondary zip code extension out of StoredCdr; - "units": "1", // template extracting number of “lines” or unique charges contained within the revenue out of StoredCdr; - "unit_type": "00", // template extracting number of unique access lines out of StoredCdr; - "tax_included": "0", // template extracting tax included in revenue out of StoredCdr; - "tax_situs_rule": "04", // template extracting tax situs rule out of StoredCdr; - "trans_type_code": "010101", // template extracting transaction type indicator out of StoredCdr; - "sales_type_code": "R", // template extracting sales type code out of StoredCdr; - "tax_exemption_code_list": "", // template extracting tax exemption code list out of StoredCdr; + "url": "", // API url + "client_number": "", // client number, provided by SureTax + "validation_key": "", // validation key provided by SureTax + "business_unit": "", // client’s Business Unit + "timezone": "Local", // convert the time of the events to this timezone before sending request out + "include_local_cost": false, // sum local calculated cost with tax one in final cost + "return_file_code": "0", // default or Quote purposes <0|Q> + "response_group": "03", // determines how taxes are grouped for the response <03|13> + "response_type": "D4", // determines the granularity of taxes and (optionally) the decimal precision for the tax calculations and amounts in the response + "regulatory_code": "03", // provider type + "client_tracking": "~*req.CGRID", // template extracting client information out of StoredCdr; + "customer_number": "~*req.Subject", // template extracting customer number out of StoredCdr; + "orig_number": "~*req.Subject", // template extracting origination number out of StoredCdr; + "term_number": "~*req.Destination", // template extracting termination number out of StoredCdr; + "bill_to_number": "", // template extracting billed to number out of StoredCdr; + "zipcode": "", // template extracting billing zip code out of StoredCdr; + "plus4": "", // template extracting billing zip code extension out of StoredCdr; + "p2pzipcode": "", // template extracting secondary zip code out of StoredCdr; + "p2pplus4": "", // template extracting secondary zip code extension out of StoredCdr; + "units": "1", // template extracting number of “lines” or unique charges contained within the revenue out of StoredCdr; + "unit_type": "00", // template extracting number of unique access lines out of StoredCdr; + "tax_included": "0", // template extracting tax included in revenue out of StoredCdr; + "tax_situs_rule": "04", // template extracting tax situs rule out of StoredCdr; + "trans_type_code": "010101", // template extracting transaction type indicator out of StoredCdr; + "sales_type_code": "R", // template extracting sales type code out of StoredCdr; + "tax_exemption_code_list": "", // template extracting tax exemption code list out of StoredCdr; }, -"loader": { // loader for tariff plans out of .csv files - "tpid": "", // tariff plan identificator - "data_path": "./", // path towards tariff plan files - "disable_reverse": false, // disable reverse computing - "field_separator": ",", // separator used in case of csv files +"loader": { // loader for tariff plans out of .csv files + "tpid": "", // tariff plan identificator + "data_path": "./", // path towards tariff plan files + "disable_reverse": false, // disable reverse computing + "field_separator": ",", // separator used in case of csv files "caches_conns":["*localhost"], "scheduler_conns": ["*localhost"], "gapi_credentials": ".gapi/credentials.json", // the path to the credentials for google API or the credentials.json file content - "gapi_token": ".gapi/token.json" // the path to the token for google API or the token.json file content + "gapi_token": ".gapi/token.json" // the path to the token for google API or the token.json file content }, @@ -1113,7 +1121,7 @@ const CGRATES_CFG_JSON = ` "out_datadb_name": "10", "out_datadb_user": "cgrates", "out_datadb_password": "", - "out_datadb_encoding" : "msgpack", + "out_datadb_encoding" : "msgpack", "out_stordb_type": "mysql", "out_stordb_host": "127.0.0.1", "out_stordb_port": "3306", @@ -1122,21 +1130,21 @@ const CGRATES_CFG_JSON = ` "out_stordb_password": "", "users_filters":[], "out_datadb_opts":{ - "redisMaxConns": 10, // the connection pool size - "redisConnectAttempts": 20, // the maximum amount of dial attempts - "redisSentinel": "", - "redisCluster": false, - "redisClusterSync": "5s", + "redisMaxConns": 10, // the connection pool size + "redisConnectAttempts": 20, // the maximum amount of dial attempts + "redisSentinel": "", + "redisCluster": false, + "redisClusterSync": "5s", "redisClusterOndownDelay": "0", - "redisConnectTimeout": "0", // the amount of wait time until timeout for a connection attempt - "redisReadTimeout": "0", // the amount of wait time until timeout for reading operations + "redisConnectTimeout": "0", // the amount of wait time until timeout for a connection attempt + "redisReadTimeout": "0", // the amount of wait time until timeout for reading operations "redisWriteTimeout": "0", // the amount of wait time until timeout for writing operations "redisPoolPipelineWindow": "150µs", // duration after which internal pipelines are flushed (0 disables implicit pipelining) - "redisPoolPipelineLimit": 0, // maximum number of commands that can be pipelined before flushing (0 means no limit) - "redisTLS": false, // enable TLS when connecting to Redis and use the redisClientCertificate, redisClientKey and redisCACertificate for TLS connection + "redisPoolPipelineLimit": 0, // maximum number of commands that can be pipelined before flushing (0 means no limit) + "redisTLS": false, // enable TLS when connecting to Redis and use the redisClientCertificate, redisClientKey and redisCACertificate for TLS connection "redisClientCertificate":"", // path to client certificate - "redisClientKey":"", // path to client key - "redisCACertificate":"", // path to CA certificate (populate for self-signed certificate otherwise let it empty) + "redisClientKey":"", // path to client key + "redisCACertificate":"", // path to CA certificate (populate for self-signed certificate otherwise let it empty) "mongoConnScheme": "mongodb" // scheme for MongoDB connection }, "out_stordb_opts":{ @@ -1145,16 +1153,16 @@ const CGRATES_CFG_JSON = ` }, -"dispatchers":{ // DispatcherS config - "enabled": false, // starts DispatcherS service: . - "indexed_selects": true, // enable profile matching exclusively on indexes - //"string_indexed_fields": [], // query indexes based on these fields for faster processing - "prefix_indexed_fields": [], // query indexes based on these fields for faster processing - "suffix_indexed_fields": [], // query indexes based on these fields for faster processing - "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) - "attributes_conns": [], // connections to AttributeS for API authorization, empty to disable auth functionality: <""|*internal|$rpc_conns_id> - "any_subsystem": true, // if we match the *any subsystem - "prevent_loops": false, // +"dispatchers":{ // DispatcherS config + "enabled": false, // starts DispatcherS service: . + "indexed_selects": true, // enable profile matching exclusively on indexes + //"string_indexed_fields": [], // query indexes based on these fields for faster processing + "prefix_indexed_fields": [], // query indexes based on these fields for faster processing + "suffix_indexed_fields": [], // query indexes based on these fields for faster processing + "nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level) + "attributes_conns": [], // connections to AttributeS for API authorization, empty to disable auth functionality: <""|*internal|$rpc_conns_id> + "any_subsystem": true, // if we match the *any subsystem + "prevent_loops": false, }, @@ -1174,47 +1182,46 @@ const CGRATES_CFG_JSON = ` }, -"analyzers":{ // AnalyzerS config - "enabled": false, // starts AnalyzerS service: . +"analyzers":{ // AnalyzerS config + "enabled": false, // starts AnalyzerS service: . "db_path": "/var/spool/cgrates/analyzers", // path to the folder where to store the information - "index_type": "*scorch", // the type of index for the storage: <*scorch|*boltdb|*leveldb|*mossdb> - "ttl": "24h", // time to wait before removing the API capture - "cleanup_interval": "1h", // the interval we clean the db + "index_type": "*scorch", // the type of index for the storage: <*scorch|*boltdb|*leveldb|*mossdb> + "ttl": "24h", // time to wait before removing the API capture + "cleanup_interval": "1h", // the interval we clean the db }, "apiers": { "enabled": false, "caches_conns":["*internal"], - "scheduler_conns": [], // connections to SchedulerS for reloads - "attributes_conns": [], // connections to AttributeS for CDRExporter - "ees_conns": [], // connections to EEs + "scheduler_conns": [], // connections to SchedulerS for reloads + "attributes_conns": [], // connections to AttributeS for CDRExporter + "ees_conns": [], // connections to EEs }, -"sip_agent": { // SIP Agents, only used for redirections - "enabled": false, // enables the SIP agent: - "listen": "127.0.0.1:5060", // address where to listen for SIP requests - "listen_net": "udp", // network to listen on +"sip_agent": { // SIP Agents, only used for redirections + "enabled": false, // enables the SIP agent: + "listen": "127.0.0.1:5060", // address where to listen for SIP requests + "listen_net": "udp", // network to listen on "sessions_conns": ["*internal"], - "timezone": "", // timezone of the events if not specified + "timezone": "", // timezone of the events if not specified "retransmission_timer": "1s", // the duration to wait to receive an ACK before resending the reply - "request_processors": [ // request processors to be applied to SIP messages - ], + "request_processors": [] // request processors to be applied to SIP messages }, "janus_agent": { - "enabled": false, // enables the Janus agent: + "enabled": false, // enables the Janus agent: "url": "/janus", "sessions_conns": ["*internal"], - "janus_conns": [{ // instantiate connections to multiple Janus Servers - "address": "127.0.0.1:8088", // janus API address - "type": "*ws", // type of the transport to interact via janus API - "admin_address": "localhost:7188", // janus admin address used to retrive more information for sessions and handles - "admin_password": "", // secret to pass restriction to communicate to the endpoint + "janus_conns": [{ // instantiate connections to multiple Janus Servers + "address": "127.0.0.1:8088", // janus API address + "type": "*ws", // type of the transport to interact via janus API + "admin_address": "localhost:7188", // janus admin address used to retrive more information for sessions and handles + "admin_password": "", // secret to pass restriction to communicate to the endpoint }], - "request_processors": [], // request processors to be applied to Janus messages + "request_processors": [], // request processors to be applied to Janus messages }, @@ -1323,30 +1330,30 @@ const CGRATES_CFG_JSON = ` {"tag": "AnswerTime", "path": "*cdr.AnswerTime", "type": "*constant", "value": "*now", "mandatory": true}, {"tag": "PreRated", "path": "*cdr.PreRated", "type": "*constant", - "value": "true", "mandatory": true}, - ], + "value": "true", "mandatory": true} + ] }, "configs": { "enabled": false, - "url": "/configs/", // configs url - "root_dir": "/var/spool/cgrates/configs", // root directory in case of calling /configs request + "url": "/configs/", // configs url + "root_dir": "/var/spool/cgrates/configs", // root directory in case of calling /configs request }, "apiban": { - "keys": [], + "keys": [] }, "sentrypeer":{ - "client_id":"", - "client_secret":"", - "token_url":"https://authz.sentrypeer.com/oauth/token", - "ips_url":"https://sentrypeer.com/api/ip-addresses", - "numbers_url":"https://sentrypeer.com/api/phone-numbers", - "audience":"https://sentrypeer.com/api", - "grant_type":"client_credentials", - }, + "client_id":"", + "client_secret":"", + "token_url":"https://authz.sentrypeer.com/oauth/token", + "ips_url":"https://sentrypeer.com/api/ip-addresses", + "numbers_url":"https://sentrypeer.com/api/phone-numbers", + "audience":"https://sentrypeer.com/api", + "grant_type":"client_credentials" +} }`