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>