/[smecontribs]/rpms/smeserver-dhcpmanager/contribs8/smeserver-dhcpmanager-1.5-checkip-scanIP-and-new-panelIP.patch
ViewVC logotype

Annotation of /rpms/smeserver-dhcpmanager/contribs8/smeserver-dhcpmanager-1.5-checkip-scanIP-and-new-panelIP.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Tue Jan 7 06:16:18 2014 UTC (10 years, 7 months ago) by unnilennium
Branch: MAIN
CVS Tags: smeserver-dhcpmanager-1_5-3_el5_sme, smeserver-dhcpmanager-1_5-5_el5_sme, smeserver-dhcpmanager-1_5-10_el5_sme
* Sun Jan 05 2014 Stephane de Labrusse <stephdl@de-labrusse.fr> smeserver-dhcpmanager-1.5-5
- Add a checkIP routine against wrong IP [sme:8015]
- Add a new panel to see connected IP [sme:8113]
- Add a counter of host up on the LAN (using nmap) [sme:8111]

1 unnilennium 1.1 diff -Nur smeserver-dhcpmanager-1.5-old/root/etc/e-smith/web/functions/dhcpd smeserver-dhcpmanager-1.5/root/etc/e-smith/web/functions/dhcpd
2     --- smeserver-dhcpmanager-1.5-old/root/etc/e-smith/web/functions/dhcpd 2014-01-03 23:18:37.000000000 +0100
3     +++ smeserver-dhcpmanager-1.5/root/etc/e-smith/web/functions/dhcpd 2014-01-05 12:38:35.000000000 +0100
4     @@ -23,7 +23,8 @@
5     use esmith::AccountsDB;
6     use esmith::FormMagick;
7     use Net::Ping;
8     -
9     +use esmith::util::network qw(:all);
10     +use Socket qw( inet_aton );
11    
12     ###Declare function prototypes
13     sub Main_Display ($$);
14     @@ -36,7 +37,8 @@
15     sub Message ($$);
16     sub Global_WinPopup ($);
17     sub Perform_Message ($);
18     -
19     +sub Table_IP ($);
20     +sub Scan_Local_Network ($);
21     ### Clear PATH and related environment variables so that calls to
22     ### external programs do not cause results to be tainted. See
23     ### "perlsec" manual page for details.
24     @@ -73,7 +75,7 @@
25     my $q = new CGI;
26     if (! grep (/^state$/, $q->param)){ Main_Display($q, '');}
27     elsif ($q->param ('state') eq "main_display"){Main_Display ($q,'');}
28     -elsif ($q->param ('state') eq "Refresh"){Main_Display ($q,'');}
29     +elsif ($q->param ('state') eq "Refresh"){Table_IP ($q);}
30     elsif ($q->param ('state') eq "main_save"){Main_Save ($q);}
31     elsif ($q->param ('state') eq "del_lease"){Del_Lease ($q);}
32     elsif ($q->param ('state') eq "perform_del_lease"){Perform_Del_Lease ($q);}
33     @@ -82,6 +84,9 @@
34     elsif ($q->param ('state') eq "Global WinPopup"){Global_WinPopup ($q);}
35     elsif ($q->param ('state') eq "message"){Message ($q,'');}
36     elsif ($q->param ('state') eq "perform_message"){Perform_Message ($q);}
37     +elsif ($q->param ('state') eq "Connected IP"){Table_IP ($q);}
38     +elsif ($q->param ('state') eq "Scan your Network"){Scan_Local_Network ($q);}
39     +
40     else{esmith::cgi::genStateError ($q, \%conf);}
41     exit (0);
42    
43     @@ -118,90 +123,34 @@
44     print $q->p ('');
45     print $q->startform (-method => 'POST',
46     -action => $q->url (-absolute => 1));
47     - print $q->hr;
48     - print $q->h3 ('Managing DHCP clients...');
49     + #print $q->hr;
50     + #print $q->h3 ('Managing DHCP clients...');
51    
52     print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
53     - esmith::cgi::genWidgetRow ($q, "Always check status in the manager (No is much faster, need Save/Restart) ",
54     + esmith::cgi::genWidgetRow ($q, "Always check status of computers in the panel \"Connected IP\" (No is much faster, need Save/Restart) ",
55     $q->popup_menu (-name => 'dhcp_check',
56     -values => ['disabled', 'enabled'],
57     -default => $sme_conf{'check'},
58     -labels => \%check)) );
59     - &Load_leases ($q) ;
60     - if ( 2 > 1 ) {
61     - print $q->p ($q->b (''));
62     - print $q->table ({border => 1, cellspacing => 1, cellpadding => 4,nowarp => 1});
63     - print $q->Tr (esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'IP')),
64     - esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'Network Name')),
65     - esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'Status')),
66     - esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'Start Date')),
67     - esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'End Date')),
68     - esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'MAC Address' .
69     - '</CENTER>')),
70     - );
71     -##9->netbios (ancien10)::8->mac address (ancien8)::0->ip::
72     - foreach (@liste_computer){
73     - @computer = split(/;/, $_) ;
74     - if ( $computer[0] ) {
75     - my $datedeb = $computer[2] . "-" . $computer[3] ;
76     - my $datefin = $computer[5] . "-" . $computer[6] ;
77     - $status = $q->a ({href => $q->url (-absolute => 1) .
78     - "?state=wake_up&MAC=" . $computer[8] . "&name=" .
79     - $computer[9]}, '<font color="#AAAAAA">Not checked...</font>') ;
80     - if ( $sme_conf{'check'} =~ /enabled/ ) {
81     - use Net::Ping;
82     - my($ping_obj) = Net::Ping->new("icmp");
83     - $computer[9] = uc($computer[9]) ;
84     - $computer[8] = uc($computer[8]) ;
85     - # formatage des dates
86     - $computer[3] = substr($computer[3],0,5);
87     - $computer[6] = substr($computer[6],0,5);
88     - if ($ping_obj->ping("$computer[0]")) {
89     - push(@liste_connected,$computer[9]) ;
90     - $status = "<font color='green'>ON</font>" ;
91     - #alimentation de la liste des connecté
92     - }
93     - else { $status = $q->a ({href => $q->url (-absolute => 1) .
94     - "?state=wake_up&MAC=" . $computer[8] . "&name=" .
95     - $computer[9]}, '<font color="red">Wake-Up...</font>');
96     - }
97     - }
98     - else {
99     - push(@liste_connected,$computer[9]) ;
100     - }
101     - print $q->Tr (esmith::cgi::genSmallCell ($q, "$computer[0]"),
102     - esmith::cgi::genSmallCell ($q, "$computer[9]"),
103     - esmith::cgi::genSmallCell ($q, "$status" ),
104     - esmith::cgi::genSmallCell ($q, "<CENTER>" . "$datedeb" . "</CENTER>"),
105     - esmith::cgi::genSmallCell ($q, "<CENTER>" . "$datefin" . "</CENTER>"),
106     - esmith::cgi::genSmallCell ($q, "$computer[8]"),
107     - esmith::cgi::genSmallCell ($q,
108     - $q->a ({href => $q->url (-absolute => 1)
109     - . "?state=del_lease&host=" . $computer[0] . "&name=" .
110     - $computer[9]}, 'Remove...')),
111     - esmith::cgi::genSmallCell ($q,
112     - $q->a ({href => $q->url (-absolute => 1)
113     - . "?state=message&name=" . $computer[9]}, 'WinPopup...'))
114     - );
115     - }
116     - }
117     - print '</table>';
118     - }
119     - else{
120     - print $q->p ($q->b ('There are no computer connected.'));
121     - }
122    
123     - # Refresh Liste
124     - print $q->p ;
125     + # Go to see table connected ip
126     + #print $q->p ;
127     print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
128     esmith::cgi::genTextRow ($q,
129     - $q->p ('You may want to refresh this list ?')));
130     - print $q->Tr (esmith::cgi::genButtonRow ($q,$q->submit (-name => 'state',-value => 'Refresh')));
131     -
132     + $q->p ('You may want to see all connected computer to the dhcpd server ?')));
133     + print $q->Tr (esmith::cgi::genButtonRow ($q,$q->submit (-name => 'state',-value => 'Connected IP')));
134     +
135     + # Go to scan the local network
136     + #print $q->p ;
137     + print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
138     + esmith::cgi::genTextRow ($q,
139     + $q->p ('You may want to scan your network to know how many hosts are up ?')));
140     + print $q->Tr (esmith::cgi::genButtonRow ($q,$q->submit (-name => 'state',-value => 'Scan your Network')));
141     +
142     #Global Winpopup
143     print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
144     esmith::cgi::genTextRow ($q,
145     - $q->p ('You may want to send a global WinPopup to all connected computer ?')));
146     + $q->p ('You may want to send a global WinPopup to all connected computer compatible with Net send protocol ?')));
147     print $q->Tr (esmith::cgi::genButtonRow ($q,$q->submit (-name => 'state',-value => 'Global WinPopup')));
148     print $q->hidden (-name => 'liste_connected', -override => 1, -default => "@liste_connected");
149    
150     @@ -335,41 +284,137 @@
151     my $dhcpd_dns2server = $q->param ('dhcp_dns2server');
152     my $dhcpd_gatewaycustom = $q->param ('dhcp_gatewaycustom');
153     my $dhcpd_gateway = $q->param ('dhcp_gateway');
154     -
155     ###Update SME configuration dbase
156     ##Create object to spammassassin dbase
157     my $dbh_sme = esmith::ConfigDB->open('/home/e-smith/db/configuration');
158    
159     ##Initiate get method --> create record object
160     - my $sme_record = $dbh_sme->get('dhcpd');
161     -
162     - ##Set status of service: obsolete way
163     -# $sme_record->set_prop('status'=>$dhcpd_status);
164     -# $sme_record->set_prop('check'=>$dhcpd_check);
165     -# $sme_record->set_prop('end'=>$dhcpd_end);
166     -# $sme_record->set_prop('start'=>$dhcpd_start);
167     -# $sme_record->set_prop('winscustom'=>$dhcpd_winscustom);
168     -# $sme_record->set_prop('winsserver'=>$dhcpd_winsserver);
169     -# $sme_record->set_prop('leasetime'=>$dhcpd_leasetime);
170     -# $sme_record->set_prop('dnscustom'=>$dhcpd_dnscustom);
171     -# $sme_record->set_prop('dns1server'=>$dhcpd_dns1server);
172     -# $sme_record->set_prop('dns2server'=>$dhcpd_dns2server);
173     -# $sme_record->set_prop('gatewaycustom'=>$dhcpd_gatewaycustom);
174     -# $sme_record->set_prop('gateway'=>$dhcpd_gateway);
175     + my $sme_record = $dbh_sme->get('dhcpd');
176     + #get localip of server
177     + my $local_ip = $dbh_sme->get_value('LocalIP');
178    
179     ##Set status of service
180     $sme_record->set_prop('status', $dhcpd_status);
181     $sme_record->set_prop('check' , $dhcpd_check);
182     - $sme_record->set_prop('end', $dhcpd_end);
183     - $sme_record->set_prop('start', $dhcpd_start);
184     $sme_record->set_prop('winscustom', $dhcpd_winscustom);
185     - $sme_record->set_prop('winsserver', $dhcpd_winsserver);
186     $sme_record->set_prop('leasetime' , $dhcpd_leasetime);
187     $sme_record->set_prop('dnscustom' , $dhcpd_dnscustom);
188     - $sme_record->set_prop('dns1server' , $dhcpd_dns1server);
189     - $sme_record->set_prop('dns2server' , $dhcpd_dns2server);
190     $sme_record->set_prop('gatewaycustom' , $dhcpd_gatewaycustom);
191     - $sme_record->set_prop('gateway' , $dhcpd_gateway);
192     +
193     + #checkip to the dhcpserver, perform the save in DB configuration or display an error if value != of a valid ip or if dhcp_start is greater than dhcp_end
194     + if ($dhcpd_status eq "enabled")
195     + {
196     + if ( isValidIP ($dhcpd_start) && isValidIP ($dhcpd_end))
197     + {
198     + #check if $dhcpd_start is greater than $dhcpd_end and if yes, display an error message.
199     + if (inet_aton($dhcpd_start) ge inet_aton($dhcpd_end))
200     + {
201     + esmith::cgi::genHeaderNonCacheable ($q, \%conf, 'DHCPd Settings ERRORS');
202     + print $q->h3("DHCP Server : error....Incorrect range of IPs, the DHCP Start \($dhcpd_start\) is greater than the DHCP End \($dhcpd_end\), Update unsuccessfull\n");
203     + print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
204     + " main DHCPd panel.\n");
205     + esmith::cgi::genFooter ($q);
206     + exit;
207     + }
208     + elsif ( ( (inet_aton($dhcpd_start) le inet_aton($local_ip) ) && ( inet_aton($dhcpd_end)) ge inet_aton($local_ip) ) )
209     + {
210     + #display an error if the range of dhcp server include the ip of the server address
211     + esmith::cgi::genHeaderNonCacheable ($q, \%conf, 'DHCPd Settings ERRORS');
212     + print $q->h3("DHCP Server : error....Incorrect range of IPs, the range of IP address allocation must not include the server address\($local_ip\), Update unsuccessfull\n");
213     + print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
214     + " main DHCPd panel.\n");
215     + esmith::cgi::genFooter ($q);
216     + exit;
217     + }
218     + else
219     + {
220     + #set value
221     + my $dhcpd_start = cleanIP($dhcpd_start);
222     + my $dhcpd_end = cleanIP($dhcpd_end);
223     +
224     + $sme_record->set_prop('end', $dhcpd_end);
225     + $sme_record->set_prop('start', $dhcpd_start);
226     + }
227     + }
228     + #if $dhcpd_start or $dhcpd_end are not valid ip then display an error
229     + else
230     + {
231     + esmith::cgi::genHeaderNonCacheable ($q, \%conf, 'DHCPd Settings ERRORS');
232     + print $q->h3("DHCP Server address : error....Incorrect IP $dhcpd_start and $dhcpd_end, Update unsuccessfull\n");
233     + print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
234     + " main DHCPd panel.\n");
235     + esmith::cgi::genFooter ($q);
236     + exit;
237     + }
238     + }
239     +
240     + #checkip to the winserver perform the save in DB configuration or display an error if value != of a valid ip
241     + if ($dhcpd_winscustom eq "enabled")
242     + {
243     +
244     + if ( isValidIP ($dhcpd_winsserver) )
245     + {
246     + #set value
247     + my $dhcpd_winsserver = cleanIP($dhcpd_winsserver);
248     + $sme_record->set_prop('winsserver', $dhcpd_winsserver);
249     + }
250     + else
251     + {
252     + #if $dhcpd_winsserver is not valid ip then display an error
253     + esmith::cgi::genHeaderNonCacheable ($q, \%conf, 'DHCPd Settings ERRORS');
254     + print $q->h3("WINS Server address : error....Incorrect IP $dhcpd_winsserver, Update unsuccessfull\n");
255     + print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
256     + " main DHCPd panel.\n");
257     + esmith::cgi::genFooter ($q);
258     + exit;
259     + }
260     + }
261     +
262     + #checkip to the dnsserver custom, perform the save in DB configuration or display an error if value != of a valid ip
263     + if ($dhcpd_dnscustom eq "enabled")
264     + {
265     + #check if $dhcpd_dns1server and ( $dhcpd_dns2server are valid ip or $dhcpd_dns2server = null )
266     + if ( isValidIP ($dhcpd_dns1server) && (isValidIP($dhcpd_dns2server) || ( $dhcpd_dns2server eq "") ) )
267     + {
268     + #set value
269     + my $dhcpd_dns1server = cleanIP($dhcpd_dns1server);
270     + $sme_record->set_prop('dns1server' , $dhcpd_dns1server);
271     + my $dhcpd_dns2server = cleanIP($dhcpd_dns2server);
272     + $sme_record->set_prop('dns2server' , $dhcpd_dns2server);
273     + }
274     + else
275     + {
276     + ##if $dhcpd_dns1server or $dhcpd_dns2server are not valid ip then display an error
277     + esmith::cgi::genHeaderNonCacheable ($q, \%conf, 'DHCPd Settings ERRORS');
278     + print $q->h3("Custom DNS Server address : error....Incorrect IP $dhcpd_dns1server and $dhcpd_dns2server, Update unsuccessfull\n");
279     + print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
280     + " main DHCPd panel.\n");
281     + esmith::cgi::genFooter ($q);
282     + exit;
283     + }
284     + }
285     +
286     + #checkip to the gateway_custom perform the save in DB configuration or display an error if value != of a valid ip
287     + if ($dhcpd_gatewaycustom eq "enabled")
288     + {
289     + if ( isValidIP ($dhcpd_gateway) )
290     + {
291     + #set value
292     + my $dhcpd_gateway = cleanIP($dhcpd_gateway);
293     + $sme_record->set_prop('gateway' , $dhcpd_gateway);
294     + }
295     + else
296     + {
297     + #if $dhcpd_gateway is not valid ip then display an error
298     + esmith::cgi::genHeaderNonCacheable ($q, \%conf, 'DHCPd Settings ERRORS');
299     + print $q->h3("Gateway Custom Server address : error....Incorrect IP $dhcpd_gateway, Update unsuccessfull\n");
300     + print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
301     + " main DHCPd panel.\n");
302     + esmith::cgi::genFooter ($q);
303     + exit;
304     + }
305     + }
306     +
307    
308     # - 4 expand templates
309     # changed to new sme standard signal-event
310     @@ -385,7 +430,7 @@
311     esmith::cgi::genHeaderNonCacheable ($q, \%conf, 'DHCPd Settings');
312     print $q->h3('Operation status report...');
313     print $q->p("Successfully saved settings.... DHCPd restarted !\n");
314     -print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
315     + print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
316     " main DHCPd panel.\n");
317     esmith::cgi::genFooter ($q);
318     exit;
319     @@ -513,7 +558,6 @@
320     print $q->endform;
321     esmith::cgi::genFooter ($q);
322     return;
323     -
324     }
325     #===============================================================================
326     #SUBROUTINE: Perform wake UP
327     @@ -574,7 +618,7 @@
328    
329     #Suppression des retours chariot en fin de lignes.
330     chomp $_ ;
331     -
332     +
333     #Chargement d'un tableau avec le contenu de la ligne.
334     (@detail) = split(/ /, $_) ;
335    
336     @@ -663,3 +707,195 @@
337     exit;
338     }
339    
340     +#===============================================================================
341     +#SUBROUTINE: Perform Table_IP of dhcp server
342     +#===============================================================================
343     +sub Table_IP ($) {
344     + ###Pull cgi object from parameters array
345     + my $q = shift;
346     + my @computer;
347     + my $status ;
348     +
349     + ###Pull action message, if any, from parameters array
350     + my $action_message = shift;
351     +
352     + ###Retrieve SME configuration entry for dhcpd
353     + my $dbh_sme = esmith::ConfigDB->open('/home/e-smith/db/configuration');
354     + my %sme_conf = $dbh_sme->get('dhcpd')->props;
355     +
356     + ###Display Main Panel Title
357     + esmith::cgi::genHeaderNonCacheable ($q, \%conf, 'Managing DHCP clients...');
358     +
359     + ###Check to see if we just processed a panel action. If so, display
360     + ###action message and bail.
361     + if ($action_message) {
362     + print $q->h3 ('Operation status report...');
363     + print $q->b ("$action_message");
364     + }
365     +
366     + #------------------------------------------------------------
367     + # Start DHCP client Panel
368     + #------------------------------------------------------------
369     + print $q->p ('');
370     + print $q->startform (-method => 'POST',
371     + -action => $q->url (-absolute => 1));
372     + #print $q->hr;
373     + #print $q->h3 ('Managing DHCP clients...');
374     +
375     + print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
376     + esmith::cgi::genWidgetRow ($q, "Always check status of connected IP in the manager (No is much faster, need Save/Restart) ",
377     + $q->popup_menu (-name => 'dhcp_check',
378     + -values => ['disabled', 'enabled'],
379     + -default => $sme_conf{'check'},
380     + -labels => \%check)) );
381     + # Refresh Liste
382     + #print $q->p ;
383     + print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
384     + esmith::cgi::genTextRow ($q,
385     + $q->p ('You may want to refresh this list ?')));
386     + print $q->Tr (esmith::cgi::genButtonRow ($q,$q->submit (-name => 'state',-value => 'Refresh')));
387     +
388     + #print $q->hr;
389     + #print $q->h3 ('Saving modification and restart the daemon...');
390     + print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
391     + esmith::cgi::genTextRow ($q,
392     + $q->p ('After changing the check setting above, you must save and' .
393     + ' restart dhcpd.')));
394     +
395     + print $q->Tr (esmith::cgi::genButtonRow ($q,
396     + $q->submit (-name => 'action', -value => 'Save/Restart')));
397     + print $q->hidden (-name => 'state', -override => 1, -default => 'main_save');
398     + print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
399     + " main DHCPd panel.\n");
400     +
401     + &Load_leases ($q) ;
402     + if ( 2 > 1 ) {
403     + print $q->p ($q->b (''));
404     + print $q->table ({border => 1, cellspacing => 1, cellpadding => 4,nowarp => 1});
405     + print $q->Tr (esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'IP')),
406     + esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'Network Name')),
407     + esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'Status')),
408     + esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'Start Date')),
409     + esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'End Date')),
410     + esmith::cgi::genSmallCell ($q, $q->p ( '<center>' . 'MAC Address' .
411     + '</CENTER>')),
412     + );
413     +##9->netbios (ancien10)::8->mac address (ancien8)::0->ip::
414     + foreach (@liste_computer){
415     + @computer = split(/;/, $_) ;
416     + if ( $computer[0] ) {
417     +
418     + my $datedeb = $computer[2] . "-" . $computer[3] ;
419     + my $datefin = $computer[5] . "-" . $computer[6] ;
420     + $status = $q->a ({href => $q->url (-absolute => 1) .
421     + "?state=wake_up&MAC=" . $computer[8] . "&name=" .
422     + $computer[9]}, '<font color="#AAAAAA">Not checked...</font>') ;
423     + if ( $sme_conf{'check'} =~ /enabled/ ) {
424     + use Net::Ping;
425     + my($ping_obj) = Net::Ping->new("icmp");
426     + $computer[9] = uc($computer[9]) ;
427     + $computer[8] = uc($computer[8]) ;
428     + # formatage des dates
429     + $computer[3] = substr($computer[3],0,5);
430     + $computer[6] = substr($computer[6],0,5);
431     + if ($ping_obj->ping("$computer[0]")) {
432     + push(@liste_connected,$computer[9]) ;
433     + $status = "<font color='green'>ON</font>" ;
434     + #alimentation de la liste des connecté
435     + }
436     + else { $status = $q->a ({href => $q->url (-absolute => 1) .
437     + "?state=wake_up&MAC=" . $computer[8] . "&name=" .
438     + $computer[9]}, '<font color="red">Wake-Up...</font>');
439     + }
440     + }
441     + else {
442     + push(@liste_connected,$computer[9]) ;
443     +
444     + }
445     + print $q->Tr (esmith::cgi::genSmallCell ($q, "$computer[0]"),
446     + esmith::cgi::genSmallCell ($q, "$computer[9]"),
447     + esmith::cgi::genSmallCell ($q, "$status" ),
448     + esmith::cgi::genSmallCell ($q, "<CENTER>" . "$datedeb" . "</CENTER>"),
449     + esmith::cgi::genSmallCell ($q, "<CENTER>" . "$datefin" . "</CENTER>"),
450     + esmith::cgi::genSmallCell ($q, "$computer[8]"),
451     + esmith::cgi::genSmallCell ($q,
452     + $q->a ({href => $q->url (-absolute => 1)
453     + . "?state=del_lease&host=" . $computer[0] . "&name=" .
454     + $computer[9]}, 'Remove...')),
455     + esmith::cgi::genSmallCell ($q,
456     + $q->a ({href => $q->url (-absolute => 1)
457     + . "?state=message&name=" . $computer[9]}, 'WinPopup...'))
458     + );
459     + }
460     + }
461     + print '</table>';
462     + }
463     + else{
464     + print $q->p ($q->b ('There are no computer connected.'));
465     + }
466     +
467     + print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
468     + " main DHCPd panel.\n");
469     + esmith::cgi::genFooter ($q);
470     + exit;
471     +}
472     +
473     +
474     +#===============================================================================
475     +#SUBROUTINE: Scan The Local Network
476     +#===============================================================================
477     +sub Scan_Local_Network ($q) {
478     +
479     + esmith::cgi::genHeaderNonCacheable ($q, \%conf, 'Scanning your network, the time needed depends of your subnet mask');
480     + my $nmap_sme = esmith::ConfigDB->open('/home/e-smith/db/configuration');
481     + my $mask = $nmap_sme->get_value('LocalNetmask');
482     + my $network = $nmap_sme->get_prop('InternalInterface','Network');
483     +
484     + sub dec2bin {
485     + my $str = unpack("B32", pack("N", shift));
486     + return $str;
487     +}
488     +
489     +sub netmask2cidr {
490     + my ($mask, $network) = @_;
491     + my @octet = split (/\./, $mask);
492     + my @bits;
493     + my $binmask;
494     + my $binoct;
495     + my $bitcount=0;
496     +
497     + foreach (@octet) {
498     + $binoct = dec2bin($_);
499     + $binmask = $binmask . substr $binoct, -8;
500     + }
501     +
502     + # let's count the 1s
503     + @bits = split (//,$binmask);
504     + foreach (@bits) {
505     + if ($_ eq "1") {
506     + $bitcount++;
507     + }
508     + }
509     +
510     + my $cidr = $network . "/" . $bitcount;
511     + return $cidr;
512     +}
513     +
514     +
515     + my $cidr = netmask2cidr($mask, $network);
516     +
517     + print $q->p ;
518     + print $q->h3("Your subnet appears to be $cidr and your netmask is $mask, please wait\n");
519     + print $q->p ;
520     +
521     + foreach (`/usr/bin/nmap -T4 -sP $cidr| /bin/grep -E "finished|Host"| /bin/sed -e 's/Nmap/Scanning/g'`) {
522     +
523     + print $q->br($_);}
524     +
525     + print $q->p ;
526     +
527     + print $q->p("<b><a href=dhcpd>Click Here</a></b> to return to" .
528     + " main DHCPd panel.\n");
529     + esmith::cgi::genFooter ($q);
530     + exit;
531     + }

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed