Skip to content
Snippets Groups Projects
Server.java 5.52 KiB
Newer Older
  • Learn to ignore specific revisions
  • Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    package code;
    
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    /*import java.io.FileInputStream;
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    import java.security.KeyStore;
    
    import javax.net.ssl.KeyManagerFactory;
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.SSLEngine;
    import javax.net.ssl.SSLParameters;
    import javax.net.ssl.TrustManagerFactory;
    
    import com.sun.net.httpserver.HttpsConfigurator;
    import com.sun.net.httpserver.HttpsParameters;
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    import com.sun.net.httpserver.HttpsServer;*/
    import java.io.IOException;
    import java.net.InetSocketAddress;
    import java.util.concurrent.Executors;
    
    import com.sun.net.httpserver.HttpServer;
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    
    public class Server {
    
    
    //    private static int port = 443;
        private static int port = 3000;
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    	public final static String CLIENT_PATH = "./../../webapp/public";
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    
        public static void main(String[] args) throws IOException {
            if (args.length > 1 && args[0].equals("-port"))
                try {
                    port = Integer.parseInt(args[1]);
                } catch (Exception e) {
                    e.printStackTrace();
                }
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
            KeyCloak kcs = new KeyCloak(CLIENT_PATH + "/keycloak.json", CLIENT_PATH + "/params.json");
    
    //        HttpsServer server = HttpsServer.create(new InetSocketAddress(port), 0);
            HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    
            // initialise the HTTPS server
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
                SSLContext sslContext = SSLContext.getInstance("TLS");
    
                // initialise the keystore
                char[] password = "simulator".toCharArray();
                KeyStore ks = KeyStore.getInstance("JKS");
                FileInputStream fis = new FileInputStream("testkey.jks");
                ks.load(fis, password);
    
                // setup the key manager factory
                KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
                kmf.init(ks, password);
    
                // setup the trust manager factory
                TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
                tmf.init(ks);
    
                // setup the HTTPS context and parameters
                sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
                server.setHttpsConfigurator(new HttpsConfigurator(sslContext) {
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
                    @Override
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
                    public void configure(HttpsParameters params) {
                        try {
                            // initialise the SSL context
                            SSLContext context = getSSLContext();
                            SSLEngine engine = context.createSSLEngine();
                            params.setNeedClientAuth(false);
                            params.setCipherSuites(engine.getEnabledCipherSuites());
                            params.setProtocols(engine.getEnabledProtocols());
    
                            // Set the SSL parameters
                            SSLParameters sslParameters = context.getSupportedSSLParameters();
                            params.setSSLParameters(sslParameters);
    
                        } catch (Exception ex) {
                            System.out.println("Failed to create HTTPS port");
                        }
                    }
                });
    
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
                //API del server
        		server.createContext("/js/",new Resources());
        		server.createContext("/css/",new Resources());
        		server.createContext("/res/",new ImageRes());
        		server.createContext("/",new Home());
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    //            server.setExecutor(Executors.newFixedThreadPool(11));
                server.setExecutor(Executors.newCachedThreadPool());
    			server.start();
                System.out.println("webserver running on localhost:"+port);
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
            } catch (Exception e) {
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
            	System.out.println("Failed to create HTTPS server on port " + port + " of localhost");
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
                e.printStackTrace();
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    //		server.createContext("/api/luci/",new Luci());//post, get [put, delete] {luogo e stato di tutte luci}
    //		server.createContext("/api/luci/stato/",new Luci());//put {aggiorna lo stato di una luce}
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    //		server.createContext("/api/scenari/",new Scenari());//get {nome e data di tutti gli scenari}
    //		server.createContext("/api/scenari/attiva/",new Scenari());//put {attiva/disattiva}
    //		server.createContext("/api/scenari/registra/",new Scenari());//put {registra/termina}
    //		server.createContext("/api/scenari/salva/",new Scenari());//post {conferma salvataggio, altrimenti cancella dopo timer; ritorna i valori dello scenario}
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    //		server.createContext("/api/antifurto/",new Antifurto());//get {stato, allarme, attenzione, soglia, sensori}
    //		server.createContext("/api/antifurto/stato/",new Antifurto());//get, put {se l'antifurto e' attivo + aggiornamento}
    //		server.createContext("/api/antifurto/allarme/",new Antifurto());//get, put {se l'allarme sta suonando + aggiornamento}
    //		server.createContext("/api/antifurto/attenzione/",new Antifurto());//put {valore della progress bar}
    //		server.createContext("/api/antifurto/soglia/",new Antifurto());//put {valore scelto dall'utente per la soglia}
    
            server.createContext("/js/authentication/",new Resources());
            server.createContext("/js/templates/",new Resources());
    
    		server.createContext("/css/",new Resources());
    		server.createContext("/res/",new ImageRes());
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
            server.createContext("/secured/home/js/",new Resources());
    		server.createContext("/secured/home/css/",new Resources());
    		server.createContext("/secured/home/res/",new ImageRes());
    		server.createContext("/secured/home/",new Home());
    
    		server.createContext("/secured",new ObtainToken(kcs));
    		server.createContext("/",new ObtainToken(kcs));
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    
    
    		server.setExecutor(Executors.newCachedThreadPool());
    		server.start();
            System.out.println("webserver running on localhost:"+port);