Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
fff7ba4
Merge changes from patch branch back to main.
mike-jumper Aug 6, 2024
3310272
Merge patch branch changes to main.
necouchman Aug 18, 2024
7a66ec9
GUACAMOLE-1979: Allow setting required properties for connecting to M…
jmuehlner Aug 13, 2024
30716c6
GUACAMOLE-1979: Merge allow setting required properties for connectin…
necouchman Aug 23, 2024
ad3a007
Merge patch branch changes to main.
necouchman Aug 25, 2024
d3b784d
Merge changes from patch branch back to main.
mike-jumper Aug 28, 2024
468c050
Merge changes from patch branch back to main.
mike-jumper Aug 28, 2024
bef7e30
Merge changes from patch branch back to main.
mike-jumper Aug 30, 2024
f95a218
Merge changes from patch branch back to main.
mike-jumper Sep 2, 2024
ea43caa
Merge patch branch changes to main
necouchman Sep 25, 2024
38dd5a4
Merge patch branch changes to main.
necouchman Sep 25, 2024
40620e4
Merge patch branch changes to main.
necouchman Oct 1, 2024
9320cdb
Merge changes from patch branch back to main.
mike-jumper Oct 2, 2024
2bf93c1
Merge changes from patch branch back to main.
mike-jumper Oct 2, 2024
3839f9c
Merge changes from patch branch back to main.
mike-jumper Oct 4, 2024
d558a44
Merge changes from patch branch back to main.
mike-jumper Oct 11, 2024
56fb1dd
GUACAMOLE-1989: Add the ability to open guacamole as an independent a…
corentin-soriano Oct 7, 2024
bbede31
GUACAMOLE-1989: Merge the ability to open guacamole as an independent…
necouchman Oct 14, 2024
32eaffc
GUACAMOLE-1701: Implement connection date and time before and after r…
necouchman Oct 4, 2024
8d1bf03
GUACAMOLE-1976: Add OPTIONAL token modifier.
necouchman Aug 9, 2024
55d1b0d
GUACAMOLE-1976: Merge new OPTIONAL token modifier.
jmuehlner Oct 18, 2024
397467a
GUACAMOLE-1701: Merge new configurable connection date and time restr…
jmuehlner Oct 18, 2024
2770ef3
GUACAMOLE-1974: Allow deferring received pipe streams for later consu…
jmuehlner Jul 30, 2024
b5c9a08
GUACAMOLE-1974: Merge changes to allow deferring received pipe stream…
aleitner Oct 31, 2024
494c4ce
Merge changes from patch branch back to main.
mike-jumper Nov 10, 2024
607e611
Merge patch branch changes to main.
necouchman Dec 2, 2024
0995eb8
Merge patch branch changes to main.
necouchman Jan 3, 2025
7de0809
GUACAMOLE-2002: Allow connection clipboard limits to be configured.
eugen-keeper Nov 26, 2024
4c40256
Merge changes from patch branch back to main.
mike-jumper Jan 15, 2025
65954c2
Merge patch branch changes to main.
necouchman Jan 15, 2025
fff0015
Merge changes from patch branch back to main.
mike-jumper Jan 20, 2025
56440de
Merge patch branch changes to main.
necouchman Jan 26, 2025
89a027b
Merge changes from patch branch back to main.
corentin-soriano Jan 30, 2025
c276c49
Merge patch branch changes to main.
necouchman Feb 7, 2025
f3d92c4
Merge changes from patch branch back to main.
mike-jumper Feb 17, 2025
36dedc9
Merge changes from patch branch back to main.
mike-jumper Feb 17, 2025
cea71eb
Merge changes from patch branch back to main.
mike-jumper Feb 25, 2025
77ad786
Merge changes from patch branch back to main.
mike-jumper Feb 25, 2025
21cc3a6
Merge changes from patch branch back to main.
mike-jumper Feb 26, 2025
4e5b78c
Merge patch branch changes to main.
necouchman Feb 27, 2025
fd138fb
Merge changes from patch branch back to main.
mike-jumper Mar 4, 2025
61d0cf0
Merge patch branch changes to main.
necouchman Mar 4, 2025
caa6d3b
Merge changes from patch branch back to main.
mike-jumper Mar 6, 2025
936645b
GUACAMOLE-2002: Merge support for configuring clipboard size limits.
mike-jumper Mar 7, 2025
78e0436
Merge changes from patch branch back to main.
mike-jumper Mar 7, 2025
7d728aa
Merge patch branch changes to main.
necouchman Apr 7, 2025
3124b44
Merge patch branch changes to main.
necouchman Apr 8, 2025
f6d4ed8
Merge patch branch changes to main.
necouchman Apr 10, 2025
73c1497
Merge patch branch changes to main.
necouchman Apr 15, 2025
892dc98
Merge patch branch changes to main.
necouchman Apr 15, 2025
f9e2653
GUACAMOLE-2055: Add Turkish translation and keyboard layout.
Turab Apr 15, 2025
bd0a342
GUACAMOLE-2055: Sort by key names in tr.json for auth duo extension a…
Turab Apr 22, 2025
49effea
Merge patch branch changes to main.
necouchman Apr 23, 2025
60ddc61
Merge patch branch changes to main.
necouchman May 2, 2025
02058e7
Merge patch branch changes to main.
necouchman May 8, 2025
7ac069d
Merge patch branch changes to main.
necouchman May 14, 2025
145dcfb
GUACAMOLE-2055: Merge Turkish translation and keyboard layout.
mike-jumper May 22, 2025
b72e239
Merge patch branch changes to main.
necouchman May 28, 2025
511ef7c
Merge changes from patch branch back to main.
mike-jumper May 29, 2025
4dd4209
Merge patch branch changes to main
necouchman Jun 2, 2025
82762fa
Merge patch branch changes to main.
necouchman Jun 3, 2025
98ed739
Merge patch branch changes to main.
necouchman Jul 18, 2025
63c9aef
Merge changes from patch branch back to main.
mike-jumper Jul 21, 2025
457e3a5
Merge changes from patch branch back to main.
mike-jumper Aug 4, 2025
2090e99
Merge changes from patch branch back to main.
mike-jumper Aug 31, 2025
812641a
Merge patch branch changes to main.
necouchman Sep 1, 2025
99dbe07
Merge patch branch changes to main.
necouchman Sep 3, 2025
ed54b5b
Merge patch branch changes to main.
necouchman Sep 3, 2025
4a7ee78
Merge changes from patch branch back to main.
mike-jumper Sep 4, 2025
db37ac3
Merge changes from patch branch back to main.
mike-jumper Sep 13, 2025
0336e2c
Merge patch branch changes to main.
necouchman Sep 22, 2025
8e21063
GUACAMOLE-2120: Support VT100 escape codes sent for function keys and…
eugen-keeper Aug 14, 2025
253dad3
GUACAMOLE-2120: Merge support for requesting VT100-style codes for fu…
mike-jumper Oct 17, 2025
2148358
GUACAMOLE-954: Add LDAP support for nested user groups
barnhart103 Jun 23, 2025
74e3b34
GUACAMOLE-954: Merge add LDAP support for nested user groups
necouchman Oct 30, 2025
2990155
GUACAMOLE-954: OID string for nested group search should be static.
necouchman Nov 1, 2025
a438b8f
GUACAMOLE-954: Merge correction to declaration of nested group OID st…
mike-jumper Nov 2, 2025
ecde73d
GUACAMOLE-1292: Prompt user to confirm closing guacamole if at least …
corentin-soriano Nov 4, 2025
07bbc36
GUACAMOLE-1292: Merge prompt user to confirm closing guacamole if at …
necouchman Nov 4, 2025
b68ed4f
Merge 1.6.1 changes to patch.
necouchman Nov 4, 2025
d559360
Merge patch branch changes to main.
necouchman Nov 4, 2025
8163459
Merge 1.6.1 changes to patch.
necouchman Nov 10, 2025
93f9817
Merge patch branch changes to main.
necouchman Nov 10, 2025
aae7bb8
Merge 1.6.1 changes to patch branch.
necouchman Dec 4, 2025
7451a9c
Merge patch branch changes to main.
necouchman Dec 4, 2025
1e188b4
Merge 1.6.1 changes to patch.
necouchman Dec 6, 2025
df4e45f
Merge patch branch changes to main and fix conflicts.
necouchman Dec 6, 2025
27be6e9
Merge 1.6.1 changes to patch branch.
necouchman Dec 13, 2025
a6719b1
Merge patch branch changes to main.
necouchman Dec 13, 2025
2645cff
Merge 1.6.1 changes to patch.
necouchman Dec 27, 2025
8df2d3d
Merge patch branch changes to main.
necouchman Dec 27, 2025
bc6e766
Merge 1.6.1 changes to patch.
necouchman Dec 29, 2025
f7a9d87
Merge patch branch changes to main.
necouchman Dec 29, 2025
4f823d1
Merge 1.6.1 changes back to patch.
mike-jumper Jan 7, 2026
27ac2d4
Merge changes from patch branch back to main.
mike-jumper Jan 7, 2026
d3d1a98
GUACAMOLE-519: Implement Single Logout on OpenID Extension
bayars Jan 18, 2026
12bcea5
GUACAMOLE-519: Javascript fix in module to forward to openid logout e…
bayars Jan 18, 2026
903fdeb
GUACAMOLE-519: fix api endpoint forwarding to use logout address
bayars Jan 19, 2026
b5838b9
GUACAMOLE-519: revert pom.xml change
bayars Jan 19, 2026
641fce1
Merge 1.6.1 changes back to patch.
mike-jumper Jan 22, 2026
89edf02
Merge changes from patch branch back to main.
mike-jumper Jan 22, 2026
4763856
GUACAMOLE-519: MR code review change to simplify getPostLogoutRedirect
bayars Jan 26, 2026
0b3a773
Merge 1.6.1 changes back to patch.
mike-jumper Jan 26, 2026
c00c18e
Merge changes from patch branch back to main.
mike-jumper Jan 26, 2026
dd3a0fb
GUACAMOLE-519: Merge Single Logout for OpenID Extension
necouchman Jan 26, 2026
7c23733
GUACAMOLE-1266 SAML Single Logout
bayars Jan 26, 2026
baa0bdd
Merge 1.6.1 changes to patch.
necouchman Jan 28, 2026
a8a70f2
Merge patch branch changes to main.
necouchman Jan 28, 2026
764311f
GUACAMOLE-2206: Implement ability to apply login restrictions to admi…
necouchman Jan 29, 2026
8ec4d81
GUACAMOLE-1266 Remove local js testing lines in pom
bayars Jan 27, 2026
c36ace6
GUACAMOLE-1266 Alphabetical reorder fix of import, and js block
bayars Feb 1, 2026
693f05f
GUACAMOLE-1266: Merge implement SAML Single Logout
necouchman Feb 1, 2026
cb0281e
GUACAMOLE-2206: Merge ability to apply login restrictions to admin us…
mike-jumper Feb 2, 2026
16b5a7b
Merge 1.6.1 changes to patch.
necouchman Feb 3, 2026
90a938c
Merge patch branch changes to main.
necouchman Feb 3, 2026
3ad918b
Merge 1.6.1 changes back to patch.
mike-jumper Feb 11, 2026
5c4a62b
Merge changes from patch branch back to main.
mike-jumper Feb 11, 2026
ba017c8
Merge 1.6.1 changes to patch.
necouchman Feb 11, 2026
27c47d6
Merge patch branch changes to main.
necouchman Feb 11, 2026
7a50f72
Merge 1.6.1 changes to patch.
necouchman Feb 18, 2026
ff84680
Merge patch branch changes to main.
necouchman Feb 18, 2026
9088c06
GUACAMOLE-2172: Update italian localization
enrymari Mar 5, 2026
a875ec2
GUACAMOLE-2172: Update italian localization
enrymari Mar 5, 2026
d6a2306
Merge 1.6.1 changes back to patch.
mike-jumper Mar 5, 2026
efb930c
Merge changes from patch branch back to main.
mike-jumper Mar 5, 2026
1905730
GUACAMOLE-2002: Deduplicate Kubernetes clipboard configuration section.
eugen-keeper Mar 26, 2026
b5fdb0a
GUACAMOLE-2002: Merge combination of duplicated clipboard sections in…
mike-jumper Mar 27, 2026
a0933e0
Merge 1.6.1 changes back to patch.
mike-jumper Mar 27, 2026
d051f8c
Merge changes from patch branch back to main.
mike-jumper Mar 27, 2026
b4f4a1f
Merge 1.6.1 changes back to patch.
mike-jumper Mar 27, 2026
4245fbb
Merge changes from patch branch back to main.
mike-jumper Mar 27, 2026
1423f1a
Merge 1.6.1 changes to patch branch.
necouchman Apr 6, 2026
9185ae6
Merge patch branch changes to main.
necouchman Apr 6, 2026
fe5c9a9
Merge 1.6.1 changes back to patch.
mike-jumper Apr 6, 2026
3d87ae5
Merge changes from patch branch back to main.
mike-jumper Apr 6, 2026
1ae5d12
Merge 1.6.1 changes to patch branch.
necouchman Apr 13, 2026
28d6f4e
Merge patch branch changes to main.
necouchman Apr 13, 2026
75cd21b
Merge 1.6.1 changes back to patch.
mike-jumper Apr 16, 2026
4ea7ef1
Merge changes from patch branch back to main.
mike-jumper Apr 16, 2026
a7e3b30
Merge 1.6.1 changes to patch.
necouchman Apr 20, 2026
ab2cbb2
Merge patch branch changes to main.
necouchman Apr 20, 2026
fa74057
Merge 1.6.1 changes to patch branch.
necouchman May 5, 2026
7097d1e
Merge patch branch changes to main.
necouchman May 5, 2026
b40fe9b
Merge branch 'main' into main
enrymari May 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ public MySQLAuthenticationProviderModule(MySQLEnvironment environment)
myBatisProperties.setProperty("mybatis.pooled.pingEnabled", "true");
myBatisProperties.setProperty("mybatis.pooled.pingQuery", "SELECT 1");

// Set whether public key retrieval from the server is allowed
driverProperties.setProperty("allowPublicKeyRetrieval",
environment.getMYSQLAllowPublicKeyRetrieval() ? "true" : "false");

// Use UTF-8 in database
driverProperties.setProperty("characterEncoding", "UTF-8");

Expand Down Expand Up @@ -121,10 +125,22 @@ public MySQLAuthenticationProviderModule(MySQLEnvironment environment)
if (clientPassword != null)
driverProperties.setProperty("clientCertificateKeyStorePassword",
clientPassword);

// Get the MySQL-compatible driver to use.
mysqlDriver = environment.getMySQLDriver();

// Set the path to the server public key, if any
// Note that the property name casing is slightly different for MySQL
// and MariaDB drivers. See
// https://dev.mysql.com/doc/connector-j/en/connector-j-connp-props-security.html#cj-conn-prop_serverRSAPublicKeyFile
// and https://mariadb.com/kb/en/about-mariadb-connector-j/#infrequently-used-parameters
String publicKeyFile = environment.getMYSQLServerRSAPublicKeyFile();
if (publicKeyFile != null)
driverProperties.setProperty(
mysqlDriver == MySQLDriver.MYSQL
? "serverRSAPublicKeyFile" : "serverRsaPublicKeyFile",
publicKeyFile);

// If timezone is present, set it.
TimeZone serverTz = environment.getServerTimeZone();
if (serverTz != null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -443,4 +443,35 @@ public boolean enforceAccessWindowsForActiveSessions() throws GuacamoleException
);
}

/**
* Returns the absolute path to the public key for the server being connected to,
* if any, or null if the configuration property is unset.
*
* @return
* The absolute path to the public key for the server being connected to.
*
* @throws GuacamoleException
* If an error occurs retrieving the configuration value.
*/
public String getMYSQLServerRSAPublicKeyFile() throws GuacamoleException {
return getProperty(MySQLGuacamoleProperties.MYSQL_SERVER_RSA_PUBLIC_KEY_FILE);
}

/**
* Returns true if the database server public key should be automatically
* retrieved from the MySQL server, or false otherwise.
*
* @return
* Whether the database server public key should be automatically
* retrieved from the MySQL server.
*
* @throws GuacamoleException
* If an error occurs retrieving the configuration value.
*/
public boolean getMYSQLAllowPublicKeyRetrieval() throws GuacamoleException {
return getProperty(
MySQLGuacamoleProperties.MYSQL_ALLOW_PUBLIC_KEY_RETRIEVAL,
false);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -302,5 +302,28 @@ private MySQLGuacamoleProperties() {}
public String getName() { return "mysql-batch-size"; }

};


/**
* The absolute path to the public key for the server being connected to, if any.
*/
public static final StringGuacamoleProperty MYSQL_SERVER_RSA_PUBLIC_KEY_FILE =
new StringGuacamoleProperty() {

@Override
public String getName() { return "mysql-server-rsa-public-key-file"; }

};

/**
* Whether or not the server public key should be automatically retreived from
* the MySQL server.
*/
public static final BooleanGuacamoleProperty MYSQL_ALLOW_PUBLIC_KEY_RETRIEVAL =
new BooleanGuacamoleProperty() {

@Override
public String getName() { return "mysql-allow-public-key-retrieval"; }

};

}
Original file line number Diff line number Diff line change
Expand Up @@ -223,5 +223,10 @@ public String getMemberAttribute() throws GuacamoleException {
public MemberAttributeType getMemberAttributeType() throws GuacamoleException {
return config.getMemberAttributeType();
}

@Override
public boolean getNestedGroups() throws GuacamoleException {
return config.getNestedGroups();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -151,4 +151,9 @@ public MemberAttributeType getMemberAttributeType()
return MemberAttributeType.DN;
}

@Override
public boolean getNestedGroups() {
return false;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -234,4 +234,12 @@ public MemberAttributeType getMemberAttributeType()
);
}

@Override
public boolean getNestedGroups() throws GuacamoleException {
return environment.getProperty(
LDAPGuacamoleProperties.LDAP_NESTED_GROUPS,
DEFAULT.getNestedGroups()
);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,13 @@ public class JacksonLDAPConfiguration implements LDAPConfiguration {
@JsonProperty("member-attribute-type")
private String memberAttributeType;

/**
* The raw YAML value of {@link LDAPGuacamoleProperties#LDAP_NESTED_GROUPS}.
* If not set within the YAML, this will be false.
*/
@JsonProperty("nested-groups")
private Boolean nestedGroups;

/**
* The default configuration options for all parameters.
*/
Expand Down Expand Up @@ -434,6 +441,11 @@ public String getMemberAttribute() throws GuacamoleException {
return withDefault(memberAttribute, defaultConfig::getMemberAttribute);
}

@Override
public boolean getNestedGroups() throws GuacamoleException {
return withDefault(nestedGroups, defaultConfig::getNestedGroups);
}

@Override
public MemberAttributeType getMemberAttributeType() throws GuacamoleException {
return withDefault(LDAPGuacamoleProperties.LDAP_MEMBER_ATTRIBUTE_TYPE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,4 +334,16 @@ public interface LDAPConfiguration {
*/
MemberAttributeType getMemberAttributeType() throws GuacamoleException;

/**
* Returns whether nested groups should be included in group membership.
*
* @return
* Whether to search in nested groups.
*
* @throws GuacamoleException
* If the configuration information determining whether nested
* groups should be used cannot be retrieved.
*/
boolean getNestedGroups() throws GuacamoleException;

}
Original file line number Diff line number Diff line change
Expand Up @@ -307,4 +307,15 @@ private LDAPGuacamoleProperties() {}

};

/**
* Whether or not to search nested groups.
*/
public static final BooleanGuacamoleProperty LDAP_NESTED_GROUPS =
new BooleanGuacamoleProperty() {

@Override
public String getName() { return "ldap-nested-groups"; }

};

}
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,12 @@
import java.util.Map;
import java.util.Set;
import org.apache.directory.api.ldap.model.entry.Entry;
import org.apache.directory.api.ldap.model.entry.Value;
import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException;
import org.apache.directory.api.ldap.model.filter.AndNode;
import org.apache.directory.api.ldap.model.filter.EqualityNode;
import org.apache.directory.api.ldap.model.filter.ExprNode;
import org.apache.directory.api.ldap.model.filter.ExtensibleNode;
import org.apache.directory.api.ldap.model.filter.NotNode;
import org.apache.directory.api.ldap.model.name.Dn;
import org.apache.guacamole.auth.ldap.conf.MemberAttributeType;
Expand All @@ -55,6 +57,11 @@ public class UserGroupService {
*/
private static final Logger logger = LoggerFactory.getLogger(UserGroupService.class);

/**
* Constant for nested LDAP group matching in Active Directory
*/
private static final String LDAP_GROUP_NESTED_MATCHING_OID = "1.2.840.113556.1.4.1941";

/**
* Service for executing LDAP queries.
*/
Expand Down Expand Up @@ -225,14 +232,36 @@ public List<Entry> getParentUserGroupEntries(ConnectedLDAPConfiguration config,
groupAttributes.add(memberAttribute);

// Get all groups the user is a member of starting at the groupBaseDN,
// excluding guacConfigGroups
// excluding guacConfigGroups and evaluating nested groups
// (if enabled).

ExprNode groupFilter = config.getGroupSearchFilter();
String filterValue = userIDorDN;

if (config.getNestedGroups()) {

// Add support for nested groups using LDAP_MATCHING_RULE_IN_CHAIN
// (memberOf:1.2.840.113556.1.4.1941:=<UserDN>)
// Matching rule OID for LDAP_MATCHING_RULE_IN_CHAIN
// ** This possibly only supports Active Directory **
ExtensibleNode node = new ExtensibleNode("member");
filterValue = null;

// Explicitly set the matching rule ID and dnAttributes
node.setMatchingRuleId(LDAP_GROUP_NESTED_MATCHING_OID);
node.setDnAttributes(false);
node.setValue(new Value(userIDorDN));
groupFilter = new AndNode(
groupFilter, node
);
}
return queryService.search(
config,
config.getLDAPConnection(),
groupBaseDN,
getGroupSearchFilter(config),
groupFilter,
Collections.singleton(memberAttribute),
userIDorDN,
filterValue,
groupAttributes
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,65 @@
*/
public interface Restrictable extends Attributes {

/**
* The name of the attribute that contains the absolute date and time after
* which this restrictable object may be used. If this attribute is present
* access to to this object will be denied at any time prior to the parsed
* value of this attribute, regardless of what other restrictions may be
* present to allow access to the object at certain days/times of the week
* or from certain hosts.
*/
public static final String RESTRICT_TIME_AFTER_ATTRIBUTE_NAME = "guac-restrict-time-after";

/**
* The name of the attribute that contains a list of weekdays and times (UTC)
* that this restrictable object can be used. The presence of values within
* this attribute will automatically restrict use of the object at any times
* that are not specified.
*/
public static final String RESTRICT_TIME_ALLOWED_ATTRIBUTE_NAME = "guac-restrict-time-allowed";

/**
* The name of the attribute that contains the absolute date and time before
* which use of this restrictable object may be used. If this attribute is
* present use of the object will be denied at any time after the parsed
* value of this attribute, regardless of the presence of other restrictions
* that may allow access at certain days/times of the week or from certain
* hosts.
*/
public static final String RESTRICT_TIME_BEFORE_ATTRIBUTE_NAME = "guac-restrict-time-before";

/**
* The name of the attribute that contains a list of weekdays and times (UTC)
* that this restrictable object cannot be used. Denied times will always take
* precedence over allowed times. The presence of this attribute without
* guac-restrict-time-allowed will deny access only during the times listed
* in this attribute, allowing access at all other times. The presence of
* this attribute along with the guac-restrict-time-allowed attribute will
* deny access at any times that overlap with the allowed times.
*/
public static final String RESTRICT_TIME_DENIED_ATTRIBUTE_NAME = "guac-restrict-time-denied";

/**
* The name of the attribute that contains a list of hosts from which this
* restrictable object may be used. The presence of this attribute will
* restrict use to only users accessing Guacamole from the list of hosts
* contained in the attribute, subject to further restriction by the
* guac-restrict-hosts-denied attribute.
*/
public static final String RESTRICT_HOSTS_ALLOWED_ATTRIBUTE_NAME = "guac-restrict-hosts-allowed";

/**
* The name of the attribute that contains a list of hosts from which this
* restrictable object may not be used. The presence of this attribute,
* absent the guac-restrict-hosts-allowed attribute, will allow use from
* all hosts except the ones listed in this attribute. The presence of this
* attribute coupled with the guac-restrict-hosts-allowed attribute will
* block access from any IPs in this list, overriding any that may be
* allowed.
*/
public static final String RESTRICT_HOSTS_DENIED_ATTRIBUTE_NAME = "guac-restrict-hosts-denied";

/**
* Return the restriction state for this restrictable object at the
* current date and time. By default returns an implicit denial.
Expand Down
Loading