[PATCH] afmongodb: Restore compatibility with syslog-ng 3.3
In syslog-ng 3.3, we had the host() and port() options for the mongodb driver, these were removed in 3.4 in favour of servers(). This patch re-adds this two. Using host() and port() will now prepend the specified combination to the server list. Signed-off-by: Gergely Nagy <algernon@balabit.hu> --- modules/afmongodb/afmongodb-grammar.ym | 2 ++ modules/afmongodb/afmongodb-parser.c | 2 ++ modules/afmongodb/afmongodb.c | 25 +++++++++++++++++++++++++ modules/afmongodb/afmongodb.h | 2 ++ 4 files changed, 31 insertions(+), 0 deletions(-) diff --git a/modules/afmongodb/afmongodb-grammar.ym b/modules/afmongodb/afmongodb-grammar.ym index a21e23c..71dd46d 100644 --- a/modules/afmongodb/afmongodb-grammar.ym +++ b/modules/afmongodb/afmongodb-grammar.ym @@ -75,6 +75,8 @@ afmongodb_option | KW_USERNAME '(' string ')' { afmongodb_dd_set_user(last_driver, $3); free($3); } | KW_PASSWORD '(' string ')' { afmongodb_dd_set_password(last_driver, $3); free($3); } | KW_SAFE_MODE '(' yesno ')' { afmongodb_dd_set_safe_mode(last_driver, $3); } + | KW_HOST '(' string ')' { afmongodb_dd_set_host(last_driver, $3); free($3); } + | KW_PORT '(' LL_NUMBER ')' { afmongodb_dd_set_port(last_driver, $3); } | value_pair_option { afmongodb_dd_set_value_pairs(last_driver, $1); } | dest_driver_option ; diff --git a/modules/afmongodb/afmongodb-parser.c b/modules/afmongodb/afmongodb-parser.c index b8c9ead..9d72878 100644 --- a/modules/afmongodb/afmongodb-parser.c +++ b/modules/afmongodb/afmongodb-parser.c @@ -36,6 +36,8 @@ static CfgLexerKeyword afmongodb_keywords[] = { { "username", KW_USERNAME }, { "password", KW_PASSWORD }, { "safe_mode", KW_SAFE_MODE }, + { "host", KW_HOST }, + { "port", KW_PORT }, { NULL } }; diff --git a/modules/afmongodb/afmongodb.c b/modules/afmongodb/afmongodb.c index de78b23..9d75799 100644 --- a/modules/afmongodb/afmongodb.c +++ b/modules/afmongodb/afmongodb.c @@ -112,6 +112,23 @@ afmongodb_dd_set_password(LogDriver *d, const gchar *password) } void +afmongodb_dd_set_host(LogDriver *d, const gchar *host) +{ + MongoDBDestDriver *self = (MongoDBDestDriver *)d; + + g_free(self->host); + self->host = g_strdup(host); +} + +void +afmongodb_dd_set_port(LogDriver *d, gint port) +{ + MongoDBDestDriver *self = (MongoDBDestDriver *)d; + + self->port = port; +} + +void afmongodb_dd_set_servers(LogDriver *d, GList *servers) { MongoDBDestDriver *self = (MongoDBDestDriver *)d; @@ -450,6 +467,14 @@ afmongodb_dd_init(LogPipe *s) value_pairs_add_scope(self->vp, "nv-pairs"); } + if (self->host) + { + gchar *srv = g_strdup_printf ("%s:%d", self->host, + (self->port) ? self->port : 27017); + self->servers = g_list_prepend (self->servers, srv); + g_free (self->host); + } + self->host = NULL; self->port = 27017; if (!mongo_util_parse_addr(g_list_nth_data(self->servers, 0), &self->host, diff --git a/modules/afmongodb/afmongodb.h b/modules/afmongodb/afmongodb.h index 9950d26..e1f4b57 100644 --- a/modules/afmongodb/afmongodb.h +++ b/modules/afmongodb/afmongodb.h @@ -30,6 +30,8 @@ LogDriver *afmongodb_dd_new(void); void afmongodb_dd_set_servers(LogDriver *d, GList *servers); +void afmongodb_dd_set_host(LogDriver *d, const gchar *host); +void afmongodb_dd_set_port(LogDriver *d, gint port); void afmongodb_dd_set_database(LogDriver *d, const gchar *database); void afmongodb_dd_set_collection(LogDriver *d, const gchar *collection); void afmongodb_dd_set_user(LogDriver *d, const gchar *user); -- 1.7.9
On Fri, 2012-03-30 at 10:54 +0200, Gergely Nagy wrote:
In syslog-ng 3.3, we had the host() and port() options for the mongodb driver, these were removed in 3.4 in favour of servers(). This patch re-adds this two.
Using host() and port() will now prepend the specified combination to the server list.
Signed-off-by: Gergely Nagy <algernon@balabit.hu>
Thanks, applied. -- Bazsi
participants (2)
-
Balazs Scheidler
-
Gergely Nagy