mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 21:27:40 +00:00
GUAC-1101: Separate configuration and record saving into own functions.
This commit is contained in:
@@ -139,6 +139,80 @@ public abstract class AbstractGuacamoleSocketService implements GuacamoleSocketS
|
||||
protected abstract void release(AuthenticatedUser user,
|
||||
ModeledConnection connection);
|
||||
|
||||
/**
|
||||
* Returns a guacamole configuration containing the protocol and parameters
|
||||
* from the given connection. If tokens are used in the connection
|
||||
* parameter values, credentials from the given user will be substituted
|
||||
* appropriately.
|
||||
*
|
||||
* @param user
|
||||
* The user whose credentials should be used if necessary.
|
||||
*
|
||||
* @param connection
|
||||
* The connection whose protocol and parameters should be added to the
|
||||
* returned configuration.
|
||||
*
|
||||
* @return
|
||||
* A GuacamoleConfiguration containing the protocol and parameters from
|
||||
* the given connection.
|
||||
*/
|
||||
private GuacamoleConfiguration getGuacamoleConfiguration(AuthenticatedUser user,
|
||||
ModeledConnection connection) {
|
||||
|
||||
// Generate configuration from available data
|
||||
GuacamoleConfiguration config = new GuacamoleConfiguration();
|
||||
|
||||
// Set protocol from connection
|
||||
ConnectionModel model = connection.getModel();
|
||||
config.setProtocol(model.getProtocol());
|
||||
|
||||
// Set parameters from associated data
|
||||
Collection<ParameterModel> parameters = parameterMapper.select(connection.getIdentifier());
|
||||
for (ParameterModel parameter : parameters)
|
||||
config.setParameter(parameter.getName(), parameter.getValue());
|
||||
|
||||
// Build token filter containing credential tokens
|
||||
TokenFilter tokenFilter = new TokenFilter();
|
||||
StandardTokens.addStandardTokens(tokenFilter, user.getCredentials());
|
||||
|
||||
// Filter the configuration
|
||||
tokenFilter.filterValues(config.getParameters());
|
||||
|
||||
return config;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the given ActiveConnectionRecord to the database, associating it
|
||||
* with the connection having the given identifier. The end date of the
|
||||
* saved record will be populated with the current time.
|
||||
*
|
||||
* @param identifier
|
||||
* The connection to associate the new record with.
|
||||
*
|
||||
* @param record
|
||||
* The record to save.
|
||||
*/
|
||||
private void saveConnectionRecord(String identifier,
|
||||
ActiveConnectionRecord record) {
|
||||
|
||||
// Get associated models
|
||||
AuthenticatedUser user = record.getUser();
|
||||
UserModel userModel = user.getUser().getModel();
|
||||
ConnectionRecordModel recordModel = new ConnectionRecordModel();
|
||||
|
||||
// Copy user information and timestamps into new record
|
||||
recordModel.setUserID(userModel.getObjectID());
|
||||
recordModel.setUsername(userModel.getIdentifier());
|
||||
recordModel.setConnectionIdentifier(identifier);
|
||||
recordModel.setStartDate(record.getStartDate());
|
||||
recordModel.setEndDate(new Date());
|
||||
|
||||
// Insert connection record
|
||||
connectionRecordMapper.insert(recordModel);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a socket for the given user which connects to the given
|
||||
* connection, which MUST already be acquired via acquire(). The given
|
||||
@@ -178,25 +252,6 @@ public abstract class AbstractGuacamoleSocketService implements GuacamoleSocketS
|
||||
final String identifier = connection.getIdentifier();
|
||||
final String parentIdentifier = connection.getParentIdentifier();
|
||||
|
||||
// Generate configuration from available data
|
||||
GuacamoleConfiguration config = new GuacamoleConfiguration();
|
||||
|
||||
// Set protocol from connection
|
||||
ConnectionModel model = connection.getModel();
|
||||
config.setProtocol(model.getProtocol());
|
||||
|
||||
// Set parameters from associated data
|
||||
Collection<ParameterModel> parameters = parameterMapper.select(identifier);
|
||||
for (ParameterModel parameter : parameters)
|
||||
config.setParameter(parameter.getName(), parameter.getValue());
|
||||
|
||||
// Build token filter containing credential tokens
|
||||
TokenFilter tokenFilter = new TokenFilter();
|
||||
StandardTokens.addStandardTokens(tokenFilter, user.getCredentials());
|
||||
|
||||
// Filter the configuration
|
||||
tokenFilter.filterValues(config.getParameters());
|
||||
|
||||
// Return new socket
|
||||
try {
|
||||
|
||||
@@ -210,7 +265,7 @@ public abstract class AbstractGuacamoleSocketService implements GuacamoleSocketS
|
||||
environment.getRequiredProperty(Environment.GUACD_HOSTNAME),
|
||||
environment.getRequiredProperty(Environment.GUACD_PORT)
|
||||
),
|
||||
config
|
||||
getGuacamoleConfiguration(user, connection)
|
||||
) {
|
||||
|
||||
@Override
|
||||
@@ -227,18 +282,8 @@ public abstract class AbstractGuacamoleSocketService implements GuacamoleSocketS
|
||||
activeConnectionGroups.remove(parentIdentifier, activeConnection);
|
||||
release(user, connection);
|
||||
|
||||
UserModel userModel = user.getUser().getModel();
|
||||
ConnectionRecordModel recordModel = new ConnectionRecordModel();
|
||||
|
||||
// Copy user information and timestamps into new record
|
||||
recordModel.setUserID(userModel.getObjectID());
|
||||
recordModel.setUsername(userModel.getIdentifier());
|
||||
recordModel.setConnectionIdentifier(identifier);
|
||||
recordModel.setStartDate(activeConnection.getStartDate());
|
||||
recordModel.setEndDate(new Date());
|
||||
|
||||
// Insert connection record
|
||||
connectionRecordMapper.insert(recordModel);
|
||||
// Save record to database
|
||||
saveConnectionRecord(identifier, activeConnection);
|
||||
|
||||
}
|
||||
|
||||
|
@@ -60,6 +60,18 @@ public class ActiveConnectionRecord implements ConnectionRecord {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the user that connected to the connection associated with this
|
||||
* connection record.
|
||||
*
|
||||
* @return
|
||||
* The user that connected to the connection associated with this
|
||||
* connection record.
|
||||
*/
|
||||
public AuthenticatedUser getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getStartDate() {
|
||||
return startDate;
|
||||
|
Reference in New Issue
Block a user