source: genesis/tools/g_list.pl@ 4996

Last change on this file since 4996 was 4990, checked in by dirkx, 19 years ago

+Cope with whost having port numbers

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