Skip to content
Snippets Groups Projects
Commit 1098469a authored by A C's avatar A C
Browse files

02-09Domain

parent bbbaf5df
No related branches found
No related tags found
No related merge requests found
......@@ -38,7 +38,7 @@ public class Domain {
//Connect.connect();
//chiamata per popolare moduli a
//chiamata per popolare moduli
URL url = new URL("https://gitlab.di.unipmn.it/alfredo/iotlabgw.edu-al.unipmn.it/-/raw/main/index.json");
......@@ -71,7 +71,7 @@ public class Domain {
in.close();
con.disconnect();
System.out.println(in);
//manipolazione per ottenere i campi dei moduli
String s=in.toString();
//ArrayList<String>arr=s.
......@@ -87,6 +87,7 @@ public class Domain {
String a=curr[0];
String b=curr[1];
try {
//inserimento modulo non arduino
DBC.fillModules(a, b, s1[i]);
} catch (SQLException | JSONException e) {
// TODO Auto-generated catch block
......@@ -96,6 +97,7 @@ public class Domain {
else {
String a=curr[0];
try {
//inserimento modulo arduino
DBC.fillModules(a,"Arduino1", s1[i]);
} catch (SQLException | JSONException e) {
// TODO Auto-generated catch block
......
......@@ -39,7 +39,7 @@ public class InstallHandler implements HttpHandler {
URI requestedUri = he.getRequestURI();
String requestMethod = he.getRequestMethod();
String response = "ayyyyNstall\n";
String response = "";
String query = requestedUri.getRawQuery();
String body = readBody(he.getRequestBody());
......
......@@ -7,10 +7,12 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Paths;
import java.security.KeyFactory;
......@@ -21,6 +23,9 @@ import java.security.spec.X509EncodedKeySpec;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
......@@ -49,7 +54,9 @@ public class ServicesHandler implements HttpHandler{
String query = requestedUri.getRawQuery();
String body = readBody(he.getRequestBody());
String user="";
Map<String, Object> parameters = new HashMap<String, Object>();
parseQuery(query, parameters);
String domain=(String) parameters.get("domain");
// String user = he.getRequestHeaders().get("user").get(0);
String token = he.getRequestHeaders().get("Authorization").get(0).substring(7);// taglio bearer
try {
......@@ -69,32 +76,29 @@ public class ServicesHandler implements HttpHandler{
e2.printStackTrace();
}
if (requestMethod.compareToIgnoreCase("GET") == 0) {
JSONObject res = new JSONObject();
JSONArray rs = new JSONArray();
JSONArray rs =null;
ArrayList<String> modulesList;
//ArrayList<String> modulesList;
try {
modulesList = DBC.getModules();
//modulesList = DBC.getModules();
for (String k : modulesList) {
rs.put(k);
}
//for (String k : modulesList) {
// rs.put(k);
rs= DBC.getServices(domain);
res.put("response", rs);
} catch (SQLException | JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
res.put("response", rs);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int status = 200;
OutputStream os = he.getResponseBody();
......@@ -124,6 +128,42 @@ public class ServicesHandler implements HttpHandler{
}
return sb.toString();
}
void parseQuery(String query, Map<String, Object> parameters) throws UnsupportedEncodingException {
if (query != null) {
String pairs[] = query.split("[&]");
for (String pair : pairs) {
String param[] = pair.split("[=]");
String key = null;
String value = null;
if (param.length > 0) {
key = URLDecoder.decode(param[0], System.getProperty("file.encoding"));
}
if (param.length > 1) {
value = URLDecoder.decode(param[1], System.getProperty("file.encoding"));
}
if (parameters.containsKey(key)) {
Object obj = parameters.get(key);
if (obj instanceof List<?>) {
List<String> values = (List<String>) obj;
values.add(value);
} else if (obj instanceof String) {
List<String> values = new ArrayList<String>();
values.add((String) obj);
values.add(value);
parameters.put(key, values);
}
} else {
parameters.put(key, value);
}
}
}
}
......
......@@ -10,6 +10,7 @@ import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -48,13 +49,30 @@ public class StartHandler implements HttpHandler {
String requestMethod = he.getRequestMethod();
String query = requestedUri.getRawQuery();
String body = readBody(he.getRequestBody());
String response = "AYYYYY";
String response = "";
//String user = he.getRequestHeaders().get("user").get(0);
String token=he.getRequestHeaders().get("Authorization").get(0).substring(7);
String user = "";
// se dominio del body ha admin chi fa chiamata allora continua
try {
//JSONObject tok=new JSONObject(token);
//String accessToken=tok.getString("access_token");
String[] tokSplit=token.split(".");
if(tokSplit.length!=3)return;//controllo che il token abbia header,body e signature(abbia 2 punti :s)
//int scnddot=accessToken.lastIndexOf(".");//dopo questo indice è tutta signature
String signature=tokSplit[2];
user=TokenHandler.verificaToken(token,signature);
if(user.equals(""))return;
} catch (NoSuchAlgorithmException | IOException | JSONException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
if (requestMethod.compareToIgnoreCase("POST") == 0) {
String dominio = body.substring(7);
System.out.println(
......@@ -103,13 +121,13 @@ public class StartHandler implements HttpHandler {
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("version", "1.0");
Map<String, String> parameters = new HashMap<>();
//Map<String, String> parameters = new HashMap<>();
// System.out.println("pino1");
// {“domain”:”nome_dominio”} check utente chiamante ha permessi su dominio
// chiamato, chi fa install è admin
// parameters.put("param1", "val");// fix parametri da mandare
parameters.put("domain", dominio);
//parameters.put("domain", dominio);
con.setDoOutput(true);
// System.out.println("pino2");
......@@ -131,29 +149,29 @@ public class StartHandler implements HttpHandler {
int status = con.getResponseCode();
Reader streamReader = null;
if (status > 299) {
System.out.println("pino5");
streamReader = new InputStreamReader(con.getErrorStream());
BufferedReader in = new BufferedReader(streamReader);
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
response = content.toString();
in.close();
} else {
System.out.println("pino6");
streamReader = new InputStreamReader(con.getInputStream());
BufferedReader in = new BufferedReader(streamReader);
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
response = content.toString();
in.close();
}
// if (status > 299) {
// System.out.println("pino5");
// streamReader = new InputStreamReader(con.getErrorStream());
// BufferedReader in = new BufferedReader(streamReader);
// String inputLine;
// StringBuffer content = new StringBuffer();
// while ((inputLine = in.readLine()) != null) {
// content.append(inputLine);
// }
// response = content.toString();
// in.close();
// } else {
// System.out.println("pino6");
// streamReader = new InputStreamReader(con.getInputStream());
// BufferedReader in = new BufferedReader(streamReader);
// String inputLine;
// StringBuffer content = new StringBuffer();
// while ((inputLine = in.readLine()) != null) {
// content.append(inputLine);
// }
// response = content.toString();
// in.close();
// }
con.disconnect();
......@@ -164,13 +182,13 @@ public class StartHandler implements HttpHandler {
}
else {
System.out.println("OPERAZIONE NON IMPLEMENTATA");
he.sendResponseHeaders(501, 0);
OutputStream os = he.getResponseBody();
os.write("OPERAZIONE NON IMPLEMENTATA".getBytes());
os.close();
}
// else {
// System.out.println("OPERAZIONE NON IMPLEMENTATA");
// he.sendResponseHeaders(501, 0);
// OutputStream os = he.getResponseBody();
// os.write("OPERAZIONE NON IMPLEMENTATA".getBytes());
// os.close();
// }
}
private String readBody(InputStream requestBody) {
......
......@@ -10,6 +10,7 @@ import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -42,6 +43,24 @@ public class StopHandler implements HttpHandler {
//verifica user keycloak
try {
//JSONObject tok=new JSONObject(token);
//String accessToken=tok.getString("access_token");
String[] tokSplit=token.split(".");
if(tokSplit.length!=3)return;//controllo che il token abbia header,body e signature(abbia 2 punti :s)
//int scnddot=accessToken.lastIndexOf(".");//dopo questo indice è tutta signature
String signature=tokSplit[2];
user=TokenHandler.verificaToken(token,signature);
if(user.equals(""))return;
} catch (NoSuchAlgorithmException | IOException | JSONException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
if (requestMethod.compareTo("POST") == 0 || requestMethod.compareTo("post") == 0) {
String dominio = body.substring(7);
......@@ -110,15 +129,16 @@ public class StopHandler implements HttpHandler {
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");
Map<String, String> parameters = new HashMap<>();
//Map<String, String> parameters = new HashMap<>();
// parameters.put("param1", "val");// fix parametri da mandare
// leggo da DB domini e riempio (magari famo .DAO??)
parameters.put("domain", dominio);
//parameters.put("domain", dominio);
con.setDoOutput(true);
DataOutputStream out = new DataOutputStream(con.getOutputStream());// inserimento param in call
out.writeBytes(ParameterStringBuilder.getParamsString(parameters));
//out.writeBytes(ParameterStringBuilder.getParamsString(parameters));
out.writeBytes(dominio);
out.flush();
out.close();
......@@ -133,29 +153,29 @@ public class StopHandler implements HttpHandler {
Reader streamReader = null;
if (status > 299) {
System.out.println("pino5");
streamReader = new InputStreamReader(con.getErrorStream());
BufferedReader in = new BufferedReader(streamReader);
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
response = content.toString();
in.close();
} else {
System.out.println("pino6");
streamReader = new InputStreamReader(con.getInputStream());
BufferedReader in = new BufferedReader(streamReader);
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
response = content.toString();
in.close();
}
// if (status > 299) {
// System.out.println("pino5");
// streamReader = new InputStreamReader(con.getErrorStream());
// BufferedReader in = new BufferedReader(streamReader);
// String inputLine;
// StringBuffer content = new StringBuffer();
// while ((inputLine = in.readLine()) != null) {
// content.append(inputLine);
// }
// response = content.toString();
// in.close();
// } else {
// System.out.println("pino6");
// streamReader = new InputStreamReader(con.getInputStream());
// BufferedReader in = new BufferedReader(streamReader);
// String inputLine;
// StringBuffer content = new StringBuffer();
// while ((inputLine = in.readLine()) != null) {
// content.append(inputLine);
// }
// response = content.toString();
// in.close();
// }
//
// BufferedReader in = new BufferedReader(
// new InputStreamReader(con.getInputStream()));
......@@ -176,13 +196,14 @@ public class StopHandler implements HttpHandler {
he.sendResponseHeaders(status, response.length());// status
os.write(response.getBytes());
os.close();
} else {
System.out.println("OPERAZIONE NON IMPLEMENTATA");
he.sendResponseHeaders(501, 0);
OutputStream os = he.getResponseBody();
os.write("OPERAZIONE NON IMPLEMENTATA".getBytes());
os.close();
}
}
// else {
// System.out.println("OPERAZIONE NON IMPLEMENTATA");
// he.sendResponseHeaders(501, 0);
// OutputStream os = he.getResponseBody();
// os.write("OPERAZIONE NON IMPLEMENTATA".getBytes());
// os.close();
// }
}
......
......@@ -656,6 +656,71 @@ public class DBC {
//return null;
}
public static JSONArray getServices(String domain) throws SQLException, JSONException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = null;
try {
// db parameters
String url = "jdbc:sqlite:DBPissirDomain.db";
// create a connection to the database
conn = DriverManager.getConnection(url);
System.out.println("Connection to SQLite has been established: getDomains");
PreparedStatement prepared = conn.prepareStatement("SELECT Module FROM Servizi WHERE Domain = ?");
prepared.setString(1, domain);
ResultSet result = prepared.executeQuery();
System.out.println("GETSERVICES");
//ArrayList<String> res=new ArrayList<String>();
//JSONArray jsnarr=new JSONArray();
ArrayList<String> arr=new ArrayList<String>();
JSONArray res=new JSONArray();
while (result.next()) {
System.out.println("GETSERVICESWHILE");
//JSONObject j= result;
if(!arr.contains(result.getString("Module"))) {
arr.add(result.getString("Module"));
res.put(result.getString("Module"));
}
System.out.println(result.getString("Module"));
//String dom = result.getString("Domain");
//String desc= result.getString("Desc");
//Integer state = result.getInt("State");
//
// JSONObject j=new JSONObject("{"+dom+":"+state+"}");
// jsnarr.put(j);
//
//Dominio d=new Dominio(dom,desc,state);
//res.add(dom);
}
return res;
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
return null;
}
/**
* @param args the command line arguments
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment