package utils import ( "errors" "fmt" ) func NewErrMandatoryIeMissing(fields ...string) error { return fmt.Errorf("MANDATORY_IE_MISSING:%v", fields) } func NewErrServerError(err error) error { return fmt.Errorf("SERVER_ERROR: %s", err) } var ( ErrNotImplemented = errors.New("NOT_IMPLEMENTED") ErrNotFound = errors.New("NOT_FOUND") ErrTimedOut = errors.New("TIMED_OUT") ErrServerError = errors.New("SERVER_ERROR") ErrMaxRecursionDepth = errors.New("MAX_RECURSION_DEPTH") ErrMandatoryIeMissing = errors.New("MANDATORY_IE_MISSING") ErrExists = errors.New("EXISTS") ErrBrokenReference = errors.New("BROKEN_REFERENCE") ErrParserError = errors.New("PARSER_ERROR") ErrInvalidPath = errors.New("INVALID_PATH") ErrInvalidKey = errors.New("INVALID_KEY") ErrUnauthorizedDestination = errors.New("UNAUTHORIZED_DESTINATION") ErrRatingPlanNotFound = errors.New("RATING_PLAN_NOT_FOUND") ErrAccountNotFound = errors.New("ACCOUNT_NOT_FOUND") ErrUserNotFound = errors.New("USER_NOT_FOUND") ErrInsufficientCredit = errors.New("INSUFFICENT_CREDIT") ) 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" 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 = "," 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" 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" PDD = "PDD" SUPPLIER = "Supplier" MEDI_RUNID = "RunID" COST = "Cost" COST_DETAILS = "CostDetails" RATED = "rated" RATED_FLD = "Rated" DEFAULT_RUNID = "*default" META_DEFAULT = "*default" STATIC_VALUE_PREFIX = "^" CSV = "csv" FWV = "fwv" DRYRUN = "dry_run" META_COMBIMED = "*combimed" INTERNAL = "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_" 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_" 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_" LOG_CALL_COST_CACHE_PREFIX = "LOG_CALL_COSTS_" 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" TRIGGER_MAX_EVENT_COUNTER = "*max_event_counter" TRIGGER_MAX_BALANCE_COUNTER = "*max_balance_counter" TRIGGER_MIN_BALANCE = "*min_balance" TRIGGER_MAX_BALANCE = "*max_balance" TRIGGER_BALANCE_EXPIRED = "*balance_expired" HIERARCHY_SEP = ">" META_COMPOSED = "*composed" NegativePrefix = "!" MatchStartPrefix = "^" MatchEndPrefix = "$" SMG = "SMG" MetaGrouped = "*grouped" MetaRaw = "*raw" CreatedAt = "CreatedAt" UpdatedAt = "UpdatedAt" HandlerArgSep = "|" FlagForceDuration = "fd" ) var ( CdreCdrFormats = []string{CSV, DRYRUN, CDRE_FIXED_WIDTH} PrimaryCdrFields = []string{CGRID, CDRSOURCE, CDRHOST, ACCID, TOR, REQTYPE, DIRECTION, TENANT, CATEGORY, ACCOUNT, SUBJECT, DESTINATION, SETUP_TIME, PDD, ANSWER_TIME, USAGE, SUPPLIER, DISCONNECT_CAUSE, COST, RATED} )