public Server(int port) { enc = null; dec = null; char[] password = null; char[] passwordcopy = null; try { password = PrivateKeyHandler.checkPassword(GenerateKeys.getPasswordInput()); if (password == null) { System.err.println("Please enter admin password to start the server"); System.exit(1); } passwordcopy = Arrays.copyOf(password, password.length); this.network = new ServerNetworkWrapper(port, password); dec = LoginManager.load(password); enc = LoginManager.save(passwordcopy); } finally { if (password != null) { for (int i = 0; i < password.length; i++) { password[i] = '\0'; passwordcopy[i] = '\0'; } } } // In-case LoginManager.load isn't reached challengeHanlder = new ChallengeHandler(); }
/** * Publish present status. We search for the highest value in the given interval. * * @param protocolProvider the protocol provider to which we change the status. * @param status the status tu publish. */ public void publishStatus( ProtocolProviderService protocolProvider, PresenceStatus status, boolean rememberStatus) { OperationSetPresence presence = protocolProvider.getOperationSet(OperationSetPresence.class); LoginManager loginManager = GuiActivator.getUIService().getLoginManager(); RegistrationState registrationState = protocolProvider.getRegistrationState(); if (registrationState == RegistrationState.REGISTERED && presence != null && !presence.getPresenceStatus().equals(status)) { if (status.isOnline()) { new PublishPresenceStatusThread(protocolProvider, presence, status).start(); } else { loginManager.setManuallyDisconnected(true); GuiActivator.getUIService().getLoginManager().logoff(protocolProvider); } } else if (registrationState != RegistrationState.REGISTERED && registrationState != RegistrationState.REGISTERING && registrationState != RegistrationState.AUTHENTICATING && status.isOnline()) { GuiActivator.getUIService().getLoginManager().login(protocolProvider); } else if (!status.isOnline() && !(registrationState == RegistrationState.UNREGISTERING)) { loginManager.setManuallyDisconnected(true); GuiActivator.getUIService().getLoginManager().logoff(protocolProvider); } if (rememberStatus) saveStatusInformation(protocolProvider, status.getStatusName()); }
private void refresh() { PersonList.removeAllItems(); PersonList.addItem(null); for (Person p : LoginManager.getPersons()) { PersonList.addItem(p); } CourseList.removeAllItems(); CourseList.addItem(null); for (Course c : LoginManager.getCourses()) { CourseList.addItem(c); } }
private Object[] Newuser(Message m) { int sessID = (int) m.msg[m.msg.length - 1]; char[] pw = null; Object[] rms = null; try { String userName = (String) m.msg[0]; pw = (char[]) m.msg[1]; String name = (String) m.msg[2]; for (Person p : LoginManager.getPersons()) { if (p.getUsername().equals(userName)) { rms = new Object[] { Message.Type.Failed.toString().toCharArray(), "Username already exists".toCharArray() }; network.sendMessage(rms, sessID); return rms; } } if (Person.checkPasswordValidity(pw)) { Person p = new Person( name, userName, pw, new Recovery((int) m.msg[3], (char[]) m.msg[4], (int) m.msg[5], (char[]) m.msg[6])); LoginManager.put(p.getPID(), p); LoginManager.save(enc); rms = new Object[] { Message.Type.NewuserResponse.toString().toCharArray(), userName.toCharArray(), "success".toCharArray() }; network.sendMessage(rms, sessID); } else { rms = new Object[] { Message.Type.Failed.toString().toCharArray(), "Invalid password".toCharArray() }; network.sendMessage(rms, sessID); } } finally { if (pw != null) { for (int i = 0; i < pw.length; i++) { pw[i] = '\0'; } } } return rms; }
private void addCourse() { JTextField pf = new JTextField(); int okCxl = JOptionPane.showConfirmDialog( null, pf, "Enter Course Name", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); String courseName = null; if (okCxl == JOptionPane.OK_OPTION) { courseName = new String(pf.getText()); } else { return; } JComboBox<Person> profList = new JComboBox<Person>(); profList.addItem(null); for (Person p : LoginManager.getPersons()) { profList.addItem(p); } okCxl = JOptionPane.showConfirmDialog( null, profList, "Select Professor", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); Person prof = null; if (okCxl == JOptionPane.OK_OPTION) { prof = (Person) profList.getSelectedItem(); } else { return; } Course c = new Course(courseName, prof); char[] password = null; try { password = PrivateKeyHandler.checkPassword( GenerateKeys.getPasswordInput()); // This window shows garbage if (password == null) { System.err.println("Please enter admin password to apply changes"); return; } LoginManager.putCourse(c.getCID(), c); enc = LoginManager.save(password); } finally { if (password != null) { for (int i = 0; i < password.length; i++) { password[i] = '\0'; } } } }
private int preSnipe() { UpdateBlocker.startBlocking(); mEntry.setLastStatus("Preparing snipe."); // Log in mCJ = mLogin.getSignInCookie(null); if (mCJ == null) { // Alert somebody that we couldn't log in? mEntry.setLastStatus( "Pre-snipe login failed. Snipe will be retried, but is unlikely to fire."); MQFactory.getConcrete("Swing").enqueue("NOTIFY Pre-snipe login failed."); JConfig.log().logDebug("Pre-snipe login failed."); UpdateBlocker.endBlocking(); return RESNIPE; } int presnipeResult = SUCCESSFUL; // Get Bid Key/Form try { JConfig.increment("stats.presniped"); mBidForm = mBidder.getBidForm(mCJ, mEntry, mEntry.getSnipeAmount()); } catch (BadBidException bbe) { String result = getSnipeResult(bbe.getResult(), mEntry.getTitle(), mEntry); mEntry.setLastStatus(result); MQFactory.getConcrete("Swing").enqueue("NOTIFY " + result); JConfig.log().logDebug(result); presnipeResult = FAIL; } UpdateBlocker.endBlocking(); return presnipeResult; }
private Message AddAssignment(Message m) { Message rm = null; int sessID = (int) m.msg[m.msg.length - 1]; String userName = network.getUserName(sessID); Person adder = LoginManager.get(userName); // get id of person doing the adding String name = (String) m.msg[0]; String desc = (String) m.msg[1]; int cid = ((Course) m.msg[2]).getCID(); // cid of course Course c = LoginManager.getCourse(cid); HashMap<Integer, Person> TAs = c.getTAs(); if (c.addAssignment(name, desc, adder.getPID())) rm = new Message(Message.Type.AddAssignmentResponse, true); else rm = new Message(Message.Type.AddAssignmentResponse, false); enc = LoginManager.save(enc); network.sendMessage(rm, sessID); return rm; }
public Message RemoveAssignment(Message m) { Message rm = null; int sessID = (int) m.msg[m.msg.length - 1]; String userName = network.getUserName(sessID); Person remover = LoginManager.get(userName); // get id of person doing the adding int asid = (Integer) m.msg[0]; int cid = ((Course) m.msg[1]).getCID(); // cid of course Assignment beingRemoved = LoginManager.getCourse(cid).getAssignment(asid); Course c = LoginManager.getCourse(cid); HashMap<Integer, Person> TAs = c.getTAs(); if (c.removeAssignment(asid, remover.getPID())) rm = new Message(Message.Type.RemoveAssignmentResponse, true); else rm = new Message(Message.Type.RemoveAssignmentResponse, false); enc = LoginManager.save(enc); network.sendMessage(rm, sessID); return rm; }
private Message RemoveMember(Message m) { Message rm = null; int sessID = (int) m.msg[m.msg.length - 1]; String userName = network.getUserName(sessID); Person remover = LoginManager.get(userName); // get id of person doing the removing String removeUsername = (String) m.msg[0]; int cid = ((Course) m.msg[1]).getCID(); // cid of course Person beingRemoved = LoginManager.get((removeUsername)); Course c = LoginManager.getCourse(cid); HashMap<Integer, Person> TAs = c.getTAs(); if (c.removeFromRoster(beingRemoved, remover.getPID())) rm = new Message(Message.Type.RemoveMemberResponse, true); else rm = new Message(Message.Type.RemoveMemberResponse, false); enc = LoginManager.save(enc); network.sendMessage(rm, sessID); return rm; }
public void editLastName(String lastName) throws PrivilegeInsufficientException, DoesNotExistException { User loggedInUser = logInManager.getLoggedInUser(); if (PrivilegeManager.hasUserPrivilege(loggedInUser, selectedUser)) { selectedUser.setLastName(lastName); usersTable.setLastName(selectedUser.getUserId(), lastName); } }
public void editAddress(Address address) throws PrivilegeInsufficientException, DoesNotExistException { User loggedInUser = logInManager.getLoggedInUser(); if (PrivilegeManager.hasUserPrivilege(loggedInUser, selectedUser)) { selectedUser.setAddress(address); usersTable.setAddress(selectedUser.getUserId(), address); } }
public void editPhoneNumber(PhoneNumber phoneNumber) throws PrivilegeInsufficientException, DoesNotExistException { User loggedInUser = logInManager.getLoggedInUser(); if (PrivilegeManager.hasUserPrivilege(loggedInUser, selectedUser)) { selectedUser.setPhoneNumber(phoneNumber); usersTable.setPhone(selectedUser.getUserId(), phoneNumber.toString()); } }
public void editEventCreationPrivilege(boolean eventCreationPrivilege) throws PrivilegeInsufficientException, DoesNotExistException { User loggedInUser = logInManager.getLoggedInUser(); if (PrivilegeManager.hasAdminPrivilege(loggedInUser)) { selectedUser.setEventCreationPrivilege(eventCreationPrivilege); usersTable.setLevel(selectedUser.getUserId(), eventCreationPrivilege == true ? 1 : 0); } }
public void initManager(final LoginManager loginManager) { loginButton.setOnAction( (event) -> { String sessionID = authorize(); if (sessionID != null) { loginManager.authenticated(sessionID); } }); }
private Message CourseRequest(Message m) { int sessID = (int) m.msg[m.msg.length - 1]; Message rm = null; Object returnmsg = null; int cid = ((Course) m.msg[0]).getCID(); Course course = LoginManager.getCourse(cid); returnmsg = course; rm = new Message(Message.Type.CourseResponse, returnmsg); network.sendMessage(rm, sessID); return rm; }
public void editPassword(String password, String passwordMatch) throws IllegalCharacterException, PasswordMismatchError, PrivilegeInsufficientException, DoesNotExistException, InvalidKeyException, UnsupportedEncodingException, IllegalBlockSizeException, BadPaddingException { User loggedInUser = logInManager.getLoggedInUser(); if (PrivilegeManager.hasUserPrivilege(loggedInUser, selectedUser)) { selectedUser.setPassword(password, passwordMatch); usersTable.setPwd(selectedUser.getUserId(), password); } }
public synchronized void gcmSetup(Activity activity) { LoginManager loginManager = new LoginManager(context); Log.i(LOG_TAG, "Setting up GCM"); if (checkPlayServices()) { GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); String regid = loginManager.getRegistrationId(); Log.i(LOG_TAG, "Current registration ID on device: " + regid); if (regid.isEmpty() || regid == null) { RegisterGcmTask gcmTask = new RegisterGcmTask(activity); gcmTask.execute(); } } else { Log.i(LOG_TAG, "No valid Google Play Services APK found."); } if (loginManager.checkLogin()) activity.finish(); }
// grader requests private Message AddMember(Message m) { Message rm = null; int sessID = (int) m.msg[m.msg.length - 1]; String userName = network.getUserName(sessID); Person adder = LoginManager.get(userName); // get id of person doing the adding String addUsername = (String) m.msg[0]; int cid = ((Course) m.msg[2]).getCID(); // cid of course String type = (String) m.msg[1]; Person beingAdded = LoginManager.get((addUsername)); Course c = LoginManager.getCourse(cid); HashMap<Integer, Person> TAs = c.getTAs(); boolean added = false; if (type.equals("Student")) added = c.addToRoster(beingAdded, adder.getPID()); else if (type.equals("TA")) added = c.addToTAs(beingAdded, adder.getPID()); else // is null or unknown ptype added = false; if (added) rm = new Message(Message.Type.AddMemberResponse, true); else rm = new Message(Message.Type.AddMemberResponse, false); enc = LoginManager.save(enc); network.sendMessage(rm, sessID); return rm; }
public Message EditAssignment(Message m) { Message rm = null; int sessID = (int) m.msg[m.msg.length - 1]; String userName = network.getUserName(sessID); Person editor = LoginManager.get(userName); // get id of person doing the adding int asid = (Integer) m.msg[0]; String newname = (String) m.msg[1]; String newdesc = (String) m.msg[2]; int cid = ((Course) m.msg[3]).getCID(); // cid of course Course c = LoginManager.getCourse(cid); Assignment editassign = c.getAssignment(asid); HashMap<Integer, Person> TAs = c.getTAs(); if (editassign == null) { rm = new Message(Message.Type.EditAssignmentResponse, false); } else { editassign.setName(newname); editassign.setDesc(newdesc); rm = new Message(Message.Type.EditAssignmentResponse, true); } enc = LoginManager.save(enc); network.sendMessage(rm, sessID); return rm; }
private Message CoursesRequest(Message m) { Message rm = null; int sessID = (int) m.msg[m.msg.length - 1]; String userName = network.getUserName(sessID); Person p = LoginManager.get(userName); if (p != null) rm = new Message( Message.Type.CoursesRequestResponse, true, p.getCourses().values().toArray(new Course[0])); else rm = new Message(Message.Type.CoursesRequestResponse, false); network.sendMessage(rm, sessID); return rm; }
public Message EditAssignmentGrade(Message m) { Message rm = null; int sessID = (int) m.msg[m.msg.length - 1]; String userName = network.getUserName(sessID); Person grader = LoginManager.get(userName); // get id of person doing the adding int asid = (Integer) m.msg[0]; String gradeUserName = (String) m.msg[3]; double newgrade = Double.parseDouble((String) m.msg[1]); String newcomments = (String) m.msg[2]; int cid = ((Course) m.msg[4]).getCID(); // cid of course Course c = LoginManager.getCourse(cid); Person beingGraded = LoginManager.get((gradeUserName)); Assignment gradeassign = c.getAssignment(asid); HashMap<Integer, Person> TAs = c.getTAs(); if (gradeassign == null) { rm = new Message(Message.Type.EditAssignmentGradeResponse, false); } else { gradeassign.setGrade(grader, beingGraded, newgrade, newcomments); rm = new Message(Message.Type.EditAssignmentGradeResponse, true); } enc = LoginManager.save(enc); network.sendMessage(rm, sessID); return rm; }
public Message LoginResponse(Message m) { int sessID = (int) m.msg[m.msg.length - 1]; char[] pw = null; Message rm = null; try { String userName = (String) m.msg[0]; pw = (char[]) m.msg[1]; Integer userNonce = (Integer) m.msg[2]; Challenge userPrevNonce = challengeHanlder.getChallege(sessID); Person user = null; if (userPrevNonce.nonce + 1 == userNonce) { for (Person p : LoginManager.getPersons()) { if (p.getUsername().equals(userName)) { user = p; break; } } // System.out.println("In server, user.checkLogin(pw): "+ user.checkLogin(pw)); if (user != null && user.checkLogin(pw)) { LoginResponse lr = new LoginResponse(true, user); rm = new Message(Message.Type.Authenticated, lr); network.setAuthentication( (SecretKey) m.msg[3], (SecretKey) m.msg[4], (int) m.msg[m.msg.length - 1], userName); network.sendMessage(rm, sessID); } else { rm = new Message(Message.Type.Failed, "Login failed"); network.setAuthentication( (SecretKey) m.msg[3], (SecretKey) m.msg[4], (int) m.msg[m.msg.length - 1], userName); network.sendMessage(rm, (int) m.msg[m.msg.length - 1]); network.setAuthentication(null, null, sessID, ""); } } } finally { if (pw != null) { for (int i = 0; i < pw.length; i++) { pw[i] = '\0'; } } } return rm; }
private Object[] RecoveryQResponse(Message m) { int sessID = (int) m.msg[m.msg.length - 1]; Challenge challenge = challengeHanlder.getChallege(sessID); String userName = String.valueOf(m.msg[0]); int userR = (int) m.msg[4]; Object[] rms = null; if (challenge.nonce + 1 == userR) { Person p = LoginManager.get(userName); char[] pw = (char[]) m.msg[3]; if (p != null && p.checkRecovery((char[]) m.msg[1], (char[]) m.msg[2])) { if (Person.checkPasswordValidity(pw)) { p.resetPassword(pw); rms = new Object[] { Message.Type.Recovered.name().toCharArray(), "Password change completed".toCharArray() }; network.sendMessage(rms, sessID); return rms; } else { rms = new Object[] { Message.Type.Failed.name().toCharArray(), "New Password is invalid".toCharArray() }; network.sendMessage(rms, sessID); return rms; } } else { rms = new Object[] {Message.Type.Failed.name().toCharArray(), "wrong answers".toCharArray()}; network.sendMessage(rms, sessID); return rms; } } rms = new Object[] { Message.Type.Failed.name().toCharArray(), "Password change failed".toCharArray() }; network.sendMessage(rms, sessID); return rms; }
private Object[] RecoveryQ(Message m) { int sessID = (int) m.msg[m.msg.length - 1]; Object[] rms = null; Challenge reoveryChallenge = challengeHanlder.generateChallenge(sessID); boolean success = challengeHanlder.checkChallenge(reoveryChallenge); if (success) { String userName = (String) m.msg[0]; Person p = LoginManager.get(userName); if (p != null) { int qIDs[] = p.getQID(); rms = new Object[] { Message.Type.RecoveryQResponse.name().toCharArray(), String.valueOf(qIDs[0]).toCharArray(), String.valueOf(qIDs[1]).toCharArray(), String.valueOf(reoveryChallenge.nonce).toCharArray() }; network.sendMessage(rms, sessID); return rms; } else { rms = new Object[] { Message.Type.Failed.name().toCharArray(), "UserName invalid".toCharArray() }; network.sendMessage(rms, sessID); return rms; } } else { rms = new Object[] { Message.Type.Failed.name().toCharArray(), "tried too many, wait for 2 mins".toCharArray() }; network.sendMessage(rms, sessID); return rms; // no response.. ignore, the request. } }
private Message AssignmentRequest(Message m) { // never called apparently int sessID = (int) m.msg[m.msg.length - 1]; int acid = ((Course) m.msg[1]).getCID(); int asid = (Integer) m.msg[2]; Assignment as = null; Message rm = null; Object returnmsg = null; try { LoginManager.getCourse(acid).getAssignment(asid); } catch (NullPointerException e) { System.out.println("Course no longer exists!"); // if you // try to // access // assignment // of a // deleted // course } returnmsg = as; rm = new Message(Message.Type.AssignmentResponse, returnmsg); network.sendMessage(rm, sessID); return rm; }
private void apply() { String action = (String) StatusList.getSelectedItem(); Person p = (Person) PersonList.getSelectedItem(); Course c = (Course) CourseList.getSelectedItem(); if (!checkValidAction(action, p, c)) { System.err.println("Invalid action... Ignoring..."); return; } StatusList.setSelectedIndex(0); PersonList.setSelectedIndex(0); CourseList.setSelectedIndex(0); char[] password = null; try { password = PrivateKeyHandler.checkPassword( GenerateKeys.getPasswordInput()); // This window shows garbage if (password == null) { System.err.println("Please enter admin password to apply changes"); return; } if (action == STUDENT) { LoginManager.setStudent(p.getPID(), c.getCID()); } else if (action == TA) { LoginManager.setTA(p.getPID(), c.getCID()); } else if (action == PROF) { LoginManager.setProf(p.getPID(), c.getCID()); } else if (action == REMOVE) { LoginManager.remove(p.getPID(), c.getCID()); } else if (action == REMOVEPERSON) { LoginManager.remove(p.getPID()); } else if (action == REMOVECOURSE) { LoginManager.removeCourse(c.getCID()); } else if (action == EDITCOURSE) { JTextField pf = new JTextField(); int okCxl = JOptionPane.showConfirmDialog( null, pf, "Change Course name to", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); String courseName = null; if (okCxl == JOptionPane.OK_OPTION) { courseName = new String(pf.getText()); } else { return; } LoginManager.changeCoursename(c.getCID(), courseName); } else if (action == EDITUSERNAME) { JTextField pf = new JTextField(); int okCxl = JOptionPane.showConfirmDialog( null, pf, "Change username to", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); String username = null; if (okCxl == JOptionPane.OK_OPTION) { username = new String(pf.getText()); } else { return; } LoginManager.changeUsername(p.getPID(), username); } enc = LoginManager.save(password); } finally { if (password != null) { for (int i = 0; i < password.length; i++) { password[i] = '\0'; } } } }