* provisioning.voip_peer_rules triggers use internally
a join by IP address to insert/update entries in
kamailio.lcr_rule_target. in cases where there are 2 hosts
per peering group with the same IP address, the triggers
fail because they select duplicate peer hosts. to address
that the "lcr_rule_target join" in the relevant triggers
is adjusted to join the hosts tables by gw_name isntead,
since gw_name is guaranteed unique per peer group
(controlled by a unique key)
Change-Id: I36669efc22bb62ad34c57aac4d978435dbb26f0c
* this table is supposed to group cdrs
by a common identifier. for now it is call_id
it does not contain a dictionary like other
cdr_* relation tables because the field must be
of the similar type as well as to make it possible
to have multi field groups in the future.
Change-Id: Ie304c00bb5f061c80402de7a1072c206b11619ab
Must be 0 for string-key/string-val instead of 1 for
string-key/int-val, otherwise kamailio complains about
invalid int parameter in lua script.
Change-Id: I3421f3706efab9703fb046e0c6981785bb4bc696
We're querying for the alias during registration phase to check if the
dev-id passed by the device is a native alias or a devid alias.
Change-Id: I183cde2690e50bf233f388d79783ce1e5e868aa9
In v_time_sets_ical LEFT join is used insted of INNER join
Use varchar for the bysetpos for set input
Add duration and wkst fields to voip_timeset_periods
Add dtend into vcalendar header if presented
Add name into vcalendar
Change-Id: I077361c01adf034177f09401db9d7d2c4f838be3
A new "Add" mode allows to merge registered contacts of two different
subscribers, instead of replacing the actual ones with an external
one.
Change-Id: I0405ad90d58654bb14b39061b60407186ba6cff4
This flag indicates whether an alias is meant to be a device id, so
calls to this alias can be filtered to only allow calls to devices
carrying this device id in their display-name.
Change-Id: I29c0e2a34d2bd9c1a15618bcfcefe15b77787097
* ngcp.date_range_helper was created as replicated
but it was not replicated on PRO.
this up script recreates the table syncing it in the pair
Change-Id: I4259436701a686729cbbb4a8248feabfcf8054d3
- currenty, there is only cdr.export_status and cdr.exported_at columns
to mark rows already written.
- to handle the AMA ticket export (and other exporters in the future), a
table "accounting.cdr_export_status" is introduced, defineing "streams".
for now there will be "defualt" (the good old cdr-exporter) and
"ama-simples" (for UPC AT)
- the table accounting.cdr_export_status_data stores individual vlaus
for "export_status" (unexported, ok, failed) and exported_at timestamp
per cdr and per cdr exort stream
- all cdr relation table triggers for emulating fk are refactored to be fast.
Change-Id: I52c3383f82ef841e7b18515dd7b73db42a43e2f9
Added the following preferences:
* play_announce_before_call_setup
* play_announce_before_recording
Added the following sounds:
* announce_before_call_setup
* announce_before_recording
Change-Id: I433b09875dc09202390770c78e47cb2db9360fa4
to prevent a pontential foreign key error in susequent
alter table billing_fees_raw
..,
add unique key bfr_srcdestdir_idx (billing_profile_id, type,
match_mode, direction, source, destination),
..;
the key is turned into not-unique afterwards with 15449.up
Change-Id: I884adc442e48202fd0061fece400f5fcb6f892b5
* addresses an issue with the foreign key cannot be
recreated as it relies on the lnp_providers table,
affected since MariaDB 10.1.37
Change-Id: I785fcae727e975839c710f327bd10a659384c39c
the proc now locks contract_id=1 to synchronize when
creating new contracts. (LOCK TABLE is n/a in procs)
note this would be also needed for update operations.
for the lock to work, it requires a proper isolation level.
Change-Id: Ie553532d2879905858a02d0bff22b94d74b44850
A typo in 15400_not_replicated.up script cause the initial select
to return a NULL id, introducing some wrong lines in voip_preferences_enum
table.
The new up script delete the previously introduced wrong lines and
insert the correct ones.
Change-Id: I4e321978e932f866eeaec2b57cdc3deb3a3a0f35
+ add "match_mode" column
+ refactor indexes, triggers, copy proc
+ get_billing_fee_id proc implementing the 4 match modes:
- regex_longest_pattern
- regex_longest_match
- prefix
- exact_destination
+ get_billing_fee proc returning intervals/rates as a
packed string for matching call-out fees and on/offpeak
for the given time. to be used in kamailio/AoC
Change-Id: I7799c5a1ab33bb433c231bd4049c977bcb19b684
* when peer group is changed for a peer rule
it is now correctly reflected in
kamailio.lcr_rule and kamailio.lcr_rule_target
Change-Id: I0a449a224874bd098a3d3c973958f812dbf78530
Allows to identify firmwares by a given tag, if the firmware consists
of multiple files and the phone fetches them by hardcoded names.
Change-Id: I5325895da642d306c92ab1e03264ba128cc295a6
to optimize the heavyweight fraud events query (and similar
places), the billing.billing_mappings is refactored into 2
new tables that will hold a scan-line rendered representation
of the former billing_mapping records known with their
(nullable) start and (nullable) stop cols.
accessing this new tables (eg. insert a billing mapping to
switch a contract's billing_profile, or query for the
contracts current billing profile) is not supposed to be
done explicitly, but by the stored sql proc provided:
- "billing.create_contract_billing_profile_network_from_package":
set/add a bunch of profiles from a profile package at once.
- "billing.get_billing_profile_by_*":
get a contract's billing profile id at the given epoch.
+ by_contract_id: customer or system contract id
+ by_uuid: subscriber uuid
+ by_peer_host_id: peer server id
- "billing.get_billing_profile_by_*_network":
get a contract's billing profile id for the given IPv4 or IPv6
string at the given epoch.
+ by_contract_id: customer or system contract id
+ by_uuid: subscriber uuid
+ by_peer_host_id: peer server id
The enhanced fraud queries can finally make use of a view that
can be used to get the current billing profile id:
- "billing.v_actual_billing_profiles":
View showing all contracts' billing_profile_id at the
current time. In contrast to the procs, the view can
be used nicely in joins of stmts.
15418.up also cover copying+transforming the existing records
in billing.billing_mappings. the old table and records are left
for now but are subject to be dropped soon. if new contracts
were created during the upgrade (although discouraged), the
transformation of not yet transformed contracts can be done by
simply re-executing
call billing.transform_billing_mappings();
Change-Id: Ib5ddd620b2b08ed7db4b6448a44931d37ea5b06a
* type field is now varchar(255) to allow custom
dictionary data to be entered
* add new dictionary values:
(header related dvalues are prefixed with 'header='
to avoid possible collisions as such fields will be
dynamic)
- furnished_charging_info
- header=Divesion
- header=P-Asserted-Identity
Change-Id: I907ad7d074e8ecbdcbfb57ba06dcab3645d60cf6
* new 'smsc_peer' domain preference, synced up automatically
by the sync-db ngcpcfg helper
* sms_journal is extended with sms_peer field
Change-Id: Ida8c7d4f4ef78002bdd822cc6f5967920500b948
This is needed because we now also look at the `with` part
to also retrieve inbound messages to a user.
Change-Id: I8602ec4e3e8b94dcbdd3548dd3ad4ac73d399c0d
To be used to divert call to a given number if the outbound
call is blocked due to block lists or NCOS.
Change-Id: Id3acdfe38ef0a4ab211b96678cdf93fad12f85c7
If activated, the preference will force the system to resolve the
hostname to find the proper destination IP.
Change-Id: I05da4e2ed3e048a1fc7f85558dc0becc3246bb10
+ add default pref values only if not existing yet
+ do not add "0" default values for fromer int prefs
such as "lock"
Change-Id: Ia726fd66f4e3261e6f450877612ece371d744408
* ngcp.tzinfo_version is meant to store
the tzdata package version used in
the 'mysql_tzinfo_to_sql' data synchronisation.
Change-Id: I389ee0d189aff40ab94f55e04025a2e44e7027c8
New options:
* diversion: If received Diversion header
* historyinfo: If received History-Info header
Change-Id: Id6de1b2b3d6673f1f7becb377692e98511723f22
* created a stored procedure that moves the firmwwares data
into a new table as chunked blocks, that resolves the
innodb_log_file_size and max_allowe_packet limitations
enabling any size of data
Change-Id: I52ffcc5e0dad4ce35e70cdb13192de1eb54b909c
* as the new introduced ngcp.timezone table is not replicated
in my.cnf by default it must be as not_replicated and
only become available when both nodes contain the same
updated my.cnf tempalte and MariaDB is also restarted on
both of them
* fill in ngcp.timezone with a default record
Change-Id: I34c080a6fa62d951fa01218f9049ef3e1d6668f0
* this change brings back the accounting.cdr tables
to use composite primary keys, that is compatible with
partitioning
Change-Id: I52dc5e665db1a9b9964b52690a7f0792310e1b1b
* ngcp.timezone is used in the
v_subscriber_timezone
v_contract_timezone
v_reseller_timezone views as the fallback one
Change-Id: I52b7b413c7af3d54577665517197a13ca7a95b7d
The previous fix was backported to mr4.5 and mr3.8 LTS while mr5.[0-3] was untouched.
It resulted to the fact that systems upgraded via release where grants.yml has user 'export'
will have it restored. Also we need to care about Carrier's 3308 here so we have to use _not_replicated.
The current fix will be included into mr5.5.1+ only,
so it is safe to use "IF EXISTS" as in upgrade
mr4.5->mr5.5 it will be executed in new MariaDB 10.1
Change-Id: I5f1612393aea2676f96d6824a9ab641d29bb8407
+ anticipate warnings in .down, if string values
other than "fixed" or "mobile" are present
+ .down scripts now dropped, no rollbacks supported.
Change-Id: I82f4b6d814892586613da3e670e8e50b50ae54b3
* kamailio.acc_backup and kamailio.acc_trash are not replicated
and therefore, changes to those tables must be done separately
for sp1 and sp2
Change-Id: I633838d2bbf6f346de0a9e97dcfd9234060e334e
* remove primary key and create (id,start_time) index
for the following accounting tables:
- cdr
- cdr_cash_balance_data
- cdr_time_balance_data
- cdr_relation_data
- cdr_tag_data
Change-Id: I399e9504496bdfd4600466d8fb67abccb3a0c40f
* backward compatibility to support existing 0 values
of the 'lock' preference in voip_usr_preferences
Change-Id: I7c497e14695891d3b7a4ee018cf5429f79a0a485
- required to support acc-cleanup's "backup" and "archive"
modes. for "cleanup" mode, they are not needed considering
the original plan with cdr delete triggers.
- delete triggers for accounting.cdr slow down the cleanup,
so we take them out. separate cleanup jobs should be registered.
this way, the performance of 3.x cleanup must be axactly restored.
- same for events; also there was no index for the
events.timestamp column yet
Change-Id: Ia117e237533814b5175eb2b1fab8fdc153878f83
* add t38 preference to enable/disable t38 support per subscriber
* add ecm preference to enable/disable ecm support per subscriber
Change-Id: I3ae69fa49c952732c012c5fd385104e5ebdc92fa
* Add probe column to provisioning.voip_peer_hosts
* Add trigger to populate kamailio.dispatcher on active probing
* Fix kamailio.version table to version 4 of dispatcher table to
use the attrs column.
* Write peerid (used for routing) and also peername and peergid
(used for monitoring) into dispatcher attrs
* Only enable probing if peer is enabled
Change-Id: I29bc23ec27bf59672656fc972171a518aecce133
by adding the subscriber_id. This is still fine, to reference them
uniquely per subscriber but allows e.g. for the same name in different
subscriber like the automatically created sets like "quickset_cfu".
Change-Id: If72354639f501e8925680a664ef61951940b8ece
Storing salt and bcrypt hash per admin in this column.
Also clear existing ssl certs for security reasons. If someone
lost his key, it needs to be deleted and re-generated.
Change-Id: I0db91865f1ee248037bb0eaa31a97937c71d0ad6
since it can be written using a separate db connection,
pointing to a database that is not fully replicated,
foreign keys will cause failing inserts, updates etc.
Change-Id: I65108abdce1f5ad86b982adaf4d0d762fd0a634d
+ events_relations: store associated id's (int):
-subscriber_profile_id
-pilot_subscriber_profile_id
-primary_number_id
-pilot_subscriber_primary_number_id
-subscriber_profile_set_id
-pilot_subscriber_profile_set_id
+ events_tags: store associated strings:
-number cc,ac,sn
-pilot number cc,ac,sn
-subscriber profile name
-pilot susbcriber profile name
-subscriber profile set name
-pilot subscriber profile set name
no alter table required
Change-Id: I74c54c0c3505fc014c640bf3298e81ab97ac0ad8
* on OLD.enabled = 1 AND NEW.enabled = 0
limit delete to only 1 row to cover cases when
there are several identical rules within one group
(e.g. 2+ ALL NULL rules)
Change-Id: Id19ea55f81324e44870b743ecb1d96f593f1436b
* copy all existing data from autoprov_firmwares.data field
into autoprov_firmwares_data
* remove autoprov_firmwares.data field
Change-Id: I7a62208a323e1bc2d35df4db5828518d897855e3
+_not_replicated, as there can be hundred k's
records (remember a new contact is created for every
subscriber). as mediator copies contact gpp columns
into the cdr, "ALTER contacts" will likely block mediator.
Change-Id: I678291936a03963fd56cfbb6e9f1b2e13e2b05a4
-undo lnp unique constraints
-restoring separate number index to accelerate actual numbers view
-retain cascade delete restrict
-15285->15288
-start date index
Change-Id: I6380479da14302abdb7309da4b7ec22cebe568cd
If set and a call is done within a pbx customer, the call is blocked
in blacklist, and is allowed in whitelist.
Change-Id: I3a113a29baa0c1500e23016d05c8225024dcf295
* "partition" is a reserved word in MariaDB and as such
the existing column with name partition is escaped
as `partition`
* MariaDB is more restrictive to column alterations that have
foreign keys in another tables and as such added
constract drop/add wrapped into LOCK TABLES.
LOCK TABLES is essential there as after DROP FOREIGN KEY
up until the CONSTRANT is recreated again there is a chance
to break the consistency with a wrong sql statement executed
when the up script is being applied.
Change-Id: I4b08a1c5b2c5e1632e2683f62251fe3873ebc58e
creating the index takes few 100msec for
a table with 100k rows, so imho no _not_replicated
required.
Change-Id: I63cc65d934955557675d5a33f7ec9c14bfdde565
tables to support a new subscriber preference, which allows to provide
a custom cli when the a-number matches a configured pattern
Change-Id: Ia7688470978aa88634197176139465e6c674a5b8
This allows to reject any VSC coming from the subscriber, disabling
the possibility to provision subscriber features on the system.
Change-Id: I5cceb70875467a8252ce588ddc90d4c2fbd3c8de
* active_watchers.user_agent had no default value
> [km_dbase.c:128]: db_mysql_submit_query(): driver error on query: Field 'user_agent' doesn't have a default value (1364)
Change-Id: Ie9e7091dbc6f4122056fddc01f514222f61f948e
+immediate use for netcologne's "calling party category"
+per source/destination
+per customer/reseller/carrier
+TEXT instead of varchar(255)
+upcoming use eg. for location data.
Change-Id: I24abe06310a7f9ba6f0cb3e044db4ebb0b297cf1
+replace old lnp_provider_id index by multi-column unique index
(safe one index)
+not replicated, as lnp_numbers table could get large
Change-Id: I776358e42345f9a58bd3c755f7e40b12c1ac0a25
in the future, we will connect one rtc-session to all related
networks (via rtc-accounts). therefore, there is no need anymore,
to store the network tag here. assign a default, in order to ensure
compatibility with old and new code
Change-Id: I76c69250217e1295f511e74a17ef55504e526b80
Authoritative is rejecting call with 404 if number is not assigned
to local subscriber.
Skip Rewrite is skipping lnp rewrite rules.
Change-Id: I8d7654bbe02db6f2a92f93712e5b34185ede423d
-original ALTER TABLE accounting.cdr is refactored by introducing first set of separate entity-attribute-value tables. hot-fixable, no downtimes.
-further refactored to extract "provider" and "direction" columns elements (n=2) to manage values in data tables in a n-dimensional mannor. it turns out rateomats column model implementation will get complex to support data tables for arbitrary dimensions n.
-updated table names, removed autoinc staring values (ids cannot be distinguished in data tables any more)
-removed IF NOT/EXISTS
-added GRANTs for 'exporter'@'localhost'
MT#17795:
Melita needs the billing profile package id tracked in cdrs. Note that this is the package assigned to the contract at the time rate-o-mat processes the cdr (no history!), which also specifies the interval for creating balance interval records.
*_*_profile_package_id int(11) unsigned
MT#17795:
Link to the balance interval (billing.contract_balances record) for the sake of completeness. It might also be useful for invoice generation (MT#14253).
*_*_contract_balance_id int(11) unsigned
MT#17795:
The balance interval's cash balance values before and after rating the call.
*_*_cash_balance_before decimal(14,6)
*_*_cash_balance_after decimal(14,6)
MT#17795:
The balance interval's free time balance values before and after rating the call.
*_*_free_time_balance_before int(10) unsigned
*_*_free_time_balance_after int(10) unsigned
Change-Id: Ie891fc13a3610f4cdd9a57ccc573cc395c4e3729
* This will be executed in every node in order to
be able to have different versions during the upgrade process
* skip changes to table uacreg, we don't have it
Change-Id: I5b6256f2b2942da5260ef3b32492188a4357e405
- added location_id to kamailio.contract_preferences
- granted select on provisioniong.contract_locations* to kamailio
- updated provisioning.voip_contract_preferences triggers
- added contract_location_pref to voip_preferences
- added contract_location_pref to voip_preferences_enum
- concurrent_max/out/total are marked as contract_location_pref
- emergency_prefix/suffix/cli are marked as contract_location_pref
Change-Id: I057166e69acfb2dd4900233f2e6543e93e2e2d6e
This is used to enable an LNP lookup for calls from peers using
the network-provided calling party number. Useful to write the
source_lnp_prefix for a specific number block into CDRs.
Change-Id: Ie2a60c6c62d06b688b38db45dba5843735c8981c
We need an option to force outbound calls to peer when call comes
from peer in case the called party is not local but has an LNP entry.
Also, we need to store lnp prefixes in CDR.
Change-Id: I61b3886d545b27d46f0affe8457620601b5be61a
Add new caller/callee_lnp columns for rewrite rules.
Update triggers to populate dialplan from rwr.
Populate new caller/callee_lnp columns with rwr seq numbers.
Change-Id: I6c2e6175357c06608fd28e956a9e2892f32502b3
- The LNP provider table needs to have a routing prefix
- The LNP number table needs to have a key on the number col
Change-Id: Ida7741f2806043bf55178fe9402ee4675cc539c4
The problem I am trying to solve was that the trigger MT#10199 that handles enum
preferences inserts default values into prof_preferences table for the enum
preferences with default values and these defaults become real prefs instead of
the values set by user on the domain level, while user can neither see nor
change prof preferences. This affects all subscribers with any subscriber
profile assigned.
So the decision is to have no defaults on the profile level (like we do on the
subscriber level). User can set the preferences explicitly in the profile.
Also we need to show null option "use domain default" on the profile level.
P.S. While at it, I noticed that preference 'ua_header_mode' did not have the
'use domain default' option, so I had to add it before fixing all preferences.
Change-Id: I3037b0da44bf794b11c564d61de940de27de23e2
- fix updates based on id instead of ip
- fix duplicate kamailio.peer_preferences on peer enable/disable
- fix duplicate 'transport_protocol' peer_preferences
Change-Id: I6598afbf93d1ab3bfe553f6f3de0c526e7898267
columns username and content_format added. 3 formats
for storing a resource data snapshot are supported:
json (default), json_deflate, storable
Change-Id: I8cb1fed7a5d6d01437c2129ea1b3053b2252cae9
Added as additional script to disable debug in already installed procedure,
as fixed 15167 will not run again on upgrade.
Change-Id: I9c8556187b472e4a45faf00e68b3e93f43d99965
This will be executed in every node in order to
be able to have different versions during the upgrade
process
Change-Id: I0fd2b1c858f792b233b9fea348320c7635f4ebd2