* Sequences with escaping a non-special char in the search pattern
like \43699 or \abc are now checked and prohibited
Change-Id: I72d65f2dbf5b9b9bae1ff37af098d74d238f77cb
The DB has lengths of 4, 7 and 31 for cc, ac and sn, respectively.
Instead of letting the DB fail and cause a 500, check the length
properly upfront.
Also make use of cc/ac/sn_regex from config.yml to allow narrowing
down the format by the operator.
Change-Id: Ie738177f7942454054c37bf8be66ab01cfe05ad5
* return HTTP_UNPROCESSABLE_ENTRY if form data is not valid
or a susbcriber is not found
* POST: do not commit transaction if update_item fails
Change-Id: I7149922d4e4d701213ce351112cc67e611c3d910
now there is a tag per API rail instead of per method
this also makes it easy to render the documentation centrally per API rail
Change-Id: I683048f742c2bd2da591e502bc2d8f63cc422627
by using strict where it wasn't used before
plus fix all bugs that were discovered along the way by enabling strict
Change-Id: I7f9a8bf0cee74014fd7551ec26f2ab3922715efc
these errors were missing imports and were discovered with "perl -c".
DbStrings.pm is a generated file, therefore to comply with the syntax check
here we need to change the generator. (this is completely cosmetic)
Change-Id: Ia2dba1f04cbdc3bb76245b19de1f34c8c8a3a2c0
* Fix item update: a new reloaded item is correctly fetched
fom the db
* Fix Location header: path and item id are correctly delivered
with the header
* Fix xmlrpc ul.add call params:
- correct params order
- "expires" param value is properly calculated
Change-Id: I194b6bab9cb0d295e0a350e6317f7ddbcebdc021
with the previous commit, there is no need anymore to specify form
exceptions manually. validate_form will now automatically consider fields
in the correct format with and without "_id"
Change-Id: I70afae4003c6407c7a37396630110736f1fb13f8
exceptions here means, the fields are not automatically changed to
the format {field}{id} for form validation because a field named
{field_id} is present in the form anyway.
Change-Id: I64b8e3ca1864c2b3b2697a69f87cfba17683bd19
* /api/voicemailrecordings now support mp3 and ogg formats
when specified as query parameters: e.g. ?format=mp3
* add dependency to libsox-fmt-mp3
Change-Id: I0815be013814edc42559c75e26d64b537507334d
does not contain sensitive data, only a list of available timezones for the
datatables table to be shown. this is needed in Subscribers -> edit Master
dialogue for subscribers
Change-Id: Ie05f8635e97ad3814332e07e879979bb07664393
* search_rs(undef... did not work as the related query
contained a non-existing column 'aor', failing it silentlly
and caused a full join select without the where clause
* search() now provides with a fail immediately if a column does not
exist
Change-Id: If28d985b634809ae6583eebd6ffe7e302a2012fc
build_options on a field of type HTML::FormHandler::Field::Select is
always run on instantiation time. Since this is dynamic and dependent on
the external db values for destinationsets, timesets and sourcesets, the
form has to be re-instantiated every time
Change-Id: I724ea782c11b8208738731165cfe9d1a54b274f6
apply_rewrite demands a billing subscriber object
this resulted in an uncaught server error before
Change-Id: Ia11dc12b8a1a2f71b74881356dcd0b1ec7bf73fc
Consider item_rs probable additional params in get_list
Use uuid from get_owner for conversation filtering
Define subscriber_id for fax conversations
More clear debug
Change-Id: Ibef1662795a07e6b31e1dcf0052d618efeb2dbcd
* with the removal of PCMA transcoding for music_on_hold
sound files, the transcoding only applies to convert
any WAV -> expected WAV format by sems
* adjust File::Slurp play_file() to use the buffer, to
avoid possible issues with the stream data read
* fail if the sound file to upload is empty or cannot be read
Change-Id: I527aadd279dfe7dee42593be89f65dedf65fd6dd
was used to allow specifying a custom config file in order
to quickly test manually with a different db
Change-Id: I03db8ca922037f9d342a81236e6dfbfe79575c36
When clicking on the "Dashboard Administration" link in the Monitoring
and Statistics menu of the panel, grant administrative access to the
grafana dashboard.
This privilege elevation is kept in the session until you click any
of the other dashboard links in the Monitoring and Statistics menu.
Change-Id: I703a05b74fc6943ecac82cca5acb2d71674028e7
* Make sure resellers with interception rights can query both
collections and items
* Make sure we only query the reseller specific interceptions
when accessing API as reseller
Change-Id: I3010f899cbbd1a7a4f60025d95f09f013cc07c03
This prevents e.g. to insert \", which will break the trigger
populating kamailio, and will also protect against SQL injection
attacks, because the "name" value is taken as is in the trigger
statement without escaping it.
Change-Id: Ic2f911f4ce7fa79516796141d565bd3fe4a4044a
* NGCP sound files do not need transcoding anymore and
it is disabled for the sound file upload/download logic
(voicemail sound files transcoding is still required
and retained)
Change-Id: I756c794ae614d3d85096936e217d83f3e0c6db44
Certain forms like SubscriberCFSimple need $c as ctx already when
setting up the form, so move setting ctx=>$c right before that.
Change-Id: I8d377b20a1b62ffa8bba1277fdaf1b144a7c1607
Otherwise, sound handles and pbx devices are displayed in UI
based on the order of insertion, which is not nice from a
usability perspective.
Change-Id: I584a40ec7a55e4317126a2eb073951b3c8ae8332
* When enabling password_sip/web_validate, panel checks password
against username (web and sip, respectively), and runs it through
cracklib to enforce a reasonably strong password.
* Add auto-generate buttons next to web/sip password.
Change-Id: I11f5f6c2d69dc5658f298094f7d17d26d0a26ee1
scalar returns an arrayref with an item for every request,
which we then didn't unpack. better to request an array here
Change-Id: I80717c9e957ad44ad5d75db36735180123ab931c
This patch reuses existing forms by clearing them, rather than
re-instantiating them again and again.
Also, panel start time should be better due to less package
pre-loading.
Change-Id: Ia3e64fd4b4084bb5ec35a669c5840c9fc3c58f2e
Used to fetch whether pbx, faxserver, rtcengine etc is enabled.
* Fix rtcengine reseller creation:
- Refuse to create reseller if rtcengine part fails
- Use proper auto-generated rtcengine values (pass, domain)
to not fail on reseller names which are not forming valid
hostnames.
* Implement /api/admins/id to support testing
- add test
- fix creating admins with overly long login
- fix various ACL bugs handling /api/admins/
- fix creating /api/admincerts/ as r/o user
* Fix test framework
- use proper client cert when switching API user
Change-Id: I602fdd8181c0b3f23e76e3eab0df90a1ff9e986f
(cherry picked from commit 0d376bd8b59db65296090d26f2c84d704129beef)
Remove excrescent code from the pbxdevicemodels API & Panel
Add roles control per method for the API
Use form field "required" attribute for the API uploads
Fix getting old resource for the PATCH and PUT methods
Change-Id: Ia0515b3d071d45435db7c9138ea9de9447775143
* Fix syntax errors and internal errors
* Pass set ids back in mappings
* Allow updates of mappings both via name and ids
Change-Id: I26fdfe96d67563c11040a6c1e87f13a835bb793f
* Implement r/o access to /api/customers for subadmin
* Implement r/o access to /api/subscribers for subs
* Implement create access to /api/subscribers for subadmins
* Implement /api/numbers to re-assign a number
* Implement CF endpoints access for subs
* Implement new test framework to simplify testing
* Fix updating number by using Utils to make sure allowed_clis etc
are handled correctly
* Install missing docker dependencies for new test framework
* Add edr handling on /api/numbers/xx update
Change-Id: I678da16cfb1361b2809780cba8c204ac90bb1736
+ added conversations to api_root.t
+ disabled xmpp conversations source, since "soap"
MySQL user is not yet granted to prosody.* tables
Change-Id: I3d6a9418e7c2b77503f8472fe639e971ad7be3fa
* billing is split into 2 parts:
- init_prepaid_billing (reserves billing/creates session)
- perform_prepaid_billing (commits or cancels the session)
* when sms fails to be sent the billing session is canceled
(was committed before, regardless)
* NGCP::Panel::Entities::post
- do not do $self->return_representation_post() if
api_error_message is present, therefore, the actual
error is returned
* sms_journal item is now created also in case of an error
* improved errors indication
Change-Id: I454b8c6a1c04d743ee82e03f8621c7cc4c7c4f98
When creating or updating a reseller, catch non-numeric contract_id
and return 422, otherwise 500 would be returned.
Change-Id: I0e22f6f514fef80f5265eca28d7ec97811c1172f
* create reseller with enable_rtc now succeds but shows an
error if the "rtc" related part cannot be created
* update reseller with enable_rtc now succeds but shows an
error if the "rtc" related part cannot be update
* terminate reseller with enable_rtc now fails with an
error if the "rtc" related part cannot be deleted
Change-Id: I59a8b531d59bc3d4ca9201a2a25c783cb149b759
added checking and persisting of timezone for
+ panel UI subscriber create
+ POST /api/subscribers
+ PUT /api/subscriber/x
+ PATCH /api/subscriber/x
+ central is_valid_timezone_name method
Change-Id: I59865f5af33a71e5b5032dc35ba9c41eca74b04c
* new "Manager Secretary" call forwarding type
* new /api/managersecretary
- controls "Manager Secretary" call forwarding auto set
* support Prefer='internal' to avoid all form validations,
and creations as well as no hal is created but json body
is returned instead. only usable on port 1442 for
internal ngcp api clients.
* Role/API valid_uuid() check
Change-Id: I826138d8cdbce737c09c3b98bc7bdd905d09e81c
* enables a mode for cf source sets, where all numbers are
considered as whitelisted or blacklisted (similar to the
NCOS levels mode)
Change-Id: I84e76e5ba717050c48bcaf5c1fd5f67ed5582cab
When requested with an "Accept: application/json" header, return
the response in json format instead of xhtml.
Change-Id: Iba4135d8013fd200af426f2eb3d67b97282c034b
The error happens while preparing ngcp-panel translations
Creating lib/NGCP/Panel/I18N/messages.pot
Merging lib/NGCP/Panel/I18N/ru.po
lib/NGCP/Panel/I18N/ru.po:13386: duplicate message definition...
lib/NGCP/Panel/I18N/ru.po:13359: ...this is the location of the first
definition
msgmerge: found 1 fatal error
Change-Id: I704df2e5751e6189a34f489b0fe0c78413457ff9
Under Subscribers > Call Forward > Manage Timesets, the label for the
hour period has a typo. Should be "through" instead of "trough". Fix.
Change-Id: Iad07cb3c8ee69cd147e7629f1e551cd69da709ec
- read key from specific config file
- key is hex encoded
+ fix: add libcryptx-perl as dependency (actually dep of libcrypt-jwt-perl)
+ fix: typo in perl (comma instead of assignment)
+ fix: chomp any preceeding newlines from jwt_secret
Change-Id: I6c6bd4dc0d7fa7fa43868afb13b4d8d838d90564
Try to match up the peer_auth_realm with peer's ip or host, and if
found, check for outbound_socket of this peer and use it as contact
if found.
Change-Id: I428c408d6f3b0796fab2306cc129478806ac9bd3
* add missing Form/Faxserver/T38 form
* add missing Form/Faxserver/ECM form
* add T38, ECM forms for the API
Change-Id: Idb1d28f8bbe33a7383a88c074cc4a009f4c37ff4
as read-only access to subscriberadmin in order to view neccessary
details for creation of pbxdevices.
Change-Id: I369c3a1936e46a4144652f0a65899fc4defcb501
* enables a filter for calls that were initated or received
by the specified subscriber/custoemr
* set direction for internal subscriber calls to "out"
Change-Id: I2f3b543b57352f92dc5a67bc82779cf371b6f23c
from perl core documentation:
> $& returns the entire matched string.
> (At one point $0 did also, but now it returns the name of the program.)
Change-Id: Ia884ac758c91da7e365f609c2d5f0dbe784e763b
* Add dispatcher reload helper in peer utils
* Handle probe flag for peer hosts
* Reload dispatcher on proxies on peer host change
* Reworked kamailio cache reload to perform it after commit,
otherwise kamailio won't see the changes yet!
Change-Id: I9a53854b4a42c97a2889c63f8bf2c878c6f48a2d
- move the "group" field from Rule.pm/InboundRule.pm into
RuleEditAdmin.pm/InboundRuleEditAdmin.pm respectively
- the "group" field is used only by the GUI rule edit forms
Change-Id: I1c1ebf883848e90c9412784c8d8610fcbebc4331
- 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