* 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
* the system status widget is disabled because
it contains static "OK" values. will be reenabled
once the values represent the actual system state.
Change-Id: I4dbdb64d423911e5a40f0d36e9fb769e0c1424f1
* add a check in Subscriber::apply_rewrite that
the provisioning subscriber object exist,
to address cases when a subscriber is terminated
Change-Id: I1ad16f448c4efcf80eedb08ef3f6c014769ff5fd
It works well now for Panasonic, Polycom, Yealink
Snom works (403 response) if change current host
provisioning.snom.com to
secure-provisioning.snom.com
Without this change we need to disable name checking, and then the same get 403 response code with short html description (so, ssl works).
Change-Id: I1743d2dcb33557a7cf9898aef56f00074b9141a2
* subscriber_only UI header rule set is now
automatically created only when a first rule
is created and removed with the last rule
Change-Id: I7c0be5a3e89e050e97441c4baaf355769db9867b
* Adapt code to retrieve file type from header,
not only to expect WAV, and convert it to WAV internally
* Add support for multipart/form-data requests for CSC platform
Change-Id: I12dca611a23c90801b1faae269a55b9fcc895244
And also fix description for Location creation form
All Customer controller fix implemented a little out of common way to handle customer detatils forms
Forms on customer details page use common code on the bottom of the customer/details.tt. Phonebook forms use helpers/datatables forms related code. It allows to avoid stashed "description" parameter, that is totally related to View (template) and generates correct name for the edit form.
Change-Id: I2a16d6861cd2d847f68bd02245058c9a4535a0a9
The is_devid and devid_alias were not properly saved and re-loaded
in edit, nor was their status shown in the master data.
Change-Id: If3403b5baa6135b4171e7b523aaa56de0fc5cb10
* Change find_or_create to find_or_new to insert new record
only when a POST is issued and form is validated
Change-Id: I31149c50f543747468230355b7f97d8f02fb47e8
* update subscriber preferences after providing
a new header rule set
* add header rule exception in preferences GET
to retrieve the name, not the id
Change-Id: If0368b3b776d0f87c6e2c775c9f7ead4524a0854
* API SoundFiles transcoding error is now handled
correctly
* Fix cases in Role/API/SoundFiles that used
last instead of return
Change-Id: I2636d654b3b405645761dda834c8215514bf50e2
* UI: subscriber Preferences" page now contains
a new "Header Manipulations" tab that enables
setting header manipulation rules per subscriber.
They are applied in the following order:
- domain header rule set is applied (if defined)
- subscriber header rules are applied (if defined)
An internal header rule set is now created per subscriber
automatically, if used from the UI
* API: /api/headerrulesets now supports "subsriber_id",
when a whole collection is fetched without ?subscriber_id
only records where subscriber_id = NULL are returned
by default
* fix "read only" UI elements representation in the datable
for header rule sets, rules, conditions, actions
Change-Id: I3e80d1899c577055f3603e80bb3a13d70c5b22cf
* header manipulations related endpoints are now
rendered with the datatables and support pagination,
and search
Change-Id: I264d2c55ec97199714159bbc2d1d3181e23880fb
Firmware, Directory and config Must be served with cisco-ca signed cert,
so use proper port for this.
Change-Id: I18fecdacf4989aac9f7c033c562e6f0f20dfe454
In case custom "Bootstrap URI" is set and http sync (like for Cisco) is
used, then use this custom bootstrap uri during manual sync.
Also when using http sync, use the bootstrap URI instead of the config
URI to resync phone, as you don't know at this point whether the phone
has a recent firmware to connect to the server, or has to update
firmwares first.
Change-Id: I90b3393060a91619bb5957ed8ec03fda81411a2e
Since Cisco SPA requires a specific server certificate, we have
to bind that interface to a separate port. Use 1447 by default for
it.
Change-Id: Ibfd3301f222cc77b4736935aa7b641ba18d9ac60
PATCH "remove by value" will from now remove values even if provided hash has less keys, than original value
Change-Id: I2ee04fa279580d662e167c3a0b160fe29d8d79ef
We need to detach in chain base, otherwise chain tail will access
undefined dev variable from stash and will produce a 500 server error.
Change-Id: I9ac5d18b365efd2390cb2800ec5adadd4992e989
when passing the ?tz=Europe/Vienna with POST/PUT/PATCH, the
callforward timeset period definition input will be converted from
Europe/Vienna timezone to system timezone before persising to DB.
when passing the ?tz parameter with GET requests, the
callforward timeset period definition from DB will be converted
to the given timezone.
the ?use_owner_tz parameter will take the subscriber's inherited
timezone.
disarmed in code for now.
Change-Id: If4e130b241c28821844e0700231d1cd6883bcbfb
* sound_sets are now allowed for peering hosts
and since peerings are not bound to resellers
and only managed by the administrators of the platform,
it is possible to set any soundset from any reseller,
the only limitation is sound sets that are assigned to
a contract cannot be used for a peering host
Change-Id: I438395d989dbc917bef2ad87d1c80201722fa247
* kamailio does not accept non-sip tcp messages with an empty body,
therefore, also sending the invalidating set_id in the body
is correctly processed by the kamailio endpoint
Change-Id: I4e4f04bd5279e6f7e39f947d54e656737f81e0e5
The javascript files contain UTF-8 characters, but the files are sent
without a proper encoding set in the Content-Type header.
Change-Id: I5df0b854a4d9e8525bf02ec394f9e6264800b2db
Signed-off-by: Guillem Jover <gjover@sipwise.com>
All forms that use field_list to really generate new fields, based on input, can't be cached.
Now such forms are only
- NGCP::Panel::Form::Preferences
- NGCP::Panel::Form::SubscriberProfile::Profile
Change-Id: I0d5792d17a516b7943a1906c9d497b5a34e713e8
* fix relative path use in billing zones ajax
causing an error when rendering the datatable
* fix BillingFee form field to correctly
capture ajax datatable billing profile id
* fix typo when stashing billing_zone_id
* move billing zone datatable fields
from base to zones_list
Change-Id: Ibbeb776a3bc6bfb26798fc13c1183ddb68a9d2fd
- All item_rs modifications should be done before we get rows, so apply order_by before pager
- We can't distinguish if subscriberregistrations really has column or not if we return true for all columns.
We will use has_column only in cases when it returns something really meaningful.
- Subscriberregistrations can't order by nat and subscriber_id
Change-Id: I04b7bb719ee058590a7705c6411cb08bcfb15387
Move strange reseller prefetch upper, that looks as not intended copy-paste
Now this query with prefetch will be used for pagination too.
Change-Id: Ie23d2a574e352754d57e1f67d081943aaef50aea