Skip to content

Commit

Permalink
Refactored SessionOutput value object
Browse files Browse the repository at this point in the history
  • Loading branch information
skavanagh committed Sep 10, 2015
1 parent c6c79d6 commit b115498
Show file tree
Hide file tree
Showing 9 changed files with 37 additions and 102 deletions.
9 changes: 4 additions & 5 deletions src/main/java/com/keybox/manage/db/SessionAuditDB.java
Original file line number Diff line number Diff line change
Expand Up @@ -233,13 +233,13 @@ public static void insertTerminalLog(Connection con, SessionOutput sessionOutput

try {

if (sessionOutput != null && sessionOutput.getSessionId() != null && sessionOutput.getInstanceId() != null && sessionOutput.getOutput() != null && !sessionOutput.getOutput().equals("")) {
if (sessionOutput != null && sessionOutput.getSessionId() != null && sessionOutput.getInstanceId() != null && sessionOutput.getOutput() != null && !sessionOutput.getOutput().toString().equals("")) {
//insert
PreparedStatement stmt = con.prepareStatement("insert into terminal_log (session_id, instance_id, system_id, output) values(?,?,?,?)");
stmt.setLong(1, sessionOutput.getSessionId());
stmt.setLong(2, sessionOutput.getInstanceId());
stmt.setLong(3, sessionOutput.getHostSystemId());
stmt.setString(4, sessionOutput.getOutput());
stmt.setLong(3, sessionOutput.getId());
stmt.setString(4, sessionOutput.getOutput().toString());
stmt.execute();
DBUtils.closeStmt(stmt);
}
Expand Down Expand Up @@ -307,8 +307,7 @@ public static List<SessionOutput> getTerminalLogsForSession(Connection con, Long
SessionOutput sessionOutput = new SessionOutput();
sessionOutput.setSessionId(sessionId);
sessionOutput.setInstanceId(instanceId);
sessionOutput.setOutput(output);

sessionOutput.getOutput().append(output);

outputList.add(sessionOutput);

Expand Down
45 changes: 0 additions & 45 deletions src/main/java/com/keybox/manage/model/SessionHostOutput.java

This file was deleted.

29 changes: 10 additions & 19 deletions src/main/java/com/keybox/manage/model/SessionOutput.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,21 @@
/**
* Output from ssh session
*/
public class SessionOutput {
public class SessionOutput extends HostSystem {
Long sessionId;
Long hostSystemId;
Integer instanceId;
String output;
StringBuilder output = new StringBuilder();

public SessionOutput() {


public Long getHostSystemId() {
return hostSystemId;
}
public SessionOutput(Long id, Long sessionId, Integer instanceId) {

public void setHostSystemId(Long hostSystemId) {
this.hostSystemId = hostSystemId;
}
this.id=id;
this.sessionId=sessionId;
this.instanceId=instanceId;

}
public Long getSessionId() {
return sessionId;
}
Expand All @@ -43,20 +42,12 @@ public void setSessionId(Long sessionId) {
this.sessionId = sessionId;
}


public String getOutput() {
public StringBuilder getOutput() {
return output;
}

public void setOutput(String output) {
public void setOutput(StringBuilder output) {
this.output = output;
}

public Integer getInstanceId() {
return instanceId;
}

public void setInstanceId(Integer instanceId) {
this.instanceId = instanceId;
}
}
6 changes: 3 additions & 3 deletions src/main/java/com/keybox/manage/model/UserSessionsOutput.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@
public class UserSessionsOutput {

//instance id, host output
Map<Integer, SessionHostOutput> sessionOutputMap = new ConcurrentHashMap<Integer,SessionHostOutput>();
Map<Integer, SessionOutput> sessionOutputMap = new ConcurrentHashMap<Integer,SessionOutput>();


public Map<Integer, SessionHostOutput> getSessionOutputMap() {
public Map<Integer, SessionOutput> getSessionOutputMap() {
return sessionOutputMap;
}

public void setSessionOutputMap(Map<Integer, SessionHostOutput> sessionOutputMap) {
public void setSessionOutputMap(Map<Integer, SessionOutput> sessionOutputMap) {
this.sessionOutputMap = sessionOutputMap;
}
}
Expand Down
1 change: 1 addition & 0 deletions src/main/java/com/keybox/manage/socket/SecureShellWS.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.keybox.common.util.AppConfig;
import com.keybox.common.util.AuthUtil;
import com.keybox.manage.action.SecureShellAction;
import com.keybox.manage.db.AuthDB;
import com.keybox.manage.model.SchSession;
import com.keybox.manage.model.UserSchSessions;
import com.keybox.manage.task.SentOutputTask;
Expand Down
4 changes: 1 addition & 3 deletions src/main/java/com/keybox/manage/task/SecureShellTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public void run() {
BufferedReader br = new BufferedReader(isr);
try {

SessionOutputUtil.addOutput(sessionOutput.getSessionId(), sessionOutput.getHostSystemId(), sessionOutput);
SessionOutputUtil.addOutput(sessionOutput);

char[] buff = new char[1024];
int read;
Expand All @@ -53,8 +53,6 @@ public void run() {
Thread.sleep(50);
}



SessionOutputUtil.removeOutput(sessionOutput.getSessionId(), sessionOutput.getInstanceId());

} catch (Exception ex) {
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/com/keybox/manage/task/SentOutputTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package com.keybox.manage.task;

import com.google.gson.Gson;
import com.keybox.manage.model.Auth;
import com.keybox.manage.model.SessionOutput;
import com.keybox.manage.util.DBUtils;
import com.keybox.manage.util.SessionOutputUtil;
Expand All @@ -41,12 +42,14 @@ public SentOutputTask(Long sessionId, Session session) {

public void run() {

Gson gson = new Gson();

Connection con = DBUtils.getConn();
while (session.isOpen()) {
List<SessionOutput> outputList = SessionOutputUtil.getOutput(con, sessionId);
try {
if (outputList != null && !outputList.isEmpty()) {
String json = new Gson().toJson(outputList);
String json = gson.toJson(outputList);
//send json to session
this.session.getBasicRemote().sendText(json);
}
Expand Down
8 changes: 5 additions & 3 deletions src/main/java/com/keybox/manage/util/SSHUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -465,10 +465,12 @@ public static HostSystem openSSHTermOnSystem(String passphrase, String password,

//new session output
SessionOutput sessionOutput = new SessionOutput();
sessionOutput.setHostSystemId(hostSystem.getId());
sessionOutput.setInstanceId(instanceId);
sessionOutput.setId(hostSystem.getId());
sessionOutput.setInstanceId(instanceId);
sessionOutput.setSessionId(sessionId);

sessionOutput.setDisplayNm(hostSystem.getDisplayNm());
sessionOutput.setUser(hostSystem.getUser());
sessionOutput.setPort(hostSystem.getPort());

Runnable run = new SecureShellTask(sessionOutput, outFromChannel);
Thread thread = new Thread(run);
Expand Down
32 changes: 9 additions & 23 deletions src/main/java/com/keybox/manage/util/SessionOutputUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

import com.keybox.common.util.AppConfig;
import com.keybox.manage.db.SessionAuditDB;
import com.keybox.manage.model.SessionHostOutput;
import com.keybox.manage.model.Auth;
import com.keybox.manage.model.SessionOutput;
import com.keybox.manage.model.UserSessionsOutput;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -67,18 +67,16 @@ public static void removeOutput(Long sessionId, Integer instanceId) {
/**
* adds a new output
*
* @param sessionId session id
* @param hostId host id
* @param sessionOutput session output object
*/
public static void addOutput(Long sessionId, Long hostId, SessionOutput sessionOutput) {
public static void addOutput(SessionOutput sessionOutput) {

UserSessionsOutput userSessionsOutput = userSessionsOutputMap.get(sessionId);
UserSessionsOutput userSessionsOutput = userSessionsOutputMap.get(sessionOutput.getSessionId());
if (userSessionsOutput == null) {
userSessionsOutputMap.put(sessionId, new UserSessionsOutput());
userSessionsOutput = userSessionsOutputMap.get(sessionId);
userSessionsOutputMap.put(sessionOutput.getSessionId(), new UserSessionsOutput());
userSessionsOutput = userSessionsOutputMap.get(sessionOutput.getSessionId());
}
userSessionsOutput.getSessionOutputMap().put(sessionOutput.getInstanceId(), new SessionHostOutput(hostId, new StringBuilder()));
userSessionsOutput.getSessionOutputMap().put(sessionOutput.getInstanceId(), sessionOutput);


}
Expand All @@ -95,7 +93,6 @@ public static void addOutput(Long sessionId, Long hostId, SessionOutput sessionO
*/
public static void addToOutput(Long sessionId, Integer instanceId, char value[], int offset, int count) {


UserSessionsOutput userSessionsOutput = userSessionsOutputMap.get(sessionId);
if (userSessionsOutput != null) {
userSessionsOutput.getSessionOutputMap().get(instanceId).getOutput().append(value, offset, count);
Expand All @@ -113,26 +110,15 @@ public static void addToOutput(Long sessionId, Integer instanceId, char value[],
public static List<SessionOutput> getOutput(Connection con, Long sessionId) {
List<SessionOutput> outputList = new ArrayList<SessionOutput>();


UserSessionsOutput userSessionsOutput = userSessionsOutputMap.get(sessionId);
if (userSessionsOutput != null) {



for (Integer key : userSessionsOutput.getSessionOutputMap().keySet()) {

//get output chars and set to output
try {
SessionHostOutput sessionHostOutput = userSessionsOutput.getSessionOutputMap().get(key);
Long hostId = sessionHostOutput.getId();
StringBuilder sb = sessionHostOutput.getOutput();
if (sb != null) {
SessionOutput sessionOutput = new SessionOutput();
sessionOutput.setSessionId(sessionId);
sessionOutput.setHostSystemId(hostId);
sessionOutput.setInstanceId(key);

sessionOutput.setOutput(sb.toString());
SessionOutput sessionOutput = userSessionsOutput.getSessionOutputMap().get(key);
if (sessionOutput!=null && sessionOutput.getOutput() != null) {

if (StringUtils.isNotEmpty(sessionOutput.getOutput())) {
outputList.add(sessionOutput);
Expand All @@ -141,7 +127,7 @@ public static List<SessionOutput> getOutput(Connection con, Long sessionId) {
SessionAuditDB.insertTerminalLog(con, sessionOutput);
}

userSessionsOutput.getSessionOutputMap().put(key, new SessionHostOutput(hostId, new StringBuilder()));
userSessionsOutput.getSessionOutputMap().put(key, new SessionOutput(sessionOutput.getId(), sessionOutput.getSessionId(), key));
}
}
} catch (Exception ex) {
Expand Down

0 comments on commit b115498

Please sign in to comment.