summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data.c96
-rw-r--r--snac.c94
2 files changed, 96 insertions, 94 deletions
diff --git a/data.c b/data.c
index dc57521..439c15e 100644
--- a/data.c
+++ b/data.c
@@ -1748,3 +1748,99 @@ void purge_all(void)
purge_server();
}
+
+
+/** archive **/
+
+void srv_archive(const char *direction, xs_dict *req,
+ const char *payload, int p_size,
+ int status, xs_dict *headers,
+ const char *body, int b_size)
+/* archives a connection */
+{
+ /* obsessive archiving */
+ xs *date = tid(0);
+ xs *dir = xs_fmt("%s/archive/%s_%s", srv_basedir, date, direction);
+ FILE *f;
+
+ if (mkdirx(dir) != -1) {
+ xs *meta_fn = xs_fmt("%s/_META", dir);
+
+ if ((f = fopen(meta_fn, "w")) != NULL) {
+ xs *j1 = xs_json_dumps_pp(req, 4);
+ xs *j2 = xs_json_dumps_pp(headers, 4);
+
+ fprintf(f, "dir: %s\n", direction);
+ fprintf(f, "req: %s\n", j1);
+ fprintf(f, "p_size: %d\n", p_size);
+ fprintf(f, "status: %d\n", status);
+ fprintf(f, "response: %s\n", j2);
+ fprintf(f, "b_size: %d\n", b_size);
+ fclose(f);
+ }
+
+ if (p_size && payload) {
+ xs *payload_fn = NULL;
+ xs *payload_fn_raw = NULL;
+ char *v = xs_dict_get(req, "content-type");
+
+ if (v && xs_str_in(v, "json") != -1) {
+ payload_fn = xs_fmt("%s/payload.json", dir);
+
+ if ((f = fopen(payload_fn, "w")) != NULL) {
+ xs *v1 = xs_json_loads(payload);
+ xs *j1 = NULL;
+
+ if (v1 != NULL)
+ j1 = xs_json_dumps_pp(v1, 4);
+
+ if (j1 != NULL)
+ fwrite(j1, strlen(j1), 1, f);
+ else
+ fwrite(payload, p_size, 1, f);
+
+ fclose(f);
+ }
+ }
+
+ payload_fn_raw = xs_fmt("%s/payload", dir);
+
+ if ((f = fopen(payload_fn_raw, "w")) != NULL) {
+ fwrite(payload, p_size, 1, f);
+ fclose(f);
+ }
+ }
+
+ if (b_size && body) {
+ xs *body_fn = NULL;
+ char *v = xs_dict_get(headers, "content-type");
+
+ if (v && xs_str_in(v, "json") != -1) {
+ body_fn = xs_fmt("%s/body.json", dir);
+
+ if ((f = fopen(body_fn, "w")) != NULL) {
+ xs *v1 = xs_json_loads(body);
+ xs *j1 = NULL;
+
+ if (v1 != NULL)
+ j1 = xs_json_dumps_pp(v1, 4);
+
+ if (j1 != NULL)
+ fwrite(j1, strlen(j1), 1, f);
+ else
+ fwrite(body, b_size, 1, f);
+
+ fclose(f);
+ }
+ }
+ else {
+ body_fn = xs_fmt("%s/body", dir);
+
+ if ((f = fopen(body_fn, "w")) != NULL) {
+ fwrite(body, b_size, 1, f);
+ fclose(f);
+ }
+ }
+ }
+ }
+}
diff --git a/snac.c b/snac.c
index 3fa4b94..a5b2080 100644
--- a/snac.c
+++ b/snac.c
@@ -148,97 +148,3 @@ int check_password(const char *uid, const char *passwd, const char *hash)
return ret;
}
-
-
-void srv_archive(const char *direction, xs_dict *req,
- const char *payload, int p_size,
- int status, xs_dict *headers,
- const char *body, int b_size)
-/* archives a connection */
-{
- /* obsessive archiving */
- xs *date = tid(0);
- xs *dir = xs_fmt("%s/archive/%s_%s", srv_basedir, date, direction);
- FILE *f;
-
- if (mkdirx(dir) != -1) {
- xs *meta_fn = xs_fmt("%s/_META", dir);
-
- if ((f = fopen(meta_fn, "w")) != NULL) {
- xs *j1 = xs_json_dumps_pp(req, 4);
- xs *j2 = xs_json_dumps_pp(headers, 4);
-
- fprintf(f, "dir: %s\n", direction);
- fprintf(f, "req: %s\n", j1);
- fprintf(f, "p_size: %d\n", p_size);
- fprintf(f, "status: %d\n", status);
- fprintf(f, "response: %s\n", j2);
- fprintf(f, "b_size: %d\n", b_size);
- fclose(f);
- }
-
- if (p_size && payload) {
- xs *payload_fn = NULL;
- xs *payload_fn_raw = NULL;
- char *v = xs_dict_get(req, "content-type");
-
- if (v && xs_str_in(v, "json") != -1) {
- payload_fn = xs_fmt("%s/payload.json", dir);
-
- if ((f = fopen(payload_fn, "w")) != NULL) {
- xs *v1 = xs_json_loads(payload);
- xs *j1 = NULL;
-
- if (v1 != NULL)
- j1 = xs_json_dumps_pp(v1, 4);
-
- if (j1 != NULL)
- fwrite(j1, strlen(j1), 1, f);
- else
- fwrite(payload, p_size, 1, f);
-
- fclose(f);
- }
- }
-
- payload_fn_raw = xs_fmt("%s/payload", dir);
-
- if ((f = fopen(payload_fn_raw, "w")) != NULL) {
- fwrite(payload, p_size, 1, f);
- fclose(f);
- }
- }
-
- if (b_size && body) {
- xs *body_fn = NULL;
- char *v = xs_dict_get(headers, "content-type");
-
- if (v && xs_str_in(v, "json") != -1) {
- body_fn = xs_fmt("%s/body.json", dir);
-
- if ((f = fopen(body_fn, "w")) != NULL) {
- xs *v1 = xs_json_loads(body);
- xs *j1 = NULL;
-
- if (v1 != NULL)
- j1 = xs_json_dumps_pp(v1, 4);
-
- if (j1 != NULL)
- fwrite(j1, strlen(j1), 1, f);
- else
- fwrite(body, b_size, 1, f);
-
- fclose(f);
- }
- }
- else {
- body_fn = xs_fmt("%s/body", dir);
-
- if ((f = fopen(body_fn, "w")) != NULL) {
- fwrite(body, b_size, 1, f);
- fclose(f);
- }
- }
- }
- }
-} \ No newline at end of file