Commit Graph

735 Commits

Author SHA1 Message Date
Wheel
f0bbab2419 Minor fix and tweak for graylog integration (#15455)
* Minor fix and tweak for graylog integration

* More flexible in other use cases

* fix again?
2023-11-01 22:35:44 -05:00
Tony Murray
183f9559f4 New command: lnms report:devices (#15539)
* New report:devices command
Print out a list of devices with user specified fields, optionally in csv format

* Polish

* Apply fixes from StyleCI

* Use spaces instead of tab for none type

* Fix method call

* other commands use whereDeviceSpec

* Apply fixes from StyleCI

* update command help and back to tab for separator

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-11-01 13:52:21 -05:00
Tony Murray
ef12cef6aa Respect web_mouseover setting in popup component (#15530)
* Respect web_mouseover setting in popup component
fixes #15496

* Apply fixes from StyleCI

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-10-31 10:12:17 -05:00
Félix Bouynot
7a6ef2491e Smokeping menu and title use device displayname (#15387)
* Menu and title use displayname

* Fix empty strings

* Fix array creation

* Use groupby instead of loop

* Change one forgotten var

* Revert to working simple changes

* Change test data to include displayname

* Fix bad copy paste in test data
2023-10-31 08:38:51 -05:00
Dominik Riva
6134d9c153 Prefetch devices in group to avoid cost of subquery (#15511)
* prefetch devices in group to avoid cost of subquery

As proposed in https://community.librenms.org/t/librenms-getting-slow-and-eventlog-widget-gets-canceled-or-504/22270/4?u=slalomsk8er

* remove unnecessary implode & explode

* replace whereIn with whereIntegerInRaw

This is needed as whereIn has a default limit of 1000.
2023-10-31 08:34:42 -05:00
Neil Lathwood
840cda00ff Fix Bill using the wrong field for join (#15524) 2023-10-30 13:50:57 -05:00
Tony Murray
6bc8a504bb Plugin update (breaking) (#15498)
* Plugin update (breaking)
A couple breaking changes regarding property types and method arguments.
Add a setting to allow plugin errors to be shown instead of automatically disabling the plugin.
All default hooks now use Dependency Injection to make it easy to get access to whatever you need (such as settings)
Add a ton of comments and examples in the PHP code.
Expand a bit on the documentation, it could still use more help
Fix a bug in the settings and page view where the included blade file was output before the page headers, etc

* Apply fixes from StyleCI

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-10-29 22:45:23 -05:00
Tony Murray
f5b21047a1 Print stack trace in error dumps (#15514) 2023-10-28 23:34:56 +02:00
Tony Murray
8f91fb3877 Fix polling down retry (and other items) (#15483)
* Only update last_polled if polled
Because availability now runs always, we need to check if we ran any other modules successfully, if so, we can update last_polled

* Tally results and act accordingly

* Apply fixes from StyleCI

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-10-19 06:55:41 -05:00
Tony Murray
b263772d23 Fix Device ip address mutator (#15480)
was returning false instead of null, causing extra updates and eventlogs.
2023-10-18 13:14:02 -05:00
Tony Murray
8de08774d6 Fix FDB table ip addresses missing (#15481)
* Fix FDB table ip addresses missing

* comma space

---------

Co-authored-by: Justin Lentz <monkeybrains7@gmail.com>
2023-10-18 13:13:41 -05:00
Justin Lentz
e3def10922 Fix typo in FdbTablesController.php (#15477) 2023-10-17 15:26:40 -05:00
Tony Murray
0540c56d0f Add application metrics model and relationships (#15417)
* Add application metrics model and relationships

* update schema check file

* Add missed index

* Update testing definition

* sqlite can't create the id later

* update schema dumps

* update testing_persistent schema

* update baseline
2023-10-12 02:24:27 -05:00
Tony Murray
14d9d66529 Agent: Packages fixes (+pacman) (#15415)
* Agent: Packages fixes
Don't try to save invalid packages, probably due to script failure on device.
Add pacman support

* Apply fixes from StyleCI

* Add version

* cast to number

* Update includes/polling/unix-agent/packages.inc.php

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

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
Co-authored-by: Jellyfrog <Jellyfrog@users.noreply.github.com>
2023-10-08 18:37:33 -05:00
Tony Murray
685d11d4f1 Misc fixes 42 (#15413)
* Misc Fixes

* Apply fixes from StyleCI

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-10-07 21:39:16 -05:00
Tony Murray
8dbf95bb40 Error Reporting: Log instead of dump (#15412)
* Error Reporting: Log instead of dump
When dumping all errors, log them instead so it doesn't break the webui and we can get reports more reliably

* Apply fixes from StyleCI

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-10-07 20:04:21 -05:00
Tony Murray
e53436b6a3 Calculate downtime from device_outages table (#15397)
* Calculate downtime from device_outages table

* refactor
2023-10-06 20:37:23 -05:00
Tony Murray
d8c372bbf4 Refactor MAC utilities into a single class (#15379)
* Refactor MAC utils to a new utility class

* Apply fixes from StyleCI

* Inline functions
Add tests
Handle bridgeid format

* Apply fixes from StyleCI

* Dedicated code path for stp bridge parsing, and improve STP output a bit

* Correctly parse dot1dBaseBridgeAddress and don't store int in bool field

* trim any unexpected character from bridge addresses, add extra test data.

* better comment

* barsBridge can handle dot1dBaseBridgeAddress correctly now

* parseBridge, check for properly formatted mac first.

* update test data, empty data = empty mac

* Fix new usage after rebase

* import

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-10-06 07:34:14 -05:00
AdamB
91bc3bf479 Show which host marked a device as down. (#15209)
* Show which host marked a device as down.
One of my pollers can't reach a device, it'd be nice to know which one is causing the issue.

* Only show the actor in a distributed setup

* Use distributed poller name as its now ensured

* Use node_id

* Change to avoid extra dns lookups

* Update DeviceObserver.php

* Update DeviceObserver.php

---------

Co-authored-by: Tony Murray <murraytony@gmail.com>
2023-10-05 19:53:38 -05:00
Tony Murray
087d588102 Vmware vminfo modernize (#15008)
* Vmware vminfo
Remove legacy file and migrate to OS discovery

* tighter

* ios_stp-vlans working correctly now

* Make vmwVmGuestOS nullable

* Discover os info too

* VM Info module

* Apply fixes from StyleCI

* Fix log severity

* Fix log severity (more)

* VM Info module

* Poll with ESXi too because it is lightweight
add test data

* poller data now too

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-10-05 19:49:26 -05:00
Tony Murray
bec7a9f449 Throttle error reporting (#15391)
* Throttle error reporting
Sets how frequently errors can be reported (across all pollers)
Also has the side effect of at most 1 error reported per run
To disable, set reporting.throttle to 0 (for development and testing purposes)

* Don't crash if Cache provider is unavailable, refactor
2023-10-05 17:24:28 -05:00
Tony Murray
9fca01830c Update Tnmsne table backend (#15384)
remove ridiculous sql injection vulnerability
2023-10-05 10:32:21 +02:00
Tony Murray
e0444bffcf Deprecate poller.php (#15370)
* Deprecate poller.php

* Apply fixes from StyleCI

* Remove references to poller.php
Leave wrapper...

* fix python style

* update wraper to call lnms device:poll

* Quiet output too

* make pb happy

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-10-04 16:32:02 -05:00
Tony Murray
c1258320f8 Availability module fixes (#15369)
* Refactor poller to allow modules to run even if the device is down
Include core in config (but not webui) to avoid silly shenanigans
Inject datastore into polling

* Needed to split datastore interface

* Cleanup some data_udpate() references

* Apply fixes from StyleCI

* Fix legacy poller :D

* Output to the correct stream

* Fix lint issues

* Apply fixes from StyleCI

* Fix discovery not including core and submodule handling

* Use whereRaw

---------

Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-10-04 10:32:59 -05:00
Tony Murray
6f329a7595 Fix alerting find owner contacts on old SQL server versions (#15355)
* Fix alerting find owner contacts on old SQL server versions
Older SQL server versions had a bug where they didn't accept parenthesis around the first query of a union statement.
It was difficult to remove these parenthesis, so use whereHas instead.

* Fix style
2023-09-28 09:49:29 -05:00
Tony Murray
c8041b6699 FDB Tables improve performance (#15333)
* FDB Tables improve performance
Reduce unnecessary sql queries, by using a relationship
Cache vendor oui lookups

* Oui already "clean"

* Fix typo
2023-09-25 19:49:22 -05:00
SourceDoctor
c0a233700c show never polled information (#15341) 2023-09-24 18:10:11 +02:00
Tony Murray
35406b4b32 Fix some issues with admin self settings (#15332)
Don't require old password when not settings password
Show old password field for user's own user
2023-09-18 14:35:12 -05:00
Tony Murray
c4852a01e9 Fix device display name in top interfaces widget (#15319)
fixes: #15317
2023-09-14 08:15:29 -05:00
Tony Murray
4dc2ae9d44 Timezone, fix user set no timezone (#15296)
fixes #15277
2023-09-08 07:48:16 -05:00
Zane C. Bowers-Hadley
2618a99be5 Application Soft Delete (#15270)
* add the softdeletes migrations for applications

* add working migration file

* add deleted_at to db schema.yaml for applications

* update includes/html/forms/application-update.inc.php to work with softdeletes

* update includes/html/pages/device/edit/apps.inc.php for softdelete

* update includes/discovery/applications.inc.php to work with softdelete

* minor updates to application-update.inc.php for disabling

* style cleanup

* set discovered when running discovery

* update application tests to include deleted_at

* add deleted_at to a missed test

* a few more tweaks for opensips

* add a missing deleted_at for linux_suricata_extract-v1

* fix fillable for Application model

* massive cleanup of the application update widget thingy

* improve the code for discovery and using Laravel

* add a missing line to app/Models/Application

* add a missing include to app/Models/Application.php

* record includes for Application model

* remove apps from the applications table when a device is deleted

* revert to using upcert and where for discovery to fix CI

* make discovered fillable and set it when running discovery... convert back to firstOrNew

* clean up application discovery a bit and use observer

* style fix

* spelling fix... disablaed -> disabled

* rever removal to just use where

* cleanup app removal on delete

* add restored to ModuleModelObserver

* delete -> forcedelete fix

* apply the suggested changes

* use murrants other suggestion

* style fix
2023-09-06 16:34:39 -05:00
SourceDoctor
013096c092 readd missing key (#15291)
* readd missing key

* .
2023-09-06 16:08:07 -05:00
SourceDoctor
d991a4b505 fix missing keys for new status (#15284) 2023-09-05 16:08:15 -05:00
SourceDoctor
35ff23b39f show ignored device up when up (#15283)
* show ignored device up when up

* change status string
2023-09-05 11:04:16 -05:00
Wheel
a6ccb596df Custom ssh,telnet port with oxidized (#15255)
* Custom ssh,telnet,http port with oxidized

* Lint fixes

* copy paste minors
2023-09-03 20:15:51 -05:00
PipoCanaja
8eeb83928f Add global NAC page and refactor the per-device one (#15228)
* Adding a NAC global port page

* style

* filter_menu_entry

* typo

* ->when()

* device_id always returned

* use request

* laravel conversion, let see how it goes

* styleci

* ->with('device') to avoid 1 query per item processed

* and rewrote on @murrant advice

* any -> get

Suggested by @murrant

Co-authored-by: Tony Murray <murraytony@gmail.com>

* @push('scripts')

* style

* @endpush

---------

Co-authored-by: Tony Murray <murraytony@gmail.com>
2023-08-31 20:25:24 -05:00
Tony Murray
bbe835b5f9 Radius update roles correctly (#15261)
Needs a re-write so semantics line up with Laravel auth better, but this is the quick/safe fix.
2023-08-28 23:38:09 -05:00
Tony Murray
f622a96c70 Fix mysql auth removing roles upon login (#15258) 2023-08-28 11:00:18 -05:00
Tony Murray
c737788727 Roles user add fix (#15257)
* Fix user add command doesn't allow roles

* update baseline
2023-08-28 10:27:56 -05:00
Tony Murray
2cd207028a Implement RBAC (only built in roles) (#15212)
* Install bouncer

* Seeder and level migration

* Display and edit roles

* remove unused deluser page

* Update Radius and SSO to assign roles

* update AlertUtil direct level check to use roles instead

* rewrite ircbot auth handling

* Remove legacy auth getUserlist and getUserlevel methods, add getRoles
Set roles in LegacyUserProvider

* Small cleanups

* centralize role sync code
show roles on user preferences page

* VueSelect component WIP and a little docs

* WIP

* SelectControllers id and text fields.

* LibrenmsSelect component extracted from SettingSelectDynamic

* Handle multiple selections

* allow type coercion

* full width settings

* final style adjustments

* Final compiled assets update

* Style fixes

* Fix SSO tests

* Lint cleanups

* small style fix

* don't use json yet

* Update baseline for usptream package issues

* Change schema, not 100% sure it is correct
not sure why xor doesn't work
2023-08-28 00:13:40 -05:00
Hans Erasmus
4fc27d98e9 Another OR statement in GrayLog API (#15246)
* Another OR statement in GL-api

* try again to fix linting issue

* yet more linting issues

* Cannot fix me being an idiot
2023-08-25 07:56:29 -05:00
Tony Murray
cfc9aca6a4 Revert "Added empty string check (#15235)" (#15249)
This reverts commit cbe2ba55ce.
2023-08-24 10:09:50 -05:00
eskyuu
7d950825a1 Make the service template controller re-evaluate dynamic membership when apply all button is pushed (#15214) 2023-08-21 18:27:54 -05:00
PipoCanaja
99cfbf1d63 Use full name for vendor_oui (#15234)
* Use full name for vendor_oui

* trimmed

* typo

* more spaces to remove

* don't set $short_vendor

* keep line return

---------

Co-authored-by: Tony Murray <murraytony@gmail.com>
2023-08-21 16:13:28 -05:00
Fehler12
cbe2ba55ce Added empty string check (#15235)
* Added empty string check

* replaced tabs with spaces

replaced tabs with spaces

* Removed '(', ')' and enlarged if clause

* Added one space and removed an empty row

* removed is_null

Removed is_null check as static code analysis says that this variable cannot be null at this time

* compact form

* handle spaces

In case the sysName is " " (one space). Good to trim anyway.

---------

Co-authored-by: PipoCanaja <38363551+PipoCanaja@users.noreply.github.com>
2023-08-21 00:17:25 +02:00
Jellyfrog
7c85763ff5 Make the installer use the schema dump (#15211) 2023-08-11 17:16:22 -05:00
Tony Murray
d1b7004fef Severity Enum (#14620)
* Severity Enum
Replace old Alert constants

* Fix whitespace

* Additional uses

* style fixes

* Fix test too

* More missed locations

* More
2023-08-05 12:12:36 -05:00
eskyuu
6fb784a321 Apply service templates on a per-device basis (#15024)
* Created and use a function to apply service templates on a per-device basis

* formatting fix
2023-08-04 19:05:07 -05:00
Tony Murray
fe1b280a99 Fix timezone controller bad return (#15191)
was returning null when preferences.timezone was not set (not sure how to get to that case)
2023-08-03 19:31:28 -05:00
Tony Murray
12f8bb2040 MAC Vendor OUI use scheduler (#15187)
* MAC Vendor OUI use scheduler
Add command to update `lnms maintenance:fetch-ouis`
Show vendor column in tables if mac_oui.enabled is set to true
Improve scheduler validation handle non-standard install directories and systems without systemd
Add index to table to improve speed and improve mac->vendor lookup speed
Scheduled weekly with random wait to prevent stampeding herd issues for upstream
drop oui update from daily

* MAC Vendor OUI use scheduler
Add command to update `lnms maintenance:fetch-ouis`
Show vendor column in tables if mac_oui.enabled is set to true

* Lint fixes and better prefix detection

* update schema file
2023-08-03 19:29:30 -05:00