Class-Of-Service description return to weblogin
authorNeutron Soutmun <neo.neutron@gmail.com>
Mon, 2 Aug 2010 11:03:02 +0000 (18:03 +0700)
committerNeutron Soutmun <neo.neutron@gmail.com>
Mon, 2 Aug 2010 11:03:02 +0000 (18:03 +0700)
  * Serviceclass description return to weblogin and display to user.
  * "Expired" was renamed to "Session End".
  * Session Time now display in human readable form.

src/rahunasd.h
src/rh-task-memset.c
src/rh-task-serviceclass.c
src/rh-xmlrpc-server.c
weblogin/logout.php
weblogin/rahu_xmlrpc.class.php

index f48f8d1..d23f5df 100644 (file)
@@ -59,6 +59,7 @@ struct rahunas_member {
   long bandwidth_max_up;
   unsigned short bandwidth_slot_id;
   char *serviceclass_name;
+  const char *serviceclass_description;
   uint32_t serviceclass_slot_id;
   char *mapping_ip;
   char *username;
index 1579592..5b9371a 100644 (file)
@@ -163,6 +163,7 @@ static int startsess (struct vserver *vs, struct task_req *req)
     member->session_id = termstring;
 
   member->serviceclass_name    = NULL;
+  member->serviceclass_description = termstring;
   member->serviceclass_slot_id = 0;
   member->mapping_ip = termstring;
 
index c9c9e69..7720a8b 100644 (file)
@@ -157,6 +157,7 @@ static int startsess (struct vserver *vs, struct task_req *req)
 
 
     member->serviceclass_name = strdup (req->serviceclass_name);
+    member->serviceclass_description = sc_config->description;
     member->serviceclass_slot_id = req->serviceclass_slot_id;
 
     member->mapping_ip = strdup (ip_tostring(ip1));
index e8de0a7..f80dbe2 100644 (file)
@@ -288,13 +288,14 @@ int do_getsessioninfo(GNetXmlRpcServer *server,
       goto cleanup;
     }
     
-    *reply_string = g_strdup_printf("%s|%s|%s|%d|%s|%d", 
+    *reply_string = g_strdup_printf("%s|%s|%s|%d|%s|%d|%s",
                                     ip, 
                                     member->username,
                                     member->session_id,
                                     member->session_start,
                                     mac_tostring(member->mac_address),
-                                    member->session_timeout);
+                                    member->session_timeout,
+                                    member->serviceclass_description);
     goto cleanup;
   }
 
index 51a454d..ae2e0f9 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
-  Copyright (c) 2008-2009, Neutron Soutmun <neo.neutron@gmail.com>
+  Copyright (c) 2008-2010, Neutron Soutmun <neo.neutron@gmail.com>
   All rights reserved.
 
   Redistribution and use in source and binary forms, with or without 
@@ -42,6 +42,37 @@ require_once 'locale.php';
 require_once 'messages.php';
 require_once 'networkchk.php';
 
+function secs_to_human($secs) {
+  $units = array (
+    "day"     => array ("unit" => _("day"),
+                        "plural_unit" => _("days"),
+                        "div" => 24*3600),
+    "hour"    => array ("unit" => _("hour"),
+                        "plural_unit" => _("hours"),
+                        "div" =>    3600),
+    "minute"  => array ("unit" => _("minute"),
+                        "plural_unit" => _("minutes"),
+                        "div" =>      60),
+    "second"  => array ("unit" => _("second"),
+                        "plural_unit" => _("seconds"),
+                        "div" =>       1),
+  );
+
+  if ($secs == 0)
+    return "$secs " . $units["second"]["plural_unit"];
+
+  $s = "";
+
+  foreach ($units as $unit) {
+    if ($n = intval($secs / $unit["div"])) {
+      $s .= "$n " . (abs($n) > 1 ? $unit["plural_unit"] : $unit["unit"]) . ", ";
+      $secs -= $n * $unit["div"];
+    }
+  }
+
+  return substr ($s, 0, -2);
+}
+
 $current_url = $_SERVER['REQUEST_URI'];
 $interval = 60;
 $auto_refresh = false;
@@ -144,15 +175,21 @@ $valid_text = !$valid ? "" : "" .
   "   <td>". strftime('%e %B %Y %H:%M:%S', $info['session_start']) . "</td>" .
   " </tr>" .
   "  <tr>" .
-  "   <td align='right'><b>" . _("Session Time") . ":</b></td>" .
-  "   <td>" . (time() - $info['session_start']) . " ". _("seconds") . "</td>" .
+  "   <td align='right'><b>" . _("Session End") . ":</b></td>" .
+  "   <td>". ($info['session_timeout'] == 0 ? _("Never") : strftime('%e %B %Y %H:%M:%S', $info['session_timeout']) . "</td>") .
   " </tr>" .
   "" .
   "  <tr>" .
-  "   <td align='right'><b>" . _("Expired") . ":</b></td>" .
-  "   <td>". ($info['session_timeout'] == 0 ? _("Never") : strftime('%e %B %Y %H:%M:%S', $info['session_timeout']) . "</td>") .
+  "   <td align='right'><b>" . _("Session Time") . ":</b></td>" .
+  "   <td>" . secs_to_human(time() - $info['session_start']) . "</td>" .
   " </tr>" .
   "" .
+  (strcmp ($info['serviceclass_description'], "(null)") == 0 ? "" :
+  "  <tr>" .
+  "   <td align='right'><b>" . _("Class of service") . ":</b></td>" .
+  "   <td>" . $info['serviceclass_description'] . "</td>" .
+  " </tr>") .
+  "" .
   "  <tr>" .
   "   <td align='right'><b>" . _("Request URL") . ":</b></td>" .
   "   <td><a href='$request_url' target='_new'>$request_url_text</a></td>" .
index 269fef1..27a0fab 100644 (file)
@@ -85,20 +85,23 @@ class rahu_xmlrpc_client {
        $ret[2] - session_id
        $ret[3] - session_start
        $ret[4] - mac_address
-       $ret[5] - session_timeout */
+       $ret[5] - session_timeout
+       $ret[6] - serviceclass_description */
     $ip = $ret[0];
     $username = $ret[1];
     $session_id = $ret[2];
     $session_start = $ret[3];
     $mac_address = $ret[4];
     $session_timeout = $ret[5];
+    $serviceclass_description = $ret[6];
 
     $result = array("ip"=>$ip, 
                     "username"=>$username, 
                     "session_id"=>$session_id,
                     "session_start"=>$session_start,
                     "mac_address"=>$mac_address,
-                    "session_timeout"=>$session_timeout);
+                    "session_timeout"=>$session_timeout,
+                    "serviceclass_description"=>$serviceclass_description);
     return $result;
   }
 }