diff --git a/domainManager/Domain/.classpath b/domainManager/Domain/.classpath index 1bf32ae4c6935b715d45f0de5471fee5b075efdd..0ea2173a7dde1d224d8acd56711a4044464e5e99 100644 --- a/domainManager/Domain/.classpath +++ b/domainManager/Domain/.classpath @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> - <classpathentry kind="src" path="resources"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"> <attributes> <attribute name="module" value="true"/> diff --git a/domainManager/Domain/DBPissirDomain.db b/domainManager/Domain/DBPissirDomain.db index ba2ee183bb4c79e7899376828cfb70a3c9ad8161..83d955e9b38a8f328dd987aab8ebf63c1b384a2f 100644 Binary files a/domainManager/Domain/DBPissirDomain.db and b/domainManager/Domain/DBPissirDomain.db differ diff --git a/domainManager/Domain/bin/.gitignore b/domainManager/Domain/bin/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..99591d4d7ebd2f44e23703967a38c86d34174fce --- /dev/null +++ b/domainManager/Domain/bin/.gitignore @@ -0,0 +1,2 @@ +/db/ +/code/ diff --git a/domainManager/Domain/bin/code/Domain.class b/domainManager/Domain/bin/code/Domain.class index 4c972884eb871e707d8499e1a6307cd0b0ebb691..4d24031e06dd6fed51cdd610b1560d4b6aa73904 100644 Binary files a/domainManager/Domain/bin/code/Domain.class and b/domainManager/Domain/bin/code/Domain.class differ diff --git a/domainManager/Domain/bin/code/StartHandler.class b/domainManager/Domain/bin/code/StartHandler.class index 049e5c28163c3bd27fa089afe48070e2ecb5ab73..2b0d8b50562d1178a83b2a73c8696e147f52512e 100644 Binary files a/domainManager/Domain/bin/code/StartHandler.class and b/domainManager/Domain/bin/code/StartHandler.class differ diff --git a/domainManager/Domain/bin/db/Connect.class b/domainManager/Domain/bin/db/Connect.class index c6c17fddfd2ba8900522c262127d4fa802a551e1..ea4b8b874d0b364bd2e96efdc092ef355af6159c 100644 Binary files a/domainManager/Domain/bin/db/Connect.class and b/domainManager/Domain/bin/db/Connect.class differ diff --git a/domainManager/Domain/bin/hibernate.cfg.xml b/domainManager/Domain/bin/hibernate.cfg.xml deleted file mode 100644 index c9a441712058590b72c609489620b69334e7b12d..0000000000000000000000000000000000000000 --- a/domainManager/Domain/bin/hibernate.cfg.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" -"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd%22%3E - -<hibernate-configuration> - <session-factory> - <property name="show_sql">true</property> - <property name="format_sql">true</property> - <property name="dialect">org.hibernate.dialect.SQLiteDialect</property> - <property name="connection.driver_class">org.sqlite.JDBC</property> - <property name="connection.url">jdbc:sqlite:/home/ale/Scrivania/DBPissirDomain.db</property> - <property name="connection.username"></property> - <property name="connection.password"></property> - - <property name="hibernate.hbm2ddl.auto">update</property> - - <mapping class="com.srccodes.example.hibernate.Contact"/> - </session-factory> -</hibernate-configuration> \ No newline at end of file diff --git a/domainManager/Domain/resources/hibernate.cfg.xml b/domainManager/Domain/resources/hibernate.cfg.xml deleted file mode 100644 index c9a441712058590b72c609489620b69334e7b12d..0000000000000000000000000000000000000000 --- a/domainManager/Domain/resources/hibernate.cfg.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" -"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd%22%3E - -<hibernate-configuration> - <session-factory> - <property name="show_sql">true</property> - <property name="format_sql">true</property> - <property name="dialect">org.hibernate.dialect.SQLiteDialect</property> - <property name="connection.driver_class">org.sqlite.JDBC</property> - <property name="connection.url">jdbc:sqlite:/home/ale/Scrivania/DBPissirDomain.db</property> - <property name="connection.username"></property> - <property name="connection.password"></property> - - <property name="hibernate.hbm2ddl.auto">update</property> - - <mapping class="com.srccodes.example.hibernate.Contact"/> - </session-factory> -</hibernate-configuration> \ No newline at end of file diff --git a/domainManager/Domain/src/code/Domain.java b/domainManager/Domain/src/code/Domain.java index 6bef0935daa7309243b060336ef9b1a07b382cb8..5ba15cae669b6ae0297e2343136aa4a6ce5872ab 100644 --- a/domainManager/Domain/src/code/Domain.java +++ b/domainManager/Domain/src/code/Domain.java @@ -25,7 +25,7 @@ public class Domain { ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor)Executors.newCachedThreadPool();////newFixedThreadPool(5) HttpServer server=HttpServer.create(new InetSocketAddress(port),0); - Connect.connect(); + //Connect.connect(); diff --git a/domainManager/Domain/src/code/StartHandler.java b/domainManager/Domain/src/code/StartHandler.java index e35489a84181fe9ae765b9db8fd8a2a01a35e4f7..65d41274dd795fb234092107b4b99ae436ad95b4 100644 --- a/domainManager/Domain/src/code/StartHandler.java +++ b/domainManager/Domain/src/code/StartHandler.java @@ -10,14 +10,20 @@ import java.io.Reader; import java.net.HttpURLConnection; import java.net.URI; import java.net.URL; +import java.sql.SQLException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import com.sun.net.httpserver.Headers; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; +import db.DbStart; +import db.Dominio; + public class StartHandler implements HttpHandler { @Override @@ -44,8 +50,58 @@ public class StartHandler implements HttpHandler { String query = requestedUri.getRawQuery(); String body = readBody(he.getRequestBody()); String response = "AYYYYY"; + String user= he.getRequestHeaders().get("user").get(0); + + //se dominio del body ha admin chi fa chiamata allora continua if(requestMethod.compareToIgnoreCase("POST")==0) { + String dominio=body.substring(7); + System.out.println(requestMethod+"\n"+query+"\n"+body+"\n"+response+"\n"+user+"\n"+dominio+"\n"); + + try { + System.out.println("PreDB"); + //ArrayList<Dominio> doms=DbStart.domainsGet(); + System.out.println("PostDB"); + Dominio d= DbStart.getDom(dominio); + String s=user+"-A"; + /* + for(Dominio d : doms){ + if( (d.getDomain() == dominio) && d.getUsers().contains(s)) + //something here + System.out.println("OPERAZIONE NON IMPLEMENTATA"); + he.sendResponseHeaders(401,response.length()); + OutputStream os = he.getResponseBody(); + os.write("NON AUTORIZZATO".getBytes()); + os.close(); + return; + } + */ + if(!d.getUsers().contains(s)) { + //he.sendResponseHeaders(401,0 ); + System.out.println("NON AUTORIZZATO"); + response="NON AUTORIZZATO"; + he.sendResponseHeaders(401,response.length()); + OutputStream os = he.getResponseBody(); + + os.write(response.getBytes()); + os.close(); + + //System.out.println("OPERAZIONE NON IMPLEMENTATA"); + //he.sendResponseHeaders(501,0); + //OutputStream os = he.getResponseBody(); + //os.write("OPERAZIONE NON IMPLEMENTATA".getBytes()); + //os.close(); + + return; + } + + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + URL url = new URL("http://localhost:3000/start");//maybe, se CloudApp è in localhost porta 8080 HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("POST"); @@ -55,18 +111,19 @@ public class StartHandler implements HttpHandler { 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 //leggo da DB domini e riempio (magari famo .DAO??) con.setDoOutput(true); - System.out.println("pino2"); + //System.out.println("pino2"); DataOutputStream out = new DataOutputStream(con.getOutputStream());//inserimento param in call out.writeBytes(ParameterStringBuilder.getParamsString(parameters)); out.flush(); out.close(); - System.out.println("pino3"); + //System.out.println("pino3"); //con.setRequestProperty("Content-Type", "application/json"); //String contentType = con.getHeaderField("Content-Type"); @@ -120,6 +177,10 @@ public class StartHandler implements HttpHandler { os.close(); } } + + + + private String readBody(InputStream requestBody) { int req; diff --git a/domainManager/Domain/src/db/Connect.java b/domainManager/Domain/src/db/Connect.java index 2217ef2d4cf50eeaca731093b32257eef5b42f7d..dec5a1a496b7dc206e56fe6ec68d73910d5efb33 100644 --- a/domainManager/Domain/src/db/Connect.java +++ b/domainManager/Domain/src/db/Connect.java @@ -15,6 +15,7 @@ public class Connect { /** * Connect to a sample database */ + //public static Connection conn = null; public static void connect() { Connection conn = null; try { @@ -24,7 +25,7 @@ public class Connect { conn = DriverManager.getConnection(url); System.out.println("Connection to SQLite has been established."); - + /* String sql= "SELECT * FROM Utenti"; Statement statement =conn.createStatement(); ResultSet result =statement.executeQuery(sql); @@ -33,7 +34,7 @@ public class Connect { String desc=result.getString("Desc"); System.out.println(name+desc); - } + }*/ } catch (SQLException e) { System.out.println(e.getMessage()); @@ -47,6 +48,8 @@ public class Connect { } } } + + /** * @param args the command line arguments */ diff --git a/domainManager/Domain/src/db/DbStart.java b/domainManager/Domain/src/db/DbStart.java new file mode 100644 index 0000000000000000000000000000000000000000..4208277898e9cb2b39cf087b0eaf50b6bde96be7 --- /dev/null +++ b/domainManager/Domain/src/db/DbStart.java @@ -0,0 +1,194 @@ +package db; + + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Arrays; +import db.Connect; + +/** + * + * @author sqlitetutorial.net + */ +public class DbStart { + /** + * Connect to a sample database + */ + //static Connection conn = null; + /* + public static void connect() { + + 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."); + + System.out.println("OIOI"); + } catch (SQLException e) { + System.out.println(e.getMessage()); + } finally { + try { + if (conn != null) { + conn.close(); + } + } catch (SQLException ex) { + System.out.println(ex.getMessage()); + } + } + } + */ + public static ArrayList<Dominio> domainsGet() throws SQLException { + //connect(); + + + + /** + * Connect to a sample database + */ + //public static Connection conn = null; + + 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."); + /* + String sql= "SELECT * FROM Utenti"; + Statement statement =conn.createStatement(); + ResultSet result =statement.executeQuery(sql); + while (result.next()) { + String name=result.getString("User"); + + String desc=result.getString("Desc"); + System.out.println(name+desc); + }*/ + + String sql= "SELECT * FROM Domini"; + Statement statement =conn.createStatement(); + ResultSet result =statement.executeQuery(sql); + System.out.println("57"); + ArrayList<Dominio> res=new ArrayList <Dominio>(); + while (result.next()) { + System.out.println("60"); + String dom=result.getString("Domain"); + String desc=result.getString("Desc"); + + //String users=result.getString("Users"); + ArrayList<String> users = new ArrayList<String>(Arrays.asList(result.getString("Users").split(","))); + ArrayList<String> reso = new ArrayList<String>(Arrays.asList(result.getString("Resources").split(","))); + //String reso=result.getString("Resources"); + + String state=result.getString("State"); + ArrayList<String> serv = new ArrayList<String>(Arrays.asList(result.getString("Services").split(","))); + //String serv=result.getString("Services"); + Dominio d=new Dominio(dom,desc,users,reso,state,serv); + res.add(d); + System.out.println("74"); + + } + 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; + + + + + } + + public static Dominio getDom(String dm) throws SQLException { + //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."); + /* + String sql= "SELECT * FROM Utenti"; + Statement statement =conn.createStatement(); + ResultSet result =statement.executeQuery(sql); + while (result.next()) { + String name=result.getString("User"); + + String desc=result.getString("Desc"); + System.out.println(name+desc); + }*/ + + PreparedStatement prepared = conn.prepareStatement("SELECT * FROM Domini WHERE Domain = ?"); + prepared.setString(1, dm); + ResultSet result = prepared.executeQuery(); + + + //String sql= "SELECT * FROM Domini WHERE Domain = ?"; + + //ResultSet result =statement.executeQuery(sql); + //Dominio res=new Dominio(); + while (result.next()) { + + String dom=result.getString("Domain"); + String desc=result.getString("Desc"); + + //String users=result.getString("Users"); + ArrayList<String> users = new ArrayList<String>(Arrays.asList(result.getString("Users").split(","))); + ArrayList<String> reso = new ArrayList<String>(Arrays.asList(result.getString("Resources").split(","))); + //String reso=result.getString("Resources"); + + String state=result.getString("State"); + ArrayList<String> serv = new ArrayList<String>(Arrays.asList(result.getString("Services").split(","))); + //String serv=result.getString("Services"); + Dominio d=new Dominio(dom,desc,users,reso,state,serv); + //res.add(d); + return d; + } + return null; + + } 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 + */ + //public static void main(String[] args) { + // connect(); + //} +} diff --git a/domainManager/Domain/src/db/Dominio.java b/domainManager/Domain/src/db/Dominio.java new file mode 100644 index 0000000000000000000000000000000000000000..4ff619e2789aaec58f42e49bc6db6573619d99af --- /dev/null +++ b/domainManager/Domain/src/db/Dominio.java @@ -0,0 +1,31 @@ +package db; + +import java.util.ArrayList; + +public class Dominio { + + String domain; + public String desc; + ArrayList<String> users; + public ArrayList<String> resources; + public String state; + public ArrayList<String> services; + + public Dominio(String dom, String de, ArrayList<String> u, ArrayList<String> res, String st, ArrayList<String> ser) { + domain=dom; + desc=de; + users=new ArrayList<String>(u); + resources=new ArrayList<String>(res); + state=st; + services=new ArrayList<String>(ser); + } + + public String getDomain() { + return domain; + } + + public ArrayList<String> getUsers(){ + return users; + } + +}