start each server individually and forget about screen
authorDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 6 Aug 2009 15:36:13 +0000 (15:36 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 6 Aug 2009 15:36:13 +0000 (15:36 +0000)
(since we run httpd as root now)

lib/PXElator/httpd.pm
lib/PXElator/screen.pm [deleted file]

index b9e42a3..864684a 100644 (file)
@@ -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 <tt>$pids->{screen}</tt>|        : 'start';
-               my $kvm    = $pids->{kvm}    ? qq|stop <tt>$pids->{kvm}</tt>|           :
-                                        $pids->{screen} ? qq|start|                                                    : qq|start screen first|;
-
                my @rows = (
                        'debug',        qq|<a href=/our/debug/| . boolean::toggle($debug) . qq|>$debug</a>|,
                );
@@ -245,7 +246,7 @@ sub get_request {
                warn $@ if $@;
                print $client $redirect, qq|<big>$1 = $2</big><br>Location: <a href="$url">$url</a>|;
                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 (file)
index bea623a..0000000
+++ /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;