From b0a63b8ac92ceb16eb0cc107f8308f53258426a1 Mon Sep 17 00:00:00 2001 From: Alfredo Chissotti <20033498@studenti.uniupo.it> Date: Sun, 14 Aug 2022 18:28:12 +0200 Subject: [PATCH] keycloack x server --- WebServer/src/code/Home.java | 68 +++++++++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 9 deletions(-) diff --git a/WebServer/src/code/Home.java b/WebServer/src/code/Home.java index 1ed4049..166d2fe 100644 --- a/WebServer/src/code/Home.java +++ b/WebServer/src/code/Home.java @@ -9,6 +9,9 @@ import java.net.URI; import java.util.ArrayList; import java.util.List; +import org.json.JSONException; +import org.json.JSONObject; + import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; @@ -17,8 +20,9 @@ public class Home implements HttpHandler { @Override public void handle(HttpExchange exchange) throws IOException { URI requestURI = exchange.getRequestURI(); - - if(requestURI.compareTo(URI.create("/")) != 0) { + boolean wantsHome = Helper.compareText(requestURI.toString(),URI.create("/").toString()); + boolean wantsKeycloak = Helper.compareText(requestURI.toString(),URI.create("/keycloack.json").toString()); + if(!wantsHome || !wantsKeycloak) { String error = "Invalid URI"; OutputStream os = exchange.getResponseBody(); exchange.sendResponseHeaders(400, error.getBytes().length); @@ -29,14 +33,27 @@ public class Home implements HttpHandler { String requestMethod = exchange.getRequestMethod(); if (Helper.compareText(requestMethod, "GET")) { - String response = getHomePage(); List<String> strlist = new ArrayList<>(); - strlist.add("text/html"); - exchange.getResponseHeaders().put("content-type", strlist); - exchange.sendResponseHeaders(200, response.getBytes().length); - OutputStream os = exchange.getResponseBody(); - os.write(response.getBytes()); - os.close(); + String response = null; + if(wantsHome){ + response = getHomePage(); + strlist.add("text/html"); + } else if (wantsKeycloak){ + response = getKeycloak(); + strlist.add("text/json"); + } + if(!Helper.compareText(response, "fail")){ + exchange.getResponseHeaders().put("content-type", strlist); + exchange.sendResponseHeaders(200, response.getBytes().length); + OutputStream os = exchange.getResponseBody(); + os.write(response.getBytes()); + os.close(); + } else { + exchange.sendResponseHeaders(500, response.getBytes().length); + OutputStream os = exchange.getResponseBody(); + os.write(response.getBytes()); + os.close(); + } } else { Helper.methodNotAllowed(exchange); } @@ -94,6 +111,39 @@ public class Home implements HttpHandler { return answer.toString(); } + private static String getKeycloak(){ + String page = Server.CLIENT_PATH+"/keycloak.json"; + BufferedReader bufferedReader = null; + StringBuilder answer = new StringBuilder(); + try { + FileReader fileReader = new FileReader(page); + bufferedReader = new BufferedReader(fileReader); + String line; + while ((line = bufferedReader.readLine()) != null) { + answer.append(line.trim()); + } + + JSONObject js = new JSONObject(answer.toString()); + return js.toString(); + } catch (FileNotFoundException ex) { + System.out.println("Unable to open file '" + page + "'"); + return "fail"; + } catch (IOException ex) { + System.out.println("Error reading file '" + page + "'"); + return "fail"; + } catch (JSONException e) { + System.out.println("The file doesn't contain a JSON '" + page + "'"); + return "fail"; + } finally { + try{ + if(bufferedReader != null) + bufferedReader.close(); + } catch (IOException ex){ + System.out.println("Error closing bufferedReader"); + } + } + } + private static String getExtension(String file) { int i = file.length() - 1; while (i > 0 && file.charAt(i) != '.' && file.charAt(i) != '/') -- GitLab