noinst_LTLIBRARIES = libstats.la
AM_CPPFLAGS = \
- -I$(top_srcdir)/src/lib
+ -I$(top_srcdir)/src/lib \
+ -I$(top_srcdir)/src/lib-master
libstats_la_SOURCES = \
stats.c \
+ stats-connection.c \
stats-parser.c
headers = \
stats.h \
+ stats-connection.h \
stats-parser.h
pkginc_libdir = $(pkgincludedir)
/* Copyright (c) 2011-2016 Dovecot authors, see the included COPYING file */
#include "lib.h"
-#include "base64.h"
-#include "hostpid.h"
-#include "net.h"
#include "str.h"
-#include "strescape.h"
#include "master-service.h"
-#include "mail-storage.h"
-#include "stats.h"
-#include "stats-plugin.h"
#include "stats-connection.h"
+#include <unistd.h>
+#include <fcntl.h>
+
struct stats_connection {
int refcount;
conn->fd = -1;
}
}
-
-void stats_connection_connect(struct stats_connection *conn,
- struct mail_user *user)
-{
- struct stats_user *suser = STATS_USER_CONTEXT(user);
- string_t *str = t_str_new(128);
-
- str_append(str, "CONNECT\t");
- /* required fields */
- str_append(str, suser->stats_session_id);
- str_append_c(str, '\t');
- str_append_tabescaped(str, user->username);
- str_append_c(str, '\t');
- str_append_tabescaped(str, user->service);
- str_printfa(str, "\t%s", my_pid);
-
- /* optional fields */
- if (user->local_ip != NULL) {
- str_append(str, "\tlip=");
- str_append(str, net_ip2addr(user->local_ip));
- }
- if (user->remote_ip != NULL) {
- str_append(str, "\trip=");
- str_append(str, net_ip2addr(user->remote_ip));
- }
- str_append_c(str, '\n');
- stats_connection_send(conn, str);
-}
-
-void stats_connection_disconnect(struct stats_connection *conn,
- struct mail_user *user)
-{
- struct stats_user *suser = STATS_USER_CONTEXT(user);
- string_t *str = t_str_new(128);
-
- str_append(str, "DISCONNECT\t");
- str_append(str, suser->stats_session_id);
- str_append_c(str, '\n');
- stats_connection_send(conn, str);
-}
-
-void stats_connection_send_session(struct stats_connection *conn,
- struct mail_user *user,
- const struct stats *stats)
-{
- struct stats_user *suser = STATS_USER_CONTEXT(user);
- string_t *str = t_str_new(256);
- buffer_t *buf;
-
- buf = buffer_create_dynamic(pool_datastack_create(), 128);
- stats_export(buf, stats);
-
- str_append(str, "UPDATE-SESSION\t");
- str_append(str, suser->stats_session_id);
- str_append_c(str, '\t');
- base64_encode(buf->data, buf->used, str);
-
- str_append_c(str, '\n');
- stats_connection_send(conn, str);
-}
--- /dev/null
+#ifndef STATS_CONNECTION_H
+#define STATS_CONNECTION_H
+
+struct stats_connection *stats_connection_create(const char *path);
+void stats_connection_ref(struct stats_connection *conn);
+void stats_connection_unref(struct stats_connection **conn);
+
+void stats_connection_send(struct stats_connection *conn, const string_t *str);
+
+#endif
lib90_stats_plugin_la_SOURCES = \
mail-stats.c \
mail-stats-fill.c \
- stats-connection.c \
+ mail-stats-connection.c \
stats-plugin.c
noinst_HEADERS = \
mail-stats.h \
- stats-connection.h \
+ mail-stats-connection.h \
stats-plugin.h
stats_moduledir = $(moduledir)/stats
--- /dev/null
+/* Copyright (c) 2011-2016 Dovecot authors, see the included COPYING file */
+
+#include "lib.h"
+#include "base64.h"
+#include "hostpid.h"
+#include "net.h"
+#include "str.h"
+#include "strescape.h"
+#include "mail-storage.h"
+#include "stats.h"
+#include "stats-plugin.h"
+#include "mail-stats-connection.h"
+
+void mail_stats_connection_connect(struct stats_connection *conn,
+ struct mail_user *user)
+{
+ struct stats_user *suser = STATS_USER_CONTEXT(user);
+ string_t *str = t_str_new(128);
+
+ str_append(str, "CONNECT\t");
+ /* required fields */
+ str_append(str, suser->stats_session_id);
+ str_append_c(str, '\t');
+ str_append_tabescaped(str, user->username);
+ str_append_c(str, '\t');
+ str_append_tabescaped(str, user->service);
+ str_printfa(str, "\t%s", my_pid);
+
+ /* optional fields */
+ if (user->local_ip != NULL) {
+ str_append(str, "\tlip=");
+ str_append(str, net_ip2addr(user->local_ip));
+ }
+ if (user->remote_ip != NULL) {
+ str_append(str, "\trip=");
+ str_append(str, net_ip2addr(user->remote_ip));
+ }
+ str_append_c(str, '\n');
+ stats_connection_send(conn, str);
+}
+
+void mail_stats_connection_disconnect(struct stats_connection *conn,
+ struct mail_user *user)
+{
+ struct stats_user *suser = STATS_USER_CONTEXT(user);
+ string_t *str = t_str_new(128);
+
+ str_append(str, "DISCONNECT\t");
+ str_append(str, suser->stats_session_id);
+ str_append_c(str, '\n');
+ stats_connection_send(conn, str);
+}
+
+void mail_stats_connection_send_session(struct stats_connection *conn,
+ struct mail_user *user,
+ const struct stats *stats)
+{
+ struct stats_user *suser = STATS_USER_CONTEXT(user);
+ string_t *str = t_str_new(256);
+ buffer_t *buf;
+
+ buf = buffer_create_dynamic(pool_datastack_create(), 128);
+ stats_export(buf, stats);
+
+ str_append(str, "UPDATE-SESSION\t");
+ str_append(str, suser->stats_session_id);
+ str_append_c(str, '\t');
+ base64_encode(buf->data, buf->used, str);
+
+ str_append_c(str, '\n');
+ stats_connection_send(conn, str);
+}
--- /dev/null
+#ifndef MAIL_STATS_CONNECTION_H
+#define MAIL_STATS_CONNECTION_H
+
+#include "stats-connection.h"
+
+struct mail_stats;
+struct mail_user;
+
+void mail_stats_connection_connect(struct stats_connection *conn,
+ struct mail_user *user);
+void mail_stats_connection_disconnect(struct stats_connection *conn,
+ struct mail_user *user);
+
+void mail_stats_connection_send_session(struct stats_connection *conn,
+ struct mail_user *user,
+ const struct stats *stats);
+void mail_stats_connection_send(struct stats_connection *conn, const string_t *str);
+
+#endif
+++ /dev/null
-#ifndef STATS_CONNECTION_H
-#define STATS_CONNECTION_H
-
-struct mail_stats;
-struct mail_user;
-
-struct stats_connection *stats_connection_create(const char *path);
-void stats_connection_ref(struct stats_connection *conn);
-void stats_connection_unref(struct stats_connection **conn);
-
-void stats_connection_connect(struct stats_connection *conn,
- struct mail_user *user);
-void stats_connection_disconnect(struct stats_connection *conn,
- struct mail_user *user);
-
-void stats_connection_send_session(struct stats_connection *conn,
- struct mail_user *user,
- const struct stats *stats);
-void stats_connection_send(struct stats_connection *conn, const string_t *str);
-
-#endif
#include "settings-parser.h"
#include "mail-stats.h"
#include "stats.h"
-#include "stats-connection.h"
+#include "mail-stats-connection.h"
#include "stats-plugin.h"
#define STATS_CONTEXT(obj) \
suser->session_sent_duplicate = !changed;
suser->last_session_update = now;
stats_copy(suser->last_sent_session_stats, suser->session_stats);
- stats_connection_send_session(suser->stats_conn, user,
- suser->session_stats);
+ mail_stats_connection_send_session(suser->stats_conn, user,
+ suser->session_stats);
}
if (suser->to_stats_timeout != NULL)
stats_io_deactivate, user);
/* send final stats before disconnection */
session_stats_refresh(user);
- stats_connection_disconnect(stats_conn, user);
+ mail_stats_connection_disconnect(stats_conn, user);
if (suser->to_stats_timeout != NULL)
timeout_remove(&suser->to_stats_timeout);
suser->last_sent_session_stats = stats_alloc(user->pool);
MODULE_CONTEXT_SET(user, stats_user_module, suser);
- stats_connection_connect(suser->stats_conn, user);
+ mail_stats_connection_connect(suser->stats_conn, user);
suser->to_stats_timeout =
timeout_add(suser->refresh_secs*1000,
session_stats_refresh_timeout, user);