mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-17 06:09:53 +05:00
started reverse recording
This commit is contained in:
@@ -54,7 +54,7 @@ func (ub *Account) getCreditForPrefix(cd *CallDescriptor) (duration time.Duratio
|
||||
for _, cb := range creditBalances {
|
||||
if len(cb.SharedGroups) > 0 {
|
||||
for sg := range cb.SharedGroups {
|
||||
if sharedGroup, _ := ratingStorage.GetSharedGroup(sg, false); sharedGroup != nil {
|
||||
if sharedGroup, _ := ratingStorage.GetSharedGroup(sg); sharedGroup != nil {
|
||||
sgb := sharedGroup.GetBalances(cd.Destination, cd.Category, cd.Direction, utils.MONETARY, ub)
|
||||
sgb = sharedGroup.SortBalancesByStrategy(cb, sgb)
|
||||
extendedCreditBalances = append(extendedCreditBalances, sgb...)
|
||||
@@ -68,7 +68,7 @@ func (ub *Account) getCreditForPrefix(cd *CallDescriptor) (duration time.Duratio
|
||||
for _, mb := range unitBalances {
|
||||
if len(mb.SharedGroups) > 0 {
|
||||
for sg := range mb.SharedGroups {
|
||||
if sharedGroup, _ := ratingStorage.GetSharedGroup(sg, false); sharedGroup != nil {
|
||||
if sharedGroup, _ := ratingStorage.GetSharedGroup(sg); sharedGroup != nil {
|
||||
sgb := sharedGroup.GetBalances(cd.Destination, cd.Category, cd.Direction, cd.TOR, ub)
|
||||
sgb = sharedGroup.SortBalancesByStrategy(mb, sgb)
|
||||
extendedMinuteBalances = append(extendedMinuteBalances, sgb...)
|
||||
@@ -136,7 +136,7 @@ func (acc *Account) setBalanceAction(a *Action) error {
|
||||
_, err := Guardian.Guard(func() (interface{}, error) {
|
||||
for sgID := range balance.SharedGroups {
|
||||
// add shared group member
|
||||
sg, err := ratingStorage.GetSharedGroup(sgID, false)
|
||||
sg, err := ratingStorage.GetSharedGroup(sgID)
|
||||
if err != nil || sg == nil {
|
||||
//than is problem
|
||||
utils.Logger.Warning(fmt.Sprintf("Could not get shared group: %v", sgID))
|
||||
@@ -224,7 +224,7 @@ func (ub *Account) debitBalanceAction(a *Action, reset bool) error {
|
||||
_, err := Guardian.Guard(func() (interface{}, error) {
|
||||
for sgId := range bClone.SharedGroups {
|
||||
// add shared group member
|
||||
sg, err := ratingStorage.GetSharedGroup(sgId, false)
|
||||
sg, err := ratingStorage.GetSharedGroup(sgId)
|
||||
if err != nil || sg == nil {
|
||||
//than is problem
|
||||
utils.Logger.Warning(fmt.Sprintf("Could not get shared group: %v", sgId))
|
||||
@@ -355,8 +355,8 @@ func (account *Account) getAlldBalancesForPrefix(destination, category, directio
|
||||
for _, b := range balances {
|
||||
if len(b.SharedGroups) > 0 {
|
||||
for sgId := range b.SharedGroups {
|
||||
sharedGroup, err := ratingStorage.GetSharedGroup(sgId, false)
|
||||
if err != nil {
|
||||
sharedGroup, err := ratingStorage.GetSharedGroup(sgId)
|
||||
if err != nil || sharedGroup == nil {
|
||||
utils.Logger.Warning(fmt.Sprintf("Could not get shared group: %v", sgId))
|
||||
continue
|
||||
}
|
||||
@@ -766,7 +766,7 @@ func (account *Account) GetUniqueSharedGroupMembers(cd *CallDescriptor) (utils.S
|
||||
}
|
||||
memberIds := make(utils.StringMap)
|
||||
for _, sgID := range sharedGroupIds {
|
||||
sharedGroup, err := ratingStorage.GetSharedGroup(sgID, false)
|
||||
sharedGroup, err := ratingStorage.GetSharedGroup(sgID)
|
||||
if err != nil {
|
||||
utils.Logger.Warning(fmt.Sprintf("Could not get shared group: %v", sgID))
|
||||
return nil, err
|
||||
|
||||
@@ -268,7 +268,7 @@ func (at *ActionTiming) GetActionPlanID() string {
|
||||
|
||||
func (at *ActionTiming) getActions() (as []*Action, err error) {
|
||||
if at.actions == nil {
|
||||
at.actions, err = ratingStorage.GetActions(at.ActionsID, false)
|
||||
at.actions, err = ratingStorage.GetActions(at.ActionsID)
|
||||
}
|
||||
at.actions.Sort()
|
||||
return at.actions, err
|
||||
|
||||
@@ -57,12 +57,12 @@ func (at *ActionTrigger) Execute(ub *Account, sq *StatsQueueTriggered) (err erro
|
||||
}
|
||||
// does NOT need to Lock() because it is triggered from a method that took the Lock
|
||||
var aac Actions
|
||||
aac, err = ratingStorage.GetActions(at.ActionsID, false)
|
||||
aac.Sort()
|
||||
aac, err = ratingStorage.GetActions(at.ActionsID)
|
||||
if err != nil {
|
||||
utils.Logger.Err(fmt.Sprintf("Failed to get actions: %v", err))
|
||||
return
|
||||
}
|
||||
aac.Sort()
|
||||
at.Executed = true
|
||||
transactionFailed := false
|
||||
removeAccountActionFound := false
|
||||
|
||||
@@ -188,7 +188,7 @@ func (am *AliasHandler) SetAlias(attr *AttrAddAlias, reply *string) error {
|
||||
|
||||
var oldAlias *Alias
|
||||
if !attr.Overwrite { // get previous value
|
||||
oldAlias, _ = am.accountingDb.GetAlias(attr.Alias.GetId(), false)
|
||||
oldAlias, _ = am.accountingDb.GetAlias(attr.Alias.GetId())
|
||||
}
|
||||
|
||||
if attr.Overwrite || oldAlias == nil {
|
||||
|
||||
@@ -6,9 +6,7 @@ import "sync"
|
||||
const (
|
||||
PREFIX_LEN = 4
|
||||
KIND_ADD = "ADD"
|
||||
KIND_ADP = "ADP"
|
||||
KIND_REM = "REM"
|
||||
KIND_POP = "POP"
|
||||
KIND_PRF = "PRF"
|
||||
DOUBLE_CACHE = true
|
||||
)
|
||||
@@ -70,10 +68,6 @@ func CacheCommitTransaction() {
|
||||
CacheRemPrefixKey(item.key)
|
||||
case KIND_ADD:
|
||||
CacheSet(item.key, item.value)
|
||||
case KIND_ADP:
|
||||
CachePush(item.key, item.value.([]string)...)
|
||||
case KIND_POP:
|
||||
CachePop(item.key, item.value.([]string)...)
|
||||
}
|
||||
}
|
||||
mux.Unlock()
|
||||
|
||||
@@ -16,8 +16,6 @@ import (
|
||||
type cacheStore interface {
|
||||
Put(string, interface{})
|
||||
Get(string) (interface{}, bool)
|
||||
Append(string, ...string)
|
||||
Pop(string, ...string)
|
||||
Delete(string)
|
||||
DeletePrefix(string)
|
||||
CountEntriesForPrefix(string) int
|
||||
@@ -56,35 +54,6 @@ func (cs cacheDoubleStore) Get(key string) (interface{}, bool) {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func (cs cacheDoubleStore) Append(key string, values ...string) {
|
||||
var elements map[string]struct{} // using map for faster check if element is present
|
||||
if v, ok := cs.Get(key); ok {
|
||||
elements = v.(map[string]struct{})
|
||||
} else {
|
||||
elements = make(map[string]struct{})
|
||||
}
|
||||
for _, value := range values {
|
||||
elements[value] = struct{}{}
|
||||
}
|
||||
cache.Put(key, elements)
|
||||
}
|
||||
|
||||
func (cs cacheDoubleStore) Pop(key string, values ...string) {
|
||||
if v, ok := cs.Get(key); ok {
|
||||
elements, ok := v.(map[string]struct{})
|
||||
if ok {
|
||||
for _, value := range values {
|
||||
delete(elements, value)
|
||||
}
|
||||
if len(elements) > 0 {
|
||||
cache.Put(key, elements)
|
||||
} else {
|
||||
cache.Delete(key)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (cs cacheDoubleStore) Delete(key string) {
|
||||
prefix, key := key[:PREFIX_LEN], key[PREFIX_LEN:]
|
||||
if keyMap, ok := cs[prefix]; ok {
|
||||
@@ -203,35 +172,6 @@ func (cs cacheLRUTTL) Get(key string) (interface{}, bool) {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func (cs cacheLRUTTL) Append(key string, values ...string) {
|
||||
var elements map[string]struct{} // using map for faster check if element is present
|
||||
if v, ok := cs.Get(key); ok {
|
||||
elements = v.(map[string]struct{})
|
||||
} else {
|
||||
elements = make(map[string]struct{})
|
||||
}
|
||||
for _, value := range values {
|
||||
elements[value] = struct{}{}
|
||||
}
|
||||
cache.Put(key, elements)
|
||||
}
|
||||
|
||||
func (cs cacheLRUTTL) Pop(key string, values ...string) {
|
||||
if v, ok := cs.Get(key); ok {
|
||||
elements, ok := v.(map[string]struct{})
|
||||
if ok {
|
||||
for _, value := range values {
|
||||
delete(elements, value)
|
||||
}
|
||||
if len(elements) > 0 {
|
||||
cache.Put(key, elements)
|
||||
} else {
|
||||
cache.Delete(key)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (cs cacheLRUTTL) Delete(key string) {
|
||||
prefix, key := key[:PREFIX_LEN], key[PREFIX_LEN:]
|
||||
if keyMap, ok := cs[prefix]; ok {
|
||||
@@ -283,19 +223,6 @@ func (cs cacheSimpleStore) Put(key string, value interface{}) {
|
||||
cs.cache[key] = value
|
||||
}
|
||||
|
||||
func (cs cacheSimpleStore) Append(key string, values ...string) {
|
||||
var elements map[string]struct{}
|
||||
if v, ok := cs.Get(key); ok {
|
||||
elements = v.(map[string]struct{})
|
||||
} else {
|
||||
elements = make(map[string]struct{})
|
||||
}
|
||||
for _, value := range values {
|
||||
elements[value] = struct{}{}
|
||||
}
|
||||
cache.Put(key, elements)
|
||||
}
|
||||
|
||||
func (cs cacheSimpleStore) Get(key string) (interface{}, bool) {
|
||||
if value, exists := cs.cache[key]; exists {
|
||||
return value, true
|
||||
@@ -303,22 +230,6 @@ func (cs cacheSimpleStore) Get(key string) (interface{}, bool) {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func (cs cacheSimpleStore) Pop(key string, values ...string) {
|
||||
if v, ok := cs.Get(key); ok {
|
||||
elements, ok := v.(map[string]struct{})
|
||||
if ok {
|
||||
for _, value := range values {
|
||||
delete(elements, value)
|
||||
}
|
||||
if len(elements) > 0 {
|
||||
cache.Put(key, elements)
|
||||
} else {
|
||||
cache.Delete(key)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (cs cacheSimpleStore) Delete(key string) {
|
||||
if _, ok := cs.cache[key]; ok {
|
||||
delete(cs.cache, key)
|
||||
|
||||
@@ -290,28 +290,33 @@ func (rs *RedisStorage) SetDestination(dest *Destination, cache bool) (err error
|
||||
return
|
||||
}
|
||||
|
||||
func (rs *RedisStorage) GetDestinationIDs(prefix string) (ids []string, err error) {
|
||||
prefix = utils.DESTINATION_PREFIX + prefix
|
||||
var values []string
|
||||
if values, err = rs.db.Cmd("SMEMBERS", prefix).List(); len(values) > 0 && err == nil {
|
||||
CachePush(utils.DESTINATION_PREFIX+prefix, values...)
|
||||
} else {
|
||||
func (rs *RedisStorage) GetReverseDestination(prefix string) (ids []string, err error) {
|
||||
prefix = utils.REVERSE_DESTINATION_PREFIX + prefix
|
||||
if x, ok := CacheGet(prefix); ok {
|
||||
if x != nil {
|
||||
return x.([]string), nil
|
||||
}
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
var values []string
|
||||
if values, err = rs.db.Cmd("SMEMBERS", prefix).List(); len(values) > 0 && err == nil {
|
||||
} else {
|
||||
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
CacheSet(prefix, values)
|
||||
return
|
||||
}
|
||||
|
||||
func (rs *RedisStorage) SetDestinationIDs(dest *Destination) (err error) {
|
||||
func (rs *RedisStorage) SetReverseDestination(dest *Destination, cache bool) (err error) {
|
||||
for _, p := range dest.Prefixes {
|
||||
err = rs.db.Cmd("SADD", utils.DESTINATION_PREFIX+p, dest.Id).Err
|
||||
err = rs.db.Cmd("SADD", utils.REVERSE_DESTINATION_PREFIX+p, dest.Id).Err
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if err == nil && historyScribe != nil {
|
||||
response := 0
|
||||
go historyScribe.Call("HistoryV1.Record", dest.GetHistoryRecord(false), &response)
|
||||
if cache && err == nil {
|
||||
CacheSet(utils.REVERSE_DESTINATION_PREFIX+dest.Id, dest)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1642,6 +1642,8 @@ func (tpr *TpReader) WriteToDatabase(flush, verbose bool) (err error) {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// write reverse destination
|
||||
|
||||
if verbose {
|
||||
log.Print("\t", d.Id, " : ", d.Prefixes)
|
||||
}
|
||||
|
||||
462
utils/consts.go
462
utils/consts.go
@@ -39,236 +39,238 @@ var (
|
||||
)
|
||||
|
||||
const (
|
||||
VERSION = "0.9.1~rc8"
|
||||
DIAMETER_FIRMWARE_REVISION = 918
|
||||
REDIS_MAX_CONNS = 10
|
||||
POSTGRES = "postgres"
|
||||
MYSQL = "mysql"
|
||||
MONGO = "mongo"
|
||||
REDIS = "redis"
|
||||
LOCALHOST = "127.0.0.1"
|
||||
FSCDR_FILE_CSV = "freeswitch_file_csv"
|
||||
FSCDR_HTTP_JSON = "freeswitch_http_json"
|
||||
NOT_IMPLEMENTED = "not implemented"
|
||||
PREPAID = "prepaid"
|
||||
META_PREPAID = "*prepaid"
|
||||
POSTPAID = "postpaid"
|
||||
META_POSTPAID = "*postpaid"
|
||||
PSEUDOPREPAID = "pseudoprepaid"
|
||||
META_PSEUDOPREPAID = "*pseudoprepaid"
|
||||
META_RATED = "*rated"
|
||||
META_NONE = "*none"
|
||||
META_NOW = "*now"
|
||||
TBL_TP_TIMINGS = "tp_timings"
|
||||
TBL_TP_DESTINATIONS = "tp_destinations"
|
||||
TBL_TP_RATES = "tp_rates"
|
||||
TBL_TP_DESTINATION_RATES = "tp_destination_rates"
|
||||
TBL_TP_RATING_PLANS = "tp_rating_plans"
|
||||
TBL_TP_RATE_PROFILES = "tp_rating_profiles"
|
||||
TBL_TP_SHARED_GROUPS = "tp_shared_groups"
|
||||
TBL_TP_CDR_STATS = "tp_cdr_stats"
|
||||
TBL_TP_LCRS = "tp_lcr_rules"
|
||||
TBL_TP_ACTIONS = "tp_actions"
|
||||
TBL_TP_ACTION_PLANS = "tp_action_plans"
|
||||
TBL_TP_ACTION_TRIGGERS = "tp_action_triggers"
|
||||
TBL_TP_ACCOUNT_ACTIONS = "tp_account_actions"
|
||||
TBL_TP_DERIVED_CHARGERS = "tp_derived_chargers"
|
||||
TBL_TP_USERS = "tp_users"
|
||||
TBL_TP_ALIASES = "tp_aliases"
|
||||
TBLSMCosts = "sm_costs"
|
||||
TBLTPResourceLimits = "tp_resource_limits"
|
||||
TBL_CDRS = "cdrs"
|
||||
TIMINGS_CSV = "Timings.csv"
|
||||
DESTINATIONS_CSV = "Destinations.csv"
|
||||
RATES_CSV = "Rates.csv"
|
||||
DESTINATION_RATES_CSV = "DestinationRates.csv"
|
||||
RATING_PLANS_CSV = "RatingPlans.csv"
|
||||
RATING_PROFILES_CSV = "RatingProfiles.csv"
|
||||
SHARED_GROUPS_CSV = "SharedGroups.csv"
|
||||
LCRS_CSV = "LcrRules.csv"
|
||||
ACTIONS_CSV = "Actions.csv"
|
||||
ACTION_PLANS_CSV = "ActionPlans.csv"
|
||||
ACTION_TRIGGERS_CSV = "ActionTriggers.csv"
|
||||
ACCOUNT_ACTIONS_CSV = "AccountActions.csv"
|
||||
DERIVED_CHARGERS_CSV = "DerivedChargers.csv"
|
||||
CDR_STATS_CSV = "CdrStats.csv"
|
||||
USERS_CSV = "Users.csv"
|
||||
ALIASES_CSV = "Aliases.csv"
|
||||
ROUNDING_UP = "*up"
|
||||
ROUNDING_MIDDLE = "*middle"
|
||||
ROUNDING_DOWN = "*down"
|
||||
ANY = "*any"
|
||||
UNLIMITED = "*unlimited"
|
||||
ZERO = "*zero"
|
||||
ASAP = "*asap"
|
||||
USERS = "*users"
|
||||
COMMENT_CHAR = '#'
|
||||
CSV_SEP = ','
|
||||
FALLBACK_SEP = ';'
|
||||
INFIELD_SEP = ";"
|
||||
FIELDS_SEP = ","
|
||||
InInFieldSep = ":"
|
||||
STATIC_HDRVAL_SEP = "::"
|
||||
REGEXP_PREFIX = "~"
|
||||
FILTER_VAL_START = "("
|
||||
FILTER_VAL_END = ")"
|
||||
JSON = "json"
|
||||
GOB = "gob"
|
||||
MSGPACK = "msgpack"
|
||||
CSV_LOAD = "CSVLOAD"
|
||||
CGRID = "CGRID"
|
||||
TOR = "ToR"
|
||||
ORDERID = "OrderID"
|
||||
ACCID = "OriginID"
|
||||
InitialOriginID = "InitialOriginID"
|
||||
OriginIDPrefix = "OriginIDPrefix"
|
||||
CDRSOURCE = "Source"
|
||||
CDRHOST = "OriginHost"
|
||||
REQTYPE = "RequestType"
|
||||
DIRECTION = "Direction"
|
||||
TENANT = "Tenant"
|
||||
CATEGORY = "Category"
|
||||
ACCOUNT = "Account"
|
||||
SUBJECT = "Subject"
|
||||
DESTINATION = "Destination"
|
||||
SETUP_TIME = "SetupTime"
|
||||
ANSWER_TIME = "AnswerTime"
|
||||
USAGE = "Usage"
|
||||
LastUsed = "LastUsed"
|
||||
PDD = "PDD"
|
||||
SUPPLIER = "Supplier"
|
||||
MEDI_RUNID = "RunID"
|
||||
COST = "Cost"
|
||||
COST_DETAILS = "CostDetails"
|
||||
RATED = "rated"
|
||||
RATED_FLD = "Rated"
|
||||
PartialField = "Partial"
|
||||
DEFAULT_RUNID = "*default"
|
||||
META_DEFAULT = "*default"
|
||||
STATIC_VALUE_PREFIX = "^"
|
||||
CSV = "csv"
|
||||
FWV = "fwv"
|
||||
DRYRUN = "dry_run"
|
||||
META_COMBIMED = "*combimed"
|
||||
MetaInternal = "*internal"
|
||||
ZERO_RATING_SUBJECT_PREFIX = "*zero"
|
||||
OK = "OK"
|
||||
CDRE_FIXED_WIDTH = "fwv"
|
||||
XML_PROFILE_PREFIX = "*xml:"
|
||||
CDRE = "cdre"
|
||||
CDRC = "cdrc"
|
||||
MASK_CHAR = "*"
|
||||
CONCATENATED_KEY_SEP = ":"
|
||||
FORKED_CDR = "forked_cdr"
|
||||
UNIT_TEST = "UNIT_TEST"
|
||||
HDR_VAL_SEP = "/"
|
||||
MONETARY = "*monetary"
|
||||
SMS = "*sms"
|
||||
MMS = "*mms"
|
||||
GENERIC = "*generic"
|
||||
DATA = "*data"
|
||||
VOICE = "*voice"
|
||||
MAX_COST_FREE = "*free"
|
||||
MAX_COST_DISCONNECT = "*disconnect"
|
||||
HOURS = "hours"
|
||||
MINUTES = "minutes"
|
||||
NANOSECONDS = "nanoseconds"
|
||||
SECONDS = "seconds"
|
||||
OUT = "*out"
|
||||
IN = "*in"
|
||||
META_OUT = "*out"
|
||||
META_ANY = "*any"
|
||||
CDR_IMPORT = "cdr_import"
|
||||
CDR_EXPORT = "cdr_export"
|
||||
ASR = "ASR"
|
||||
ACD = "ACD"
|
||||
FILTER_REGEXP_TPL = "$1$2$3$4$5"
|
||||
TASKS_KEY = "tasks"
|
||||
ACTION_PLAN_PREFIX = "apl_"
|
||||
ACTION_TRIGGER_PREFIX = "atr_"
|
||||
RATING_PLAN_PREFIX = "rpl_"
|
||||
RATING_PROFILE_PREFIX = "rpf_"
|
||||
ACTION_PREFIX = "act_"
|
||||
SHARED_GROUP_PREFIX = "shg_"
|
||||
ACCOUNT_PREFIX = "acc_"
|
||||
GENERIC_PREFIX = "gen_"
|
||||
DESTINATION_PREFIX = "dst_"
|
||||
LCR_PREFIX = "lcr_"
|
||||
DERIVEDCHARGERS_PREFIX = "dcs_"
|
||||
CDR_STATS_QUEUE_PREFIX = "csq_"
|
||||
PUBSUB_SUBSCRIBERS_PREFIX = "pss_"
|
||||
USERS_PREFIX = "usr_"
|
||||
ALIASES_PREFIX = "als_"
|
||||
REVERSE_ALIASES_PREFIX = "rls_"
|
||||
CDR_STATS_PREFIX = "cst_"
|
||||
TEMP_DESTINATION_PREFIX = "tmp_"
|
||||
LOG_CALL_COST_PREFIX = "cco_"
|
||||
LOG_ACTION_TIMMING_PREFIX = "ltm_"
|
||||
LOG_ACTION_TRIGGER_PREFIX = "ltr_"
|
||||
VERSION_PREFIX = "ver_"
|
||||
LOG_ERR = "ler_"
|
||||
LOG_CDR = "cdr_"
|
||||
LOG_MEDIATED_CDR = "mcd_"
|
||||
LOADINST_KEY = "load_history"
|
||||
SESSION_MANAGER_SOURCE = "SMR"
|
||||
MEDIATOR_SOURCE = "MED"
|
||||
CDRS_SOURCE = "CDRS"
|
||||
SCHED_SOURCE = "SCH"
|
||||
RATER_SOURCE = "RAT"
|
||||
CREATE_CDRS_TABLES_SQL = "create_cdrs_tables.sql"
|
||||
CREATE_TARIFFPLAN_TABLES_SQL = "create_tariffplan_tables.sql"
|
||||
TEST_SQL = "TEST_SQL"
|
||||
DESTINATIONS_LOAD_THRESHOLD = 0.1
|
||||
META_CONSTANT = "*constant"
|
||||
META_FILLER = "*filler"
|
||||
META_HANDLER = "*handler"
|
||||
META_HTTP_POST = "*http_post"
|
||||
META_HTTP_JSON = "*http_json"
|
||||
META_HTTP_JSONRPC = "*http_jsonrpc"
|
||||
NANO_MULTIPLIER = 1000000000
|
||||
CGR_AUTHORIZE = "CGR_AUTHORIZE"
|
||||
CONFIG_DIR = "/etc/cgrates/"
|
||||
CGR_ACCOUNT = "cgr_account"
|
||||
CGR_SUPPLIER = "cgr_supplier"
|
||||
CGR_DESTINATION = "cgr_destination"
|
||||
CGR_SUBJECT = "cgr_subject"
|
||||
CGR_CATEGORY = "cgr_category"
|
||||
CGR_REQTYPE = "cgr_reqtype"
|
||||
CGR_TENANT = "cgr_tenant"
|
||||
CGR_TOR = "cgr_tor"
|
||||
CGR_ACCID = "cgr_accid"
|
||||
CGR_HOST = "cgr_host"
|
||||
CGR_PDD = "cgr_pdd"
|
||||
DISCONNECT_CAUSE = "DisconnectCause"
|
||||
CGR_DISCONNECT_CAUSE = "cgr_disconnectcause"
|
||||
CGR_COMPUTELCR = "cgr_computelcr"
|
||||
CGR_SUPPLIERS = "cgr_suppliers"
|
||||
CGRFlags = "cgr_flags"
|
||||
KAM_FLATSTORE = "kamailio_flatstore"
|
||||
OSIPS_FLATSTORE = "opensips_flatstore"
|
||||
MAX_DEBIT_CACHE_PREFIX = "MAX_DEBIT_"
|
||||
REFUND_INCR_CACHE_PREFIX = "REFUND_INCR_"
|
||||
REFUND_ROUND_CACHE_PREFIX = "REFUND_ROUND_"
|
||||
GET_SESS_RUNS_CACHE_PREFIX = "GET_SESS_RUNS_"
|
||||
GET_DERIV_MAX_SESS_TIME = "GET_DERIV_MAX_SESS_TIME_"
|
||||
LOG_CALL_COST_CACHE_PREFIX = "LOG_CALL_COSTS_"
|
||||
LCRCachePrefix = "LCR_"
|
||||
ALIAS_CONTEXT_RATING = "*rating"
|
||||
NOT_AVAILABLE = "N/A"
|
||||
CALL = "call"
|
||||
EXTRA_FIELDS = "ExtraFields"
|
||||
META_SURETAX = "*sure_tax"
|
||||
SURETAX = "suretax"
|
||||
DIAMETER_AGENT = "diameter_agent"
|
||||
COUNTER_EVENT = "*event"
|
||||
COUNTER_BALANCE = "*balance"
|
||||
EVENT_NAME = "EventName"
|
||||
COMPUTE_LCR = "ComputeLcr"
|
||||
CGR_AUTHORIZATION = "CgrAuthorization"
|
||||
CGR_SESSION_START = "CgrSessionStart"
|
||||
CGR_SESSION_UPDATE = "CgrSessionUpdate"
|
||||
CGR_SESSION_END = "CgrSessionEnd"
|
||||
CGR_LCR_REQUEST = "CgrLcrRequest"
|
||||
VERSION = "0.9.1~rc8"
|
||||
DIAMETER_FIRMWARE_REVISION = 918
|
||||
REDIS_MAX_CONNS = 10
|
||||
POSTGRES = "postgres"
|
||||
MYSQL = "mysql"
|
||||
MONGO = "mongo"
|
||||
REDIS = "redis"
|
||||
LOCALHOST = "127.0.0.1"
|
||||
FSCDR_FILE_CSV = "freeswitch_file_csv"
|
||||
FSCDR_HTTP_JSON = "freeswitch_http_json"
|
||||
NOT_IMPLEMENTED = "not implemented"
|
||||
PREPAID = "prepaid"
|
||||
META_PREPAID = "*prepaid"
|
||||
POSTPAID = "postpaid"
|
||||
META_POSTPAID = "*postpaid"
|
||||
PSEUDOPREPAID = "pseudoprepaid"
|
||||
META_PSEUDOPREPAID = "*pseudoprepaid"
|
||||
META_RATED = "*rated"
|
||||
META_NONE = "*none"
|
||||
META_NOW = "*now"
|
||||
TBL_TP_TIMINGS = "tp_timings"
|
||||
TBL_TP_DESTINATIONS = "tp_destinations"
|
||||
TBL_TP_RATES = "tp_rates"
|
||||
TBL_TP_DESTINATION_RATES = "tp_destination_rates"
|
||||
TBL_TP_RATING_PLANS = "tp_rating_plans"
|
||||
TBL_TP_RATE_PROFILES = "tp_rating_profiles"
|
||||
TBL_TP_SHARED_GROUPS = "tp_shared_groups"
|
||||
TBL_TP_CDR_STATS = "tp_cdr_stats"
|
||||
TBL_TP_LCRS = "tp_lcr_rules"
|
||||
TBL_TP_ACTIONS = "tp_actions"
|
||||
TBL_TP_ACTION_PLANS = "tp_action_plans"
|
||||
TBL_TP_ACTION_TRIGGERS = "tp_action_triggers"
|
||||
TBL_TP_ACCOUNT_ACTIONS = "tp_account_actions"
|
||||
TBL_TP_DERIVED_CHARGERS = "tp_derived_chargers"
|
||||
TBL_TP_USERS = "tp_users"
|
||||
TBL_TP_ALIASES = "tp_aliases"
|
||||
TBLSMCosts = "sm_costs"
|
||||
TBLTPResourceLimits = "tp_resource_limits"
|
||||
TBL_CDRS = "cdrs"
|
||||
TIMINGS_CSV = "Timings.csv"
|
||||
DESTINATIONS_CSV = "Destinations.csv"
|
||||
RATES_CSV = "Rates.csv"
|
||||
DESTINATION_RATES_CSV = "DestinationRates.csv"
|
||||
RATING_PLANS_CSV = "RatingPlans.csv"
|
||||
RATING_PROFILES_CSV = "RatingProfiles.csv"
|
||||
SHARED_GROUPS_CSV = "SharedGroups.csv"
|
||||
LCRS_CSV = "LcrRules.csv"
|
||||
ACTIONS_CSV = "Actions.csv"
|
||||
ACTION_PLANS_CSV = "ActionPlans.csv"
|
||||
ACTION_TRIGGERS_CSV = "ActionTriggers.csv"
|
||||
ACCOUNT_ACTIONS_CSV = "AccountActions.csv"
|
||||
DERIVED_CHARGERS_CSV = "DerivedChargers.csv"
|
||||
CDR_STATS_CSV = "CdrStats.csv"
|
||||
USERS_CSV = "Users.csv"
|
||||
ALIASES_CSV = "Aliases.csv"
|
||||
ROUNDING_UP = "*up"
|
||||
ROUNDING_MIDDLE = "*middle"
|
||||
ROUNDING_DOWN = "*down"
|
||||
ANY = "*any"
|
||||
UNLIMITED = "*unlimited"
|
||||
ZERO = "*zero"
|
||||
ASAP = "*asap"
|
||||
USERS = "*users"
|
||||
COMMENT_CHAR = '#'
|
||||
CSV_SEP = ','
|
||||
FALLBACK_SEP = ';'
|
||||
INFIELD_SEP = ";"
|
||||
FIELDS_SEP = ","
|
||||
InInFieldSep = ":"
|
||||
STATIC_HDRVAL_SEP = "::"
|
||||
REGEXP_PREFIX = "~"
|
||||
FILTER_VAL_START = "("
|
||||
FILTER_VAL_END = ")"
|
||||
JSON = "json"
|
||||
GOB = "gob"
|
||||
MSGPACK = "msgpack"
|
||||
CSV_LOAD = "CSVLOAD"
|
||||
CGRID = "CGRID"
|
||||
TOR = "ToR"
|
||||
ORDERID = "OrderID"
|
||||
ACCID = "OriginID"
|
||||
InitialOriginID = "InitialOriginID"
|
||||
OriginIDPrefix = "OriginIDPrefix"
|
||||
CDRSOURCE = "Source"
|
||||
CDRHOST = "OriginHost"
|
||||
REQTYPE = "RequestType"
|
||||
DIRECTION = "Direction"
|
||||
TENANT = "Tenant"
|
||||
CATEGORY = "Category"
|
||||
ACCOUNT = "Account"
|
||||
SUBJECT = "Subject"
|
||||
DESTINATION = "Destination"
|
||||
SETUP_TIME = "SetupTime"
|
||||
ANSWER_TIME = "AnswerTime"
|
||||
USAGE = "Usage"
|
||||
LastUsed = "LastUsed"
|
||||
PDD = "PDD"
|
||||
SUPPLIER = "Supplier"
|
||||
MEDI_RUNID = "RunID"
|
||||
COST = "Cost"
|
||||
COST_DETAILS = "CostDetails"
|
||||
RATED = "rated"
|
||||
RATED_FLD = "Rated"
|
||||
PartialField = "Partial"
|
||||
DEFAULT_RUNID = "*default"
|
||||
META_DEFAULT = "*default"
|
||||
STATIC_VALUE_PREFIX = "^"
|
||||
CSV = "csv"
|
||||
FWV = "fwv"
|
||||
DRYRUN = "dry_run"
|
||||
META_COMBIMED = "*combimed"
|
||||
MetaInternal = "*internal"
|
||||
ZERO_RATING_SUBJECT_PREFIX = "*zero"
|
||||
OK = "OK"
|
||||
CDRE_FIXED_WIDTH = "fwv"
|
||||
XML_PROFILE_PREFIX = "*xml:"
|
||||
CDRE = "cdre"
|
||||
CDRC = "cdrc"
|
||||
MASK_CHAR = "*"
|
||||
CONCATENATED_KEY_SEP = ":"
|
||||
FORKED_CDR = "forked_cdr"
|
||||
UNIT_TEST = "UNIT_TEST"
|
||||
HDR_VAL_SEP = "/"
|
||||
MONETARY = "*monetary"
|
||||
SMS = "*sms"
|
||||
MMS = "*mms"
|
||||
GENERIC = "*generic"
|
||||
DATA = "*data"
|
||||
VOICE = "*voice"
|
||||
MAX_COST_FREE = "*free"
|
||||
MAX_COST_DISCONNECT = "*disconnect"
|
||||
HOURS = "hours"
|
||||
MINUTES = "minutes"
|
||||
NANOSECONDS = "nanoseconds"
|
||||
SECONDS = "seconds"
|
||||
OUT = "*out"
|
||||
IN = "*in"
|
||||
META_OUT = "*out"
|
||||
META_ANY = "*any"
|
||||
CDR_IMPORT = "cdr_import"
|
||||
CDR_EXPORT = "cdr_export"
|
||||
ASR = "ASR"
|
||||
ACD = "ACD"
|
||||
FILTER_REGEXP_TPL = "$1$2$3$4$5"
|
||||
TASKS_KEY = "tasks"
|
||||
ACTION_PLAN_PREFIX = "apl_"
|
||||
ACTION_TRIGGER_PREFIX = "atr_"
|
||||
REVERSE_ACTION_TRIGGER_PREFIX = "rtr_"
|
||||
RATING_PLAN_PREFIX = "rpl_"
|
||||
RATING_PROFILE_PREFIX = "rpf_"
|
||||
ACTION_PREFIX = "act_"
|
||||
SHARED_GROUP_PREFIX = "shg_"
|
||||
ACCOUNT_PREFIX = "acc_"
|
||||
GENERIC_PREFIX = "gen_"
|
||||
DESTINATION_PREFIX = "dst_"
|
||||
REVERSE_DESTINATION_PREFIX = "rdt_"
|
||||
LCR_PREFIX = "lcr_"
|
||||
DERIVEDCHARGERS_PREFIX = "dcs_"
|
||||
CDR_STATS_QUEUE_PREFIX = "csq_"
|
||||
PUBSUB_SUBSCRIBERS_PREFIX = "pss_"
|
||||
USERS_PREFIX = "usr_"
|
||||
ALIASES_PREFIX = "als_"
|
||||
REVERSE_ALIASES_PREFIX = "rls_"
|
||||
CDR_STATS_PREFIX = "cst_"
|
||||
TEMP_DESTINATION_PREFIX = "tmp_"
|
||||
LOG_CALL_COST_PREFIX = "cco_"
|
||||
LOG_ACTION_TIMMING_PREFIX = "ltm_"
|
||||
LOG_ACTION_TRIGGER_PREFIX = "ltr_"
|
||||
VERSION_PREFIX = "ver_"
|
||||
LOG_ERR = "ler_"
|
||||
LOG_CDR = "cdr_"
|
||||
LOG_MEDIATED_CDR = "mcd_"
|
||||
LOADINST_KEY = "load_history"
|
||||
SESSION_MANAGER_SOURCE = "SMR"
|
||||
MEDIATOR_SOURCE = "MED"
|
||||
CDRS_SOURCE = "CDRS"
|
||||
SCHED_SOURCE = "SCH"
|
||||
RATER_SOURCE = "RAT"
|
||||
CREATE_CDRS_TABLES_SQL = "create_cdrs_tables.sql"
|
||||
CREATE_TARIFFPLAN_TABLES_SQL = "create_tariffplan_tables.sql"
|
||||
TEST_SQL = "TEST_SQL"
|
||||
DESTINATIONS_LOAD_THRESHOLD = 0.1
|
||||
META_CONSTANT = "*constant"
|
||||
META_FILLER = "*filler"
|
||||
META_HANDLER = "*handler"
|
||||
META_HTTP_POST = "*http_post"
|
||||
META_HTTP_JSON = "*http_json"
|
||||
META_HTTP_JSONRPC = "*http_jsonrpc"
|
||||
NANO_MULTIPLIER = 1000000000
|
||||
CGR_AUTHORIZE = "CGR_AUTHORIZE"
|
||||
CONFIG_DIR = "/etc/cgrates/"
|
||||
CGR_ACCOUNT = "cgr_account"
|
||||
CGR_SUPPLIER = "cgr_supplier"
|
||||
CGR_DESTINATION = "cgr_destination"
|
||||
CGR_SUBJECT = "cgr_subject"
|
||||
CGR_CATEGORY = "cgr_category"
|
||||
CGR_REQTYPE = "cgr_reqtype"
|
||||
CGR_TENANT = "cgr_tenant"
|
||||
CGR_TOR = "cgr_tor"
|
||||
CGR_ACCID = "cgr_accid"
|
||||
CGR_HOST = "cgr_host"
|
||||
CGR_PDD = "cgr_pdd"
|
||||
DISCONNECT_CAUSE = "DisconnectCause"
|
||||
CGR_DISCONNECT_CAUSE = "cgr_disconnectcause"
|
||||
CGR_COMPUTELCR = "cgr_computelcr"
|
||||
CGR_SUPPLIERS = "cgr_suppliers"
|
||||
CGRFlags = "cgr_flags"
|
||||
KAM_FLATSTORE = "kamailio_flatstore"
|
||||
OSIPS_FLATSTORE = "opensips_flatstore"
|
||||
MAX_DEBIT_CACHE_PREFIX = "MAX_DEBIT_"
|
||||
REFUND_INCR_CACHE_PREFIX = "REFUND_INCR_"
|
||||
REFUND_ROUND_CACHE_PREFIX = "REFUND_ROUND_"
|
||||
GET_SESS_RUNS_CACHE_PREFIX = "GET_SESS_RUNS_"
|
||||
GET_DERIV_MAX_SESS_TIME = "GET_DERIV_MAX_SESS_TIME_"
|
||||
LOG_CALL_COST_CACHE_PREFIX = "LOG_CALL_COSTS_"
|
||||
LCRCachePrefix = "LCR_"
|
||||
ALIAS_CONTEXT_RATING = "*rating"
|
||||
NOT_AVAILABLE = "N/A"
|
||||
CALL = "call"
|
||||
EXTRA_FIELDS = "ExtraFields"
|
||||
META_SURETAX = "*sure_tax"
|
||||
SURETAX = "suretax"
|
||||
DIAMETER_AGENT = "diameter_agent"
|
||||
COUNTER_EVENT = "*event"
|
||||
COUNTER_BALANCE = "*balance"
|
||||
EVENT_NAME = "EventName"
|
||||
COMPUTE_LCR = "ComputeLcr"
|
||||
CGR_AUTHORIZATION = "CgrAuthorization"
|
||||
CGR_SESSION_START = "CgrSessionStart"
|
||||
CGR_SESSION_UPDATE = "CgrSessionUpdate"
|
||||
CGR_SESSION_END = "CgrSessionEnd"
|
||||
CGR_LCR_REQUEST = "CgrLcrRequest"
|
||||
// action trigger threshold types
|
||||
TRIGGER_MIN_EVENT_COUNTER = "*min_event_counter"
|
||||
TRIGGER_MIN_BALANCE_COUNTER = "*min_balance_counter"
|
||||
|
||||
Reference in New Issue
Block a user