Annotation of embedaddon/coova-chilli/src/session.c, revision 1.1.1.1
1.1 misho 1: /*
2: * Chilli sessions
3: * Copyright (C) 2004, 2005 Mondru AB.
4: * Copyright (c) 2006-2007 David Bird <david@cova.com>
5: *
6: * The contents of this file may be used under the terms of the GNU
7: * General Public License Version 2, provided that the above copyright
8: * notice and this permission notice is included in all copies or
9: * substantial portions of the software.
10: *
11: */
12: #include "system.h"
13: #include "session.h"
14:
15: extern time_t mainclock;
16:
17: int session_redir_json_fmt(bstring json, char *userurl, char *redirurl, uint8_t *hismac) {
18: bcatcstr(json,",\"redir\":{\"originalURL\":\"");
19: bcatcstr(json, userurl?userurl:"");
20: bcatcstr(json,"\",\"redirectionURL\":\"");
21: bcatcstr(json, redirurl?redirurl:"");
22: bcatcstr(json,"\",\"macAddress\":\"");
23: if (hismac) {
24: char mac[REDIR_MACSTRLEN+2];
25: snprintf(mac, REDIR_MACSTRLEN+1, "%.2X-%.2X-%.2X-%.2X-%.2X-%.2X",
26: hismac[0], hismac[1],
27: hismac[2], hismac[3],
28: hismac[4], hismac[5]);
29: bcatcstr(json, mac);
30: }
31: bcatcstr(json,"\"}");
32: return 0;
33: }
34:
35: int session_json_fmt(struct session_state *state,
36: struct session_params *params,
37: bstring json, int init) {
38: bstring tmp = bfromcstr("");
39: time_t starttime = state->start_time;
40: uint32_t inoctets = state->input_octets;
41: uint32_t outoctets = state->output_octets;
42: uint32_t ingigawords = (state->input_octets >> 32);
43: uint32_t outgigawords = (state->output_octets >> 32);
44: time_t timenow = mainclock;
45: uint32_t sessiontime;
46: uint32_t idletime;
47:
48: sessiontime = timenow - state->start_time;
49: idletime = timenow - state->last_time;
50:
51: bcatcstr(json,",\"session\":{\"sessionId\":\"");
52: bcatcstr(json,state->sessionid);
53: bcatcstr(json,"\",\"userName\":\"");
54: bcatcstr(json,state->redir.username);
55: bcatcstr(json, "\",\"startTime\":");
56: bassignformat(tmp, "%ld", init ? mainclock : starttime);
57: bconcat(json, tmp);
58: bcatcstr(json,",\"sessionTimeout\":");
59: bassignformat(tmp, "%ld", params->sessiontimeout);
60: bconcat(json, tmp);
61: bcatcstr(json,",\"idleTimeout\":");
62: bassignformat(tmp, "%ld", params->idletimeout);
63: bconcat(json, tmp);
64: if (params->maxinputoctets) {
65: bcatcstr(json,",\"maxInputOctets\":");
66: bassignformat(tmp, "%ld", params->maxinputoctets);
67: bconcat(json, tmp);
68: }
69: if (params->maxoutputoctets) {
70: bcatcstr(json,",\"maxOutputOctets\":");
71: bassignformat(tmp, "%ld", params->maxoutputoctets);
72: bconcat(json, tmp);
73: }
74: if (params->maxtotaloctets) {
75: bcatcstr(json,",\"maxTotalOctets\":");
76: bassignformat(tmp, "%ld", params->maxtotaloctets);
77: bconcat(json, tmp);
78: }
79: bcatcstr(json,"}");
80:
81: bcatcstr(json,",\"accounting\":{\"sessionTime\":");
82: bassignformat(tmp, "%ld", init ? 0 : sessiontime);
83: bconcat(json, tmp);
84: bcatcstr(json,",\"idleTime\":");
85: bassignformat(tmp, "%ld", init ? 0 : idletime);
86: bconcat(json, tmp);
87: bcatcstr(json,",\"inputOctets\":");
88: bassignformat(tmp, "%ld",init ? 0 : inoctets);
89: bconcat(json, tmp);
90: bcatcstr(json,",\"outputOctets\":");
91: bassignformat(tmp, "%ld", init ? 0 : outoctets);
92: bconcat(json, tmp);
93: bcatcstr(json,",\"inputGigawords\":");
94: bassignformat(tmp, "%ld", init ? 0 : ingigawords);
95: bconcat(json, tmp);
96: bcatcstr(json,",\"outputGigawords\":");
97: bassignformat(tmp, "%ld", init ? 0 : outgigawords);
98: bconcat(json, tmp);
99: bcatcstr(json,"}");
100:
101: bdestroy(tmp);
102: return 0;
103: }
104:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>