Image: https://hub.docker.com/r/kesim0/xcourier
configuration.yml
email:
#smtp_url: ''
host: smtp.example.com
port: 2528
ignore_tls: false
secure: false
require_tls: true
user: ***
password: ***
default_from: test@from.com
default_name: 'Example from'
endpoints:
- id: 'example-id'
receivers: [alex.sampler@testmail.com, ann@company.example]
payload_type: only_json
message: 'New Notification from SystemX' # default 'new notificaton from id'
linked_url: https://example.com
linked_url_tag: example-action
subject: 'Alert from SystemX'note: GET,POST,PUT methods are allowed for more information see Request-Types
curl --location --request POST 'http://localhost:3001/example-id' \
--header 'Authorization: Basic ********' \
--header 'Content-Type: application/json' \
--data-raw '{
"user": "systemRoot",
"id": 733599,
"Action": "get_overview",
"time": 1650949483,
"error_message": "TypeError: Cannot read properties of undefined",
"stacktrace": [
"at Object. (/home/cg/root/2523129/main.js:20:11)"
],
"hash": "00000000000000000007fc4fdf669fed9c64c210f48b2911c8c206e25bbf413b"
}'docker run note: the local /config directory should contain a configuration.yml file.
docker run -it --rm -v $(PWD)/config:/usr/src/app/xcourier/config \
-p 3001:3001 \
-e URL_PREFIX="/api" \
-e PORT=3001 \
-e DEBUG=false -e BASIC_AUTH_USERNAME="root" \
-e BASIC_AUTH_PASSWORD="root" \
-e TZ="Europe/Berlin" \
--name xcourier-demo \
kesim0/xcourier:latestdocker-compose
version: '3.3'
services:
xcourier:
container_name: xcourier-demo
image: 'kesim0/xcourier:latest'
volumes:
- '$(PWD)/config:/usr/src/app/xcourier/config'
ports:
- '3001:3001'
environment:
- URL_PREFIX=/api
- PORT=3001
- DEBUG=false
- BASIC_AUTH_USERNAME=root
- BASIC_AUTH_PASSWORD=root
- TZ=Europe/Berlin| Property | type | example |
|---|---|---|
| debug | boolean | true |
| port | number | 3000 (default) |
| url_prefix | string | /sub (default: '/') |
| basic_auth_username | string | |
| basic_auth_password | string | |
| api_key | string | in progress |
| Property | type | example |
|---|---|---|
| smtp_url | string | smtps://user@domain.com:pass@smtp.domain.com |
| host | string | smtp.domain.com |
| port | number | 1025 |
| ignore_tls | boolean | false |
| secure | boolean | false |
| require_tls | boolean | true |
| user | string | sampleuser1 |
| password | string | samplepass123 |
| default_from | string (email) | test@domain.com |
| default_name | string | example |
| Property | type | description | example |
|---|---|---|---|
| id | string | sub-url for endpoint [REQUIRED] | 'alert-all' -> domain.com/notify-all |
| payload_type | string | specify the payload source to use / prefer [DEFAULT: prefere_json] | 'prefer_query', prefer_json', 'only_query', 'only_json', 'only_message' |
| receivers | Array of strings | specify receivers by email for specific endpoint [REQUIRED] | [user1@domain1.com, user2@domain2.com] |
| subject | string | subject of mail | |
| template_path | string | path for custom handlebars template [OPTIONAL -> else use default template] | 'custom_template1.hbs', 'sub/custom_template2.hbs' |
| message | string | static message for default template [OPTIONAL] | |
| linked_url | string(URL) | static url for call-to action button in default template [OPTIONAL] | |
| linked_url_tag | string | tag for call-to action button in default template [OPTIONAL] | |
| template_defaults | object (any) | default value definitions for payload (use in case of missing properties) |
email:
#smtp_url: ''
host: smtp.domain.com
port: 1234
ignore_tls: false
secure: false
require_tls: true
user: username1
password: password123
default_from: test@from.com
default_name: 'Example from'
endpoints:
- id: 'minimal'
receivers: [test@mail1.de, test2@mail2.de]
subject: 'Alert from minimal'
- id: 'prefere-json1' #first defined id would be used in case of duplicate ids
receivers: [test456@mail1.de, test2@mail2.de] # without "'"
#default: prefere_json
#possible values: 'prefer_query',prefer_json','only_query','only_json','only_message'
payload_type:
prefer_json
# default 'new notificaton from {id}'
message: 'New message from json example'
linked_url: https://example.com #optional
linked_url_tag: example-action #optional
subject: 'Json Example send'
- id: 'json-only1'
receivers: [alex.sampler@testmail.com, ann@company.example]
payload_type: only_json
message: 'testmessage -> json only' # default 'new notificaton from id'
linked_url: https://github.com
linked_url_tag: git
subject: 'Alert from 1 sub'
- id: 'template-defaults1'
receivers: [alex.sampler@testmail.com, ann@company.example]
message: 'testmessage'
subject: 'Message from defaults'
# Default values overridden by payload
template_defaults:
user: 'unknown'
property: 123123
arrayprop:
- id: '1'
- id: '2'
- id: 'custom1'
receivers: [alex.sampler@testmail.com, ann@company.example]
# sub-paths are allowed -> 'sub/custom_message.hbs'
template_path: 'custom_message.hbs'
message: 'custom template usage one'
subject: 'Alert from custom template'- Possible Types: GET, POST, PUT
- Possible Payload-Types: Json, Query parameters
- additional URL Prefix can be defined as environment variable:
URL_PREFIX - additional Basic-Auth can be defined as environment variable:
BASIC_AUTH_USERNAMEandBASIC_AUTH_PASSWORD(default: admin:admin) - additional API-Key can be defined as environment variable:
API_KEY(in progress)
Payload Type
prefer_query: merges json and query parameters but overwrite json props with query properties if key is equalprefer_json: merges json and query parameters but overwrite query props with json properties if key is equalonly_query: only query parameters will be usedonly_json: only json payload is used (no query parameters)only_message: ignores payload and uses message instead
Query-Parameters
curl --location --request POST 'http://localhost:3000/{id}?param1=1¶m2=value' \
--header 'Authorization: Basic ****'It is possible to use custom handlebars templates. In this case some values are reserved for the template:
internal.id: id of the messageinternal.message: message titleinternal.raw_data: raw data of the messageinternal.timestamp: timestamp of the message (send time)internal.subject: subject of the message
The *.hbs files must be located in the ./templates/mail-templates folder.
or in case of docker usage in the /templates directory. It is possible to use
sub-paths for the templates.
For more Information about how to use handlebars templates please see the Handlebars documentation.
- get at /report entry point
curl --location --request GET 'http://localhost:3000/report'
- only env set-up (w/o *.yaml)
- global properties
- token authentication
- Multi-user configuration
- sub-ids as entrypoint
- Parse XML data
- Enable/disable visualizations in default template
- Select Properties or sub property for grid in default template
- Fonts for default template
- queue incoming requests
