commit 0d416471976a7ea4a1666821023a91c357ca11f6
parent 749b876a0daee697332d041677a360f1ddc4fd08
Author: Frederic Cambus <fcambus@users.sourceforge.net>
Date: Sun, 28 Jun 2015 16:31:41 +0200
Adding HTTP status codes distribution in the JSON output
Diffstat:
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
@@ -13,12 +13,12 @@ Currently implemented features :
- Counting bandwidth used
- Counting log file size
- GeoIP lookups (IPv4 only for now)
-- Counting HTTP status codes occurences
+- HTTP status codes distribution
- Hourly hits distribution
## Dependencies
-Logswan requires GeoIP and Jansson libraries and header files.
+Logswan requires `GeoIP` and `Jansson` libraries and header files.
## Compiling
diff --git a/src/output.c b/src/output.c
@@ -21,7 +21,8 @@ char *output(Results results) {
json_t *hitsObject = json_object();
json_t *countriesArray = json_array();
json_t *hoursArray = json_array();
-
+ json_t *httpStatusArray = json_array();
+
for (int loop=0; loop<255; loop++) {
if (results.countries[loop] != 0) {
json_array_append_new(countriesArray, json_pack("{s:s, s:i}", "data", GeoIP_code_by_id(loop), "hits", results.countries[loop]));
@@ -34,11 +35,18 @@ char *output(Results results) {
}
}
+ for (int loop=0; loop<512; loop++) {
+ if (results.httpStatus[loop] != 0) {
+ json_array_append_new(httpStatusArray, json_pack("{s:i, s:i}", "data", loop, "hits", results.httpStatus[loop]));
+ }
+ }
+
json_object_set_new(hitsObject, "ipv4", json_integer(results.hitsIPv4));
json_object_set_new(hitsObject, "ipv6", json_integer(results.hitsIPv6));
json_object_set_new(hitsObject, "total", json_integer(results.hits));
json_object_set_new(hitsObject, "countries", countriesArray);
json_object_set_new(hitsObject, "hours", hoursArray);
+ json_object_set_new(hitsObject, "http_status", httpStatusArray);
json_object_set_new(jsonObject, "date", json_string(results.timeStamp));
json_object_set_new(jsonObject, "file_size", json_integer(results.fileSize));