Handle hostnames with upper-case letters
[webmin.git] / flashterm / index.cgi
1 #!/usr/local/bin/perl
2 # Starts the flash policy server on port 843, then outputs an HTML page that
3 # references the flash object
4
5 BEGIN { push(@INC, ".."); };
6 use WebminCore;
7 use Socket;
8 &init_config();
9
10 &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
11
12 # Work out host and port
13 $host = $ENV{'HTTP_HOST'};
14 $host =~ s/\:\d+$//;
15 $telnetport = $config{'telnetport'} || 23;
16
17 # Check for telnet
18 &open_socket($host, $telnetport, TEST, \$err);
19 $err && &error(&text('index_etelnet', $telnetport));
20 close(TEST);
21
22 # Start the policy file server on port 843
23 $port = 843;
24 $proto = getprotobyname('tcp');
25 socket(MAIN, PF_INET, SOCK_STREAM, $proto) ||
26         &error(&text('index_esocket', "$!"));
27 setsockopt(MAIN, SOL_SOCKET, SO_REUSEADDR, pack("l", 1));
28 bind(MAIN, sockaddr_in($port, INADDR_ANY)) ||
29         &error(&text('index_eport', $port));
30 listen(MAIN, SOMAXCONN);
31
32 # Fork the process that will accept the connection
33 $pid = fork();
34 if (!$pid) {
35         $rmask = undef;
36         vec($rmask, fileno(MAIN), 1) = 1;
37         $sel = select($rmask, undef, undef, 10);
38         exit(1) if ($sel <= 0);
39         accept(SOCK, MAIN);
40         close(MAIN);
41         select(SOCK); $| = 1;
42         $header = "<policy-file-request/>\000";
43         read(SOCK, $buf, length($header));
44         $buf eq $header || die "Invalid message $buf";
45         print SOCK <<EOF;
46 <?xml version="1.0"?>
47 <!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
48 <cross-domain-policy>
49 <site-control permitted-cross-domain-policies="master-only"/>
50 <allow-access-from domain="$host" to-ports="$telnetport" />
51 </cross-domain-policy>
52 EOF
53         close(SOCK);
54         exit(0);
55         }
56 close(MAIN);
57
58 # Output HTML for the flash object
59 print <<EOF;
60 <script type="text/javascript" src="swfobject.js"></script> 
61 <script type="text/javascript" src="js/global.js"></script> 
62 <script type="text/javascript"> 
63         var flashvars = {};
64         var params = {};
65         params.menu = "false";
66         params.bgcolor = "000000";
67         var attributes = {};
68         flashvars.settings = 'settings.cgi';
69         swfobject.embedSWF("flashterm.swf", "flash", "650", "440", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
70         function setFocusOnFlash() {
71                 var fl = document.getElementById("flash");
72                 fl.focus();
73         }
74 swfobject.addLoadEvent(setFocusOnFlash);
75 </script> 
76 <div id="flashcontainer"><div id="flash"></div></div> 
77 EOF
78
79 &ui_print_footer("/", $text{'index'});