show and edit broadcast
[pxelator] / lib / PXElator / httpd.pm
index c01a1f4..c6c5300 100644 (file)
@@ -238,7 +238,7 @@ warn "XXX pids = ", dump( $daemons::pids );
                        , 'new_clients' => qq|<input type=text name=new_clients size=3 value="$server::new_clients">|
                );
 
-               foreach my $editable ( 'ip', 'netmask', 'ip_from', 'ip_to', 'domain' ) {
+               foreach my $editable ( 'ip', 'bcast', 'netmask', 'ip_from', 'ip_to', 'domain' ) {
                        my $v = eval '$server::' . $editable;
                        push @table, ( $editable, qq|<input type=text name=$editable value="$v">| );
                }
@@ -259,7 +259,7 @@ warn "XXX pids = ", dump( $daemons::pids );
 
        } elsif ( $path =~ m!^/client(?:/$RE{net}{IPv4}{-keep})?! ) {
                my $ip = $1;
-               $title = $ip;
+               $title = $ip if $ip;
 
                if ( $param->{action} eq 'remove' ) {
                        client::remove( $param->{change_ip} );
@@ -480,7 +480,21 @@ sub start {
                my $client = $server->accept() || next; # ALARM trickle us
                my $request = <$client>;
 
-               warn "request $request\n" if $debug;
+               my $headers;
+
+               while ( my $header = <$client> ) {
+                       chomp $header;
+                       last if $header =~ m{^\s*$};
+                       my ( $n, $v ) = split(/:\s*/, $header);
+                       $headers->{ lc $n } = $v;
+               }
+
+               if ( my $host = $headers->{host} ) {
+                       $url = 'http://' . $host;
+                       $url .= ":$port" unless $url =~ m{:\d+$};
+               }
+
+               warn "## $url ## $request", dump( $headers ) if $debug;
 
                if ($request =~ m{^GET (/.*) HTTP/1.[01]}) {
                        my $path = $1;