Feature #535
DHCP reservation validation
| Status: | CLOSED | Start date: | 10/03/2011 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | - | % Done: | 100% | |
| Category: | nethserver-dnsmasq | |||
| Target version: | DEV4 | |||
| Resolution: | NEEDINFO: |
Description
The module for Nethgui must permit the creation of host-ip association.
IP can be local, remote or self (the server).
Possibile ip validation:
sub not_in_dhcp_range
{
my $self = shift;
my $address = shift;
my $status = $db->get('dhcpd')->prop('status') || "disabled";
return "OK" unless $status eq "enabled";
my $start = $db->get('dhcpd')->prop('start');
my $end = $db->get('dhcpd')->prop('end');
return (esmith::util::IPquadToAddr($start)
<= esmith::util::IPquadToAddr($address)
&&
esmith::util::IPquadToAddr($address)
<= esmith::util::IPquadToAddr($end)) ?
"ADDR_IN_DHCP_RANGE" :
"OK";
}
sub not_taken
{
my $self = shift;
my $q = $self->{cgi};
my $localip = $q->param('local_ip');
my $server_localip = $db->get_value('LocalIP') || '';
my $server_gateway = $db->get_value('GatewayIP') || '';
my $server_extip = $db->get_value('ExternalIP') || '';
$self->debug_msg("\$localip is $localip");
$self->debug_msg("\$server_localip is $server_localip");
$self->debug_msg("\$server_gateway is $server_gateway");
$self->debug_msg("\$server_extip is $server_extip");
if ($localip eq $server_localip)
{
return 'ERR_IP_IS_LOCAL_OR_GATEWAY';
}
elsif ($localip eq $server_gateway)
{
return 'ERR_IP_IS_LOCAL_OR_GATEWAY';
}
elsif (($db->get_value('SystemMode') ne 'serveronly') &&
($server_extip eq $localip))
{
return 'ERR_IP_IS_LOCAL_OR_GATEWAY';
}
elsif ($localip eq '127.0.0.1')
{
return 'ERR_IP_IS_LOCAL_OR_GATEWAY';
}
else
{
return 'OK';
}
}
sub must_be_local
{
my $self = shift;
my $q = $self->{cgi};
my $localip = $q->param('local_ip');
# Make sure that the IP is indeed local.
my $ndb = esmith::NetworksDB->open_ro;
my @local_list = $ndb->local_access_spec;
foreach my $spec (@local_list)
{
next if $spec eq '127.0.0.1';
if (Net::IPv4Addr::ipv4_in_network($spec, $localip))
{
return 'OK';
}
}
# Not OK. The IP is not on any of our local networks.
return 'ERR_IP_NOT_LOCAL';
}
Related issues
Associated revisions
Hosts UI: changed validator of hostname field to HOSTNAME_SIMPLE. Refs #535 - DHCP reservation validation
Hosts UI module. Closes #535 - Dhcp reservation validation
History
#1
Updated by Giacomo Sanchietti almost 10 years ago
- Project changed from 33 to 9
#2
Updated by Giacomo Sanchietti almost 10 years ago
- Status changed from NEW to ON_DEV
- % Done changed from 0 to 50
Gui is ready.
Tests and some validation are still needed.
#3
Updated by Giacomo Sanchietti almost 10 years ago
- Subject changed from Add module for NethGUI to Add Hosts module for NethGUI
#4
Updated by Giacomo Sanchietti over 9 years ago
- Subject changed from Add Hosts module for NethGUI to Hosts module validation
#5
Updated by Giacomo Sanchietti over 9 years ago
- Subject changed from Hosts module validation to DHCP reservation validation
#6
Updated by Davide Principi over 9 years ago
- Target version set to DEV2
#7
Updated by Davide Principi over 9 years ago
- Target version changed from DEV2 to DEV3
#8
Updated by Davide Principi over 9 years ago
- Target version changed from DEV3 to DEV4
#9
Updated by Davide Principi over 9 years ago
- Status changed from ON_DEV to MODIFIED
- % Done changed from 50 to 100
Applied in changeset commit:a3f7691c4001ff41b5863d1515bd8f50d7d7941c.
#10
Updated by Davide Principi over 9 years ago
- Assignee set to Davide Principi
#11
Updated by Davide Principi over 8 years ago
- Project changed from 9 to NethServer 6