source: genesis/config/iris/node/FreeBSD/8.0-RELEASE/g_list.pl@ 8620

Last change on this file since 8620 was 8620, checked in by rick, 14 years ago

Fix relative path definitions

  • Property svn:executable set to *
File size: 6.8 KB
Line 
1#!/usr/bin/perl
2#
3# Copyright 2005 Stichting Wireless Leiden
4# Rick van der Zwet
5#
6use File::Basename;
7
8# Config located at other file
9my $conf_file = dirname(__FILE__) . "/genesis.conf";
10do($conf_file) || die("Cann't open $conf_file");
11
12
13
14my $HTML=1;
15my @HTTP_BODY = ();
16
17#laden van tool file
18do($toolfile) || die("Cann't open $toolfile");
19
20#gebruik van simple subje om ervoor te zorgen dat de print netjes in het
21#programma gestopt kan worden
22sub printline {
23 push(@HTTP_BODY, "$_[0]\n");
24};
25
26sub filelist {
27 foreach $file ( sort @filelist) {
28 if( $HTML) {
29 printline("$file<BR>");
30 }
31 else {
32 printline($file);
33 };
34 };
35}
36
37sub listnodes {
38 opendir(DIR, $ndir) || die "can't opendir $ndir: $!";
39 @tmpdirs = grep { /^[^\.]/ && -d "$ndir/$_" } readdir(DIR);
40 closedir DIR;
41 foreach $dir (sort @tmpdirs) {
42 no warnings "once";
43 if( not exists($removefromnodelist{$dir}) )
44 {
45 push(@nodelist, $dir);
46 }
47 else
48 {
49 if ( $debug ) { print "'$dir' removed from list\n"; }
50 }
51 use warnings "once";
52 };
53 return @nodelist;
54}
55
56sub nodelist {
57 foreach $node (listnodes( )) {
58 if( $HTML) {
59 printline("$node<BR>");
60 }
61 else {
62 printline("$node\n");
63 };
64 };
65}
66
67#REQUEST parsen
68$request=$ENV{'REQUEST_URI'};
69if( $request =~ /$uri(.*)$/) {
70 ($node,$file)=split(/\//,$1);
71 $title="$node $file";
72 if ( $debug ) { print "Node: $node\n"; }
73 if ( $debug ) { print "File: $file\n"; }
74}
75else {
76 $title="listing";
77};
78
79
80#controleer wat de browser is
81#en zorgen dan er de nodige tags geprint worden
82$browser=$ENV{'HTTP_USER_AGENT'};
83if( $browser=~/curl|wget|fetch/i) {
84 $HTML=0;
85}
86else {
87 $HTML=1;
88 printline("<HTML><HEAD>");
89 printline("<TITLE>Genesis $title</TITLE>");
90 printline("<base href='$source'></base>");
91 printline("</HEAD><BODY BGcolor=white>");
92};
93
94
95#als geen node gespecificeerd dan kijken of svn geupdate is gevraagd
96if( $node eq '') {
97 if( $ENV{"QUERY_STRING"}=~/update/i) {
98 printline("<PRE>");
99 #select(STDERR); $| = 1; # make unbuffered
100 #select(STDOUT); $| = 1; # make unbuffered
101 printline(`$svn update $ndir`);
102 printline("</PRE>");
103 printline("<H2>Done.<H2><P>");
104 printline("Click <A HREF=$source>here</A>");
105 printline("if you're not forwarded automaticly in 5 seconds.<P>");
106 printline("<META HTTP-EQUIV=REFRESH CONTENT=5;URL=$source>");
107 }
108 else {
109 g_list( );
110 }
111}
112elsif( $node eq 'filelist' ) {
113 filelist( );
114}
115elsif( $node eq 'nodelist' ) {
116 nodelist( );
117}
118else {
119 if( $file eq '') {
120 filelist( );
121 }
122 elsif( $file eq 'config') {
123 g_print($hostname);
124 }
125 else {
126 foreach my $tmpFile ( sort @filelist) {
127 if( $file eq $tmpFile ) {
128 g_generate($file);
129 };
130 };
131 };
132};
133
134#plaats de sluit HTML tags
135if( $HTML) {
136 printline("</BODY></HTML>");
137}
138
139$output = join('',@HTTP_BODY);
140print "Content-Length: " . length($output) . " \n";
141print "Content-type: text/html\n\n";
142print $output;
143
144
145#Het opbouwen van het begin scherm
146sub g_list {
147 if( $HTML) {
148 my $svn_version=svn_version("$ndir");
149 if( $svn_version=~/Last Changed Rev: (\d+)/) {
150 $revision=$1;
151 };
152 printline("<H1>Genesis config - last changed rev $revision</H1><P>\n<PRE>");
153 printline("$svn_version");
154 printline("</PRE>");
155 printline("<FORM METHOD=get ACTION=$source>");
156 printline('<INPUT TYPE="submit" NAME="Update" VALUE="Update">');
157 printline("</FORM>");
158 printline("<TABLE BORDER=1>");
159 };
160
161 @dirs = listnodes( );
162 foreach $dir (sort @dirs) {
163 if( $dir=~/attic/ ) {
164 next;
165 };
166 my $node = $dir;
167 if( ! $HTML ) {
168 printline("$node");
169 }
170 else {
171 printline("<TR><TD><A HREF=$node/config>$node</A></TD>");
172 foreach $file (sort @filelist) {
173 printline("<TD><A HREF=$node/$file>$file</A></TD>\n");
174 };
175 };
176 };
177 if( $HTML ) {
178 printline("</TABLE><P>");
179 };
180};
181
182
183
184#ophalen svn versie
185sub svn_version {
186 local($file)=@_;
187 local($svn_version);
188 $svn_version=`$svn info $file`;
189 return($svn_version);
190};
191
192
193
194#netjes de configuratie printen
195sub g_print {
196 my $config="$ndir/$node/$configfile";
197 parse_config($config);
198
199 printline("<H1>Genesis configuratie voor: $node</H1><P>");
200 printline("<PRE>" . svn_version($config) . "</PRE><P>");
201
202
203 no warnings "once";
204 my $TP='';
205 if( $tproxy !~ m/no/i ) {
206 $TP .= "\n";
207 $TP .= "Tproxy on cidr range $tproxy";
208 $TP .= "<b>WARNING - specification propably wrong - should be a cidr</b>"
209 unless $tproxy =~ m/\d+\.\d+\.\d+\.\d+\/\d+/;
210 };
211
212 printline("<TABLE BORDER=1><TR><TD COLSPAN=4><PRE>");
213 printline("master_ip=$master_ip");
214 printline("AGGREGATE=$AGGREGATE");
215 printline("");
216 printline("gw_open=$gw_open");
217 printline("nodetype=$nodetype");
218 printline("nodename=$nodename");
219 printline("");
220 printline("NS_forward=$NS_forward");
221 printline("NS_resolv=$NS_resolv");
222 printline("");
223 printline("location=$location");
224 printline("DISK=$DISK");
225 printline("");
226 printline("X=$X");
227 printline("Y=$Y");
228 printline("");
229 printline("OS=$OS");
230 printline("");
231 printline("$TP");
232 printline("</PRE></TD></TR>");
233
234 foreach $if( sort keys %config) {
235 if( $if=~/^(.*):\d+/ ) {
236 $subs{$1}++;
237 };
238 };
239
240 foreach $if( sort keys %config) {
241 if( $if=~/^([^:]+)/ ) {
242 $mymain=$1;
243 }
244 else {
245 $mymain='';
246 };
247
248 if( $if!~/:\d+/ ) {
249 $main=1;$cc='66'
250 }
251 else {
252 $main=0;
253 $cc='cc';
254 };
255
256 if(! ($ip=$IP{$if}) ) {
257 $ip='dhcp?';
258 };
259 if( $TYPE{$if}=~/wireless/ ) {
260 $color="#${cc}FFFF";
261 };
262 if( $TYPE{$if}=~/ethernet/) {
263 $color="#FFFF${cc}";
264 };
265
266 $cfg=$config{$if};
267 $cfg=~s/(.*KEY.*=).*/${1}***********/;
268 $cfg=~s/(.*PWD.*=).*/${1}***********/;
269 $cfg=~s/(.*CODE.*=).*/${1}***********/;
270 $cfg=~s/(.*PASS.*=).*/${1}***********/;
271
272 if( $main) {
273 printline("<TR bgcolor=$color><TD ROWSPAN=%d VALIGN=TOP><B>$if</TD>\n",(1+$subs{$if})*3,$subs{$if});
274 $c=4;
275 }
276 else {
277 $c=3;
278 printline("<TR bgcolor=$color>");
279 };
280 $cfg=~s/</&lt;/gi;
281 $cfg=~s/>/&gt;/gi;
282
283 printline("<TD>$if</TD><TD><B>$ip</TD><TD>$DESC{$if}($SDESC{$if})</TD>");
284 printline("<TR><TD COLSPAN=$c><PRE>");
285 printline("$cfg");
286 printline("</PRE></TD>");
287 printline("<TR><TD COLSPAN=$c>&nbsp;</TD>");
288 };
289 printline("</TABLE>");
290 no warnings "once";
291};
292
293
294
295#Generen config
296sub g_generate {
297 my $file=$_[0];
298 $config="$ndir/$node/$configfile";
299 $svn_versiont=svn_version($toolfile);
300 $svn_versionc=svn_version($config);
301
302 if( $svn_versiont=~/Last Changed Rev: (\d+)/ ) {
303 $tool_rev=$1;
304 };
305 if( $svn_versionc=~/Last Changed Rev: (\d+)/ ) {
306 $config_rev=$1;
307 };
308
309 if( $tool_rev >= $config_rev) {
310 $svn_version=$svn_versiont . $svn_versionc;
311 }
312 else {
313 $svn_version=$svn_versionc;
314 };
315
316 if( $HTML) {
317 printline("<H1>Genesis $file voor: $node</H1><P>");
318 };
319
320 parse_config($config);
321 $pr=do_it($file);
322
323
324 if( $HTML ) {
325 $pr=~s/</&lt;/gi;
326 printline("<PRE>$pr</PRE>");
327 } else {
328 @HTTP_BODY = $pr;
329 };
330};
Note: See TracBrowser for help on using the repository browser.