Commit Graph

537 Commits

Author SHA1 Message Date
Kevin Zink
98ed6bb9dc New plugin system based on Laravel Package Development (#12998)
* use Blade view and Eloquent models for plugins

* move views

* fix style

* fix style

* revert mistake

* Update Plugin.php

delete test property "name"

* rename plugin function to settings

* last but not least - rename in Test.php

* Rename Test to Example

* fix typo

* fix style

* fix style

* fix style

* fix style - I hate tabs...

* Extract view calls

* fix method calls and style

* Move Models the the abstract class

* fix style

* Convert to traits

* Change the Example description

* Fix style

* Fix style

* Fix style

* Convert plugin function to Model static methods and delete .inc.php

* fix style

* fix style

* Use scope

* final methods blows up legacy code

* Config > \LibreNMS\Config

* convert the static string to a static method

* Correct placement in the page

* fix tabs

* fix style

* Rename from tait to hook

to make it easier to understand and be complient

* rename file

* Typo

* Started to change the docu

* change to a more usefully Device_Overview example

* and activate of course

* PluginManager

* fix .gitignore

* only php files in the root folder

* corrected .gitignore with all files :)

* Rename the Hooks and ExampleClass for better readability

* Fix style

* Fix style

* Exception handling (especially if DB is not present)

* Fix style and update schema

* fix indentation

* actually correct indent

* fix migration collation check include utf8mb4_bin

* stop phpstan whining

* A view lines documentation

* add typeHints

* Allow return null on handle

* lint

* fix return types

* fix logic of column collation check

* Fix MenuEntryHook

* switch to longtext instead of json type for now :D

* try phpstan on PHP 7.3

* set phpstan target version to 7.3

* all the typehints

* optional

* more

* Use namespace to prevent view collisions
disambiguate plugin and hook
no magic guessing of names in PluginManager, bad assumptions
remove unused plugins from the DB

* cleanup plugin menu

* cleanup on shutdown and ignore but log query error on cleanup

* instanceof must be called against an instance

* Allow multiple hooks per plugin

* Port plugin ui code to Laravel

* page instead of settings for v1 plugins

* actually working settings pages
a little url cleanup plugin/admin -> plugin/settings

* fix style

* Add page hook

* PHPstan

* Try to fix Illuminate\Http\RedirectResponse

* typehint

* Rewrite the doc

* Fix style

Co-authored-by: PipoCanaja <38363551+PipoCanaja@users.noreply.github.com>
Co-authored-by: Tony Murray <murraytony@gmail.com>
2021-10-19 06:53:28 -05:00
ottorei
d3726e6bdc Update alertlog-widget to allow filtering by device group (#13380)
* Add group filter to alertlog widget

* Remove extra characters from settings

* Apply fixes from StyleCI

Co-authored-by: ottorei <ottorei@users.noreply.github.com>
2021-10-19 06:18:29 +03:00
Nathan Manzi
fb7d89c4c3 Add get_ports_by_group API function (#13361)
* implement api route get_ports_by_group

* Update API docs for new get_ports_by_group

* Fix misspelling of function names and routes
2021-10-18 20:47:37 -05:00
DanielMuller-TN
16584d8090 Added conditional check for rules parameter on add_device_group API function (#13353) 2021-10-11 21:08:16 -05:00
Tony Murray
0b8b97bb68 Push Notifications (Mobile and PC) (#13277)
* Update manifest and add service worker
cleanup icons a bit

* Push notifications WIP

* navigate working

* cleanup

* acknowledge wired up

* Set VAPID keys on composer install

* Component to control notification permissions.

* Allow all user option to validate

* Enable on browser load if transport exists.

* Check for transport before showing user permissions
translations

* Documentation

* style fixes

* access via the attribute model

* fix alerting test

* update schema

* cleanup subscription on disable

* non-configurable db and table for webpush subscriptions (respect system connection)

* revert AlertTransport change
hopefully phpstan can figure it out

* phpstan fixes

* Support custom details display

* Match transport names to brand's preferred display

* less duplicate id errors

* Tests are done in Laravel code now so
remove legacy function usage... could be better, but ok

* Style fixes

* Style fixes 2

* Fix alert test

* Doc updates requires HTTPS and GMP

* unregister subscription when permission is set to denied

* cleanup after user deletion

* delete the right thing

* fix whitespace

* update install docs to include php-gmp

* suggest ext-gmp

* update javascript

* Update functions.php

Co-authored-by: Jellyfrog <Jellyfrog@users.noreply.github.com>
2021-10-06 07:29:47 -05:00
SourceDoctor
6288cb6edf alert detail fix (#13335) 2021-10-05 14:35:51 -05:00
SourceDoctor
8e1b9e2989 Show Detail by default Option on Alert Widget (#13309)
* Show Detail by default on Alert Widget

* .

* change to row count length limitation

* .

* .
2021-10-03 01:12:18 +02:00
Tony Murray
fafb5a62c2 Fix port links (#13296)
yes is not a valid boolean
2021-09-30 09:41:12 +02:00
Tony Murray
66dddbaa66 SNMP Capabilities (#13289)
* SNMP Capabilities
Allow all available auth algorithms to be set in global settings
cleanup other usages

* fix style
2021-09-28 18:35:59 -05:00
SourceDoctor
708d1ebb87 API Call to set instant Maintenance mode (#13237)
* API Call to set instance Maintenance mode

* .

* remove unused code

* update query

* Use recent code

* remove accidental line return

* fix duration in success string

* style fix

* Try to fix bad code merge

Co-authored-by: Tony Murray <murraytony@gmail.com>
2021-09-28 21:54:52 +02:00
Nick Peelman
dda46447c3 Add ORDER BY to the ports query when showing the ports list on device overview (#13276) 2021-09-27 10:34:55 +02:00
Cupid@zul
ba84acc1db Fix graphs showing bps instead of pps (#13266)
* fix issue #13119

try to detect if total_units exists (variable comes from errors.inc.php and nupkts.inc.php ) as 'pps' and define graph units as such.

* standardize units_descr for both ucastpackets and errors
2021-09-23 07:43:23 -05:00
SourceDoctor
11dfbc02b7 API Call to assign/remove a Portgroup to Ports (#13245)
* API Call to assign/remove a Portgroup to Ports

* .

* .
2021-09-21 08:41:01 -05:00
SourceDoctor
0d499b538b API port search by arbitrary field (#13231)
* DB Field specific Port Search

* .

* seperate function for API Call

* second parameter now optional

* code adjustments

* Update api_functions.inc.php

Co-authored-by: Tony Murray <murraytony@gmail.com>
2021-09-19 19:28:42 -05:00
SourceDoctor
a8ca79152c API add_device: respond with more device information (#13251)
* Advanced Response Information API add_device

* .
2021-09-19 18:47:50 -05:00
Tony Murray
1084bd6d1a Convert all ports backend to Laravel style ajax table (#13184)
* port ports to Laravel style ajax table

* fix style

* cleanups+fixes

* correct column name

* correct port formatter

Co-authored-by: Jellyfrog <Jellyfrog@users.noreply.github.com>

* always filter deleted

Co-authored-by: Jellyfrog <Jellyfrog@users.noreply.github.com>
2021-09-19 18:26:33 -05:00
Negatifff
962e05ea6b Add sysobjectid and hardware fields into oxidized maps (#13221)
* add sysobjectid and hostname field into oxidized maps

* add app.js
2021-09-16 19:00:06 -05:00
Tony Murray
f3fa2ce1e2 Fix port minigraph (#13240)
missing div close
2021-09-14 11:36:21 -05:00
Tony Murray
055895e4a5 Fix static alert rule creation failing in api (#13222) 2021-09-11 21:35:11 +02:00
kimhaak
e409a22e7d Changed map functionality in device overview (#13225)
Changed map in overview page for devices so that it is possible to move and drop the marker to update position, and possible to pan/move map without marker being stuck in center, marker stays in its fixed position.
2021-09-11 16:09:57 +02:00
Jellyfrog
258505ed44 Apply fixes from StyleCI (#13224) 2021-09-10 20:09:53 +02:00
Jellyfrog
26b95c0ccc Apply fixes from StyleCI (#13208) 2021-09-08 23:35:56 +02:00
Tony Murray
94ee737f3d Allow device actions to appear in device list and improve docs (#13177)
* Improve Device menu links and documentation

* device list actions functionality

* phpstan :/
2021-08-27 22:48:57 -05:00
Tony Murray
5a1988a4c9 Fix port zoom traffic, remove question mark accidentally left in (#13172) 2021-08-24 22:43:06 -05:00
Tony Murray
8e409ba051 Rewrite ISIS Adjacency discovery/polling (#13155)
* Rewrite ISIS Adjacency discovery/polling
hopefully much faster now, do most work in discovery and just check up/down in poller.

* unused variable

* Implement option for OS override

* fix an incorrect typehint

* test data

* work around stupid migration name

* update schema

* better handling for the on-demand discovery

* more detailed phpdoc

* fix when adjacency is not found

* don't clear out data when adjacency goes away

* Adjust nullable fields

* fixes

* fix class name

* correct migration

* fix bug causing adjacency data to always be blank

* port popups for port links

* isisISAdjState does not need to be nullable

* remove extra space

* default off

* If port is missing return $text

* update schema

* Cleanup old components

* correc copy paste error
2021-08-23 21:19:55 -05:00
Tony Murray
d74bb37971 Show port speed on port graphs, optionally set scale (#11858)
* Show ifSpeed on Graph
Drop ifHighSpeed, we really don't want to store that value.

* safer truth check

* Allow global setting and per-graph variable

* match surrounding case

* Style fixes

* Remove old function usage

* update schema

* remove some old usages

* cleanup more ifHighSpeed references

* update test data to remove ifHighSpeed

* fix down migration

* Add button on graph page
Change default
tweak wording
2021-08-23 06:47:44 -05:00
Facundo Caselles
8bb6eec732 Dark mode improvements (#13141)
* Changes to dark theme.
- Tables with white background now has dark background.
- Listbox in searchbar now has dark background.

* Minor change to internal css to modify all tables without 'table' class applied. (view screenshot)

* -Transparency on mini graphs on ports

* bootgrid-table td.no-results now has dark background

* Changes suggested by @Talkabout
2021-08-21 20:06:13 +02:00
Arjit Chaudhary
1fcf58a7a4 Fix layout width (#13115)
* Fix layout width

* Update services.inc.php

Co-authored-by: Tony Murray <murraytony@gmail.com>
2021-08-21 00:25:13 -05:00
fbourqui
fcb1f2d6fa Revert to port description on port_link in Ports-Type pages after #13143 (#13149)
* Add Port description first to Ports-Type pages
Consistent with Customers pages.
For a port to be in a Ports-Type page it needs a parsed description
(Transit, Peering, Core, Custom, ...)

* make styleci.io happy

* Revert back to display Description like b4 #13143
2021-08-19 18:14:04 -05:00
fbourqui
f1dc4435e3 Cleanup Port hover minigraph description when using "Interface Description Parsing" (#13143)
* Cleanup Port hover minigraph description.
Use port_descr_descr if exists or ifDescr.
Use the same generate_port_link() in:
- Devices - Ports
- Ports - All/Errored/Ignored
- Ports - "Types"

* Port-Customers, using Ajax Controller,  Util/Url

* make https://styleci.io/ check happy
2021-08-18 13:02:01 +02:00
geg347
6dbefd4a61 Adding API route to set bgpPeerDescr field (#13056)
* Adding API route to set bgpPeerDescr field

* Fixing CI test

* Fixing CI test part 2

* Adding validation of bgpPeerId as integer and changing SQL request with question mark syntax.

* Fixing CI test

* Following murrant's advices to protect against SQL injection

* Use built in json function

Co-authored-by: Tony Murray <murraytony@gmail.com>
2021-08-13 00:58:47 +02:00
Kevin Zink
93209a0fc8 API mac search (#12964)
* API find a switchport with the mac from device

* fix style

* convert SQL to Eloquent

* convert SQL to Eloquent

* git mistake

* Global use App\Models\Port

* git mistake partII

* Refractor Eloquent - Not finish but easier to help for others

* Better Eloquent Query without filter option

* Validation

* fix style

* Add filter option and DOC

* convert to the better macToHex method

* add a maxToHex unit test

* fix style

* fix style

* fix syle - seems my dev:check is running again :-)

* Fix phpStan

* phpStan #2
2021-08-09 19:33:04 -05:00
Bennet Gallein
574eb1f0f0 Billing: add peak in and out (#13006)
* feat(api): added max in/out per bill_history period

* chore(Docs): updated docs to include in/out max values

* chore(formatting): style-ci

* chore(db): update db-schema

* fix(db): reverted wrong changes in schema

* fix: wrong table name in migration

* feat(billing-history-frontend): added max in/out values to frontend bill-history

* chore: renamed to peak instead of min/max
2021-07-26 10:37:52 -05:00
martinberg
342900ee53 Poll current connections for F5 ltm (#12968)
* Poll current connections for F5 ltm

* Changed polling to a separate RRD-file

* Reverted old changes

* Remove stats not needed in this file

* Fixed typos and cleanup

* Updated copyright
2021-07-22 01:07:30 +02:00
PipoCanaja
ea8a5ba555 More sensor data on inventory page (#13057)
* new display

* style
2021-07-21 17:08:24 +02:00
Kevin Zink
0cc5647915 Fix "Sub-directory Support" in small steps (#12951)
* subdir5

* fix style

* Unused LibreNMS\Config

* revert short tags

* Fix bug

Found a bug when the url doesn't end with /
I don't think CSRF is need because this form is never submitted and it just dirties the URL.
Also, I think Request:url() is nicer than url()->current() (they are the same code wise)

* Fixed the root issue instead

Fixed the real issue in #13041

Co-authored-by: Tony Murray <murraytony@gmail.com>
2021-07-14 09:27:22 -05:00
Tony Murray
131f626815 Don't add %3F=yes to the url (#13041)
* Don't add %3F=yes to the url...

* introduce variable
2021-07-14 09:26:33 -05:00
PipoCanaja
29a0310c4f display metric if available only (#13023) 2021-07-11 13:03:54 -05:00
Jellyfrog
f76cfb4374 Revert "Refractor health (#13022)" (#13029)
This reverts commit 16f5985f00.
2021-07-11 14:08:14 +02:00
Kevin Zink
16f5985f00 Refractor health (#13022)
* Add power consumed

* Revert "Add power consumed"

This reverts commit 424554ac04bd340de2fd962cb6808045024ef783.

* Refractor Device health sensors

* fix style

* fit style

* fix style
2021-07-10 14:31:43 +02:00
PipoCanaja
5acece54eb fix application fault detail (#13016) 2021-07-09 21:34:17 +02:00
martinberg
504fd0b248 Wrong statement used (#13001) 2021-07-05 18:38:52 +02:00
PipoCanaja
63b9896ac4 Leave it to generate_device_link for sysName/hostName/IP (#13000)
* avoid forcing displayed name, so generate_device_link decides according to LibreNMS config

* same fix for BGP display

* other generate_device_link occurences

* more

* more
2021-07-04 20:58:05 +02:00
PipoCanaja
7e2ce6179a Added VRP ICMP SLA (NQA in huawei naming) support (#12973)
* added VRP icmpAppl SLA (NQA in huawei naming) support

* style

* style

* remove unnecessary values in RRD

* enable SLA for VRP devices

* tests
2021-07-03 15:16:38 +02:00
Sean
6f7d0b2027 Fix typo in filename (#12996)
Was introduced 10 years ago by commit 63b25bb2f.
This page seems not used in any code but accessible by the URL:
https://libre.nms/device/device=1/tab=graphs/group=ipSytemStats/
2021-07-01 16:21:56 +02:00
martinberg
131f5c7e87 Option to filter Oxidized groups (#12966)
* Add support for Liebert humidity setpoint and UPS powerfactor

* Option to ignore groups so they are not sent to Oxidized

* Revert "Add support for Liebert humidity setpoint and UPS powerfactor"

This reverts commit c338528aba.

* Updated docs

* Added ignore_groups option

* Added descriptions and updated translations

* Update settings.php

* Fixed typo

Co-authored-by: Tony Murray <murraytony@gmail.com>
2021-06-28 12:53:16 +02:00
rhinoau
450463f7b1 filter out NULL lat/lng values from Geographical Map display queries (#12985)
* filter out null lat/long values from map display queries

* removed space

* and the 2nd one

Co-authored-by: PipoCanaja <38363551+PipoCanaja@users.noreply.github.com>
2021-06-25 01:33:20 +02:00
VTS
b6f9dd29df return api error when device doesn't exist (#12978)
* return api error when device doesn't exist

Function device_by_id_cache returns a hash table, which isn't null despite the device not existing.  This checks to see if the type has been populated to also determine if the device exists. 

Without this, the function always returns a "valid" device, even if one doesn't exist.

* use device_id instead of type
2021-06-25 00:13:51 +02:00
Misha Komarovskiy
e670097bf6 API: Add api call to list OSPF ports (#12955)
Signed-off-by: Misha Komarovskiy <zombah@gmail.com>
2021-06-16 20:31:05 +02:00
Kevin Zink
0489382768 Fix "Sub-directory Support" in small steps (#12910)
* Fix "Sub-directory Support" in small steps

This fixes small parts from #12205 part 3
fixes #12205

Even someone knows a better way, for example to fix js with the url() function. In my case it works.

* Update oxidized.inc.php

* Update oxidized.inc.php

* Update oxidized.inc.php

* Update oxidized.inc.php

* Update oxidized.inc.php

* Update oxidized.inc.php

* Update oxidized.inc.php
2021-06-15 08:11:18 -05:00