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/",new Resources()); server.createContext("/css/",new Resources()); server.createContext("/res/",new ImageRes()); server.createContext("/secured/",new ObtainToken(kcs)); 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); } }