Commit Graph

351 Commits

Author SHA1 Message Date
Tony Murray
4b65dc41d2 Graphing cleanup (#14492)
* WIP

* Fixes and cleanups

* Move parseAtTime to Time util class

* lint fixes, explicitly define variables

* Style fixes
2022-10-28 08:06:29 -05:00
Tony Murray
7dd3a224fa Block disabled user session auth (#14473)
Do not allow users that are disabled to be logged in via cookie.
Allow all auth methods to disable users
2022-10-17 12:39:15 -05:00
Tony Murray
722791d086 Fix XSS when deleting device and port groups (#14472) 2022-10-17 12:38:16 -05:00
Tony Murray
09a2977adb Fix authentication mass assignment vulnerability (#14468)
Users were able to submit changes to fields they should not have access to change by bypassing the frontend validation.  Correct backend validation to prevent that.
2022-10-17 12:11:14 -05:00
Jellyfrog
b31b992020 Rework socialite integration (#14367)
* Rework socialite integration

Prevents unnecessary work each boot

* Update SocialiteController.php

* Gen 2
2022-10-07 20:52:55 +02:00
Tony Murray
e4451714e2 version and git helper improvements (#14412)
* Fix up version and git helpers
Improve method names
Move all git calls into the git helper
Allow runtime and external cache of results where appropriate
Consolidate version headers for discovery, poller, and validate

* Style fixes

* improve consistency in git calls

* fix style

* don't send name inconsistently

* Improve database versions

* No need to cache Version it is not used more than once currently.
2022-10-02 00:41:56 -05:00
Tony Murray
f60b6788d3 Cache version data (#14404)
* Cache version data
Calling cli commands can be expensive, cache the results.

* style fixes

* Fix pre-laravel usage

* fix lint
2022-09-28 23:23:32 -05:00
Tony Murray
e990dfcb35 Disable plugins that have errors (#14383)
* Disable plugins that have errors
Disable plugin if a hook throws an error and set a notification
Move notification code to class, so we can access it
Clear notification when plugin is attempted to be enabled again

* fix style and lint fixes

* another lint fix and handle if property is missing
2022-09-25 22:47:58 -05:00
Tony Murray
0805002086 Fix scheduled maintenance xss (#14360)
Fix for fields title, notes, and maybe recurring_day. Other fields can't store html.

https://huntr.dev/bounties/bcb6ee68-1452-4fdb-932a-f1031d10984f/
2022-09-16 11:59:48 -05:00
Tony Murray
ad8580d694 Cleanup and optimize the availability widget (#14329)
* Cleanup and optimize the availability widget
Default sort is display name
Sort applies to services too (services always last)
May need to refresh the page to get new css

* style

* We don't need request (lint fix)

* Wrong service field name
2022-09-09 18:22:58 +02:00
Jellyfrog
152497a098 PHPStan: Enable more checks (#14318)
* PHPStan: Enable more checks

* Fixes

* Fixes

* Deprecation fixes
2022-09-09 07:08:06 -05:00
Marek Wobst
22f84ef3d8 Add additional sorting options for Availability Map (#14073)
* Fix IPv6 in service check host (#13939)

* Add hostName cleaning to Clean

* Apply RFC 5952 formatting to Clean::hostName output

* Use more liberal cleaning for hostnames

* Remove unwanted whitespace

* Apply Clean::hostName() to all relevant fields

* Fix docstring

* Use IP::isValid inline

* Update Clean.php

* Update services.inc.php

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

* Add sorting support for additional columns + dual column

Additional columns are Display Name (display) and System Name (sysName)

Dual column means that first is sorted after status, then within
each status group another sort is done (every columns from single column
sorting is possible).

* Change code for styleCI

* Expand availability map sorting menu

Also change sysName to System Name – there is no real reason for
that short form.

* Add german translation for avail. map sorting/display options

* Adjust sorting behaviour in Availability Map

The dropdown now presents two options:

- Display Text: Sort by the selected value of the dropdown 'Display Text'
- Status: Sort by status, then by selected value of dropdown 'Display Text'

As the field 'display' (The display name) may contain template functions
etc., sorting is not done by SQL means; instead custom sorting is done
within the controller.

* Apply fix for styleCI

* Apply fix for styleCI, part 2

* Update availability-map.blade.php

* Update availability-map.blade.php

* Update availability-map.blade.php

* Update de.json

* Update AvailabilityMapController.php

* Update AvailabilityMapController.php

* Update availability-map.blade.php

* Update de.json

Co-authored-by: Sander Steffann <sander@steffann.nl>
Co-authored-by: Tony Murray <murraytony@gmail.com>
2022-09-07 20:02:00 -05:00
Tony Murray
dc050711ec 2fa not all routes have names (#14311) 2022-09-07 09:06:24 +02:00
Tony Murray
9fdc213f25 Return GraphImage to include more metadata (#14307)
* Return GraphImage to include more metadata
Allows things like including title.
Implements __toString for backwards compatability
getImageData to allow controlling the output through flags

* Style and Lint
2022-09-06 07:33:57 -05:00
Tony Murray
302a989d4e Email Transport: embed graphs by default (#14270)
* Email embed graphs

* Allow attachment for non-html
Add setting to webui
Correct $auth setting

* Cleanups, throw RrdGraphException instead of returning an error image.
Generate the error image later, giving more control.
Reduce code duplication a little

* Style and lint fixes
Change to flags

* Add baseline for lint errors I don't know how to resolve

* oopsie, changed the code after generating the baseline

* Tiny cleanups.  Make set DeviceCache primary, it is free.

* Docs.

* email_html note

* Allow control of graph embed at the email transport level to override the global config.

* Allow control of graph embed at the email transport level to override the global config.

* Add INLINE_BASE64 to make it easier to create inline image tags
2022-09-05 20:41:55 -05:00
Tony Murray
ec8629fb63 Discord ability to attach graph images (#14276)
* Discord ability to attach graph images
Must use @signedGraphTag()
Needs more work on the graph side of things still: issues with CORs and other.

* Fixes

* alert data is an array for transports

* No need to decode, that was a bug before
2022-09-05 16:20:10 -05:00
Tony Murray
2e42326e34 Remove reference to unused variable (#14280) 2022-09-03 23:45:12 -05:00
Tony Murray
5c76890373 Add @signedGraphTag() and @signedGraphUrl() blade directives (#14269)
* More secure external graph access
Add @signedGraphTag() and @signedGraphUrl() blade directives
Takes either an array of graph variables or a url to a graph
Uses a signed url that is accessible without user login, embeds signature in url to authenticate access
See Laravel Signed Url for more details.
Adds Laravel route to graphs (does not change links to use it yet)
@graphImage requires the other PR
Also APP_URL is required in .env

* missing files from rebase

* Fix url parsing with a get string

* allow width and height to be omitted

* Documentation

* Add to, otherwise it will always be now

* Doc note for to and from relative security

* fix vars.inc.php (Laravel has a dummy url here)
2022-09-03 12:48:43 -05:00
Tony Murray
6f5cf7727a Misc webui code cleanups (#14242)
* Misc webui cleanups

* Style

* More

* graphing fixes

* More graph cleanups

* more fixes, graphs and device pages

* style
2022-08-30 12:55:37 -05:00
Tony Murray
673ad552a1 Device settings: attempt to open related tab (#14250)
* Device settings: attempt to open related tab

* remove baseline
2022-08-28 21:45:52 -05:00
Tony Murray
323f0ea8b5 Fix removing all port groups (#14253)
* Fix removing all port groups

* Make backend work in the situation where this endpoint is used for more than just this setting change
change event is called multiple times when select2 is cleared (once for each item)
prevent duplicate backend calls
Remove no default Port Group item
2022-08-28 20:57:16 -05:00
electrocret
478d800384 View Ports in Portgroups (#14141)
* Add group case

Add group case for portgroup URL query

* Add PortGroups to MenuComposer

* Add PortGroups to Menu blade

Adds to menu blade, using a similar behavior as Locations.

* Make PortCount into link

Make port count into like similar to DeviceGroups device count.

* Update MenuComposer.php

Make StyleCI happy

* Update MenuComposer.php

Make StyleCI happy

* Update ports.inc.php

Make StyleCI happy

* Update menu.blade.php

Menu fix.

* Update Menu so Manage Groups always displays.

* Adding Group function

* Add group to filterFields

* Trying suggested change

* Subquery

Co-authored-by: Tony Murray <murraytony@gmail.com>
2022-08-07 14:49:57 -05:00
Tony Murray
e9211d93c0 Fix ports display (#14183)
* Fix ports with deleted device breaking all ports display

* Only filter callable based filters when required
2022-08-05 09:01:15 -05:00
electrocret
1d1b2b1c8b Ports by device group (#14175)
* Add devicegroup filterFields

* add Devicegroup to post function

* StyleCI

* Add GUI Element

* Less wordy

Dropped "View" from the link. Made it too wordy for such a small GUI insertion.

* Moved DeviceGroup Ports link to a separate column

I realized how it could be confusing to have links to two different items in the same column, so I separated the Ports out.
2022-08-04 18:09:21 -05:00
Jellyfrog
670f964e98 Validate: use "database version" instead of "mysql version" (#14158)
* Validate: use "database version" instead of "mysql version"

* wip

* wip
2022-07-29 11:36:18 -05:00
Tony Murray
4536ccbcab Fix device filtering false values (#14103)
now disabled=0 and ignore=0 filters should work
2022-07-11 14:56:52 -05:00
Tony Murray
9d28ee9200 Reset the opcache after install (#14098)
* Reset the opcache after install
Follow up to #14097

* clear the config, will be cached again on daily anyway
2022-07-09 02:57:09 -05:00
Tony Murray
25c40301d1 Update config cache on install finalize step (#14097)
This make sure the user doesn't get stuck in a loop.
2022-07-09 00:36:45 -05:00
Tony Murray
2b67dde6dd Remove mib poller module remnants (#14077)
fixes #14075
2022-07-01 06:54:50 -05:00
Tony Murray
7a0d604cdd Automatic fixes for validation failures (#13930)
* Automatic fixes for validations

* webui

* lint fixes

* Fix an install issue with ConfigSeeder requesting cli input in web page.

* Do not use c_echo in validate.php print_fail()
2022-06-10 16:25:33 -05:00
Tony Murray
32f1ce494e Dashboard code cleanup (#13996)
* Dashboard Cleanup
Remove static widgets table, list of available widgets should not be in the database.
Remove legacy ajax scripts
Cleanup and reorganize controllers

* reorganize code to put all dashboard things into it's controller
better url scheme while supporting the original

* lint clean ups

* properly formatted language file

* style fixes

* update schema
2022-05-31 08:08:40 -05:00
SourceDoctor
1c6fc0f130 Device Types Widget (#13670)
* show all Device Types in Location Overview

* .

* .

* .

* get device types from config_definition

* reduce column to present device types

* .

* fixes

* .

* show/hide columns, even device types which are not present

* only show top n used device groups

* .

* .

* .

* Device Type Widget

* .

* .

* linter fix

* Update DeviceTypeController.php

Co-authored-by: Tony Murray <murraytony@gmail.com>
2022-05-25 15:03:01 -05:00
Tony Murray
5076deccf3 Improve the efficiency of some queries (#13974)
* Improve the efficiency of some queries
Mostly by switching from whereIn to whereIntegerInRaw.
This inserts integers directly into the query instead of using placeholders (also escapes them)

also remove extra json_encode/json_decode in PingCheck

* Fix return types

Probably will result in some missing baseline exceptions.

* Update PingCheck.php

* whitespace
2022-05-16 09:57:58 +02:00
Tony Murray
9f388c932f More realistic test data. (#13969)
Fixes #13966
2022-05-06 15:24:06 -05:00
Tony Murray
014213680f Move Config loading to a service provider (#13927)
* Move Config loading to a service provider
That way other service providers can depend on it
Move various random listener registrations into the EventServiceProvider
Various startup cleanup

* Config::persist Set live variable before persisting incase db update fail

* Disable strict mode for legacy code (init.php)

* Disable debug after os test data is gathered

* remove Eloquent::boot it is never used

* remove Eloquent::version

* lint fixes

* style fixes

* there is no c_echo here
2022-04-22 19:12:07 -05:00
Tony Murray
cc6112b8fb fix graylog xss (#13931) 2022-04-20 01:10:02 +02:00
Tony Murray
0a84098211 Port Validation Page to Laravel (#13921)
* Revamp validate web page
 to load page then validate, instead of validate then load page

* style fixes

* lint cleanups

* fixes

* translations and a couple fixes

* style fixes

* move result serialization into the class.
2022-04-14 11:22:40 -05:00
Tony Murray
c8606aab6b Fix install icons (#13904) 2022-04-09 15:05:09 -05:00
Mark Westerterp
86a504e675 Fix Oxidized Config tab showing when Device OS or Device Type is disabled (#13809)
* Fix Oxidized Config tab showing when Device OS or Device Type is disabled

Fixes https://github.com/librenms/librenms/issues/13808

* StyleCI

* Apply Jellyfrogs suggestion to simplify the code
2022-02-27 10:56:33 +01:00
Jellyfrog
09929bd686 Implement OAuth and SAML2 support (#13764)
* Implement OAuth and SAML2 support via Socialite

* Add socialite docs

* fixes

* Additional information added

* wip

* 22.3.0 targeted version

* Allow mysql auth as long as there is a password saved

Co-authored-by: laf <gh+n@laf.io>
Co-authored-by: Tony Murray <murraytony@gmail.com>
2022-02-20 22:05:51 +01:00
PipoCanaja
3ac0de16b2 STP - various fixes (#13773)
* Filter fix
* Add link to device for bridge address and designated root if available
2022-02-13 19:04:12 +01:00
Peca Nesovanovic
c7b63b574f [widget] Top Devices (#13748)
* count only UP ports

* ci
2022-02-12 23:39:17 +01:00
Tony Murray
29bd6789cb Stp module rewrite (#13570)
* STP module rewrite WIP

* Finish rewrite

* Ignore disabled and log root/topology changes

* Remove interfaces for now

* fix style

* Lint fixes

* Document ResolvesPortIds and hide map functions

* whitespace fixes

* Revert to stpInstances in case someone writes mstp support

* missed one

* phpstan fixes

* Handle table and oids separately

* forgot to register observer

* Test data and correct non-table handling in SnmpResponse->table()

* update test

* test data

* revert aos7 silly things

* minimal polling

* Update test data

* order ports_ntp and rename new field to port_index

* forgot the db_schema

* revert ciena-sds port things

* MSTP support, maybe

* Adding test data

* Filter bad lines instead of discarding the entire snmp response
and capture fixes and test data

* fresh data

* add os data

* update data, ignore unfound ports, obviously bad device implementation.

* fixes

* Ignore context files in os detection test

* Remove empty table data

* add ciena-sds vlan

* designatedCost column is too small

* Update stp webui

* Refactor code to interfaces, to allow vendor mibs

* update schema

* fix issues added by abstraction

* STP fixes

* Default to no context for vlan 1

* never store vlan 1

* Update test data

* remove eltex brokenness

* fix style

* fix stan

* Fix Rewrite MAC to Hex padding with floats

* fix sqlite migration
2022-01-30 16:28:18 -06:00
ilGino
b4e9833e30 [WebUI] Change icon of links pointing to Health from fa-dashboard to fa-hearbeat (#13729)
Health is always referred to with the fa-heartbeat icon.
Instead, in the device list, the link pointing to device's Health is the fa-dashboard.
In order to make the device-list page more visually consistent, I propose to change the icon from fa-dashboard to fa-heartbeat in the device lists.

Regards
GG
2022-01-29 14:44:30 +01:00
Jellyfrog
1debe5e166 Use built in method to render a string with Blade (#13688) 2022-01-26 07:10:06 -06:00
Andrea Beccaris
0fc2f9e4c9 Add API-routes for listing MPLS SAPs and services (#13561)
* add apis for mpsl services and saps

* updated docs

* removed dbFetch, orm instead

* changed queries

* Removed unused variables

* Update api_functions.inc.php

* Update api_functions.inc.php

* Update api_functions.inc.php

* Update api_functions.inc.php

Co-authored-by: laf <gh+n@laf.io>
2022-01-20 08:15:23 -06:00
SourceDoctor
f9f0d6ca8e sort Vlan Ports by ifName, ifDescr (#13657)
* sort Vlan Ports by Name

* .
2022-01-09 08:45:45 -06:00
Peca Nesovanovic
dc73154ae6 VLANs sort in GUI (#13628) 2021-12-20 12:01:39 +01:00
Tony Murray
a95efd6d2a Global search: search device display (#13583)
* Global search: search device display
Add display field to search (also port_desc_descr, portName, and bgpPeerDescr)
Rewrite backend
update typeahead bundle
update devices and ports indexes
reduce some port field sizes so we can index them

* Style fixes

* remove nonsense
2021-12-06 16:12:24 +01:00
SourceDoctor
5e4e2c423c Availibility Map - show Display Name if set (#13574) 2021-11-28 12:08:44 +01:00