begin of SafeQ terminal server replacement
[safeq] / terminal-server.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 use IO::Socket::INET;
6
7 $| = 1;
8
9 my $socket = IO::Socket::INET->new(
10         LocalPort => 4096,
11         Proto => 'tcp',
12         Listen => 5,
13         Reuse => 1
14 ) or die "ERROR: $!";
15
16 print "SERVER Waiting for client connection on port 4096\n";
17
18 while(1) {
19         my $client_socket = $socket->accept();
20
21         sub client_send {
22                 my $text = join('', @_);
23                 warn ">> $text\n";
24                 print $client_socket "$text\r\n";
25         }
26
27         # get the host and port number of newly connected client.
28         my $peer_address = $client_socket->peerhost();
29         my $peer_port = $client_socket->peerport();
30
31         print "Connection from: $peer_address:$peer_port\n";
32
33         while ($client_socket->connected) {
34                 my $line = <$client_socket>;
35                 chomp $line;
36                 warn "<< $line\n";
37
38                 if ( $line =~ m/^\.SQ ([\d\.]+) (\S+)/ ) {
39                         client_send  ".SQ OK";
40                 } elsif ( $line =~ m/^\.CFG/ ) {
41                         client_send  ".CFG OK %s";
42                 } elsif ( $line =~ m/\.SERVER LIST/ ) {
43                         client_send  ".ERROR NO-ENTERPRISE";
44                 } elsif ( $line =~ m/\.CARD (\S+)/ ) {
45                         client_send  ".CARD OK pero peric (pero\@example.com)";
46                 } elsif ( $line =~ m/\.ACTION$/ ) {
47                         client_send  ".ACTION CMENUS2";
48                 } elsif ( $line =~ m/\.ACTION COPY/ ) {
49                         client_send  ".ACTION COPY";
50                         client_send  ".COPY Mozete kopirati (pero)";
51                 } elsif ( $line =~ m/(\.NOP)/ ) {
52                         client_send  "$1";
53                 } else {
54                         die "unknown: $line";
55                 }
56         }
57 }
58
59 $socket->close();