Commits
- Commit:
50ccbcd9a6e4786d4eb726ac8bc3e8565fd7aa48
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
log hostname and port when gotd notification helpers fail to connect
ok op@
- Commit:
15ff48f3a4567fbd4e399927ef2cd565ff19421f
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
fix Date header generated by got-notify-email
asctime_r() is not a source of valid date strings for email.
Borrow code from OpenSMTPD instead for this purpose.
Problem reported by naddy, who also found the smtpd code to use.
- Commit:
283939fb8245f1600227fa1cde3c5623666fac8d
- From:
- Lucas Gabriel Vuotto <lucas@sexy.is>
- Via:
- Omar Polo <op@omarpolo.com>
- Date:
replace date, strftime %G-%m-%d with %F
Use the more predictable %F, aka %Y-%m-%d, instead of %G-%m-%d. %G
follows the definition of ISO-8601 week-based year, which is weird.
In particular, 2024 is one of such years with weird behaviour:
$ date -jf %Y-%m-%d +"%F %G-%m-%d" 2024-12-30
2024-12-30 2025-12-30
Diff from Lucas Gabriel Vuotto (thanks!); stsp agrees
- Commit:
2c1b17802598396420e45c97fe4e8d2d03fcb523
- From:
- Omar Polo <op@omarpolo.com>
- Date:
got-notify-email: sort/remove includes
we don't need getopt.h; getopt() is in unistd.h. also sort the
headers while here. ok stsp@
- Commit:
939d3016601d8c21e69a605f10838024335f3b1a
- From:
- Omar Polo <op@omarpolo.com>
- Date:
got-notify-http: use a UNIX timestamp for the date
Was suggested by Lucas some time ago. ok stsp@ with a tweak in the
manual.
- Commit:
7e03b4680df5ee2238eb8918276b9ef7130dd115
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
make got-notify-email log warnings and errors to syslog
- Commit:
8bffa12946bc31a810c9a0dc418fc23f0bd227b2
- From:
- Omar Polo <op@omarpolo.com>
- Date:
remove trailing whitespaces
- Commit:
09486e84b6094ffcb4dca9ecd2dea72a982a1fa9
- From:
- Omar Polo <op@omarpolo.com>
- Date:
got-notify-email: bufferize smtp parsing
instead of read(2)ing one byte at the time, use a temporary buffer.
Special care is needed for the regress where all the replies are
queued up-front instead of a real SMTP server where we'd get a reply
only after a command.
ok and improvements stsp@
- Commit:
39910b637a9a53cc48b0c63766da691dec0af593
- From:
- Omar Polo <op@omarpolo.com>
- Date:
got-notify-email: split dial() out of send_email()
This allows to reduce the set of pledge(2) promises needed at runtime
down to only "stdio" which will also help sandboxing -portable.
ok stsp
- Commit:
100d3e4bb875b64f537d67257b0876159b59b068
- From:
- Omar Polo <op@omarpolo.com>
- Date:
mark smtp_timeout as static
- Commit:
dfa6ae4cb7d2e0474c8458b5622eca0385470c01
- From:
- Omar Polo <op@omarpolo.com>
- Date:
fmt
- Commit:
ba97b2d7ec97e54a025a39e04c0fd59fdd54a57b
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
add initial support for commit notifications to gotd(8)
At present only email notifications are implemented.
Code for HTTP notifications is not yet finished, hence HTTP-related
documentation remains hidden for now.
This adds a new 'notify' process which has an "exec" pledge. It runs
helper programs which implement the notification transport layer,
such as got-notify-email which speaks SMTP. This design avoids having
to link all of gotd with network libraries and related crypto libraries.
Notification content is generated by the 'repo_write' process. Commit log
messages and diffstats are written to a file which the 'notify' process
will pass on to its helpers on stdin. The default output looks similar
to 'got log -d'. If too many new commits are present the output looks
similar to 'got log -s' instead. Tags always look like 'got tag -l'.
The session process coordinates generation of notifications. It maintains
a notification queue which holds one notification per updated reference,
and passes notification requests from this queue to the 'repo_write'
process for notification content creation and then to the 'notify'
process for notification delivery.
Only one notification can be in flight at a time to avoid file descriptor
starvation if many references get updated in a single client session.
ok op@