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