This repository has been archived by the owner on Feb 15, 2024. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SUMMARY This commit adds support for sending email notifications using the same behavioral feature set as Microsoft Teams notifications: - configurable retries and retry delay - configurable rate limit - a separate notification per event - e.g., request received, username disabled, sessions terminated The following settings are configurable: - destination email address(es) - sender address - SMTP server IP/FQDN - SMTP server port - client identity - hostname provided to the SMTP server - as noted elsewhere, some SMTP servers will perform forward/reverse DNS lookups to confirm that this provided value matches what DNS has recorded for the sending IP Address Some known weaknesses/lack of support: - hard-coded email template - as of this commit, the template using Textile formatting is enabled - future efforts are intended to move hard-coded templates out of source code constants to on-disk files for easier customization by the sysadmin(s) supporting this application - unauthenticated connections to target SMTP used - the initial use-case is a local relay which restricts connections based on source IP Address - future efforts are intended to provide support for authentication Behavior worth noting: - automatic client identity value generated from available DNS information if not specified by the sysadmin - the `Showmax/go-fqdn` package is used to retrieve the FQDN of the sending system, with a fallback to - email address verification applied using the provided W3C regex - using a guide from golangcode.com CHANGES The following items note (non-exhaustive) changes since the last point release. Many of these changes will see further refactoring as part of GH-22. - Duplicate client/alert request headers so that in-place formatting modifications performed on values in the slice do not spill over to the values used for email notifications (where a different formatting is used) - Replace placeholder "getter" methods with full-featured equivalents to existing MS Teams methods - Add new "getter" methods to cover new functionality - Add flags, environment variables to cover new functionality - Rename existing generically named functions used for Teams notification handling to explicitly mention relation to Teams notifications - this was needed to make room for email-specific notification functionality - Rework some existing Teams-specific functions to allow use with Teams and email notifications (DRY) - Add email-specific functions, methods, types to mirror existing Microsoft Teams notifications support - Replace placeholder email notification template with a "default", mostly text-only friendly format and a Textile formatted template to be used with older Redmine systems (prior to Markdown support being introduced) - `MessageTrailer` func updated to take a template string for generation of a format-specific branding string - e.g., Textile-formatted repo link or Markdown-formatted repo link - Update config Stringer interface - it is growing quite large at this point, might be time to rethink how it is handled - TOML configuration file - extended with new settings - rename some settings in an effort to better communicate intent REFERENCES - refs GH-3 - https://golangcode.com/validate-an-email-address/ - https://www.w3.org/TR/2016/REC-html51-20161101/sec-forms.html - https://github.com/Showmax/go-fqdn
- Loading branch information