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
    Updated by Giacomo Sanchietti almost 10 years ago
    - Project changed from 33 to 9
#2
     Updated by Giacomo Sanchietti almost 10 years ago
    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
    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
    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
    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
    Updated by Davide Principi over 9 years ago
    - Target version set to DEV2
#7
     Updated by Davide Principi over 9 years ago
    Updated by Davide Principi over 9 years ago
    - Target version changed from DEV2 to DEV3
#8
     Updated by Davide Principi over 9 years ago
    Updated by Davide Principi over 9 years ago
    - Target version changed from DEV3 to DEV4
#9
     Updated by Davide Principi over 9 years ago
    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
    Updated by Davide Principi over 9 years ago
    - Assignee set to Davide Principi
#11
     Updated by Davide Principi over 8 years ago
    Updated by Davide Principi over 8 years ago
    - Project changed from 9 to NethServer 6