--- lib/PXElator/httpd.pm 2009/08/27 19:03:56 314 +++ lib/PXElator/httpd.pm 2009/08/28 16:41:46 322 @@ -208,17 +208,32 @@ ) ; } elsif ( $path =~ m!^/client(?:/$RE{net}{IPv4}{-keep})?! ) { - my $ip = $1 || $client->peerhost; + my $ip = $1; if ( my $new_ip = $param->{change_ip} ) { client::change_ip( $ip, $new_ip ); $ip = $new_ip; } - my $ip_short = (split(/\./, $ip, 4))[3]; + if ( ! $ip ) { + my $peer_ip = $client->peerhost; - # if ( $ip ne $server::ip ) -- not flexible enough for tunnel endpoints - if ( $ip_short >= $server::ip_from && $ip_short <= $server::ip_to ) { +warn "XXX peer_ip $peer_ip"; + + my $netmask = ip::to_int $server::netmask; + my $network = ip::to_int $server::ip & $netmask; + my ( $from, $to ) = ( $network | $server::ip_from, $network | $server::ip_to ); + my $ip_int = ip::to_int $peer_ip; + +warn dump( $ip_int, $from, $to ); + + # show edit for our our class + if ( $ip_int >= ( $network | $server::ip_from ) && $ip_int <= ( $network | $server::ip_to ) ) { + $ip = $peer_ip; + } + } + + if ( $ip && $ip ne $server::ip ) { my $hostname = client::conf( $ip, 'hostname' => $param->{hostname} ); my @table = ( @@ -280,13 +295,7 @@ , delete $conf->{deploy} , ( %$conf ? html::pre_dump( $conf ) : qq|nmap| ) ); - } - sort { ip::to_int($a) cmp ip::to_int($b) } - map { - my $ip = $_; - $ip =~ s{^.+/ip/}{}; - $ip; - } glob("$server::conf/ip/*") + } client::all_ips ) ; }