Parent Directory | Revision Log
implemented correct start/stop logic (which now works!) and pushed debug state into $server::debug and file conf/debug for shared state between servers
1 | dpavlin | 49 | 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 | dpavlin | 67 | our $debug = server::debug; |
13 | |||
14 | dpavlin | 49 | 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 "# $daemon $run\n"; | ||
20 | qq| | ||
21 | |||
22 | split | ||
23 | |||
24 | screen -t $daemon $run | ||
25 | logfile $log::dir/pxelator.$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 | dpavlin | 53 | #. screen_daemon('httpd') |
44 | dpavlin | 49 | . qq|remove|; |
45 | ; | ||
46 | |||
47 | dpavlin | 61 | warn "screenrc $screenrc ", -s $screenrc; |
48 | dpavlin | 49 | |
49 | sub start { | ||
50 | |||
51 | my $screen="screen -R PXElator -c $screenrc"; | ||
52 | warn $screen; | ||
53 | |||
54 | chdir $server::base_dir; | ||
55 | |||
56 | if ( defined $ENV{DISPLAY} ) { | ||
57 | exec "xterm -e $screen"; | ||
58 | } else { | ||
59 | exec $screen; | ||
60 | } | ||
61 | |||
62 | } | ||
63 | |||
64 | 1; |
ViewVC Help | |
Powered by ViewVC 1.1.26 |