Commit Graph

184 Commits

Author SHA1 Message Date
Tony Murray
43b54fcf39 refactor: Handle database exceptions properly (#8720)
Display the errors to the user
Hide the query, unless APP_DEBUG=true in .env
Much easier to display output for other exceptions now, just need to add a render() function to them
2018-05-15 21:07:29 +01:00
centralscrutiniser
7cb930e318 Added AP/Client Count detection for FortiWLC (#8662)
* Added AP/Client Count detection for FortiWLC

* Corrected PHPCBF error on LibreNMS/OS/Fortiwlc.php

* Corrected PHPCBF error on includes/polling/os/fortiwlc.inc.php

* Removed IPV6-TC and re-added config.php.default per murrant comment

* Re-added config.php.default per murrant comment

* Added CPU% usage detection for FortiWLC

* Updated includes/polling/os/fortiwlc.inc.php with get_snmp_multi_oid

* Updated includes/polling/os/fortiwlc.inc.php with get_snmp_multi_oid

* Updated tests/snmpsim/fortiwlc.snmprec

* Create fortiwlc.json
2018-05-12 10:33:57 -05:00
Tony Murray
4347f0a055 Fix permissions check (#8699)
Add new checks for Laravel
2018-05-11 20:25:29 +01:00
Tony Murray
54aa0a4df4 Ignore plugin hook calling errors (#8693)
Mostly this is because the plugin methods aren't static.
2018-05-11 15:40:45 +01:00
Neil Lathwood
7b299983d5 fix: Fixed AD when no email address is returned (#8690) 2018-05-11 07:40:41 -05:00
Tony Murray
e0f9572582 Fix .env migration unescaped $ in passwords (#8688)
* Fix .env migration unescaped $ in passwords
Better fix for timezone in Laravel

* Simpler change
2018-05-10 13:20:24 -05:00
Tony Murray
e4bc556874 More pre-boot checks (#8685)
* More pre boot checks
Check php extensions
Laravel framework sub directories.
Check that web user belongs to the librenms group.
Make it clear that commands need to be run on the LibreNMS server.

* Handle spaces in .env
function was only public for testing
2018-05-10 08:18:57 +01: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
Tony Murray
8afafe7eb0 refactor: pre-commit.php updates (#8679)
Disable the log for unit tests to speed things up hopefully
2018-05-09 12:53:45 +01:00
Lucas Dousse
3e0c26ff50 webui: Make two-factor auth logo use response (#8652)
If you customise your logo and use png the logo on the two auth is not responsive. I purpose to add class
2018-05-08 22:51:21 +01:00
Nash Kaminski
f568adfe0a Do not fail validation when IPv6 is disabled by unloading the associated kernel module (#8648) 2018-05-01 13:54:35 -05:00
Tony Murray
d1e8e2177f fix: Fixed Q-BRIDGE-MIB VLANs (#8623)
* Fix Q-BRIDGE-MIB VLANs
Properly handle dot1qVlanTimeMark index (by ignoring it instead of assuming it is 0)
Adds test data for at least one device that uses Q-BRIDGE-MIB.

Fixes: #8516

* fix whitespace

* remove unused variable
2018-04-27 14:22:49 +01:00
ospfbgp
9a420a6910 device: Rebranding of Avaya BOSS and VOSS OS' (#8469)
* Update avaya-ers.yaml

Extreme bought avaya network assests so rebranding and moving some files.

* Add files via upload

Extreme bought avaya networking assets and so rebranding to Extreme and adding logos with OS for easier reading when on devices pages

* Update avaya-vsp.yaml

removing .1.3.6.1.4.1.45.3.79.1  This is a VSP 7024xl from avaya.  This is techincally not VOSS but BOSS operating system.  It should be in BOSS and avaya-ers.yaml

* Add files via upload

* Update and rename avaya-vsp.inc.php to extreme-voss.inc.php

* Update and rename avaya-vsp.inc.php to extreme-voss.inc.php

* Update and rename avaya-vsp.inc.php to extreme-voss.inc.php

* Update extreme-voss.inc.php

* Rename avaya-vsp.inc.php to extreme-voss.inc.php

* Rename avaya-vsp.inc.php to extreme-voss.inc.php

* Rename avaya-vsp.yaml to extreme-voss.yaml

* Update and rename avaya-vsp.yaml to extreme-voss.yaml

* Update avaya-ers.yaml

* Rename avaya-ers.yaml to extreme-boss.yaml

* Rename avaya-ers.inc.php to extreme-boss.inc.php

* Update and rename avaya-ers.inc.php to extreme-boss.inc.php

* Update and rename avaya-ers.inc.php to extreme-boss.inc.php

* Update and rename avaya-ers.inc.php to extreme-boss.inc.php

* Update and rename avaya-ers.inc.php to extreme-boss.inc.php

* Update and rename avaya-ers.inc.php to extreme-boss.inc.php

* Update extreme-boss.yaml

* Update extreme-voss.yaml

* Update and rename extreme-boss.yaml to boss.yaml

* Update extreme-voss.yaml

* Rename extreme-voss.yaml to voss.yaml

* Rename extreme-boss.inc.php to boss.inc.php

* Rename extreme-voss.inc.php to voss.inc.php

* Rename extreme-boss.inc.php to boss.inc.php

* Rename extreme-voss.inc.php to voss.inc.php

* Update and rename extreme-voss.inc.php to voss.inc.php

* Rename extreme-voss.yaml to voss.yaml

* Rename extreme-voss.inc.php to voss.inc.php

* Update and rename extreme-voss.inc.php to voss.inc.php

* Update and rename extreme-boss.inc.php to boss.inc.php

* Update and rename extreme-boss.inc.php to boss.inc.php

* Update and rename extreme-boss.inc.php to boss.inc.php

* Rename extreme-boss.inc.php to boss.inc.php

* Update voss.inc.php

* Update boss.inc.php

* Update boss.inc.php

* Update voss.inc.php

* Update voss.inc.php

* Update voss.inc.php

* Update voss.inc.php

* Update voss.inc.php

* Update voss.inc.php

* Update boss.inc.php

* Update boss.inc.php

* Update voss.inc.php

* Update boss.inc.php

* Update voss.inc.php

* Update voss.inc.php

* Rename avaya-vsp_8404c.snmprec to voss_8404c.snmprec

* Rename avaya-vsp_8404.snmprec to voss_8404.snmprec

* Rename avaya-vsp_8284xsq.snmprec to voss_8284xsq.snmprec

* Rename avaya-vsp_7254xtq.snmprec to voss_7254xtq.snmprec

* Rename avaya-vsp_7254xsq.snmprec to voss_7254xsq.snmprec

* Rename avaya-vsp_7024xls.snmprec to boss_7024xls.snmprec

* Rename avaya-vsp_4850gts.snmprec to voss_4850gts.snmprec

* Rename avaya-vsp_4850gts-pwr.snmprec to voss_4850gts-pwr.snmprec

* Rename avaya-vsp_4450gsx-pwr.snmprec to voss_4450gsx-pwr.snmprec

* Rename avaya-ers.snmprec to boss.snmprec

* Rename avaya-ers_1.snmprec to boss_1.snmprec

* Update and rename avaya-ers.json to boss.json

* Update and rename avaya-vsp_8404.json to voss_8404.json

* Update and rename avaya-vsp_8404c.json to voss_8404c.json

* Update and rename AvayaErs.php to Boss.php

* Update Boss.php

* Restore processor_type to avaya-ers in test data

* Update voss_8404c.json

* Update extremeboss.svg

* Update extremevoss.svg
2018-04-21 11:21:14 +01:00
Neil Lathwood
3db26c1d36 refactor: Allow _perc and _current columns to be string for alert rules (#8532)
* refactor: Allow _perc and _current columns to be string for alert rules

* Moved the check for column type
2018-04-14 14:11:11 +01:00
Neil Lathwood
fbbc2570c6 Refactor: Exclude modules from json test data when empty (#8533)
* refactor: Exclude modules from json test data when empty

* applied murrants patch
2018-04-12 19:37:13 -05:00
Neil Lathwood
974b5eb84f device: Updated cyberpower sensors and os support (#8551) 2018-04-11 22:32:24 -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
Paul Heinrichs
c828114639 device: Pmp 450m metrics added (#8537)
* Update cambium MIBS

* Add pmp-450m utilization metrics

Added test data

* Re-run json test data

* Rremove application data from json

* Rename pmp tests to match hardware
2018-04-11 07:59:08 -05:00
Tony Murray
9152becec7 refactor: Moved AD user and group filter functions into ActiveDirectoryAuthorizer (#8545) 2018-04-11 10:06:46 +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
djamp42
a3f822b7a3 device: Added Total Wireless Client and AP count for Ruckus Wireless OS Type (#8503)
* Create Ruckuswireless.php

Add Total Authorized Clients and Total AP Connected to Zone Director, Tested on Zone Director 1200 & 1100.

* Update Ruckuswireless.php

* Create ruckuswireless_zd1200.snmprec

* Create ruckuswireless_zd1100.snmprec

* Add AP count and Wireless Client over graphs

* Update ruckuswireless_zd1200.snmprec

* Update ruckuswireless_zd1100.snmprec
2018-04-07 20:13:18 +01:00
theherodied
f69412525e device: Added AeroHive Wireless Support (#8500)
* AeroHive 001

* AeroHive 002

* AeroHive 003

* Removed duplicate HiveOS for OS

* Added AP550 detection

* changed to Hiveos-Wireless

* changed back to HiveosWireless. Hiveoss-Wireless doesn't work

* changed back to HiveosWireless. Hiveoss-Wireless doesn't work

* Added Processor Usage.

* Added Mempool.

* working on review requests 001

* working on review requests 002

* stuck on radio stats

* WirelessSensor.php added channel 165

* Added AP250 snmprec

* Frequency work in progress.

* Frequency trying another way.

* Frequency trying another way 002

* Fixed AH-SMI-MIB? Added array try 003

* Frequency array is working thanks to Murrant.

* Frequency array description working.

* Added TX Power

* changed interface naming method

* Review changes 001

* Review changes 002

* Review changes 003

* Added json test data.

* Fixed test data 001.
2018-04-07 13:27:19 +01:00
Tony Murray
cc377353f3 Snmpsim fail when it fails (#8392)
* Update snmpsim to fail better if it can't be started.
The main issue is the isRunning() check was done too soon after forking, the sh process was still running.

* increase default delay to 2s

* Pull this back, all we need is the sleep really.

* Remove removed exception
2018-04-05 22:49:58 +01:00
Joshua Rabino
189b428d50 alerting: Better VictorOps message (#8502)
* adding fields to VictorOps transport for better alerts

* adding fields to VictorOps transport for better alerts
2018-04-04 08:49:54 +01:00
Tony Murray
85d0e3b98e refactor: Move nested defaults to Config::processConfig() (#8429)
* Move nested defaults to Config::processConfig()

Fixes log_file when users set log_dir for example.

Removed stuff:
mibdir
dp_autocreate
base_url: setting http/https before config.php is loaded...
moved collectd setting to it's own config file

* add base_url mod back.
I thought that since definitions is called before config.php it was useless, but it changes the built in definition between http and https.
2018-04-03 15:53:25 +01:00
cchance27
63d6cf810a Cambium pmp ap client count discovery (#8487)
* Add pmp450 AP client count support

* add tests
2018-03-29 21:58:53 -05:00
Tony Murray
1a26017338 bug: LDAP fall back to slow search if memberof is missing (#8491) 2018-03-29 20:50:55 +01:00
Tony Murray
5c83aa1e28 refactor: LDAP debug output (#8434)
* LDAP debug
Updated LDAP and AD docs
ldap protocol default to v3 (so we don't have to set it all the time).  If this fails it should revert to v2.
ad was using auth_ad_timeout incorrectly (1 I think)

* Add option to list all users.
2018-03-29 11:40:27 +01:00
Tony Murray
333efe1402 Query builder fix root OR with more than one rule (#8457)
pushed the first recursion loop down, makes the code cleaner.
2018-03-23 14:39:13 +00:00
Tony Murray
0c0a70cc39 fix: Fixed validation sql for primary keys and first columns (#8453)
* Fix validation sql for primary keys and first columns
Remove extra space in generated sql :D

* Update Database.php
2018-03-23 07:51:34 +00:00
Neil Lathwood
544b363951 alert: Added support for disabling recovery notifications (#8430)
* alert: Added support for disabling recovery notifications

* reversed use of recovery

* removed debug + small update
2018-03-22 12:38:16 -05:00
James Long
aefc224a0a feature: Improve LDAP filters for getUserlist and getUserlevel (#8398) 2018-03-20 13:20:11 +00:00
priiduonu
40c5f5601e Update MoxaEtherdevice.php (#8409)
No special case needed as we have `sysObjectID` already.
2018-03-20 07:36:22 -05:00
Tony Murray
2f25d11747 More complete query builder parsing (#8422)
* fix like and is null operators

* Add between operator support

* Can't have one if ($expand) clause

* fix up empty, add tests

* Use single quotes for strings

* Fix moxa sensors order

* Fixed travis
2018-03-20 10:54:02 +00:00
Tony Murray
8cc8eb8dd2 refactor: Use elseif instead of else if (#8417) 2018-03-19 21:40:17 +00:00
vivia11
281e01d4f8 device: Added Radwin OS Wireless Sensors (#8372)
* Radwin OS added.

* Changing whitespace.

* Added test data for radwin 5550-0h150,5550-0150, 5200-0150

* Added radwin json test data

* Adding json test data for Radwin
2018-03-17 13:08:00 +00:00
Tony Murray
2bd6ceadc2 Fix query builder empty (#8408) 2018-03-17 13:03:51 +00:00
network-guy
3619f28cc2 Active Directory: filter disabled users, allow nested group membership (#8222) 2018-03-16 23:57:27 -05:00
Neil Lathwood
8136a1be33 Fixed LIKE parsing to work (#8406)
* Fixed LIKE parsing to work

* Do not add quotes for values that will already have them
2018-03-16 23:30:51 +00:00
Tony Murray
3cd6d90239 Fix save-test-data (#8399)
But now it buffers all output...
2018-03-16 09:11:49 +00:00
Tony Murray
2bcc76625c Module tests update: per module output, only store modules data that are run (#8355)
* Test data: don't save data for modules that were not run

* Sometimes mibs are prefixed with +

* Save output for each module and only output the errored module.
Also makes it easier to identify modules that were ran.

* Clean up json files.
Message when no module data exists.

* verbose output when phpunit --debug is used
order by for ports
avoid graphite output in tests
only load module_tables.yaml once

* use explode and strpos instead of regex since it is failing...

* Fix some warnings

* Fix whitespace
2018-03-14 22:28:01 +00:00
Neil Lathwood
03076c4025 feature: Added new alert rule builder UI and rule mapping UI (#8293)
* feature: Added new alert rule builder UI

* Updated to export sql queries

* More updates

* more changes

* removed debug

* fix scrut

* Updated to include import options + various other fixes

* fix rule

* Populate name from collection rules.

* Fix default rule import
Allow new and old style rules in the collection.
Don't add new yet as I'm not sure GenSQL() is working.

* Fix GenSQL call

* Extract filter building to class so it is nicely contained in one place

* moved schema

* some fixes and tweaks

* travis fixes

* Some more features / updates

* Fix up my mistakes when adding default rules

* Use a modal for new alert (Incomplete)
Larger dialog!!
Remove page loading stuff.

Working:
Loading rules, resetting dialog, importing from collection.

Not working yet:
select width
device limited rule access? don't know what this is...

Lots of unused stuff to delete...

* reload "table" after save

* fixed editing rule

* Auto select2 width

* Reload window on save

* Restore per-device alert. Remove debug.

* Small cleanups. Rule Name first.

* Restore button to button type. Rename schema.

* Fixes: wrong command to reload window, remove extra attributes, rule is never passed

* Fixed old rule editing

* some small updates for old imports

* travis update to use trusty

* maybe travis fix

* Ability to set alert rule mappings on the rule edit screen

* pip installs one line, no quiet for deploy

* update schema def

* Fix style and some copyright headers

* fix docs missing file

* Allow new versions of snmpsim and libraries

* Parser WIP

* Fix default rules insert

* reorganize

* Legacy import first draft done

* Implement saving
Skip translation to sql for now

* Working on glues

* small rule collection fix

* Working on glues

* Working on glues

* Docs updates + small UI changes

* Parser WIP

* reorganize

* Legacy import first draft done

* Implement saving
Skip translation to sql for now

* Working on glues

* Working on glues

* Working on glues

* Add table mapping, should move to it's own class

* WIP

* Glue working!!

* Extract Schema class

* Some final touches.
revert alerts_rules.json for now.

* Finish up initial implementation
Needs more tests

* Fix a few places

* small doc updates

* Fix finding tables in grouped rules.

* remove unused code

* code format fixes

* Some quick tests for Schema
Simplified output for findRelationshipPath. Always includes start and target in the result.
This simplifies a lot of code in QueryBuilderParser.php
This also always loads the target table data now (which we want)

* Make bill_id the PRIMARY index for the bills table

* Load macros from a json file in misc instead of the database.

* Fix whitespace and wrong key for collection.

* Handle IN properly when generating SQL

* Fix glue (devices.device_id = ports.port_id) is incorrect :D
Show ALL tables we can resolve relationships for in the query builder filter.

* Remove all macros from the database
Remove insert statements, leave updates to update user's existing rules.
2018-03-14 20:25:19 +00:00
Tony Murray
bacab61af2 refactor: Use composer.phar first and self-update it. (#8339)
* Use composer.phar first and self-update it.

* Ansi output for interactive shells.
If HOME isn't writable, set COMPOSER_HOME.

Simulated cron with env -i

* More verbose failures when attempting to download composer.phar.

* Change the regex again
Matches all versions here https://getcomposer.org/download/
2018-03-13 20:08:40 +00:00
Paul Heinrichs
a0c2783d27 alerting: Added Philips Hue as transport (#8320)
* Add Phillips Hue Bridge as Alerting transport

* Add Comment

* Update Transport docs

* Update Phillips to Philips Add sql schema
2018-03-09 19:30:27 +01:00
pep-un
0e09e09f04 bug: Improve LDAP filter in the getUserlist() function (#8253)
Improve LDAP filtering to improve the speed of some pages (Dashboard and
Edit User mainly). If we don't apply this filter all the users are getted
from LDAP and used in to the loop, with 2k users (for us) the page take
more than 15 seconds to be loaded.

I have check than people still have differante access with this fix.
2018-03-09 17:58:28 +01:00
James Andrewartha
6c3473a7f8 ewc: more WirelessSensors and processor/mempools support (#8294)
* Add Errors, NoiseFloor, RSSI, SNR and Utilization Wireless Sensors for ewc

* Enable processor/mempool support for ewc using existing enterasys implementation

* Add test data
2018-03-05 09:46:59 -06:00
Tony Murray
7b6e4f95c0 Library update (#8311)
* Library update
amenadiel/jpgraph 3.6.12 > 3.6.14
ezyang/htmlpurifier 4.9.3 > 4.10.0
tecnickcom/tcpdf 6.2.13 > 6.2.17

Also, make composer.lock match our composer.json to avoid a warning.

* Remove php snmp extension, we don't actually use it.
2018-03-02 19:32:09 +00:00
Arzhel Younsi
7eda8d9989 feature: Added a irc_alert_short option to only send the alert title (#8312)
* Add a irc_alert_short option to only send the alert title

* Add doc for 'irc_alert_short'
2018-03-02 17:52:47 +00:00
Tony Murray
9459eeb55f refacotr: Use HTTPS to fetch Composer (#8309)
* use https for composer

* Fixe alternate --version output for composer
2018-02-28 20:04:44 +00:00
Drew Hynes
764abde504 alerting: Added Gitlab transport for alerting (#8246)
* gitlab alert transport added

* fixed SQL file and cleaned up a bit

* updated license information

* added relevant information Transports documentation

* Fixed spacing issues

* removed unnecessary text from variable

* fixed sql schema file syntax

* changed sql schema order

* fixed creation of issues for resolution events

* addressed file name conflict

* fixed spacing, again

* removed unused variable

* Update Transports.md
2018-02-27 21:21:37 +00:00