* introduces TwiN/logr library
* use new features of logr library
* minor tweaks and formatting
* Apply suggestions from code review
---------
Co-authored-by: TwiN <twin@linux.com>
* POC Teams Workflow Alerting
Signed-off-by: James Hillyard <james.hillyard@payara.fish>
* Document Teams Workflow Alert
Signed-off-by: James Hillyard <james.hillyard@payara.fish>
* Rename 'teamsworkflow' to 'teams-workflows'
Signed-off-by: James Hillyard <james.hillyard@payara.fish>
* Fix README Table Format
Signed-off-by: James Hillyard <james.hillyard@payara.fish>
* Fix Test to Expect Correct Emoji
Signed-off-by: James Hillyard <james.hillyard@payara.fish>
---------
Signed-off-by: James Hillyard <james.hillyard@payara.fish>
Co-authored-by: TwiN <twin@linux.com>
* feat(alerting): add optional email to ntfy provider
https://docs.ntfy.sh/publish/#e-mail-notifications
* feat(alerting): add optional click action to ntfy provider
https://docs.ntfy.sh/publish/#click-action
* feat(alerting): add option to disable firebase in ntfy provider
https://docs.ntfy.sh/publish/#disable-firebase
* feat(alerting): add option to disable message caching in ntfy provider
https://docs.ntfy.sh/publish/#message-caching
* test(alerting): add buildRequestBody tests for email and click properties
* test(alerting): add tests for Send to verify request headers
* feat(alerting): refactor to prefix firebase & cache with "disable"
This avoids the need for a pointer, as omitting these bools in the config defaults to false
and omitting to set these headers will use the server's default - which is enabled on ntfy.sh
* feat(alerting): add support for including endpoint errors in custom alerts
- Updated `buildHTTPRequest` method in `AlertProvider` to accept a `result` parameter.
- Added support for including `[ENDPOINT_ERRORS]` in both the request body and URL, which will be replaced by the errors from `Result.Errors[]`.
- Adjusted `CreateExternalEndpointResult` to capture and store errors from query parameters.
- This allows custom alerts to include detailed error information, enhancing the flexibility of alert notifications.
* feat: add ENDPOINT_ERRORS example
* feat: add tests
* Refactor: code review feedback
* delete unsed errors
* Update README.md
* Apply suggestions from code review
---------
Co-authored-by: raojinlin <raojinlin302@gmail.com>
Co-authored-by: TwiN <twin@linux.com>
* feat: implement Gitea alerting provider integration
- Add TypeGitea for the gitea alerting provider
- Introduce a new file for the gitea alerting provider implementation
- Implement the AlertProvider struct with necessary fields for gitea integration
- Add validation logic for the AlertProvider configuration
- Create tests for the AlertProvider's validation and sending functionality
- Update go.mod to include the gitea SDK as a dependency
- Modify the alerting configuration validation to recognize TypeGitea
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* chore: integrate Gitea alerting provider configuration
- Add Gitea alerting provider import to the configuration file
- Update the comment for the RepositoryURL field to reflect Gitea instead of GitHub
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* feat: add Assignees support to AlertProvider functionality
- Add a field for Assignees to the AlertProvider struct
- Update the Send function to include Assignees in the alert payload
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* feat: implement Gitea alerting configuration and documentation
- Add a new image asset for Gitea alerts
- Update the README to include configuration details for Gitea alerts
- Introduce parameters for Gitea alerting, including repository URL and personal access token
- Document the behavior of the Gitea alerting provider regarding issue creation and resolution
- Include an example YAML configuration for Gitea alerts
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* Update README.md
Co-authored-by: TwiN <twin@linux.com>
* Update README.md
Co-authored-by: TwiN <twin@linux.com>
* Update README.md
Co-authored-by: TwiN <twin@linux.com>
* feat: refactor AlertProvider for improved client configuration
- Add import for the Gatus client library
- Remove the SkipVerify field from the AlertProvider struct
- Introduce ClientConfig field in the AlertProvider struct for client configuration
- Update validation logic to check for ClientConfig instead of SkipVerify
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* Update README.md
Co-authored-by: TwiN <twin@linux.com>
* chore: update configuration for Gitea integration
- Change references from GitHub to Gitea in the configuration section
- Update alerting provider descriptions to reflect the correct platform
- Swap the order of GitHub and Gitea configurations
- Replace Gitea alert image with GitHub alert image
- Adjust the type field from gitea to github in the relevant sections
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* fix: ensure ClientConfig is validated and defaults set
- Add a check for nil ClientConfig in the IsValid function
- Set ClientConfig to a default configuration if it is nil
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
---------
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
Co-authored-by: TwiN <twin@linux.com>
* feat(storage): Add support for 30d uptime badge
Fix#714
* Fix typo
* Fix test
* Fix typo
* Improve implementation
* Add check in existing test
* Add extra test to ensure functionality works
* Add support for 30d response time chart too
* feat(alerting): add timezone for maintenance
* Update config/maintenance/maintenance.go
* docs: Add example of maintenance.timezone in readme.md
* fix: Only set time to timezone location if the location is set
* fix: Include the original error in the message
---------
Co-authored-by: TwiN <twin@linux.com>
* add alerting support for jetbrains space
* readme fixes
* add jetbrainsspace to provider interface compilation check
* add jetbrainsspace to a couple more tests
* feat: enhance HTTP client configuration with proxy support
- Add `ProxyURL` field to `Config` struct with YAML tag
- Implement proxy URL parsing and setting in `getHTTPClient` method
- Add test case for `getHTTPClient` method with custom proxy URL setting
- Include `net/url` package in both `config.go` and `config_test.go` files
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* docs: enhance README with Proxy and OAuth2 Docs
- Remove empty lines from README.md
- Add documentation for proxy configuration in client examples
- Include YAML examples for client using a proxy, custom DNS resolver, OAuth2, and identity-aware proxy configurations in README.md
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* docs: add proxy client
Signed-off-by: appleboy <appleboy.tw@gmail.com>
* Update client/config.go
* Update README.md
* Update client/config_test.go
---------
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
Signed-off-by: appleboy <appleboy.tw@gmail.com>
Co-authored-by: TwiN <twin@linux.com>
This fixes the `431 Request Header Fields Too Large` error
By default, the read-buffer-size is 8192, up from fiber's default of 4096.
Fixes#674Fixes#636
Supersedes #637
Supersedes #663
* feat: shields.io endpoint badge
Signed-off-by: Steven Kreitzer <skre@skre.me>
* chore: update readme to include new shields.io badge
Signed-off-by: Steven Kreitzer <skre@skre.me>
---------
Signed-off-by: Steven Kreitzer <skre@skre.me>
Co-authored-by: TwiN <twin@linux.com>
* build: refine Makefile targets and build command
- Remove `test` from `.PHONY` and add `install`, `run`, and `clean` targets to `.PHONY`
- Replace build command to include verbose flag and remove `-mod vendor` option
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* docs: refine README structure and update tests
- Add a "Table of Contents" section to the README
- Reorganize sections within the README, moving "Configuring AWS SES alerts" and "How to change the color thresholds of the response time badge"
- Remove "Sponsors" section from the README
- Update the test command in the README from `go test ./... -mod vendor` to `go test -v ./...`
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
---------
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* client: config: add Google Identity-Aware-Proxy support
* Add correct sum and mod
* Update README.md
* Update README.md
* client: config: add Google Identity-Aware-Proxy support
* Add correct sum and mod
* Update README.md
* Update README.md
* Change IAP acronym to Identity-Aware-Proxy
* Change IAP acronym to Identity-Aware-Proxy in README.md
* Fix conflict in go.mod
* merge readme from twin/master
* Fix typo error in readme.md
* Update client/config.go
---------
Co-authored-by: TwiN <twin@linux.com>
* feat(alerting): Made authentication optional for the email alert provider
* docs: Added parameter to email alert provider docs
* feat(alerting): Updated email alert to set the LocalName attribute based on the From key
* Updated email provider to disable authentication when no credentials are provided
* Removed `disable-authentication` flag from email provider documentation
* Apply suggestions from code review
---------
Co-authored-by: TwiN <twin@linux.com>
* feat(alerting): allow discord alert's title to be configurable
* feat(alerting): modify documentation for discord title feature
* feat(test): add tests for discord title modify feature
---------
Co-authored-by: Bugra Kocabay <kocabay.bugra@gmail.com>
Co-authored-by: TwiN <twin@linux.com>
* feat(SSH): Add support for SSH endpoint
This commit adds support for SSH endpoint monitoring. Users can now configure an endpoint to be monitored using an SSH command by prefixing the endpoint's URL with ssh:\\. The configuration options for an SSH endpoint include the username, password, and command to be executed on the remote server. In addition, two placeholders are supported for SSH endpoints: [CONNECTED] and [STATUS].
This commit also updates the README to include instructions on how to configure SSH endpoints and the placeholders that can be used in their conditions. The README has been updated to include the new SSH-related options in the endpoints[] configuration object.
Here's a summary of the changes made in this commit:
Added support for SSH endpoint monitoring
Updated the documentation to include instructions on how to configure SSH endpoints and the placeholders that can be used in their conditions
* feat: support monitoring WebSocket endpoints
WebSocket endpoints are automatically identified by the URL protocol
specification: `wss://` or `ws://`. The request body is used as the
"message" written to the server, and the answer is stored in the
`[BODY]`.
Optionally, the user can set the `jsonrpc` flag to automatically wrap
the request body in a JSON RPC 2.0 method call.
* core:websocket: close connection after using it
* test: add tests related to WebSocket support
- test we can identify the endpoint type for WebSockets based on the URL
supplied: `wss://` (with SSL/TLS) and `ws://` (plain text).
- test we can generate a JsonRPC 2.0 message via the new endpoint flag
`JsonRPC`.
* core:endpoint: fix name of jsonrpc parameter
See https://en.wikipedia.org/wiki/JSON-RPC#Version_2.0
* core:websocket: fix dangling open connection on error
Move the `defer ws.Close()` to after opening the connection, so the
socket is closed also in case of errors.
* remove jsonrpc flag
* core:websocket: fix nil pointer dereference
The connection should only be closed if successfully opened.
* Move websocket function to client
* update go.mod
* Fix build errors
* Fix errors
* Update client/client.go
---------
Co-authored-by: TwiN <twin@linux.com>