ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/myhttpd/shell.pl
Revision: 1.1
Committed: Fri Aug 10 02:29:01 2001 UTC (22 years, 11 months ago) by root
Content type: text/plain
Branch: MAIN
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 # a server command shell
2    
3     use Coro;
4     use Coro::Handle;
5     use Coro::Socket;
6     use Event;
7    
8     sub shell {
9     my $fh = shift;
10    
11     while (defined (print $fh "cmd> "), $_ = <$fh>) {
12     chomp;
13     if (/quit/) {
14     Event::unloop;
15     } elsif (/info/) {
16     my @conn;
17     push @conn, values %$_ for values %conn::conn;
18     for (values %conn::conn) {
19     for (values %$_) {
20     next unless $_;
21     print "$_: $_->{remote_addr} $_->{uri}\n";
22     }
23     }
24     } else {
25     print "try quit\n";
26     }
27     }
28     }
29    
30     # bind to tcp port
31     if ($CMDSHELL_PORT) {
32     my $port = new Coro::Socket
33     LocalAddr => "127.0.0.1",
34     LocalPort => $CMDSHELL_PORT,
35     ReuseAddr => 1,
36     Listen => 1,
37     or die "unable to bind cmdshell port: $!";
38    
39     async {
40     async \&shell, $port->accept;
41     };
42     }
43    
44     # bind to stdin (debug)
45     if (1) {
46     my $tty;
47     open $tty, "+</dev/tty"
48     and async \&shell, unblock $tty;
49     }
50