Hi,
this patch makes user_stats.php3 work even if you don't have
general_stats_use_totacct: yes in conf/admin.conf.
- Added some debugging code
- Now "all" is always available in servers drop-down


[EMAIL PROTECTED] uwalcher]$ diff -u
/usr/local/cvs/radiusd/dialup_admin/htdocs/user_stats.php3
/usr/local/dialup_admin/htdocs/user_stats.php3
--- /usr/local/cvs/radiusd/dialup_admin/htdocs/user_stats.php3 
2003-07-23 16:34:09.000000000 +0200
+++ /usr/local/dialup_admin/htdocs/user_stats.php3      2003-11-10
19:15:41.000000000 +0100
@@ -37,7 +37,7 @@
 if ($sortby != '')
        $order_attr = ($sortby == 'num') ? 'ConnNum' :
'ConnTotDuration';
 else
-       $order_attr = 'ConnNum';
+       $order_attr = 'ConnTotDuration';
 if ($server != '' && $server != 'all')
        $server_str = "AND NASIPAddress = '$server'";
 $login_str = ($login) ? "AND UserName = '$login' " : '';
@@ -83,42 +83,52 @@
 <p>
        <table border=1 bordercolordark=#ffffe0 bordercolorlight=#000000
width=100% cellpadding=2 cellspacing=0 bgcolor="#ffffe0" valign=top>
        <tr bgcolor="#d0ddb0">
-      
<th>#</th><th>login</th><th>date</th><th>server</th><th>connections
number</th><th>connections duration</th><th>upload</th><th>download</th>
+       <th>#</th><th>username</th><th>last
login</th><th>server</th><th>connections number</th><th>connections
duration</th><th>upload</th><th>download</th>
        </tr>
  
 <?php
 $link = @da_sql_pconnect($config);
 if ($link){
-       $search = @da_sql_query($link,$config,
-       "SELECT * FROM $config[sql_total_accounting_table]
-       WHERE AcctDate >= '$start' AND AcctDate <= '$stop' $server_str
$login_str
-       ORDER BY $order_attr $order $limit;");
-
+       if ($config[general_stats_use_totacct] == 'yes')
+               $search = @da_sql_query($link,$config,
+               "SELECT * FROM $config[sql_total_accounting_table]
+               WHERE AcctDate >= '$start' AND AcctDate <= '$stop'
$server_str $login_str
+               ORDER BY $order_attr $order $limit;");
+       else
+               $search = @da_sql_query($link,$config,
+               "SELECT UserName,sum(AcctSessionTime) AS
ConnTotDuration,count(RadAcctID) AS ConnNum,
+               sum(AcctInputOctets) AS OutputOctets,
sum(AcctOutputOctets) AS InputOctets, NASIPAddress,
+               max(AcctStopTime) AS AcctStopTime FROM
$config[sql_accounting_table]
+               WHERE AcctStopTime >= '$start' AND AcctStopTime <=
'$stop' $server_str $login_str
+               GROUP BY UserName,NASIPAddress ORDER BY $order_attr
$order $limit;");
        if ($search){
                while( $row = @da_sql_fetch_array($search,$config) ){
                        $num++;
-                       $acct_login = $row[UserName];
+                       $acct_login = $row[username];
                        if ($acct_login == '')
                                $acct_login = '-';
                        else
                                $acct_login = "<a
href=\"user_admin.php3?login=$acct_login\" title=\"Edit user
$acct_login\">$acct_login</a>";
-                       $acct_time = $row[ConnTotDuration];
+                       $acct_time = $row[conntotduration];
                        $acct_time = time2str($acct_time);
-                       $acct_conn_num = $row[ConnNum];
-                       $acct_date = $row[AcctDate];
-                       $acct_upload = $row[InputOctets];
-                       $acct_download = $row[OutputOctets];
+                       $acct_conn_num = $row[connnum];
+                       if ($config[general_stats_use_totacct] == 'yes')
+                               $acct_date = $row[acctdate];
+                       else
+                               $acct_date =
substr($row[acctstoptime],0,10);
+                       $acct_upload = $row[inputoctets];
+                       $acct_download = $row[outputoctets];
                        $acct_upload = bytes2str($acct_upload);
                        $acct_download = bytes2str($acct_download);
-                       $acct_server =
$da_name_cache[$row[NASIPAddress]];
+                       $acct_server =
$da_name_cache[$row[nasipaddress]];
                        if (!isset($acct_server)){
-                               $acct_server =
@gethostbyaddr($row[NASIPAddress]);
+                               $acct_server =
@gethostbyaddr($row[nasipaddress]);
                                if (!isset($da_name_cache) &&
$config[general_use_session] == 'yes'){
-                                      
$da_name_cache[$row[NASIPAddress]] = $acct_server;
+                                      
$da_name_cache[$row[nasipaddress]] = $acct_server;
                                       
session_register('da_name_cache');
                                }
                                else
-                                      
$da_name_cache[$row[NASIPAddress]] = $acct_server;
+                                      
$da_name_cache[$row[nasipaddress]] = $acct_server;
                        }
                        if ($acct_server == '')
                                $acct_server = '-';
@@ -136,7 +146,12 @@
 EOM;
                }
        }
+       else
+               echo "<b>Database query failed: " .
da_sql_error($link,$config) . "</b><br>\n";
 }
+else
+       echo "<b>Could not connect to SQL database</b><br>\n";
+
 echo <<<EOM
        </table>
 <tr><td>
@@ -197,10 +212,14 @@
 }
 if ($server == '' || $server == 'all')
        echo "<option selected value=\"all\">all\n";
+else
+       echo "<option value=\"all\">all\n";
 ?>
 </select>
 </td>
-<td><input type="text" name="login" size="11" value="<?php echo $login
?>"></td>
+<td>
+<input type="text" name="login" size="11" value="<?php echo $login?>">
+</td>
 </tr>
 </table></td></tr></form>
 </table>

--- /usr/local/cvs/radiusd/dialup_admin/htdocs/user_stats.php3  2003-07-23 
16:34:09.000000000 +0200
+++ /usr/local/dialup_admin/htdocs/user_stats.php3      2003-11-10 19:15:41.000000000 
+0100
@@ -37,7 +37,7 @@
 if ($sortby != '')
        $order_attr = ($sortby == 'num') ? 'ConnNum' : 'ConnTotDuration';
 else
-       $order_attr = 'ConnNum';
+       $order_attr = 'ConnTotDuration';
 if ($server != '' && $server != 'all')
        $server_str = "AND NASIPAddress = '$server'";
 $login_str = ($login) ? "AND UserName = '$login' " : '';
@@ -83,42 +83,52 @@
 <p>
        <table border=1 bordercolordark=#ffffe0 bordercolorlight=#000000 width=100% 
cellpadding=2 cellspacing=0 bgcolor="#ffffe0" valign=top>
        <tr bgcolor="#d0ddb0">
-       <th>#</th><th>login</th><th>date</th><th>server</th><th>connections 
number</th><th>connections duration</th><th>upload</th><th>download</th>
+       <th>#</th><th>username</th><th>last login</th><th>server</th><th>connections 
number</th><th>connections duration</th><th>upload</th><th>download</th>
        </tr>
 
 <?php
 $link = @da_sql_pconnect($config);
 if ($link){
-       $search = @da_sql_query($link,$config,
-       "SELECT * FROM $config[sql_total_accounting_table]
-       WHERE AcctDate >= '$start' AND AcctDate <= '$stop' $server_str $login_str
-       ORDER BY $order_attr $order $limit;");
-
+       if ($config[general_stats_use_totacct] == 'yes')
+               $search = @da_sql_query($link,$config,
+               "SELECT * FROM $config[sql_total_accounting_table]
+               WHERE AcctDate >= '$start' AND AcctDate <= '$stop' $server_str 
$login_str
+               ORDER BY $order_attr $order $limit;");
+       else
+               $search = @da_sql_query($link,$config,
+               "SELECT UserName,sum(AcctSessionTime) AS 
ConnTotDuration,count(RadAcctID) AS ConnNum,
+               sum(AcctInputOctets) AS OutputOctets, sum(AcctOutputOctets) AS 
InputOctets, NASIPAddress,
+               max(AcctStopTime) AS AcctStopTime FROM $config[sql_accounting_table]
+               WHERE AcctStopTime >= '$start' AND AcctStopTime <= '$stop' $server_str 
$login_str
+               GROUP BY UserName,NASIPAddress ORDER BY $order_attr $order $limit;");
        if ($search){
                while( $row = @da_sql_fetch_array($search,$config) ){
                        $num++;
-                       $acct_login = $row[UserName];
+                       $acct_login = $row[username];
                        if ($acct_login == '')
                                $acct_login = '-';
                        else
                                $acct_login = "<a 
href=\"user_admin.php3?login=$acct_login\" title=\"Edit user 
$acct_login\">$acct_login</a>";
-                       $acct_time = $row[ConnTotDuration];
+                       $acct_time = $row[conntotduration];
                        $acct_time = time2str($acct_time);
-                       $acct_conn_num = $row[ConnNum];
-                       $acct_date = $row[AcctDate];
-                       $acct_upload = $row[InputOctets];
-                       $acct_download = $row[OutputOctets];
+                       $acct_conn_num = $row[connnum];
+                       if ($config[general_stats_use_totacct] == 'yes')
+                               $acct_date = $row[acctdate];
+                       else
+                               $acct_date = substr($row[acctstoptime],0,10);
+                       $acct_upload = $row[inputoctets];
+                       $acct_download = $row[outputoctets];
                        $acct_upload = bytes2str($acct_upload);
                        $acct_download = bytes2str($acct_download);
-                       $acct_server = $da_name_cache[$row[NASIPAddress]];
+                       $acct_server = $da_name_cache[$row[nasipaddress]];
                        if (!isset($acct_server)){
-                               $acct_server = @gethostbyaddr($row[NASIPAddress]);
+                               $acct_server = @gethostbyaddr($row[nasipaddress]);
                                if (!isset($da_name_cache) && 
$config[general_use_session] == 'yes'){
-                                       $da_name_cache[$row[NASIPAddress]] = 
$acct_server;
+                                       $da_name_cache[$row[nasipaddress]] = 
$acct_server;
                                        session_register('da_name_cache');
                                }
                                else
-                                       $da_name_cache[$row[NASIPAddress]] = 
$acct_server;
+                                       $da_name_cache[$row[nasipaddress]] = 
$acct_server;
                        }
                        if ($acct_server == '')
                                $acct_server = '-';
@@ -136,7 +146,12 @@
 EOM;
                }
        }
+       else
+               echo "<b>Database query failed: " . da_sql_error($link,$config) . 
"</b><br>\n";
 }
+else
+       echo "<b>Could not connect to SQL database</b><br>\n";
+
 echo <<<EOM
        </table>
 <tr><td>
@@ -197,10 +212,14 @@
 }
 if ($server == '' || $server == 'all')
        echo "<option selected value=\"all\">all\n";
+else
+       echo "<option value=\"all\">all\n";
 ?>
 </select>
 </td>
-<td><input type="text" name="login" size="11" value="<?php echo $login ?>"></td>
+<td>
+<input type="text" name="login" size="11" value="<?php echo $login?>">
+</td>
 </tr>
 </table></td></tr></form>
 </table>

Reply via email to