mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Default configuration updated, smaller internal_ttl, no default tenant for cdrc, cdre and loaders, dispatchers sample config removed
This commit is contained in:
@@ -51,8 +51,8 @@ func (cdrscfg *CdrsCfg) loadFromJsonCfg(jsnCdrsCfg *CdrsJsonCfg) (err error) {
|
||||
if jsnCdrsCfg.Store_cdrs != nil {
|
||||
cdrscfg.CDRSStoreCdrs = *jsnCdrsCfg.Store_cdrs
|
||||
}
|
||||
if jsnCdrsCfg.Sessions_cost_retries != nil {
|
||||
cdrscfg.CDRSSMCostRetries = *jsnCdrsCfg.Sessions_cost_retries
|
||||
if jsnCdrsCfg.Session_cost_retries != nil {
|
||||
cdrscfg.CDRSSMCostRetries = *jsnCdrsCfg.Session_cost_retries
|
||||
}
|
||||
if jsnCdrsCfg.Chargers_conns != nil {
|
||||
cdrscfg.CDRSChargerSConns = make([]*HaPoolConfig, len(*jsnCdrsCfg.Chargers_conns))
|
||||
|
||||
@@ -42,7 +42,7 @@ func TestCdrsCfgloadFromJsonCfg(t *testing.T) {
|
||||
"enabled": false, // start the CDR Server service: <true|false>
|
||||
"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
|
||||
"session_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>
|
||||
|
||||
@@ -31,11 +31,11 @@ const CGRATES_CFG_JSON = `
|
||||
"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
|
||||
"http_skip_tls_verify": false, // if enabled HttpClient 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)
|
||||
"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: *call_url, CDR exports)
|
||||
"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
|
||||
@@ -45,32 +45,32 @@ const CGRATES_CFG_JSON = `
|
||||
"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
|
||||
"internal_ttl": "2m", // maximum duration to wait for internal connections before giving up
|
||||
"internal_ttl": "5s", // maximum duration to wait for internal connections before giving up
|
||||
"locking_timeout": "0", // timeout internal locks to avoid deadlocks
|
||||
"digest_separator": ",",
|
||||
"digest_equal": ":",
|
||||
"rsr_separator": ";",
|
||||
"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
|
||||
},
|
||||
|
||||
|
||||
"data_db": { // database used to store runtime data (eg: accounts, cdr stats)
|
||||
"db_type": "redis", // data_db type: <*redis|*mongo|*internal>
|
||||
"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
|
||||
"redis_sentinel":"", // redis_sentinel is the name of sentinel
|
||||
"redis_sentinel":"", // the name of sentinel when used
|
||||
},
|
||||
|
||||
|
||||
"stor_db": { // database used to store offline tariff plans and CDRs
|
||||
"db_type": "mysql", // stor database type to use: <*mongo|*mysql|*postgres|*internal>
|
||||
"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_port": 3306, // the port to reach the stor_db
|
||||
"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
|
||||
"db_user": "cgrates", // username to use when connecting to stor_db
|
||||
"db_password": "", // password to use when connecting to stor_db
|
||||
"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
|
||||
@@ -93,8 +93,8 @@ const CGRATES_CFG_JSON = `
|
||||
"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)
|
||||
"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":"",
|
||||
},
|
||||
|
||||
@@ -111,7 +111,7 @@ const CGRATES_CFG_JSON = `
|
||||
|
||||
"scheduler": {
|
||||
"enabled": false, // start Scheduler service: <true|false>
|
||||
"cdrs_conns": [], // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234>
|
||||
"cdrs_conns": [], // connections to CDRs for *cdrlog actions <*internal|x.y.z.y:1234>
|
||||
},
|
||||
|
||||
|
||||
@@ -152,18 +152,18 @@ const CGRATES_CFG_JSON = `
|
||||
|
||||
|
||||
"filters": { // Filters configuration (*new)
|
||||
"stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"resources_conns": [], // address where to reach the resource service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"stats_conns": [], // connections to StatS for <*stats> filters, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"resources_conns": [], // connections to ResourceS for <*resources> filters, 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: <true|false>
|
||||
"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>
|
||||
"enabled": false, // enable Rating/Accounting service: <true|false>
|
||||
"thresholds_conns": [], // connections to ThresholdS for account/balance updates, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
|
||||
"stats_conns": [], // connections to StatS for account/balance updates, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"rp_subject_prefix_matching": false, // enables prefix matching for the rating profile subject
|
||||
"remove_expired":true, // enables remove of expired balances
|
||||
"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",
|
||||
@@ -173,32 +173,32 @@ const CGRATES_CFG_JSON = `
|
||||
},
|
||||
|
||||
|
||||
"cdrs": {
|
||||
"enabled": false, // start the CDR Server service: <true|false>
|
||||
"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": "*internal"} // address where to reach the charger service, empty to disable charger functionality: <""|*internal|x.y.z.y:1234>
|
||||
"cdrs": { // CDRs config
|
||||
"enabled": false, // start the CDR Server: <true|false>
|
||||
"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|x.y.z.y:1234>
|
||||
{"address": "*internal"}
|
||||
],
|
||||
"rals_conns": [
|
||||
{"address": "*internal"} // address where to reach the Rater for cost calculation, empty to disable functionality: <""|*internal|x.y.z.y:1234>
|
||||
"rals_conns": [ // connections to RALs for cost calculation: <""|*internal|x.y.z.y:1234>
|
||||
{"address": "*internal"}
|
||||
],
|
||||
"attributes_conns": [], // address where to reach the attribute service, empty to disable attributes 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>
|
||||
"attributes_conns": [], // connection to AttributeS for altering *raw CDRs, empty to disable attributes functionality: <""|*internal|x.y.z.y:1234>
|
||||
"thresholds_conns": [], // connection to ThresholdS for CDR reporting, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
|
||||
"stats_conns": [], // connections to StatS for CDR reporting, 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": {
|
||||
"cdre": { // CDRe config
|
||||
"*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_format": "*file_csv", // exported CDRs format <*file_csv|*file_fwv|*http_post|*http_json_cdr|*http_json_map|*amqp_json_cdr|*amqp_json_map|*sqs_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
|
||||
"filters" :[], // filters for this export
|
||||
"tenant": "", // tenant used in filterS.Pass
|
||||
"synchronous": false, // block processing until export has a result
|
||||
"attempts": 1, // Number of attempts if not success
|
||||
"attempts": 1, // export attempts
|
||||
"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
|
||||
@@ -226,13 +226,13 @@ const CGRATES_CFG_JSON = `
|
||||
},
|
||||
|
||||
|
||||
"cdrc": [
|
||||
"cdrc": [ // CDRc config
|
||||
{
|
||||
"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>
|
||||
"cdrs_conns": [ // connections to CDRs. <*internal|x.y.z.y:1234>
|
||||
{"address": "*internal"}
|
||||
],
|
||||
"cdr_format": "*csv", // CDR file format <*csv|*freeswitch_csv|*fwv|*opensips_flatstore|*partial_csv>
|
||||
"field_separator": ",", // separator used in case of csv files
|
||||
@@ -245,8 +245,8 @@ const CGRATES_CFG_JSON = `
|
||||
"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
|
||||
"filters" :[], // limit parsing based on the filters
|
||||
"tenant": "", // tenant used by import
|
||||
"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>
|
||||
@@ -286,22 +286,22 @@ const CGRATES_CFG_JSON = `
|
||||
|
||||
|
||||
"sessions": {
|
||||
"enabled": false, // starts session manager service: <true|false>
|
||||
"enabled": false, // starts the session service: <true|false>
|
||||
"listen_bijson": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests
|
||||
"chargers_conns": [
|
||||
{"address": "*internal"} // address where to reach the charger service <*internal|x.y.z.y:1234>
|
||||
"chargers_conns": [ // connections to ChargerS for session forking <*internal|x.y.z.y:1234>
|
||||
{"address": "*internal"}
|
||||
],
|
||||
"rals_conns": [
|
||||
{"address": "*internal"} // address where to reach the RALs <""|*internal|127.0.0.1:2013>
|
||||
"rals_conns": [ // connections to RALs for rating/accounting <""|*internal|127.0.0.1:2013>
|
||||
{"address": "*internal"}
|
||||
],
|
||||
"cdrs_conns": [
|
||||
{"address": "*internal"} // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234>
|
||||
"cdrs_conns": [ // connections to CDRs for CDR posting <*internal|x.y.z.y:1234>
|
||||
{"address": "*internal"}
|
||||
],
|
||||
"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>
|
||||
"resources_conns": [], // connections to ResourceS for resources monitoring <""|*internal|127.0.0.1:2013>
|
||||
"thresholds_conns": [], // connections to ThresholdS for reporting session events <""|*internal|127.0.0.1:2013>
|
||||
"stats_conns": [], // connections to StatS for reporting session events <""|*internal|127.0.0.1:2013>
|
||||
"suppliers_conns": [], // connections to SupplierS for querying suppliers for event <""|*internal|127.0.0.1:2013>
|
||||
"attributes_conns": [], // connections to AttributeS for altering event fields <""|*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
|
||||
@@ -312,14 +312,14 @@ const CGRATES_CFG_JSON = `
|
||||
//"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)
|
||||
"channel_sync_interval": "0", // sync channels to detect stale sessions (0 to disable)
|
||||
},
|
||||
|
||||
|
||||
"asterisk_agent": {
|
||||
"enabled": false, // starts the Asterisk agent: <true|false>
|
||||
"sessions_conns": [
|
||||
{"address": "*internal"} // connection towards session service: <*internal>
|
||||
"sessions_conns": [ // connections to SessionS for session management and CDR posting: <*internal>
|
||||
{"address": "*internal"}
|
||||
],
|
||||
"create_cdr": false, // create CDR out of events and sends it to CDRS component
|
||||
"asterisk_conns":[ // instantiate connections to multiple Asterisk servers
|
||||
@@ -330,11 +330,11 @@ const CGRATES_CFG_JSON = `
|
||||
|
||||
"freeswitch_agent": {
|
||||
"enabled": false, // starts the FreeSWITCH agent: <true|false>
|
||||
"sessions_conns": [
|
||||
{"address": "*internal"} // connection towards session service: <*internal>
|
||||
"sessions_conns": [ // connections to SessionS for session management and CDR posting: <*internal>
|
||||
{"address": "*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
|
||||
"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
|
||||
//"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
|
||||
@@ -348,9 +348,9 @@ const CGRATES_CFG_JSON = `
|
||||
|
||||
|
||||
"kamailio_agent": {
|
||||
"enabled": false, // starts SessionManager service: <true|false>
|
||||
"sessions_conns": [
|
||||
{"address": "*internal"} // connection towards session service: <*internal>
|
||||
"enabled": false, // starts Kamailio agent: <true|false>
|
||||
"sessions_conns": [ // connections to SessionS for session management and CDR posting: <*internal>
|
||||
{"address": "*internal"}
|
||||
],
|
||||
"create_cdr": false, // create CDR out of events and sends them to CDRS component
|
||||
"timezone": "", // timezone of the Kamailio server
|
||||
@@ -365,8 +365,8 @@ const CGRATES_CFG_JSON = `
|
||||
"listen": "127.0.0.1:3868", // address where to listen for diameter requests <x.y.z.y/x1.y1.z1.y1:1234>
|
||||
"listen_net": "tcp", // transport type for diameter <tcp|sctp>
|
||||
"dictionaries_path": "/usr/share/cgrates/diameter/dict/", // path towards directory holding additional dictionaries to load
|
||||
"sessions_conns": [
|
||||
{"address": "*internal"} // connection towards SessionService
|
||||
"sessions_conns": [ // connections to SessionS for session management and CDR posting
|
||||
{"address": "*internal"}
|
||||
],
|
||||
"origin_host": "CGR-DA", // diameter Origin-Host AVP used in replies
|
||||
"origin_realm": "cgrates.org", // diameter Origin-Realm AVP used in replies
|
||||
@@ -374,7 +374,7 @@ const CGRATES_CFG_JSON = `
|
||||
"product_name": "CGRateS", // diameter Product-Name AVP used in replies
|
||||
"max_active_requests": -1, // limit the number of active requests processed by the server <-1|0-n>
|
||||
"asr_template": "", // enable AbortSession message being sent to client on DisconnectSession
|
||||
"templates":{
|
||||
"templates":{ // default message templates
|
||||
"*err": [
|
||||
{"tag": "SessionId", "field_id": "Session-Id", "type": "*composed",
|
||||
"value": "~*req.Session-Id", "mandatory": true},
|
||||
@@ -418,7 +418,8 @@ const CGRATES_CFG_JSON = `
|
||||
"value": "1"},
|
||||
]
|
||||
},
|
||||
"request_processors": [],
|
||||
"request_processors": [ // list of processors to be applied to diameter messages
|
||||
],
|
||||
},
|
||||
|
||||
|
||||
@@ -433,10 +434,11 @@ const CGRATES_CFG_JSON = `
|
||||
"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
|
||||
"sessions_conns": [ // connections to SessionS for session management and CDR posting
|
||||
{"address": "*internal"}
|
||||
],
|
||||
"request_processors": [ // request processors to be applied to Radius messages
|
||||
],
|
||||
"request_processors": [],
|
||||
},
|
||||
|
||||
|
||||
@@ -444,7 +446,7 @@ const CGRATES_CFG_JSON = `
|
||||
],
|
||||
|
||||
|
||||
"attributes": { // Attribute service
|
||||
"attributes": { // AttributeS config
|
||||
"enabled": false, // starts attribute service: <true|false>.
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
@@ -452,33 +454,33 @@ const CGRATES_CFG_JSON = `
|
||||
},
|
||||
|
||||
|
||||
"chargers": { // Charger service
|
||||
"chargers": { // ChargerS config
|
||||
"enabled": false, // starts charger service: <true|false>.
|
||||
"attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013>
|
||||
"attributes_conns": [], // connections to AttributeS for event fields altering <""|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)
|
||||
"resources": { // ResourceS config
|
||||
"enabled": false, // starts ResourceLimiter service: <true|false>.
|
||||
"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>
|
||||
"thresholds_conns": [], // connections to ThresholdS for resource reporting, 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)
|
||||
"stats": { // StatS config
|
||||
"enabled": false, // starts Stat service: <true|false>.
|
||||
"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>
|
||||
"thresholds_conns": [], // connections to ThresholdS for StatUpdates, 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)
|
||||
"thresholds": { // ThresholdS
|
||||
"enabled": false, // starts ThresholdS service: <true|false>.
|
||||
"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
|
||||
@@ -486,33 +488,33 @@ const CGRATES_CFG_JSON = `
|
||||
},
|
||||
|
||||
|
||||
"suppliers": { // Supplier service (*new)
|
||||
"suppliers": { // SupplierS config
|
||||
"enabled": false, // starts SupplierS service: <true|false>.
|
||||
//"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>
|
||||
"attributes_conns": [], // connections to AttributeS for altering events before supplier queries: <""|*internal|127.0.0.1:2013>
|
||||
"rals_conns": [ // connections to RALs for cost/accounting <*internal>
|
||||
{"address": "*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>
|
||||
"resources_conns": [], // connections to ResourceS for *res sorting, empty to disable functionality: <""|*internal|x.y.z.y:1234>
|
||||
"stats_conns": [], // connections to StatS for *stats sorting, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
},
|
||||
|
||||
|
||||
"loaders": [
|
||||
"loaders": [ // LoaderS config
|
||||
{
|
||||
"id": "*default", // identifier of the Loader
|
||||
"enabled": false, // starts as service: <true|false>.
|
||||
"tenant": "cgrates.org", // tenant used in filterS.Pass
|
||||
"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, 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>
|
||||
"caches_conns": [ // connections to CacheS for data reload, empty for no reloads <""|*internal|x.y.z.y:1234>
|
||||
{"address": "*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 CDRs are stored
|
||||
"tp_out_dir": "/var/spool/cgrates/loader/out", // absolute path towards the directory where processed CDRs will be moved
|
||||
"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
|
||||
@@ -695,10 +697,10 @@ const CGRATES_CFG_JSON = `
|
||||
"data_path": "./", // path towards tariff plan files
|
||||
"disable_reverse": false, // disable reverse computing
|
||||
"field_separator": ",", // separator used in case of csv files
|
||||
"caches_conns":[ // addresses towards cacheS components for reloads
|
||||
"caches_conns":[ // connections to CacheS for reloads
|
||||
{"address": "127.0.0.1:2012", "transport": "*json"}
|
||||
],
|
||||
"scheduler_conns": [
|
||||
"scheduler_conns": [ // connections to SchedulerS for reloads
|
||||
{"address": "127.0.0.1:2012"}
|
||||
],
|
||||
},
|
||||
@@ -722,29 +724,17 @@ const CGRATES_CFG_JSON = `
|
||||
},
|
||||
|
||||
|
||||
"dispatchers":{
|
||||
"dispatchers":{ // DispatcherS config
|
||||
"enabled": false, // starts DispatcherS service: <true|false>.
|
||||
//"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 attribute service, empty to disable auth functionality: <""|*internal|x.y.z.y:1234>
|
||||
"conns": {
|
||||
"sessions_eu": [
|
||||
{"address": "127.0.0.1:2012", "transport": "*json"},
|
||||
{"address": "127.0.0.2:2012", "transport": "*json"},
|
||||
],
|
||||
"sessions_us": [
|
||||
{"address": "127.0.0.3:2012", "transport": "*json"},
|
||||
{"address": "127.0.0.4:2012", "transport": "*json"},
|
||||
],
|
||||
"sessions_others": [
|
||||
{"address": "127.0.0.5:2012", "transport": "*json"},
|
||||
{"address": "127.0.0.6:2012", "transport": "*json"},
|
||||
],
|
||||
"attributes_conns": [], // connections to AttributeS for API authorization, empty to disable auth functionality: <""|*internal|x.y.z.y:1234>
|
||||
"conns": { // connection pools to use for dispatching requests
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
"analyzers":{
|
||||
"analyzers":{ // AnalyzerS config
|
||||
"enabled":false // starts AnalyzerS service: <true|false>.
|
||||
},
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ func TestDfGeneralJsonCfg(t *testing.T) {
|
||||
Reconnects: utils.IntPointer(-1),
|
||||
Connect_timeout: utils.StringPointer("1s"),
|
||||
Reply_timeout: utils.StringPointer("2s"),
|
||||
Internal_ttl: utils.StringPointer("2m"),
|
||||
Internal_ttl: utils.StringPointer("5s"),
|
||||
Locking_timeout: utils.StringPointer("0"),
|
||||
Digest_separator: utils.StringPointer(","),
|
||||
Digest_equal: utils.StringPointer(":"),
|
||||
@@ -64,7 +64,7 @@ func TestDfGeneralJsonCfg(t *testing.T) {
|
||||
if gCfg, err := dfCgrJsonCfg.GeneralJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(eCfg, gCfg) {
|
||||
t.Error("Received: ", utils.ToIJSON(gCfg))
|
||||
t.Errorf("expecting: %s, \nreceived: %s", utils.ToIJSON(eCfg), utils.ToIJSON(gCfg))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,7 +182,7 @@ func TestDfListenJsonCfg(t *testing.T) {
|
||||
|
||||
func TestDfDataDbJsonCfg(t *testing.T) {
|
||||
eCfg := &DbJsonCfg{
|
||||
Db_type: utils.StringPointer("redis"),
|
||||
Db_type: utils.StringPointer("*redis"),
|
||||
Db_host: utils.StringPointer("127.0.0.1"),
|
||||
Db_port: utils.IntPointer(6379),
|
||||
Db_name: utils.StringPointer("10"),
|
||||
@@ -193,13 +193,13 @@ func TestDfDataDbJsonCfg(t *testing.T) {
|
||||
if cfg, err := dfCgrJsonCfg.DbJsonCfg(DATADB_JSN); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(eCfg, cfg) {
|
||||
t.Error("Received: ", utils.ToJSON(cfg))
|
||||
t.Errorf("expecting: %s, \nreceived: %s", utils.ToIJSON(eCfg), utils.ToIJSON(cfg))
|
||||
}
|
||||
}
|
||||
|
||||
func TestDfStorDBJsonCfg(t *testing.T) {
|
||||
eCfg := &DbJsonCfg{
|
||||
Db_type: utils.StringPointer("mysql"),
|
||||
Db_type: utils.StringPointer("*mysql"),
|
||||
Db_host: utils.StringPointer("127.0.0.1"),
|
||||
Db_port: utils.IntPointer(3306),
|
||||
Db_name: utils.StringPointer("cgrates"),
|
||||
@@ -251,10 +251,10 @@ func TestDfSchedulerJsonCfg(t *testing.T) {
|
||||
|
||||
func TestDfCdrsJsonCfg(t *testing.T) {
|
||||
eCfg := &CdrsJsonCfg{
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Extra_fields: &[]string{},
|
||||
Store_cdrs: utils.BoolPointer(true),
|
||||
Sessions_cost_retries: utils.IntPointer(5),
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Extra_fields: &[]string{},
|
||||
Store_cdrs: utils.BoolPointer(true),
|
||||
Session_cost_retries: utils.IntPointer(5),
|
||||
Chargers_conns: &[]*HaPoolJsonCfg{
|
||||
{
|
||||
Address: utils.StringPointer("*internal"),
|
||||
@@ -330,7 +330,7 @@ func TestDfCdreJsonCfgs(t *testing.T) {
|
||||
Export_path: utils.StringPointer("/var/spool/cgrates/cdre"),
|
||||
Synchronous: utils.BoolPointer(false),
|
||||
Attempts: utils.IntPointer(1),
|
||||
Tenant: utils.StringPointer("cgrates.org"),
|
||||
Tenant: utils.StringPointer(""),
|
||||
Field_separator: utils.StringPointer(","),
|
||||
Usage_multiply_factor: &map[string]float64{utils.ANY: 1.0},
|
||||
Cost_multiply_factor: utils.Float64Pointer(1.0),
|
||||
@@ -441,7 +441,7 @@ func TestDfCdrcJsonCfg(t *testing.T) {
|
||||
Cdr_path: utils.StringPointer(""),
|
||||
Cdr_source_id: utils.StringPointer("freeswitch_csv"),
|
||||
Filters: &[]string{},
|
||||
Tenant: utils.StringPointer("cgrates.org"),
|
||||
Tenant: utils.StringPointer(""),
|
||||
Continue_on_success: utils.BoolPointer(false),
|
||||
Partial_record_cache: utils.StringPointer("10s"),
|
||||
Partial_cache_expiry_action: utils.StringPointer(utils.MetaDumpToFile),
|
||||
@@ -835,7 +835,7 @@ func TestDfLoaderJsonCfg(t *testing.T) {
|
||||
{
|
||||
ID: utils.StringPointer(utils.META_DEFAULT),
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Tenant: utils.StringPointer("cgrates.org"),
|
||||
Tenant: utils.StringPointer(""),
|
||||
Dry_run: utils.BoolPointer(false),
|
||||
Run_delay: utils.IntPointer(0),
|
||||
Lock_filename: utils.StringPointer(".cgr.lck"),
|
||||
@@ -1395,20 +1395,7 @@ func TestDfDispatcherSJsonCfg(t *testing.T) {
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Attributes_conns: &[]*HaPoolJsonCfg{},
|
||||
Conns: &map[string]*[]*HaPoolJsonCfg{
|
||||
"sessions_eu": &[]*HaPoolJsonCfg{
|
||||
{Address: utils.StringPointer("127.0.0.1:2012"), Transport: utils.StringPointer(utils.MetaJSONrpc)},
|
||||
{Address: utils.StringPointer("127.0.0.2:2012"), Transport: utils.StringPointer(utils.MetaJSONrpc)},
|
||||
},
|
||||
"sessions_us": &[]*HaPoolJsonCfg{
|
||||
{Address: utils.StringPointer("127.0.0.3:2012"), Transport: utils.StringPointer(utils.MetaJSONrpc)},
|
||||
{Address: utils.StringPointer("127.0.0.4:2012"), Transport: utils.StringPointer(utils.MetaJSONrpc)},
|
||||
},
|
||||
"sessions_others": &[]*HaPoolJsonCfg{
|
||||
{Address: utils.StringPointer("127.0.0.5:2012"), Transport: utils.StringPointer(utils.MetaJSONrpc)},
|
||||
{Address: utils.StringPointer("127.0.0.6:2012"), Transport: utils.StringPointer(utils.MetaJSONrpc)},
|
||||
},
|
||||
},
|
||||
Conns: &map[string]*[]*HaPoolJsonCfg{},
|
||||
}
|
||||
if cfg, err := dfCgrJsonCfg.DispatcherSJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
|
||||
@@ -217,7 +217,6 @@ func TestCgrCfgCDRC(t *testing.T) {
|
||||
CDRPath: utils.HierarchyPath([]string{""}),
|
||||
CdrSourceId: "freeswitch_csv",
|
||||
Filters: []string{},
|
||||
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
|
||||
ContinueOnSuccess: false,
|
||||
PartialRecordCache: time.Duration(10 * time.Second),
|
||||
PartialCacheExpiryAction: "*dump_to_file",
|
||||
@@ -361,7 +360,7 @@ func TestCgrCfgJSONDefaultsGeneral(t *testing.T) {
|
||||
if cgrCfg.GeneralCfg().ReplyTimeout != 2*time.Second {
|
||||
t.Errorf("Expected: 2s, received: %+v", cgrCfg.GeneralCfg().ReplyTimeout)
|
||||
}
|
||||
if cgrCfg.GeneralCfg().InternalTtl != 2*time.Minute {
|
||||
if cgrCfg.GeneralCfg().InternalTtl != 5*time.Second {
|
||||
t.Errorf("Expected: 2m, received: %+v", cgrCfg.GeneralCfg().InternalTtl)
|
||||
}
|
||||
if cgrCfg.GeneralCfg().LockingTimeout != 0 {
|
||||
@@ -592,7 +591,6 @@ func TestCgrCfgJSONDefaultsCdreProfiles(t *testing.T) {
|
||||
ExportFormat: utils.MetaFileCSV,
|
||||
ExportPath: "/var/spool/cgrates/cdre",
|
||||
Filters: []string{},
|
||||
Tenant: "cgrates.org",
|
||||
Synchronous: false,
|
||||
Attempts: 1,
|
||||
FieldSeparator: ',',
|
||||
@@ -1020,7 +1018,6 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) {
|
||||
{
|
||||
Id: utils.META_DEFAULT,
|
||||
Enabled: false,
|
||||
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
|
||||
DryRun: false,
|
||||
RunDelay: 0,
|
||||
LockFileName: ".cgr.lck",
|
||||
@@ -1463,20 +1460,7 @@ func TestCgrCfgJSONDefaultDispatcherSCfg(t *testing.T) {
|
||||
StringIndexedFields: nil,
|
||||
PrefixIndexedFields: &[]string{},
|
||||
AttributeSConns: []*HaPoolConfig{},
|
||||
Conns: map[string][]*HaPoolConfig{
|
||||
"sessions_eu": []*HaPoolConfig{
|
||||
{Address: "127.0.0.1:2012", Transport: utils.MetaJSONrpc},
|
||||
{Address: "127.0.0.2:2012", Transport: utils.MetaJSONrpc},
|
||||
},
|
||||
"sessions_us": []*HaPoolConfig{
|
||||
{Address: "127.0.0.3:2012", Transport: utils.MetaJSONrpc},
|
||||
{Address: "127.0.0.4:2012", Transport: utils.MetaJSONrpc},
|
||||
},
|
||||
"sessions_others": []*HaPoolConfig{
|
||||
{Address: "127.0.0.5:2012", Transport: utils.MetaJSONrpc},
|
||||
{Address: "127.0.0.6:2012", Transport: utils.MetaJSONrpc},
|
||||
},
|
||||
},
|
||||
Conns: map[string][]*HaPoolConfig{},
|
||||
}
|
||||
if !reflect.DeepEqual(cgrCfg.dispatcherSCfg, eDspSCfg) {
|
||||
t.Errorf("received: %+v, expecting: %+v", cgrCfg.dispatcherSCfg, eDspSCfg)
|
||||
@@ -1547,7 +1531,6 @@ func TestCDRCWithDefault(t *testing.T) {
|
||||
CDRPath: utils.HierarchyPath([]string{""}),
|
||||
CdrSourceId: "freeswitch_csv",
|
||||
Filters: []string{},
|
||||
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
|
||||
ContinueOnSuccess: false,
|
||||
PartialRecordCache: time.Duration(10 * time.Second),
|
||||
PartialCacheExpiryAction: "*dump_to_file",
|
||||
|
||||
@@ -49,7 +49,6 @@ func TestLoadCdrcConfigMultipleFiles(t *testing.T) {
|
||||
CDRPath: utils.HierarchyPath([]string{""}),
|
||||
CdrSourceId: "freeswitch_csv",
|
||||
Filters: []string{},
|
||||
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
|
||||
PartialRecordCache: time.Duration(10) * time.Second,
|
||||
PartialCacheExpiryAction: utils.MetaDumpToFile,
|
||||
HeaderFields: make([]*FCTemplate, 0),
|
||||
@@ -128,7 +127,6 @@ func TestLoadCdrcConfigMultipleFiles(t *testing.T) {
|
||||
CDRPath: utils.HierarchyPath([]string{""}),
|
||||
CdrSourceId: "csv1",
|
||||
Filters: []string{},
|
||||
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
|
||||
PartialRecordCache: time.Duration(10) * time.Second,
|
||||
PartialCacheExpiryAction: utils.MetaDumpToFile,
|
||||
HeaderFields: make([]*FCTemplate, 0),
|
||||
@@ -207,7 +205,6 @@ func TestLoadCdrcConfigMultipleFiles(t *testing.T) {
|
||||
CDRPath: utils.HierarchyPath([]string{""}),
|
||||
CdrSourceId: "csv2",
|
||||
Filters: []string{},
|
||||
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
|
||||
PartialRecordCache: time.Duration(10) * time.Second,
|
||||
PartialCacheExpiryAction: utils.MetaDumpToFile,
|
||||
HeaderFields: make([]*FCTemplate, 0),
|
||||
@@ -270,7 +267,6 @@ func TestLoadCdrcConfigMultipleFiles(t *testing.T) {
|
||||
CDRPath: utils.HierarchyPath([]string{""}),
|
||||
CdrSourceId: "csv3",
|
||||
Filters: []string{},
|
||||
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
|
||||
PartialRecordCache: time.Duration(10) * time.Second,
|
||||
PartialCacheExpiryAction: utils.MetaDumpToFile,
|
||||
HeaderFields: make([]*FCTemplate, 0),
|
||||
|
||||
@@ -114,16 +114,16 @@ type SchedulerJsonCfg struct {
|
||||
|
||||
// Cdrs config section
|
||||
type CdrsJsonCfg struct {
|
||||
Enabled *bool
|
||||
Extra_fields *[]string
|
||||
Store_cdrs *bool
|
||||
Sessions_cost_retries *int
|
||||
Chargers_conns *[]*HaPoolJsonCfg
|
||||
Rals_conns *[]*HaPoolJsonCfg
|
||||
Attributes_conns *[]*HaPoolJsonCfg
|
||||
Thresholds_conns *[]*HaPoolJsonCfg
|
||||
Stats_conns *[]*HaPoolJsonCfg
|
||||
Online_cdr_exports *[]string
|
||||
Enabled *bool
|
||||
Extra_fields *[]string
|
||||
Store_cdrs *bool
|
||||
Session_cost_retries *int
|
||||
Chargers_conns *[]*HaPoolJsonCfg
|
||||
Rals_conns *[]*HaPoolJsonCfg
|
||||
Attributes_conns *[]*HaPoolJsonCfg
|
||||
Thresholds_conns *[]*HaPoolJsonCfg
|
||||
Stats_conns *[]*HaPoolJsonCfg
|
||||
Online_cdr_exports *[]string
|
||||
}
|
||||
|
||||
type CdrReplicationJsonCfg struct {
|
||||
|
||||
@@ -10,47 +10,46 @@
|
||||
// "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
|
||||
// "http_skip_tls_verify": false, // if enabled HttpClient 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)
|
||||
// "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: *call_url, CDR exports)
|
||||
// "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
|
||||
// "connect_attempts": 5, // 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
|
||||
// "internal_ttl": "5s", // maximum duration to wait for internal connections before giving up
|
||||
// "locking_timeout": "0", // timeout internal locks to avoid deadlocks
|
||||
// "digest_separator": ",",
|
||||
// "digest_equal": ":",
|
||||
// "rsr_separator": ";",
|
||||
// "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
|
||||
// },
|
||||
|
||||
|
||||
// "data_db": { // database used to store runtime data (eg: accounts, cdr stats)
|
||||
// "db_type": "redis", // data_db type: <*redis|*mongo|*internal>
|
||||
// "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
|
||||
// "redis_sentinel":"", // redis_sentinel is the name of sentinel
|
||||
// "redis_sentinel":"", // the name of sentinel when used
|
||||
// },
|
||||
|
||||
|
||||
// "stor_db": { // database used to store offline tariff plans and CDRs
|
||||
// "db_type": "mysql", // stor database type to use: <*mongo|*mysql|*postgres|*internal>
|
||||
// "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_port": 3306, // the port to reach the stor_db
|
||||
// "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
|
||||
// "db_user": "cgrates", // username to use when connecting to stor_db
|
||||
// "db_password": "", // password to use when connecting to stor_db
|
||||
// "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
|
||||
@@ -73,8 +72,8 @@
|
||||
// "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)
|
||||
// "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":"",
|
||||
// },
|
||||
|
||||
@@ -91,7 +90,7 @@
|
||||
|
||||
// "scheduler": {
|
||||
// "enabled": false, // start Scheduler service: <true|false>
|
||||
// "cdrs_conns": [], // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234>
|
||||
// "cdrs_conns": [], // connections to CDRs for *cdrlog actions <*internal|x.y.z.y:1234>
|
||||
// },
|
||||
|
||||
|
||||
@@ -109,8 +108,8 @@
|
||||
// "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": "", "static_ttl": false}, // matching resources to events
|
||||
// "statqueue_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // statqueue profiles
|
||||
// "statqueues": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // statqueues with metrics
|
||||
// "statqueue_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // statqueue profiles
|
||||
// "statqueues": {"limit": -1, "ttl": "", "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
|
||||
@@ -127,20 +126,23 @@
|
||||
// "dispatcher_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control dispatcher filter indexes caching
|
||||
// "dispatcher_routes": {"limit": -1, "ttl": "", "static_ttl": false}, // control dispatcher routes caching
|
||||
// "diameter_messages": {"limit": -1, "ttl": "3h", "static_ttl": false}, // diameter messages caching
|
||||
// "rpc_responses": {"limit": 0, "ttl": "2s", "static_ttl": false}, // RPC responses 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>
|
||||
// "stats_conns": [], // connections to StatS for <*stats> filters, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
// "resources_conns": [], // connections to ResourceS for <*resources> filters, 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: <true|false>
|
||||
// "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>
|
||||
// "enabled": false, // enable Rating/Accounting service: <true|false>
|
||||
// "thresholds_conns": [], // connections to ThresholdS for account/balance updates, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
|
||||
// "stats_conns": [], // connections to StatS for account/balance updates, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
// "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
|
||||
// "*any": "189h",
|
||||
// "*voice": "72h",
|
||||
@@ -150,30 +152,32 @@
|
||||
// },
|
||||
|
||||
|
||||
// "cdrs": {
|
||||
// "enabled": false, // start the CDR Server service: <true|false>
|
||||
// "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>
|
||||
// "cdrs": { // CDRs config
|
||||
// "enabled": false, // start the CDR Server: <true|false>
|
||||
// "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|x.y.z.y:1234>
|
||||
// {"address": "*internal"}
|
||||
// ],
|
||||
// "rals_conns": [ // connections to RALs for cost calculation: <""|*internal|x.y.z.y:1234>
|
||||
// {"address": "*internal"}
|
||||
// ],
|
||||
// "attributes_conns": [], // address where to reach the attribute service, empty to disable attributes 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>
|
||||
// "attributes_conns": [], // connection to AttributeS for altering *raw CDRs, empty to disable attributes functionality: <""|*internal|x.y.z.y:1234>
|
||||
// "thresholds_conns": [], // connection to ThresholdS for CDR reporting, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
|
||||
// "stats_conns": [], // connections to StatS for CDR reporting, 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": {
|
||||
// "cdre": { // CDRe config
|
||||
// "*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_format": "*file_csv", // exported CDRs format <*file_csv|*file_fwv|*http_post|*http_json_cdr|*http_json_map|*amqp_json_cdr|*amqp_json_map|*sqs_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
|
||||
// "filters" :[], // filters for this export
|
||||
// "tenant": "", // tenant used in filterS.Pass
|
||||
// "synchronous": false, // block processing until export has a result
|
||||
// "attempts": 1, // Number of attempts if not success
|
||||
// "attempts": 1, // export attempts
|
||||
// "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
|
||||
@@ -201,13 +205,13 @@
|
||||
// },
|
||||
|
||||
|
||||
// "cdrc": [
|
||||
// "cdrc": [ // CDRc config
|
||||
// {
|
||||
// "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>
|
||||
// "cdrs_conns": [ // connections to CDRs. <*internal|x.y.z.y:1234>
|
||||
// {"address": "*internal"}
|
||||
// ],
|
||||
// "cdr_format": "*csv", // CDR file format <*csv|*freeswitch_csv|*fwv|*opensips_flatstore|*partial_csv>
|
||||
// "field_separator": ",", // separator used in case of csv files
|
||||
@@ -220,8 +224,8 @@
|
||||
// "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
|
||||
// "filters" :[], // limit parsing based on the filters
|
||||
// "tenant": "", // tenant used by import
|
||||
// "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>
|
||||
@@ -261,20 +265,22 @@
|
||||
|
||||
|
||||
// "sessions": {
|
||||
// "enabled": false, // starts session manager service: <true|false>
|
||||
// "enabled": false, // starts the session service: <true|false>
|
||||
// "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>
|
||||
// "chargers_conns": [ // connections to ChargerS for session forking <*internal|x.y.z.y:1234>
|
||||
// {"address": "*internal"}
|
||||
// ],
|
||||
// "rals_conns": [ // connections to RALs for rating/accounting <""|*internal|127.0.0.1:2013>
|
||||
// {"address": "*internal"}
|
||||
// ],
|
||||
// "cdrs_conns": [
|
||||
// {"address": "*internal"} // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234>
|
||||
// "cdrs_conns": [ // connections to CDRs for CDR posting <*internal|x.y.z.y:1234>
|
||||
// {"address": "*internal"}
|
||||
// ],
|
||||
// "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>
|
||||
// "resources_conns": [], // connections to ResourceS for resources monitoring <""|*internal|127.0.0.1:2013>
|
||||
// "thresholds_conns": [], // connections to ThresholdS for reporting session events <""|*internal|127.0.0.1:2013>
|
||||
// "stats_conns": [], // connections to StatS for reporting session events <""|*internal|127.0.0.1:2013>
|
||||
// "suppliers_conns": [], // connections to SupplierS for querying suppliers for event <""|*internal|127.0.0.1:2013>
|
||||
// "attributes_conns": [], // connections to AttributeS for altering event fields <""|*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
|
||||
@@ -285,14 +291,14 @@
|
||||
// //"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)
|
||||
// "channel_sync_interval": "0", // sync channels to detect stale sessions (0 to disable)
|
||||
// },
|
||||
|
||||
|
||||
// "asterisk_agent": {
|
||||
// "enabled": false, // starts the Asterisk agent: <true|false>
|
||||
// "sessions_conns": [
|
||||
// {"address": "*internal"} // connection towards session service: <*internal>
|
||||
// "sessions_conns": [ // connections to SessionS for session management and CDR posting: <*internal>
|
||||
// {"address": "*internal"}
|
||||
// ],
|
||||
// "create_cdr": false, // create CDR out of events and sends it to CDRS component
|
||||
// "asterisk_conns":[ // instantiate connections to multiple Asterisk servers
|
||||
@@ -303,11 +309,11 @@
|
||||
|
||||
// "freeswitch_agent": {
|
||||
// "enabled": false, // starts the FreeSWITCH agent: <true|false>
|
||||
// "sessions_conns": [
|
||||
// {"address": "*internal"} // connection towards session service: <*internal>
|
||||
// "sessions_conns": [ // connections to SessionS for session management and CDR posting: <*internal>
|
||||
// {"address": "*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
|
||||
// "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
|
||||
// //"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
|
||||
@@ -321,9 +327,9 @@
|
||||
|
||||
|
||||
// "kamailio_agent": {
|
||||
// "enabled": false, // starts SessionManager service: <true|false>
|
||||
// "sessions_conns": [
|
||||
// {"address": "*internal"} // connection towards session service: <*internal>
|
||||
// "enabled": false, // starts Kamailio agent: <true|false>
|
||||
// "sessions_conns": [ // connections to SessionS for session management and CDR posting: <*internal>
|
||||
// {"address": "*internal"}
|
||||
// ],
|
||||
// "create_cdr": false, // create CDR out of events and sends them to CDRS component
|
||||
// "timezone": "", // timezone of the Kamailio server
|
||||
@@ -338,8 +344,8 @@
|
||||
// "listen": "127.0.0.1:3868", // address where to listen for diameter requests <x.y.z.y/x1.y1.z1.y1:1234>
|
||||
// "listen_net": "tcp", // transport type for diameter <tcp|sctp>
|
||||
// "dictionaries_path": "/usr/share/cgrates/diameter/dict/", // path towards directory holding additional dictionaries to load
|
||||
// "sessions_conns": [
|
||||
// {"address": "*internal"} // connection towards SessionService
|
||||
// "sessions_conns": [ // connections to SessionS for session management and CDR posting
|
||||
// {"address": "*internal"}
|
||||
// ],
|
||||
// "origin_host": "CGR-DA", // diameter Origin-Host AVP used in replies
|
||||
// "origin_realm": "cgrates.org", // diameter Origin-Realm AVP used in replies
|
||||
@@ -347,7 +353,7 @@
|
||||
// "product_name": "CGRateS", // diameter Product-Name AVP used in replies
|
||||
// "max_active_requests": -1, // limit the number of active requests processed by the server <-1|0-n>
|
||||
// "asr_template": "", // enable AbortSession message being sent to client on DisconnectSession
|
||||
// "templates":{
|
||||
// "templates":{ // default message templates
|
||||
// "*err": [
|
||||
// {"tag": "SessionId", "field_id": "Session-Id", "type": "*composed",
|
||||
// "value": "~*req.Session-Id", "mandatory": true},
|
||||
@@ -391,7 +397,8 @@
|
||||
// "value": "1"},
|
||||
// ]
|
||||
// },
|
||||
// "request_processors": [],
|
||||
// "request_processors": [ // list of processors to be applied to diameter messages
|
||||
// ],
|
||||
// },
|
||||
|
||||
|
||||
@@ -406,10 +413,11 @@
|
||||
// "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
|
||||
// "sessions_conns": [ // connections to SessionS for session management and CDR posting
|
||||
// {"address": "*internal"}
|
||||
// ],
|
||||
// "request_processors": [ // request processors to be applied to Radius messages
|
||||
// ],
|
||||
// "request_processors": [],
|
||||
// },
|
||||
|
||||
|
||||
@@ -417,7 +425,7 @@
|
||||
// ],
|
||||
|
||||
|
||||
// "attributes": { // Attribute service
|
||||
// "attributes": { // AttributeS config
|
||||
// "enabled": false, // starts attribute service: <true|false>.
|
||||
// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
@@ -425,33 +433,33 @@
|
||||
// },
|
||||
|
||||
|
||||
// "chargers": { // Charger service
|
||||
// "chargers": { // ChargerS config
|
||||
// "enabled": false, // starts charger service: <true|false>.
|
||||
// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013>
|
||||
// "attributes_conns": [], // connections to AttributeS for event fields altering <""|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)
|
||||
// "resources": { // ResourceS config
|
||||
// "enabled": false, // starts ResourceLimiter service: <true|false>.
|
||||
// "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>
|
||||
// "thresholds_conns": [], // connections to ThresholdS for resource reporting, 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)
|
||||
// "stats": { // StatS config
|
||||
// "enabled": false, // starts Stat service: <true|false>.
|
||||
// "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>
|
||||
// "thresholds_conns": [], // connections to ThresholdS for StatUpdates, 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)
|
||||
// "thresholds": { // ThresholdS
|
||||
// "enabled": false, // starts ThresholdS service: <true|false>.
|
||||
// "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
|
||||
@@ -459,33 +467,33 @@
|
||||
// },
|
||||
|
||||
|
||||
// "suppliers": { // Supplier service (*new)
|
||||
// "suppliers": { // SupplierS config
|
||||
// "enabled": false, // starts SupplierS service: <true|false>.
|
||||
// //"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>
|
||||
// "attributes_conns": [], // connections to AttributeS for altering events before supplier queries: <""|*internal|127.0.0.1:2013>
|
||||
// "rals_conns": [ // connections to RALs for cost/accounting <*internal>
|
||||
// {"address": "*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>
|
||||
// "resources_conns": [], // connections to ResourceS for *res sorting, empty to disable functionality: <""|*internal|x.y.z.y:1234>
|
||||
// "stats_conns": [], // connections to StatS for *stats sorting, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
// },
|
||||
|
||||
|
||||
// "loaders": [
|
||||
// "loaders": [ // LoaderS config
|
||||
// {
|
||||
// "id": "*default", // identifier of the Loader
|
||||
// "enabled": false, // starts as service: <true|false>.
|
||||
// "tenant": "cgrates.org", // tenant used in filterS.Pass
|
||||
// "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, 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>
|
||||
// "caches_conns": [ // connections to CacheS for data reload, empty for no reloads <""|*internal|x.y.z.y:1234>
|
||||
// {"address": "*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 CDRs are stored
|
||||
// "tp_out_dir": "/var/spool/cgrates/loader/out", // absolute path towards the directory where processed CDRs will be moved
|
||||
// "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
|
||||
@@ -496,11 +504,10 @@
|
||||
// {"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": "AttributeFilterIDs", "field_id": "AttributeFilterIDs", "type": "*composed", "value": "~5"},
|
||||
// {"tag": "FieldName", "field_id": "FieldName", "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"},
|
||||
// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~8"},
|
||||
// ],
|
||||
// },
|
||||
// {
|
||||
@@ -543,12 +550,11 @@
|
||||
// {"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"},
|
||||
// {"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": "MinItems", "field_id": "MinItems", "type": "*composed", "value": "~10"},
|
||||
// {"tag": "ThresholdIDs", "field_id": "ThresholdIDs", "type": "*composed", "value": "~11"},
|
||||
// ],
|
||||
// },
|
||||
// {
|
||||
@@ -603,6 +609,25 @@
|
||||
// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~6"},
|
||||
// ],
|
||||
// },
|
||||
// {
|
||||
// "type": "*dispatchers", // data source type
|
||||
// "file_name": "Dispatchers.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": "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": "Strategy", "field_id": "Strategy", "type": "*composed", "value": "~5"},
|
||||
// {"tag": "StrategyParameters", "field_id": "StrategyParameters", "type": "*composed", "value": "~6"},
|
||||
// {"tag": "ConnID", "field_id": "ConnID", "type": "*composed", "value": "~7"},
|
||||
// {"tag": "ConnFilterIDs", "field_id": "ConnFilterIDs", "type": "*composed", "value": "~8"},
|
||||
// {"tag": "ConnWeight", "field_id": "ConnWeight", "type": "*composed", "value": "~9"},
|
||||
// {"tag": "ConnBlocker", "field_id": "ConnBlocker", "type": "*composed", "value": "~10"},
|
||||
// {"tag": "ConnParameters", "field_id": "ConnParameters", "type": "*composed", "value": "~11"},
|
||||
// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~12"},
|
||||
// ],
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
// ],
|
||||
@@ -651,10 +676,10 @@
|
||||
// "data_path": "./", // path towards tariff plan files
|
||||
// "disable_reverse": false, // disable reverse computing
|
||||
// "field_separator": ",", // separator used in case of csv files
|
||||
// "caches_conns":[ // addresses towards cacheS components for reloads
|
||||
// "caches_conns":[ // connections to CacheS for reloads
|
||||
// {"address": "127.0.0.1:2012", "transport": "*json"}
|
||||
// ],
|
||||
// "scheduler_conns": [
|
||||
// "scheduler_conns": [ // connections to SchedulerS for reloads
|
||||
// {"address": "127.0.0.1:2012"}
|
||||
// ],
|
||||
// },
|
||||
@@ -674,19 +699,21 @@
|
||||
// "out_stordb_name": "cgrates",
|
||||
// "out_stordb_user": "cgrates",
|
||||
// "out_stordb_password": "",
|
||||
// "users_filters":[],
|
||||
// },
|
||||
|
||||
|
||||
// "dispatchers":{
|
||||
// "dispatchers":{ // DispatcherS config
|
||||
// "enabled": false, // starts DispatcherS service: <true|false>.
|
||||
// //"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 attribute service, empty to disable auth functionality: <""|*internal|x.y.z.y:1234>
|
||||
// "conns": {},
|
||||
// "attributes_conns": [], // connections to AttributeS for API authorization, empty to disable auth functionality: <""|*internal|x.y.z.y:1234>
|
||||
// "conns": { // connection pools to use for dispatching requests
|
||||
// },
|
||||
// },
|
||||
|
||||
|
||||
// "analyzers":{
|
||||
// "analyzers":{ // AnalyzerS config
|
||||
// "enabled":false // starts AnalyzerS service: <true|false>.
|
||||
// },
|
||||
|
||||
|
||||
Reference in New Issue
Block a user