package server; import java.math.BigInteger; import java.rmi.*; import java.rmi.registry.LocateRegistry; import java.rmi.server.UnicastRemoteObject; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; import Models.*; import sql.SQL; @SuppressWarnings("serial") public class ServerMethod extends UnicastRemoteObject implements ServerInterface { protected static String m_strName; SQL sql=new SQL(); Connection con=sql.getConnection(); public ServerMethod() throws RemoteException { super(); // call base class constructor } public static void main(String argv[]) { try { LocateRegistry.createRegistry(9999); m_strName = "TheRMIExample"; System.out.println("Server: Registering RMIExampleImpl as \"" + m_strName +"\""); //System.setSecurityManager(new RMISecurityManager()); ServerMethod Example = new ServerMethod(); Naming.rebind("rmi://141.79.128.121:9999/"+m_strName, Example); System.out.println("Server: Ready..."); } catch (Exception e) { System.out.println("Server: Failed to register RMIExampleImpl: " + e); } } @Override public User getFtpUser() throws RemoteException { User user=new User(); user.setUsername(UUID.randomUUID().toString().substring(0, 8)); user.setPass(getEncodedSha1Sum(UUID.randomUUID().toString().substring(0, 8))); user.setPath("/srv/openslx/nfs/temp"); SQL sql=new SQL(); Connection con=sql.getConnection(); sql.writeFTPUser(con, user.getUsername(), user.getPass()); return user; } @Override public int DeleteFtpUser(String user) throws RemoteException { int ret = sql.DeleteUser(con, user); return ret; } public String getEncodedSha1Sum(String key) { try { MessageDigest md = MessageDigest.getInstance( "SHA1" ); md.update( key.getBytes() ); return new BigInteger(1, md.digest()).toString(16); } catch (NoSuchAlgorithmException e) { // handle error case to taste } return null; } public ArrayList getImages(){ ResultSet rs= sql.getImage(con); ArrayList al=new ArrayList(); try { while(rs.next()) { al.add(rs.getString(1)); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return al; } public String getPathOfImage(String name){ String path = null; ResultSet rs= sql.getPathOfImage(con, name); try { while(rs.next()) { path=rs.getString(1); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return path; } @Override public boolean writeVLdata(String imagename, String firstname, String lastname, String university, String Mail, String Tel, String Fak, boolean license, boolean internet, int ram, int cpu) throws RemoteException { String login="tete"; System.out.println("1"); int pk_institution=sql.setInstitution(con, university); System.out.println("2"); int pk_person=sql.setPerson(con, login, lastname, firstname, Mail, new Date(), pk_institution); System.out.println("3"); sql.setImageData(con, pk_person, license, internet, cpu, ram, imagename); System.out.println("4"); // TODO Auto-generated method stub return true; } @Override public List getImageList() throws RemoteException { ResultSet resWith=sql.getImageListWithLectures(con); ResultSet resWithout=sql.getImageListWithoutLectures(con); try { List listWith = ResSetToObject(resWith); List listWithout=ResSetToObject(resWithout); listWith.addAll(listWith.size(), listWithout); return listWith; } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return null; } public List ResSetToObject(ResultSet res) throws SQLException { ResultSetMetaData rsmd = res.getMetaData(); List list=new ArrayList<>(); while(res.next()){ Object[] objects = new Object[rsmd.getColumnCount()]; // tanks to umit ozkan for the bug fix! for(int i=0;i getAllOS() throws RemoteException { List list=new ArrayList<>(); ResultSet rs=sql.getAllOS(con); try { while(rs.next()) { list.add(rs.getString("name")); } return list; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }