From: Dobrica Pavlinusic Date: Thu, 6 Aug 2009 15:36:13 +0000 (+0000) Subject: start each server individually and forget about screen X-Git-Url: http://git.rot13.org/?a=commitdiff_plain;h=4af4c5eb555e05dbfe28e123cad0be68644a7414;p=pxelator start each server individually and forget about screen (since we run httpd as root now) --- diff --git a/lib/PXElator/httpd.pm b/lib/PXElator/httpd.pm index b9e42a3..864684a 100644 --- a/lib/PXElator/httpd.pm +++ b/lib/PXElator/httpd.pm @@ -102,7 +102,6 @@ sub static { use boolean; -use screen; use kvm; $SIG{CHLD} = 'IGNORE'; @@ -130,10 +129,16 @@ sub start_stop { # 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 @@ sub get_request { 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 @@ sub get_request { 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 @@ sub start { 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) { diff --git a/lib/PXElator/screen.pm b/lib/PXElator/screen.pm deleted file mode 100644 index bea623a..0000000 --- a/lib/PXElator/screen.pm +++ /dev/null @@ -1,65 +0,0 @@ -package screen; - -use warnings; -use strict; -use autodie; - -use File::Slurp; - -use log; -use server; - -our $debug = server::debug; - -my $screenrc = '/tmp/screenrc'; - -sub screen_daemon { - my $daemon = shift; - my $run = "sudo perl -I$server::base_dir/lib/PXElator -I$server::base_dir/lib -M$daemon -e " . $daemon . "::start"; - warn "screen_daemon $daemon $run\n"; -qq| - -split - -screen -t $daemon $run -logfile $log::dir/$daemon.log -log on - -focus down -|} - -write_file $screenrc, qq| - -autodetach off -altscreen off -defscrollback 10000 -startup_message off - -sessionname PXElator - -| -. screen_daemon('dhcpd') -. screen_daemon('tftpd') -. screen_daemon('dnsd') -#. screen_daemon('httpd') -. qq|remove|; -; - -warn "screenrc $screenrc ", -s $screenrc if $debug; - -sub start { - - my $screen="screen -R PXElator -c $screenrc"; - warn $screen; - - chdir $server::base_dir; - - if ( defined $ENV{DISPLAY} ) { - exec "xterm -fg yellow -e $screen"; - } else { - exec $screen; - } - -} - -1;