Updated Branches: refs/heads/master 810151586 -> f6d16d0ab
CS-15018: Event USER.LOGIN should contain the client IP address. Changes made in accordance with the coding convention. Reviewed-by: Alena Prokharchyk Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/f6d16d0a Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/f6d16d0a Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/f6d16d0a Branch: refs/heads/master Commit: f6d16d0ab5afea8eba1741454ea4ef371bb19916 Parents: 8101515 Author: saksham <[email protected]> Authored: Mon Jun 4 18:45:11 2012 +0530 Committer: Alena Prokharchyk <[email protected]> Committed: Mon Jun 18 10:18:30 2012 -0700 ---------------------------------------------------------------------- server/src/com/cloud/api/ApiServer.java | 4 ++-- server/src/com/cloud/api/ApiServlet.java | 2 +- server/src/com/cloud/user/AccountManager.java | 2 +- server/src/com/cloud/user/AccountManagerImpl.java | 10 ++++++++-- .../com/cloud/user/MockAccountManagerImpl.java | 2 +- 5 files changed, 13 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f6d16d0a/server/src/com/cloud/api/ApiServer.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java index 83133e4..fc52e06 100755 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@ -773,7 +773,7 @@ public class ApiServer implements HttpRequestHandler { } } - public void loginUser(HttpSession session, String username, String password, Long domainId, String domainPath, Map<String, Object[]> requestParameters) throws CloudAuthenticationException { + public void loginUser(HttpSession session, String username, String password, Long domainId, String domainPath, String loginIpAddress ,Map<String, Object[]> requestParameters) throws CloudAuthenticationException { // We will always use domainId first. If that does not exist, we will use domain name. If THAT doesn't exist // we will default to ROOT if (domainId == null) { @@ -789,7 +789,7 @@ public class ApiServer implements HttpRequestHandler { } } - UserAccount userAcct = _accountMgr.authenticateUser(username, password, domainId, requestParameters); + UserAccount userAcct = _accountMgr.authenticateUser(username, password, domainId, loginIpAddress, requestParameters); if (userAcct != null) { String timezone = userAcct.getTimezone(); float offsetInHrs = 0f; http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f6d16d0a/server/src/com/cloud/api/ApiServlet.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/ApiServlet.java b/server/src/com/cloud/api/ApiServlet.java index b7b7fff..a0da657 100755 --- a/server/src/com/cloud/api/ApiServlet.java +++ b/server/src/com/cloud/api/ApiServlet.java @@ -203,7 +203,7 @@ public class ApiServlet extends HttpServlet { if (username != null) { String pwd = ((password == null) ? null : password[0]); try { - _apiServer.loginUser(session, username[0], pwd, domainId, domain, params); + _apiServer.loginUser(session, username[0], pwd, domainId, domain, req.getRemoteAddr(), params); auditTrailSb.insert(0, "(userId=" + session.getAttribute("userid") + " accountId=" + ((Account) session.getAttribute("accountobj")).getId() + " sessionId=" + session.getId() + ")"); String loginResponse = getLoginSuccessResponse(session, responseType); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f6d16d0a/server/src/com/cloud/user/AccountManager.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/user/AccountManager.java b/server/src/com/cloud/user/AccountManager.java index a7f5a68..4c18f63 100755 --- a/server/src/com/cloud/user/AccountManager.java +++ b/server/src/com/cloud/user/AccountManager.java @@ -71,7 +71,7 @@ public interface AccountManager extends AccountService { * made, and the signature itself in the single sign-on case * @return a user object, null if the user failed to authenticate */ - UserAccount authenticateUser(String username, String password, Long domainId, Map<String, Object[]> requestParameters); + UserAccount authenticateUser(String username, String password, Long domainId, String loginIpAddress, Map<String, Object[]> requestParameters); /** * Locate a user by their apiKey http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f6d16d0a/server/src/com/cloud/user/AccountManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index 35fbfe0..f26c44a 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -1618,7 +1618,7 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag } @Override - public UserAccount authenticateUser(String username, String password, Long domainId, Map<String, Object[]> requestParameters) { + public UserAccount authenticateUser(String username, String password, Long domainId, String loginIpAddress, Map<String, Object[]> requestParameters) { UserAccount user = null; if (password != null) { user = getUserAccount(username, password, domainId, requestParameters); @@ -1720,7 +1720,13 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag if (s_logger.isDebugEnabled()) { s_logger.debug("User: " + username + " in domain " + domainId + " has successfully logged in"); } - EventUtils.saveEvent(user.getId(), user.getAccountId(), user.getDomainId(), EventTypes.EVENT_USER_LOGIN, "user has logged in"); + if (NetUtils.isValidIp(loginIpAddress)) { + EventUtils.saveEvent(user.getId(), user.getAccountId(), user.getDomainId(), EventTypes.EVENT_USER_LOGIN, + "user has logged in from IP Address " + loginIpAddress); + } else { + EventUtils.saveEvent(user.getId(), user.getAccountId(), user.getDomainId(), EventTypes.EVENT_USER_LOGIN, + "user has logged in. The IP Address cannot be determined"); + } return user; } else { if (s_logger.isDebugEnabled()) { http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f6d16d0a/server/test/com/cloud/user/MockAccountManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/user/MockAccountManagerImpl.java b/server/test/com/cloud/user/MockAccountManagerImpl.java index e6ab4fe..e7ee1ed 100644 --- a/server/test/com/cloud/user/MockAccountManagerImpl.java +++ b/server/test/com/cloud/user/MockAccountManagerImpl.java @@ -254,7 +254,7 @@ public class MockAccountManagerImpl implements Manager, AccountManager { } @Override - public UserAccount authenticateUser(String username, String password, Long domainId, Map<String, Object[]> requestParameters) { + public UserAccount authenticateUser(String username, String password, Long domainId, String loginIpAddress, Map<String, Object[]> requestParameters) { return null; }
