* Deleting or diasbling a peering server was leaving
the peer_probe value in kamailio htable which was
falsely identifying peering server as up when it
was actually down
* Sending htable.delete peer_probe whenever deleting,
disabling or disabling 'probe' for a peering server
fixes the issue
Change-Id: Ie54fd4bd00391a0cc02544d8d7b55108240c74e8
complete the renaming of "sub rowlock_contract" into
"sub acquire_contract_rowlocks" to distinguish it from
"sub recursevly_lock_contract" (which is related to set
the subscriber lock level, not db row write locks)
Change-Id: I287ee611e20c71a90121007511c3781359968bd2
acquire the billing.contract row lock *before* any
unordered billing.voip_numbers rowlocks by
sub manage_subscriber_numbers().
- "deadlock" waittimeout errors will cease when
creating subscribers concurrently via api
- max_subscribers, is_pilot and other per-contract
constraints will be respected accurately
Change-Id: I73bb7525b327bbb09217b790be9c14cc65ddebcc
* Obfuscate nubmers from the same customer which have
CLIR enabled if calllist_clir_scope is set to 'all'
Change-Id: I1953cb760fec5b4921adb2b3c25b7a2a2d2605a7
* A new endpoint is now available that will
return subscriber's preferences and also
the preferences that the subscriber inherits
from its domain
Change-Id: Iaa29fbe57d520f79ac7051dc8fd151d26df41384
- prevent unneccesary redis "scan"s
- avoid filter/scan (iterating all registrations) by properly
un-aliasing filednames
- ignore any registration of subs that no longer exists
- apply the fixes for ->search(), but also ->find()
Change-Id: I32c89482fc06e76b0369034cd8f3eda24ebbe1bf
* Implement checking/creation of server, profile
and prepare request for device creation on ALE
RPS
* Prepare request for device deletion on ALE RPS
* Changes in Panel to support provisioning via
the ALE RPS
Change-Id: I24b62c03b64c56fcbcabea71428d0b70b46706e6
This program allows to run a 'provisioning template' defined
in config.yml. This will produce a subscriber setup including
required billing contact, contract, preferences, etc. from an
input form defined by that template. The form fields can be
passed as command line options.
Change-Id: I9e155c5ad192937b859f0df97e206c1192e88770
* Default to 1 if no 'enabled' param is sent
* Send mapping's 'enabled' value to UI Form
to stop defaulting to 1 when trying to edit
Change-Id: Iec22f878bd87999c85a0cc99eabcda68fd7f2985
* Add check wether recording stream actually
exists, to prevent throwing error in case
there's a DB entry for the stream, but no
actual file is saved
Change-Id: Ibd051496f570f05ca7067dcaa9f2f9e85e5d84d6
* Introduce posibility to provision header rules,
conditions and actions at the same time
using only the /api/headerrules endpoint;
also rules can be modified with PUT/PATCH on
/api/headerrules
Change-Id: I5ef9a85b4bf0f28693d22603cc74f269ea483983
* Introduce posibility to provision source sets,
time sets, b number sets and destination sets
in the same request with defining call forwards.
Change-Id: I8dd426bcf50a605e257af5e62ca404884bfe9c0d
* Introduce posibility to provision rule sets,
rules, condition and actions at the same time
using only the /api/headerrulesets endpoint;
also rules can be modified with PUT/PATCH on
/api/headerrulesets
Change-Id: I8c054f72a2632d45fec76166774521f8c22aea05
Allow reusing previously created NGCP::API::TestFramework object for
running a new test scenario, while using previously collected data.
- Save 'retained' variables inside module $self object.
- Move 'unique_id' generation from the module to wrapper script.
- Allow rewriting of 'file_path' object.
Change-Id: Ie961f7d0fb34f71e04353125e026ad00715efe91
Make new 'ngcp-api-testframework' package with module:
NGCP::API::TestFramework
Move the module source from t/api/rest2/lib/ to lib/
Change paths accordingly in module files.
Change-Id: I7a4b08ecac1059533628771ea4faf2eb10dba41f
The kamailio lcr.reload RPC command was executed before the gateway
were actually removed from the DB.
The execution has been moved afterwards.
Change-Id: I5c514744cf49a4a32f2a8f08dc8f2a45c0b3c87a
If this attribute set to 1 (or true for backward compatibility) - the
cookie send by the server to the client will got the secure flag that
tells the browser to send this cookies back to the server only via
HTTPS.
Change-Id: Ia99bf2187965893d14f7fed7f7c11c0b016aea53
* Week day number was previuosly restricted to
a certain format because of JS failing to
parse other formats an this caused it to
fail on empty value; adding empty values is
now possible
Change-Id: I14d2b9627b7082821d80fe51bf6021461bd5f961
Even if kamailo supports negative q-value it will handle them
as positive one creating confusion in customers.
Change-Id: Ia74f798c48191af1aacca5660448b664883b9860
The value is taken from the kamailio location table and
it is useful to know which is the device with highest
proiority.
Change-Id: I978c7d8da48a84fa537c941e486016881fc03afb
* Change condition that was defaulting to
one banned user in case of looking by
a non-existent id; it now returns empty
array which is causing the correct
'entity not found' error
Change-Id: Id3191ae78e7804fb62420bf15b292207c087234d
* Add the new fields to the Billing fees form
* Add the new fields to the csv order for
download and upload to work
* Change tests to include the new fees fields
Change-Id: If45bfe4f39ccd0283c72071489f5930eab2c37e9
* Change datepicker to datetimepicker
to be able to select time as well
* datetimepicker is now available only
for call lists since this is where
a more thorough filtering is needed
in case the limit of 1000 entries is
passed
Change-Id: I48107fa8f7c4d4ee9b40044c8ae5f7842e35c2a5
* Check if there's a terminated reseller with
the same name and update that reseller's
name to be of "old_<reseller_id>_<name>"
format then create new reseller with that
name
* Applies to both regular creation and default
values creation
* Added same checks to API too
Change-Id: If997cf3716341c5c78bc6879ddea53f7b502c305
* Change DB fetch to get reseller based on
subscriber's customer rather than domain
* Added check for existence of field before
filtering by it. This was actually causing
non-superusers to not see registrations
Change-Id: I7bd39dfcd24a2bc8793a49ba58ab4b2f49f4c821
* Add validation for 'By week day number'
field because if set incorrectly, JS
would fail to parse it and the events
list would get stuck
Change-Id: Iac3ef0635e3728af9b900e68cc21ad0de60d0da9
* DBIx could not resolve the relation 'rwr_set'
when post processing hal resource because,
if not 'rwr_set_id', parameter is sent, the
field is not set in the DB
* Add error message when sending 'rwr_dp' param
with no 'rwr_set_id' which was causing error
as well
Change-Id: I90c2d5314b9e8a5389cc606bb0be72533614f8d5
* Only allow to assign domains for subscribers
from the same reseller as subscriber's customer
* Change Subscribers.yaml test to retrieve a
domain for testing from the same reseller
as subscriber's customer
Change-Id: I6c7cc7a9874207cfcd63360a6f87e2fd6841011c
* Removed restriction that would cause an error
when trying to get/delete a bannedusers entry
that had a different format than 'user@domain.com'
Change-Id: Ie3a5fa80b888d97bf4a34a8ad9a65514699ef77e
Let's encapsulate the knowledge about ngcp-collective-check into the
same perl module, instead of leaking the implementation details in
multiple places.
Change-Id: I3efe0b9704f9c149dae50bf4d323853b819127c8
* Create new 'Select' field type that includes
'translate' attribute which shows is a field
should be translated
* Change fields that should not be translated
to the new field type
Change-Id: I723e82e609a7b4fc879e4fe708227c012cba1923
* Retrieve statistics details from
ngcp-collective-check
* Restore statistics widget to display
either "All services running", "Errors"
or "Warnings" according to collective-
check result
* Create pop-up modal to display ngcp-
collective-check results
Change-Id: I094a51ad1905d2bf968775dd43480c94a7a440b8
* Change sql 'or' which was still in use
when filtering with customer_id to
'union_all' which changes order of
status from enum to alphabetical so
it's now consistent to what happens
when filtering with subscriber_id
Change-Id: I82eea0059d6b414e1148b16d47d4c189a3f43238
Ideally we'd not pollute the Catalyst namespace, and instead would use
our base NGCP namespace, but at least for the EscapeJs module having
it there makes loading it easier as it requires integration with the
Template::Toolkit engine.
Change-Id: Ide3f723fb3becbf49c405d9b34eb464fa7f8adbd
* Controller/Domain missed privileges for
ccareadmin/ccare roles
* Fix ccareadmin role typo in customer templates
preventing "Create Susbcriber" button to show up for the role
Change-Id: I05bb520912ad0f1f49a0097d7443081d40aa7426
when there are other subscribers
* Deleting the pilot subscriber and then editing
other subscribers would result in error, as
details from the pilot are needed
* Added code to makde the deletion of the PBX
pilot subscriber impossible if there are
other subscribers
Change-Id: I46da3e0e3726a8b9e3811fd879869988aa01adff
* The username field for PBX subscribers
was of plain Text type; changed it to
+NGCP::Panel::Field::Identifier which
has proper validation
Change-Id: Id1eb740067f389df3a41accedd20ee853f8f215d
* Added 'received' field in subscriberregistrations
form. Also if it's present in the 'path' field,
it is now fetched from there.
Change-Id: I187ea2a0494b067088e08243488321cb0140ea61
* If a device id is assigned to a field device line, populate the
device_id field for this line to be used in config templates.
* Handle assigned alias id of deviceid_number_id in /api/pbxdevices,
if any.
Change-Id: I455c4cb6e7d96a21977094e9af97ae91bd29fb92
* Add check for provisioning subscriber
webusername so the API trhows the correct
error when encountering a duplicate
* This implementation relies on the DBIx
error to keep the database integrity
Change-Id: Ica3e2673cead28759ad25f5edb3f7ca0f32e1c1e
* Ajax request failed when vouchers was
not set in ngcp_panel.conf under features
because it redirected to denied_page;
moved redirect to topup_voucher method
in Customer.pm because it doesn't work
on ajax requests
* Also hide the top up voucher button if
voucher option is not set under features
in ngcp_panel.conf
Change-Id: I888ac46e9634d75163241cdb4b59b00a2ca08b2f
* ccareadmin and ccare roles have full access to
Customers, Subscribers and their preferences/settings,
and read-only access to BillingProfiles,InvoceTemplates,
EmailTemplates
* ccare role is restricted to the related reseller
Change-Id: I6cf7d3adf912f0fa98d1ef5c02abea2f4331ec4b
* The timeout was defaulting to 300 for
any call forward besides URI. Removing
a sepcific validation for this case fixed
the issue
Change-Id: I2658d77cee08567047c40fb2b3711f5870b49d25
* make search by domain strict when redis usrloc is enabled
and multidomain=1 to omit entries without domain and
vice versa, omit entries with domain when multidomain=0
Change-Id: Ia64c87596ea02b9e5dcc9789751a639ef0c6a0b7
* Kamailio location accepts location based on
ngcp_panel.conf: sip.usrloc_expires_type option,
that is taken from config.yml
kamilio.proxy.usrloc_expires_type.
* adjust api-subscriberregistrations.t to support
sip.usrloc_expires_type
Change-Id: Ia040c63ef2e0cc711812f4a4d17093ae753531aa
* /api/customerfraudevents now support cdr_period_costs
* add PATCH support to be able to change notify_status and notified_at
* item id is now compound from contract_id,period,period_date
* now all locked contracts are returned (was only for current
day/month before)
* interval query param is not mandatory anymore and multiple
entries per contract can be returned
Change-Id: I9faa911d260f3e3cd386fb1470663a82edb2850c
* _item_by_aor search now includes redis usrloc
state as well as ignore_auth_realm (multidomain)
to build correct search queries in both redis
and db locations
Change-Id: I5c08a299c88592c63f3778dd0cf384a56cde3316
for administrators with disabled 'show_passwords'
* Add check in master data edit form to disable
web_password and sip password fields.
* Add check for api GET to not show passwords
Change-Id: Icf95cddc07982a698c893661b529e7542002ec60
If a device needs the CA cert to bootstrap, then provide the full
chain of certificates for proper validation.
Change-Id: I62eb0adfa3fba8c558ac244f1cc10189de94ec64
ALE terminals request config.$mac.xml, also strip them in the
bootstrap phase to determine the $mac.
Change-Id: I1a34ce5b0f0ffa4fd5f819b276344bff43a53d64
for panel UI datatables such as callhistory, automatic rowcount
clipping comes into effect, to prevent pageloads taking minutes
with large calllists.
the clipping also requires special handling of any queries
with an OR clause, which we explicitly expressed as compound
queries (set operations eg. UNION) meanwhile (fortunately!).
this allows to improve the query speed in such cases, by injecting
the filter condition to each subset query.
when introducing this technique, it was clear to sacrifice
ordering of the result, since sorting is pointless when merging
clipped subsets with UNION. allthoug the UI provides a subtle
hint whenever clipping occurs, this is not intuitive to users
(what else).
this is an attempt to improve the situation by applying the
order clauses to the subsets. this way eg. the initial sorting
(timestamp descending) of the callhistory datatable should show the
recent items properly and effectively clip away the older entries.
Change-Id: Ia249e96ac4330cfcdb4905ce2cd0b925aace80f4
* switch from Moose to Moo reduced memory consumption
* rework RedisLocationResultSource to use AUTOLOAD
instead of creating accessors in BUILD (that is very expensive
considering the amount of rows, multiplied by the overall amount
of entries). Now the object creation takes sub 0.0001 sec from
0.017 sec as before.
Change-Id: I9917ff38266ce89297adf55d75c40dd5f16a435b
the client cert serial was taken from epoch time in secs.
if a computer is fast enough, there is the chance a
subsequent POST /admincert did not invalidate the old cert
properly (as expected by api-cert-auth.t), but created an
identical one.
Change-Id: Ifd906489029efd17df0997c5aceec3ac1db08fb1
* PATCH by value when it is an ARRAY
now iterates backwards through the current values and
it iterates as:
for current_values
for values_to_remove
instead of:
for values_to_remove
for current_values
to preserve indexes order
* check and avoid situations when indexes for removal are
added multiple times, by marking already added indeses for removal
Change-Id: Id50c5ea08ad0f7c626a6b23b288e6d008a19696a
* elements must be removed reversed so last index is removed first,
otherwise the list "for removal" becomes out of sync with the
"current elements" causing wrong values to be removed, or an
out of bounds index array error
Change-Id: I9ab9bce8205169bc7841c51f37743ab17946cc11
adds gdpr obfuscation quoting for:
+ subscriber numbers
+ subscriber ip addresses
+ subscriber usernames
+ any logmessage "DATA": query parameters, form data, response data
+ subscriber uuid's
+ call id's
+ callforward sip uri's
the quoting is centralized by $c->qs() ("quote sensitive"), using
catalyst plugin mechanism.
escape symbols are set to « (\x{ab}) and » (\x{bb}).
generate_logfile_data_inventory.pl was modified to mark loglines
with "gdpr affected" status, if $c->qs() was used in a log message.
Change-Id: I0f42d7992594232ae33e5666b0a64009211c5b76
* Fix obfuscation in /api/conversations.
Suppresion columns were not retrieved
accordingly because of the need of
suppresion aliases. The issue was solved
by caching the aliases in the stash.
Change-Id: I5b438585fa6538085d4615dd1b98ab08bfb2ffe6
* due to Net::HTTP internal responses handling when
keep_alive is enabled that causes connections that
send an empty body back entering a blocking socket
read scenario and breaking the connection.
Change-Id: I9bb691299012f8e6b943a56e080edf7f73f827f1
* Add validation when retrieving callflow
domains from config. This prevents the
panel from crashing when features like
pbx are not enabled
Change-Id: Ibe459c7c877d9fdcbc941dcd92e3708b5a1d9b1f
* Store provious value for admin flag
for subscribers because form field
validation was deleting it because
it is read-only
* Fix DB query that was causing error
Change-Id: Ib73b76c2b912c687da1b1c9ea346541b0b32c3a9
* There is now a PATCH method for soundfiles so
their details can be updated without uploading
a new file
Change-Id: I96e7b453b9830c40d24c15f5ca364021373dfdee