--- lib/PXElator/httpd.pm 2009/08/06 15:16:06 157
+++ lib/PXElator/httpd.pm 2009/08/06 15:36:13 158
@@ -102,7 +102,6 @@
use boolean;
-use screen;
use kvm;
$SIG{CHLD} = 'IGNORE';
@@ -130,10 +129,16 @@
# child
my $invoke = 'start';
$invoke = $1 if $daemon =~ s{/(.+)}{};
- my $eval = $daemon . '::' . $invoke . '(' . ( @_ ? dump(@_) : '' ) . ')';
- warn "eval $eval";
- eval $eval;
- warn "can't start $daemon: $@" if $@;
+ if ( $daemon =~ m{dhcpd|tftpd|dnsd} ) {
+ my $exec = "perl -I$server::base_dir/lib -I$server::base_dir/lib/PXElator -M$daemon -e ${daemon}::${invoke}";
+ warn "exec $exec";
+ exec "xterm -T $daemon -n $daemon -e $exec";
+ } else {
+ my $eval = $daemon . '::' . $invoke . '(' . ( @_ ? dump(@_) : '' ) . ')';
+ warn "eval $eval";
+ eval $eval;
+ warn "can't start $daemon: $@" if $@;
+ }
exit;
} else {
die "fork error $!";
@@ -155,10 +160,6 @@
warn "static $found" if $debug;
} elsif ( $path eq '/' ) {
- my $screen = $pids->{screen} ? qq|stop $pids->{screen}| : 'start';
- my $kvm = $pids->{kvm} ? qq|stop $pids->{kvm}| :
- $pids->{screen} ? qq|start| : qq|start screen first|;
-
my @rows = (
'debug', qq|$debug|,
);
@@ -245,7 +246,7 @@
warn $@ if $@;
print $client $redirect, qq|$1 = $2
Location: $url|;
server::debug( $debug ) if $1 eq 'debug';
- } elsif ( $path =~ m{^/start_stop/((?:screen|kvm).*)} ) { # XXX we don't want to stop all classes
+ } elsif ( $path =~ m{^/start_stop/(\S+)} ) {
print $client $redirect, start_stop($1);
} elsif ( $path =~ m{^/action/([^/]+)/(.+)} ) {
$1->$2();
@@ -288,7 +289,9 @@
print "url $url\n";
start_stop 'browser', $url;
- start_stop 'screen';
+ start_stop 'dhcpd';
+ start_stop 'tftpd';
+ start_stop 'dnsd';
start_stop 'kvm';
while (1) {