Project

General

Profile

Download (4.16 KB) Statistics
| Branch: | Tag: | Revision:
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>&nbsp;' + row_split[0] + '&nbsp;</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);
(2-2/3)