Skip to content
Snippets Groups Projects
Server.java 5.52 KiB
package code;

/*import java.io.FileInputStream;
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;
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;

public class Server {

//    private static int port = 443;
    private static int port = 3000;
	public final static String CLIENT_PATH = "./../../webapp/public";

    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();
            }
        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);

        // initialise the HTTPS server
        /*try {
            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) {
                @Override
                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");
                    }
                }
            });

            //API del server
    		server.createContext("/js/",new Resources());
    		server.createContext("/css/",new Resources());
    		server.createContext("/res/",new ImageRes());
    		server.createContext("/",new Home());

//            server.setExecutor(Executors.newFixedThreadPool(11));
            server.setExecutor(Executors.newCachedThreadPool());
			server.start();
            System.out.println("webserver running on localhost:"+port);
        } catch (Exception e) {
        	System.out.println("Failed to create HTTPS server on port " + port + " of localhost");
            e.printStackTrace();
        }*/
        //API del server
//		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}
//		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}
//		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());
        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));

		server.setExecutor(Executors.newCachedThreadPool());
		server.start();
        System.out.println("webserver running on localhost:"+port);
    }

}