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.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import Models.User; 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"; int pk_institution=sql.setInstitution(con, university); int pk_person=sql.setPerson(con, login, lastname, firstname, Mail, new Date(), pk_institution); sql.setImageData(con, pk_person, license, internet, cpu, ram, imagename); // 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; } @Override public Map getPersonData(String Vorname, String Nachname) throws RemoteException { Map map=new HashMap(); System.out.println(Vorname+Nachname); ResultSet rs=sql.getPersonData(con, Vorname, Nachname); try { while(rs.next()) { map.put("mail", rs.getString("mail")); map.put("Nachname", rs.getString("Nachname")); map.put("Vorname", rs.getString("Vorname")); map.put("Hochschule", rs.getString("name")); map.put("tel", "009909"); map.put("fak", "E+I"); } return map; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override public boolean writeLecturedata(String name, String shortdesc, String desc, Date start, Date end, boolean isActive, String imagename, String firstname, String lastname, String university, String Mail, String Tel, String Fak) throws RemoteException { int pk_image = 0; String login="tete"; int imageversion = 0; int pk_institution=sql.setInstitution(con, university); int pk_person=sql.setPerson(con, login, lastname, firstname, Mail, new Date(), pk_institution); System.out.println(imagename); ResultSet image=sql.getImageIDandVersion(con, imagename); try { while(image.next()) { pk_image=image.getInt("GUID_imageID"); imageversion=image.getInt("imageVersion"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } sql.setLectureData(con, pk_person, pk_image, imageversion, name, desc, shortdesc, start, end, isActive); return false; } }