Use a real NULL value instead of string.
Additionally: update description for the preference
'announce_conn_type'.
Change-Id: I144702d0b6decfde42b075eb50399b68ed5b4818
The preference is available only for subscribers and it is
not exposed to customers or subscribers.
It contains a list of numbers that the subscriber is allowed
to call even if blocked by the NCOS. If the called number
matches, then all the NCOS and administrative NCOS checks are
skipped.
Change-Id: Id366a405efe5228405fc95419bdfc2eaddc6e69c
Kamailio proxy evaluates the preference "ignore_cf_when_hunting" only at customer
(contract) level but web interface lets the user set this pref also at domain
and subscriber level.
This leads to some confusion, the web interface user is fooled by this preference
and thinks something is wrong inside kamailio proxy because enabling/disabling
"ignore_cf_when_hunting" at dom/subscriber level has no effect at all.
Original implementation treats this option as something that must have
a global impact as demostrated by the same preference into config.yml.
Change-Id: I2ba28709dac8a3348049ad9dd5f116ce9d86d9f8
Add header=P-Preferred-Identity for cdrs, this field will
store the P-Preferred-Identity header of the initial INVITE.
Change-Id: I3a6c4a26bda18b80c9f25caf42328eab1e7171cc
Subscriber administrators should be able to configure the
preferences of each single provisioned device. Due to that
this commit set expose_to_customer=1 for all the preferences
flagged with fielddev_pref=1.
Change-Id: Ifdc4e32212aa2e948d41bcf019bf1051be6b7c7d
By mistake in commit 7aab6d290d the new 'rcv_display/np_display'
option was added to the 'outbound_from_user' and 'outbound_pai_user'
preferences instead of 'outbound_from_display' and 'outbound_pai_display'.
This fix revert previous addition and add it to the correct preference.
Change-Id: Ifed659b22dbde621fbf366092268e6416e9ad4ba
This new column will be used to store a flag (value 0 or 1) that
controls wether the CF is processed as usual (flag with value 0,
default) or generates a 302 redirect message back to the
caller (flag with value 1).
Updating also the 'v_subscriber_cfs' VIEW to add thhis new column.
Change-Id: I74e53a526810f0145e305b90c3c3bd56cf91bc61
This will add support to both 'outbound_from_display' and
'outbound_pai_display' for a new method called 'rcv_display/np_display'.
This will allow to use the received display name if available
and the network provided one as fallback.
Change-Id: Iab0335c73ea6aba883b111645abec17bfede9386
* release column is going to contain the ngcp release
version when an .up script is applied and also used
with --mode down --to-release mrX.X.X to automatically
downgrade releases to a specific version
Change-Id: I8750646eee6076bc343a0c05e5c85c137458ef92
* Add `value` to the uda_idx, to reduce/eliminate gap locs and deadlocks from
the API /api/subscribers update scenarios
Change-Id: I62feb07c4df1675771b93e2a29a2aa126a14d34a
* voip_phost_crepl_trig: enum default preferences are now always
created regardless of the enabled state, otherwise that led
to peering servers to be created without their default
not null enum preferences in voip_peer_preferences.
* fix missing not null enum preferences for peering servers
Change-Id: If8cecb5570ba876643207931ecab1e42a994a2fe
Add support for on demand recording allowing now 4
different configuration types for the 'record_call'
preference:
* 0 = never record
* 1 = always record
* 2 = on-demand record (initially disabled)
* 3 = on-demand record (initially enabled)
Peers cannot use the on-demand recording
Change-Id: I17db074ea7cd690493eb48faa335ef2bfd3a0603
* update_sound_set_handle_parents() procedure is redesigned
to avoid "insert into select from" statements as they cause
gap locks when run concurrently and access the same index
rows.
*** WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 6594 page no 6 n bits 56 index parent_id_idx
of table `provisioning`.`voip_sound_sets` trx id 400852
lock mode S locks rec but not gap waiting
the "insert into select from" statements are reworked:
the "select from/with recursive" parts are now declared cursors
and the data is inserted inside the opened cursor loop (if any).
this way the selects are not causing exclusive gap locks.
Change-Id: I35ec28a33ecca42de898e67a2709eda4364e5f95
This commit introduces a list of tables required
by the mod_callcenter module of the FS:
- `kamailio.queues` - custom table which is meant
for usage by our internal http(s) gateway
- `kamailio.agents` - table taken from the upstream
- `kamailio.members` - table taken from the upstream
- `kamailio.tiers` - table taken from the upstream
Database `kamailio` will be used to store tables,
since traditionally other components such as voicemail
server or SEMS are using it as well for storing own tables.
Hence, there is no need to create new database for FS.
P.S.: Master upstream sources of the `mod_callcenter`
were used to get the SQL schemas.
Change-Id: Id88f5b6f8d6dd3f5681034e080a763c9beaba1cf
presentity messages in kamailio.presentity are volatile,
so we copy them to a accounting table for later CDR export.
this cannot be done in mediator, since the presentity message
is emitted after the call has ended.
Change-Id: I6571023664694fef8ae4a071f658960032879c5c
When we add the peering server into dispatcher table,
we need to set his flags column to 8, in order to enable
the probing, and keep flags 0 in the other internal
dispatcher entries (lb,sems,asterisk).
Also we have to update all current 'flags' values in
dispathcer for peering server (with setid=100) with the
new value 8.
Change-Id: Ie8c07639b49dcf8963459bfe1c3cabc12233c6a4
There are 2 .up scripts that modify voip_allowed_ip_groups.ipnet
15702.up - modifies it to varchar(43)
15710.up - modifies it to varchar(46)
Because in 15710.up was backported into mr9.5 but is missing in mr10.5,
existing upgrades from mr9.5 -> mr10.5 apply 15702 after 15710.up,
effectively downgrading the column to varchar(46).
This .up script fixes the scenario and also the .down script modifies
the column also to varchar(46) to respect the previous 15710.up the
sets it to varchar(46), so to achieve the consistent state.
Change-Id: If14917ef437de3abf46b1900f68c9cc3a9a4b947
Expose peer_auth_registrar_server to usr_pref to align
the subscriber remote authentication to the peering
authentication.
Change-Id: Ib65b9b40b70dc9eb122411e27793c1f6ecb8dfc5
announce_conn_type defines what type of connection
to use in case of CF to Office-Hours or Early Rejects.
If set to 'early' the announcement is played with early
media (183).
If set to 'established' the announcement is played
after a 200 OK.
Change-Id: Idef2577f566b63ebd9f91c7c120a1761d88bf217
* foreign key preference_id -> voip_preferences.id now has
ON UPDATE CASCADE ON DELETE CASCADE, to correctly recursively
remove records from voip_preferences_enum
* all records in provisioning.voip_preferences_enum with orphaned
preference_id (does not exists in voip_preferences) are removed
Change-Id: I36950dbebefa72beb8a20d5373aeb692cb33211d
The method 'none' was added is commit 63815c948 as dedicated
request from a customer to support provisioning of phones
without ZRP.
During future changes to the supported values, in the commit
34273a837 the 'none' value got lost by mistake.
This commit will re-add support for the 'none' value.
Change-Id: Ia1b0367923b15e55c1dcfb69655bd23954033c77
* cleanup potential leftover of method_callid_idx in
kamailio.acc that was created by the "wrong order"
issue where 15761.up (replicated) was applied first
(by replication) and then 15739_not_replicated.up
was applied afterwards (with ngcp-update-db-schema)
* this solves the mr10.5.x to mr11.5.x upgrade scenario
Change-Id: I0c8dc07d84e2fc5134b7f7a05212d07bb41f031c
* use NEW.id instead of LAST_INSERT_ID() for INSERTs
into kamailio.lcr_rule_target as lcr_gw.id is now
equal to voip_peer_hosts.id
Change-Id: I5d905ddcc15cff2e72b64555a7393ec0c6dfea04
* the relation between provisioning.voip_peer_hosts and kamailio.lcr_gw
is now based on id<>id instead of id<>flags. That is to address an
issue where code/components that queries kamailio.lcr_gw
or related tables like sems_registrations use voip_peer_hosts.id
and fail because there is no such record, that also frees up
lcr_gw.flags for the intended use to define peereing server attributes
and can be used in the future development.
* adjust voip_phost_crepl/urepl/drepl triggers that maintain
kamailio.lcr_gw table state to INSERT new records into lcr_gw
with forced 'id' as NEW.id, use lcr.gw in UPDATE/DELETE and no
longer change the lcr_gw.flags column
* update kamailio.lcr_gw.id to be equal 'flags' (where flags != 0)
* update kamailio.lcr_gw.flags set all to 0
Change-Id: Ied6843ef2aaa7b25af2627797f0d57c75d8f6094
* all existing table columns that inherited wrong
'timestamp default NULL' definitions with MaraiDB 10.9+
and explicit_defaults_for_timestamp with the new default
values there (which is 1) are updated to 'timestamp default NOT NULL'
that corresponds to the expected behaviour
* explicit_defaults_for_timestamp is explicitly set to 0
in the templates starting from mr11.4+
Change-Id: Ief3477793eb271b8db3833b68d0f46690d780d33
If preference 'sip_ping_notify' is set and the user fails to reply
to the NGCP SIP ping (OPTIONS), the system will
trigger a CSTA event if and only if the reply
code matches the 'sip_ping_notify_codecs_list'.
Reply codes 200, 403, 404, 405 and 486 are considered 'good'
replies and will never trigger a CSTA notification.
Change-Id: I9639fdd2abdfb6beeb935d3c4f32e3c32d43f947
We have to add a newly introduced application server (:5085)
to the `kamailio.dispatcher` table in a role of PBX server.
Change-Id: I9a0e52489b298f4362813fa9257211420dd6c164
A new subscriber preference has been introduced to control the
behavior on a termination of call legs in the early dialog stage.
Name: `cloud_pbx_hunt_cancel_mode`
Values: `bye`, `cancel` (default one).
Change-Id: I8f14f5d70068311fa7444ea223305fd7f542d37d
* convert unique key set_handle_id_idx (set_id, handle_id)
to non-unique to avoid deadlocks because of forced gap locks
in INSERT and DELETE concurrent operations (when such occur)
* "update_sound_set_handle_parents" procedure:
- avoid IODKU and instead calculate entries to skip on the fly.
- WITH and WITHOUT u_handle_id is now split into 2 separate
IF blocks as otherwise "AND handle_id = u_handle_id OR 1:1"
caused full handles update even if u_handle_id was there
* fix a typo for "TRIGGER voip_sound_files_create_trig AFTER INSERT"
which wrongly had "AFTER UPDATE"
* fix warnings of 'Truncated DOUBLE' coming from using IF evaluation
variable as boolean, IF(LENGTH(cte.parent_chain) > 1 addresses
it.
Change-Id: Id6b6ab66de53c2ccd95f28d23e5e2b97ece89923
* the ngcp.timezone table is not replicated and hence
the script must be also not replicated.
- the script is renamed to _not_replicated
- the ALTER TABLE ADD COLUMN is enhanced with
"IF NOT EXISTS" to mitigate scenarios where
somebody manually added the column on the other node,
and to ensure that the upgrades are safe
Change-Id: Ic44f76b5f3f43ae4124cebad30d559224fa90b31
* this addresses an issue caused by 15739_not_replicated script
that when not applied on the other replicated node, causes
this script to break replication. "drop index if not exists"
in this script addresses the issue and makes it so the both
scenarios are covered.
Change-Id: I8713d38ce3c4eab76b1d0b28adc6c0bd4c8260e1
* new column expose_to_custeomr in billing.ncos_levels
* new column expose_to_custeomr in billing.ncos_sets
Change-Id: Ieecd1a5d1e84fe001b89ea7f6e53ed531d25638a
* on update_sound_set_handle_parents() call delete
orphaned entries from voip_sound_set_handle_parents
do not have entries in the voip_sound_sets
* update_sound_set_handle_parents() improvements:
- when u_sound_set_id is not null:
= delete only child entries (before, also the parent entries
were removed)
= on insert, on duplicate update parent_set_id and parent_chain
to effectively skip entries that already exist and only
insert new entries
Change-Id: Id0881d9f79ddd05bc5be67d1f181ea809e43e180
The following preferences are now available for resellers
- concurrent_max_total
- concurrent_max_out_total
- concurrent_max
- concurrent_max_out
- concurrent_max_in_total
- concurrent_max_in
Change-Id: Idac41f416ac1c46244cf09c03f335f02a6f776f7
New table reseller_preferences inside provisioning created.
The new table is liked to the already existing provisioning.voip_reseller_preferences.
This commit includes the trigger in order to reflect changes from
provisioning.voip_reseller_preferences into provisioning.reseller_preferences.
Change-Id: I4a5e36813a30d902a817b2545c80c668cbf9663b
* new table provisioning.voip_sound_set_handle_parents
that is a helper table and contains current effective parents
for all sound set handles
* new stored procedure update_sound_set_handle_parents that accepts
sound_set_id or NULL, handle_id or NULL to update the helper
table (e.g. call update_sound_set_handle_parents(NULL, NULL)
to rebuild the whole helper table)
* new triggers around voip_sound_sets and voip_sound_files
that trigger the stored procedure when parent_id is changed
or a file changed/use_parent changed
* v_sound_set_files view uses the helper table now instead of
calculating all the nested sound sets and their handles'
parents
Change-Id: Ic775c077227b22b48f7129bf002e36ce353de82f
The param has to be exposed to subscribres so they can control which
calls will be recorded. Additionally this is a necessary step to
let the subscriber's profile parameter to view/hide call recording
working
Change-Id: Ifc5a557f8bfe55e4d040f067228e568420c6479d
New peer preference introduced:
* 'peer_auth_registrar_server'
The registrar server value is to be used for REGISTER R-URI,
as well as From/To domain in the outbound REGISTER.
Change-Id: I92f9f6917daa85456031c87f45233eda8c7302de
Add r_ua for cdrs, this field will store the user agent
answering to the first invite with 200 OK.
Change-Id: I0bf768a8cd4bb712a9c0b04cd7714878e6cec259
Add r_user field for cdrs, this field will store the user part
of the Request Uri answering the first invite with 200 OK.
Change-Id: Idfc666ad108aea9791d3eae473959c382b7f9caa
During the replication the statement syntax is changed a little bit so
it ends up as diff in ngcp-db-compare-schemes.
Continuation of b0078a5c.
Change-Id: I84b1e84ef910bcc2df31d430588192105463fdfa
During the replication the statement syntax is changed a little bit so
it ends up as diff in ngcp-db-compare-schemes.
Change-Id: Id6095c90235142304bcb0432244d4cf13db74071
* there is already an existing composite index
callid_method_idx (callid,method) that covers the
'where callid' and 'where callid and method' cases. the additional
index method_callid_idx (method,callid) is excessive because
it only need to cover the 'where method' cases, the rest
is covered by callid_method_id. To reduce the disk space
and the additional sql overhead for CRUD ops, method_callid_idx
is adjusted to method_idx (method)
Change-Id: I3659ecb7062f005125f08ec5cf85c674d1abe0f5
* due to the fact that the initial script had been created as replicated
and then renamed to _not_replicated, caused already deployed platforms on
mr11.1, mr11.1.1, mr11.2, mr11.2.1 to have the index in both tables
(because of the upgrade/ngcp-sync-db step on sp2) and a missing
record in ngcp.db_schema for 'sp2' (because the script was named
as replicated initially). To further address the issue, "CREATE INDEX"
is now adjusted to "CREATE INDEX IF NOT EXISTS"
Change-Id: Ie1554bad9300da5ff711cfe53d1cc6c14f91793d
* the db scripts have 'set sql_log_bin=0' but do not have the
_not_replicated filename part. they are not renamed to have
the _not_replicated required part.
Change-Id: I78d841f5ac4c5dff7c13e292746688faecd062d9
In the process of improvement and optimization of the whole
soundset structure, it is fundamental to make the contract
soundset behaving exactly like the system soundsets.
Due to that now all the announcements are exposed to customers
Change-Id: I5da9162ed544e69336e954d9257a180898157014
* add provisioning.voip_sound_sets parent field, that is null by default
and can be set to another sound_set id to indicate it as own parent.
* add provisioning.voip_sound_files use_parent field, boolean not null
default 0. this field defines wether parent sound sets should be
used for this sound (default yes).
* add v_sound_set_files view that returns an accumulated
representation of sound files available for sets for all the
available sound handles.
Therefore "select * from v_sound_set_files where set_id = 3"
returns all available sound handles and the filename and data columns
containing the according content either from the current sound set
or from first parent that contains a non empty filename and data,
or until the sound set (current or parent) with the use_parent field = 0.
* parent_chain virtual column contains a ':' separated chain of parents
used for the sound set.
* data_set_id virtual column contains the sound_set that was used for
the sound data or null if there is no sound data.
* voip_sound_files update index from handle_id_ref (handle_id) to
handle_set_id_idx (handle_id, set_id) for optimised behaviour
of the v_sound_set_files view.
* add provisioning.voip_sound_sets expose_to_customer field that
enables the sets to be used by customers.
* update provisioning.voip_preferences 'sound_set' attibute with
expose_to_customer = 1
Change-Id: I06fb384d911cfe1d2ffe7be8fd2ba8d80468662f
If any user depends on the previous format for mono Opus, this makes it
possible to preserve the old behaviour.
Change-Id: Ib0587585278cf143046b1210e93c6f8230b81749
The 'enable_t38' preference was added long time ago to
provision of phones that support fax services with t38.
We don't support those devices since long time.
Additionally the preference creates confusion with real
subscriber feature of enable t38 for mailtofax/faxtomail
service.
Due to those reason the preference can be removed.
Change-Id: I05b0f353eff9dcc6d57f51c6a32a6756f692d29d
This preference was created long time ago to support
the automated provision of a desktop jitsi client.
The feature is not used and most probably not working
at all since we don't support the jitsi client anymore.
Change-Id: I4592b8130a26adec04352af00bdbea939f3d2aa0
The feature was never really used and no customer is using
it at the moment.
Removed from the DB the following
voip_preferences:
* dialogic_mode
* dialogic_ip_rtp
* dialogic_ip_config
* dialogic_out_codecs
* dialogic_ss7_opc
* dialogic_ss7_apc
* dialogic_ss7_dpc
* dialogic_nfs_server
* dialogic_nfs_path
* dialogic_snmp_system_name
* dialogic_snmp_system_location
* dialogic_snmp_system_contact
* dialogic_snmp_community_name
* dialogic_ip_snmp_manager
* dialogic_use_optical_spans
* dialogic_is_isdn_userside
voip_preferences_enum:
* dialogic_mode
* dialogic_out_codecs
voip_preference_groups:
* Dialogic Settings
Change-Id: I5c483ffc61728fc2de7134d4ebd84593955ba184
The preference is used only for device provisioning
to give priority to user changes over the automated
provisioning coming from the server.
Change-Id: I65bb0b90b80e11aa34f7b56019f0b57319678cc0
Activate profile preferences to all the options already
available for both subscriber and domain.
Extend 'music_on_hold' and 'clir_intrapbx' to be
domain preferences.
Add 'ignore_cf_when_hunting' preference to subscriber
role.
Fix and update 'expose_to_customer' and 'expose_to_subscriber'
columns to properly expose what is necessary for each
role and hide features that should be activated only
by system administrator.
Change-Id: Ia0aa8f9f10dc1bab47ff8b9ccfc90c2741e988e0
* ringtimeout is now internal = 1 as this preference is dynamically
changed by CFT call forwards and is not meant to be usable from the
UI/API
Change-Id: I6c2abf94e455cf50cdbc6cf7122844582ba6bbb4
* expose_to_customer is now set to 1 for 'cli' preference so that
subscriberadmin users can access it
Change-Id: Ia661a7095457bd0fbf6eab5c74cd17eb224d7c3b
* expose_to_subscriber is a new preferences flag that
indicates that the preference can be read/modified by
'subscriber' role
* expose_to_customer now only does the same as expose_to_subscriber
but for 'subscriberadmin' role
Change-Id: I4b38ac5653e7132510354de4fd8b72d010d0ff68
* ncos_sets table contains a list of ncos_sets
* ncos_set_levels table contains "many to many" mappings
for ncos_sets and ncos_levels
* add ncos_levels.time_set_id column (default null)
Change-Id: Ib46fe46bd75ef13b8375961c93f586281f28866d
This reverts commit 1631573453.
The script is actually a one-time only script, no need to re-execute
it again, instead it fails to run due to:
| Applying revision script /usr/share/ngcp-db-schema/db_scripts/diff/15743.up: ERROR 1050 (42S01) at line 4: Table 'autoprov_firmwares_data' already exists
| failed. :(
Change-Id: I75ea1a0ce86064113032844a9ff4fc8a2b0af7cd
In git rev a9c1cf4cb we had to take care of adjusting the offset
variable to support MariaDB >=10.6 in the existing diff/15301.up script.
So that also existing installations receive that change during upgrade,
let's provide the according script which re-creates the
split_autoprov_firmware_data stored procedure.
Change-Id: Iae9634b39bda9f1ad63b2b6093f2e6095f68fc45
Thanks: Kirill Solomko <ksolomko@sipwise.com>
Fixes:
| Applying revision script /usr/share/ngcp-db-schema/db_scripts/diff/15301.up: ERROR 1064 (42000) at line 14: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'offset int;
| DECLARE chunk longblob;
| DECLARE done int DEFAULT FALSE;
|
| ...' at line 4
| failed. :(
This is caused by MariaDB having "offset" as reserved word, quoting from
https://mariadb.com/kb/en/upgrading-from-mariadb-10-5-to-mariadb-10-6/:
| New reserved word: OFFSET. This can no longer be used as an identifier without being quoted.
Now that Debian/bookworm includes mariadb-server v10.6.10-1
we need to rename the variable.
Change-Id: I9db699ef60259411b8b79305f08179d4989edcd2
* the new table is to contain data for customer speed dials
(that affect all subscribers under the customer)
* triggers that replicate the data into kamailio.speed_dial
Change-Id: I0bc175e0ede7fa79b296c83a7f0d512b03c74aab
rtcengine product has been discontinued already since mr10.5.1
so it is useless to keep the database in the system
Change-Id: Icdf06c8d9de9a0236a5fc87b645d698952db3b44
This reverts commit 5f34f84b04.
Reason for revert: upstream provide us with a solution that doesn't need a kamailio change
Change-Id: Ifdb7f8c55f27498a880cc35a104e20472e6e69f7
This modification enables the get uri related to a speed dial number for a group (with 3 digits - *999).
It gets the new_uri from the table speed_dial using the group_id, the sd_username and sd_domain.
Change-Id: I629c2b5e35b53ee21a1e3a67df7a66f095da9db4
We have to concern slow selections like this:
"SELECT a.callid FROM acc a WHERE a.method = 'INVITE' GROUP BY a.callid LIMIT 0,200000;"
which can take procesisng time over 10 sec (as reported in the WF ticket).
As a simple solution, we can give an additional index to the 'acc' table:
KEY `method_callid_idx` (`method`,`callid`)
Which will give us an indexation on selecitons with the WHERE clause on 'method' column.
Without the index (explain of the selection):
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: a
type: range
possible_keys: NULL
key: callid_method_idx
key_len: 817
ref: NULL
rows: 2
Extra: Using where; Using index for group-by
With the index (explain of the selection):
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: a
type: ref
possible_keys: method_callid_idx
key: method_callid_idx
key_len: 50
ref: const
rows: 1
Extra: Using where; Using index
The newer index is not to be mixed with the previously existing one:
KEY `callid_method_idx` (`callid`,`method`)
Change-Id: Ie8a4ab102adb8788d9e273bd5a9edf1ddbb702bf
In order to introduce the new 'fax=' prefix, we have to update
the already configured CF destinations to fax2mail, and prefix them
with 'fax='.
Change-Id: Id09886932ba3246b7e10b36fb4f3f50c61139c7a
New index for watchers table for columns "inserted_time" and "status".
This is a little performance boost since the function
ps_watchers_db_timer_clean() cleans pending subscriptions
using this columns inside the "where" clause.
Change-Id: I9cb2220f6fe89aa2070d9a739c4a3a0417e3de71
Remove 'serial' from the label and description of
'cloud_pbx_hunt_timeout' as this preference can now also
be used for parallel groups.
Change-Id: I66a51a5dddd9b872d97b2ec3de36ce79524abce6
Improve description of ignore_cf_when_hunting
explicitly stating that this preference
only affects members of hunt groups when called in a hunt group context.
Change-Id: I0cfb0f8187e18f2771055866879363ee0dd4a050