1
|
|
2
|
lastsawtime = '<?php echo time(); ?>;';
|
3
|
var lines = Array();
|
4
|
var timer;
|
5
|
var updateDelay = 30000;
|
6
|
var isBusy = false;
|
7
|
var isPaused = false;
|
8
|
|
9
|
<?php
|
10
|
if(isset($config['syslog']['reverse']))
|
11
|
echo " var isReverse = true;\n";
|
12
|
else
|
13
|
echo " var isReverse = false;\n";
|
14
|
?>
|
15
|
|
16
|
if (typeof getURL == 'undefined') {
|
17
|
getURL = function(url, callback) {
|
18
|
if (!url)
|
19
|
throw 'No URL for getURL';
|
20
|
try {
|
21
|
if (typeof callback.operationComplete == 'function')
|
22
|
callback = callback.operationComplete;
|
23
|
} catch (e) {}
|
24
|
if (typeof callback != 'function')
|
25
|
throw 'No callback function for getURL';
|
26
|
var http_request = null;
|
27
|
if (typeof XMLHttpRequest != 'undefined') {
|
28
|
http_request = new XMLHttpRequest();
|
29
|
}
|
30
|
else if (typeof ActiveXObject != 'undefined') {
|
31
|
try {
|
32
|
http_request = new ActiveXObject('Msxml2.XMLHTTP');
|
33
|
} catch (e) {
|
34
|
try {
|
35
|
http_request = new ActiveXObject('Microsoft.XMLHTTP');
|
36
|
} catch (e) {}
|
37
|
}
|
38
|
}
|
39
|
if (!http_request)
|
40
|
throw 'Both getURL and XMLHttpRequest are undefined';
|
41
|
http_request.onreadystatechange = function() {
|
42
|
if (http_request.readyState == 4) {
|
43
|
callback( { success : true,
|
44
|
content : http_request.responseText,
|
45
|
contentType : http_request.getResponseHeader("Content-Type") } );
|
46
|
}
|
47
|
}
|
48
|
http_request.open('GET', url, true);
|
49
|
http_request.send(null);
|
50
|
}
|
51
|
}
|
52
|
|
53
|
function outputrule(req) {
|
54
|
alert(req.content);
|
55
|
}
|
56
|
function fetch_new_rules() {
|
57
|
if(isPaused)
|
58
|
return;
|
59
|
if(isBusy)
|
60
|
return;
|
61
|
isBusy = true;
|
62
|
getURL('diag_logs_filter_dynamic.php?lastsawtime=' + lastsawtime, fetch_new_rules_callback);
|
63
|
}
|
64
|
function fetch_new_rules_callback(callback_data) {
|
65
|
if(isPaused)
|
66
|
return;
|
67
|
|
68
|
var data_split;
|
69
|
var new_data_to_add = Array();
|
70
|
var data = callback_data.content;
|
71
|
|
72
|
data_split = data.split("\n");
|
73
|
|
74
|
for(var x=0; x<data_split.length-1; x++) {
|
75
|
/* loop through rows */
|
76
|
row_split = data_split[x].split("||");
|
77
|
var line = '';
|
78
|
line = '<div class="log-entry">';
|
79
|
line += ' <span class="log-action-mini" nowrap> ' + row_split[0] + ' </span>';
|
80
|
line += ' <span class="log-interface-mini" nowrap>' + row_split[2] + '</span>';
|
81
|
line += ' <span class="log-source-mini" nowrap>' + row_split[3] + '</span>';
|
82
|
line += ' <span class="log-destination-mini" nowrap>' + row_split[4] + '</span>';
|
83
|
line += ' <span class="log-protocol-mini" nowrap>' + row_split[5] + '</span>';
|
84
|
line += '</tr></div>';
|
85
|
lastsawtime = row_split[6];
|
86
|
new_data_to_add[new_data_to_add.length] = line;
|
87
|
}
|
88
|
update_div_rows(new_data_to_add);
|
89
|
isBusy = false;
|
90
|
}
|
91
|
function update_div_rows(data) {
|
92
|
if(isPaused)
|
93
|
return;
|
94
|
|
95
|
var isIE = navigator.appName.indexOf('Microsoft') != -1;
|
96
|
var isSafari = navigator.userAgent.indexOf('Safari') != -1;
|
97
|
var isOpera = navigator.userAgent.indexOf('Opera') != -1;
|
98
|
var rulestable = document.getElementById('log');
|
99
|
var rows = rulestable.getElementsByTagName('div');
|
100
|
var showanim = 1;
|
101
|
if (isIE) {
|
102
|
showanim = 0;
|
103
|
}
|
104
|
//alert(data.length);
|
105
|
for(var x=0; x<data.length; x++) {
|
106
|
var numrows = rows.length;
|
107
|
var appearatrow;
|
108
|
/* if reverse logging is enabled we need to show the
|
109
|
* records in a reverse order with new items appearing
|
110
|
* on the top
|
111
|
*/
|
112
|
//if(isReverse == false) {
|
113
|
// for (var i = 2; i < numrows; i++) {
|
114
|
// nextrecord = i + 1;
|
115
|
// if(nextrecord < numrows)
|
116
|
// rows[i].innerHTML = rows[nextrecord].innerHTML;
|
117
|
// }
|
118
|
// appearatrow = numrows - 1;
|
119
|
//} else {
|
120
|
for (var i = numrows; i > 0; i--) {
|
121
|
nextrecord = i + 1;
|
122
|
if(nextrecord < numrows)
|
123
|
rows[nextrecord].innerHTML = rows[i].innerHTML;
|
124
|
}
|
125
|
appearatrow = 1;
|
126
|
//}
|
127
|
var item = document.getElementById('firstrow');
|
128
|
if(x == data.length-1) {
|
129
|
/* nothing */
|
130
|
showanim = false;
|
131
|
} else {
|
132
|
showanim = false;
|
133
|
}
|
134
|
if (showanim) {
|
135
|
rows[appearatrow].style.display = 'none';
|
136
|
rows[appearatrow].innerHTML = data[x];
|
137
|
new Effect.Appear(rows[appearatrow]);
|
138
|
} else {
|
139
|
rows[appearatrow].innerHTML = data[x];
|
140
|
}
|
141
|
}
|
142
|
/* rechedule AJAX interval */
|
143
|
timer = setInterval('fetch_new_rules()', updateDelay);
|
144
|
}
|
145
|
function toggle_pause() {
|
146
|
if(isPaused) {
|
147
|
isPaused = false;
|
148
|
fetch_new_rules();
|
149
|
} else {
|
150
|
isPaused = true;
|
151
|
}
|
152
|
}
|
153
|
/* start local AJAX engine */
|
154
|
lastsawtime = '<?php echo time(); ?>;';
|
155
|
timer = setInterval('fetch_new_rules()', updateDelay);
|