File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / coova-chilli / src / session.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:48:25 2012 UTC (13 years, 1 month ago) by misho
Branches: coova-chilli, MAIN
CVS tags: v1_0_12, HEAD
coova-chilli

    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>