Fix a few bugs
[freeradius.git] / dialup_admin / htdocs / failed_logins.php3
1 <?php
2 require('../conf/config.php3');
3 require('../lib/attrshow.php3');
4 require('../lib/sql/nas_list.php3');
5 require('../lib/xlat.php3');
6 ?>
7 <html>
8 <?php
9
10 if (is_file("../lib/sql/drivers/$config[sql_type]/functions.php3"))
11         include_once("../lib/sql/drivers/$config[sql_type]/functions.php3");
12 else{
13         echo <<<EOM
14 <title>Failed logins</title>
15 <meta http-equiv="Content-Type" content="text/html; charset=$config[general_charset]">
16 <link rel="stylesheet" href="style.css">
17 </head>
18 <body bgcolor="#80a040" background="images/greenlines1.gif" link="black" alink="black">
19 <center>
20 <b>Could not include SQL library functions. Aborting</b>
21 </body>
22 </html>
23 EOM;
24         exit();
25 }
26
27 $now = time();
28 if ($last == 0)
29         $last = ($config[general_most_recent_fl]) ? $config[general_most_recent_fl] : 5;
30 $start = $now - ($last*60);
31 $now_str = date($config[sql_full_date_format],$now);
32 $prev_str = date($config[sql_full_date_format],$start);
33
34 $now_str = da_sql_escape_string($now_str);
35 $prev_str = da_sql_escape_string($prev_str);
36
37 $pagesize = ($pagesize) ? $pagesize : 10;
38 if (!is_int($pagesize))
39         $pagesize = 10;
40 $limit = ($pagesize == 'all') ? '' : "LIMIT $pagesize";
41 $selected[$pagesize] = 'selected';
42 $order = ($order != '') ? $order : $config[general_accounting_info_order];
43 if ($order != 'desc' && $order != 'asc')
44         $order = 'desc';
45 $selected[$order] = 'selected';
46 if ($callerid != ''){
47         $callerid = da_sql_escape_string($callerid);
48         $callerid_str = "AND callingstationid = '$callerid'";
49 }
50 if ($server != '' && $server != 'all'){
51         $server = da_sql_escape_string($server);
52         $server_str = "AND nasipaddress = '$server'";
53 }
54
55 ?>
56
57 <head>
58 <title>Failed Logins</title>
59 <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $config[general_charset]?>">
60 <link rel="stylesheet" href="style.css">
61 </head>
62 <body bgcolor="#80a040" background="images/greenlines1.gif" link="black" alink="black">
63 <center>
64 <table border=0 width=550 cellpadding=0 cellspacing=0>
65 <tr valign=top>
66 <td align=center><img src="images/title2.gif"></td>
67 </tr>
68 </table>
69 <table border=0 width=400 cellpadding=0 cellspacing=2>
70 </table>
71 <br>
72 <table border=0 width=840 cellpadding=1 cellspacing=1>
73 <tr valign=top>
74 <td width=65%></td>
75 <td bgcolor="black" width=35%>
76         <table border=0 width=100% cellpadding=2 cellspacing=0>
77         <tr bgcolor="#907030" align=right valign=top><th>
78         <font color="white">Failed Logins</font>&nbsp;
79         </th></tr>
80         </table>
81 </td></tr>
82 <tr bgcolor="black" valign=top><td colspan=2>
83         <table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top>
84         <tr><td>
85 <?php
86 echo <<<EOM
87 <b>$prev_str</b> up to <b>$now_str</b>
88 EOM;
89 ?>
90
91 <p>
92         <table border=1 bordercolordark=#ffffe0 bordercolorlight=#000000 width=100% cellpadding=2 cellspacing=0 bgcolor="#ffffe0" valign=top>
93         <tr bgcolor="#d0ddb0">
94         <th>#</th><th>login</th>
95 <?php
96 if ($acct_attrs['fl'][2] != '') echo "<th>" . $acct_attrs['fl'][2] . "</th>\n";
97 if ($acct_attrs['fl'][7] != '') echo "<th>" . $acct_attrs['fl'][7] . "</th>\n";
98 if ($acct_attrs['fl'][8] != '') echo "<th>" . $acct_attrs['fl'][8] . "</th>\n";
99 if ($acct_attrs['fl'][9] != '') echo "<th>" . $acct_attrs['fl'][9] . "</th>\n";
100 $sql_extra_query = '';
101 if ($config[sql_accounting_extra_query] != '')
102         $sql_extra_query = xlat($config[sql_accounting_extra_query],$login,$config);
103 ?>
104         </tr>
105
106 <?php
107 $link = @da_sql_pconnect($config);
108 if ($link){
109         $search = @da_sql_query($link,$config,
110         "SELECT acctstoptime,username,nasipaddress,nasportid,acctterminatecause,callingstationid
111         FROM $config[sql_accounting_table]
112         WHERE acctstoptime <= '$now_str' AND acctstoptime >= '$prev_str'
113         AND (acctterminatecause LIKE 'Login-Incorrect%' OR
114         acctterminatecause LIKE 'Invalid-User%' OR
115         acctterminatecause LIKE 'Multiple-Logins%') $callerid_str $server_str $sql_extra_query
116         ORDER BY acctstoptime $order $limit;");
117         if ($search){
118                 while( $row = @da_sql_fetch_array($search,$config) ){
119                         $num++;
120                         $acct_login = $row[username];
121                         if ($acct_login == '')
122                                 $acct_login = '-';
123                         else
124                                 $acct_login = "<a href=\"user_admin.php3?login=$acct_login\" title=\"Edit user $acct_login\">$acct_login</a>";
125                         $acct_time = $row[acctstoptime];
126                         $acct_server = $row[nasipaddress];
127                         if ($acct_server != ''){
128                                 $acct_server = $da_name_cache[$acct_server];
129                                 if (!isset($acct_server)){
130                                         $acct_server = $row[nasipaddress];
131                                         $acct_server = @gethostbyaddr($acct_server);
132                                         if (!isset($da_name_cache) && $config[general_use_session] == 'yes'){
133                                                 $da_name_cache[$row[nasipaddress]] = $acct_server;
134                                                 session_register('da_name_cache');
135                                         }
136                                         else
137                                                 $da_name_cache[$row[nasipaddress]] = $acct_server;
138                                 }
139                         }
140                         else
141                                 $acct_server = '-';
142                         $acct_server = "$acct_server:$row[nasportid]";
143                         $acct_terminate_cause = "$row[acctterminatecause]";
144                         if ($acct_terminate_cause == '')
145                                 $acct_terminate_cause = '-';
146                         $acct_callerid = "$row[callingstationid]";
147                         if ($acct_callerid == '')
148                                 $acct_callerid = '-';
149                         echo <<<EOM
150                         <tr align=center bgcolor="white">
151                                 <td>$num</td>
152                                 <td>$acct_login</td>
153 EOM;
154                                 if ($acct_attrs['fl'][2] != '') echo "<td>$acct_time</td>\n";
155                                 if ($acct_attrs['fl'][2] != '') echo "<td>$acct_server</td>\n";
156                                 if ($acct_attrs['fl'][2] != '') echo "<td>$acct_terminate_cause</td>\n";
157                                 if ($acct_attrs['fl'][2] != '') echo "<td>$acct_callerid</td>\n";
158                                 echo "</tr>\n";
159                 }
160         }
161         else
162                 echo "<b>Database query failed: " . da_sql_error($link,$config) . "</b><br>\n";
163 }
164 else
165         echo "<b>Could not connect to SQL database</b><br>\n";
166 echo <<<EOM
167         </table>
168 <tr><td>
169 <hr>
170 <tr><td align="left">
171         <form action="failed_logins.php3" method="get" name="master">
172         <table border=0>
173                 <tr valign="bottom">
174                         <td><small><b>time back (mins)</td><td><small><b>pagesize</td><td><small><b>caller id</td><td><b>order</td>
175         <tr valign="middle"><td>
176 <input type="text" name="last" size="11" value="$last"></td>
177 <td><select name="pagesize">
178 <option $selected[5] value="5" >05
179 <option $selected[10] value="10">10
180 <option $selected[15] value="15">15
181 <option $selected[20] value="20">20
182 <option $selected[40] value="40">40
183 <option $selected[80] value="80">80
184 <option $selected[all] value="all">all
185 </select>
186 </td>
187 <td>
188 <input type="text" name="callerid" size="11" value="$callerid"></td>
189 <td><select name="order">
190 <option $selected[asc] value="asc">older first
191 <option $selected[desc] value="desc">recent first
192 </select>
193 </td>
194 EOM;
195 ?>
196
197 <td><input type="submit" class=button value="show"></td></tr>
198 <tr><td>
199 <b>On Access Server:</b>
200 </td></tr><tr><td>
201 <select name="server">
202 <?php
203 foreach ($nas_list as $nas){
204         $name = $nas[name];
205         if ($nas[ip] == '')
206                 continue;
207         $servers[$name] = $nas[ip];
208 }
209 ksort($servers);
210 foreach ($servers as $name => $ip){
211         if ($server == $ip)
212                 echo "<option selected value=\"$ip\">$name\n";
213         else
214                 echo "<option value=\"$ip\">$name\n";
215 }
216 if ($server == '' || $server == 'all')
217         echo "<option selected value=\"all\">all\n";
218 else
219         echo "<option value=\"all\">all\n";
220 ?>
221 </select>
222 </td></tr>
223 </table></td></tr></form>
224 </table>
225 </tr>
226 </table>
227 </body>
228 </html>