Commit Graph

116 Commits

Author SHA1 Message Date
Tony Murray f10cbddacc Refactored Alert schedule (#9514)
* add AlertSchedule model and relationships
change table structure to match the expected layout

* Update maint schedule map ui

* better index name

* Laravel queries
fix some issues with the ui: restricting start incorrectly and loading empty days error

* handle date limiting properly

* Another attempt add schedule constraints

* use Auth

* Update WorldMap widget to use check isUnderMaintenance

* Rename 275.sql to 276.sql

* Rename 276.sql to 277.sql
2019-01-03 22:42:12 +00:00
hexdump0x0200 3991e08cf9 Added automatic generation of the list of available transports (alerting) (#9544)
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.


This patch allows you to avoid manually adding a transport to the list of available transports. In addition, in custom installations, where their own transports were added, the need to manually update the file "html/includes/modal/edit_alert_transport.inc.php" broke the automatic update (git detected a conflict and required manual solution). With this patch, you can avoid this, add local transports that remain outside the git repository and there is no need to create and maintain your fork in order to add your transports or add them to the upstream (they may have no value outside the local installation).
2018-12-23 21:47:37 +00:00
Tony Murray f451f56e98 Pushover fix sounds (#9519)
* Pushover fix sounds

* fix editing issue with duplicate field ids
2018-12-10 22:18:45 -06:00
Neil Lathwood b93e66efbe Show visually in webui + cli when using deprecated templates or transports (#9413)
* Show visually in webui + cli when using deprecated templates or transports

* Fixed query
2018-11-10 21:06:51 +00:00
CrazyMax 00b752a862 Redesign alert template modal (#9364)
* Redesign alert template modal

* Check if alert is used in an other template

* Fix selectbox while creating new template

* Use 'pre' font family for alert template textarea

* Remove limit

* Remove and try to mimic bootstrap-select with select2 lib
2018-10-25 15:31:12 -05:00
Andy Rosen 4e5a0fa4d7 Added Twilio SMS as an Alerting Transport (#9305)
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.
2018-10-17 17:19:28 +01:00
Neil Lathwood 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 Lathwood 4f6e2b488a Update new_alert_rule.inc.php (#9240) 2018-09-20 12:35:54 +01:00
TheGreatDoc 1a89e27de7 Disable used rules in template map for select them (#9212)
* Disable used rules in template map for select them

* WIP Enable/Disable options dynamically

* Enable/Disable options dynamically

* Even better. Selected options for template are not disabled

* Didnt work so reverting back

* Update attach_alert_template.inc.php
2018-09-20 00:04:52 +01:00
Neil Lathwood 86d862fb25 Added support for allowing alerts to un-ack (#9136)
* Add support for allowing alerts to un-ack

* Updated db_schema.yaml

* Update and rename 263.sql to 265.sql

* Fix up ui a bit.

* Renamed sql file
2018-09-19 23:38:01 +01:00
Neil Lathwood 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 Murray 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
Neil Lathwood e603fcfd6f Converted PagerDuty to new transport format (#9092)
* Converted PagerDuty to new transport format

* Attempt at oauth for transports

* clean

* missing images

* reverted wrong file. phpstorm saved me...

* fix typo

* Updated to help the display

* Fix validation error, start to try to send alerts.
Editing the transport, deletes the service_key...

* Ignore hidden config options

* Fix up api call, proper feedback.

* hide oauth field in print list
2018-08-29 09:44:29 -05:00
Alexey Medvedev e448190a68 Added transport modules Kayako Classic and SMSFeedback (#9027)
Hello! I've made a first version of Alert Transporting module for Kayako Classic Servicedesk. May be it is possible to use with Kayako OnPremise version (not sure).

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-08-21 22:41:59 +01:00
Neil Lathwood 2d72d8144e Convert old templates title as well as body (#9034)
* Convert old templates title as well as body

* Update convert-template.inc.php
2018-08-19 09:28:57 +01:00
Tony Murray 3b6fbd99ee Convert alert templates in place (#8951)
* Convert alert templates inplace

* Update copyright

* Update convert-template.inc.php
2018-07-31 21:54:12 +01:00
TheGreatDoc 290e07ca49 Fixed typo in new alert rule html (#8958) 2018-07-27 16:26:31 -05:00
Paul Heinrichs 046a97fe76 Remove testing data (#8945) 2018-07-25 09:43:55 -05:00
vivia11 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
Richard Mayhew 4bca036433 Updated Old Template URL to point to the correct location within docs (#8905) 2018-07-16 14:28:43 -05:00
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 0ba76e6d62 New python service for poller, discovery + more (#8455)
Currently has a file handle leak (and will eventually run out of handles) related to the self update process.

Either need to fix that or rip out self-update and leave that up to cron or something.


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-06-30 12:19:49 +01:00
Neil Lathwood 1eee6e8195 alert: Added ability to make notes for acking alerts + record who did so (#8433)
* alert: Added ability to make notes for acking alerts + record who did so

* Updated schema

* moved sql file

* Updated from comments in PR

* warning changed to blue

* reset notes + keep notes on ack
2018-04-26 00:00:56 -05: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
Aldemir Akpinar 18101a93d5 webui: Use toastr for operational messages on alert templates page (#8499)
* webui: Use toastr for operational messages

* Reload template table after insert/update

* Trying to fix travis ci error

* Change error checking to librenms standard
2018-04-07 13:22:08 +01:00
Tony Murray 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 Murray 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 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
Tony Murray 8890010766 Disable in/not in they don't display right (#8378) 2018-03-14 20:03:58 -05:00
Neil Lathwood 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 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 e00597db10 Case insensitive alert rule searching (#8231) 2018-02-08 08:49:19 -06:00
Aldemir Akpinar 76587065cc webui: New tab in "manage host dependencies" to clear all children of a parent (#8085)
* Add dependency info for api

* webui: new tab to clear children of a parent device

* Fix travis CI errors
2018-01-17 11:06:32 +00:00
Aldemir Akpinar 56561aa4dc feature: Added support for Host dependencies (#7332)
* First draft of the modals and the config interfaces

* GUI part done

* Backend code and db schema addition

* Documentation added, fixed alerting bug

* Fix typos

* Do not try to push an older db_schame.yaml

* Small db fix

* More db fixes

* Travis CI fixes

* missed a line in the travis error

* Fixed dependency clearing bug, Manage Host dependencies button now shows current selections

* Removed unnecessary index

* Correct faulty query

* Fixed sql query as requested, and renamed sql file

* Added requested changes

* Removed debug code

* Renamed sql file

* More fixes as requested

* Trying to fix db_schema.yaml

* adding laf's diff

* Corrected a small bug

* Try to resolve scrutinizer issue

* Main page bootgrid ajax modifications

* Also corrected travis ci errors

* Added select2 for pull downs, removed a redundant debug output. Changed parent_id to text

* Add missing class in the device settings page

* Fix bug where a link wasn't added after save

* Better parent down detection

* Add missing comma

* Behold the multi-parent code

* Added lookup table

* Ready for testing

* Trying to fix documentation conflicts

* Fix copy paste errors, and possible sql injection

* indentation problems

* Modified db_schema.yaml as well

* Typos, typos

* This should correct alerts

* Try to fix travis ci error

* Fix the typo in index.php

* Changed to Tony's query

* function explanation text changed

* Updated db_schema.yaml

* Trying to make automated tests happy

* Changes as requested

* Added acknowledgment for select2

* Added laf's patch

* dbBulkInsert when adding parents
2017-12-20 14:17:52 +00:00
Tony Murray d6db01abb5 refactor: Refactor fix php codesniffer 3.x issues (#7816)
We cannot use 3.x because it  requires php 5.4, so update to 2.9.1 or newer 2.x release.
2017-11-29 08:23:19 +00:00
Tony Murray ea684c3543 webui: Allow deletion of dead poller nodes (#7721)
* webui: allow deletion of dead poller nodes

* improve messages
2017-11-22 07:50:29 +00:00
Tony Murray 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 Lathwood 98e509c27c webui: Updated alert rule collection to be table (#7371) 2017-09-29 21:12:22 +01:00
Neil Lathwood fe408a1f7c webui: Removed ability to use OR for generating rules (#7150) 2017-08-13 18:44:53 +01:00
Aldemir Akpinar 34d0fc3199 refactor: Ability to edit default alert template (#7121)
* newfeature: ability to edit default alert template

* Fix style errors

* Added missing db query

* Removed unnecessary code, and added faq section

* Minor documentation about default alert template. And put back wrongly removed lines

* Fixing the silly old mistakes... again
2017-08-12 20:21:13 +01:00
Aldemir Akpinar 3ca39c810d webui: Facelift for alert templates, also added bootgrid (#7041)
* webui: facelift for alert templates, also converted the custom code to bootgrid

* Update alert_template.inc.php

removed var = action line, no longer needed.
2017-07-18 23:54:14 +01:00
Aldemir Akpinar 9c957ee1d4 webui: Minor visual changes in schedule maintenance window and its modal (#6934)
* webui: minor visual changes in schedule maintenance window and it's modal

* Removed unnecessary comments

* Auto close alerts
2017-07-04 22:29:54 +01:00
Aldemir Akpinar b378d9e762 webui: Set correct button text when editing an alert template (#6916) 2017-06-29 22:03:43 -05:00
Neil Lathwood 1bbbaff58b refactor: Moved ifLabel -> cleanPort and updated the usage (#6288)
* refactor: Moved ifLabel -> cleanPort and updated the usage

* added list of tags allowed

* few updates as per comments from @murrant

* Added simple unit tests

* double display for javascript popover

* Remove ifNameDescr() function
Fix realtime port page

* remove accidental temp code

* Remove double display calls in ajax tables
2017-04-04 08:08:23 +01:00
Neil Lathwood dda3bb0995 fix: alert templates designer now fixed #5636 (#5638) 2017-01-27 23:31:46 +00:00
FTBZ a0f5fe4f37 feature: Added basic recurring maintenance for alerts #4480 2017-01-22 18:00:15 +00:00
Neil Lathwood 9b9c10e204 fix: Cleanup printing ifAlias (#4874) 2016-12-12 14:25:48 +00:00
Neil Lathwood 1acd938fc1 fix: Stop service modal form disabling services for read-only admin (#4994) 2016-11-15 22:11:47 -06:00
Tony Murray 895bd4b1f7 Merge pull request #4895 from laf/json-alert-rules
feature: Added the option to select alert rules from a collection
2016-11-07 23:22:01 -06:00
jonathon-k a251e81be5 fix: Remove escape characters for services form / display #4891 2016-11-01 17:20:12 +00:00