Commit Graph

563 Commits

Author SHA1 Message Date
Neil Lathwood
ad6ec7f72a Refactor alert templates to use Laravel Blade templating engine (#8803)
* Initial start on new templating support

* further updates

* more updates

* More working version

* Last fixes

* Small updates

* modified test to look for dbname.

* Schema update

* Added fix for not being able to disable Philips Hue transport

* Updated sql file

* Updated db_schema

* Set myclabs/deep-copy to be 1.7.x version in composer

* Fixes from murrant

* Forced nikic/php-parser to version 3.1.x in composer

* Updated composer to use custom fork of string-blade-compiler + fixed transport use

* Updated to always use correct template

* Merged legacy and blade templating engines

* Removed template type + fixed test-alert.php

* Added more template placeholders

* Added ability to reference data in templates as $alert->X

* Updated docs for templates

* Updated db_schema.yaml

* Added $alert->builder

* Clarify the use of $alert->builder

* Fixed the use of $alert->transport

* renamed schema file

* Added template validation

* Small update to fix travis issue

* Add Docs text to title bar

* Updated amqp to new of version

* Consistency in alert rule and template title bars
2018-07-14 22:15:43 +01:00
Tony Murray
eeb3d58f5b Improved Logging and Debugging (#8870)
Use Log facility when Laravel is booted.
Update init.php so we can easily boot Laravel for CLI scripts. (and just Eloquent, but that may go away)
Move all debug setup into set_debug() function and use that across all scripts.
Log Laravel database queries.
Send debug output to librenms log file when enabling debug in the webui.
Allow for colorized Log CLI output. (currently will leave % tags in log file output)

** Needs testing and perhaps tweaking still.

DO NOT DELETE THIS TEXT

#### Please note

> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.

- [x] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)

#### Testers

If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`
2018-07-13 23:08:00 +01:00
Tony Murray
846cf11331 Support specifying submodules in poller and discovery for debug (#8896)
Mostly useful for debugging

DO NOT DELETE THIS TEXT

#### Please note

> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.

- [x] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)

#### Testers

If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`
2018-07-12 21:30:39 +01:00
Daniel Preussker
4e79465f43 Feature: Add option to ignore blockdevice regex (#8797)
* Feature: Add option to ignore blockdevice regex

* Update defaults.inc.php

* Update functions.php
2018-06-05 09:28:13 +00:00
Neil Lathwood
475f60001c alerts: Updated parse_email() to use email_user config value (#8706) 2018-05-14 13:56:43 -05:00
Tony Murray
1ad7f3138b Add Laravel to LibreNMS (#8318)
* Add Laravel to LibreNMS.

* Try to set permissions during initial install and first composer update to Laravel.

* Fix composer.lock
Fix missing db config keys

* Start building v1 layout
Port ajax_setresolution, inject csrf into jquery ajax calls
Layout works, building menu
Partially done.

* Fix device group list
remove stupid count relationships

* Print messages for common boot errors.
Don't log to laravel.log file.
Log to error_log until booted, then librenms.log

* Fix up some issues with Config loading
Start of custom directives

* Custom blade directives: config, notconfig, admin

* Preflight checks
Only load config files once.

* Update the composer.lock for php 5.6

* Menu through routing

* Start of alert menu

* Better alert scopes

* reduce cruft in models

* Alerting menu more or less working :D

* Fix style

* Improved preflight

* Fix chicken-eggs!

* Remove examples

* Better alert_rule status queries
Debugbar

* fix app.env check

* User Menu

* Settings bar (dropped refresh)
Search JS

* Toastr messages

* Rename preflight

* Use hasAccess(User) on most models.
Add port counts

* Missed a Preflight -> Checks rename

* Fix some formatting

* Boot Eloquent outside of Laravel
Use Eloquent for Config and Plugins so we don't have to connect with dbFacile inside Laravel.
Move locate_binary() into Config class

* Config WIP

* Try to fix a lot of config loading issues.

* Improve menu for non-admins removing unneeded menus
url() for all in menu

* Only use eloquent if it exists

* Include APP_URL in initial .env settings

* Implement Legacy User Provider

* Helper class for using Eloquent outside of Laravel.
Allows access to DB style queries too and checking the connection status.

* Fix up tests

* Fix device groups query

* Checking Travis

* copy config.test.php earlier

* dbFacile check config before connecting
Don't use exception to check if eloquent is connected, it gets grabbed by the exception handler.
Ignore missing config.php error.

* Fix config load with database is not migrated yet.

* Remove Config::load() from early boot.

* Use laravel config settings to init db (this prefers .env settings)
Fix bgp vars not set in menu
add _ide_helper.php to .gitignore

* Restrict dependencies to versions that support php 5.6

* Update ConfigTest

* Fix a couple of installation issues

* Add unique NODE_ID to .env

* Correct handling of title image

* Fix database config not loading. Thanks @laf

* Don't prepend /

* add class_exists checks for development service providers

* Fix config value casting

* Don't use functions that may not exist

* Update dbFacile.php

* d_echo may not be defined when Config used called.

* Add SELinux configuration steps
More detailed permissions check.
Check all and give complete corrective commands in one step.

* Ignore node_modules directory

* Re-add accidetal removal
2018-05-09 08:05:17 -05:00
CZ
23740bce6f device: Added support for FiberHome Switches S5800/S4800/S2800 (#8569)
* Fiber Home Switch Device Support
- Basic OS support
- New Logo
- Sensor support
- Fiberhome MIBS (wriSMI)

* Fibrehome Switch Device Support
- add mempools discovery

* Fiberhome Switch Device Support
- remove mib bases high/low limit for FAN entity

* Fiberhome Switch Device Support
- remove unsupported processor high_limit option

* FiberHome Switch Device Support
- snmpprec files for S28/S48/S58 added
- removed not used FH MIB files

* Fiberhome Switch Device Support
- add snmprec for FHN5800 FHN4800 FHN2800

* Update fiberhome.svg

* FiberHome Switch Device Support - changes as per request

* FiberHome Switch Device Support
- adjusted code to PSR2 standard

* FiberHome Switch Device Support - add tests

* FiberHome Switch Device Support - added back fiberhome.png since currently expected in other json

* FiberHome Switches Device Support - Deleted fiberhome.svg (for now)

* Fiberhome Switch Device Support - corrected wrong MIB renaming

* Update fiberhome-switch.inc.php

* Update fiberhome-switch.inc.php

* Update fiberhome-switch.inc.php

* Update fiberhome-switch_fh4800.json

* Update fiberhome-switch.json

* Update fiberhome-switch_fh2800.json

* Update fiberhome-switch.yaml
2018-04-22 14:01:37 +01:00
Neil Lathwood
2ee4ea2abc fix: Use email_user variable as from name for emails if available (#8550)
* fix: Use email_user variable as from name for emails if available

* Update functions.php
2018-04-12 07:30:38 -05:00
Neil Lathwood
9b1a3fb86a refactor: Use snmp.version config option to allow users to set versions available (#8512)
* refactor: Use snmp.version config option to allow users to set versions available

* Updated to just use snmp default version for auto discovery

* remove additional spaces

* remove use Config
2018-04-11 22:35:51 -05:00
Tony Murray
d841625f12 refactor: Refactor database and config init (#8527)
* Refactor database and config init
Connect to the database without loading full config
Load config completely so post-processing is always done consistently.
Erase existing $config when loading, fixes issues in case we load the config twice.
If the database is not connected, don't try to load database settings. (Fixes some db errors on install)
Attempt to remove $config access/modification before init.php
Remove usage of db_name, that might not match the connected database.
Centralize db config loading, so we consistently apply db_test database settings.
Many of these changes are influenced by Laravel port.

* Some safety so we don't assign strings to numeric port field
Smooth out phpunit bootstrap

* Fix a couple of scrutinizer warnings.
2018-04-11 16:15:13 +01:00
Tony Murray
7250376104 refactor: Don't access $_SESSION directly for Auth (#8513)
* Don't access $_SESSION directly for Auth

* fix style

* add property annotations
2018-04-07 21:55:28 +01:00
Tony Murray
214472ba89 refactor: rename array_sort() to avoid function collision (#8494) 2018-04-01 21:27:41 +01:00
Tony Murray
3c3fbd3731 feature: Show composer status in web validate. (#8181)
* Show composer status in web validate.
Don't duplicate in validate.php

* Create variable to check if a group has been completed.
No longer skips database checks.
Extract a base class.
Fix locate_binary and find_executable issues (mostly exposed by lack of db)

* Update Validator.php
2018-02-27 15:57:20 +00:00
Tony Murray
de56dccc8a refactor: Move config loading into the Config class. (#8100)
Self contain dbFacile too.
Update rrdtool default setting to be similar to others.
Move silly cisco-entities.php into entity-physical.inc.php
2018-02-10 20:38:25 +00:00
Rémy Jacquin
19a17ed348 Allow administrators to edit devices sysName (#8149)
* Allow administrators to edit devices sysName
Signed-off-by: Rémy Jacquin <remy@remyj.fr>

* Fix html/pages/device/edit/device.inc.php identation
Signed-off-by: Rémy Jacquin <remy@remyj.fr>

* Revert "Allow administrators to edit devices sysName"

This reverts commit 11b127b082.

* Moved sysName editing to snmp tab

Signed-off-by: Rémy Jacquin <remy@remyj.fr>
2018-02-06 23:35:00 -06:00
Tony Murray
b2762d9fa7 refactor: Prevent function collisions with Laravel (#8166)
Make function call compatible
drop insensitive starts_with and ends_with for now as they aren't needed.
2018-01-29 21:58:21 +00:00
Tony Murray
88b4e31912 refactor: Refactored bgp-peers (#7972)
* bgp-peers update
Use IP parsing library more effectively.
Fix update issue
Include comware bgp-peers test data
deeper refactoring
Allow JunOS fallback to BGP4-MIB, some models only use that.
Add junos bgp4 data
Actually update all bpg data in the poller

* fix arista data. refactor some to prevent missing data from mucking things up

* refactor to use $oid_map for BGP4-MIB too

* A few comments to break up teh file a bit

* Junos bgp data an a quick revert for now.

* small cleanup

* fix ios bgp polling, add test data

* check the correct variable
2018-01-18 20:54:38 +00:00
Neil Lathwood
0a7ec12fd9 fix: Fixed the default fping config + changed variable name (#8060)
* fix: Fixed the default fping config and added docs on caveats to changing timeout

* millisec -> interval

* removed retries config option, no needed

* Update Performance.md
2018-01-09 20:16:48 +00:00
Neil Lathwood
42e5819130 refactor: Updated discovery/poller to use numeric sysObjectID (#7922)
* refactor: Updated discovery to use a core module for sysDescr/sysObjectID use

* final update hopefully

* revert changes

* more changes + docs

* migrated poller to use numerical sysObjectID

* more updates for sysObjectID

* update any alert rules which might have enterprises. in

* moved schema file

* small updates

* updated getHostOS()

* scrut fixes

* updated sysObjectId -> sysObjectID

* updated sysObjectId -> sysObjectID

* updated remainder of sysObjectId -> sysObjectID

* another sysObjectId -> sysObjectID

* fixed secureplatform test data

* Fix tests: $device is not pulled from the database before polling
Also, update the db in the core discovery module.
2018-01-06 23:00:47 -06:00
Tony Murray
fff66d3c00 Feature: Generic discovery and poller tests (#7873)
* Processor Tests!

* Capture data from live devices easily.

* fix up some stuff, remove powerconnect things as they seem to be just broken.

* formatting, fix missing assignment
add netonix processor data

* fix multi-line, always add sysDescr and sysObjectID
ios cpm test file

* revert composer change and fix whitespace issues

* add help text

* missed help text

* tighter debug output

* handle empty strings properly and mibs with numbers

* use keys for sorting as intended

* fix type with empty data

* oops :)

* whitespace fix

* try installing fping

* Fix TestCase collision + cleanup

* mark TestCase as abstract
don't run two instances of snmpsim

* better database dumps, improved capture

* style fixes

* fix quotes add a few more tables

* add --prefer-new, properly merge data

* Support separate discovery and poller data. But don't waste space if they aren't needed.

* refactor to use class
collects all code in one place for reusability

* reorganize

* Print out when not saving.

* Support for running multiple (or all) modules at once.

* tidy

* Change unit test to a generic name and test all modules we have data for.

* Add documentation and a few more tidies

* whitespace fixes

* Fix tests, add a couple more modules, more docs

* More docs updates

* Fix scrutinizer issues

* add bgp-peers
2017-12-20 08:36:49 -06:00
Neil Lathwood
2c919a48ff fix: Re-added peeringdb back into daily.sh (#7884) 2017-12-09 17:19:56 +00:00
Tony Murray
f1fa61758b feature: Print out operations stats per poller/discovery module (#7839)
* Print out operations stats per poller/discovery module

* Add line return so we can see polled time better.
2017-12-02 22:55:53 +00:00
Tony Murray
2e73b75297 fix: Use memcached to lock daily processes on Distributed Pollers (#7735)
* fix: use memcached to lock daily processes on Distributed Pollers

* All the locks!
2017-11-24 09:37:52 +00:00
Tony Murray
d59695f08e fix: revert to two gets for sysDescr and sysObjectID
Some devices don't like asking for them in one get for some reason.
2017-11-15 11:26:25 -06:00
Tony Murray
29fc07f018 mib_dir consistency (#7700)
* mib_dir consistency
also, all the snmpget mib_dir lines were unneeded.

* re-add mib_dir for now, can remove the redundancy later if I come up with something.

* fix tests
2017-11-13 20:45:00 +00:00
Tony Murray
5ad28c9202 feature: Track rrdtool time for poller (#7706)
* feature: track rrdtool time for poller

* Removed var_dump()
2017-11-11 19:44:25 +00:00
Zmegolaz
f453875c0f Merge pull request #7617 from Zmegolaz/fping-options
Fix: Better sanity checks of fping options.
2017-11-09 08:42:06 +01:00
Tony Murray
acb1de5772 feature: Implement snmp_getnext() (#7678)
find correct path to snmpgetnext (will do the same for others later)
fix undefined index in get_mib_dir()
2017-11-08 15:15:49 +00:00
Zmegolaz
ddb60f4266 Interval can't be lower than timeout. Set options to the limit if configured value was over/under the limit. 2017-11-03 23:07:42 +01:00
Tony Murray
54b476c769 fix: devices detected as ibmtl or generic (#7618)
* fix: devices detected as ibmtl
Guess at the sysObjectID, please report if you have devices that should be ibmtl and are no longer detected.
Add output of os in discovery.

* Always load all os for discovery.  Should be cached most of the time.
2017-11-03 16:10:24 -05:00
Zmegolaz
5126fd06fa Better sanity checks of fping options. 2017-11-03 11:00:27 +01:00
Zmegolaz
d9df643927 fix: Use correct sensor ID when removing device. (#7611) 2017-11-02 20:40:51 +00:00
Tony Murray
0d07f85257 feature: Allow snmpget in os discovery yaml (#7587)
* feature: Allow snmpget in os discovery yaml

Re-submit after release

* Remove extra trim in discovery and in snmp_get.
also trim() always returns a string, so is_string() check is a waste of cpu cycles.
2017-11-02 12:41:18 +00:00
Tony Murray
fb45f00340 fix: ping fails on servers that don't set PATH in cron (#7603)
* fix: ping fails on servers that don't set PATH in cron
Find the full path to fping and persist it in the database.
Adds the ability to persist settings with Config::set()

* Add ability to set webui settings.
No display of for paths, because it would be inconsistent.
2017-11-01 21:56:47 +00:00
Zmegolaz
297e5ae874 fix: Fail isPingable() if fping fails, take 2 (#7585)
* Fail isPingable() if fping fails, take 2.

* Fixed scrutinizer issues.

* Filter out the values we want instead of multi level array.
2017-10-31 08:31:29 -05:00
Tony Murray
426916dbe4 Revert "feature: Allow snmpget in os discovery yaml (#7558)" (#7576)
This reverts commits:
193db02475
b73c4e9d6e
a93bb6635d
2017-10-29 14:04:26 -05:00
Tony Murray
a93bb6635d refactor: Use one snmpget during os discovery (#7566)
Use only one snmpget to fetch sysObjectId and sysDescr
fix multiline data in snmp_get_multi_oid()
add snmp_get_multi_oid() to mock.snmp.inc.php
2017-10-28 11:53:05 +01:00
Zmegolaz
f8d7ccfe0d feature: Support for up/down detection of ping only devices.
* Added support for ping only devices.

* Renamed sql-schema/206 to 207.

* Discovery tried to detect the OS when it shouldn't.

* Updated db_schema.yaml

* Added ping icon.

* Don't show unused graphs and tabs when SNMP is disabled.

* Allow the user to specify OS of ping only devices.

* Removing custom OS now changes it to 'ping'.

* Removed unnecessary use of mres().

* UI select box for SNMP enable/disable.

* Hide device_ping_perf if ping is disable on device.

* Fixed SNMP settings update status messages.

* Added functionality to add ping only devices via the web ui.

* Added ping only option to addhost.php

* Added ping only support to snmp-scan.py

* Moved sql 208 to 211

* Fixed scrutinizer issues.

* Fixed broken ossearch.

* Added ping only support to the API.

* Updated API doc.

* Added (optional) to OS and hardware description. Hid Port Settings, Applications, Modules, Storage, Processors, Memory and Components from the edit menu

* Style fix.

* Updated ping icon.

* clean() instead of mres(). More escaping. Better help in snmp-scan.py and addhost.php

* Fixed scrutinizer issue.

* Always try SNMP in snmp-scan.py, new option for it in addhost.php. Slice instead of chunk in ajax_ossuggest.php. Other minor style changes.

* Updated sql modifications to insert the new column in the same place as in db_schema.yaml.
2017-10-27 22:59:25 -05:00
Tony Murray
b73c4e9d6e refactor: Allow os discovery deferral (#7561)
Defer some os till last, generic or slow ones. (linux, freebsd, ibmtl)
last file standing is ubnt.inc.php
2017-10-27 21:55:14 +01:00
Tony Murray
193db02475 feature: Allow snmpget in os discovery yaml (#7558)
* feature: Allow snmpget in os discovery yaml
Convert all remaining os except airos.

Affected OS: asuswrt-merlin, ddnons, dsm, extrahop, huaweiups, ibmtl, pcoweb, pktj, qnap, remoteeye4, sentry3, sentry4, tomato

There should be not change in detection.

* Fix, asuswrt-merlin and tomato with snmpsim.  May not have been an issue with actual devices because of -Oa leading " was a bit odd.

* missed file
2017-10-26 20:48:33 +01:00
Tony Murray
51ba934e11 feature: Added web validation (#7474)
* refactor: convert validations to modules to prep for gui integration

* accidentally dropped, schema update

* fix accidental output to webui

* mention discovery-wrapper.py and re-arrange.

* refine some fix statements

* rename the Config validation group to Configuration.

* fix some scrutinizer issues
remove as many local functions from validator.php as possible
move extensions from pre-check
remove duplicate timezone check
looks like there is some db schema differences between mariadb 10.1 and 10.2, investigating

* mariadb version diff take2

* Check schema version first for database.
Remove stop to go back to command line for install docs.
Add helpful link when there is no devices added to /addhost

* fix incorrect validation for empty string defaults

* Fix style

* Add additional file permissions checks

* catch exception and fail for invalid timezone
Change visuals a bit.

* add php version warning

* fix space
2017-10-26 07:56:09 +01:00
Chris A. Evans
04bb65b762 newdevice: Added Brocade IronWare interface dBm sensor support (#7434)
* Added IronWare iface dBm sensor and related OID pr~e-cache

* fixed syntax violations

* added return_num() function and modified ironware dbm sensor to use it

* Update functions.php

* Update ironware.inc.php
2017-10-17 17:36:49 +01:00
Neil Lathwood
cdf31c47e1 Revert "bug: fail isPingable if fping errors" (#7496)
* Revert "fix: Fixed clickatell alert transport (#7446)"

This reverts commit 9774acd055.

* Revert "newdevice: Added support for Eaton ATS devices (#7448)"

This reverts commit 1318e5871c.

* Revert "newdevice: Updated Zhone MXK detection (#7488)"

This reverts commit 81667b9e20.

* Revert "docs: Added HipChat V2 WebUI Config Example (#7486)"

This reverts commit a31eaa9839.

* Revert "fix: Fail isPingable if fping errors (#7426)"

This reverts commit 1998845f06.
2017-10-16 11:56:47 +01:00
Daniel Preussker
1998845f06 fix: Fail isPingable if fping errors (#7426) 2017-10-15 20:29:08 +01:00
Tony Murray
c0b267b49c refactor: Discovery protocols re-write (#7380)
* refactor: discovery protocols re-write
extract more code to make it easier to read
use snmpwalk_group
walk lldpRemTable instead of lldpRemoteSystemsData
Optimize discover_device to reduce dns lookups of bad dns names
Make discovery_by_ip behavior consistent between cdp and lldp
move can_skip_discovery to discovery functions

Tested lldp, cdp, and ospf.

* always discover links even if the remote device isn't in system
Fix discover_link always updating

* fix style

* fix update, not fetching id

* increase platform length.  Most devices use sysDescr here, which is max length 255

* remove orphaned links

* update db_schema.yaml
2017-10-04 08:16:23 +01:00
Tony Murray
6ea6218f47 refactor: rewrite is_valid_port() (#7360)
* refactor: speed up is_valid_port()
Convert is_valid_port to Config
Several Config optimizations
Update documentation

* fix getCombined() when os key is not set, but global is.
Add more tests
2017-09-21 18:02:01 +01:00
Neil Lathwood
b19b9e90d2 Revert "refactor: rewrite is_valid_port()" (#7355)
* Revert "refactor: Added detection of vlan name changes (#7348)"

This reverts commit 4ad8faecdc.

* Revert "refactor: Rewrite is_valid_port() (#7337)"

This reverts commit 31607418e1.
2017-09-17 08:21:28 +01:00
Tony Murray
31607418e1 refactor: Rewrite is_valid_port() (#7337)
Convert is_valid_port to Config
Several Config optimizations
Update documentation
2017-09-16 10:13:03 +01:00
Tony Murray
7b262a6851 refactor: Improve yaml state discovery (#7221)
* feature: Improve yaml state discovery
Handle state values that are returned as strings instead of int
Synchronize state values for existing state translations so we can change them without creating a new translation and losing historical data
More extensive/verbose yaml discovery phpunit tests
dbBulkInsert, use the first entry instead of requiring the first entry to be at index 0

* Update sensor state documentation
re-order values for better readability
remove os check
Use snmpwalk_group since it is more flexible

* Add some more debug output in dynamic discovery
2017-09-03 19:58:39 +01:00
Zmegolaz
5441bafc81 fix: Fixed IPv6 host renaming (#7275)
* Fixed IPv6 host renaming

* Added get_rrd_dir() and modified other files to use it where appropriate.

* rrd_name() now uses the new function get_rrd_dir(), to make it simpler to modify the escaping in the future.

* Wrong function name in rrdstep.php
2017-09-02 13:45:31 -05:00