bea623a20d086a91a160e8993c510834b41fd7b5
[pxelator] / lib / PXElator / screen.pm
1 package screen;
2
3 use warnings;
4 use strict;
5 use autodie;
6
7 use File::Slurp;
8
9 use log;
10 use server;
11
12 our $debug = server::debug;
13
14 my $screenrc = '/tmp/screenrc';
15
16 sub screen_daemon {
17         my $daemon = shift;
18         my $run = "sudo perl -I$server::base_dir/lib/PXElator -I$server::base_dir/lib -M$daemon -e " . $daemon . "::start";
19         warn "screen_daemon $daemon $run\n";
20 qq|
21
22 split
23
24 screen -t $daemon $run
25 logfile $log::dir/$daemon.log
26 log on
27
28 focus down
29 |}
30
31 write_file $screenrc, qq|
32
33 autodetach off
34 altscreen off
35 defscrollback 10000
36 startup_message off
37
38 sessionname PXElator
39
40 |
41 . screen_daemon('dhcpd')
42 . screen_daemon('tftpd')
43 . screen_daemon('dnsd')
44 #. screen_daemon('httpd')
45 . qq|remove|;
46 ;
47
48 warn "screenrc $screenrc ", -s $screenrc if $debug;
49
50 sub start {
51
52         my $screen="screen -R PXElator -c $screenrc";
53         warn $screen;
54
55         chdir $server::base_dir;
56
57         if ( defined $ENV{DISPLAY} ) {
58                 exec "xterm -fg yellow -e $screen";
59         } else {
60                 exec $screen;
61         }
62
63 }
64
65 1;