mirror_zfs/cmd
Phil Kauffman 44bb2fcf38 zed-functions.sh: escape newline to produce valid json
This was discovered when using Discords Slack compatible webhook.

Slack webhooks works without the escape, however Discord rightly refuses
the POST as it contains invalid JSON.

https://discord.com/developers/docs/resources/webhook#execute-slackcompatible-webhook

Valid (while escaping the newline:
```
+ msg_json='{"text": "*ZFS scrub_finish error for test on quartz*\nZFS has detected a data error:\n\n   eid: 124\n class: scrub_finish\n  host: quartz\n  time: \n error: \n objid: :\n  pool: test\n"}'
```

Invalid (no escape):
```
+ msg_json='{"text": "*ZFS scrub_finish error for test on quartz*
ZFS has detected a data error:\n\n   eid: 124\n class: scrub_finish\n  host: quartz\n  time: \n error: \n objid: :\n  pool: test\n"}'
```
The new line gets rendered and not sent inside the JSON as intended.

```
++ curl -X POST https://discord.com/api/webhooks/{webhook.id}/{webhook.token}/slack --header 'Content-Type: application/json' --data-binary '{"text": "*ZFS scrub_finish error for test on quartz*
ZFS has detected a data error:\n\n   eid: 124\n class: scrub_finish\n  host: quartz\n  time: \n error: \n objid: :\n  pool: test\n"}'
+ msg_out='{"message": "Cannot send an empty message", "code": 50006}'
```

Test method:
`root@quartz:/etc/zfs/zed.d# export ZED_ZEDLET_DIR=/etc/zfs/zed.d; export ZEVENT_EID=124; export ZEVENT_SUBCLASS=scrub_finish; export ZEVENT_POOL=test; export ZED_NOTIFY_DATA=1; bash -x ./data-notify.sh`

Reviewed-by: Damian Szuberski <szuberskidamian@gmail.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Philip Kauffman <philip@kauffman.me>
Closes #13049
2022-02-07 14:05:41 -08:00
..
arc_summary Added another missed case to arc_summary3 2021-06-09 13:05:34 -07:00
arcstat FreeBSD: Update usage of py-sysctl 2020-12-10 15:28:31 -08:00
dbufstat dbufstat: Fix warnings with Python 3.8 2020-12-23 15:10:35 -08:00
fsck_zfs Turn shellcheck into a normal make target. Fix new files it caught 2021-06-09 13:05:34 -07:00
mount_zfs Use fallthrough macro 2021-11-02 09:50:30 -07:00
raidz_test Removed duplicated includes 2021-03-22 12:34:58 -07:00
vdev_id vdev_id: Fix PHY sorting 2021-11-02 16:31:17 -07:00
zdb Update checkstyle workflow env to ubuntu-20.04 2021-12-08 13:27:56 -08:00
zed zed-functions.sh: escape newline to produce valid json 2022-02-07 14:05:41 -08:00
zfs Use fallthrough macro 2021-11-02 09:50:30 -07:00
zfs_ids_to_path zfs_ids_to_path: print correct wrong values 2021-04-14 13:19:50 -07:00
zgenhostid zgenhostid: use argument path directly 2021-06-08 14:47:05 -07:00
zhack cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00
zinject cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00
zpool zed: Control NVMe fault LEDs 2021-11-05 07:51:21 -07:00
zpool_influxdb Use fallthrough macro 2021-11-02 09:50:30 -07:00
zstream zstream: force-install zstreamdump link 2021-06-09 13:05:34 -07:00
ztest Annotated dprintf as printf-like 2021-06-24 13:12:36 -07:00
zvol_id Use substantially more robust program exit status logic in zvol_id 2021-09-14 12:23:38 -07:00
zvol_wait Turn shellcheck into a normal make target. Fix new files it caught 2021-06-09 13:05:34 -07:00
Makefile.am Turn shellcheck into a normal make target. Fix new files it caught 2021-06-09 13:05:34 -07:00