* Custom Maps: geo map and color background
tabs blade component
geo-map blade component and related script enhancements
* Update css/js
* style fixes
* update db_schema.yaml
* fix db_schema hand edit
* ignore phpstan being wrong
* Handle null
* another possible null spot
* Use standard file cache for custom map background images
* Create map->image as jpeg so we can compress it
* whitespace fix
* Fix background cancel button when other type is selected than the saved type
* Save and restore layer
* Map must exist before creating static image
* Don't show set as image button for Google and Bing.
Bing gives an odd error, but Google won't work.
* packet_loss macros quick fix
Due to device_perf table going away, this macro no longer functions as it did.
Use device status to make it somewhat functional until a better solution can be found.
* remove space
* Improved Latency graph
Store loss+jitter info in rrd instead of database
New graph icmp_perf (legacy ping_perf still valid referencing part of the newer data)
Delete device_perf table
* Change loss to an area so it is more visible
* Style fixes
* Cleanups from phpstan & tests
* exit_code fix
* Remove alert usage of device_perf
* Don't use magic __get
* Add test for bulkPing
Add host to previous tests
* style fixes
* Fix issue fping error responses
* Added support for new device OS Westermo WeOS
updated high limits
* Removed config regarding discovery and polling modules
* First test with moving sensor discovery to YAML
* Updates to discovery snr sensor, new test data, deleted sensors written in php
* Fix for SNR discovery sensor descr
* Removed shdsl from bad_iftype
---------
Co-authored-by: OSIRIS-REx <sphinxes@protonmail.com>
* rls definition
* Adding discovery
* Temp Sensor Discovery
* files for discovery
* Adding and updating MIBS
* Add snmpsim
* Modified yaml for unit test
* phpfmt format
* ci changes
* fixing temp sensor
* fix json
* db schema out of date causing bad snmpsim json
* changed temperature discovery to php
* With updated snmpsim data
* index_string restored, YAML for temperature
* style
* Fixed index_string usage in JUNOS files
* Update YamlDiscovery.php
Allow filtering on "index" in skip_values
* Move DBM to YAML as well
* style
* schema update
* Slot XX Yyyyyy
remove unwanted dot
* matching tests
* schema, round 2
* states in YAML
* put temp sensor back in yaml
* enable default poll and discovery modules
---------
Co-authored-by: PipoCanaja <38363551+PipoCanaja@users.noreply.github.com>
* remove unused entPhysicalIndex_measured
* tests
* tests
* doc
* entPhysicalIndex_measured must be ports OR null currently
* Should not pass tests
* tests
* back to normal
* Addition of influxdb-client-php to Composer.
* Addtion of InfluxDBv2 support.
* Addition of front-end options.
* Addition of documentation.
* Addition of the acknowledgement of the PHP library used.
* Fixed a unneeded bracket.
* Addition of a basic datastore test.
* StyleCI fixes.
* StyleCI fixes.
* StyleCI fixes.
* Fixed exception class.
* Revert accidental change.
* Fix to composer lock to not update all packages.
* Fix to composer lock to not update all packages, but still include the new Influx lib.
* Another attempt at getting Composer to behave the way I think it should work.
* Fixed merge-conflict in Composer due to #15869.
* Update composer.json
* Update composer.lock
* Update composer.json
* Update composer.lock
---------
Co-authored-by: Tony Murray <murraytony@gmail.com>
* Added options on edges for a label and to show graphs as bps as well as percentages
I think that vis.js needs to be updated to allow both bps and percentages at the same time.
* Add database migration
* Try to avoid putting multiple mid points in the same position
* Added a URL parameter for screenshot mode, where node labels are blanked out
Also fixed up the node labels in the editor
* Added legend to the editor as well as database options for reversing arrows and adjusting the edge separation
All features have been implemented in the editor, but need to be implemented in the viewer
* Fix missing defaults on the edit map list page
Added arrow reverse code to the viewer
Added legend code to the viewer
Added code to the editor to correclty handle moving the legend
* Formatting fixes and DB schema update
* Remove view from database schema
* Initial commit with editor.
* Added custom map models and database migrations.
Modified the controller and view to support saving the custom map settings to the database
* Added menu items and sorted out access permissions for maps and nodes
* Cleaned up some of the conditions in the javascript section of the blade
* Started work on the map data save
* Save of map nodes and edges is complete
* Got the map to load data on page load and added the delete functionality
* Fixed a typo and made link colour black if intertface is down
* Various usability fix-ups
* Show the save button on node and edge delete
* Fixed up access for users without global read
* Increase typeahead search size and standardised the way modals are triggered.
* Update data fetch to copy values into array so I can add more fields
* Convert blank array check to use count()
* Formatting changes
* More formatting fixes
* Formatting again
* DB schema update
* Revert previous commit
* Pass device id to pages
* Remove bad characters from javascript
* Re-add the - character in search results
* Update to avoid background colour being set to the current colour for offline devices
* Fixed a bug in speed detection when no suffix is given
* Fixed up the speed colour calculation and added comments
* Update default edge font size to 12
* Reduce arrow size
* Formatting fix
* Update the custom map controller to handle null interface speeds
* Alter JSON columns to be longtext instead
* Only refresh map data on successful save
* Update labels on default settings to make it clear that they are not saved
* Added timestamps to all custom map tables
Use HasFactory instead of static definitions for custom map tables
convert JSON DB fields to longtext and updated PHP to do the appropriate JSON decoding as a result
* Added missing vis.js images for the editor
* Split the custom map blade into different pages
* formatting fixes
* Initial commit with editor.
* Added custom map models and database migrations.
Modified the controller and view to support saving the custom map settings to the database
* Added menu items and sorted out access permissions for maps and nodes
* Cleaned up some of the conditions in the javascript section of the blade
* Started work on the map data save
* Save of map nodes and edges is complete
* Got the map to load data on page load and added the delete functionality
* Various usability fix-ups
* Show the save button on node and edge delete
* Fixed up access for users without global read
* Increase typeahead search size and standardised the way modals are triggered.
* Convert blank array check to use count()
* Formatting changes
* More formatting fixes
* Formatting again
* DB schema update
* Revert previous commit
* Pass device id to pages
* Remove bad characters from javascript
* Re-add the - character in search results
* Update to avoid background colour being set to the current colour for offline devices
* Reduce arrow size
* Only refresh map data on successful save
* Update labels on default settings to make it clear that they are not saved
* Added timestamps to all custom map tables
Use HasFactory instead of static definitions for custom map tables
convert JSON DB fields to longtext and updated PHP to do the appropriate JSON decoding as a result
* Added missing vis.js images for the editor
* Split the custom map blade into different pages
* Updated the custom maps to use the select2 searches for ports and devices
* Fix port search clearing with select2
* Update DB schema to add timestamps
* Add the ability to set a node alignment value where nodes will align to a grid
* Add a checkbox to re-center edge lines
* Schema update for node alignment
* Removed unused route
* Fixups after rebase
* Remove DevicePortSearchController
* Rebase fixups
* Remove unneeded controller
* Formatting fixes
* Update all network map documentation
* Fixed typo in doc
* Change background imgae database migration
* Update migration for custom map background to fix schema error
* Place a try/catch around the BLOB->MEDIUMBLOB migration
* Formatting fix
* Moved custom map background image location and added some SVG images to test as image options
* Updated the editor to use a static set of device images
* Update the image logic in the editor and added to the viewer
* DB Schema update
* Formatting
* remove svg height/width attributes
* Added some more icon options for arrows
* Added database migration to allow nodes to link to another custom map
Fixed an error in the image migration
* Added the ability to link a node to another custom map
* Formatting fixes
* DB Schema update
* Remove images-custom directory
* Explicitly cast map ID to int
* Made the image selection list dynamic based on the contents of the custom map icons directory
* Formatting fix
* Double-clicking on a link will take you to the link
* Remove whitespace
* Add translations
fix an xss and hopefully not add any new ones
refactor node image to use translations with fallback
* split modals out into separate files
return width/height to avoid js scope issues
* Formatting fixes
* refactor edit select page into a "manage" page
Still left:
validation/custom request
Controller refactor
ui tweaks
* MapSettingsRequest
* Refactor more routes, policy, controller
I think this is the last refactor. Everything is now organized in a standard way.
Missing a method to check if a user has access to a map
* Fix booleans and style
* Add versioning to the background image to prevent browser caching
* Fixed the background image update by splitting it into a separate modal
Changed the delete button on the map editor screen to return to the map list
* Formatting fix
* Added double-click actions in editor to edit nodes and edges
---------
Co-authored-by: Tony Murray <murraytony@gmail.com>
* search improvement for PortNac
* rename func
* style
* DB migration for timestamps
* style
* rules
* fix manually db_schema
* remove vlan only search for now
* add a bool column to ident historical nac entries
* add columns to the table
* queryByOui renamed everywhere
* age value instead of delete
* style
* style
* use Illuminate\Support\Facades\DB;
* tests fix
* module_tables.yaml
* dump model instead of tests/module_tables.yaml
* tests
* testVrp
* daily
* config
* display historical NAC entries in global view
* same for NAC device page
* nac tab on device/port view
* and display the tab link if necessary
* filter by port as well
* historical data in port tab
* formatters
* Updated bill_data table, alter indexes and add new column
* Added missing <
* Removed first
* Moved column in bill_data
* Updated schmea changes
* Updated schmea
* Updated migration
* Use id alias
* index after and only index
* Update and rename 2024_01_09_223917_bill_data_new_column.php to 2024_01_09_223917_bill_data_new_primary.php
* Trying these schema changes
* Another go
* And another
* Debugging
* Revert change
* Revert changes + debugging
* Updated schemas again
* Trying to rename column name
* Updated db_schema.yaml
* renamed column back to id
* Added debugging
* Added debugging
* Added debugging
* Added debugging
* Added debugging
* Remove redundant primary id
* Remove var_dump
* Remove var_dump
* I swear
---------
Co-authored-by: Tony Murray <murraytony@gmail.com>
* add a new notes field to the rule editor. use a bigger text field for sql queries to avoid mistakes...
* add api doc
* allow notes field from the collection
* add a sample notes to the collection
* lint and db schema
* unmix some schema changes from a nother PR
* unmix schema update No°2
* unmix schema update No°3 - silly me
* add strip_tags, minor optimisation, db default value
* apply linting
* db_schema empty '' as default
* update db_schema.yaml
* default value changed as 'BLOB, TEXT, GEOMETRY or JSON column 'notes' can't have a default value'
* better keep the migration in 2023...
* Update 2023_12_12_171400_alert_rule_note.php
* Update create-alert-item.inc.php
---------
Co-authored-by: PipoCanaja <38363551+PipoCanaja@users.noreply.github.com>
* Add isis module to os schema
Helps for enabling os.<osname>.isis true via lnms config:set
* Apply fixes from StyleCI
---------
Co-authored-by: StyleCI Bot <bot@styleci.io>
With tools installed, the string provided by ESXi contains a lot more information. In 8.9, Red Hat have further extended the string to include a machine readable string, parsable by tools that are compatible with OVAL:
Linux 4.18.0-513.5.1.el8_9.x86_64 Red Hat Enterprise Linux 8.9 (Ootpa) 8.9 Red Hat Enterprise Linux 8.9 (Ootpa) cpe:/o:redhat:enterprise_linux:8::baseos
* Disable GET login by default
GET login allows users to put username and password in the url, this is helpful for displays where you cannot login interactively.
Unfortunately, the plaintext password will be in the access logs.
GET login also allows brute force attacks against your install.
* Apply fixes from StyleCI
---------
Co-authored-by: StyleCI Bot <bot@styleci.io>
* Increase max package name length to 80 characters
One of my packages has a name of 65 characters. LibreNMS limits package names to 64 characters (`varchar(64) NOT NULL`). As the name of my package is truncated, polling fails with the following error:
```
Error polling unix-agent module for http-jglt01.gmdo.ha.cyberfusion.cloud. PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '458-python3-cyberfusion-cluster-configurations-redirect-fast-...' for key 'packages_device_id_name_manager_arch_version_build_unique' in /opt/librenms/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:117
```
There is no well-defined max package name length. An email on the `debian-devel` mailing list (https://lists.debian.org/debian-devel/2011/04/msg00981.html) states that the length of package names should not exceed 40 characters, and that the length of file names should not exceed 90 characters, but these limits are not enforced. Lintian does not check package name length, but does check that file name length does not exceed 80 characters (tag 'package-has-long-file-name').
Summarised: there are no well-defined and enforced limits, and those that Lintian advices differ from the aforementioned post on the `debian-devel` mailing list. Therefore, I have landed on the semi-random limit of 80 characters (which the original limit of 64 characters seems to be as well).
* Create 2023_11_04_125846_packages_increase_name_column_length.php
* Update db_schema.yaml
---------
Co-authored-by: Tony Murray <murraytony@gmail.com>
* 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>
Fixes issue when values weren't set
Can't set an upper limit since models are different
Also, no way to set this in the webui and the default alert rule doesn't use the values, so yeah, probably could have deleted the fields.
* Fix an agent bug if a process ran more than 999 days
Increase it to 274 years before that happens ;)
Fix a few other small bugs
* Update schema check file
* 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>
* 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
* 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>
Add new setting to specify if user roles will be set at login or not.
Without this setting enabled, roles are only set when the user is first created and never after that. If roles set via Filter-ID attribute or radius.default_roles change, they will never be reflected on existing users.
For that reason, the default is set to enabled. Historically, radius did not enforce roles.
* 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
* add migration file for new defaults for applications table
* update the db_schema yaml and tweak the migration so it does not change the varchar size for app_status