diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | plugin-api.h | 2 | ||||
-rw-r--r-- | plugin-http.c | 24 | ||||
-rw-r--r-- | plugins/http.c | 95 | ||||
-rw-r--r-- | plugins/irc.c (renamed from plugin-irc.c) | 31 | ||||
-rw-r--r-- | ponymap.c | 3 | ||||
-rw-r--r-- | utils.c | 3 |
8 files changed, 130 insertions, 35 deletions
@@ -1,5 +1,6 @@ # Build files /ponymap +/plugins/*.so # Qt Creator files /ponymap.config @@ -9,13 +9,15 @@ LDFLAGS = `pkg-config --libs libssl` -lpthread -lrt -ldl .PHONY: all clean .SUFFIXES: -targets = ponymap +targets = ponymap plugins/http.so plugins/irc.so all: $(targets) clean: rm -f $(targets) -ponymap: ponymap.c utils.c siphash.c +ponymap: ponymap.c utils.c plugin-api.h siphash.c $(CC) ponymap.c siphash.c -o $@ $(CFLAGS) $(LDFLAGS) +plugins/%.so: plugins/%.c utils.c plugin-api.h + $(CC) $< -o $@ $(CFLAGS) $(LDFLAGS) -shared -fPIC diff --git a/plugin-api.h b/plugin-api.h index a8e6c58..96056ee 100644 --- a/plugin-api.h +++ b/plugin-api.h @@ -36,7 +36,7 @@ struct service const char *name; ///< Name of the service int flags; ///< Service flags - // XXX: what event happens when? + // scan_init -> on_data* -> [on_eof/on_error] -> on_aborted -> scan_free /// Initialize a scan, returning a handle to it void *(*scan_init) (struct unit *u); diff --git a/plugin-http.c b/plugin-http.c deleted file mode 100644 index 647814e..0000000 --- a/plugin-http.c +++ /dev/null @@ -1,24 +0,0 @@ -/* - * plugin-http.c: HTTP service detection plugin - * - * Copyright (c) 2014, Přemysl Janouch <p.janouch@gmail.com> - * All rights reserved. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - */ - -#include "utils.c" -#include "plugin-api.h" - -// TODO diff --git a/plugins/http.c b/plugins/http.c new file mode 100644 index 0000000..d037326 --- /dev/null +++ b/plugins/http.c @@ -0,0 +1,95 @@ +/* + * http.c: HTTP service detection plugin + * + * Copyright (c) 2014, Přemysl Janouch <p.janouch@gmail.com> + * All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "../utils.c" +#include "../plugin-api.h" + +// --- Service detection ------------------------------------------------------- + +static struct plugin_data +{ + void *ctx; ///< Application context + struct plugin_api *api; ///< Plugin API vtable +} +g_data; + +static void * +scan_init (struct unit *u) +{ + // TODO + return NULL; +} + +static void +scan_free (void *handle) +{ + // TODO +} + +static void +on_data (void *handle, struct unit *u, struct str *data) +{ + // TODO +} + +static void +on_eof (void *handle, struct unit *u) +{ + // TODO +} + +static void +on_error (void *handle, struct unit *u) +{ + // TODO +} + +static void +on_aborted (void *handle, struct unit *u) +{ + // TODO +} + +static struct service g_http_service = +{ + .name = "HTTP", + .flags = SERVICE_SUPPORTS_TLS, + + .scan_init = scan_init, + .scan_free = scan_free, + .on_data = on_data, + .on_eof = on_eof, + .on_error = on_error, + .on_aborted = on_aborted +}; + +static bool +initialize (void *ctx, struct plugin_api *api) +{ + g_data = (struct plugin_data) { .ctx = ctx, .api = api }; + api->register_service (ctx, &g_http_service); + return true; +} + +struct plugin_info ponymap_plugin_info = +{ + .api_version = API_VERSION, + .initialize = initialize +}; diff --git a/plugin-irc.c b/plugins/irc.c index 0daff0c..58f594a 100644 --- a/plugin-irc.c +++ b/plugins/irc.c @@ -1,5 +1,5 @@ /* - * plugin-http.c: IRC service detection plugin + * http.c: IRC service detection plugin * * Copyright (c) 2014, Přemysl Janouch <p.janouch@gmail.com> * All rights reserved. @@ -18,10 +18,8 @@ * */ -#include "utils.c" -#include "plugin-api.h" - -// TODO +#include "../utils.c" +#include "../plugin-api.h" // --- IRC utilities ----------------------------------------------------------- @@ -192,3 +190,26 @@ irc_fnmatch (const char *pattern, const char *string) irc_strxfrm (x_string, string, string_size); return fnmatch (x_pattern, x_string, 0); } + +// --- Service detection ------------------------------------------------------- + +static struct plugin_data +{ + void *ctx; ///< Application context + struct plugin_api *api; ///< Plugin API vtable +} +g_data; + +static bool +initialize (void *ctx, struct plugin_api *api) +{ + g_data = (struct plugin_data) { .ctx = ctx, .api = api }; + // TODO: register a service + return true; +} + +struct plugin_info ponymap_plugin_info = +{ + .api_version = API_VERSION, + .initialize = initialize +}; @@ -18,9 +18,6 @@ * */ -#define PROGRAM_NAME "ponymap" -#define PROGRAM_VERSION "alpha" - #include "utils.c" #include "plugin-api.h" #include <dirent.h> @@ -18,6 +18,9 @@ * */ +#define PROGRAM_NAME "ponymap" +#define PROGRAM_VERSION "alpha" + #define _POSIX_C_SOURCE 199309L #define _XOPEN_SOURCE 600 |