47 Commits
Author SHA1 Message Date
Neil LathwoodandGitHub d1772ea1f2 Check if array exists for new alert rules and create if not (#9303)
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`
After you are done testing, you can remove the changes with `./scripts/github-remove`.  If there are schema changes, you can ask on discord how to revert.

Fixes: https://community.librenms.org/t/i-can-t-add-alert-rules-from-the-collection-webgui/5737
2018-10-06 22:15:07 +01:00
Neil LathwoodandGitHub 4f6e2b488a Update new_alert_rule.inc.php (#9240) 2018-09-20 12:35:54 +01:00
Neil LathwoodandTony Murray 466b5a35a8 Added ability to set a custom SQL query for alert rules. (#9094)
* Added support for AVG in rules

* More updates

* Final work to have advanced sql queries

* Added missing use

* Fix exception when invalid json is passed

* Fixed api for alert rules

* updated docs
2018-09-19 07:47:45 -05:00
Tony MurrayandGitHub 32a7c50189 Use Laravel authentication (#8702)
* Use Laravel for authentication
Support legacy auth methods
Always create DB entry for users (segregate by auth method)

Port api auth to Laravel

restrict poller errors to devices the user has access to

Run checks on every page load.  But set a 5 minute (configurable) timer.
Only run some checks if the user is an admin

Move toastr down a few pixels so it isn't as annoying.

Fix menu not loaded on laravel pages when twofactor is enabled for the system, but disabled for the user.
Add two missing menu entries in the laravel menu

Rewrite 2FA code
Simplify some and verify code before applying

Get http-auth working
Handle legacy $_SESSION differently.  Allows Auth::once(), etc to work.

* Fix tests and mysqli extension check

* remove duplicate Toastr messages

* Fix new items

* Rename 266.sql to 267.sql
2018-09-11 07:51:35 -05:00
TheGreatDocandTony Murray 290e07ca49 Fixed typo in new alert rule html (#8958) 2018-07-27 16:26:31 -05:00
vivia11andNeil Lathwood e1118b628a Added Alert Transports Mapping (#8660)
Hello all,
I guess this is the second version of a more fully fleshed out alert contact mapping feature. The old one was GH-8507

Transports to convert:

  - [x] API
  - [x] Cisco Spark
  - [x] Elasticsearch
  - [x] GitLab
  - [x] Philips Hue
  - [x] Jira
  - [x] Mail
  - [ ] ~~PagerDuty~~ - Requires a callback so leaving for now
  - [x] Nagios
  - [x] IRC
  - [x] Discord
  - [x] Rocket.chat
  - [x] Hipchat
  - [x] Pushover
  - [x] Boxcar
  - [x] Telegram
  - [x] Pushbullet
  - [x] VictorOps
  - [x] OpsGenie
  - [x] Clickatell
  - [x] PlaySMS
  - [x] Canopsis
  - [x] osTicket
  - [x] Microsoft Teams
  - [x] SMSEagle
  - [x] Syslog
  - [x] Slack

The intention is for this feature to have three different levels to it:
1. Alert rule to an alert contact mapping (where the code is at now)
2. Alert rule to an alert group (made up of alert contacts) mapping
3. Alert contact mapping to different transport configurations.

There will be three transport configuration types.
1. Default (the configuration that is held in the configs table)
2. None (no transport configuration - will explain later)
3. Other (a configuration that will be defined in a different able)

Take Mail transport for example. It can either be of a "default" or "other" configuration. The hope is that in the future, users can send mail from different mail servers if they wish.
However, for ciscospark which requires a room ID and an api-token, I've decided that it has no transport configuration. Most likely, every alert contact will contain a different room-id and an api-token - which is why it has the transport config of "none".
For other transports : I am not familiar with them, so hopefully the community can add support for these. I can definitely help!

To add support for each transport will require several things:
- addition to the UI
- addition to forms/alert-contacts.inc.php
- modifications to its object class

Screenshots
![image](https://user-images.githubusercontent.com/28970851/39594533-2092ce9e-4eca-11e8-9c5d-cd002ece1425.png)
![image](https://user-images.githubusercontent.com/28970851/39594544-276e9856-4eca-11e8-80cc-82789ee0b2b2.png)
![image](https://user-images.githubusercontent.com/28970851/39594553-2fdf528c-4eca-11e8-8a40-4f149e767054.png)

I'm not sure if this is the best way to do things, so please let me know if there's a better way to structure the code! Any comments on code/db schema,/UI etc is welcome and encouraged! 

The UI is heavily based on alert rules (front end is not my strong suit). And parts of the code are based on the code that was written for alert rules.

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-21 20:34:59 +01:00
Neil LathwoodandGitHub 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 MurrayandNeil Lathwood 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 MurrayandNeil Lathwood 04e24d4671 webui: Alert builder layout optimsation (#8489)
* Alert builder: don't waste space
More space for the ui elements when the dialog is large.
Stop the import button from overlapping things when the dialog is extra small.

* Add divider to alert menubar
2018-03-29 20:57:41 +01:00
Tony MurrayandGitHub d91fe84fc3 Change the default alert delay to 1m (#8462)
Add regex type for numbers
Tooltips for all alert rule dialog items
2018-03-28 22:10:54 -05:00
Neil LathwoodandTony Murray 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
Tony MurrayandGitHub 8890010766 Disable in/not in they don't display right (#8378) 2018-03-14 20:03:58 -05:00
Neil LathwoodandGitHub 66a3f82269 Fix NOT REGEXP rules (#8376)
* Fix NOT REGEXP rules

* not_regex -> not regex

* Fixed saving rules as well
2018-03-14 21:53:47 +00:00
Neil LathwoodandGitHub 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 MurrayandNeil Lathwood 8b3bd57303 fix: Number comparisons in alerts and device groups (#7695)
Remove quotes so if the field we are comparing against is a string type, we still do a number comparison.
2017-11-09 20:37:45 +00:00
Neil LathwoodandGitHub fe408a1f7c webui: Removed ability to use OR for generating rules (#7150) 2017-08-13 18:44:53 +01:00
laf 8a142aa53f feature: Added the option to select alert rules from a collection 2016-10-29 10:56:59 +00:00
soranoandNeil Lathwood 9142bcc6d3 Increase charlength for Procedure URL. (#4626)
* Increase charlength for Procedure URL.

Increased charlength for Procedure URL.

Fixes #4305

* Update new_alert_rule.inc.php
2016-09-27 20:33:31 +01:00
Tony Murray 8c639aa5a4 PSR2 Cleanup: /html edition
Travis tests for code conformance. Ignore warnings for now.
Fixed all errors, left most warnings.
2016-08-18 21:29:30 -05:00
Guillaume COEUGNET 6c8a75a5f7 Change procedure management. Using URL instead of file 2016-06-06 11:41:41 +02:00
Guillaume COEUGNET 4dadad944b Add procedure management 2016-05-27 16:13:51 +02:00
Richard Lawley b89fa295a5 Increase rule suggestions to 20 2016-03-11 08:51:24 +00:00
Ultra2D 9773b3bade Tabs to spaces 2016-03-04 11:30:11 +01:00
Michael Newton f77c712bfc changes needed to run under web server subdirectory 2015-08-11 14:54:05 -07:00
Neil Lathwood 945ca7f2ea Revert "changes needed to run under web server subdirectory" 2015-08-11 21:25:23 +01:00
Michael Newton cc0f449fc9 changes needed to run under web server subdirectory 2015-08-07 11:10:43 -07:00
Job Snijders d8693f05ae Fix coding style part 2 2015-07-15 11:04:22 +02:00
Neil Lathwood 8226e8b447 Merge pull request #1096 from laf/issue-1095-web
Added support for interval for alerting for WebUI
2015-06-20 01:56:08 +01:00
laf f92a305821 Added error checking to create device group 2015-05-22 11:10:26 +01:00
laf be96aa7045 Changed from addClass to removeClass 2015-05-22 09:35:55 +01:00
laf 9726773e0e Added more visual validation 2015-05-22 09:33:52 +01:00
laf 490f94e2ed Added response to modal form when an error occurs 2015-05-22 08:17:26 +01:00
laf 4765cebea0 Added support for interval for alerting 2015-05-20 21:46:54 +01:00
laf ac1d85235c Added headers for devices / groups 2015-05-03 17:49:19 +01:00
laf 02967b095b Updated all typeahead code to use new library 2015-04-29 17:48:57 +01:00
f0o da624fa136 Added Macros in Alert-Rule syntax 2015-04-24 19:14:10 +00:00
f0o ba99eb25a2 Device-Groups Draft 2015-04-03 18:22:29 +00:00
laf 469f5aa629 Updated the way the rule loop works 2015-04-02 16:19:30 +01:00
laf 1238498696 Updated new_alert_rule modal to not die and instead only return the page for admins 2015-03-05 11:40:02 +00:00
laf f4f204e801 Fixed resetting tags back to blank 2015-02-26 16:16:54 +00:00
Neil Lathwood aa5d1e10a1 Clear out tags before adding current ones 2015-02-26 10:17:27 +00:00
laf ddbc2a7304 Updated alerts interface to support inverted rules, worse/better alerts 2015-01-26 22:07:42 +00:00
laf 9b94548039 Fixed bug when mute was selected for an alert rule 2015-01-25 21:05:36 +00:00
Neil Lathwood 51616844bc Added ability to name alert rules 2014-12-21 15:44:50 +00:00
Neil Lathwood 51db1af74d Clear out rule entries now when modal form closes 2014-12-19 21:32:05 +00:00
Neil Lathwood 7cd8cf7ecf Update to enabled calculations to be put into entity 2014-12-19 20:30:51 +00:00
laf 807fc9a3ba Alerts gui commit 2014-12-16 20:03:19 +00:00