/*
- * Copyright (C) 2015, 2016 "IoT.bzh"
+ * Copyright (C) 2015, 2016, 2017 "IoT.bzh"
* Author "Fulup Ar Foll"
* Author José Bollo <jose.bollo@iot.bzh>
*
#include "session.h"
#include "verbose.h"
#include "afb-common.h"
+#include "afb-hook.h"
#include <afb/afb-binding.h>
#error "you should define BINDING_INSTALL_DIR"
#endif
+#define TRACEREQ_NO 0
+#define TRACEREQ_COMMON 1
+#define TRACEREQ_EXTRA 2
+#define TRACEREQ_ALL 3
+
#define AFB_VERSION "0.5"
// Define command line option
#define SET_ROOT_HTTP 26
+#define SET_TRACEREQ 27
+
// Command line structure hold cli --command + help text
typedef struct {
int val; // command number within application
// Supported option
static AFB_options cliOptions [] = {
- {SET_VERBOSE ,0,"verbose" , "Verbose Mode"},
+ {SET_VERBOSE ,0,"verbose" , "Verbose Mode, repeat to increase verbosity"},
{SET_FORGROUND ,0,"foreground" , "Get all in foreground mode"},
{SET_BACKGROUND ,0,"daemon" , "Get all in background mode"},
{SET_SESSIONMAX ,1,"session-max" , "max count of session simultaneously [default 10]"},
+ {SET_TRACEREQ ,1,"tracereq" , "log the requests: no, common, extra, all"},
+
{0, 0, NULL, NULL}
};
fprintf(file, "\n----------------------------------------- \n");
fprintf(file, " AFB [Application Framework Binder] version=%s |\n", AFB_VERSION);
fprintf(file, " \n");
- fprintf(file, " Copyright (C) 2015, 2016 \"IoT.bzh\" [fulup -at- iot.bzh]\n");
+ fprintf(file, " Copyright (C) 2015, 2016, 2017 \"IoT.bzh\" [fulup -at- iot.bzh]\n");
fprintf(file, " AFB comes with ABSOLUTELY NO WARRANTY.\n");
fprintf(file, " Licence Apache 2\n\n");
exit (0);
}
// if no Angular/HTML5 rootbase let's try '/' as default
- if (config->roothttp == NULL)
- config->roothttp = ".";
-
if (config->rootbase == NULL)
config->rootbase = "/opa";
add_item(config, optc, optarg);
break;
+ case SET_TRACEREQ:
+ if (optarg == 0) goto needValueForOption;
+ if (!strcmp(optarg, "no")) config->tracereq = TRACEREQ_NO;
+ else if (!strcmp(optarg, "common")) config->tracereq = TRACEREQ_COMMON;
+ else if (!strcmp(optarg, "extra")) config->tracereq = TRACEREQ_EXTRA;
+ else if (!strcmp(optarg, "all")) config->tracereq = TRACEREQ_ALL;
+ else goto badMode;
+ break;
+
case DISPLAY_VERSION:
if (optarg != 0) goto noValueForOption;
printVersion(stdout);
if (!afb_hsrv_add_alias (hsrv, config->aliasdir[idx].url, dfd, config->aliasdir[idx].path, 0, 0))
return 0;
- if (!afb_hsrv_add_alias(hsrv, "", dfd, config->roothttp, -10, 1))
- return 0;
+ if (config->roothttp != NULL) {
+ if (!afb_hsrv_add_alias(hsrv, "", dfd, config->roothttp, -10, 1))
+ return 0;
+ }
if (!afb_hsrv_add_handler(hsrv, config->rootbase, afb_hswitch_one_page_api_redirect, NULL, -20))
return 0;
/* ignore any SIGPIPE */
signal(SIGPIPE, SIG_IGN);
+ /* install trace of requests */
+ switch(config->tracereq) {
+ default:
+ case TRACEREQ_NO:
+ break;
+ case TRACEREQ_COMMON:
+ afb_hook_req_create(NULL, NULL, NULL, afb_hook_flags_req_common, NULL, NULL);
+ break;
+ case TRACEREQ_EXTRA:
+ afb_hook_req_create(NULL, NULL, NULL, afb_hook_flags_req_extra, NULL, NULL);
+ break;
+ case TRACEREQ_ALL:
+ afb_hook_req_create(NULL, NULL, NULL, afb_hook_flags_req_all, NULL, NULL);
+ break;
+ }
+
/* start the HTTP server */
hsrv = start_http_server(config);
if (hsrv == NULL)