diff --git a/README.md b/README.md index 421ec81..03a39bf 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,15 @@ GoMFT is a web-based managed file transfer application built with Go, leveraging - Custom HTTP headers - Selectable events (job success, job failure) - Detailed JSON payload with job information +- **Multiple Notification Services**: Get job status updates through various notification channels: + - Email notifications with configurable SMTP settings + - Webhooks with authentication for custom integrations + - Pushbullet notifications with optional device targeting + - Ntfy.sh (both public and self-hosted) for simple push notifications + - Gotify server integration for self-hosted notifications + - Pushover notifications with customizable sounds and priorities + - Configurable message templates for all notification types + - Event-based triggers (job start, completion, errors) - **Scheduled Transfers**: Configure transfers using cron expressions with flexible scheduling options - **Transfer Monitoring**: Real-time status updates and detailed transfer logs with bytes and files transferred statistics - **File Metadata Tracking**: Complete history and status of all transferred files with detailed information: @@ -355,7 +364,41 @@ Log files contain detailed information about file transfers, job execution, and - Choose notification triggers (job success, job failure, or both) - Test your webhook integration with manual job runs -8. Manage file metadata: +8. **Webhook Notifications**: + - **Webhook Integration**: Send notifications to external systems when jobs complete + - **Secure Authentication**: HMAC-SHA256 signature for webhook verification + - **Custom Headers**: Add custom HTTP headers to webhook requests + - **Flexible Configuration**: Configure different webhooks for different jobs + - **Event Selection**: Choose to send notifications on success, failure, or both + - **Detailed Payload**: Rich JSON payload with complete job execution details + +9. **Multiple Notification Services**: + - **Pushbullet Integration**: Send notifications to your devices through Pushbullet + - Device targeting support for specific device delivery + - Customizable title and message templates + - API key-based authentication + - **Ntfy Integration**: Use public ntfy.sh or self-hosted ntfy server + - Topic-based routing of notifications + - Priority levels for different job events + - Optional username/password authentication for private servers + - Customizable title and message templates + - **Gotify Integration**: Send notifications to self-hosted Gotify servers + - Application token-based authentication + - Priority levels (1-10) for different notification importance + - Customizable title and message templates + - **Pushover Integration**: Professional notification delivery service + - Application and user key authentication + - Device targeting for selective delivery + - Sound selection for different notification types + - Priority levels from lowest to emergency + - Customizable title and message templates + - **Common Features**: + - Variable substitution in notification templates + - Job data access in templates (status, files, bytes, times) + - Event-based filtering (job start, completion, errors) + - Success/failure tracking for diagnostic purposes + +10. Manage file metadata: - Navigate to the "Files" section to view all processed files - Use filters to quickly find files by status, job ID, or filename - Click on any file to view detailed metadata including timestamps, size, and hash @@ -363,7 +406,7 @@ Log files contain detailed information about file transfers, job execution, and - Delete file metadata records when no longer needed - View files associated with specific jobs by navigating from the job details -9. Utilize admin tools (administrators only): +11. Utilize admin tools (administrators only): - Access the "Admin Tools" section from the navigation menu - View system statistics and server information - Create and manage database backups @@ -479,13 +522,16 @@ The following fields have been added to the `users` table: - Manual execution - Enable/disable schedules -8. **Webhook Notifications**: - - **Webhook Integration**: Send notifications to external systems when jobs complete - - **Secure Authentication**: HMAC-SHA256 signature for webhook verification - - **Custom Headers**: Add custom HTTP headers to webhook requests - - **Flexible Configuration**: Configure different webhooks for different jobs - - **Event Selection**: Choose to send notifications on success, failure, or both - - **Detailed Payload**: Rich JSON payload with complete job execution details +8. **Notification Options**: + - **Email Notifications**: Receive job status updates via email + - **Webhook Notifications**: Integration with external systems + - **Pushbullet**: Push notifications to your devices + - **Ntfy**: Simple push notifications via ntfy.sh + - **Gotify**: Self-hosted notification server integration + - **Pushover**: Professional notification service + - Configure event triggers (start, complete, error) + - Customize notification message templates + - Selective notification based on job status ### Email Notifications diff --git a/components/notification_form.templ b/components/notification_form.templ new file mode 100644 index 0000000..ae59bf4 --- /dev/null +++ b/components/notification_form.templ @@ -0,0 +1,730 @@ +package components + +import ( + "context" + "fmt" +) + +type NotificationFormData struct { + NotificationService *struct { + ID uint + Name string + Description string + Type string + IsEnabled bool + EventTriggers []string + RetryPolicy string + WebhookURL string + Method string + Headers string + PayloadTemplate string + SecretKey string + } + IsNew bool + SuccessMessage string + ErrorMessage string +} + +func getNotificationFormTitle(isNew bool) string { + if isNew { + return "Add Notification Service" + } + return "Edit Notification Service" +} + +templ NotificationForm(ctx context.Context, data NotificationFormData) { + @LayoutWithContext(getNotificationFormTitle(data.IsNew), ctx) { + +
+ + + +
+
+ + if data.SuccessMessage != "" { + + } + + if data.ErrorMessage != "" { + + } + +
+

+ + { getNotificationFormTitle(data.IsNew) } +

+ + + Back to Notification Services + +
+ + +
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+
+
+ +
+
+

+ Configure your notification service to receive alerts for job events. Different notification types have different configuration options. +

+
+
+
+
+
+ + + } +} diff --git a/components/notifications.templ b/components/notifications.templ index 9814a0a..b90cf53 100644 --- a/components/notifications.templ +++ b/components/notifications.templ @@ -157,521 +157,10 @@ templ Notifications(ctx context.Context, data SettingsNotificationsData) { Notification Services - - - -
-

+ + Add Notification Service -

-
-
- - -
- - - - - - - -
- - - - - - - - - - - - -
+
@@ -681,7 +170,11 @@ templ Notifications(ctx context.Context, data SettingsNotificationsData) {

No notification services configured

-

Use the form above to add your first notification service.

+

Add a notification service to receive alerts for job events.

+ + + Add First Notification Service + } else {
@@ -715,15 +208,12 @@ templ Notifications(ctx context.Context, data SettingsNotificationsData) {
- +