From ff2f78f7f82c1f8bc0d74e1a3dc1563e25a63ee4 Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Thu, 29 Aug 2024 14:34:35 +0200 Subject: [PATCH 1/8] WIP Signed-off-by: Danny Kopping --- codersdk/deployment.go | 1 + docs/admin/notifications.md | 251 ++++++++++++++++++ .../images/admin/notification-admin-prefs.png | Bin 0 -> 67374 bytes docs/images/admin/notification-states.png | Bin 0 -> 36747 bytes docs/manifest.json | 6 + 5 files changed, 258 insertions(+) create mode 100644 docs/admin/notifications.md create mode 100644 docs/images/admin/notification-admin-prefs.png create mode 100644 docs/images/admin/notification-states.png diff --git a/codersdk/deployment.go b/codersdk/deployment.go index d7c1ddce4fec9..47595b08e910d 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -2419,6 +2419,7 @@ Write out the current server config as YAML to stdout.`, Description: "Password to use with PLAIN/LOGIN authentication.", Flag: "notifications-email-auth-password", Env: "CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD", + Annotations: serpent.Annotations{}.Mark(annotationSecretKey, "true"), Value: &c.Notifications.SMTP.Auth.Password, Group: &deploymentGroupNotificationsEmailAuth, YAML: "password", diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md new file mode 100644 index 0000000000000..985f5252d6477 --- /dev/null +++ b/docs/admin/notifications.md @@ -0,0 +1,251 @@ +# Notifications + +Notifications are sent by Coder in response to specific internal events, such as a workspace being deleted or a user +being created. + +**Notifications are currently an experimental feature.** + +## Enable experiment + +In order to activate the notifications feature, you'll need to enable the `notifications` experiment. + +```bash +# Using the CLI flag +$ coder server --experiments=notifications + +# Alternatively, using the `CODER_EXPERIMENTS` environment variable +$ CODER_EXPERIMENTS=notifications coder server +``` + +More information on experiments can be found [here](/docs/contributing/feature-stages#experimental-features). + +## Event Types + +Notifications are sent in response to internal events, to alert the affected user(s) of this event. Currently we support +the following list of events: + +### Workspace Events + +_These notifications are sent to the workspace owner._ + +- Workspace Deleted +- Workspace Manual Build Failure +- Workspace Automatic Build Failure +- Workspace Automatically Updated +- Workspace Dormant +- Workspace Marked For Deletion + +### User Events + +_These notifications are sent to users with **owner** and **user admin** roles._ + +- User Account Created +- User Account Deleted +- User Account Suspended +- User Account Activated +- _(coming soon) User Password Reset_ +- _(coming soon) User Email Verification_ + +_These notifications are sent to the user themselves._ + +- User Account Suspended +- User Account Activated + +### Template Events + +_These notifications are sent to users with **template admin** roles._ + +- Template Deleted + +## Configuration + +| Required | CLI | Env | Type | Description | Default | +|:--------:|-------------------------------------|-----------------------------------------|------------|-----------------------------------------------------------------------------------------------------------------------|---------| +| ✔️ | `--notifications-dispatch-timeout` | `CODER_NOTIFICATIONS_DISPATCH_TIMEOUT` | `duration` | How long to wait while a notification is being sent before giving up. | 1m | +| ✔️ | `--notifications-method` | `CODER_NOTIFICATIONS_METHOD` | `string` | Which delivery method to use (available options: 'smtp', 'webhook'). See [Delivery Methods](#delivery-methods) below. | smtp | +| -️ | `--notifications-max-send-attempts` | `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` | `int` | The upper limit of attempts to send a notification. | 5 | + +## Delivery Methods + +Notifications can currently be delivery by either SMTP or webhook. Each message can only be delivered to one method, and +this method is configured globally +with [`CODER_NOTIFICATIONS_METHOD`](https://coder.com/docs/reference/cli/server#--notifications-method) +(default: `smtp`). + +Enterprise customers can configured which method to use for each of the supported [Events](#events); see +the [Preferences](#preferences) +section below for more details. + +## SMTP + +Use the `smtp` method to deliver notifications by email to your users. Coder does not ship with an SMTP server, so you +will need to configure Coder to use an existing one. + +**Server Settings:** + +| Required | CLI | Env | Type | Description | Default | +|:--------:|-----------------------------------|---------------------------------------|-------------|-------------------------------------------|---------------| +| ✔️ | `--notifications-email-from` | `CODER_NOTIFICATIONS_EMAIL_FROM` | `string` | The sender's address to use. | | +| ✔️ | `--notifications-email-smarthost` | `CODER_NOTIFICATIONS_EMAIL_SMARTHOST` | `host:port` | The SMTP relay to send messages through. | localhost:587 | +| -️ | `--notifications-email-hello` | `CODER_NOTIFICATIONS_EMAIL_HELLO` | `string` | The hostname identifying the SMTP server. | localhost | + +**Authentication Settings:** + +| Required | CLI | Env | Type | Description | +|:--------:|--------------------------------------------|------------------------------------------------|----------|---------------------------------------------------------------------------| +| - | `--notifications-email-auth-username` | `CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME` | `string` | Username to use with PLAIN/LOGIN authentication. | +| - | `--notifications-email-auth-password` | `CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD` | `string` | Password to use with PLAIN/LOGIN authentication. | +| - | `--notifications-email-auth-password-file` | `CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD_FILE` | `string` | File from which to load password for use with PLAIN/LOGIN authentication. | +| - | `--notifications-email-auth-identity` | `CODER_NOTIFICATIONS_EMAIL_AUTH_IDENTITY` | `string` | Identity to use with PLAIN authentication. | + +**TLS Settings:** + +| Required | CLI | Env | Type | Description | Default | +|:--------:|-------------------------------------------|---------------------------------------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| - | `--notifications-email-force-tls` | `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` | `bool` | Force a TLS connection to the configured SMTP smarthost. If port 465 is used, TLS will be forced. See https://datatracker.ietf.org/doc/html/rfc8314#section-3.3. | false | +| - | `--notifications-email-tls-starttls` | `CODER_NOTIFICATIONS_EMAIL_TLS_STARTTLS` | `bool` | Enable STARTTLS to upgrade insecure SMTP connections using TLS. Ignored if `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` is set. | false | +| - | `--notifications-email-tls-skip-verify` | `CODER_NOTIFICATIONS_EMAIL_TLS_SKIPVERIFY` | `bool` | Skip verification of the target server's certificate (**insecure**). | false | +| - | `--notifications-email-tls-server-name` | `CODER_NOTIFICATIONS_EMAIL_TLS_SERVERNAME` | `string` | Server name to verify against the target certificate. | | +| - | `--notifications-email-tls-cert-file` | `CODER_NOTIFICATIONS_EMAIL_TLS_CERTFILE` | `string` | Certificate file to use. | | +| - | `--notifications-email-tls-cert-key-file` | `CODER_NOTIFICATIONS_EMAIL_TLS_CERTKEYFILE` | `string` | Certificate key file to use. | | + +**NOTE:** you _MUST_ use `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` if your smarthost supports TLS on a port other than `465`. + +### Send emails using G-Suite + +After setting the required fields above: + +1. Create an [App Password](https://myaccount.google.com/apppasswords) using the account you wish to send from +2. Set the following configuration options: + ``` + CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp.gmail.com:465 + CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ + CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" + ``` + +See [this help article from Google](https://support.google.com/a/answer/176600?hl=en) for more options. + +### Send emails using Outlook.com + +After setting the required fields above: + +1. Setup an account on Microsoft 365 or outlook.com +2. Set the following configuration options: + ``` + CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp-mail.outlook.com:587 + CODER_NOTIFICATIONS_EMAIL_TLS_STARTTLS=true + CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ + CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" + ``` + +See [this help article from Microsoft](https://support.microsoft.com/en-us/office/pop-imap-and-smtp-settings-for-outlook-com-d088b986-291d-42b8-9564-9c414e2aa040) +for more options. + +## Webhook + +The webhook delivery method sends an HTTP POST request to the defined endpoint. The purpose of webhook notifications is +to enable integrations with other systems. + +**Settings**: + +| Required | CLI | Env | Type | Description | +|:--------:|------------------------------------|----------------------------------------|-------|-----------------------------------------| +| ✔️ | `--notifications-webhook-endpoint` | `CODER_NOTIFICATIONS_WEBHOOK_ENDPOINT` | `url` | The endpoint to which to send webhooks. | + +Here is an example payload for Coder's webhook notification: + +```json +{ + "_version": "1.0", + "msg_id": "88750cad-77d4-4663-8bc0-f46855f5019b", + "payload": { + "_version": "1.0", + "notification_name": "Workspace Deleted", + "user_id": "4ac34fcb-8155-44d5-8301-e3cd46e88b35", + "user_email": "danny@coder.com", + "user_name": "danny", + "user_username": "danny", + "actions": [ + { + "label": "View workspaces", + "url": "https://et23ntkhpueak.pit-1.try.coder.app/workspaces" + }, + { + "label": "View templates", + "url": "https://et23ntkhpueak.pit-1.try.coder.app/templates" + } + ], + "labels": { + "initiator": "danny", + "name": "my-workspace", + "reason": "initiated by user" + } + }, + "title": "Workspace \"my-workspace\" deleted", + "body": "Hi danny\n\nYour workspace my-workspace was deleted.\nThe specified reason was \"initiated by user (danny)\"." +} +``` + +The top-level object has these keys: + +- `_version`: describes the version of this schema; follows semantic versioning +- `msg_id`: the UUID of the notification (matches the ID in the `notification_messages` table) +- `payload`: contains the specific details of the notification; described below +- `title`: the title of the notification message (equivalent to a subject in SMTP delivery) +- `body`: the body of the notification message (equivalent to the message body in SMTP delivery) + +The `payload` object has these keys: + +- `_version`: describes the version of this inner schema; follows semantic versioning +- `notification_name`: name of the event which triggered the notification +- `user_id`: Coder internal user identifier of the target user (UUID) +- `user_email`: email address of the target user +- `user_name`: name of the target user +- `user_username`: username of the target user +- `actions`: a list of CTAs (Call-To-Action); these are mainly relevant for SMTP delivery in which they're shown as + buttons +- `labels`: dynamic map of zero or more string key-value pairs; these vary from event to event + +## Preferences (enterprise) + +Administrators can configure which delivery methods are used for each different [event type](#event-types). + +![preferences](../images/admin/notification-admin-prefs.png) + +You can find this page under `https://$CODER_ACCESS_URL/deployment/notifications?tab=events`. + +## Stop sending notifications + +To pause sending notifications, execute `coder notifications pause`. + +To resume sending notifications, execute `coder notifications resume`. + +## Internals + +The notification system is built to operate concurrently in a single- or multi-replica Coder deployment, and has a +built-in +retry mechanism. It uses the configured Postgres database to store notifications in a queue and facilitate concurrency. + +All messages are stored in the `notification_messages` table. + +Messages older than 7 days are deleted. + +### Message States + +![states](../images/admin/notification-states.png) + +_A notifier here refers to a Coder replica which is responsible for dispatching the notification. All running replicas +act as notifiers to process pending messages._ + +- a message begins in `pending` state +- transitions to `leased` when a Coder replica acquires new messages from the database + - new messages are checked for every `CODER_NOTIFICATIONS_FETCH_INTERVAL` (default: 15s) +- if a message is delivered successfully, it transitions to `sent` state +- if a message encounters a non-retryable error (e.g. misconfiguration), it transitions to `permanent_failure` +- if a message encounters a retryable error (e.g. temporary server outage), it transitions to `temporary_failure` + - this message will be retried up to `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` (default: 5) + - this message will transition back to `pending` state after `CODER_NOTIFICATIONS_RETRY_INTERVAL` (default: 5m) and + be retried + - after `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` is exceeded, it transitions to `permanent_failure` + +Diagnostic messages will be saved in the `notification_messages` table and will be logged, in the case of failure. \ No newline at end of file diff --git a/docs/images/admin/notification-admin-prefs.png b/docs/images/admin/notification-admin-prefs.png new file mode 100644 index 0000000000000000000000000000000000000000..435dfbde646c92c2c6c38049191a52692a512765 GIT binary patch literal 67374 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 z�eHy#Dj60aw$%)FktIM@T8G1K#F? zK-D02EqNx8S&-)h^Mb1#~k0?606sV=_c65<$$h>wjhr|9O8TR#XFQrzcc z)PUBJP24$wC_la@0_f@Dx~%a?>l)i`=AQS+AIq=Ulh-5%BkS{xwL8SkD~z;QDF&#I zS~aVKa>V*Q9s{Fe(HJkwc04?eUe5xE-bKk>#t^OU)k=QVo;7Y@>|T+k{9$I=i$ArI zKvgbHMgNd&9cIevCrx6gzNak$wb3BA`b|mq06V*{wHutSg3lT}gzSxv|bB9Y&y(y|P8aMIKqk8+AX-DF2)%cB1mcA1JT)MmN1VglgifYTxFF-)(RW zi)w21{WB{TGm*PDj3otg>B?C5l#r+Z1n+S{pvt7@@L(WSU0a)@Xj$ztA9$__6~3tN1;sN$wf zHKYv)aI?D2kiaSSk^>oQLChhi;6tq_* zG+SYXm=9GXuD=G#QYJDnjVi&z!4GTt@0cNwZmT3>i3J~cP*QbHDZ)%9%&sD^y?%K&4z8w=W-+ep@Pef8m8myyv{6GoX0le#<=;{p_laJZk<>&)jza?^ z9IOnY>EOr&l?*2z~3%@XwHHex%L=s^5oDO)`!9#e>^Yo<07yp_Bb>%b!Im zdpJafEyLf3Z0J`o|8;eq1MtBC-7p{c@;`FmbBH-m*3vQ<F#Jb^bAmqd}VG*NIBJJ%H&cDIM*>fyH8U3xs zXe>&R*B5y5CGP5+ix6-$yLCnv6}0CfWSYOQ6Z;h9sX7)cARO47j~Y8J%O!Nw9ZrX+ zI%M%-56ElS=F~UT3|@|J85-Ps;}CtjQu+L9uA4Hvz%P$BV$_E}6$%>PqK$)G)J;7X z|8J;uIo+P{`U+(E;8zQ9@lN{%WmJ`dc(eV?K~#W0gUs>6QbYUXpA)P)KbrT^$6uMR zo=1~&;r&yI7ZY`hA7Obh+{(CNXtL#O8E>phx}}{}-sExr+M`wNJH$D_orub$fSFi2 zDdapRt#T`L&Rif*Yi9u+ufwrVuV3g9FS3K@q37|R2?(C zRT(qMT)_*8p1F0aHceh?MKYcC07S$t=cWId;;Uqa^i<^uy%%ZoM(4B(169cT6$=Wl zPjp#uF1lW25!hPIKGw9FhKRh)jeSRv0OyZuFAYok_j$qkiy=%K(7t(PBJR<779|}6 z?z#zZxvrQmqxN&$36sWh>+{rwg^xC+hqMcNTmG_JdC#X~>Ups|x6?NU%^pvxw`lDJUZVmyTX0!$%>Z2E2)Ux6$Zj>WW`Eqj`0IyhZ_ zDBOrepiW_Bc+n^P=YhE$d$IWuVpoP%;Pgp&u|fXb#(fD;(Z+VZ(P-f@kWRgF1wZV6 zGX9|BkFuW-!U7Y&n0t>j$d(Wa(UC?G{5w$}9TgvU808hEcsvSZ4~;o$XZ)BK=~uv4 zl5MVS*wsxVVv_7SSa81S-a=_z_sCkGR!(OajOiOOcz;`nFdPeqz((y6(@;@jan;OL7-=Ji1 zuylIZ#P+DtUdTUX!9m7NI+<0Br}vvilq+2Ofb)wS9hC%GhtHvOXQ<-d&+igO?Um$7Wth)de!m@<(}Z zMeFt9Php@c?89@*v_&huoJQ{B^@kwWXH0-_pp_N~2S}!CC}=k79FBbglL2Hyjen3# z4QRsr6{{H@GtrI>Nv&dI>a$0s##gAUZ|_yG)r@G&pDRcHA@mV6_(tVNAKnk6lQ8Qa zlVGPet=GH$i@e+$!Ea(R%1uYBHG)vlI4D+>50us2ZyK?5i_$zBPU;`@e?%M@EM90( z34DJhD3UQKn?y(N%2lj4YxeMrvEy;q@;C1F#bwSnt%-tq`r-yMn3x%3?B9ezOl3QAa z|HWAsOjQLp3CYHHdz&xs(9L>5f9OFOHzyiz{1z*pQm)?L=0u~?^YvZ{03{B}0Ag7w znw?hC6IXG-ANtpz3}Ed8=lT1BbyxFL$3Ahsqb^T2RwB=Z{LGg8cLPOE4FqJsv^{QB zU-NC==J~G-zpc7b{s=C2{^@>>Htj{1t^1xmRn$`+Tof05i`1c7#pGA2dn2y34JKG? zJ0d0}2dCq6o>fO7HL=!J!$bh!d~v$#PrvrtojF>+6XDGO zi>C-4(BVooJB0&8U~zy7vZQH0C!bGgWMJ2_%l22PzUE*FSx7tS2A|?>d$4rlBc#4{JzWKS6H^r{078lW;zw~o5MYjXD&n$35ogmM6c{Nin<`OWGe*6odi z+rE}y@WHR7Zht77-XW=YUi??Ra zo3|C9$Y_8L-OKbS0K>Mq@cxF_D*th*>8fYAX((u;(T42iz^_-Gti0*b(_Q7o=g}NY zy7{bIYbW$3phD>B(5ai@0C$qcTY4*lJhksbMIZ*FxS9E3V*fky#WfG%3zw+TVp|5N zvjr(q41EC;APyp~+k04GsYA1c8d3welbO=(i$7O#_I}VM03t~Nw5km_F5AHL^8{H5 zxKcSaHbG*v?BUFlp(U#1*Le|!hg;lz+xDQo>Jo)T^nP#N)Xap*w{4h$YS^2FFCAG1 zvI&Bj;`ZAuOlN7rhiblV2lhqWt7|EU)3t7bATGqox;~nPcOCJVEM#{gy~>HC28Ji3@ahc`qfEkS#>Zcb~bRN7j0&|U9Z_y2R zCIJU=oR_8RC91FaF-`pQ13-Jf!15f7coHqO4N-nUHNH~AefWOR8uy}_-gv_ZQ5}YH zRC=~K^E05VG01}K*iJ5L$^TW0U@IrlQnmE8(zow?q{0$%pwbmZ??6qxA;E}>YlY6T zAVw*kijXwFTlSPE!KH6+B*N84)mjQghNo&n~xQtkFoR#Yn6>N&;@XN#Nabq+-77Kn_r+Q{P)Dmy!o@MT( z`dQI6GvTFe04JInIRNI|@lgE=(`B`)hIw0GfMZaU=ns?uZKM{3k^<<;oTDPvwKny) z3smb_zB z{AkNaLo*N;|4z_O_janoKKMGwG7JkH6$y82Gn&7TpXVIz)taJa#~5DXKdf`^F$Q_} z8qdvseKUj4>3E%)vF!M}!1qeGC<}m1s!rjpqKu#|u(3ieUf#-A_dZM?;bvonrK;f&lf~1yr2L8A^S@ zcGB$=8tZh4nt4=JvzBDm7$hK$tWsj44m5Nkwsg8XBXZQefWOFSPDSJVif^@H*;pV= zvt~bMF{w@o2$h|#r{6p6B7M#6>6g9w{sj?7X!az)ha4gGpu>L*(C#a*m_q1jJzQ!g8BEj03Ew&&)YoXYXm84EsJ55` zr9sySA3~w)*eMz@+J~D(zwUDo77lX$?5wpzI53Q-%WQ-9?8iaV)RBSooR0lvy)`KN z*0mvD6N&V5=V@71Y7hY`?DiHicG)moJ1Y*`Rkn`r+mBh$pSC+zK=dO|4QdFi<~T6= zIQ>u&U092hu7Tv6M^<=EbXsuCHQ?5HK#u+(zUx?YvyFl^k$jL)aOt#D5OC3l&X9^j zA1{8cHxeLp9Fa^O{o{mCvwK4EaVEEY#6!BpPv~?#wIP$~=dQZsY>z`ob-8|75{&H& zm`I0P+Vg$c%D6K;!j9PE2DN^Y{5+j3Af^s>&WNCyTgwfQLP@=sqz#7MMrbG{_$-CZ z*nt}BEO~8`9Y|q!VbZPsdY@5fw$n#J&ibwVR7~*m^3{v7TXe$ZL;KHRI+XDM>zhUM zzDa=FO{_vppjNf5?rE!bn#%G0YTN&?W-8&wCKxT!KEk52yNjGwqtNKz6dyk;EBbno5Qyit2%VivPM%A4@9mLY_VQ z8kWsF+WF}q%XqwA_xs^T{%lXK$=IEJ5@Aa2LtmXY&erU?%Y1#Ncu!11v*v{bbbX?S zWip=lw0@6#$hn13<$cwb+Jd^Hsp$A?R-{!sBYE9xc=Xom>FPO^;O{ceX*edcg}oE6 z8Q3{I4}A7O>`8rs5P7`|rTr)@nKuKrME*l+^o6<)h^j(Ei}UOiOcr|E%V#pqDO`C< z+TI)eH9!^pk1(Iw%kQ&-*BUF1kN3`3n|iJ^H#R@n$lybK#PQI` z&~lA?XDq)q^*JNBaRFvCWFaJ!@1Xr!1XGf;bC+XNE_ejtE{=ZEKe1D)2W;G<3a_0) zGFxI;g`9QDiWX@3m4+EWi=4W~A@xmYQGcX6d%Z_W?buFa z*e(H`YW4#RzRyUnO2r(u#M)m5@AO{*v?Z$n8IA?JT}Hba%szaD3k?|M?fi{5T{Ijx z$`46&vF)sH#p+h5Bf7{|cQ7AX;yp~_SR@SLJI*y5HH@HIxJa)T2EP{DEgQj|EAhiM zcP$MuyCJmryZs*kILrr>71#If4Bgkk@6#_CPELPZ>A2!%>aLYR?#T2Zd|s~NaP zEzw?!6LSnR=J#(3dBQzY#=WTUK=kG}S!m0G~Al{vi8 zUCwfkI2(R(w9L6a$z@qvu@YwDEr86)-khDLRD?WJ5Rf5M>1M!4b#O(*H@UtOmu4PN zw*2>oz5*Y(S`H6^{}1-QJRIuw-@lZnA|z{rRO$&?TI@m*k~D-AA@n?rooq!jBiSO9 zb~}?jhBDU7h@?`CEF*)lRF+}JHij89^Sg(7p3e7t&+mNC`Q!Yq-*uhq>W}H7jQjJM z`}2OSw|5ovRqGfAnHiS*vZf1Jc;XXvA^Li zF%MwxyqdX6${TXSolEDRRum=NV3jbN&U^y@KEZ=;+}o-(cvG#cCg&^Gv91k{b2!U%*Dh?;^5uNg1We0~rvObxt%CWWv|bIL^8I zH);OC>$pk0VaxdW`u&4;+&6gsM>D3>VcUHPDFz7vd)))qwN z&XS5?tL5>ub18;b4sbGCYHr`B1|_wHen_Yt=c^(*dGj&f4jycCM0B6mTv{5Yyw`4D zb{pjhZE;+rQ8TqBc5>{!V`LC_sI61`GyNqJc3P{wxcv6x7oQpbrhy4Ll^JFWw7ONM z7j>;RGOxWqkc{k4yW-?`cbW*#yW#uYXBs$|l?>R|S;5G3OKP);Rb#CqNbqM6ykI$yFf^J zgt?n2>;xYTXu*&n2t7(#tT&sG)fF2yyHWBl6QnX?uZ^3%smm0@3R^39-e7s&BeO!N9U zYcW!0$Vx%|6k3H! z4a4Kky}Pu&<(Y2&5)Il_$};fk9cLEZJ=v-G9Gw&HMzeEfGM`^MMn5%XS$4Sv=0M8z zE*=-6n)Oy`4QV|iS+VCOkgqPcvYgm8oOCY>&?wW$pdx05lOy=jo#}mxF{}hCF`eE| zZPEhH>;dyRp1@jl8)!y>-D|xkCAwnTm99u_itDgyS3ql4wFiaf2T== zh!raCnU-dl<9LKvK~6-)GlWtHssyRR?RmKVO6+c*$y-8oL1bJ=%%W~>nKSuj!4QU5 z0i*TI#900szH+cG@XK7|1HJ^xX8!ZuWcv!gqV#~}G3TXw05-LM)~`M$9ead>M1T$}j%Pt~W7=+})np86nFueHlDZn`5j#YUtP)ZZx8x*h2^~ zW%t=7h+3s8D}kYzXey&y;dduu1MhB&V9$xFriNo4Ab<+peSZK6f6VtlkykoX#gXC! zXHD}sSR2vLqkJ2MRcfPE?MhX=VpsyqyfR~E;?Aq5hR+WqB}i%34A3WrZmHMzEPHXX z+|JBV*DPw4dIDRtPRMC_J&S&0Z8tJX7NHmFi@Wx|6G%;Vg<8A66S4hyukY~d&B;j_ z^jm&H?zi*A&dMp-j2AgZk>!%~hQ(DFy|SeFEcU)A4D50gpI7}kf5lzIf~yi~+cY3=v7$rJlSlh|>xm4(g_mrF#&DfI+n=qSEIAfcyh&jmRt(Z;=c z`%cJRc;27^v6y2CNo^;{bg1nR>j|48zV;>R@#n{>?Hww^Mjtl=l@qL*b{*<=T#2g_ z84)?AcXj4HTawqNPjJJALSV2j*uiU4i=A0XId@iJ2#2oKDI)Wyh zx(kSU6}v8n_1+Z*f`V#$40qqoyDdL;ZDis~d|pAn4x69=$=MUqJ*mzP$}f$nepq~t zIdjZ25T+~`b+|_;VcRl=DR4VJyokftS~9%tfJEH*(O_l8&&Ju2l{6bM-O~Pgd{;7q zC(*wOx`?{mh*g}z*NCxU;2fE}(a15(Jwb8(sGB$C)y_KPh8tz(l52nqCB6+EW~DF` zyFmbTZx_0Lwo>Sh8vLYZlKjC!FuaF6UKo(?FY5qRaE~Dbim%gri&~+EN33JFhMmi?c6V_1v_PO4UzB>Z}{9LwVZ6VE3n@zU*g7# z%TI-L0y6{COrqsQ%gPL)c^%A=@KKIaSaBKrvx3~pA;&N_Lx!wh@G0+_{E+2l(ZM4Q zF^zqqmKQGVv)46d9^jSkb6V)wP6`P_GtdnM+3RC?-G)WQN^n*d4K5@{E%?csx0St$ zCv5vu8}$hi9R0|mU(2kmZ38bEq_2Jy}V zO%vPg7tWGx3ud~U@t6|7*Le@SB>c{=F98n(o&`dPH?(@x$Kab`i@S_KYQ&}Z*hx%Y z8Z0G3-`Z2RV0vo4YAf$qe>7V*tg#T=K!6DJRU+h{2A#DQ&THC##9e7 z9J8Cj*AQJ0YT=D>S~iF5PurlByezh%^0OkNu*!RiqIAR#%74VOwgPE3t&mx$AkGJS zj%El!*3ge9s-hjAb_4{hoy`THK)fiu>N^yh{0s0*xU{ ze3o~;9o?bxR$yuLZ_<_6ctd5@+l5FeT2%_rhO0VqUU+ndszOSRjD3+{1uF7u2R`SK z(c584H$uSzk*gDXxOaQycE89@>!}F^mvI-Ru1gzDBh++@_E^PRdsLY8mPYB@26`yR zl{p$$?vyFAG}_%5!!J=Mm#9--h66uEPHxa?CL{A~PRnBtNNk=G7j$;23G%C+@J{(1 zb<7Ygwz>bPkE;t#JT;9ucLN8tS$E*{W@dKdc`89fOSE)6h%7k3&!okk<=qmBTP!~5 z<3K=->zwd}7d+|Fi>2Sr7@B3I@~?RE8ZEvNkJ`YuM-8)gtCpI&DSyFa095MGhbo2M z4($c~l6lZ&y$8Lx6DSN+zFjMaaQH*Rs36*clw%Uyln+@1%mc1QyYGwN!Y~V`!E)tL zp{y={d)+@iusVzRv`*07T0`h4gEPbT8)b>OkoZLQwK@qm-&dbvF02MV8Y=Vq!kaRZ z&&FQ`0_T2;^>(QmVbJOtA;7QeRo?MTLFwDi;ap<~CSTI&Vtwdy&cvSKPP^0RSBjo= z`_CTAVMiJxwD|&4DBYFM2F6#u^$hevH0E;jAvMBi;T-I_$#}yDejaC@r?j8R*>y@z zeq=HFth16Dd35=hLn5th5epcuR@E}Uv}L( z8+^F~F1ca1FMwT-*0!4;?fRBCCml-$Bw_@w$1xw|%LIFT?+f`d_uzBM-+=TO?w(Y3O{i$Jo-SZbDT=zfmdKc}7nzzd=ZQrwf zv~W3}Ri$d(U8TPcuDBcjKli!_|IGaW;gzEh0c-9|C^SVnZ}6pp(=GmV47*_fF&w)? z{A{?UO&;S_oUxs%f{_L=6TM9`c-l5XF4Lt3T+0~lwM@|{o+o6Oy!-WHLb%yycs}mo z+LhcN1;Wk#VI?pAI*Os-n4F~ARXIT!&=jWtg}l!W+xCwj{jKjI<$d6*zH0;JmLKPT zh!qSbY>0W)4FBM;h6n$8m&DM94h&(P=FGTD=>;>q84jq*?gE%($6C-s8zGotW znH5tuuwvb;D&~KVx5d+s%$-H*nb7?^MgZ;0;zHR(=;yo4!{14oH8>%y%4hZG{ta+m zxAF*VRHEl2gD$93p3Ygmzy9Gi(?%d_hd4O*p{&73PG`jJfZ1Q~>d+-TZbjl~;L?|< z%6k${PV&8U&+Zz0so}Lx1X7R9s~E`Hcbb2S`$>am7H(yU$w2NuQ`_Rr@PC=g7;4(r zvfuq3eA#~`-2KX-0D4j%+1ETp?oNvUM#2_cqg$tYy|#|yD~ph(Yvkx8d)X$ zrm9;JKGO{9iiEfK%Rk#^qtHBw*6q?4V9vA6r*Q3+OwPQPrvF?$rQ-s$#!A9*IG9*$ z;X>+_dRxzfxKiEXm(bE3oWjHFJYDAXJ`}m^m zX8p$Y?)o$hmX)kL7X%+uz^cwY-XL_9yYuU*k6jO8zNzCoexH%gy!0OBMC^LR&~K7| zm%^S=qBm4LJ(K;TZU1cnIG@PIhcC|KG%+)%A-h9L9HtidHTv&s1(Z8Aj3GJ%_9DrF z)(r_6NEjW^rNYPgT`*i82)S8t5(EF>KDKPN5&aSQNly!&$7G~pdhnIob>PYY?1Ia268ly>-*vH3J`?P6aJnmGO;YBpn>%87q`p zM^z2{ceobwsQL3BnKkWp&jasM0S%q0+m72Woqm;2FH|icrMaB-{pr|uMtj}2O5GJK zILeAtj~Q|#U6BDUE7+ZzrWux3+xIFASt1D~oWTSsgF<}pm>!+E>wV)UIEAK}KnK$w z_vjtZ*LAYhW+4_q@%r{7IFTs5I%?-@i`sxwyNB?ew7Sn%-i;q9rBSbc<2cb@$6{sE zAOE-mt---~1Pwzu=}*E{Q7v}c>4gxDt8&uK9r(L)KbV;Z>sz88C(feOQ!qLWF#?P^ zAsw%~s`$ssoPOB=aBY_t&rR1YcZid5%-0g{g9S@kvm4yHn(Y|gyxgqcS(qz2AdI4pZBBd))_AR*3otv+Pp#W($T_)0!@*)c+8 zsWE?kpY~%UJ4*IF@LnmU8+qRDMeu6-zM>^EN86aSo^J=IZh_!Yo#>(gbH&`}bp)M{ znEfo=Xz&J8Mw9++nN8cxN}Owv(fj(Kk$nJ-eeK;}{eF|UKkyTdVKfI-?s$BGQx_?% z4~qvPZ-+<>%0jIQ7k2PvEQG$5OOjX=()qrZvxX4XC0G~%C26yuRH1N;%(p}|v_GG5 zKGsD})9X~6o<;6%P-^sJyZEEQB|c72k0u@R3&Qj(t~bheqTFlA@Z*<&PbE>WTOvt_ zu5zRJHqp^n20hk$Y;B>av z=Y@m0L4t9--yjDshp31)afM~(eUz6x8ESvqrHdp$KmgeadfsGJ0S;KBbwDT z1O&A1L?mkU7f_e3j_B_zzXv*URStVV7$+Y7U~{d0lb)OS{EafG(AgiL`s$+OY?kmw zaOvk!n%JeQ51j#CG!@kUBGI~uuJ>YGI%P1MPR29}@QdFOn=@gK4rMu@5&C;O)P$pC zphsC=9ik5%T6~|LakY7awy%GSqjb@>RbB1&Feozm2jmzv-`s_SNB0!OKIAt}236bk zuANB~5@F!%Qvb7g#cP{42qv5>XNt&5IfY64*)XtRuS$)flV@9J z{WCvoG4+b%kAI|F+7qPxH?Wca0t(mFrA^WTtg;=~-|DHi^nZTI$U95}Jx`QK!q)nw zJchw&JO5Jk^PKRw08*2fr1L>)=d z*pBegq8T5LR{j8iT3N}97)1R+6_<&R*ug8UnUs3Iw{&4g3gQ_HGU39+_!TnDR>zR6 z@-OFj68#vr6Yyn(Lm1+oXS3Ho{Jc}W8~g#RWb$Ys)Sj2rXS+ixHKNDg%iE(3qcA3$ zVGhF)76%Gdhsq3{_+dqsgmIo#=tiIJ3u0@Ppj@n#yo7;(_&~&>34dh}5Y?pM#bt+R z9(Q32nln_@$}&e?zQUVjc|P0tB#Gl!-Z|=znJMHEC<)1C*`tic?C{xmLzImEg%{8F z+8h%1yXa4&u_yLv_TONt5?Il`o%d~~wDguw@aIfsz)H3!s6CyZibp8k<%wOw%17dP zvUOr8wldt3N57jPmm9=*BUl$@Y4xDVaRqsv| z$4tK6ss3t zhB)Oar`fna|9qK?ON_Ecids}|+E3x-H)(;~ARVe{tqS3!aPWC$aZ8BB+J06IHrJOoVehjlY)$cTML@jFnR&%bBl2s1)DUdkD z#F8@i0=&k5*elRP%TR96&bxZ|+8FviSi{6s>>^LMfa);kI*Y+0Rr|8cghpnfKRAse+f@SQb4Hq&L+N034z zi}ru3l9tEkgY_=PFAg{|&ma$M**OQG9MmGUd-)#+Xs!TfdQko={$wJ_wf5BiH#jN$ z2TbB(vj4?Q|6gGy<-Wa~OLer#vF2&q!&9W=k122#qQmzRy`K13+S&|#Yg6?h4z{qY zBw(6Q6!6|Z&z9-K4j2ty?kxSp&$>Nr^DVA%GM@2_01gycB#6mc$1@mQJM}IZ%tq-e z>0xFTBlP`Tbi)g2GPyXZFjR&d9WDAvZPtd5R&EKY{bazJT6F(Xh(8x{%$MHT&Itlz zicR3ub(9Hn@fHVR^Zt4fKtZ!?7V9@bg)ddgI#<5tvO}H1MyHeEIXU)BFri{ElYDbO zhs=D5Q)MAgq_<32m0+OmC}?ZEm$^?3kkVw0FZy(J_>zwj2DGqWwT{qk?(k`rIAGqF z3uYr@))s}Yu}MjVLfl_wI@O1jL|hpCo;>Pd<&5MqG0#wITIYd(UF#gmZfaMlNLW=n zM>JMinN3M;!Jb%l56dP0&wXQsCb=V_4qyX*AeHOSF-ls36YU#jr{-0c@9FW?wjE{e zsq&yfs)h!HP9<98kW3|?Ow5Ccp_-jHTUr{Bx#usr^V9ZKa|AKkV?!b@^_6oFEZZ&c z`Jf2(0N}6Gl|F6*o~~?yz|*4SAB1vkxEqiu13U@HF&xY@RXr?`dF}mKSzw0!{?4#2 zPG|b%G@Em@%_8jvIxMiq+NaCdu6kh6!@5^8$wyGBeJi&qa|%5Ro}j_^DJhfj*NI5LOZP9tToHr!G^5aqa{gX**syKL zO^0};heMPYiCl@0T|NH@QIxcQtKQ2p9C*IMiLc>F3q*g}QNVnL2Rhd3v-BtVw<--) z4<#3$T72q3DWp|hY;eJi?$1E0|O&)soh|P7jpEL#hTS335Xt!sj0Xf_VrKyC6 zjlUDP|JTYJ*=$y|U%8E}H@Xk+FGBY$MJ%M#^#g@Yr%n)UFOy@ka-4|yX~7vxE?|GS zjIP;~-yZ0UeA)9U>>I|=UyCcoCqo}IBQC6g!#Gb~fmLwm=u&i(&qD08>PL9p^TB4_|nnk9BUZr*l8Em$HSBqxnrT6t@7Mr6#8>$mfqtQ7BGhK9(9yZbU`i< z4X8a#E|{vf&JzQytOTFFXen0;HZaNjgULdA@ej_kEMrlu$)r*XW~ zS-J(hhkC8;r7DB!!PQPd9x4E{$gR0MrsKgq=EMXRiP9daoLM>rTop|wK9MLb2;}Nd z&i3$7^~~o(hzgUJ=Qb^s9d~9Qj}f>!`W8CJo1Uo6iDI!+9we*UACzZq*1 zB7di&YX{dq5*oFpZ(42rTi+Zm9&tp8l%LTa&w#us$=gDxGC-@Z-a-4D!(lZc8uv0D~JTsZC&2O z)3pI{%#l{xeJtsW= zl`vm@wf#$s9um zmzcPAzqmM_TQf_{yfgFhmnQ$xHLYX-uys8bg`*kCoxm~?M#DD_(VR20X>zXL4DW&6 zasg6*F1w^`^j4HZVv1-9vItw?=zK z&d{jk#|}_X5%L&YJ}tGwrqg^vjq_yo@4UY~%q!>$g*IU)LMxzhwj)#rxtO0fO>bYg zoSAY<3tVx(bh)sKl0Bu`p78A_&+6Tfec60>jJULnf17bsFz;4IJeKb`uapPz<@Iz@ zkMqZAEeoj*=Q`VC9(CC8(XTF7>V6_ya)_EQi)`&s(VL%GKCvT|HDW#=-&WYMvqyun z_#Vr#AL?8Kwqip%rc2j4cETCV_70mEt`P%jy15kLx`wMwhjvqxx97Af_#A}?dL3AA zs>OO^0_!C|>GKx;yma&zB}t3&tP@@?@k7LX=k2|<tw!Xj?cYM{$pQu-0cm5aBO9etk>&~ zgF|IB3!BU2o#ct%YX_gXUIcU>yr+^vE$eKjqZ}(Ni+QENHohYBM$~T{F>WTGgN04r zGr?ArkcX45yAN`fNw-Wi3Y_`Y2ex_e2(pTSj!DYSlb*O}cJp{{II1TMLbn)>GI=E( z(0`Cn>ITI*w-Ead{@l)2HQx+Z&`@k7FML*5sQ;HuzZycdmuK4nycf?Nl#v-<9H&1<>*tXhqqKVOO5}VZ{cT z{rc8VqrZzUQnAoYT&@n0IsRVKzHawaOrGC3D>O8&QLNr)AUn(jw{w3HuOSUFjl4cs z9Mz~VzDb(TGSEN`G}7ND43(LdPQvYVF9UT^B;Fsaoo>GP^=^1Ae8dq^ZpW{sIB;u8 zHx>-N^f;_kIyC-W-=WZ)M9MulRU;~wE3EDky*QC^o>P%7Drv)~_3RN?l9Cx+Hp%yl z%RO;-4D07&0KH&JK>;IAm;bWHgGmkFw^r&cD{B&$vPfw>d*+8~0^5)n{aHsQ<;C_Y zUjYk=Et!2TjfS?J{DBv5+$k^^R=agobX;wq*xRhGW4X1Y?%r==-F&vmJv@ccl)5+5 zc`0FKn5p-B1hV}++ga?3p9d`+!k{eQ(rGlb{dVra>LY`D9%dPj?;A)z@_D{Rv<3@`?Z8ELPVX`40r{0WH6G4*mJBa@Xv( zKQ-~Pl1|l6HPi!LU8wV?BO+2QcKqIFE5PrF!P=oh5XGi*<>5@qNJqFEQl7 zF~6!Y1X4vC3t414F81OslPbBHz0MqqIiX6xF+24;#e+6yCRGlQUnPAZ%x?z0C7JEE z?=yqFDb#!J4pp@HuiW3Lm)*VHFD;0&PyO~PqoocGtd#OE%nxs3CnOb{{4I|XfA62r z;4Hi(=Kqmz=rFLpegJB~At+y5u<9ruOMpxhh1g6hfHU8QA8%pO=~7zHz9fhX z`a@c@kN2X2#oqK?A+k8v(^9pTo#^Aw^ZN_pOa1DmyYtF?rvyg(zu6@O-Aam(?r;;A zNT!jv-;KIp#}1Z=7=E!P+lBpsg?MS z9a-$HGBRuE0GSaiRVNAaC1mzZXM1gH%f+$$=tx#aK`K|hOVVRkaL#}khC2^XYU%6g zfQzV6phH!k?y)A(MPIC0fIX-I$HP0ejG@4S$-KF*jrpwPC_$tndb;KNu+#I%%VeCE`iwk-~jgne5mk;JGig;KXC{D zJ5`nIGOj9a=oC6`Twe**o<7R4o3i_k`@Sj*Cy3H=0jrE>j9A%Qf>WVT~OMihY`1{a@pWS29w`2GmDH$_z7j z5RRnxM1;UIgVIV(UpF?$LFH?%xUP@ko5PTMB*aD)Q;@x79Rs?5*jqJZhh+~Lt#1Ye zQ4F_*3zg1e4%OpsRZFA$^s~OeGr`!^sUr@rcvDY*y$1*NuGNQ21Z2QFkb{$G>>|91 z8GI6lS{WNpV`G6ViX@q>H%-!K4ZL-x+`}Syw{Zs}G?a{iA# zW%cT~LQN8)g``TeC5D!G+N?u)5^#&!-8VJ?qwN@ye-Q!CLpaxt-KV6T-3*3ZT2$|1WrnvvF4s{AwjW^!$gFxLJWl@DYn;kTK~-avN>Z`U-f&P>OL}pe@<07F8&u zKgG{6V#+x7qG`u$PE)!n9+G^l2?Oc=JyB6SXQ__0UNx#}m=dcEd~Rw%Z!3e8&&9UR zwc}=*OP$Cs0|iU=xiZDRa`^>Hk}j3Z#oDSx4y#yOc&lRY53DV}4IjIKm_Nc5UF#fL zNLJt%-2oBHVqR*Qc(UpPCf}HZYUMP5sgkdwLXh{U#-8IX6DvTrZ1D_?Y(sUZ^!0>f zZ)>EWup+!hKrk~gzJnd`w$du-zkJucr&{8jgDbU=y`JjGDkDOIjED4_*3-zPsD-$`C&#S!(AT^WcRdjIuy zma+HbW0T)|gYOU6Ga8-Zk9i1eP3QsOak_KiH?cf3Yd*DPIfiQ8U+SUr*k> z{k8hUb4xjHjYGwsLoT60-;@qNpI1?+Sj&HW@qjhBhz7nHHi5T176IzIyMHD~519HD-ylnd55bRw@mawA7TCc_2zvMVp*3ubCi|3nGyl8u{ zsKHves8TPLu)1pSL+uyRC8l5d@RS{-Wq;gyPf8V=R;XTFAI z*Sh-3h+dfJO-w=^`~?-cbXibuvWJn~=r~rUZg7HZF&>~6G)!UcTrh@TLnzM`MxAfc z5CPo{J$;gp+2Q=+6<>Q}Nx$>LvS*U;eL^%b0@y#}0un+k{aNiO=mN9i_n5^mjVZrh zT(D++mfuP|w=H{UKk%oEK3zs*tu`x7F)I<=I|qCy#nHA0bM9#jUr}4ov;`5xyVP9@ zL)F*&-{fGqJKD)LgDli5GP*voa6o)_Lc8@Zm}>Nl&VYpfEXu`uT7cC|?76s2>@Gl+ z_$>PF4XnyW-qcb{i$g{E)&-W*fgjBfVU02&OqxhwTAWov8-BJjw!q2r!|gna@gtbZ zh`u&`WUJ+_5~=Jpm+?B>+@#b>CC$hsN_=;>&33(=cJVffc)arh#u=p=2mpF$Tx^Eu ze}vD=06yQMT06*y^V}k_!?ri40|LRgdPd2=!oPdymMHbTFKFt*<`Z6Uk#r~#(wxoA zbJu6+gL@|dhBqt$j_m=YP|9zji^X7{dJ%3EAFbGhhiywJwc7mbp5gH33^j!HS!eEg zWdW8D<1V@}%G!;)V$ZHPY|(0*P*_}eaB$(ExW~Z=x#KA^w#Tvlok>`&t;CY*&UcYz zj;JjQn=Qn$_=Fc0;^Y$h4i_COQZTW74sr&pVs&;$e#&n-BlbuP!9Nrd8zqsWVR644 zBX6@c25C$XQTdKNN}`JB*`9!Y1#V(@rBGZ3PmZ54+971zsTbLZKf>b427Y4PQEGRN zx~d^?)~qw88(G7ro?H_U1Ru2$y8HAty$B3;#D1jZjp7@8=as-D^|@y=jw@8Gd#1Pp zW>kH<(e6lw3*DFqZj!uA*daTa;&z#^QE&Zi<*WCOxSwPRHRqU#XMH4p;VB4C0eBMd z!6l^QAiAFA~|l<$foa;I{ydXEi)R+p^e zSM!DY%6B!HT#1xZ8-aI&b7r+EIUsk0~q5o>CeN`sE$kc0eMq_l`;r|a`+nA8qYS`_S@(XlAI-9VmDqX3mVklP)tN@6 z-Ym5xq?uIj*16LENc=}m^jEa{Kk@oj*M?Q+>ALW}{*UfH>e`T4Ex=vKb;tgOw#QWd z-@Gm`yq{Nck!wj{s=yt=WxOHqs=gC5nG!TT%YtoAKjLG~|Ce#M!LFS2!bpfvYZPKf zsHq}U_b(AJEQ&1f?^pYd3^Gt{}LM&%CU!mH`*F z!PnP8NUL@cGW6R{y^rdi=@(Vc{nSPNQR2>PoXyYVkU`d~V7zzUBw=xS6NgohJa6OH zkTuF;b}BtVnvdOi)#cpo>HEs@1vFIVXam)`ip@-hW2z^5IMo&gJ}T}ch_&pK;d3|2 zUpyNCMZm2-tPq20E{+V9JzRDfX#}qvF-Jl_auuNYfU%lef>JhDz2M(*jJ#C(2hV-e zW&j0Efr&W4iU_Qu3nOmaJ!54NgyY(D=*cOoaf3n#pIUT6b(eL63+HW%?N3W42+M{a z=gdX@x%7An*pVqj(Hm318j#HzHoa1(?u;Z3;c9)+f63ZjFW0w#7-c_5Kt8DORR%?W zYHG2b=a{ev^hI_@$J-X^qZrsYRCK`NxC|g)&w*2AGQBGy3*Z(oAzmG;*R_*Qk^HavCzSE1YP15-p z+Ar{>5$Bm+bsU4F0FnJ9^3HVH1F4`6F`ugXKGDU5dY81im7;Q=nc1d+`vDpAEpJ!z zz+{qv|7SfmrcY3JMUwRR3siqp1)`S+yZrvn)0YE7qtSJprWc3kNtu3+b<0d=)%Y!> ztafGH+w^yaH|oeg&+u+LhC0~D+Rd*8BF?4b?Dv4ipvP~8g36HzMI&!m?8??C#Zm|cS~J9_FB*E;Ml zL)m0JO>?xC_8SlD_6_P=FokoVI~P4Kg#b7rmoyd1^(2r=NieOVrncE3Rh+;;=8Sak z3Rh{sb#UPt?iSZI9Jm!+y6`~Y3RAi^#ws%6mqEGFGOjsm`)3xpxI}}33c-4xcQ!u_ zoFI;$bMO+^J5QELnHoI@$Gmk68NJ4NOxu+AX<^!a{+Pi=FT4!vHA3d@2W3HEKQR23mnGj@ z#=5Xc8dC3a)5OTs=gHsJ+mzq4Iv@=5`o`bj!}cOB{Yz$8$(}=F&VEmQ2_p|6{#kn* zkpfi#u*h(}vr@KMu9n8g>UH_N(lN4!-blPxToIZM33S2rY_PgnW8HZU;egr#677wK z9mRAN$I4d+OOBy*Mc)==VZ0sV#m`^@R5&aA&R%4UzWEs5eov+I@iuUh%_uN%VA<$p zJ`bC(MD~?Tu&QJ z1;t_QsjBRbox|E)dCiv7*I0RCOE99L0smRB)a#z*_k^4p{`{7HUH$aq()-dwK;8$GXs9Xrl~*TsFF zIjZku9DM z(-8G+BoUZQr(RMGJGB}S#nm`2@e#X8?3>H^T`4=Q%>nN<|D8w`l|fDD>9l23T9;DG zfqx#QxPajGdRS`K5;Gi$wUa?-y-uw6om3;`HJoSxD%n((%W%s0gnDTEg)zsoTI_B@ zyu^cUTCeX;u#U${MswN3l^z(@)<`V{{walhfl`VLYc+GOhy7#1REd99IhiEp+r(;1gjMjKQfb2Os_jFef*X zqABTvs4`{!LD(tL)d}w|7Gxw%j+;vRbcNgi`*Si_wt7K{9qIz`oKt^Eih}T2KJALc z*RcVWN{#Y-k`Gu4E+z1rxxZUUGbtwGf(2d zhRyB%+&DA4R1eAW{a`ZEOSh$HTC5tmFS~heNZgB&mZcY_`MoizE`!yKdN@A*IU7~1 zZ}H!sPKmEs>L{yRj5d*pY@%Z}qvFnrJ!TxJsT5P`tw_Gwd}&2gOt0IhnZd0PAc|0` zi3UL@Rs+d@{s<%&obUeI)1G`-Z`hD!uo!6#2c~w>HB)d~~ilpXeb|EuxP;w@TJl2OW#FIiRx&fyRI zyZ~6(2Npe=zD^$gtu`$rX4A}Qw(z^j3KjGyno&wv`z%e7u3;t zYC+3YIkZSv)Bfd~p31wY2%>E4f~dH%Ru5*e`DofB6hOI^`M}Z&2#4dfR(dDldIH%f)r#+&gjAezO|^bo2Qlhr5Zr`G$NGc zwO3{Tf_L54=Nl0PO9OKo?|#z1*g*!BMiPse2NzB|_fE3hr>lY-Y$4M`~Lj*Uv7gutP`{(D;(RSqLVp>?Es(dSnH*ZQA-E%5*v! zd%Ic_&zX}0VINNQW7TacT6ocsycO&|^yrA&3D%bUBM(r=@+X|U&HEDcAnHEQTX7*# zie{cS)gIt{U#lfNY22I;4D!3VVX1-C&T|tfu8g+Ed%F(7sbIi=DCSt2px^N;smToKMb8>C7F>Lq;Gro;^!@Y+9 zNt&<4n|}6Bg@?N(qxG0Oq86{~mRm^7T;Q_Gj+^l)xmvHX?WUJTe&$=7Bx_PZzcXw~w_Rq^ftm{tx&9%HU{-1ko3;SI0&~vaf#*>tbCU>E5=$lm`wdWjPmg-?;1+oL)db|I; zusmW*ii-{vR7zjq)Ue=qXzahhKv-6HU^_{t)~@6~D;pEu`fn@)|Cm>|4;Za_@@P8< zOaDcNtrZmW*-+o!G#dOhU%z^1XGM7H4UPAChD%*rI7oO-b2eYJJ@8kzlqnOp@+oNg zLTH9hJ!hCp$97ecGfEuk`Z0ANPZ{ujw!4f@ebK_+$E-B26{^kny$+-Fg-}S|%^rL^ zjp+r5kG+EI!(4xlRkCH)=&F5bk}1r3PtM5#UOfxk+|xZT^~&i@?;L24X2 z6TwCU=@FIV)-I*qS0%ebM{!%Z*568`Q>mJMC*NbeJGA9gX@t%ihY2Ahz-;|MOg!L@ zZZ5o%xG-jST$*|yKPZMmNh#N?(+Cm^@TQ#!aJF7D6f;2h(_@{ZbE%>bq+TO$|H8^x!qG=q;# zTNP3euzxr_g&#*ghp>UkDYvJ@>AtH!T_`R_gW-aWAtX zAS2Gtv@vaC#C1$sCiP~q+;`Q~xV6KRS2}dyZlU7O8YOw@m=(f~udKZAa;!S( zu@Wt+IL^`YznqvJpI%K&i|ij5buOMRYf74hKV^MALdofHi!*uj@rgE3K;NfY7ygD9 z!CBf8QnMjU)Ih_u)5NEiX5iCyM78?q%ZxyyGe=8cxW=c$SJK9Irs#KCWX?W8%HW(c znM)!8{au^>tajS8Ki>weVf+h&Di#evk_TGx~UTc=p8O<8z zG7|2cvO(?ooMb6YM6zekF_PK7^Y<)*K9Nk(eH4&!m)0XPRb?6Bl#~^Kj6kwC8n0kO(Le+2Sz2_kR#X5x!%I{f8CJ0tb(@W8YPg=~9W41>ZyNFVw{& z=`IbkRI-o1$nS%Wfhu)S;JP{B!EMJyKz{(+g0~g_4A^ohiJa5CHBO$6QMS${{va_j zSU*1)L%HdG1i&jt);60iPv(Qpwg3Yk_WSz79CiATs&QtVqnLN4&#k!XeVHmDYprC8 zuqHz&FDkCX7wb4i*pCkrjqvKP_)>q6E*3JXEOO(g-N2)-!8G&6Br})ig4`*c;4f!m z$*L6d$MEm`-+wJ7vpQa?Af_0cdEKX!^UA@eu8B&#PG=1`@DI}9J^r;BfEx_nkaRTr zYlazSeT-ujLm%V?Zp;?l6Y^EP);Zat}YN_a+_6dv-ALMip5Qi!L9R`vGCb%MU86Wy3|x(+~}>1j<`yi zJ^kWqf{>I3134W)V>)mKg!G@_)je=n=T*Lf%{n~Mra*aP-L^12D<985Xg)-Q%+_yi zFWF{ES4qp8Ur3W!S@x0w7j#LlNF9XDrLu(+zsC|AM-OllN1(YSaRdf?_cLq+j#7!r zk5giGJGk7!t^i8(E2jwSwLHd_v^Z{A$1Zw~Llj@K$@Uq;*GlspU3h%eyExXN&Zpk9 z<2%7c>)g1zM`PC}*|i4Gt=qH6NmdMiu! zt;BOy9SP`P90{a`%Z`l0`1b@rG(+02wDVP{$=D zt7t?vJ4S%=-Crc0!F^1w41!j%Z3#nV_aNJ$j<=KkOJViq9KOSUF&aL@IZ3QpJ)ub| zF-a#F)^T0!g&}euFfI7cR`4EJSda)~6*nH~M@QHlk7vI?A9R>R499%l=w9Ks@hHKb$izDfSJL zn?(TTj}EzEgoQ*0voY(qOSFCn2u-s#rVn6o*2gf4%M6d(EnT-K8=-<4=M{IoVATqxgt`*>ngdTuYRNyV=GLY? z0G3-rUZS1CP{BgoJqGvIjx~)L*UYmtLwldNop6d9C_ru#_)2d7AI7fChMGtL7v`GGm^YVG>S%P zni8Uhn*u;8n@5x%qIUQ={Y1-TEk;JX&HqxC)wW>tD7l<@{?pjoDR-TmtYcmd!;ceh z$A@>9@;YG*i`6Z4lh& z0Jx2z@z?-F`fu5L9C@GdsR3%EvsR$5$N9~)mOu&Nfv8wWUt+vgxgix~5ttak1qO#$ z=Vtf5O((Glc|!622jjaNEdqn=PMy|m1xDb3M;ce8cx0b{n99I zmw1HuqM~A~y<$(tTuS?G>eZ{1kM&`no*vpiFDmr$6=?9+9m{ZdMY>KR={jXjhE(*s z9F^TL@>`=G)!$t5`(w($4+vdFFr8zYvNyIc%#LH=Jrxe>!ByVVHrKU{0m1N*L zf)hxC2$_N|3k5HzpoEC*3;q%N@%zK)oX_)|=ljF+e%_zgn}nUs`0A45!?Z7HH`q~t z4sd~XvAe7-#=rn9JbNba2Vt3NQ|j}==*96<1indHlQ63Ztu?l!Cu+zO4b*Fk*QVD2 zr&TrO*)E$ukYfG$6yY7W!fzgfiOgUYC5dL!)BARkchS7dR=vge%YiP&&|phQ!o7>I z@;F0=AB`|etr0?Mgt<(AS1n|F)`6xH-Euu2O0AWgt}ry9wf_@Bb4w^ZopR+iBeWlP ztd%KWCesPna@4Z?zA4nY)oXt&!qhkYn&QCwhvj#`RlLqCYd?*QHA2R0m?8Mm$4*9h zhliJImKFlke<^kt0cdp0y~!o(dauxCK2EX?LrAgvIQ}SB;uU%zBQ_>N8=xF@4G%oK zkKTwYG>`n@>G~j5JMRH+0^R-4TJzWJI^HdNx1<8!(AN^Wc@*C~eyJC`!4Wbp`8w0e~H$D+ng%OhdsL&89O?R8EL8B-?u{^M6+4svVb`FxAQK5j71 z<~`2N_gC=LhacEoQ-$0-k?&XXtJMAWTC*^fK8N+6BGJ!a86|gLZgI@89?ovke$%D{ z=Hkn|WTNj+r#L-1zR~tJ)65E*^gzP4)I9wa5${sI_VWj}>h0Jf-XFO5=}pI0D+XS9 z0XVsNA{cizzkr&a$J$qs60gWz^|$Yh!z*P$N_MhRNSJ=xP5dQd%Cw&KApF{+vU6JSHfZ-c& zXk@}RNRK?{9$Gt^6=488(mr_WXvk=GQfFU<-&XOV41Z7sWX=_FG>8bu-D*BT^tSM^ z<&wi01ABkH-nUj1I#aMC=vBh<)Rz`B&oTY&xEM1(kGRrg^^bO^A$ni~?F$hQ?9qB^O~!<1y*qY6=dCZ|M#f)2{CPEj*R`{G)^3`NunrY|-z<4ejz2U49l#;%IU5$jK8?_Oa7}po%J% zho;rj>+qpZbPdpA6Xvy9Kq^*N@wXE*mIpt}Z0+~_esX<^%Z)s>lB*l%e|mG+XV=x} zq#5)Vc6nRr9&V7aH-q67u3!JvMm+^$%1^%sf1>x;rt&?kqWB}-y}pROC-&Bzm;=5H c{)a+Yz~E+=+1ECNXk7zmgTl^qf0J199~NW6=>Px# literal 0 HcmV?d00001 diff --git a/docs/images/admin/notification-states.png b/docs/images/admin/notification-states.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd3de7ff0f9114fb32e3511c6cc4f92b730a0ce GIT binary patch literal 36747 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 Date: Thu, 29 Aug 2024 22:29:34 +0000 Subject: [PATCH 2/8] minor link additions, started user preferences --- docs/admin/notifications.md | 18 ++++++++++++++---- docs/images/user-notification-preferences.PNG | Bin 0 -> 107800 bytes 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 docs/images/user-notification-preferences.PNG diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index 985f5252d6477..58367e997a756 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -59,6 +59,8 @@ _These notifications are sent to users with **template admin** roles._ ## Configuration +You can modify the notification delivery behavior using the following server flags. + | Required | CLI | Env | Type | Description | Default | |:--------:|-------------------------------------|-----------------------------------------|------------|-----------------------------------------------------------------------------------------------------------------------|---------| | ✔️ | `--notifications-dispatch-timeout` | `CODER_NOTIFICATIONS_DISPATCH_TIMEOUT` | `duration` | How long to wait while a notification is being sent before giving up. | 1m | @@ -206,7 +208,13 @@ The `payload` object has these keys: buttons - `labels`: dynamic map of zero or more string key-value pairs; these vary from event to event -## Preferences (enterprise) +## User Preferences + +All users have the option to opt-out of any notifications. Go to **Account** -> **Notifications** to turn notifications on or off. The delivery method for each notification is indicated on the right hand side of this table. + +![User Notification Preferences](../images/user-notification-preferences.PNG) + +## Delivery Preferences (enterprise) Administrators can configure which delivery methods are used for each different [event type](#event-types). @@ -216,9 +224,11 @@ You can find this page under `https://$CODER_ACCESS_URL/deployment/notifications ## Stop sending notifications -To pause sending notifications, execute `coder notifications pause`. +Administrators may wish to stop _all_ notifications across the deployment. We support a killswitch in the CLI for these cases. + +To pause sending notifications, execute [`coder notifications pause`](https://coder.com/docs/reference/cli/notifications_pause). -To resume sending notifications, execute `coder notifications resume`. +To resume sending notifications, execute [`coder notifications resume`](https://coder.com/docs/reference/cli/notifications_resume). ## Internals @@ -248,4 +258,4 @@ act as notifiers to process pending messages._ be retried - after `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` is exceeded, it transitions to `permanent_failure` -Diagnostic messages will be saved in the `notification_messages` table and will be logged, in the case of failure. \ No newline at end of file +Diagnostic messages will be saved in the `notification_messages` table and will be logged, in the case of failure. diff --git a/docs/images/user-notification-preferences.PNG b/docs/images/user-notification-preferences.PNG new file mode 100644 index 0000000000000000000000000000000000000000..818de470a7f771173836686c8c832efed754116a GIT binary patch literal 107800 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 a=)e5gBWVV|3_}z^zV>wWb6Mw<&;$VBebA%; literal 0 HcmV?d00001 From 3051cc0c94158c55961493055aaa4828a5fb55cb Mon Sep 17 00:00:00 2001 From: Stephen Kirby Date: Thu, 29 Aug 2024 22:30:03 +0000 Subject: [PATCH 3/8] make fmt --- docs/admin/notifications.md | 219 ++++++++++++++++++++---------------- 1 file changed, 125 insertions(+), 94 deletions(-) diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index 58367e997a756..d31cbc9cdce80 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -1,13 +1,14 @@ # Notifications -Notifications are sent by Coder in response to specific internal events, such as a workspace being deleted or a user -being created. +Notifications are sent by Coder in response to specific internal events, such as +a workspace being deleted or a user being created. **Notifications are currently an experimental feature.** ## Enable experiment -In order to activate the notifications feature, you'll need to enable the `notifications` experiment. +In order to activate the notifications feature, you'll need to enable the +`notifications` experiment. ```bash # Using the CLI flag @@ -17,12 +18,13 @@ $ coder server --experiments=notifications $ CODER_EXPERIMENTS=notifications coder server ``` -More information on experiments can be found [here](/docs/contributing/feature-stages#experimental-features). +More information on experiments can be found +[here](/docs/contributing/feature-stages#experimental-features). ## Event Types -Notifications are sent in response to internal events, to alert the affected user(s) of this event. Currently we support -the following list of events: +Notifications are sent in response to internal events, to alert the affected +user(s) of this event. Currently we support the following list of events: ### Workspace Events @@ -59,34 +61,36 @@ _These notifications are sent to users with **template admin** roles._ ## Configuration -You can modify the notification delivery behavior using the following server flags. +You can modify the notification delivery behavior using the following server +flags. | Required | CLI | Env | Type | Description | Default | -|:--------:|-------------------------------------|-----------------------------------------|------------|-----------------------------------------------------------------------------------------------------------------------|---------| +| :------: | ----------------------------------- | --------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------- | ------- | | ✔️ | `--notifications-dispatch-timeout` | `CODER_NOTIFICATIONS_DISPATCH_TIMEOUT` | `duration` | How long to wait while a notification is being sent before giving up. | 1m | | ✔️ | `--notifications-method` | `CODER_NOTIFICATIONS_METHOD` | `string` | Which delivery method to use (available options: 'smtp', 'webhook'). See [Delivery Methods](#delivery-methods) below. | smtp | | -️ | `--notifications-max-send-attempts` | `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` | `int` | The upper limit of attempts to send a notification. | 5 | ## Delivery Methods -Notifications can currently be delivery by either SMTP or webhook. Each message can only be delivered to one method, and -this method is configured globally -with [`CODER_NOTIFICATIONS_METHOD`](https://coder.com/docs/reference/cli/server#--notifications-method) +Notifications can currently be delivery by either SMTP or webhook. Each message +can only be delivered to one method, and this method is configured globally with +[`CODER_NOTIFICATIONS_METHOD`](https://coder.com/docs/reference/cli/server#--notifications-method) (default: `smtp`). -Enterprise customers can configured which method to use for each of the supported [Events](#events); see -the [Preferences](#preferences) -section below for more details. +Enterprise customers can configured which method to use for each of the +supported [Events](#events); see the [Preferences](#preferences) section below +for more details. ## SMTP -Use the `smtp` method to deliver notifications by email to your users. Coder does not ship with an SMTP server, so you -will need to configure Coder to use an existing one. +Use the `smtp` method to deliver notifications by email to your users. Coder +does not ship with an SMTP server, so you will need to configure Coder to use an +existing one. **Server Settings:** | Required | CLI | Env | Type | Description | Default | -|:--------:|-----------------------------------|---------------------------------------|-------------|-------------------------------------------|---------------| +| :------: | --------------------------------- | ------------------------------------- | ----------- | ----------------------------------------- | ------------- | | ✔️ | `--notifications-email-from` | `CODER_NOTIFICATIONS_EMAIL_FROM` | `string` | The sender's address to use. | | | ✔️ | `--notifications-email-smarthost` | `CODER_NOTIFICATIONS_EMAIL_SMARTHOST` | `host:port` | The SMTP relay to send messages through. | localhost:587 | | -️ | `--notifications-email-hello` | `CODER_NOTIFICATIONS_EMAIL_HELLO` | `string` | The hostname identifying the SMTP server. | localhost | @@ -94,7 +98,7 @@ will need to configure Coder to use an existing one. **Authentication Settings:** | Required | CLI | Env | Type | Description | -|:--------:|--------------------------------------------|------------------------------------------------|----------|---------------------------------------------------------------------------| +| :------: | ------------------------------------------ | ---------------------------------------------- | -------- | ------------------------------------------------------------------------- | | - | `--notifications-email-auth-username` | `CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME` | `string` | Username to use with PLAIN/LOGIN authentication. | | - | `--notifications-email-auth-password` | `CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD` | `string` | Password to use with PLAIN/LOGIN authentication. | | - | `--notifications-email-auth-password-file` | `CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD_FILE` | `string` | File from which to load password for use with PLAIN/LOGIN authentication. | @@ -103,7 +107,7 @@ will need to configure Coder to use an existing one. **TLS Settings:** | Required | CLI | Env | Type | Description | Default | -|:--------:|-------------------------------------------|---------------------------------------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| :------: | ----------------------------------------- | ------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | - | `--notifications-email-force-tls` | `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` | `bool` | Force a TLS connection to the configured SMTP smarthost. If port 465 is used, TLS will be forced. See https://datatracker.ietf.org/doc/html/rfc8314#section-3.3. | false | | - | `--notifications-email-tls-starttls` | `CODER_NOTIFICATIONS_EMAIL_TLS_STARTTLS` | `bool` | Enable STARTTLS to upgrade insecure SMTP connections using TLS. Ignored if `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` is set. | false | | - | `--notifications-email-tls-skip-verify` | `CODER_NOTIFICATIONS_EMAIL_TLS_SKIPVERIFY` | `bool` | Skip verification of the target server's certificate (**insecure**). | false | @@ -111,21 +115,25 @@ will need to configure Coder to use an existing one. | - | `--notifications-email-tls-cert-file` | `CODER_NOTIFICATIONS_EMAIL_TLS_CERTFILE` | `string` | Certificate file to use. | | | - | `--notifications-email-tls-cert-key-file` | `CODER_NOTIFICATIONS_EMAIL_TLS_CERTKEYFILE` | `string` | Certificate key file to use. | | -**NOTE:** you _MUST_ use `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` if your smarthost supports TLS on a port other than `465`. +**NOTE:** you _MUST_ use `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` if your smarthost +supports TLS on a port other than `465`. ### Send emails using G-Suite After setting the required fields above: -1. Create an [App Password](https://myaccount.google.com/apppasswords) using the account you wish to send from +1. Create an [App Password](https://myaccount.google.com/apppasswords) using the + account you wish to send from 2. Set the following configuration options: - ``` - CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp.gmail.com:465 - CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ - CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" - ``` - -See [this help article from Google](https://support.google.com/a/answer/176600?hl=en) for more options. + ``` + CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp.gmail.com:465 + CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ + CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" + ``` + +See +[this help article from Google](https://support.google.com/a/answer/176600?hl=en) +for more options. ### Send emails using Outlook.com @@ -133,108 +141,123 @@ After setting the required fields above: 1. Setup an account on Microsoft 365 or outlook.com 2. Set the following configuration options: - ``` - CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp-mail.outlook.com:587 - CODER_NOTIFICATIONS_EMAIL_TLS_STARTTLS=true - CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ - CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" - ``` - -See [this help article from Microsoft](https://support.microsoft.com/en-us/office/pop-imap-and-smtp-settings-for-outlook-com-d088b986-291d-42b8-9564-9c414e2aa040) + ``` + CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp-mail.outlook.com:587 + CODER_NOTIFICATIONS_EMAIL_TLS_STARTTLS=true + CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ + CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" + ``` + +See +[this help article from Microsoft](https://support.microsoft.com/en-us/office/pop-imap-and-smtp-settings-for-outlook-com-d088b986-291d-42b8-9564-9c414e2aa040) for more options. ## Webhook -The webhook delivery method sends an HTTP POST request to the defined endpoint. The purpose of webhook notifications is -to enable integrations with other systems. +The webhook delivery method sends an HTTP POST request to the defined endpoint. +The purpose of webhook notifications is to enable integrations with other +systems. **Settings**: | Required | CLI | Env | Type | Description | -|:--------:|------------------------------------|----------------------------------------|-------|-----------------------------------------| +| :------: | ---------------------------------- | -------------------------------------- | ----- | --------------------------------------- | | ✔️ | `--notifications-webhook-endpoint` | `CODER_NOTIFICATIONS_WEBHOOK_ENDPOINT` | `url` | The endpoint to which to send webhooks. | Here is an example payload for Coder's webhook notification: ```json { - "_version": "1.0", - "msg_id": "88750cad-77d4-4663-8bc0-f46855f5019b", - "payload": { - "_version": "1.0", - "notification_name": "Workspace Deleted", - "user_id": "4ac34fcb-8155-44d5-8301-e3cd46e88b35", - "user_email": "danny@coder.com", - "user_name": "danny", - "user_username": "danny", - "actions": [ - { - "label": "View workspaces", - "url": "https://et23ntkhpueak.pit-1.try.coder.app/workspaces" - }, - { - "label": "View templates", - "url": "https://et23ntkhpueak.pit-1.try.coder.app/templates" - } - ], - "labels": { - "initiator": "danny", - "name": "my-workspace", - "reason": "initiated by user" - } - }, - "title": "Workspace \"my-workspace\" deleted", - "body": "Hi danny\n\nYour workspace my-workspace was deleted.\nThe specified reason was \"initiated by user (danny)\"." + "_version": "1.0", + "msg_id": "88750cad-77d4-4663-8bc0-f46855f5019b", + "payload": { + "_version": "1.0", + "notification_name": "Workspace Deleted", + "user_id": "4ac34fcb-8155-44d5-8301-e3cd46e88b35", + "user_email": "danny@coder.com", + "user_name": "danny", + "user_username": "danny", + "actions": [ + { + "label": "View workspaces", + "url": "https://et23ntkhpueak.pit-1.try.coder.app/workspaces" + }, + { + "label": "View templates", + "url": "https://et23ntkhpueak.pit-1.try.coder.app/templates" + } + ], + "labels": { + "initiator": "danny", + "name": "my-workspace", + "reason": "initiated by user" + } + }, + "title": "Workspace \"my-workspace\" deleted", + "body": "Hi danny\n\nYour workspace my-workspace was deleted.\nThe specified reason was \"initiated by user (danny)\"." } ``` The top-level object has these keys: - `_version`: describes the version of this schema; follows semantic versioning -- `msg_id`: the UUID of the notification (matches the ID in the `notification_messages` table) +- `msg_id`: the UUID of the notification (matches the ID in the + `notification_messages` table) - `payload`: contains the specific details of the notification; described below -- `title`: the title of the notification message (equivalent to a subject in SMTP delivery) -- `body`: the body of the notification message (equivalent to the message body in SMTP delivery) +- `title`: the title of the notification message (equivalent to a subject in + SMTP delivery) +- `body`: the body of the notification message (equivalent to the message body + in SMTP delivery) The `payload` object has these keys: -- `_version`: describes the version of this inner schema; follows semantic versioning +- `_version`: describes the version of this inner schema; follows semantic + versioning - `notification_name`: name of the event which triggered the notification - `user_id`: Coder internal user identifier of the target user (UUID) - `user_email`: email address of the target user - `user_name`: name of the target user - `user_username`: username of the target user -- `actions`: a list of CTAs (Call-To-Action); these are mainly relevant for SMTP delivery in which they're shown as - buttons -- `labels`: dynamic map of zero or more string key-value pairs; these vary from event to event +- `actions`: a list of CTAs (Call-To-Action); these are mainly relevant for SMTP + delivery in which they're shown as buttons +- `labels`: dynamic map of zero or more string key-value pairs; these vary from + event to event ## User Preferences -All users have the option to opt-out of any notifications. Go to **Account** -> **Notifications** to turn notifications on or off. The delivery method for each notification is indicated on the right hand side of this table. +All users have the option to opt-out of any notifications. Go to **Account** -> +**Notifications** to turn notifications on or off. The delivery method for each +notification is indicated on the right hand side of this table. ![User Notification Preferences](../images/user-notification-preferences.PNG) ## Delivery Preferences (enterprise) -Administrators can configure which delivery methods are used for each different [event type](#event-types). +Administrators can configure which delivery methods are used for each different +[event type](#event-types). ![preferences](../images/admin/notification-admin-prefs.png) -You can find this page under `https://$CODER_ACCESS_URL/deployment/notifications?tab=events`. +You can find this page under +`https://$CODER_ACCESS_URL/deployment/notifications?tab=events`. ## Stop sending notifications -Administrators may wish to stop _all_ notifications across the deployment. We support a killswitch in the CLI for these cases. +Administrators may wish to stop _all_ notifications across the deployment. We +support a killswitch in the CLI for these cases. -To pause sending notifications, execute [`coder notifications pause`](https://coder.com/docs/reference/cli/notifications_pause). +To pause sending notifications, execute +[`coder notifications pause`](https://coder.com/docs/reference/cli/notifications_pause). -To resume sending notifications, execute [`coder notifications resume`](https://coder.com/docs/reference/cli/notifications_resume). +To resume sending notifications, execute +[`coder notifications resume`](https://coder.com/docs/reference/cli/notifications_resume). ## Internals -The notification system is built to operate concurrently in a single- or multi-replica Coder deployment, and has a -built-in -retry mechanism. It uses the configured Postgres database to store notifications in a queue and facilitate concurrency. +The notification system is built to operate concurrently in a single- or +multi-replica Coder deployment, and has a built-in retry mechanism. It uses the +configured Postgres database to store notifications in a queue and facilitate +concurrency. All messages are stored in the `notification_messages` table. @@ -244,18 +267,26 @@ Messages older than 7 days are deleted. ![states](../images/admin/notification-states.png) -_A notifier here refers to a Coder replica which is responsible for dispatching the notification. All running replicas -act as notifiers to process pending messages._ +_A notifier here refers to a Coder replica which is responsible for dispatching +the notification. All running replicas act as notifiers to process pending +messages._ - a message begins in `pending` state -- transitions to `leased` when a Coder replica acquires new messages from the database - - new messages are checked for every `CODER_NOTIFICATIONS_FETCH_INTERVAL` (default: 15s) +- transitions to `leased` when a Coder replica acquires new messages from the + database + - new messages are checked for every `CODER_NOTIFICATIONS_FETCH_INTERVAL` + (default: 15s) - if a message is delivered successfully, it transitions to `sent` state -- if a message encounters a non-retryable error (e.g. misconfiguration), it transitions to `permanent_failure` -- if a message encounters a retryable error (e.g. temporary server outage), it transitions to `temporary_failure` - - this message will be retried up to `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` (default: 5) - - this message will transition back to `pending` state after `CODER_NOTIFICATIONS_RETRY_INTERVAL` (default: 5m) and - be retried - - after `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` is exceeded, it transitions to `permanent_failure` - -Diagnostic messages will be saved in the `notification_messages` table and will be logged, in the case of failure. +- if a message encounters a non-retryable error (e.g. misconfiguration), it + transitions to `permanent_failure` +- if a message encounters a retryable error (e.g. temporary server outage), it + transitions to `temporary_failure` + - this message will be retried up to `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` + (default: 5) + - this message will transition back to `pending` state after + `CODER_NOTIFICATIONS_RETRY_INTERVAL` (default: 5m) and be retried + - after `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` is exceeded, it transitions to + `permanent_failure` + +Diagnostic messages will be saved in the `notification_messages` table and will +be logged, in the case of failure. From 0fb1fc03cc79d44f3bf2b40f518312f94a5ef9b1 Mon Sep 17 00:00:00 2001 From: Stephen Kirby Date: Thu, 29 Aug 2024 22:33:01 +0000 Subject: [PATCH 4/8] added release verison to experimental warning --- docs/admin/notifications.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index d31cbc9cdce80..a1c894b065dfb 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -3,7 +3,8 @@ Notifications are sent by Coder in response to specific internal events, such as a workspace being deleted or a user being created. -**Notifications are currently an experimental feature.** +**Notifications are currently an experimental feature (as of their release in +[2.15.0](https://github.com/coder/coder/releases/tag/v2.15.0)).** ## Enable experiment From b708488ae1d81da8930c765e447e653408bea73f Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Fri, 30 Aug 2024 09:28:08 +0200 Subject: [PATCH 5/8] Minor tweaks Signed-off-by: Danny Kopping --- codersdk/deployment.go | 1 - docs/admin/notifications.md | 6 +++--- ...rences.PNG => user-notification-preferences.png} | Bin 3 files changed, 3 insertions(+), 4 deletions(-) rename docs/images/{user-notification-preferences.PNG => user-notification-preferences.png} (100%) diff --git a/codersdk/deployment.go b/codersdk/deployment.go index 47595b08e910d..2e7316ddeeddd 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -2422,7 +2422,6 @@ Write out the current server config as YAML to stdout.`, Annotations: serpent.Annotations{}.Mark(annotationSecretKey, "true"), Value: &c.Notifications.SMTP.Auth.Password, Group: &deploymentGroupNotificationsEmailAuth, - YAML: "password", }, { Name: "Notifications: Email Auth: Password File", diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index a1c894b065dfb..fd51a1cd6831e 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -20,7 +20,7 @@ $ CODER_EXPERIMENTS=notifications coder server ``` More information on experiments can be found -[here](/docs/contributing/feature-stages#experimental-features). +[here](https://coder.com/docs/contributing/feature-stages#experimental-features). ## Event Types @@ -82,7 +82,7 @@ Enterprise customers can configured which method to use for each of the supported [Events](#events); see the [Preferences](#preferences) section below for more details. -## SMTP +## SMTP (Email) Use the `smtp` method to deliver notifications by email to your users. Coder does not ship with an SMTP server, so you will need to configure Coder to use an @@ -230,7 +230,7 @@ All users have the option to opt-out of any notifications. Go to **Account** -> **Notifications** to turn notifications on or off. The delivery method for each notification is indicated on the right hand side of this table. -![User Notification Preferences](../images/user-notification-preferences.PNG) +![User Notification Preferences](../images/user-notification-preferences.png) ## Delivery Preferences (enterprise) diff --git a/docs/images/user-notification-preferences.PNG b/docs/images/user-notification-preferences.png similarity index 100% rename from docs/images/user-notification-preferences.PNG rename to docs/images/user-notification-preferences.png From ebbba0edf0c020a618a9434d73c6b2f0761eae52 Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Fri, 30 Aug 2024 09:49:33 +0200 Subject: [PATCH 6/8] make gen Signed-off-by: Danny Kopping --- cli/testdata/server-config.yaml.golden | 3 --- docs/admin/notifications.md | 2 +- docs/reference/cli/server.md | 1 - 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/cli/testdata/server-config.yaml.golden b/cli/testdata/server-config.yaml.golden index b050b662c56fa..cfa3c99d35eca 100644 --- a/cli/testdata/server-config.yaml.golden +++ b/cli/testdata/server-config.yaml.golden @@ -529,9 +529,6 @@ notifications: # Username to use with PLAIN/LOGIN authentication. # (default: , type: string) username: "" - # Password to use with PLAIN/LOGIN authentication. - # (default: , type: string) - password: "" # File from which to load password for use with PLAIN/LOGIN authentication. # (default: , type: string) passwordFile: "" diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index fd51a1cd6831e..611f516ac0dad 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -73,7 +73,7 @@ flags. ## Delivery Methods -Notifications can currently be delivery by either SMTP or webhook. Each message +Notifications can currently be delivered by either SMTP or webhook. Each message can only be delivered to one method, and this method is configured globally with [`CODER_NOTIFICATIONS_METHOD`](https://coder.com/docs/reference/cli/server#--notifications-method) (default: `smtp`). diff --git a/docs/reference/cli/server.md b/docs/reference/cli/server.md index 1ecdd326f1b17..ab97afe956940 100644 --- a/docs/reference/cli/server.md +++ b/docs/reference/cli/server.md @@ -1296,7 +1296,6 @@ Username to use with PLAIN/LOGIN authentication. | ----------- | ----------------------------------------------------- | | Type | string | | Environment | $CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD | -| YAML | notifications.email.emailAuth.password | Password to use with PLAIN/LOGIN authentication. From b2b6cd0ea459cc8808a240c6d248e01e486b3c5b Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Fri, 30 Aug 2024 10:15:17 +0200 Subject: [PATCH 7/8] Excluding password field from config test Signed-off-by: Danny Kopping --- codersdk/deployment_test.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/codersdk/deployment_test.go b/codersdk/deployment_test.go index b84eda1f7250b..d7eca6323000c 100644 --- a/codersdk/deployment_test.go +++ b/codersdk/deployment_test.go @@ -14,9 +14,10 @@ import ( "github.com/stretchr/testify/require" "gopkg.in/yaml.v3" + "github.com/coder/serpent" + "github.com/coder/coder/v2/coderd/util/ptr" "github.com/coder/coder/v2/codersdk" - "github.com/coder/serpent" ) type exclusion struct { @@ -77,6 +78,9 @@ func TestDeploymentValues_HighlyConfigurable(t *testing.T) { "Provisioner Daemon Pre-shared Key (PSK)": { yaml: true, }, + "Notifications: Email Auth: Password": { + yaml: true, + }, } set := (&codersdk.DeploymentValues{}).Options() From 6a6b903288e757cee5fb2d07c3e2db7ba72824b2 Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Fri, 30 Aug 2024 17:13:00 +0200 Subject: [PATCH 8/8] Remove release link Signed-off-by: Danny Kopping --- docs/admin/notifications.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index 611f516ac0dad..e4cd9a27b5f53 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -3,8 +3,7 @@ Notifications are sent by Coder in response to specific internal events, such as a workspace being deleted or a user being created. -**Notifications are currently an experimental feature (as of their release in -[2.15.0](https://github.com/coder/coder/releases/tag/v2.15.0)).** +**Notifications are currently an experimental feature.** ## Enable experiment pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy

Alternative Proxy