@ -78,187 +78,6 @@ function ConvertToSecurity( $security ) {
}
}
/**
*
*
*/
function DisplayDHCPConfig() {
exec( 'cat '. RASPI_DNSMASQ_CONFIG, $return );
$conf = ParseConfig($return);
$arrRange = explode( ",", $conf['dhcp-range'] );
$RangeStart = $arrRange[0];
$RangeEnd = $arrRange[1];
$RangeMask = $arrRange[2];
preg_match( '/([0-9]*)([a-z])/i', $arrRange[3], $arrRangeLeaseTime );
switch( $arrRangeLeaseTime[2] ) {
case "h":
$hselected = " selected";
break;
case "m":
$mselected = " selected";
break;
case "d":
$dselected = " selected";
break;
}
exec( 'pidof dnsmasq | wc -l',$dnsmasq );
if( $dnsmasq[0] == 0 ) {
$status = '< div class = "alert alert-warning alert-dismissable" > Dnsmasq is not running< button type = "button" class = "close" data-dismiss = "alert" aria-hidden = "true" > × < / button > < / div > ';
} else {
$status = '< div class = "alert alert-success alert-dismissable" > Dnsmasq is running< button type = "button" class = "close" data-dismiss = "alert" aria-hidden = "true" > × < / button > < / div > ';
}
echo '
< div class = "row" >
< div class = "col-lg-12" >
< div class = "panel panel-primary" >
< div class = "panel-heading" > < i class = "fa fa-exchange fa-fw" > < / i > Configure DHCP
< / div >
<!-- /.panel - heading -->
< div class = "panel-body" >
<!-- Nav tabs -->
< ul class = "nav nav-tabs" >
< li class = "active" > < a href = "#server-settings" data-toggle = "tab" > Server settings< / a >
< / li >
< li > < a href = "#client-list" data-toggle = "tab" > Client list< / a >
< / li >
< / ul >
<!-- Tab panes -->
< div class = "tab-content" >
< p > ' .$status. '< / p >
< div class = "tab-pane fade in active" id = "server-settings" >
< h4 > DHCP server settings< / h4 >
< form method = "POST" action = "?page=dhcpd_conf" >
< div class = "row" >
< div class = "form-group col-md-4" >
< label for = "code" > Interface< / label >
< select class = "form-control" name = "interface" > ';
exec( "cat /proc/net/dev | tail -n -3 | awk -F :\ ' { print $1 } ' | tr -d ' '", $interfaces );
foreach( $interfaces as $int ) {
$select = '';
if( $int == $conf['interface'] ) {
$select = " selected";
}
echo '< option value = "'.$int.'" ' . $ select . ' > '.$int.'< / option > ';
}
echo'< / select >
< / div >
< / div >
< div class = "row" >
< div class = "form-group col-md-4" >
< label for = "code" > Starting IP Address< / label >
< input type = "text" class = "form-control" name = "RangeStart" value = "'.$RangeStart.'" / >
< / div >
< / div >
< div class = "row" >
< div class = "form-group col-md-4" >
< label for = "code" > Ending IP Address< / label >
< input type = "text" class = "form-control" name = "RangeEnd" value = "'.$RangeEnd.'" / >
< / div >
< / div >
< div class = "row" >
< div class = "form-group col-xs-2 col-sm-2" >
< label for = "code" > Lease Time< / label >
< input type = "text" class = "form-control" name = "RangeLeaseTime" value = "'.$arrRangeLeaseTime[1].'" / >
< / div >
< div class = "col-xs-2 col-sm-2" >
< label for = "code" > Interval< / label >
< select name = "RangeLeaseTimeUnits" class = "form-control" > < option value = "m" ' . $ mselected . ' > Minutes< / option > < option value = "h" ' . $ hselected . ' > Hours< / option > < option value = "d" ' . $ dselected . ' > Days< / option > < option value = "infinite" > Infinite< / option > < / select >
< / div >
< / div >
< input type = "submit" class = "btn btn-outline btn-primary" value = "Save settings" name = "savedhcpdsettings" / > ';
if ( $dnsmasq[0] == 0 ) {
echo'< input type = "submit" class = "btn btn-success" value = "Start dnsmasq" name = "startdhcpd" / > ';
} else {
echo '< input type = "submit" class = "btn btn-warning" value = "Stop dnsmasq" name = "stopdhcpd" / > ';
}
echo'
< / form >
< / div > <!-- /.tab - pane -->
< div class = "tab-pane fade in" id = "client-list" >
< h4 > Client list< / h4 >
< div class = "col-lg-12" >
< div class = "panel panel-default" >
< div class = "panel-heading" >
Active DHCP leases
< / div >
<!-- /.panel - heading -->
< div class = "panel-body" >
< div class = "table-responsive" >
< table class = "table table-hover" >
< thead >
< tr >
< th > Expire time< / th >
< th > MAC Address< / th >
< th > IP Address< / th >
< th > Host name< / th >
< th > Client ID< / th >
< / tr >
< / thead >
< tbody >
< tr > ';
exec( 'cat ' . RASPI_DNSMASQ_LEASES, $leases );
foreach( $leases as $lease ) {
$lease_items = explode(' ', $lease);
foreach( $lease_items as $lease_item ) {
echo '< td > ' . $lease_item . '< / td > ';
}
echo '< / tr > ';
};
echo '
< / tr >
< / tbody >
< / table >
< / div > <!-- /.table - responsive -->
< / div > <!-- /.panel - body -->
< / div > <!-- /.panel -->
< / div > <!-- /.col - lg - 6 --> ';
if( isset( $_POST['savedhcpdsettings'] ) ) {
$config = 'interface='.$_POST['interface'].'
dhcp-range='.$_POST['RangeStart'].','.$_POST['RangeEnd'].',255.255.255.0,'.$_POST['RangeLeaseTime'].''.$_POST['RangeLeaseTimeUnits'];
exec( 'echo "'.$config.'" > /tmp/dhcpddata',$temp );
system( 'sudo cp /tmp/dhcpddata '. RASPI_DNSMASQ_CONFIG, $return );
if( $return == 0 ) {
echo "Dnsmasq configuration updated successfully";
} else {
echo "Dnsmasq configuration failed to be updated";
}
}
if( isset( $_POST['startdhcpd'] ) ) {
$line = system('sudo /etc/init.d/dnsmasq start',$return);
echo "Attempting to start dnsmasq";
}
if( isset($_POST['stopdhcpd'] ) ) {
$line = system('sudo /etc/init.d/dnsmasq stop',$return);
echo "Stopping dnsmasq";
}
echo '
< / div > <!-- /.tab - pane -->
< / div > <!-- /.tab - content -->
< / div > <!-- ./ Panel body -->
< div class = "panel-footer" > Information provided by Dnsmasq< / div >
< / div > <!-- /.panel - primary -->
< / div > <!-- /.col - lg - 12 -->
< / div > <!-- /.row -->
';
}
/**
*
*
@ -647,6 +466,187 @@ function DisplayHostAPDConfig(){
<?php
}
/**
*
*
*/
function DisplayDHCPConfig() {
exec( 'cat '. RASPI_DNSMASQ_CONFIG, $return );
$conf = ParseConfig($return);
$arrRange = explode( ",", $conf['dhcp-range'] );
$RangeStart = $arrRange[0];
$RangeEnd = $arrRange[1];
$RangeMask = $arrRange[2];
preg_match( '/([0-9]*)([a-z])/i', $arrRange[3], $arrRangeLeaseTime );
switch( $arrRangeLeaseTime[2] ) {
case "h":
$hselected = " selected";
break;
case "m":
$mselected = " selected";
break;
case "d":
$dselected = " selected";
break;
}
exec( 'pidof dnsmasq | wc -l',$dnsmasq );
if( $dnsmasq[0] == 0 ) {
$status = '< div class = "alert alert-warning alert-dismissable" > Dnsmasq is not running< button type = "button" class = "close" data-dismiss = "alert" aria-hidden = "true" > × < / button > < / div > ';
} else {
$status = '< div class = "alert alert-success alert-dismissable" > Dnsmasq is running< button type = "button" class = "close" data-dismiss = "alert" aria-hidden = "true" > × < / button > < / div > ';
}
?>
< div class = "row" >
< div class = "col-lg-12" >
< div class = "panel panel-primary" >
< div class = "panel-heading" > < i class = "fa fa-exchange fa-fw" > < / i > Configure DHCP
< / div >
<!-- /.panel - heading -->
< div class = "panel-body" >
<!-- Nav tabs -->
< ul class = "nav nav-tabs" >
< li class = "active" > < a href = "#server-settings" data-toggle = "tab" > Server settings< / a >
< / li >
< li > < a href = "#client-list" data-toggle = "tab" > Client list< / a >
< / li >
< / ul >
<!-- Tab panes -->
< div class = "tab-content" >
< p > <?php echo $status ; ?> </ p >
< div class = "tab-pane fade in active" id = "server-settings" >
< h4 > DHCP server settings< / h4 >
< form method = "POST" action = "?page=dhcpd_conf" >
< div class = "row" >
< div class = "form-group col-md-4" >
< label for = "code" > Interface< / label >
< select class = "form-control" name = "interface" >
<?php
exec( "cat /proc/net/dev | tail -n -3 | awk -F :\ ' { print $1 } ' | tr -d ' '", $interfaces );
foreach( $interfaces as $int ) {
$select = '';
if( $int == $conf['interface'] ) {
$select = " selected";
}
echo '< option value = "'.$int.'" ' . $ select . ' > '.$int.'< / option > ';
}
?>
< / select >
< / div >
< / div >
< div class = "row" >
< div class = "form-group col-md-4" >
< label for = "code" > Starting IP Address< / label >
< input type = "text" class = "form-control" name = "RangeStart" value = " <?php echo $RangeStart ; ?> " />
< / div >
< / div >
< div class = "row" >
< div class = "form-group col-md-4" >
< label for = "code" > Ending IP Address< / label >
< input type = "text" class = "form-control" name = "RangeEnd" value = " <?php echo $RangeEnd ; ?> " />
< / div >
< / div >
< div class = "row" >
< div class = "form-group col-xs-2 col-sm-2" >
< label for = "code" > Lease Time< / label >
< input type = "text" class = "form-control" name = "RangeLeaseTime" value = " <?php echo $arrRangeLeaseTime [ 1 ]; ?> " />
< / div >
< div class = "col-xs-2 col-sm-2" >
< label for = "code" > Interval< / label >
< select name = "RangeLeaseTimeUnits" class = "form-control" >< option value = "m" <?php echo $mselected ; ?> > Minutes</ option >< option value = "h" <?php echo $hselected ; ?> > Hours</ option >< option value = "d" <?php echo $dselected ; ?> > Days</ option >< option value = "infinite" > Infinite</ option ></ select >
< / div >
< / div >
< input type = "submit" class = "btn btn-outline btn-primary" value = "Save settings" name = "savedhcpdsettings" / >
<?php
if ( $dnsmasq[0] == 0 ) {
echo'< input type = "submit" class = "btn btn-success" value = "Start dnsmasq" name = "startdhcpd" / > ';
} else {
echo '< input type = "submit" class = "btn btn-warning" value = "Stop dnsmasq" name = "stopdhcpd" / > ';
}
?>
< / form >
< / div > <!-- /.tab - pane -->
< div class = "tab-pane fade in" id = "client-list" >
< h4 > Client list< / h4 >
< div class = "col-lg-12" >
< div class = "panel panel-default" >
< div class = "panel-heading" >
Active DHCP leases
< / div >
<!-- /.panel - heading -->
< div class = "panel-body" >
< div class = "table-responsive" >
< table class = "table table-hover" >
< thead >
< tr >
< th > Expire time< / th >
< th > MAC Address< / th >
< th > IP Address< / th >
< th > Host name< / th >
< th > Client ID< / th >
< / tr >
< / thead >
< tbody >
< tr >
<?php
exec( 'cat ' . RASPI_DNSMASQ_LEASES, $leases );
foreach( $leases as $lease ) {
$lease_items = explode(' ', $lease);
foreach( $lease_items as $lease_item ) {
echo '< td > ' . $lease_item . '< / td > ';
}
echo '< / tr > ';
};
?>
< / tr >
< / tbody >
< / table >
< / div > <!-- /.table - responsive -->
< / div > <!-- /.panel - body -->
< / div > <!-- /.panel -->
< / div > <!-- /.col - lg - 6 --> '
<?php
if( isset( $_POST['savedhcpdsettings'] ) ) {
$config = 'interface='.$_POST['interface'].'
dhcp-range='.$_POST['RangeStart'].','.$_POST['RangeEnd'].',255.255.255.0,'.$_POST['RangeLeaseTime'].''.$_POST['RangeLeaseTimeUnits'];
exec( 'echo "'.$config.'" > /tmp/dhcpddata',$temp );
system( 'sudo cp /tmp/dhcpddata '. RASPI_DNSMASQ_CONFIG, $return );
if( $return == 0 ) {
echo "Dnsmasq configuration updated successfully";
} else {
echo "Dnsmasq configuration failed to be updated";
}
}
if( isset( $_POST['startdhcpd'] ) ) {
$line = system('sudo /etc/init.d/dnsmasq start',$return);
echo "Attempting to start dnsmasq";
}
if( isset($_POST['stopdhcpd'] ) ) {
$line = system('sudo /etc/init.d/dnsmasq stop',$return);
echo "Stopping dnsmasq";
}
?>
< / div > <!-- /.tab - pane -->
< / div > <!-- /.tab - content -->
< / div > <!-- ./ Panel body -->
< div class = "panel-footer" > Information provided by Dnsmasq< / div >
< / div > <!-- /.panel - primary -->
< / div > <!-- /.col - lg - 12 -->
< / div > <!-- /.row -->
<?php
}
/**
*