summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 892b933)
raw | patch | inline | side by side (parent: 892b933)
author | Sebastian Harl <sh@tokkee.org> | |
Sun, 3 Dec 2006 13:11:21 +0000 (14:11 +0100) | ||
committer | Florian Forster <octo@leeloo.lan.home.verplant.org> | |
Sun, 3 Dec 2006 14:05:01 +0000 (15:05 +0100) |
Added config file support to the email plugin.
The following options are available:
* "SocketGroup <group name>"
Set the group the UNIX socket belongs to to <group name>.
* "SocketPerms <perms>"
Set the permissions of the UNIX socket to <perms>. No validation is done.
The user has to make sure reasonable values are given.
* "MaxConns <conns>"
The maximum number of concurrent connections is set to <conns>.
<perms> and <conns> may be given as decimal (no prefix), octal (prefix "0") or
sedecimal (a.k.a. hexadecimal, prefix "0x") values.
Signed-off-by: Sebastian Harl <sh@tokkee.org>
The following options are available:
* "SocketGroup <group name>"
Set the group the UNIX socket belongs to to <group name>.
* "SocketPerms <perms>"
Set the permissions of the UNIX socket to <perms>. No validation is done.
The user has to make sure reasonable values are given.
* "MaxConns <conns>"
The maximum number of concurrent connections is set to <conns>.
<perms> and <conns> may be given as decimal (no prefix), octal (prefix "0") or
sedecimal (a.k.a. hexadecimal, prefix "0x") values.
Signed-off-by: Sebastian Harl <sh@tokkee.org>
src/email.c | patch | blob | history |
diff --git a/src/email.c b/src/email.c
index 8d2c89143177b90097992d1921014ec155fb9797..6838eade148ca29c343e0cf0b71c97e5b5b238a5 100644 (file)
--- a/src/email.c
+++ b/src/email.c
#include "common.h"
#include "plugin.h"
+#include "configfile.h"
+
#if HAVE_LIBPTHREAD
# include <pthread.h>
# define EMAIL_HAVE_READ 1
* Private variables
*/
#if EMAIL_HAVE_READ
+/* valid configuration file keys */
+static char *config_keys[] =
+{
+ "SocketGroup",
+ "SocketPerms",
+ "MaxConns",
+ NULL
+};
+static int config_keys_num = 3;
+
+/* socket configuration */
+static char *sock_group = COLLECTD_GRP_NAME;
+static int sock_perms = S_IRWXU | S_IRWXG;
+static int max_conns = MAX_CONNS;
+
/* state of the plugin */
static int disabled = 0;
static int check_ds_num = 1;
#if EMAIL_HAVE_READ
+static int email_config (char *key, char *value)
+{
+ if (0 == strcasecmp (key, "SocketGroup")) {
+ sock_group = sstrdup (value);
+ }
+ else if (0 == strcasecmp (key, "SocketPerms")) {
+ /* the user is responsible for providing reasonable values */
+ sock_perms = (int)strtol (value, NULL, 0);
+ }
+ else if (0 == strcasecmp (key, "MaxConns")) {
+ long int tmp = strtol (value, NULL, 0);
+
+ if (INT_MAX < tmp) {
+ max_conns = INT_MAX;
+ }
+ else {
+ max_conns = (int)tmp;
+ }
+ }
+ else {
+ return -1;
+ }
+ return 0;
+} /* static int email_config (char *, char *) */
+
/* Increment the value of the given name in the given list by incr. */
static void type_list_incr (type_list_t *list, char *name, int incr)
{
struct group *grp;
errno = 0;
- if (NULL != (grp = getgrnam (COLLECTD_GRP_NAME))) {
+ if (NULL != (grp = getgrnam (sock_group))) {
errno = 0;
if (0 != chown (SOCK_PATH, (uid_t)-1, grp->gr_gid)) {
syslog (LOG_WARNING, "chown() failed: %s", strerror (errno));
}
errno = 0;
- if (0 != chmod (SOCK_PATH, S_IRWXU | S_IRWXG)) {
+ if (0 != chmod (SOCK_PATH, sock_perms)) {
syslog (LOG_WARNING, "chmod() failed: %s", strerror (errno));
}
last = available.head;
- for (i = 1; i < MAX_CONNS; ++i) {
+ for (i = 1; i < max_conns; ++i) {
last->next = (collector_t *)smalloc (sizeof (collector_t));
last = last->next;
available.tail = last;
plugin_register ("email_size", NULL, NULL, size_write);
plugin_register ("email_spam_score", NULL, NULL, score_write);
plugin_register ("email_spam_check", NULL, NULL, check_write);
+#if EMAIL_HAVE_READ
+ cf_register (MODULE_NAME, email_config, config_keys, config_keys_num);
+#endif /* EMAIL_HAVE_READ */
return;
} /* void module_register (void) */