1 package twcsckernel.serverKernel.impl; 2 3 import java.rmi.RemoteException; 4 import java.rmi.server.ServerNotActiveException; 5 6 import twcsckernel.projectbase.common.RemoteServer; 7 import twcsckernel.projectbase.common.User; 8 import twcsckernel.serverKernel.io.LogWriter; 9 import twcsckernel.serverKernel.utils.RmiManager; 10 import twcsckernel.serverKernel.utils.ServerGlobalState; 11 import twcsckernel.serverKernel.utils.UserData; 12 13 /*** 14 * Implementacja serwera logowania 15 * {@link twcsckernel.projectbase.common.RemoteServer RemoteServer}. 16 * @author VMD Group 17 * 18 */ 19 public class RemoteServerImpl implements RemoteServer { 20 21 private ServerGlobalState globalState; 22 23 private RmiManager rmiManager; 24 25 public RemoteServerImpl(ServerGlobalState globalState, RmiManager rmiMan) { 26 this.globalState = globalState; 27 rmiManager = rmiMan; 28 } 29 30 public User login(String login, String password) throws RemoteException { 31 String userHost; 32 ; 33 try { 34 userHost = java.rmi.server.RemoteServer.getClientHost(); 35 } catch (ServerNotActiveException e1) { 36 userHost = "unknown"; 37 } 38 if (globalState.registeredUsers.checkPassword(login, password)) { 39 UserData myself = globalState.registeredUsers.getUserData(login); 40 41 UserImpl newUser; 42 try { 43 newUser = new UserImpl(myself, globalState, rmiManager, 44 userHost); 45 } catch (RemoteException re) { 46 throw re; 47 } catch (Exception e) { 48 throw new RemoteException("exception: " 49 + e.getClass().getName() + " message: " 50 + e.getMessage(),e.getCause()); 51 } 52 rmiManager.exportObject(newUser); 53 globalState.logWriter.writeUserLog("User: \"" + login + "\" (" 54 + userHost + ") successfully logged in.", 55 LogWriter.USER_LOGIN); 56 return newUser; 57 } else { 58 globalState.logWriter.writeErrorLog( 59 "Incorrect login/password attempt for user: \"" + login 60 + "\" (" + userHost + ")", 61 LogWriter.ERROR_LOGIN_PASSWORD); 62 return null; 63 } 64 } 65 66 }