001package org.granite.gravity.websocket;
002
003import javax.servlet.ServletContextEvent;
004import javax.servlet.ServletContextListener;
005
006public class PolicyFileServerListener implements ServletContextListener {
007        
008        private PolicyFileServer server = null;
009
010        public void contextInitialized(ServletContextEvent sce) {
011                server = new PolicyFileServer();
012                
013                String serverPort = sce.getServletContext().getInitParameter("flashPolicyFileServer-port");
014                if (serverPort != null) {
015                        try {
016                                server.setServerPort(Integer.parseInt(serverPort));
017                        }
018                        catch (NumberFormatException e) {
019                                throw new RuntimeException("Incorrect port " + serverPort + " defined for flash-policy-file-server-port", e);
020                        }
021                }
022                
023                String allow = sce.getServletContext().getInitParameter("flashPolicyFileServer-allowDomains");
024                if (allow != null) {
025                        String[] a = allow.split(",");
026                        String[] domains = new String[a.length];
027                        String[] ports = new String[a.length];
028                        for (int i = 0; i < a.length; i++) {
029                                int idx = a[i].indexOf(":");
030                                if (idx < 0) {
031                                        domains[i] = a[i];
032                                        ports[i] = "80,443";
033                                }
034                                else {
035                                        domains[i] = a[i].substring(0, idx);
036                                        ports[i] = a[i].substring(idx+1);
037                                }
038                        }
039                        server.setAllowDomains(domains);
040                        server.setAllowPorts(ports);
041                }
042                
043                server.start();
044        }
045
046        public void contextDestroyed(ServletContextEvent sce) {
047                server.stop();
048        }
049
050}