Daniel Eklöf
f166bbbf54
modules: verify: use conf_verify_unsigned() for options that should be >= 0
2021-11-15 18:17:29 +01:00
Baptiste Daroussin
26892c66b2
headers: basename is defined under libgen.h
2021-10-01 10:51:56 +02:00
Daniel Eklöf
7d3851046e
log: pull in log.{c,h} from foot
2021-08-15 11:41:12 +02:00
Daniel Eklöf
cf41d008f8
module/script: add poll-interval option
...
When set to a non-negative value, the script module will call the
configured script every <poll-interval> second.
In this mode, the script is expected to write one tag set and then
exit.
This is intended to simplify the implementation of scripts that would
otherwise just do a loop + sleep.
Closes #67
2021-07-04 20:23:01 +02:00
Daniel Eklöf
ed2b8c4874
modules: implement description()
2021-06-20 21:15:24 +02:00
Daniel Eklöf
60ee992a73
module/script: ‘9’ is a valid digit
...
The script module incorrectly rejected range tag end values containing
the digit ‘9’.
Closes #60
2021-06-19 14:19:31 +02:00
Daniel Eklöf
264c051232
module/script: fix typo in memcmp()
...
Patch by Jan Beich
2021-02-10 16:15:49 +01:00
Daniel Eklöf
f438ad9b44
module/script: send SIGINT, SIGTERM, SIGKILL, until child has died
2020-11-25 20:41:10 +01:00
Daniel Eklöf
ba54e709ee
module/script: no need to handle SIGCHLD
...
Assume that a closed pipe means the child died. Even if it hasn’t, we
can’t read anymore from it. We’ll end up killing it anyway before
returning from run().
2020-11-25 20:41:10 +01:00
Daniel Eklöf
e0169d38f3
module/script: don’t re-direct stderr to /dev/null
2020-11-25 20:41:10 +01:00
Daniel Eklöf
aa34925f54
module/script: close all unrelated FDs
...
While most FDs are CLOEXEC, not all are. For example, other script
modules’ re-direction pipes.
2020-11-25 20:41:10 +01:00
Daniel Eklöf
31f6a4a6a0
module/script: don’t re-close comm-pipe on failure
2020-11-25 20:41:10 +01:00
Daniel Eklöf
74754b0ab9
module/script: improved verification of tag type parameters and tag values
...
* Verify int/float/bool values are that, and nothing else
* Verify tag ranges are integers
* Verify a range tag value is inside its range
* Don’t allow anything but false|true for booleans
2020-11-25 20:41:09 +01:00
Daniel Eklöf
f0a34d0055
module/script: parse booleans correctly
...
User is expected to send ‘false’ or ‘true’. But we were parsing the
value using `strtol()`. This caused all bools to be false, since
`strtol()` would always return 0.
2020-11-25 20:36:46 +01:00
Daniel Eklöf
2bb70c6fcb
module/script: require ‘path’ to be an absolute path
2020-11-25 20:36:46 +01:00
Daniel Eklöf
5c9030129d
module/script: use NULL terminated ‘value’ when converting to int/bool/float
2020-11-25 20:36:46 +01:00
Daniel Eklöf
37447cd955
module/script: initialize string tags from our NULL-terminated ‘value’
...
`_value` is a pointer into the receive buffer, and may not be NULL
terminated, and may also contain data belonging to the next tag.
2020-11-25 20:36:46 +01:00
Daniel Eklöf
9945fce2d2
module/script: explicitly ignore return value of write(3)
2020-11-25 20:36:45 +01:00
Daniel Eklöf
7f1ffd126b
module/script: close script communication pipe FD on error
2020-11-25 20:36:45 +01:00
Daniel Eklöf
fb0d443e1d
module/script: plug memory leak: free ‘tags’ array
2020-11-25 20:36:45 +01:00
Daniel Eklöf
73407853e4
module/script: can’t use logical OR when building a base 10 number
2020-11-25 20:36:45 +01:00
Daniel Eklöf
08bac77907
module/script: script arguments
...
Add new config attribute, ‘args’. This is a list of strings, that will
be passed as arguments to the script.
2020-11-25 20:36:45 +01:00
Daniel Eklöf
8702378c74
module/script: restore signal handlers and mask in child process
...
This fixes the issue where `killpg()` didn’t manage to kill the
sub-process tree.
2020-11-25 20:36:45 +01:00
Daniel Eklöf
c911d20e73
module/script: add debug logging of raw received data
2020-11-25 20:36:45 +01:00
Daniel Eklöf
f2814f786e
module/script: copy ‘value’ to a NULL-terminated string
...
This ensures e.g. strtol() doesn’t parse data beyond current
tag/value.
2020-11-25 20:36:45 +01:00
Daniel Eklöf
430e505bd2
module/script: remove debug output that wasn’t actually using LOG_DBG()
2020-11-25 20:36:44 +01:00
Daniel Eklöf
fbaa208768
module/script: disable debug output
2020-11-25 20:36:44 +01:00
Daniel Eklöf
80d0025e64
module/script: drop setsid() call
2020-11-25 20:36:44 +01:00
Daniel Eklöf
19fe2f5a6f
module/script: wip: new plugin, reads data from a user provided script/binary
...
This module exec’s a script (or binary), specified by the ‘path’
attribute in the configuration.
It then reads tags from the script’s stdout.
The format of the output is:
tag|type|value
tag|type|value
<empty line>
I.e. the script writes N tags followed by an empty line. This
constitutes a transaction.
When a new transaction is received, its tags replaces *all* previous
tags.
2020-11-25 20:36:44 +01:00