- a new feature, "Peering Overview" under the "Tools" menu that
shows a consolidated table of peering rules, peering groups and
peering hosts with a quick links to the related edit dialogs
- added a group selection for "peering rule edit" dialogs that
enables a possibility to move a peering rule into another
peering group
- changed the "back" uri in the "peering host" and "peering rule"
dialogs to return back to the previous uri instead of forcing it
to /peering, that is needed to call those dialogs from
/peeringoverview and then get back to the original uri upon
completion
- dynamic columns support
- separate outbound and inbound peering rules respresentation
- export to "CSV", also with the "Search" filter support
- add dynamic column join detection excluding excessive joins
if no related columns are selected
Change-Id: I71b4c62c4583989baacfc166f08e965c4464e4b2
- mask (anonymise) the caller if source_clir is enabled and the auth
role is non-admin, and the call is not inside the same customer
- if source_cli is "anonymous" try to use source_user@source_domain
as the caller and in case if the "domain part" is used check and
mask it if the auth user is non-admin
Change-Id: I835679ed7a2a0c070542fbd9a625fed7ffe2d71f
Only use request param "q" for filtering firmware versions. Otherwise
devices which attach a specific verstion to the download url will not
find the latest/next version.
Change-Id: Ibd92de4c73ad20cc5a0e06f185171fff370ceaf6
the factory Catalyst::ActionRole::HTTPMethods action role
is set for any action, and in race with our own
NGCP::Panel::Role::HTTPMethods. the testcase could have
been misleading ever since, as it uses DELETE /api/customers,
which was present when implemting the method override initially,
but dropped on the road to 4.5.
the issue is resolved by overriding
Catalyst::Controller::gather_default_action_roles.
until the class hierachy refactoring is completed, only
consistent way is to add the override to each api controller.
the action_roles config attribute can therefore be
removed.
using Plack::Middleware::MethodOverride as an alternative from
upstream has the drawback to work only with POST. but a required
usecase is to also support translation DELETE requests to PATCH.
Change-Id: I204ba59869a8327bdd5db8a867fbbb061d1c9e7c
This avoids having to look for the customer with the last customer
id and click Details there, rather than now having a direct link.
Change-Id: Ie7688607cf29ed7eb6c4e52bd42244730be783de
It's fine to remove read-only fields only if $run==1, but in any
case remove unknown fields.
Also the force-array change broke additional tests, fixed them.
Change-Id: I48ffcf201bd1eedb8fb317f1ca248af9e4a01e60
- including the desired sorting by call leg depth
- "... order by length(call_id) asc, start_time asc;"
seems to cover the call flow sceanrios.
Change-Id: I294c27985627bea6a9acdaff8aeedc84e365c34e
Also take into account latin1 characters when calculating number
of parts for billing, because SMS uses some special derivation of
latin-1 and can therefore encode certain chars without the use of
UTF-8.
Change-Id: Ia7f02a3cf96040e5ad23da9037d05422beecea74
OR-part must go into parantheses, otherwise $c->user is called
on an undefined $c if $c is not passed in.
Change-Id: Iebc07eb19ae306c61fbcfd39f35325b3c69d2bc4
Admins can use this to generate a new ssl client certificate package
in ZIP format containing a PEM and a P12 cert, the same way you can
do it on the admin panel.
Admins can generate that for themselves in all cases, or for others
if they are master or superuser. If role is reseller, then masters
can only do this within their own reseller.
Change-Id: I32d5c1b5af5324d1c80b34bacecd7f2665cd91c7
Took the Utils/SOAP.pm from ossbss Backend.pm and adapted
for ngcp-panel usage to properly type the response elements
in accordance to the WSDL.
Change-Id: I8d8011b5ff256c65469a006d4e0c76467a2325a5
For the migration of the admin pwd, the logic is as follows:
1. If the admin has a bcrypt password already, use this
2. If not, perform auth via md5, then clear the md5 column
and write a salted bcrypt hash instead.
For dropping the ssl client cert, we simply not store anymore
the client certificate in the DB. As a result, you cannot
download the certs (pem, p12) after creation anymore, so
we immediately download the two certs in a zip file after
creation.
A cost of 13 takes 500ms on an i7-5500U CPU @ 2.40GHz, which
seems to be a reasonable value.
Change-Id: I1ce21321c58d8c57d7ddce1541995f64821b0053
Except for greek characters, which are available in the
GSM 03.38 encoding but not in latin-1, all other latin-1
characters can be sent with coding 0 (7bit).
We neither support the € sign available in the GSM extended
encoding, but for unknown reasons the rest of the extended
char sets (which are part of ascii anways) do work.
So, no € and no greek chars inside coding=0.
Change-Id: Ia87e337772e126b6a0a95b53acba0a369b71e660
ngcp-panel fails to start up on Debian/stretch based systems:
| ngcp-panel[1471]: Starting NGCP-Panel Webapp:Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?:{\s*)?<!--{ <-- HERE |}-->(?:\s*})?/ at /usr/share/perl5/NGCP/Panel/Utils/InvoiceTemplate.pm line 105, <DATA> line 1.
| ngcp-panel[1471]: Compilation failed in require at /usr/share/perl5/NGCP/Panel/Controller/Pbx.pm line 9, <DATA> line 1.
| ngcp-panel[1471]: BEGIN failed--compilation aborted at /usr/share/perl5/NGCP/Panel/Controller/Pbx.pm line 9, <DATA> line 1.
| ngcp-panel[1471]: Compilation failed in require at /usr/share/perl5/Catalyst/Utils.pm line 309, <DATA> line 1.
| ngcp-panel[1471]: Compilation failed in require at /usr/share/perl5/Module/Runtime.pm line 317, <DATA> line 1. at /usr/share/ngcp-panel/ngcp_panel_fastcgi.pl line 4.
| ngcp-panel[1471]: error ... failed!
| ngcp-panel[1471]: failed!
Minimal example:
% perl -E 'm/foo{x}bar/'
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/foo{ <-- HERE x}bar/ at -e line 1.
% perl -E 'm/foo\{x\}bar/'
%
This is new behavior as of Perl 5.22 (and we've Perl v5.24.1 on
Debian/stretch), quoting
http://search.cpan.org/dist/perl-5.22.0/pod/perldelta.pod#New_Warnings:
| Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%s/
|
| (D deprecated, regexp) You used a literal "{" character in a regular expression pattern.
| You should change to use "\{" instead, because a future version of Perl (tentatively v5.26)
| will consider this to be a syntax error. If the pattern delimiters are also braces, any
| matching right brace ("}") should also be escaped to avoid confusing the parser, for example,
|
| qr{abc\{def\}ghi}
Change-Id: I6192b723bb7a0f95b64b6b01ba75988021dc22a6
In GSM encoding for ascii-only messages, we can have 160 chars in
a single message, or 153 chars each for multi-part messages.
In UTF8, it's 70 and 67, respectively.
Change-Id: I50d95f9d0335b42457238234a4fd552401c8fb26
+ as resellers always are only terminated but not deleted,
interceptions never got dropped.
+ its not possible to remove existing interceptions once
a reseller is terminated, so delete them when terminating
the reseller.
Change-Id: I30f829b0e5a4ce48946e9ce54274715a35ffee71
With this change, calls which have the same customer for source
and destination will be shown with direction "out" when only
filtered by customer.
This makes it easier to as postprocessing change the type to
"call" only when the direction is "in" (see ticket)
Change-Id: I2370bd2192c6cee6c01c89a8b78de5791cb72196
Until all LI vendors have migrated to REST later this year,
re-introduce a SOAP API for interceptions.
Change-Id: Ie8ef28e745b9f240547c3b6eb99fae4871287308
in scenario 3 it is unclear, whether the correct direction should be "in" or
"out". The benefit of setting it to out would be, that it would make call type
modifications easier (see ticket).
Change-Id: I40557b2675c750362c4cd6ff63810e0157510463
-introduce deferred event record insertion, to span across
update_subscriber_number and update_subadmin_sub_aliases
calls by handing over a snapshot of aliases before number
edit operations
-the snapshot is used to persist first_non_primary_alias_before
event values
-it also is the preparation to derive number change events
apart from that, the following was noticed:
-fix: start_huntgroup was generated twice
-fix: when terminating a subs, the order of end events was
not the reverse order of start_events
-POST /api/subscribers does not consider pbx alais selection
of pilot pool aliases, while terminating the susbcriber does
move back alaises to the pilot pool.
Change-Id: I092f4a21bed25503f48c47c253f1cae0729f43da
+preference-style 1:1 association api resource will
list all existing customer contracts
+avoiding get_customer_rs for performance reasons
+PUT/PATCH only, no POST/DELETE
Change-Id: If3b00c6cde07bf030e8bfc308e5e29d3251bdedd
If pcc is enabled for a subscriber, don't forward sms immediately,
rather than mark for forwarding and let the API forward it on
incoming request.
Change-Id: I75104266a1c1fccc7165af9ba65b31f085d7081f
Used to notify NGCP about pending calls and sms.
* /partycallcontrols is for handling incoming
call control requests from external API sources
Change-Id: I4d886f941f19f659017e32504fdb10e8ae02ba8b
we store it as is. but in order to preserve all information on callforwards,
we send those messages with the same coding as we receive them.
Change-Id: I3f72db4e19291aa2fb54d7aac000f88ad1874295
they may come in as utf-8 or utf-16. the latter causes catalyst
to die per default, which we circumvent. then we manually decode
the text in utf-16.
+ fix bug where last jumps out of subrouting causing an exception
Change-Id: I9df15317f4438b4205f7f0f6af26df8f85ae0614
+ api/events resource
+ removing an autoattendant via /api/callforwards: events OK
+ removing an autoattendant via /api/cfdestiantions: OK
+ removing an autoattendant via /api/cfmappings: OK
Change-Id: I4c309753b9338582479dba9951f757bb2ecaad7e
* caller/callee should not be used after rewrite rules
but caller_in/callee_in instead as they contain the
normalised values where caller/callee contain the original ones
Change-Id: I42081a6221945208477a1d0ce80b4d2369099242
* add a helper module Utils/DeviceFirmware.pm
* device firmware data upload internally splits
the data into 10MB chunks and upload it into
the new autoprov_firmwares_data table
* NGCP::Panel::Utils::insert_firmware_data()
* NGCP::Panel::Utils::download_firmware_data()
Change-Id: I91b2ae3d5b6c2d34c9d540ad816bb7549b4543cb
* normalise /api/faxes numbers by using the new common
NGCP::Panel::Utils::Fax::process_fax_journal_item
Change-Id: Ibf00109eb69bc13a6819424d451e34da072e5749
* webfax numbers representation is now handled by
NGCP::Utils::Fax::process_fax_journal_item
similar to process_cdr_item
* process_fax_journal_item supports pbx_entensions
and rewrite_rules in similar to process_cdr_item
Change-Id: I2457f35d96f478274f77a66729414330ffc01641
+1. terminate if terminated contracts or subscribers exists
+2. if active contracts or subscribers -> error
+3. delete otherwise
+customer contact api DELETE
+customer contact testcases
+customer api POST
+customer api PUT/PATCH
+system contact api DELETE
+system contact testcases
+contract api POST
+contract api PUT/PATCH
+panel UI contact delete
+panel UI contract create
no change panel UI contract update
+panel UI customer create
no change panel UI customer update
note contact links like customers.omm_contact or customers.tech_contact
are not considered.
Change-Id: I19ea6e2245282485cc30d3e92d17a2eb603e0c2d
Nightly translation upload job fails due to duplicates in translation:
> Merging lib/NGCP/Panel/I18N/it.po
>
> lib/NGCP/Panel/I18N/it.po:12422: duplicate message definition...
> lib/NGCP/Panel/I18N/it.po:1432: ...this is the location of the first definition
> lib/NGCP/Panel/I18N/it.po:12438: duplicate message definition...
> lib/NGCP/Panel/I18N/it.po:1447: ...this is the location of the first definition
> lib/NGCP/Panel/I18N/it.po:12448: duplicate message definition...
> lib/NGCP/Panel/I18N/it.po:1488: ...this is the location of the first definition
> lib/NGCP/Panel/I18N/it.po:12458: duplicate message definition...
> lib/NGCP/Panel/I18N/it.po:1507: ...this is the location of the first definition
> lib/NGCP/Panel/I18N/it.po:12474: duplicate message definition...
> lib/NGCP/Panel/I18N/it.po:1522: ...this is the location of the first definition
> lib/NGCP/Panel/I18N/it.po:12484: duplicate message definition...
> lib/NGCP/Panel/I18N/it.po:1541: ...this is the location of the first definition
> lib/NGCP/Panel/I18N/it.po:12500: duplicate message definition...
> lib/NGCP/Panel/I18N/it.po:1556: ...this is the location of the first definition
> msgmerge: found 7 fatal errors
> > die 'Error: Failed to prepare ngcp-panel translations. Exiting.'
Change-Id: I9518955627b9b773361f7924317087e5c87a9cea
* map regex fixed
* get_form may return an array with the exceptions now
* use get_item_id consistently
* use warnings and strict
Change-Id: I9f356814ecf4b51613d3aee3782a6b3b91f04cad
-undo unique lnp_numbers: undo misleading unique keys
-retain lnp_provider delete cascade restriction
-api: wire lnp_numbers_actual
-lnpnumbers collection pagination request takes several
seconds (up to tens of for 200k lnp numbers), too slow
especially for GET /api/lnpnumbers/?number=.. lookups
-query param is properly injected into the virtual view
sql query, so the lookup is fast now.
-panel UI custom datatable filter to switch between
complete history (all records) and actual portings
-"terminate" lnp number: DELETE /api/lnpnumbers/?number=x
+special use-case for melita's crm
+all empty or future "end" timestamps of records
are set to now(), so a subsequent listing shows no
records any more.
-number parameter is forced, other collection query params
are currently not supported for DELETE
Change-Id: I7b69d16a2d4f38ea84fc1cc0b407fa67e0f5ef8b
+all the contact's fields are exported to javascript
side. a custom renderer could also be used to display
a tooltip with all the contact's fields.
Change-Id: Icadcb07701d13ad4a619f429b9245f203d79b051
* the (terminated) prefix is shown for the 'other_cli'
only if the 'other_cli' has
the same contract_id as the 'own_cli'
Change-Id: I0b41c82164ff225001de1641bbe381544372473e
If set and a call is done within a pbx customer, the call is blocked
in blacklist, and is allowed in whitelist.
Change-Id: Ib43e5a45525a69e2b9dd9537dabddf10dfc006d1
- use the caller domain part in subscriber and peering lookups
- allowed_cli is checked after inbound rewrite rules
- peering lookup also requires a 3rd argument "prefix"
that matches the number and caller and callee are
expected to be uri.
Change-Id: I57e3ca01fc1bfa7dcddda90ed4176176713f6d2d
Auto-detect CSV separator (requested by customer).
Move reseller id out of CSV into form/api-param.
Fix empty prefix to store as NULL instead of empty string.
Change-Id: Id6776d3cddb6bc1745a23a79e9f590ef934608aa
+there are different implementations of obtaining a
fresh id from voip_aig_sequence for panel and api
+api call fails, when there are more than one id's
in that table. which can happen after concurrently
using the panel UI for that.
+now modified to always use mysql's autoincrement,
otherwise api will stop working again, once it
filled up id gaps coming from panel usage.
Change-Id: I9c699e19f7161e744ae858e75089b333cbc2b128
values is the correct datastructure to be used to update the db
when using HTML::Formhandler. the reason is, it does de-/inflation
such as trim, which removes whitespaces at the beginning and end.
Change-Id: I5570e64b69fd9e8ed1bbbbc9cd880a381ac3cf68
* send fax to a remote proxy if defined, otherwise queue it locally
* when queuing send fax remotely check if the host:port is alive
Change-Id: I29f9c32c784dccbb74d24ef4ef1ab0dc09d0a1ae
a reseller can manage multiple apps. these will have different networks in the
future, enabling one to allow or disallow networks depending on that.
in that case, the subscriber must have the possibility to select, which app they
are going to use. if none is selected, the default app is used.
Change-Id: I191bf3911004d405086821a89b46e4fa59379a46