diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/001-create-schema.sql b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/001-create-schema.sql index 9daf3a63e..8ebda4c4b 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/001-create-schema.sql +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/001-create-schema.sql @@ -32,6 +32,10 @@ CREATE TABLE `guacamole_connection_group` ( `type` enum('ORGANIZATIONAL', 'BALANCING') NOT NULL DEFAULT 'ORGANIZATIONAL', + -- Concurrency limits + `max_connections` int(11), + `max_connections_per_user` int(11), + PRIMARY KEY (`connection_group_id`), UNIQUE KEY `connection_group_name_parent` (`connection_group_name`, `parent_id`), @@ -54,6 +58,10 @@ CREATE TABLE `guacamole_connection` ( `parent_id` int(11), `protocol` varchar(32) NOT NULL, + -- Concurrency limits + `max_connections` int(11), + `max_connections_per_user` int(11), + PRIMARY KEY (`connection_id`), UNIQUE KEY `connection_name_parent` (`connection_name`, `parent_id`), diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/upgrade/upgrade-pre-0.9.8.sql b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/upgrade/upgrade-pre-0.9.8.sql index 2d417db51..1f393f562 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/upgrade/upgrade-pre-0.9.8.sql +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/upgrade/upgrade-pre-0.9.8.sql @@ -39,3 +39,17 @@ ALTER TABLE guacamole_user ADD COLUMN valid_until DATE; -- ALTER TABLE guacamole_user ADD COLUMN timezone VARCHAR(64); + +-- +-- Add connection concurrency limits +-- + +ALTER TABLE guacamole_connection ADD COLUMN max_connections INT(11); +ALTER TABLE guacamole_connection ADD COLUMN max_connections_per_user INT(11); + +-- +-- Add connection group concurrency limits +-- + +ALTER TABLE guacamole_connection_group ADD COLUMN max_connections INT(11); +ALTER TABLE guacamole_connection_group ADD COLUMN max_connections_per_user INT(11); diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionMapper.xml index 2211da069..8c85bf1a6 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionMapper.xml +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionMapper.xml @@ -28,10 +28,12 @@ - - - - + + + + + + @@ -77,7 +79,9 @@ connection_id, connection_name, parent_id, - protocol + protocol, + max_connections, + max_connections_per_user FROM guacamole_connection WHERE connection_id IN parent_id = #{parentIdentifier,jdbcType=VARCHAR} @@ -136,12 +144,16 @@ INSERT INTO guacamole_connection ( connection_name, parent_id, - protocol + protocol, + max_connections, + max_connections_per_user ) VALUES ( #{object.name,jdbcType=VARCHAR}, #{object.parentIdentifier,jdbcType=VARCHAR}, - #{object.protocol,jdbcType=VARCHAR} + #{object.protocol,jdbcType=VARCHAR}, + #{object.maxConnections,jdbcType=INTEGER}, + #{object.maxConnectionsPerUser,jdbcType=INTEGER} ) @@ -149,9 +161,11 @@ UPDATE guacamole_connection - SET connection_name = #{object.name,jdbcType=VARCHAR}, - parent_id = #{object.parentIdentifier,jdbcType=VARCHAR}, - protocol = #{object.protocol,jdbcType=VARCHAR} + SET connection_name = #{object.name,jdbcType=VARCHAR}, + parent_id = #{object.parentIdentifier,jdbcType=VARCHAR}, + protocol = #{object.protocol,jdbcType=VARCHAR}, + max_connections = #{object.maxConnections,jdbcType=INTEGER}, + max_connections_per_user = #{object.maxConnectionsPerUser,jdbcType=INTEGER} WHERE connection_id = #{object.objectID,jdbcType=INTEGER} diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupMapper.xml index 4eb20da1c..75acaab42 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupMapper.xml +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupMapper.xml @@ -28,11 +28,13 @@ - - - - + + + + + @@ -78,7 +80,9 @@ connection_group_id, connection_group_name, parent_id, - type + type, + max_connections, + max_connections_per_user FROM guacamole_connection_group WHERE connection_group_id IN parent_id = #{parentIdentifier,jdbcType=VARCHAR} @@ -137,12 +145,16 @@ INSERT INTO guacamole_connection_group ( connection_group_name, parent_id, - type + type, + max_connections, + max_connections_per_user ) VALUES ( #{object.name,jdbcType=VARCHAR}, #{object.parentIdentifier,jdbcType=VARCHAR}, - #{object.type,jdbcType=VARCHAR} + #{object.type,jdbcType=VARCHAR}, + #{object.maxConnections,jdbcType=INTEGER}, + #{object.maxConnectionsPerUser,jdbcType=INTEGER} ) @@ -150,9 +162,11 @@ UPDATE guacamole_connection_group - SET connection_group_name = #{object.name,jdbcType=VARCHAR}, - parent_id = #{object.parentIdentifier,jdbcType=VARCHAR}, - type = #{object.type,jdbcType=VARCHAR} + SET connection_group_name = #{object.name,jdbcType=VARCHAR}, + parent_id = #{object.parentIdentifier,jdbcType=VARCHAR}, + type = #{object.type,jdbcType=VARCHAR}, + max_connections = #{object.maxConnections,jdbcType=INTEGER}, + max_connections_per_user = #{object.maxConnectionsPerUser,jdbcType=INTEGER} WHERE connection_group_id = #{object.objectID,jdbcType=INTEGER} diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/001-create-schema.sql b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/001-create-schema.sql index dd5e69887..8f90d4cbf 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/001-create-schema.sql +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/001-create-schema.sql @@ -63,6 +63,10 @@ CREATE TABLE guacamole_connection_group ( type guacamole_connection_group_type NOT NULL DEFAULT 'ORGANIZATIONAL', + -- Concurrency limits + max_connections integer, + max_connections_per_user integer, + PRIMARY KEY (connection_group_id), CONSTRAINT connection_group_name_parent @@ -90,6 +94,10 @@ CREATE TABLE guacamole_connection ( parent_id integer, protocol varchar(32) NOT NULL, + -- Concurrency limits + max_connections integer, + max_connections_per_user integer, + PRIMARY KEY (connection_id), CONSTRAINT connection_name_parent diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/upgrade/upgrade-pre-0.9.8.sql b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/upgrade/upgrade-pre-0.9.8.sql index be2d36898..da4cff4f7 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/upgrade/upgrade-pre-0.9.8.sql +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/upgrade/upgrade-pre-0.9.8.sql @@ -39,3 +39,17 @@ ALTER TABLE guacamole_user ADD COLUMN valid_until date; -- ALTER TABLE guacamole_user ADD COLUMN timezone varchar(64); + +-- +-- Add connection concurrency limits +-- + +ALTER TABLE guacamole_connection ADD COLUMN max_connections integer; +ALTER TABLE guacamole_connection ADD COLUMN max_connections_per_user integer; + +-- +-- Add connection group concurrency limits +-- + +ALTER TABLE guacamole_connection_group ADD COLUMN max_connections integer; +ALTER TABLE guacamole_connection_group ADD COLUMN max_connections_per_user integer; diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionMapper.xml index 11d18a9b4..7bc96e425 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionMapper.xml +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionMapper.xml @@ -28,10 +28,12 @@ - - - - + + + + + + @@ -77,7 +79,9 @@ connection_id, connection_name, parent_id, - protocol + protocol, + max_connections, + max_connections_per_user FROM guacamole_connection WHERE connection_id IN parent_id = #{parentIdentifier,jdbcType=INTEGER}::integer @@ -136,12 +144,16 @@ INSERT INTO guacamole_connection ( connection_name, parent_id, - protocol + protocol, + max_connections, + max_connections_per_user ) VALUES ( #{object.name,jdbcType=VARCHAR}, #{object.parentIdentifier,jdbcType=INTEGER}::integer, - #{object.protocol,jdbcType=VARCHAR} + #{object.protocol,jdbcType=VARCHAR}, + #{object.maxConnections,jdbcType=INTEGER}, + #{object.maxConnectionsPerUser,jdbcType=INTEGER} ) @@ -149,9 +161,11 @@ UPDATE guacamole_connection - SET connection_name = #{object.name,jdbcType=VARCHAR}, - parent_id = #{object.parentIdentifier,jdbcType=INTEGER}::integer, - protocol = #{object.protocol,jdbcType=VARCHAR} + SET connection_name = #{object.name,jdbcType=VARCHAR}, + parent_id = #{object.parentIdentifier,jdbcType=INTEGER}::integer, + protocol = #{object.protocol,jdbcType=VARCHAR}, + max_connections = #{object.maxConnections,jdbcType=INTEGER}, + max_connections_per_user = #{object.maxConnectionsPerUser,jdbcType=INTEGER} WHERE connection_id = #{object.objectID,jdbcType=INTEGER}::integer diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupMapper.xml index 3acf3731f..75005a663 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupMapper.xml +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupMapper.xml @@ -28,11 +28,13 @@ - - - - + + + + + @@ -78,7 +80,9 @@ connection_group_id, connection_group_name, parent_id, - type + type, + max_connections, + max_connections_per_user FROM guacamole_connection_group WHERE connection_group_id IN parent_id = #{parentIdentifier,jdbcType=INTEGER}::integer @@ -137,12 +145,16 @@ INSERT INTO guacamole_connection_group ( connection_group_name, parent_id, - type + type, + max_connections, + max_connections_per_user ) VALUES ( #{object.name,jdbcType=VARCHAR}, #{object.parentIdentifier,jdbcType=INTEGER}::integer, - #{object.type,jdbcType=VARCHAR}::guacamole_connection_group_type + #{object.type,jdbcType=VARCHAR}::guacamole_connection_group_type, + #{object.maxConnections,jdbcType=INTEGER}, + #{object.maxConnectionsPerUser,jdbcType=INTEGER} ) @@ -150,9 +162,11 @@ UPDATE guacamole_connection_group - SET connection_group_name = #{object.name,jdbcType=VARCHAR}, - parent_id = #{object.parentIdentifier,jdbcType=INTEGER}::integer, - type = #{object.type,jdbcType=VARCHAR}::guacamole_connection_group_type + SET connection_group_name = #{object.name,jdbcType=VARCHAR}, + parent_id = #{object.parentIdentifier,jdbcType=INTEGER}::integer, + type = #{object.type,jdbcType=VARCHAR}::guacamole_connection_group_type, + max_connections = #{object.maxConnections,jdbcType=INTEGER}, + max_connections_per_user = #{object.maxConnectionsPerUser,jdbcType=INTEGER} WHERE connection_group_id = #{object.objectID,jdbcType=INTEGER}::integer