diff --git a/config/cdrccfg.go b/config/cdrccfg.go index 0a43c6cf9..bfe5c8bf9 100644 --- a/config/cdrccfg.go +++ b/config/cdrccfg.go @@ -19,6 +19,7 @@ along with this program. If not, see package config import ( + "strings" "time" "github.com/cgrates/cgrates/utils" @@ -29,7 +30,7 @@ type CdrcCfg struct { Enabled bool // Enable/Disable the profile DryRun bool // Do not post CDRs to the server CdrsConns []*HaPoolConfig // The address where CDRs can be reached - CdrFormat string // The type of CDR file to process + CdrFormat string // The type of CDR file to process <*csv|*opensips_flatstore> FieldSeparator rune // The separator to use when reading csvs DataUsageMultiplyFactor float64 // Conversion factor for data usage Timezone string // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> @@ -73,7 +74,7 @@ func (self *CdrcCfg) loadFromJsonCfg(jsnCfg *CdrcJsonCfg) error { } } if jsnCfg.Cdr_format != nil { - self.CdrFormat = *jsnCfg.Cdr_format + self.CdrFormat = strings.TrimPrefix(*jsnCfg.Cdr_format, "*") } if jsnCfg.Field_separator != nil && len(*jsnCfg.Field_separator) > 0 { sepStr := *jsnCfg.Field_separator diff --git a/config/config_defaults.go b/config/config_defaults.go index 1fd836086..dd015dccd 100755 --- a/config/config_defaults.go +++ b/config/config_defaults.go @@ -33,7 +33,7 @@ const CGRATES_CFG_JSON = ` "log_level": 6, // control the level of messages logged (0-emerg to 7-debug) "http_skip_tls_verify": false, // if enabled Http Client will accept any TLS certificate "rounding_decimals": 5, // system level precision for floats - "dbdata_encoding": "msgpack", // encoding used to store object data in strings: + "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 Tariff Plans "poster_attempts": 3, // number of attempts before considering post request failed (eg: *call_url, CDR replication) "failed_posts_dir": "/var/spool/cgrates/failed_posts", // directory path where we store failed requests @@ -245,7 +245,7 @@ const CGRATES_CFG_JSON = ` "cdrs_conns": [ {"address": "*internal"} // address where to reach CDR server. <*internal|x.y.z.y:1234> ], - "cdr_format": "csv", // CDR file format + "cdr_format": "*csv", // CDR file format <*csv|*freeswitch_csv|*fwv|*opensips_flatstore|*partial_csv> "field_separator": ",", // separator used in case of csv files "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> "run_delay": 0, // sleep interval in seconds between consecutive runs, 0 to use automation via inotify diff --git a/config/generalcfg.go b/config/generalcfg.go index 81b9f2a01..a67217020 100644 --- a/config/generalcfg.go +++ b/config/generalcfg.go @@ -19,6 +19,7 @@ along with this program. If not, see package config import ( + "strings" "time" "github.com/cgrates/cgrates/utils" @@ -66,7 +67,7 @@ func (gencfg *GeneralCfg) loadFromJsonCfg(jsnGeneralCfg *GeneralJsonCfg) (err er } if jsnGeneralCfg.Dbdata_encoding != nil { - gencfg.DBDataEncoding = *jsnGeneralCfg.Dbdata_encoding + gencfg.DBDataEncoding = strings.TrimPrefix(*jsnGeneralCfg.Dbdata_encoding, "*") } if jsnGeneralCfg.Default_request_type != nil { gencfg.DefaultReqType = *jsnGeneralCfg.Default_request_type diff --git a/config/migratorcfg.go b/config/migratorcfg.go index beb282ef4..cca8b990d 100644 --- a/config/migratorcfg.go +++ b/config/migratorcfg.go @@ -18,6 +18,10 @@ along with this program. If not, see package config +import ( + "strings" +) + type MigratorCgrCfg struct { OutDataDBType string OutDataDBHost string @@ -40,7 +44,7 @@ func (mg *MigratorCgrCfg) loadFromJsonCfg(jsnCfg *MigratorCfgJson) (err error) { return } if jsnCfg.Out_dataDB_type != nil { - mg.OutDataDBType = *jsnCfg.Out_dataDB_type + mg.OutDataDBType = strings.TrimPrefix(*jsnCfg.Out_dataDB_type, "*") } if jsnCfg.Out_dataDB_host != nil { mg.OutDataDBHost = *jsnCfg.Out_dataDB_host @@ -58,7 +62,7 @@ func (mg *MigratorCgrCfg) loadFromJsonCfg(jsnCfg *MigratorCfgJson) (err error) { mg.OutDataDBPassword = *jsnCfg.Out_dataDB_password } if jsnCfg.Out_dataDB_encoding != nil { - mg.OutDataDBEncoding = *jsnCfg.Out_dataDB_encoding + mg.OutDataDBEncoding = strings.TrimPrefix(*jsnCfg.Out_dataDB_encoding, "*") } if jsnCfg.Out_dataDB_redis_sentinel != nil { mg.OutDataDBRedisSentinel = *jsnCfg.Out_dataDB_redis_sentinel diff --git a/data/conf/cgrates/cgrates.json b/data/conf/cgrates/cgrates.json index 7f493fb49..d29448fad 100644 --- a/data/conf/cgrates/cgrates.json +++ b/data/conf/cgrates/cgrates.json @@ -1,702 +1,702 @@ { -// Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments -// Copyright (C) ITsysCOM GmbH +// Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +// Copyright (C) ITsysCOM GmbH // -// This file contains the default configuration hardcoded into CGRateS. -// This is what you get when you load CGRateS with an empty configuration file. +// This file contains the default configuration hardcoded into CGRateS. +// 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) -// "http_skip_tls_verify": false, // if enabled Http Client will accept any TLS certificate -// "rounding_decimals": 5, // system level precision for floats -// "dbdata_encoding": "msgpack", // encoding used to store object data in strings: -// "tpexport_dir": "/var/spool/cgrates/tpe", // path towards export folder for offline Tariff Plans -// "poster_attempts": 3, // number of attempts before considering post request failed (eg: *call_url, CDR replication) -// "failed_posts_dir": "/var/spool/cgrates/failed_posts", // directory path where we store failed requests -// "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> -// "connect_attempts": 3, // initial server connect attempts -// "reconnects": -1, // number of retries in case of connection lost -// "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 -// "response_cache_ttl": "0s", // the life span of a cached response -// "internal_ttl": "2m", // maximum duration to wait for internal connections before giving up -// "locking_timeout": "0", // timeout internal locks to avoid deadlocks -// "digest_separator": ",", -// "digest_equal": ":", -// }, +// "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) +// "http_skip_tls_verify": false, // if enabled Http Client will accept any TLS certificate +// "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 Tariff Plans +// "poster_attempts": 3, // number of attempts before considering post request failed (eg: *call_url, CDR replication) +// "failed_posts_dir": "/var/spool/cgrates/failed_posts", // directory path where we store failed requests +// "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> +// "connect_attempts": 3, // initial server connect attempts +// "reconnects": -1, // number of retries in case of connection lost +// "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 +// "response_cache_ttl": "0s", // the life span of a cached response +// "internal_ttl": "2m", // maximum duration to wait for internal connections before giving up +// "locking_timeout": "0", // timeout internal locks to avoid deadlocks +// "digest_separator": ",", +// "digest_equal": ":", +// }, -// "data_db": { // database used to store runtime data (eg: accounts, cdr stats) -// "db_type": "redis", // data_db type: -// "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 -// "redis_sentinel": "", // redis_sentinel is the name of sentinel -// }, +// "data_db": { // database used to store runtime data (eg: accounts, cdr stats) +// "db_type": "redis", // data_db type: <*redis|*mongo|*internal> +// "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 +// "redis_sentinel": "", // redis_sentinel is the name of sentinel +// }, -// "stor_db": { // database used to store offline tariff plans and CDRs -// "db_type": "mysql", // stor database type to use: -// "db_host": "127.0.0.1", // the host to connect to -// "db_port": 3306, // the port to reach the stordb -// "db_name": "cgrates", // stor database name -// "db_user": "cgrates", // username to use when connecting to stordb -// "db_password": "", // password to use when connecting to stordb -// "max_open_conns": 100, // maximum database connections opened, not applying for mongo -// "max_idle_conns": 10, // maximum database connections idle, not applying for mongo -// "conn_max_lifetime": 0, // maximum amount of time in seconds a connection may be reused (0 for unlimited), not applying for mongo -// "cdrs_indexes": [], // indexes on cdrs table to speed up queries, used only in case of mongo -// }, +// "stor_db": { // database used to store offline tariff plans and CDRs +// "db_type": "mysql", // stor database type to use: <*mongo|*mysql|*postgres|*internal> +// "db_host": "127.0.0.1", // the host to connect to +// "db_port": 3306, // the port to reach the stordb +// "db_name": "cgrates", // stor database name +// "db_user": "cgrates", // username to use when connecting to stordb +// "db_password": "", // password to use when connecting to stordb +// "max_open_conns": 100, // maximum database connections opened, not applying for mongo +// "max_idle_conns": 10, // maximum database connections idle, not applying for mongo +// "conn_max_lifetime": 0, // maximum amount of time in seconds a connection may be reused (0 for unlimited), not applying for mongo +// "cdrs_indexes": [], // indexes on cdrs table to speed up queries, used only in case of mongo +// }, -// "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 -// "tls_server_certificate": "", // path to server certificate(must conatin server.crt + ca.crt) -// "tls_server_key": "", // path to server key -// "tls_client_certificate": "", // path to client certificate(must conatin client.crt + ca.crt) -// "tls_client_key": "", // path to client key -// }, +// "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 +// "tls_server_certificate": "", // path to server certificate(must conatin server.crt + ca.crt) +// "tls_server_key": "", // path to server key +// "tls_client_certificate": "", // path to client certificate(must conatin client.crt + ca.crt) +// "tls_client_key": "", // path to client key +// }, -// "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 if used self-sign certificate otherwise let it empty) -// "server_policy":4, // server_policy determine the TLS Client Authentication (0-NoClientCert, 1-RequestClientCert, 2-RequireAnyClientCert, 3-VerifyClientCertIfGiven, 4-RequireAndVerifyClientCert) -// "server_name":"", -// }, +// "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 if used self-sign certificate otherwise let it empty) +// "server_policy":4, // server_policy determine 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) -// "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) +// "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 "}) +// }, -// "scheduler": { -// "enabled": false, // start Scheduler service: -// "cdrs_conns": [], // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234> -// }, +// "scheduler": { +// "enabled": false, // start Scheduler service: +// "cdrs_conns": [], // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234> +// }, -// "cache":{ -// "destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // destination caching -// "reverse_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // reverse destinations index caching -// "rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // rating plans caching -// "rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // rating profiles caching -// "lcr_rules": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // lcr rules caching -// "cdr_stats": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // cdr stats queues caching -// "actions": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // actions caching -// "action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // action plans caching -// "account_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // account action plans index caching -// "action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // action triggers caching -// "shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // shared groups caching -// "aliases": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // aliases caching -// "reverse_aliases": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // reverse aliases index caching -// "derived_chargers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // derived charging rule caching -// "timings": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // timings caching -// "resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control resource profiles caching -// "resources": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control resources caching -// "event_resources": {"limit": -1, "ttl": "1m", "static_ttl": false}, // matching resources to events -// "statqueue_profiles": {"limit": -1, "ttl": "1m", "static_ttl": false, "precache": false}, // statqueue profiles -// "statqueues": {"limit": -1, "ttl": "1m", "static_ttl": false, "precache": false}, // statqueues with metrics -// "threshold_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control threshold profiles caching -// "thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control thresholds caching -// "filters": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control filters caching -// "supplier_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control supplier profile caching -// "attribute_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control attribute profile caching -// "charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control charger profile caching -// "resource_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control resource filter indexes caching -// "stat_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control stat filter indexes caching -// "threshold_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control threshold filter indexes caching -// "supplier_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control supplier filter indexes caching -// "attribute_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control attribute filter indexes caching -// "charger_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control charger filter indexes caching -// }, +// "cache":{ +// "destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // destination caching +// "reverse_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // reverse destinations index caching +// "rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // rating plans caching +// "rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // rating profiles caching +// "lcr_rules": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // lcr rules caching +// "cdr_stats": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // cdr stats queues caching +// "actions": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // actions caching +// "action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // action plans caching +// "account_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // account action plans index caching +// "action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // action triggers caching +// "shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // shared groups caching +// "aliases": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // aliases caching +// "reverse_aliases": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // reverse aliases index caching +// "derived_chargers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // derived charging rule caching +// "timings": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // timings caching +// "resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control resource profiles caching +// "resources": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control resources caching +// "event_resources": {"limit": -1, "ttl": "1m", "static_ttl": false}, // matching resources to events +// "statqueue_profiles": {"limit": -1, "ttl": "1m", "static_ttl": false, "precache": false}, // statqueue profiles +// "statqueues": {"limit": -1, "ttl": "1m", "static_ttl": false, "precache": false}, // statqueues with metrics +// "threshold_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control threshold profiles caching +// "thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control thresholds caching +// "filters": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control filters caching +// "supplier_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control supplier profile caching +// "attribute_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control attribute profile caching +// "charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control charger profile caching +// "resource_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control resource filter indexes caching +// "stat_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control stat filter indexes caching +// "threshold_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control threshold filter indexes caching +// "supplier_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control supplier filter indexes caching +// "attribute_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control attribute filter indexes caching +// "charger_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control charger filter indexes caching +// }, -// "filters": { // Filters configuration (*new) -// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> -// "indexed_selects":true, // enable profile matching exclusively on indexes -// }, +// "filters": { // Filters configuration (*new) +// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> +// "indexed_selects":true, // enable profile matching exclusively on indexes +// }, -// "rals": { -// "enabled": false, // enable Rater service: -// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234> -// "cdrstats_conns": [], // address where to reach the cdrstats service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> -// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> -// "pubsubs_conns": [], // address where to reach the pubusb service, empty to disable pubsub functionality: <""|*internal|x.y.z.y:1234> -// "users_conns": [], // address where to reach the user service, empty to disable user profile functionality: <""|*internal|x.y.z.y:1234> -// "aliases_conns": [], // address where to reach the aliases service, empty to disable aliases functionality: <""|*internal|x.y.z.y:1234> -// "rp_subject_prefix_matching": false, // enables prefix matching for the rating profile subject -// "lcr_subject_prefix_matching": false, // enables prefix matching for the lcr subject -// "max_computed_usage": { // do not compute usage higher than this, prevents memory overload -// "*any": "189h", -// "*voice": "72h", -// "*data": "107374182400", -// "*sms": "10000" -// }, -// }, +// "rals": { +// "enabled": false, // enable Rater service: +// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234> +// "cdrstats_conns": [], // address where to reach the cdrstats service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> +// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> +// "pubsubs_conns": [], // address where to reach the pubusb service, empty to disable pubsub functionality: <""|*internal|x.y.z.y:1234> +// "users_conns": [], // address where to reach the user service, empty to disable user profile functionality: <""|*internal|x.y.z.y:1234> +// "aliases_conns": [], // address where to reach the aliases service, empty to disable aliases functionality: <""|*internal|x.y.z.y:1234> +// "rp_subject_prefix_matching": false, // enables prefix matching for the rating profile subject +// "lcr_subject_prefix_matching": false, // enables prefix matching for the lcr subject +// "max_computed_usage": { // do not compute usage higher than this, prevents memory overload +// "*any": "189h", +// "*voice": "72h", +// "*data": "107374182400", +// "*sms": "10000" +// }, +// }, -// "cdrs": { -// "enabled": false, // start the CDR Server service: -// "extra_fields": [], // extra fields to store in CDRs for non-generic CDRs -// "store_cdrs": true, // store cdrs in storDb -// "sessions_cost_retries": 5, // number of queries to sessions_costs before recalculating CDR -// "chargers_conns": [], // address where to reach the charger service, empty to disable charger functionality: <""|*internal|x.y.z.y:1234> -// "rals_conns": [ -// {"address": "*internal"} // address where to reach the Rater for cost calculation, empty to disable functionality: <""|*internal|x.y.z.y:1234> -// ], -// "pubsubs_conns": [], // address where to reach the pubusb service, empty to disable pubsub functionality: <""|*internal|x.y.z.y:1234> -// "attributes_conns": [], // address where to reach the attribute service, empty to disable attributes functionality: <""|*internal|x.y.z.y:1234> -// "users_conns": [], // address where to reach the user service, empty to disable user profile functionality: <""|*internal|x.y.z.y:1234> -// "aliases_conns": [], // address where to reach the aliases service, empty to disable aliases functionality: <""|*internal|x.y.z.y:1234> -// "cdrstats_conns": [], // address where to reach the cdrstats service, empty to disable cdrstats functionality: <""|*internal|x.y.z.y:1234> -// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234> -// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> -// "online_cdr_exports": [], // list of CDRE profiles to use for real-time CDR exports -// }, +// "cdrs": { +// "enabled": false, // start the CDR Server service: +// "extra_fields": [], // extra fields to store in CDRs for non-generic CDRs +// "store_cdrs": true, // store cdrs in storDb +// "sessions_cost_retries": 5, // number of queries to sessions_costs before recalculating CDR +// "chargers_conns": [], // address where to reach the charger service, empty to disable charger functionality: <""|*internal|x.y.z.y:1234> +// "rals_conns": [ +// {"address": "*internal"} // address where to reach the Rater for cost calculation, empty to disable functionality: <""|*internal|x.y.z.y:1234> +// ], +// "pubsubs_conns": [], // address where to reach the pubusb service, empty to disable pubsub functionality: <""|*internal|x.y.z.y:1234> +// "attributes_conns": [], // address where to reach the attribute service, empty to disable attributes functionality: <""|*internal|x.y.z.y:1234> +// "users_conns": [], // address where to reach the user service, empty to disable user profile functionality: <""|*internal|x.y.z.y:1234> +// "aliases_conns": [], // address where to reach the aliases service, empty to disable aliases functionality: <""|*internal|x.y.z.y:1234> +// "cdrstats_conns": [], // address where to reach the cdrstats service, empty to disable cdrstats functionality: <""|*internal|x.y.z.y:1234> +// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234> +// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> +// "online_cdr_exports": [], // list of CDRE profiles to use for real-time CDR exports +// }, -// "cdre": { -// "*default": { -// "export_format": "*file_csv", // exported CDRs format <*file_csv|*file_fwv|*http_post|*http_json_cdr|*http_json_map|*amqp_json_cdr|*amqp_json_map> -// "export_path": "/var/spool/cgrates/cdre", // path where the exported CDRs will be placed -// "filters" :[], // new filters for cdre -// "tenant": "cgrates.org", // tenant used in filterS.Pass -// "synchronous": false, // block processing until export has a result -// "attempts": 1, // Number of attempts if not success -// "field_separator": ",", // used field separator in some export formats, eg: *file_csv -// "usage_multiply_factor": { -// "*any": 1 // multiply usage based on ToR field or *any for all -// }, -// "cost_multiply_factor": 1, // multiply cost before export, eg: add VAT -// "header_fields": [], // template of the exported header fields -// "content_fields": [ // template of the exported content fields -// {"tag": "CGRID", "type": "*composed", "value": "~CGRID"}, -// {"tag":"RunID", "type": "*composed", "value": "~RunID"}, -// {"tag":"TOR", "type": "*composed", "value": "~ToR"}, -// {"tag":"OriginID", "type": "*composed", "value": "~OriginID"}, -// {"tag":"RequestType", "type": "*composed", "value": "~RequestType"}, -// {"tag":"Tenant", "type": "*composed", "value": "~Tenant"}, -// {"tag":"Category", "type": "*composed", "value": "~Category"}, -// {"tag":"Account", "type": "*composed", "value": "~Account"}, -// {"tag":"Subject", "type": "*composed", "value": "~Subject"}, -// {"tag":"Destination", "type": "*composed", "value": "~Destination"}, -// {"tag":"SetupTime", "type": "*composed", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"}, -// {"tag":"AnswerTime", "type": "*composed", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"}, -// {"tag":"Usage", "type": "*composed", "value": "~Usage"}, -// {"tag":"Cost", "type": "*composed", "value": "~Cost", "rounding_decimals": 4}, -// ], -// "trailer_fields": [], // template of the exported trailer fields -// }, -// }, +// "cdre": { +// "*default": { +// "export_format": "*file_csv", // exported CDRs format <*file_csv|*file_fwv|*http_post|*http_json_cdr|*http_json_map|*amqp_json_cdr|*amqp_json_map> +// "export_path": "/var/spool/cgrates/cdre", // path where the exported CDRs will be placed +// "filters" :[], // new filters for cdre +// "tenant": "cgrates.org", // tenant used in filterS.Pass +// "synchronous": false, // block processing until export has a result +// "attempts": 1, // Number of attempts if not success +// "field_separator": ",", // used field separator in some export formats, eg: *file_csv +// "usage_multiply_factor": { +// "*any": 1 // multiply usage based on ToR field or *any for all +// }, +// "cost_multiply_factor": 1, // multiply cost before export, eg: add VAT +// "header_fields": [], // template of the exported header fields +// "content_fields": [ // template of the exported content fields +// {"tag": "CGRID", "type": "*composed", "value": "~CGRID"}, +// {"tag":"RunID", "type": "*composed", "value": "~RunID"}, +// {"tag":"TOR", "type": "*composed", "value": "~ToR"}, +// {"tag":"OriginID", "type": "*composed", "value": "~OriginID"}, +// {"tag":"RequestType", "type": "*composed", "value": "~RequestType"}, +// {"tag":"Tenant", "type": "*composed", "value": "~Tenant"}, +// {"tag":"Category", "type": "*composed", "value": "~Category"}, +// {"tag":"Account", "type": "*composed", "value": "~Account"}, +// {"tag":"Subject", "type": "*composed", "value": "~Subject"}, +// {"tag":"Destination", "type": "*composed", "value": "~Destination"}, +// {"tag":"SetupTime", "type": "*composed", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"}, +// {"tag":"AnswerTime", "type": "*composed", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"}, +// {"tag":"Usage", "type": "*composed", "value": "~Usage"}, +// {"tag":"Cost", "type": "*composed", "value": "~Cost", "rounding_decimals": 4}, +// ], +// "trailer_fields": [], // template of the exported trailer fields +// }, +// }, -// "cdrstats": { -// "enabled": false, // starts the cdrstats service: -// "save_interval": "1m", // interval to save changed stats into dataDb storage -// }, +// "cdrstats": { +// "enabled": false, // starts the cdrstats service: +// "save_interval": "1m", // interval to save changed stats into dataDb storage +// }, -// "cdrc": [ -// { -// "id": "*default", // identifier of the CDRC runner -// "enabled": false, // enable CDR client functionality -// "dry_run": false, // do not send the CDRs to CDRS, just parse them -// "cdrs_conns": [ -// {"address": "*internal"} // address where to reach CDR server. <*internal|x.y.z.y:1234> -// ], -// "cdr_format": "csv", // CDR file format -// "field_separator": ",", // separator used in case of csv files -// "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> -// "run_delay": 0, // sleep interval in seconds between consecutive runs, 0 to use automation via inotify -// "max_open_files": 1024, // maximum simultaneous files to process, 0 for unlimited -// "data_usage_multiply_factor": 1024, // conversion factor for data usage -// "cdr_in_dir": "/var/spool/cgrates/cdrc/in", // absolute path towards the directory where the CDRs are stored -// "cdr_out_dir": "/var/spool/cgrates/cdrc/out", // absolute path towards the directory where processed CDRs will be moved -// "failed_calls_prefix": "missed_calls", // used in case of flatstore CDRs to avoid searching for BYE records -// "cdr_path": "", // path towards one CDR element in case of XML CDRs -// "cdr_source_id": "freeswitch_csv", // free form field, tag identifying the source of the CDRs within CDRS database -// "filters": [], // new filters used in FilterS subsystem -// "tenant": "cgrates.org", // default tenant -// "continue_on_success": false, // continue to the next template if executed -// "partial_record_cache": "10s", // duration to cache partial records when not pairing -// "partial_cache_expiry_action": "*dump_to_file", // action taken when cache when records in cache are timed-out <*dump_to_file|*post_cdr> -// "header_fields": [], // template of the import header fields -// "content_fields":[ // import content_fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value -// {"tag": "TOR", "field_id": "ToR", "type": "*composed", "value": "~2", "mandatory": true}, -// {"tag": "OriginID", "field_id": "OriginID", "type": "*composed", "value": "~3", "mandatory": true}, -// {"tag": "RequestType", "field_id": "RequestType", "type": "*composed", "value": "~4", "mandatory": true}, -// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~6", "mandatory": true}, -// {"tag": "Category", "field_id": "Category", "type": "*composed", "value": "~7", "mandatory": true}, -// {"tag": "Account", "field_id": "Account", "type": "*composed", "value": "~8", "mandatory": true}, -// {"tag": "Subject", "field_id": "Subject", "type": "*composed", "value": "~9", "mandatory": true}, -// {"tag": "Destination", "field_id": "Destination", "type": "*composed", "value": "~10", "mandatory": true}, -// {"tag": "SetupTime", "field_id": "SetupTime", "type": "*composed", "value": "~11", "mandatory": true}, -// {"tag": "AnswerTime", "field_id": "AnswerTime", "type": "*composed", "value": "~12", "mandatory": true}, -// {"tag": "Usage", "field_id": "Usage", "type": "*composed", "value": "~13", "mandatory": true}, -// ], -// "trailer_fields": [], // template of the import trailer fields -// "cache_dump_fields": [ // template used when dumping cached CDR, eg: partial CDRs -// {"tag": "CGRID", "type": "*composed", "value": "~CGRID"}, -// {"tag": "RunID", "type": "*composed", "value": "~RunID"}, -// {"tag": "TOR", "type": "*composed", "value": "~ToR"}, -// {"tag": "OriginID", "type": "*composed", "value": "~OriginID"}, -// {"tag": "RequestType", "type": "*composed", "value": "~RequestType"}, -// {"tag": "Tenant", "type": "*composed", "value": "~Tenant"}, -// {"tag": "Category", "type": "*composed", "value": "~Category"}, -// {"tag": "Account", "type": "*composed", "value": "~Account"}, -// {"tag": "Subject", "type": "*composed", "value": "~Subject"}, -// {"tag": "Destination", "type": "*composed", "value": "~Destination"}, -// {"tag": "SetupTime", "type": "*composed", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"}, -// {"tag": "AnswerTime", "type": "*composed", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"}, -// {"tag": "Usage", "type": "*composed", "value": "~Usage"}, -// {"tag": "Cost", "type": "*composed", "value": "~Cost"}, -// ], -// }, -// ], - - -// "sessions": { -// "enabled": false, // starts session manager service: -// "listen_bijson": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests -// "chargers_conns": [], // address where to reach the charger service, empty to disable charger functionality: <""|*internal|x.y.z.y:1234> -// "rals_conns": [ -// {"address": "*internal"} // address where to reach the RALs <""|*internal|127.0.0.1:2013> -// ], -// "cdrs_conns": [ -// {"address": "*internal"} // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234> -// ], -// "resources_conns": [], // address where to reach the ResourceS <""|*internal|127.0.0.1:2013> -// "thresholds_conns": [], // address where to reach the ThresholdS <""|*internal|127.0.0.1:2013> -// "stats_conns": [], // address where to reach the StatS <""|*internal|127.0.0.1:2013> -// "suppliers_conns": [], // address where to reach the SupplierS <""|*internal|127.0.0.1:2013> -// "attributes_conns": [], // address where to reach the AttributeS <""|*internal|127.0.0.1:2013> -// "session_replication_conns": [], // replicate sessions towards these session services -// "debit_interval": "0s", // interval to perform debits on. -// "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 -// "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_indexes": [], // index sessions based on these fields for GetActiveSessions API -// "client_protocol": 1.0, // version of protocol to use when acting as JSON-PRC client <"0","1.0"> -// "channel_sync_interval": "0", // sync channels regularly (0 to disable sync session) -// }, - - -// "asterisk_agent": { -// "enabled": false, // starts the Asterisk agent: -// "sessions_conns": [ -// {"address": "*internal"} // connection towards session service: <*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} -// ], -// }, - - -// "freeswitch_agent": { -// "enabled": false, // starts the FreeSWITCH agent: -// "sessions_conns": [ -// {"address": "*internal"} // connection towards session service: <*internal> -// ], -// "subscribe_park": true, // subscribe via fsock to receive park events -// "create_cdr": false, // create CDR out of events and sends them to CDRS component -// "extra_fields": [], // extra fields to store in auth/CDRs when creating them -// //"min_dur_low_balance": "5s", // threshold which will trigger low balance warnings for prepaid calls (needs to be lower than debit_interval) -// //"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 -// "event_socket_conns": [ // instantiate connections to multiple FreeSWITCH servers -// {"address": "127.0.0.1:8021", "password": "ClueCon", "reconnects": 5,"alias":""} -// ], -// }, - - -// "kamailio_agent": { -// "enabled": false, // starts SessionManager service: -// "sessions_conns": [ -// {"address": "*internal"} // connection towards session service: <*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} -// ], -// }, - - -// "diameter_agent": { -// "enabled": false, // enables the diameter agent: -// "listen": "127.0.0.1:3868", // address where to listen for diameter requests -// "dictionaries_path": "/usr/share/cgrates/diameter/dict/", // path towards directory holding additional dictionaries to load -// "sessions_conns": [ -// {"address": "*internal"} // connection towards SessionService -// ], -// "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 -// "templates": { -// "*cca": [ -// {"tag": "SessionId", "field_id": "Session-Id", "type": "*composed", -// "value": "~*req.Session-Id", "mandatory": true}, -// {"tag": "OriginHost", "field_id": "Origin-Host", "type": "*composed", -// "value": "~*vars.OriginHost", "mandatory": true}, -// {"tag": "OriginRealm", "field_id": "Origin-Realm", "type": "*composed", -// "value": "~*vars.OriginRealm", "mandatory": true}, -// {"tag": "AuthApplicationId", "field_id": "Auth-Application-Id", "type": "*composed", -// "value": "~*vars.*appid", "mandatory": true}, -// {"tag": "CCRequestType", "field_id": "CC-Request-Type", "type": "*composed", -// "value": "~*req.CC-Request-Type", "mandatory": true}, -// {"tag": "CCRequestNumber", "field_id": "CC-Request-Number", "type": "*composed", -// "value": "~*req.CC-Request-Number", "mandatory": true}, -// ] -// }, -// "request_processors": [], -// }, - - -// "radius_agent": { -// "enabled": false, // enables the radius agent: -// "listen_net": "udp", // network to listen on -// "listen_auth": "127.0.0.1:1812", // address where to listen for radius authentication requests -// "listen_acct": "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> -// "*default": "CGRateS.org" -// }, -// "client_dictionaries": { // per client path towards directory holding additional dictionaries to load (extra to RFC) -// "*default": "/usr/share/cgrates/radius/dict/", // key represents the client IP or catch-all <*default|$client_ip> -// }, -// "sessions_conns": [ -// {"address": "*internal"} // connection towards SessionService -// ], -// "cdr_requires_session": false, // only create CDR if there is an active session at terminate -// "request_processors": [], -// }, - - -// "http_agent": [], // HTTP Agents, ie towards cnc.to MVNE platform - - -// "pubsubs": { -// "enabled": false, // starts PubSub service: . -// }, - - -// "aliases": { -// "enabled": false, // starts Aliases service: . -// }, - - -// "users": { -// "enabled": false, // starts User service: . -// "indexes": [], // user profile field indexes -// }, - - -// "attributes": { // Attribute service -// "enabled": false, // starts attribute service: . -// //"string_indexed_fields": [], // query indexes based on these fields for faster processing -// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing -// "process_runs": 1, // number of run loops when processing event -// }, - - -// "chargers": { // Charger service -// "enabled": false, // starts charger service: . -// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013> -// //"string_indexed_fields": [], // query indexes based on these fields for faster processing -// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing -// }, - - -// "resources": { // Resource service (*new) -// "enabled": false, // starts ResourceLimiter service: . -// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> -// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234> -// //"string_indexed_fields": [], // query indexes based on these fields for faster processing -// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing -// }, - - -// "stats": { // Stat service (*new) -// "enabled": false, // starts Stat service: . -// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> -// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234> -// //"string_indexed_fields": [], // query indexes based on these fields for faster processing -// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing -// }, - - -// "thresholds": { // Threshold service (*new) -// "enabled": false, // starts ThresholdS service: . -// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> -// //"string_indexed_fields": [], // query indexes based on these fields for faster processing -// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing -// }, - - -// "suppliers": { // Supplier service (*new) -// "enabled": false, // starts SupplierS service: . -// //"string_indexed_fields": [], // query indexes based on these fields for faster processing -// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing -// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013> -// "rals_conns": [ -// {"address": "*internal"}, // address where to reach the RALs for cost/accounting <*internal> -// ], -// "resources_conns": [], // address where to reach the Resource service, empty to disable functionality: <""|*internal|x.y.z.y:1234> -// "stats_conns": [], // address where to reach the Stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> -// }, - - -// "loaders": [ -// { -// "id": "*default", // identifier of the Loader -// "enabled": false, // starts as service: . -// "tenant": "cgrates.org", // 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, 0 to use automation via inotify -// "lock_filename": ".cgr.lck", // Filename containing concurrency lock in case of delayed processing -// "caches_conns": [ -// {"address": "*internal"}, // address where to reach the CacheS for data reload, empty for no reloads <""|*internal|x.y.z.y:1234> -// ], -// "field_separator": ",", // separator used in case of csv files -// "tp_in_dir": "/var/spool/cgrates/loader/in", // absolute path towards the directory where the CDRs are stored -// "tp_out_dir": "/var/spool/cgrates/loader/out", // absolute path towards the directory where processed CDRs will be moved -// "data": [ // data profiles to load -// { -// "type": "*attributes", // data source type -// "file_name": "Attributes.csv", // file name in the tp_in_dir -// "fields": [ -// {"tag": "TenantID", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, -// {"tag": "ProfileID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, -// {"tag": "Contexts", "field_id": "Contexts", "type": "*composed", "value": "~2"}, -// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~3"}, -// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~4"}, -// {"tag": "FieldName", "field_id": "FieldName", "type": "*composed", "value": "~5"}, -// {"tag": "Initial", "field_id": "Initial", "type": "*composed", "value": "~6"}, -// {"tag": "Substitute", "field_id": "Substitute", "type": "*composed", "value": "~7"}, -// {"tag": "Append", "field_id": "Append", "type": "*composed", "value": "~8"}, -// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~9"}, -// ], -// }, -// { -// "type": "*filters", // data source type -// "file_name": "Filters.csv", // file name in the tp_in_dir -// "fields": [ -// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, -// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, -// {"tag": "FilterType", "field_id": "FilterType", "type": "*composed", "value": "~2"}, -// {"tag": "FilterFieldName", "field_id": "FilterFieldName", "type": "*composed", "value": "~3"}, -// {"tag": "FilterFieldValues", "field_id": "FilterFieldValues", "type": "*composed", "value": "~4"}, -// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~5"}, -// ], -// }, -// { -// "type": "*resources", // data source type -// "file_name": "Resources.csv", // file name in the tp_in_dir -// "fields": [ -// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, -// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, -// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"}, -// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"}, -// {"tag": "TTL", "field_id": "UsageTTL", "type": "*composed", "value": "~4"}, -// {"tag": "Limit", "field_id": "Limit", "type": "*composed", "value": "~5"}, -// {"tag": "AllocationMessage", "field_id": "AllocationMessage", "type": "*composed", "value": "~6"}, -// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~7"}, -// {"tag": "Stored", "field_id": "Stored", "type": "*composed", "value": "~8"}, -// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~9"}, -// {"tag": "ThresholdIDs", "field_id": "ThresholdIDs", "type": "*composed", "value": "~10"}, -// ], -// }, -// { -// "type": "*stats", // data source type -// "file_name": "Stats.csv", // file name in the tp_in_dir -// "fields": [ -// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, -// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, -// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"}, -// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"}, -// {"tag": "QueueLength", "field_id": "QueueLength", "type": "*composed", "value": "~4"}, -// {"tag": "TTL", "field_id": "TTL", "type": "*composed", "value": "~5"}, -// {"tag": "Metrics", "field_id": "Metrics", "type": "*composed", "value": "~6"}, -// {"tag": "MetricParams", "field_id": "Parameters", "type": "*composed", "value": "~7"}, -// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~8"}, -// {"tag": "Stored", "field_id": "Stored", "type": "*composed", "value": "~9"}, -// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~10"}, -// {"tag": "MinItems", "field_id": "MinItems", "type": "*composed", "value": "~11"}, -// {"tag": "ThresholdIDs", "field_id": "ThresholdIDs", "type": "*composed", "value": "~12"}, -// ], -// }, -// { -// "type": "*thresholds", // data source type -// "file_name": "Thresholds.csv", // file name in the tp_in_dir -// "fields": [ -// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, -// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, -// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"}, -// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"}, -// {"tag": "MaxHits", "field_id": "MaxHits", "type": "*composed", "value": "~4"}, -// {"tag": "MinHits", "field_id": "MinHits", "type": "*composed", "value": "~5"}, -// {"tag": "MinSleep", "field_id": "MinSleep", "type": "*composed", "value": "~6"}, -// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~7"}, -// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~8"}, -// {"tag": "ActionIDs", "field_id": "ActionIDs", "type": "*composed", "value": "~9"}, -// {"tag": "Async", "field_id": "Async", "type": "*composed", "value": "~10"}, -// ], -// }, -// { -// "type": "*suppliers", // data source type -// "file_name": "Suppliers.csv", // file name in the tp_in_dir -// "fields": [ -// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, -// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, -// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"}, -// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"}, -// {"tag": "Sorting", "field_id": "Sorting", "type": "*composed", "value": "~4"}, -// {"tag": "SortingParamameters", "field_id": "SortingParamameters", "type": "*composed", "value": "~5"}, -// {"tag": "SupplierID", "field_id": "SupplierID", "type": "*composed", "value": "~6"}, -// {"tag": "SupplierFilterIDs", "field_id": "SupplierFilterIDs", "type": "*composed", "value": "~7"}, -// {"tag": "SupplierAccountIDs", "field_id": "SupplierAccountIDs", "type": "*composed", "value": "~8"}, -// {"tag": "SupplierRatingPlanIDs", "field_id": "SupplierRatingPlanIDs", "type": "*composed", "value": "~9"}, -// {"tag": "SupplierResourceIDs", "field_id": "SupplierResourceIDs", "type": "*composed", "value": "~10"}, -// {"tag": "SupplierStatIDs", "field_id": "SupplierStatIDs", "type": "*composed", "value": "~11"}, -// {"tag": "SupplierWeight", "field_id": "SupplierWeight", "type": "*composed", "value": "~12"}, -// {"tag": "SupplierBlocker", "field_id": "SupplierBlocker", "type": "*composed", "value": "~13"}, -// {"tag": "SupplierParameters", "field_id": "SupplierParameters", "type": "*composed", "value": "~14"}, -// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~15"}, -// ], -// }, -// { -// "type": "*chargers", // data source type -// "file_name": "Chargers.csv", // file name in the tp_in_dir -// "fields": [ -// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, -// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, -// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"}, -// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"}, -// {"tag": "RunID", "field_id": "RunID", "type": "*composed", "value": "~4"}, -// {"tag": "AttributeIDs", "field_id": "AttributeIDs", "type": "*composed", "value": "~5"}, -// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~6"}, -// ], -// }, -// ], -// }, +// "cdrc": [ +// { +// "id": "*default", // identifier of the CDRC runner +// "enabled": false, // enable CDR client functionality +// "dry_run": false, // do not send the CDRs to CDRS, just parse them +// "cdrs_conns": [ +// {"address": "*internal"} // address where to reach CDR server. <*internal|x.y.z.y:1234> +// ], +// "cdr_format": "csv", // CDR file format <*csv|*freeswitch_csv|*fwv|*opensips_flatstore|*partial_csv> +// "field_separator": ",", // separator used in case of csv files +// "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB> +// "run_delay": 0, // sleep interval in seconds between consecutive runs, 0 to use automation via inotify +// "max_open_files": 1024, // maximum simultaneous files to process, 0 for unlimited +// "data_usage_multiply_factor": 1024, // conversion factor for data usage +// "cdr_in_dir": "/var/spool/cgrates/cdrc/in", // absolute path towards the directory where the CDRs are stored +// "cdr_out_dir": "/var/spool/cgrates/cdrc/out", // absolute path towards the directory where processed CDRs will be moved +// "failed_calls_prefix": "missed_calls", // used in case of flatstore CDRs to avoid searching for BYE records +// "cdr_path": "", // path towards one CDR element in case of XML CDRs +// "cdr_source_id": "freeswitch_csv", // free form field, tag identifying the source of the CDRs within CDRS database +// "filters": [], // new filters used in FilterS subsystem +// "tenant": "cgrates.org", // default tenant +// "continue_on_success": false, // continue to the next template if executed +// "partial_record_cache": "10s", // duration to cache partial records when not pairing +// "partial_cache_expiry_action": "*dump_to_file", // action taken when cache when records in cache are timed-out <*dump_to_file|*post_cdr> +// "header_fields": [], // template of the import header fields +// "content_fields":[ // import content_fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value +// {"tag": "TOR", "field_id": "ToR", "type": "*composed", "value": "~2", "mandatory": true}, +// {"tag": "OriginID", "field_id": "OriginID", "type": "*composed", "value": "~3", "mandatory": true}, +// {"tag": "RequestType", "field_id": "RequestType", "type": "*composed", "value": "~4", "mandatory": true}, +// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~6", "mandatory": true}, +// {"tag": "Category", "field_id": "Category", "type": "*composed", "value": "~7", "mandatory": true}, +// {"tag": "Account", "field_id": "Account", "type": "*composed", "value": "~8", "mandatory": true}, +// {"tag": "Subject", "field_id": "Subject", "type": "*composed", "value": "~9", "mandatory": true}, +// {"tag": "Destination", "field_id": "Destination", "type": "*composed", "value": "~10", "mandatory": true}, +// {"tag": "SetupTime", "field_id": "SetupTime", "type": "*composed", "value": "~11", "mandatory": true}, +// {"tag": "AnswerTime", "field_id": "AnswerTime", "type": "*composed", "value": "~12", "mandatory": true}, +// {"tag": "Usage", "field_id": "Usage", "type": "*composed", "value": "~13", "mandatory": true}, +// ], +// "trailer_fields": [], // template of the import trailer fields +// "cache_dump_fields": [ // template used when dumping cached CDR, eg: partial CDRs +// {"tag": "CGRID", "type": "*composed", "value": "~CGRID"}, +// {"tag": "RunID", "type": "*composed", "value": "~RunID"}, +// {"tag": "TOR", "type": "*composed", "value": "~ToR"}, +// {"tag": "OriginID", "type": "*composed", "value": "~OriginID"}, +// {"tag": "RequestType", "type": "*composed", "value": "~RequestType"}, +// {"tag": "Tenant", "type": "*composed", "value": "~Tenant"}, +// {"tag": "Category", "type": "*composed", "value": "~Category"}, +// {"tag": "Account", "type": "*composed", "value": "~Account"}, +// {"tag": "Subject", "type": "*composed", "value": "~Subject"}, +// {"tag": "Destination", "type": "*composed", "value": "~Destination"}, +// {"tag": "SetupTime", "type": "*composed", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"}, +// {"tag": "AnswerTime", "type": "*composed", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"}, +// {"tag": "Usage", "type": "*composed", "value": "~Usage"}, +// {"tag": "Cost", "type": "*composed", "value": "~Cost"}, +// ], +// }, // ], -// "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 -// "from_address": "cgr-mailer@localhost.localdomain" // from address used when sending emails out -// }, +// "sessions": { +// "enabled": false, // starts session manager service: +// "listen_bijson": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests +// "chargers_conns": [], // address where to reach the charger service, empty to disable charger functionality: <""|*internal|x.y.z.y:1234> +// "rals_conns": [ +// {"address": "*internal"} // address where to reach the RALs <""|*internal|127.0.0.1:2013> +// ], +// "cdrs_conns": [ +// {"address": "*internal"} // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234> +// ], +// "resources_conns": [], // address where to reach the ResourceS <""|*internal|127.0.0.1:2013> +// "thresholds_conns": [], // address where to reach the ThresholdS <""|*internal|127.0.0.1:2013> +// "stats_conns": [], // address where to reach the StatS <""|*internal|127.0.0.1:2013> +// "suppliers_conns": [], // address where to reach the SupplierS <""|*internal|127.0.0.1:2013> +// "attributes_conns": [], // address where to reach the AttributeS <""|*internal|127.0.0.1:2013> +// "session_replication_conns": [], // replicate sessions towards these session services +// "debit_interval": "0s", // interval to perform debits on. +// "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 +// "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_indexes": [], // index sessions based on these fields for GetActiveSessions API +// "client_protocol": 1.0, // version of protocol to use when acting as JSON-PRC client <"0","1.0"> +// "channel_sync_interval": "0", // sync channels regularly (0 to disable sync session) +// }, -// "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": "CGRID", // template extracting client information out of StoredCdr; <$RSRFields> -// "customer_number": "Subject", // template extracting customer number out of StoredCdr; <$RSRFields> -// "orig_number": "Subject", // template extracting origination number out of StoredCdr; <$RSRFields> -// "term_number": "Destination", // template extracting termination number out of StoredCdr; <$RSRFields> -// "bill_to_number": "", // template extracting billed to number out of StoredCdr; <$RSRFields> -// "zipcode": "", // template extracting billing zip code out of StoredCdr; <$RSRFields> -// "plus4": "", // template extracting billing zip code extension out of StoredCdr; <$RSRFields> -// "p2pzipcode": "", // template extracting secondary zip code out of StoredCdr; <$RSRFields> -// "p2pplus4": "", // template extracting secondary zip code extension out of StoredCdr; <$RSRFields> -// "units": "^1", // template extracting number of “lines” or unique charges contained within the revenue out of StoredCdr; <$RSRFields> -// "unit_type": "^00", // template extracting number of unique access lines out of StoredCdr; <$RSRFields> -// "tax_included": "^0", // template extracting tax included in revenue out of StoredCdr; <$RSRFields> -// "tax_situs_rule": "^04", // template extracting tax situs rule out of StoredCdr; <$RSRFields> -// "trans_type_code": "^010101", // template extracting transaction type indicator out of StoredCdr; <$RSRFields> -// "sales_type_code": "^R", // template extracting sales type code out of StoredCdr; <$RSRFields> -// "tax_exemption_code_list": "", // template extracting tax exemption code list out of StoredCdr; <$RSRFields> -// }, +// "asterisk_agent": { +// "enabled": false, // starts the Asterisk agent: +// "sessions_conns": [ +// {"address": "*internal"} // connection towards session service: <*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} +// ], +// }, -// "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 -// "caches_conns": [ // addresses towards cacheS components for reloads -// {"address": "127.0.0.1:2012", "transport": "*json"} -// ], -// "scheduler_conns": [ -// {"address": "127.0.0.1:2012"} -// ], -// }, +// "freeswitch_agent": { +// "enabled": false, // starts the FreeSWITCH agent: +// "sessions_conns": [ +// {"address": "*internal"} // connection towards session service: <*internal> +// ], +// "subscribe_park": true, // subscribe via fsock to receive park events +// "create_cdr": false, // create CDR out of events and sends them to CDRS component +// "extra_fields": [], // extra fields to store in auth/CDRs when creating them +// //"min_dur_low_balance": "5s", // threshold which will trigger low balance warnings for prepaid calls (needs to be lower than debit_interval) +// //"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 +// "event_socket_conns": [ // instantiate connections to multiple FreeSWITCH servers +// {"address": "127.0.0.1:8021", "password": "ClueCon", "reconnects": 5,"alias":""} +// ], +// }, -// "migrator": { -// "out_datadb_type": "redis", -// "out_datadb_host": "127.0.0.1", -// "out_datadb_port": "6379", -// "out_datadb_name": "10", -// "out_datadb_user": "cgrates", -// "out_datadb_password": "", -// "out_datadb_encoding": "msgpack", -// "out_stordb_type": "mysql", -// "out_stordb_host": "127.0.0.1", -// "out_stordb_port": "3306", -// "out_stordb_name": "cgrates", -// "out_stordb_user": "cgrates", -// "out_stordb_password": "", -// }, +// "kamailio_agent": { +// "enabled": false, // starts SessionManager service: +// "sessions_conns": [ +// {"address": "*internal"} // connection towards session service: <*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} +// ], +// }, -// "dispatcher":{ -// "enabled": false, // starts DispatcherS service: . -// "rals_conns": [], // address where to reach the RALs for dispatcherS <*internal> -// "resources_conns": [], // address where to reach the ResourceS <""|127.0.0.1:2013> -// "thresholds_conns": [], // address where to reach the ThresholdS <""|127.0.0.1:2013> -// "stats_conns": [], // address where to reach the StatS <""|127.0.0.1:2013> -// "suppliers_conns": [], // address where to reach the SupplierS <""|127.0.0.1:2013> -// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013> -// "sessions_conns": [], // connection towards SessionService -// "chargers_conns": [], // address where to reach the ChargerS <""|127.0.0.1:2013> -// "dispatching_strategy": "*first", // strategy for dispatching <*first|*random|*next|*broadcast> -// }, +// "diameter_agent": { +// "enabled": false, // enables the diameter agent: +// "listen": "127.0.0.1:3868", // address where to listen for diameter requests +// "dictionaries_path": "/usr/share/cgrates/diameter/dict/", // path towards directory holding additional dictionaries to load +// "sessions_conns": [ +// {"address": "*internal"} // connection towards SessionService +// ], +// "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 +// "templates": { +// "*cca": [ +// {"tag": "SessionId", "field_id": "Session-Id", "type": "*composed", +// "value": "~*req.Session-Id", "mandatory": true}, +// {"tag": "OriginHost", "field_id": "Origin-Host", "type": "*composed", +// "value": "~*vars.OriginHost", "mandatory": true}, +// {"tag": "OriginRealm", "field_id": "Origin-Realm", "type": "*composed", +// "value": "~*vars.OriginRealm", "mandatory": true}, +// {"tag": "AuthApplicationId", "field_id": "Auth-Application-Id", "type": "*composed", +// "value": "~*vars.*appid", "mandatory": true}, +// {"tag": "CCRequestType", "field_id": "CC-Request-Type", "type": "*composed", +// "value": "~*req.CC-Request-Type", "mandatory": true}, +// {"tag": "CCRequestNumber", "field_id": "CC-Request-Number", "type": "*composed", +// "value": "~*req.CC-Request-Number", "mandatory": true}, +// ] +// }, +// "request_processors": [], +// }, -// "analyzers":{ -// "enabled":false // starts AnalyzerS service: . -// }, +// "radius_agent": { +// "enabled": false, // enables the radius agent: +// "listen_net": "udp", // network to listen on +// "listen_auth": "127.0.0.1:1812", // address where to listen for radius authentication requests +// "listen_acct": "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> +// "*default": "CGRateS.org" +// }, +// "client_dictionaries": { // per client path towards directory holding additional dictionaries to load (extra to RFC) +// "*default": "/usr/share/cgrates/radius/dict/", // key represents the client IP or catch-all <*default|$client_ip> +// }, +// "sessions_conns": [ +// {"address": "*internal"} // connection towards SessionService +// ], +// "cdr_requires_session": false, // only create CDR if there is an active session at terminate +// "request_processors": [], +// }, + + +// "http_agent": [], // HTTP Agents, ie towards cnc.to MVNE platform + + +// "pubsubs": { +// "enabled": false, // starts PubSub service: . +// }, + + +// "aliases": { +// "enabled": false, // starts Aliases service: . +// }, + + +// "users": { +// "enabled": false, // starts User service: . +// "indexes": [], // user profile field indexes +// }, + + +// "attributes": { // Attribute service +// "enabled": false, // starts attribute service: . +// //"string_indexed_fields": [], // query indexes based on these fields for faster processing +// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing +// "process_runs": 1, // number of run loops when processing event +// }, + + +// "chargers": { // Charger service +// "enabled": false, // starts charger service: . +// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013> +// //"string_indexed_fields": [], // query indexes based on these fields for faster processing +// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing +// }, + + +// "resources": { // Resource service (*new) +// "enabled": false, // starts ResourceLimiter service: . +// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> +// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234> +// //"string_indexed_fields": [], // query indexes based on these fields for faster processing +// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing +// }, + + +// "stats": { // Stat service (*new) +// "enabled": false, // starts Stat service: . +// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> +// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234> +// //"string_indexed_fields": [], // query indexes based on these fields for faster processing +// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing +// }, + + +// "thresholds": { // Threshold service (*new) +// "enabled": false, // starts ThresholdS service: . +// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> +// //"string_indexed_fields": [], // query indexes based on these fields for faster processing +// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing +// }, + + +// "suppliers": { // Supplier service (*new) +// "enabled": false, // starts SupplierS service: . +// //"string_indexed_fields": [], // query indexes based on these fields for faster processing +// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing +// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013> +// "rals_conns": [ +// {"address": "*internal"}, // address where to reach the RALs for cost/accounting <*internal> +// ], +// "resources_conns": [], // address where to reach the Resource service, empty to disable functionality: <""|*internal|x.y.z.y:1234> +// "stats_conns": [], // address where to reach the Stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> +// }, + + +// "loaders": [ +// { +// "id": "*default", // identifier of the Loader +// "enabled": false, // starts as service: . +// "tenant": "cgrates.org", // 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, 0 to use automation via inotify +// "lock_filename": ".cgr.lck", // Filename containing concurrency lock in case of delayed processing +// "caches_conns": [ +// {"address": "*internal"}, // address where to reach the CacheS for data reload, empty for no reloads <""|*internal|x.y.z.y:1234> +// ], +// "field_separator": ",", // separator used in case of csv files +// "tp_in_dir": "/var/spool/cgrates/loader/in", // absolute path towards the directory where the CDRs are stored +// "tp_out_dir": "/var/spool/cgrates/loader/out", // absolute path towards the directory where processed CDRs will be moved +// "data": [ // data profiles to load +// { +// "type": "*attributes", // data source type +// "file_name": "Attributes.csv", // file name in the tp_in_dir +// "fields": [ +// {"tag": "TenantID", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, +// {"tag": "ProfileID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, +// {"tag": "Contexts", "field_id": "Contexts", "type": "*composed", "value": "~2"}, +// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~3"}, +// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~4"}, +// {"tag": "FieldName", "field_id": "FieldName", "type": "*composed", "value": "~5"}, +// {"tag": "Initial", "field_id": "Initial", "type": "*composed", "value": "~6"}, +// {"tag": "Substitute", "field_id": "Substitute", "type": "*composed", "value": "~7"}, +// {"tag": "Append", "field_id": "Append", "type": "*composed", "value": "~8"}, +// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~9"}, +// ], +// }, +// { +// "type": "*filters", // data source type +// "file_name": "Filters.csv", // file name in the tp_in_dir +// "fields": [ +// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, +// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, +// {"tag": "FilterType", "field_id": "FilterType", "type": "*composed", "value": "~2"}, +// {"tag": "FilterFieldName", "field_id": "FilterFieldName", "type": "*composed", "value": "~3"}, +// {"tag": "FilterFieldValues", "field_id": "FilterFieldValues", "type": "*composed", "value": "~4"}, +// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~5"}, +// ], +// }, +// { +// "type": "*resources", // data source type +// "file_name": "Resources.csv", // file name in the tp_in_dir +// "fields": [ +// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, +// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, +// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"}, +// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"}, +// {"tag": "TTL", "field_id": "UsageTTL", "type": "*composed", "value": "~4"}, +// {"tag": "Limit", "field_id": "Limit", "type": "*composed", "value": "~5"}, +// {"tag": "AllocationMessage", "field_id": "AllocationMessage", "type": "*composed", "value": "~6"}, +// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~7"}, +// {"tag": "Stored", "field_id": "Stored", "type": "*composed", "value": "~8"}, +// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~9"}, +// {"tag": "ThresholdIDs", "field_id": "ThresholdIDs", "type": "*composed", "value": "~10"}, +// ], +// }, +// { +// "type": "*stats", // data source type +// "file_name": "Stats.csv", // file name in the tp_in_dir +// "fields": [ +// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, +// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, +// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"}, +// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"}, +// {"tag": "QueueLength", "field_id": "QueueLength", "type": "*composed", "value": "~4"}, +// {"tag": "TTL", "field_id": "TTL", "type": "*composed", "value": "~5"}, +// {"tag": "Metrics", "field_id": "Metrics", "type": "*composed", "value": "~6"}, +// {"tag": "MetricParams", "field_id": "Parameters", "type": "*composed", "value": "~7"}, +// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~8"}, +// {"tag": "Stored", "field_id": "Stored", "type": "*composed", "value": "~9"}, +// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~10"}, +// {"tag": "MinItems", "field_id": "MinItems", "type": "*composed", "value": "~11"}, +// {"tag": "ThresholdIDs", "field_id": "ThresholdIDs", "type": "*composed", "value": "~12"}, +// ], +// }, +// { +// "type": "*thresholds", // data source type +// "file_name": "Thresholds.csv", // file name in the tp_in_dir +// "fields": [ +// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, +// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, +// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"}, +// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"}, +// {"tag": "MaxHits", "field_id": "MaxHits", "type": "*composed", "value": "~4"}, +// {"tag": "MinHits", "field_id": "MinHits", "type": "*composed", "value": "~5"}, +// {"tag": "MinSleep", "field_id": "MinSleep", "type": "*composed", "value": "~6"}, +// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~7"}, +// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~8"}, +// {"tag": "ActionIDs", "field_id": "ActionIDs", "type": "*composed", "value": "~9"}, +// {"tag": "Async", "field_id": "Async", "type": "*composed", "value": "~10"}, +// ], +// }, +// { +// "type": "*suppliers", // data source type +// "file_name": "Suppliers.csv", // file name in the tp_in_dir +// "fields": [ +// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, +// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, +// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"}, +// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"}, +// {"tag": "Sorting", "field_id": "Sorting", "type": "*composed", "value": "~4"}, +// {"tag": "SortingParamameters", "field_id": "SortingParamameters", "type": "*composed", "value": "~5"}, +// {"tag": "SupplierID", "field_id": "SupplierID", "type": "*composed", "value": "~6"}, +// {"tag": "SupplierFilterIDs", "field_id": "SupplierFilterIDs", "type": "*composed", "value": "~7"}, +// {"tag": "SupplierAccountIDs", "field_id": "SupplierAccountIDs", "type": "*composed", "value": "~8"}, +// {"tag": "SupplierRatingPlanIDs", "field_id": "SupplierRatingPlanIDs", "type": "*composed", "value": "~9"}, +// {"tag": "SupplierResourceIDs", "field_id": "SupplierResourceIDs", "type": "*composed", "value": "~10"}, +// {"tag": "SupplierStatIDs", "field_id": "SupplierStatIDs", "type": "*composed", "value": "~11"}, +// {"tag": "SupplierWeight", "field_id": "SupplierWeight", "type": "*composed", "value": "~12"}, +// {"tag": "SupplierBlocker", "field_id": "SupplierBlocker", "type": "*composed", "value": "~13"}, +// {"tag": "SupplierParameters", "field_id": "SupplierParameters", "type": "*composed", "value": "~14"}, +// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~15"}, +// ], +// }, +// { +// "type": "*chargers", // data source type +// "file_name": "Chargers.csv", // file name in the tp_in_dir +// "fields": [ +// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true}, +// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true}, +// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"}, +// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"}, +// {"tag": "RunID", "field_id": "RunID", "type": "*composed", "value": "~4"}, +// {"tag": "AttributeIDs", "field_id": "AttributeIDs", "type": "*composed", "value": "~5"}, +// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~6"}, +// ], +// }, +// ], +// }, +// ], + + +// "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 +// "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": "CGRID", // template extracting client information out of StoredCdr; <$RSRFields> +// "customer_number": "Subject", // template extracting customer number out of StoredCdr; <$RSRFields> +// "orig_number": "Subject", // template extracting origination number out of StoredCdr; <$RSRFields> +// "term_number": "Destination", // template extracting termination number out of StoredCdr; <$RSRFields> +// "bill_to_number": "", // template extracting billed to number out of StoredCdr; <$RSRFields> +// "zipcode": "", // template extracting billing zip code out of StoredCdr; <$RSRFields> +// "plus4": "", // template extracting billing zip code extension out of StoredCdr; <$RSRFields> +// "p2pzipcode": "", // template extracting secondary zip code out of StoredCdr; <$RSRFields> +// "p2pplus4": "", // template extracting secondary zip code extension out of StoredCdr; <$RSRFields> +// "units": "^1", // template extracting number of “lines” or unique charges contained within the revenue out of StoredCdr; <$RSRFields> +// "unit_type": "^00", // template extracting number of unique access lines out of StoredCdr; <$RSRFields> +// "tax_included": "^0", // template extracting tax included in revenue out of StoredCdr; <$RSRFields> +// "tax_situs_rule": "^04", // template extracting tax situs rule out of StoredCdr; <$RSRFields> +// "trans_type_code": "^010101", // template extracting transaction type indicator out of StoredCdr; <$RSRFields> +// "sales_type_code": "^R", // template extracting sales type code out of StoredCdr; <$RSRFields> +// "tax_exemption_code_list": "", // template extracting tax exemption code list out of StoredCdr; <$RSRFields> +// }, + + +// "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 +// "caches_conns": [ // addresses towards cacheS components for reloads +// {"address": "127.0.0.1:2012", "transport": "*json"} +// ], +// "scheduler_conns": [ +// {"address": "127.0.0.1:2012"} +// ], +// }, + + +// "migrator": { +// "out_datadb_type": "redis", +// "out_datadb_host": "127.0.0.1", +// "out_datadb_port": "6379", +// "out_datadb_name": "10", +// "out_datadb_user": "cgrates", +// "out_datadb_password": "", +// "out_datadb_encoding": "msgpack", +// "out_stordb_type": "mysql", +// "out_stordb_host": "127.0.0.1", +// "out_stordb_port": "3306", +// "out_stordb_name": "cgrates", +// "out_stordb_user": "cgrates", +// "out_stordb_password": "", +// }, + + +// "dispatcher":{ +// "enabled": false, // starts DispatcherS service: . +// "rals_conns": [], // address where to reach the RALs for dispatcherS <*internal> +// "resources_conns": [], // address where to reach the ResourceS <""|127.0.0.1:2013> +// "thresholds_conns": [], // address where to reach the ThresholdS <""|127.0.0.1:2013> +// "stats_conns": [], // address where to reach the StatS <""|127.0.0.1:2013> +// "suppliers_conns": [], // address where to reach the SupplierS <""|127.0.0.1:2013> +// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013> +// "sessions_conns": [], // connection towards SessionService +// "chargers_conns": [], // address where to reach the ChargerS <""|127.0.0.1:2013> +// "dispatching_strategy": "*first", // strategy for dispatching <*first|*random|*next|*broadcast> +// }, + + +// "analyzers":{ +// "enabled":false // starts AnalyzerS service: . +// }, } \ No newline at end of file