mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
341 lines
15 KiB
Go
341 lines
15 KiB
Go
/*
|
|
Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
|
|
Copyright (C) ITsysCOM GmbH
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>
|
|
*/
|
|
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")
|
|
ErrAccountDisabled = errors.New("ACCOUNT_DISABLED")
|
|
ErrUserNotFound = errors.New("USER_NOT_FOUND")
|
|
ErrInsufficientCredit = errors.New("INSUFFICIENT_CREDIT")
|
|
ErrNotConvertible = errors.New("NOT_CONVERTIBLE")
|
|
ErrResourceUnavailable = errors.New("RESOURCE_UNAVAILABLE")
|
|
ErrNoActiveSession = errors.New("NO_ACTIVE_SESSION")
|
|
|
|
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, PartialField, MEDI_RUNID}
|
|
)
|
|
|
|
const (
|
|
CGRateS = "CGRateS"
|
|
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"
|
|
ResourceLimitsCsv = "ResourceLimits.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"
|
|
PartialCSV = "partial_csv"
|
|
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_"
|
|
DESTINATION_PREFIX = "dst_"
|
|
REVERSE_DESTINATION_PREFIX = "rds_"
|
|
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_"
|
|
ResourceLimitsPrefix = "rlm_"
|
|
ResourceLimitsIndex = "rli_"
|
|
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"
|
|
MetaHTTPjsonCDR = "*http_json_cdr"
|
|
META_HTTP_JSONRPC = "*http_jsonrpc"
|
|
MetaHTTPjsonMap = "*http_json_map"
|
|
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"
|
|
MetaEmpty = "*empty"
|
|
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"
|
|
InstanceID = "InstanceID"
|
|
SessionTTL = "SessionTTL"
|
|
SessionTTLLastUsed = "SessionTTLLastUsed"
|
|
SessionTTLUsage = "SessionTTLUsage"
|
|
HandlerSubstractUsage = "*substract_usage"
|
|
XML = "xml"
|
|
MetaGOBrpc = "*gob"
|
|
MetaJSONrpc = "*json"
|
|
MetaDateTime = "*datetime"
|
|
MetaMaskedDestination = "*masked_destination"
|
|
MetaUnixTimestamp = "*unix_timestamp"
|
|
MetaPostCDR = "*post_cdr"
|
|
MetaDumpToFile = "*dump_to_file"
|
|
NonTransactional = "" // used in transactional cache mechanism
|
|
EVT_ACCOUNT_BALANCE_MODIFIED = "ACCOUNT_BALANCE_MODIFIED"
|
|
EVT_ACTION_TRIGGER_FIRED = "ACTION_TRIGGER_FIRED"
|
|
EVT_ACTION_TIMING_FIRED = "ACTION_TRIGGER_FIRED"
|
|
SMAsterisk = "sm_asterisk"
|
|
TariffPlanDB = "tariffplan_db"
|
|
DataDB = "data_db"
|
|
StorDB = "stor_db"
|
|
)
|