Database authentication
Guacamole supports authentication via MySQL, PostgreSQL, or SQL Server databases through extensions available from the project website. Using a database for authentication provides additional features, such as the ability to use load balancing groups of connections and a web-based administrative interface. Unlike the default, XML-driven authentication module, all changes to users and connections take effect immediately; users need not logout and back in to see new connections.
While most authentication extensions function independently, the database authentication can act in a subordinate role, allowing users and user groups from other authentication extensions to be associated with connections within the database. Users and groups are considered identical to those within the database if they have the same names, and the authentication result of another extension will be trusted if it succeeds. A user with an account under multiple systems will thus be able to see data from each system after successfully logging in. For more information on using the database authentication alongside other mechanisms, see Associating LDAP with a database within LDAP authentication.
To use the database authentication extension, you will need:
A supported database - currently MariaDB, MySQL, PostgreSQL, or SQL Server.
Sufficient permission to create new databases, to create new users, and to grant those users permissions.
Network access to the database from the Guacamole server.
Important
This chapter involves modifying the contents of GUACAMOLE_HOME
- the
Guacamole configuration directory. If you are unsure where GUACAMOLE_HOME
is
located on your system, please consult Configuring Guacamole before
proceeding.
Downloading the database authentication extension
The database authentication extension is available separately from the main
guacamole.war
. The link for this and all other officially-supported and
compatible extensions for a particular version of Guacamole are provided on the
release notes for that version. You can find the release notes for current
versions of Guacamole here: http://guacamole.apache.org/releases/.
The database authentication extension is packaged as a .tar.gz
file
containing several database-specific directories. Only one of the directories
within the archive will be applicable to you, depending on whether you are
using MariaDB, MySQL, PostgreSQL, or SQL Server.
Each database-specific directory contains a schema/
directory and .jar
file
(the actual Guacamole extension). The Guacamole extension .jar
will
ultimately need to be placed within GUACAMOLE_HOME/extensions
, while the JDBC
driver must be downloaded separately from the database vendor and placed within
GUACAMOLE_HOME/lib
.
Guacamole extension |
|
|---|---|
SQL schema scripts |
|
JDBC driver |
See below |
Any of the following MySQL-compatible JDBC drivers are supported for connecting Guacamole with MySQL or MariaDB:
If using the JDBC driver from MySQL, the required .jar
will be within a
.tar.gz
archive.
Guacamole extension |
|
|---|---|
SQL schema scripts |
|
JDBC driver |
Guacamole extension |
|
|---|---|
SQL schema scripts |
|
JDBC driver |
See below |
Any of the following TDS-compatible JDBC drivers are supported for connecting Guacamole to SQL Server:
Microsoft SQL Server 2000 JDBC Driver (legacy)
Creating the Guacamole database
The database authentication module will need a database to store authentication data and a user to use only for data access and manipulation. You can use an existing database and existing user, but for the sake of simplicity and security, these instructions assume you will be creating a new database and new user that will be used only by Guacamole and only for this authentication module.
You need MariaDB, MySQL, PostgreSQL, or SQL Server installed, and must have sufficient access to create and administer databases. If this is not the case, install your database of choice now. Most distributions will provide a convenient MySQL or PostgreSQL package which will set up everything for you, including the root database user, if applicable. If you’re using SQL Server, you need to install the packages on your platform of choice, and also make sure that you obtain the proper licensing for the version and edition of SQL Server you are running.
For the sake of clarity, these instructions will refer to the database as “guacamole_db”, but the database can be named whatever you like.
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 233
Server version: 5.5.29-0ubuntu<IP_ADDRESS> (Ubuntu)
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE DATABASE guacamole_db;
Query OK, 1 row affected (0.00 sec)
mysql> quit
Bye
$ ls schema/
001-create-schema.sql 002-create-admin-user.sql upgrade
$ cat schema/*.sql | mysql -u root -p guacamole_db
Enter password:
$
$ createdb guacamole_db
$ ls schema/
001-create-schema.sql 002-create-admin-user.sql
$ cat schema/*.sql | psql -d guacamole_db -f -
CREATE TYPE
CREATE TYPE
CREATE TYPE
CREATE TABLE
CREATE INDEX
...
INSERT 0 1
INSERT 0 4
INSERT 0 3
$
$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA
Password:
1> CREATE DATABASE guacamole_db;
2> GO
1> quit
$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -d guacamole_db -i schema/001-create-schema.sql
Password:
Rule bound to data type.
The new rule has been bound to column(s) of the specified user data type.
Rule bound to data type.
The new rule has been bound to column(s) of the specified user data type.
$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -d guacamole_db -i schema/002-create-admin-user.sql
Password:
(1 rows affected)
(3 rows affected)
(5 rows affected)
$
Granting Guacamole access to the database
For Guacamole to be able to execute queries against the database, you must
create a new user for the database and grant that user sufficient privileges to
manage the contents of all tables in the database. The user created for
Guacamole needs only SELECT
, UPDATE
, INSERT
, and DELETE
permissions on
all Guacamole tables. Additionally, if using PostgreSQL, the user will need
SELECT
and USAGE
permission on all sequences within all Guacamole tables.
No other permissions should be granted.
These instructions will refer to the user as “guacamole_user” but the user can be named whatever you like. Naturally, you should also choose a real password for your user rather than the string “some_password” used as a placeholder below.
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 233
Server version: 5.5.29-0ubuntu<IP_ADDRESS> (Ubuntu)
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'some_password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)
mysql> quit
Bye
$
$ psql -d guacamole_db
psql (9.3.6)
Type "help" for help.
guacamole=# CREATE USER guacamole_user WITH PASSWORD 'some_password';
CREATE ROLE
guacamole=# GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO guacamole_user;
GRANT
guacamole=# GRANT SELECT,USAGE ON ALL SEQUENCES IN SCHEMA public TO guacamole_user;
GRANT
guacamole=# \q
$
$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA
Password:
1> CREATE LOGIN guacamole_user WITH PASSWORD = 'some_password';
2> GO
1> USE guacamole_db;
2> GO
1> CREATE USER guacamole_user;
2> GO
1> ALTER ROLE db_datawriter ADD MEMBER guacamole_user;
2> ALTER ROLE db_datareader ADD MEMBER guacamole_user;
3> GO
1> quit
$
Upgrading an existing Guacamole database
If you are upgrading from an older version of Guacamole, you may need to run
one or more database schema upgrade scripts located within the
schema/upgrade/
directory. Each of these scripts is named
upgrade-pre-VERSION.sql
where VERSION
is the version of Guacamole
where those changes were introduced. They need to be run when you are upgrading
from a version of Guacamole older than VERSION
.
If there are no upgrade-pre-VERSION.sql
scripts present in the
schema/upgrade/
directory which apply to your existing Guacamole database,
then the schema has not changed between your version and the version your are
installing, and there is no need to run any database upgrade scripts.
These scripts are incremental and, when relevant, must be run in order. For
example, if you are upgrading an existing database from version
0.9.13-incubating to version 1.0.0, you would need to run the
upgrade-pre-0.9.14.sql
script (because 0.9.13-incubating is older than
0.9.14), followed by the upgrade-pre-1.0.0.sql
script (because
0.9.13-incubating is also older than 1.0.0).
Important
Because the permissions granted to the Guacamole-specific PostgreSQL user when the database was first created will not automatically be granted for any new tables and sequences, you will also need to re-grant those permissions after applying any upgrade relevant scripts:
$ psql -d guacamole_db
psql (9.3.6)
Type "help" for help.
guacamole=# GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO guacamole_user;
GRANT
guacamole=# GRANT SELECT,USAGE ON ALL SEQUENCES IN SCHEMA public TO guacamole_user;
GRANT
guacamole=# \q
$
Installing database authentication
Guacamole extensions are self-contained .jar
files which are located within
the GUACAMOLE_HOME/extensions
directory. To install the database
authentication extension, you must:
Create the
GUACAMOLE_HOME/extensions
andGUACAMOLE_HOME/lib
directories, if they do not already exist.Copy
guacamole-auth-jdbc-mysql-1.5.1.jar
orguacamole-auth-jdbc-postgresql-1.5.1.jar
orguacamole-auth-jdbc-sqlserver-1.5.1.jar
withinGUACAMOLE_HOME/extensions
, depending on whether you are using MySQL/MariaDB, PostgreSQL, or SQL Server.Copy the JDBC driver for your database to
GUACAMOLE_HOME/lib
. Without a JDBC driver for your database, Guacamole will not be able to connect and authenticate users.Configure Guacamole to use database authentication, as described below.
Important
You will need to restart Guacamole by restarting your servlet container in order to complete the installation. Doing this will disconnect all active users, so be sure that it is safe to do so prior to attempting installation. If you do not configure the database authentication properly, Guacamole will not start up again until the configuration is fixed.
Configuring Guacamole for database authentication
Additional properties must be added to guacamole.properties
for Guacamole to
properly connect to your database. These properties are specific to the
database being used, and must be set correctly for authentication to work.
The properties absolutely required by the database authentication extension are relatively few and self-explanatory, describing only how the connection to the database is to be established, and how Guacamole will authenticate when querying the database:
mysql-hostname
The hostname or IP address of the server hosting your database.
mysql-database
The name of the database that you created for Guacamole. This is given as “guacamole_db” in the examples given in this chapter.
mysql-username
The username of the user that Guacamole should use to connect to the database. This is given as “guacamole_user” in the examples given in this chapter.
mysql-password
The password Guacamole should provide when authenticating with the database. This is given as “some_password” in the examples given in this chapter.
postgresql-hostname
The hostname or IP address of the server hosting your database.
postgresql-database
The name of the database that you created for Guacamole. This is given as “guacamole_db” in the examples given in this chapter.
postgresql-username
The username of the user that Guacamole should use to connect to the database. This is given as “guacamole_user” in the examples given in this chapter.
postgresql-password
The password Guacamole should provide when authenticating with the database. This is given as “some_password” in the examples given in this chapter.
sqlserver-hostname
The hostname or IP address of the server hosting your database.
sqlserver-database
The name of the database that you created for Guacamole. This is given as “guacamole_db” in the examples given in this chapter.
sqlserver-username
The username of the user that Guacamole should use to connect to the database. This is given as “guacamole_user” in the examples given in this chapter.
sqlserver-password
The password Guacamole should provide when authenticating with the database. This is given as “some_password” in the examples given in this chapter.
A minimal guacamole.properties
configured to connect to a locally-hosted
database would look like the following:
# MySQL properties
mysql-hostname: localhost
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: some_password
# PostgreSQL properties
postgresql-hostname: localhost
postgresql-database: guacamole_db
postgresql-username: guacamole_user
postgresql-password: some_password
# SQL Server properties
sqlserver-hostname: localhost
sqlserver-database: guacamole_db
sqlserver-username: guacamole_user
sqlserver-password: some_password
Important
Be sure to specify the correct username and password for the database user you created, and to specify the correct database. Authentication will not work if these parameters are not correct.
Additional optional properties are available to control how Guacamole connects to the database server:
mysql-port
The port number of the MySQL or MariaDB database to connect to. If not specified, the standard MySQL / MariaDB port 3306 will be used.
mysql-driver
Controls which JDBC driver the extension attempts to load. By default, the installed JDBC driver will be automatically detected. Possible values are:
mysql-server-timezone
Specifies the timezone the MySQL server is configured to run in. While the MySQL driver attempts to auto-detect the timezone in use by the server, there are many cases where the timezone provided by the operating system is either unknown by Java, or matches multiple timezones. In these cases MySQL may either complain or refuse the connection unless the timezone is specified as part of the connection. This property allows the timezone of the server to be specified so that the connection can continue and the JDBC driver can properly translate timestamps. The property accepts timezones in the following formats:
- Region/Locale
Well-known TimeZone Identifiers, in the Region/Locale format. Examples are:
mysql-server-timezone: America/Los_Angeles mysql-server-timezone: Africa/Johannesburg mysql-server-timezone: China/Shanghai
- GMT+/-HH:MM
GMT or custom timezones specified by GMT offset. Examples of valid GMT specifications are:
mysql-server-timezone: GMT mysql-server-timezone: GMT-00:00 mysql-server-timezone: GMT+0000 mysql-server-timezone: GMT-0
Examples of custom timezones specified by GMT offsets are:
mysql-server-timezone: GMT+0130 mysql-server-timezone: GMT-0430 mysql-server-timezone: GMT+06:00 mysql-server-timezone: GMT-9
The MySQL Driver implements several parameters specific to configuring SSL for secure connections to MySQL servers that support or require encrypted communications. Older versions of MySQL Connector/J have known issues with SSL verification - if you experience problems connecting to SSL-secured MySQL databases it is recommended that you update to a current version of the driver.
mysql-ssl-mode
This property sets the SSL mode that the JDBC driver will attempt to use when communicating with the remote MySQL server. The values for this property match the standard values supported by the MySQL and MariaDB JDBC drivers:
- disabled
Do not use SSL, and fail if the server requires it. For compatibility this will also set the legacy JDBC driver property useSSL to false.
- preferred
Prefer SSL, but fall back to plain-text if an SSL connection cannot be negotiated. This is the default.
- required
Require SSL connections, and fail if SSL cannot be negotiated. This mode does not perform any validition checks on the certificate in use by the server, the issuer, etc.
- verify-ca
Require SSL connections, and check to make sure that the certificate issuer is known to be valid.
- verify-identity
Require SSL connections, and check to make sure that the server certificate is issued by a known authority, and that the identity of the server matches the identity on the certificate.
mysql-ssl-trust-store
The file that will store trusted SSL certificates for the JDBC driver to use when validating CA and server certificates. This should be a JKS-formatted certificate store. This property is optional and defaults to Java’s normal trusted certificate locations, which vary based on the version of Java in use.
mysql-ssl-trust-password
The password to use to access the SSL trusted certificate store, if one is required. By default no password will be used.
mysql-ssl-client-store
The file that contains the client certificate to use when making SSL connections to the MySQL server. This should be a JKS-formatted certificate store that contains a private key and certificate pair. This property is optional, and by default no client certificate will be used for the SSL connection.
mysql-ssl-client-password
The password to use to access the client certificate store, if one is required. By default no password will be used.
postgresql-port
The port number of the PostgreSQL database to connect to. If not specified, the standard PostgreSQL port 5432 will be used.
postgresql-ssl-mode
This property sets the SSL mode that the JDBC extension will attempt to use when communicating with the remote Postgres server. The values for this property match the standard values supported by the Postgres JDBC driver:
- disable
Do not use SSL, and fail if the server requires it.
- allow
If the server requires encryption use it, otherwise prefer unencrypted connections.
- prefer
Try SSL connections, first, but allow unencrypted connections if the server does not support SSL or if SSL negotiations fail. This is the default.
- require
Require SSL connections, but implicitly trust all server certificates and authorities.
- verify-ca
Require SSL connections, and verify that the server certificate is issued by a known certificate authority.
- verify-full
Require SSL connections, verifying that the server certificate is issued by a known authority, and that the name on the certificate matches the name of the server.
postgresql-ssl-cert-file
The file containing the client certificate to be used when making an SSL-encrtyped connection to the Postgres server, in PEM format. This property is optional, and will be ignored if the SSL mode is set to disable.
postgresql-ssl-key-file
The file containing the client private key to be used when making an SSL-encrypted connection to the Postgres server, in PEM format. This property is optional, and will be ignored if the SSL mode is set to disable.
postgresql-ssl-root-cert-file
The file containing the root and intermedidate certificates against which the server certificate will be verified when making an SSL-encrypted connection to the Postgres server. This file should contain one or more PEM-formatted authority certificates. This property is optional, and will only be used if SSL mode is set to verify-ca or verify-full.
If SSL is set to one of the verification modes and this property is not specified, the JDBC driver will attempt to use the
.postgresql/root.crt
file from the home directory of the user running the web application server (e.g. Tomcat). If this property is not specified and the default file does not exist, the Postgres JDBC driver will fail to connect to the server.postgresql-ssl-key-password
The password that will be used to access the client private key file, if the client private key is encrypted. This property is optional, and is only used if the
postgresql-ssl-key-file
property is set and SSL is enabled.postgresql-default-statement-timeout
The number of seconds the driver will wait for a response from the database, before aborting the query. A value of 0 (the default) means the timeout is disabled.
postgresql-socket-timeout
The number of seconds to wait for socket read operations. If reading from the server takes longer than this value, the connection will be closed. This can be used to handle network problems such as a dropped connection to the database. Similar to
postgresql-default-statement-timeout
, it will also abort queries that take too long. A value of 0 (the default) means the timeout is disabled.
sqlserver-port
The port number of the SQL Server database to connect to. If not specified, the standard SQL Server port 1433 will be used.
sqlserver-driver
The specific TDS-compatible JDBC driver to expect to have been installed. Multiple JDBC drivers are available that support SQL Server. If not using the Microsoft driver, this property must be specified to define the driver that will be used. Possible values are:
- microsoft2005
The current Microsoft JDBC Driver for SQL Server, supporting SQL Server 2005 and later. This is the default.
- microsoft
The legacy Microsoft driver for SQL Server 2000.
- jtds
The open source jTDS driver.
- datadirect
sqlserver-instance
The instance name that the SQL Server driver should attempt to connect to, if not the default SQL Server instance. This instance name is configured during the SQL Server installation. This property is optional, and most installations should work without the need to specify an instance name.
Enforcing password policies
Configuration options are available for enforcing rules intended to encourage
password complexity and regular changing of passwords. None of these options
are enabled by default, but can be selectively enabled through additional
properties in guacamole.properties
.
Password complexity
Administrators can require that passwords have a certain level of complexity, such as having both uppercase and lowercase letters (“multiple case”), at least one digit, or at least one symbol, and can prohibit passwords from containing the user’s own username.
With respect to password content, the database authentication defines a “digit” as any numeric character and a “symbol” is any non-alphanumeric character. This takes non-English languages into account, thus a digit is not simply “0” through “9” but rather any character defined in Unicode as numeric, and a symbol is any character which Unicode does not define as alphabetic or numeric.
The check for whether a password contains the user’s own username is performed in a case-insensitive manner. For example, if the user’s username is “phil”, the passwords “ch!0roPhil” and “PHIL-o-dendr0n” would still be prohibited.
mysql-user-password-min-length: 8
mysql-user-password-require-multiple-case: true
mysql-user-password-require-symbol: true
mysql-user-password-require-digit: true
mysql-user-password-prohibit-username: true
postgresql-user-password-min-length: 8
postgresql-user-password-require-multiple-case: true
postgresql-user-password-require-symbol: true
postgresql-user-password-require-digit: true
postgresql-user-password-prohibit-username: true
sqlserver-user-password-min-length: 8
sqlserver-user-password-require-multiple-case: true
sqlserver-user-password-require-symbol: true
sqlserver-user-password-require-digit: true
sqlserver-user-password-prohibit-username: true
Password age / expiration
“Password age” refers to two separate concepts:
Requiring users to change their password after a certain amount of time has elapsed since the last password change (maximum password age).
Preventing users from changing their password too frequently (minimum password age).
While it may seem strange to prevent users from changing their password too frequently, it does make sense if you are concerned that rapid password changes may defeat password expiration (users could immediately change the password back) or tracking of password history (users could cycle through passwords until the history is exhausted and their old password is usable again).
By default, the database authentication does not apply any limits to password age, and users with permission to change their passwords may do so as frequently or infrequently as they wish. Password age limits can be enabled using a pair of properties, each accepting values given in units of days:
mysql-user-password-min-age: 7
mysql-user-password-max-age: 90
postgresql-user-password-min-age: 7
postgresql-user-password-max-age: 90
sqlserver-user-password-min-age: 7
sqlserver-user-password-max-age: 90
Important
So that administrators can always intervene in the case that a password needs to be reset despite restrictions, the minimum age restriction does not apply to any user with permission to administer the system.
Preventing password reuse
If desired, Guacamole can keep track of each user’s most recently used passwords, and will prohibit reuse of those passwords until the password has been changed sufficiently many times. By default, Guacamole will not keep track of old passwords.
Note that these passwords are hashed in the same manner as each user’s current password. When a user’s password is changed, the hash, salt, etc. currently stored for that user is actually just copied verbatim (along with a timestamp) into a list of historical passwords, with older entries from this list being automatically deleted.
mysql-user-password-history-size: 6
postgresql-user-password-history-size: 6
sqlserver-user-password-history-size: 6
Concurrent use of Guacamole connections
The database authentication module provides configuration options to restrict
concurrent use of connections or connection groups. These options are set
through guacamole.properties
and specify the default concurrency policies for
connections and connection groups. The values set through the properties can be
overridden later on a per-connection basis using the administrative interface:
mysql-default-max-connections: 1
mysql-default-max-group-connections: 1
postgresql-default-max-connections: 1
postgresql-default-max-group-connections: 1
sqlserver-default-max-connections: 1
sqlserver-default-max-group-connections: 1
These properties are not required, but with the above properties in place, users attempting to use a connection or group that is already in use will be denied access. By default, concurrent access is allowed.
Concurrent access can also be restricted such that a particular user may only
use a connection or group a certain number of times. By default, per-user
concurrent use is limited for connection groups (to avoid allowing a single
user to exhaust the contents of the group) but otherwise unrestricted. This
default behavior can be modified through guacamole.properties
or the
per-connection settings exposed in the administrative interface:
mysql-default-max-connections-per-user: 0
mysql-default-max-group-connections-per-user: 0
postgresql-default-max-connections-per-user: 0
postgresql-default-max-group-connections-per-user: 0
sqlserver-default-max-connections-per-user: 0
sqlserver-default-max-group-connections-per-user: 0
If you wish to impose an absolute limit on the number of connections that can be established through Guacamole, ignoring which users or connections are involved, this can be done as well. By default, Guacamole will impose no such limit:
mysql-absolute-max-connections: 0
postgresql-absolute-max-connections: 0
sqlserver-absolute-max-connections: 0
Restricting authentication to database users only
By default, users will be allowed access to Guacamole as long as they are authenticated by at least one extension. If database authentication is in use, and a user is not associated with the database, then that user will be allowed access to Guacamole if another extension grants this access, and will be provided with a view of the data exposed by other extensions for that user account.
In some situations, such as when combining LDAP with a database, it would be preferable to let the database have the last word regarding whether a user should be allowed into the system: restricting access to only those users which exist in the database, and explicitly denying authentication through all other means unless that user has been associated with the database as well. This behavior can be forced by setting properties which declare that database user accounts are required:
mysql-user-required: true
postgresql-user-required: true
sqlserver-user-required: true
With the above properties set, successful authentication attempts for users which are not associated with the database will be vetoed by the database authentication. Guacamole will report that the login is invalid, as if the user does not exist at all.
Auto-creating database users
Guacamole supports the ability to layer authentication modules on top of one another such that users successfully authenticated from one extension (e.g. LDAP) can be assigned permissions to connections in another extension (e.g. JDBC). Other extensions, like the TOTP extension, rely on the database extension to be able to store information for various user accounts. In these situations it can be difficult to have to manually create user accounts within the database extension.
The database extension provides a mechanism for enabling auto-creation of user
accounts that successfully authenticate from other extensions. This
functionality is disabled by default, but can be enabled in each of the
supported database extensions by enabling the appropriate option in
guacamole.properties
. The resulting accounts will only have READ
access to
themselves until additional permissions are granted, either explicitly by the
administrator or by permissions assigned to groups of which the user is a
member.
mysql-auto-create-accounts: true
postgresql-auto-create-accounts: true
sqlserver-auto-create-accounts: true
Completing the installation
Guacamole will only reread guacamole.properties
and load newly-installed
extensions during startup, so your servlet container will need to be restarted
before the database authentication will take effect. Restart your servlet
container and give the new authentication a try.
Important
You only need to restart your servlet container. You do not need to restart guacd.
guacd is completely independent of the web application and does not deal with
guacamole.properties
or the authentication system in any way. Since you are
already restarting the servlet container, restarting guacd as well technically
won’t hurt anything, but doing so is completely pointless.
If Guacamole does not come back online after restarting your servlet container, check the logs. Problems in the configuration of the database authentication extension will prevent Guacamole from starting up, and any such errors will be recorded in the logs of your servlet container.
Logging in
The default Guacamole user created by the provided SQL scripts is
“guacadmin
”, with a default password of “guacadmin
”. Once you have verified
that the database authentication is working, you should change your password
immediately.
More detailed instructions for managing users and connections is given in Administration.
Modifying data manually
If necessary, it is possible to modify the data backing the authentication module manually by executing SQL statements against the database. In general use, this will not be common, but if you need to bulk-insert a large number of users or connections, or you wish to translate an existing configuration automatically, you will need to know how everything is laid out at a high level.
This section assumes knowledge of SQL and your chosen database, and that whatever you need to do can be accomplished if only you had high-level information about Guacamole’s SQL schema.
Entities
Every user and user group has a corresponding entry in the guacamole_entity
table which serves as the basis for assignment of a unique name, permissions,
as well as relations which are common to both users and groups like group
membership. Each entity has a corresponding name which is unique across all
other entities of the same type.
If deleting a user or user group, the corresponding entity should also be deleted. As any user or group which points to the entity will be deleted automatically when the entity is deleted through cascading deletion, it is advisable to use the entity as the basis for any delete operation.
The guacamole_entity
table contains the following columns:
entity_id
The unique integer associated with each entity (user or user group). This value is generated automatically when a new entry is inserted into the
guacamole_entity
table and is distinct from the unique integer associated with the user entry inguacamole_user
or the user group entry inguacamole_user_group
.name
The unique name associated with each user or group. This value must be specified manually, and must be different from any existing user or group in the table. The name need only be unique relative to the names of other entities having the same type (a user may have the same name as a group).
type
The type of this entity. This can be either
USER
orUSER_GROUP
.
Users
Every user has a corresponding entry in the guacamole_user
and
guacamole_entity
tables. Each user has a
corresponding unique username, specified via guacamole_entity
, and salted
password. The salted password is split into two columns: one containing the
salt, and the other containing the password hashed with SHA-256.
If deleting a user, the corresponding entity should also be deleted. As any user which points to the entity will be deleted automatically when the entity is deleted through cascading deletion, it is advisable to use the entity as the basis for any delete operation.
The guacamole_user
table contains the following columns:
user_id
The unique integer associated with each user. This value is generated automatically when a new entry is inserted into the
guacamole_user
table.entity_id
The value of the
entity_id
column of theguacamole_entity
entry representing this user.password_hash
The result of hashing the user’s password concatenated with the contents of
password_salt
using SHA-256. The salt is appended to the password prior to hashing.Although passwords set through Guacamole will always be salted, it is possible to use unsalted password hashes when inserted manually or through an external system. If
password_salt
isNULL
, thepassword_hash
will be handled as a simple unsalted hash of the password.password_salt
A 32-byte random value. When a new user is created from the web interface, this value is randomly generated using a cryptographically-secure random number generator.
This will always be set for users whose passwords are set through Guacamole, but it is possible to use unsalted password hashes when inserted manually or through an external system. If
password_salt
isNULL
, thepassword_hash
will be handled as a simple unsalted hash of the password.password_date
The date (and time) that the password was last changed. When a password is changed via the Guacamole interface, this value is updated. This, along with the contents of the
guacamole_user_password_history
table, is used to enforce password policies.disabled
Whether login attempts as this user account should be rejected. If this column is set to
TRUE
or1
, login attempts by this user will be rejected as if the user did not exist. By default, user accounts are not disabled, and login attempts will succeed if the user provides the correct password.expired
If set to
TRUE
or1
, requires that the user reset their password prior to fully logging in. The user will be presented with a password reset form, and will not be allowed to log into Guacamole until the password has been changed. By default, user accounts are not expired, and no password reset will be required upon login.access_window_start
The time of day (not date) after which this user account may be used. If
NULL
, this restriction does not apply. If set to non-NULL
, attempts to log in after the specified time will be allowed, while attempts to log in before the specified time will be denied.access_window_end
The time of day (not date) after which this user account may not be used. If
NULL
, this restriction does not apply. If set to non-NULL
, attempts to log in after the specified time will be denied, while attempts to log in before the specified time will be allowed.valid_from
The date (not time of day) after which this user account may be used. If
NULL
, this restriction does not apply. If set to non-NULL
, attempts to log in after the specified date will be allowed, while attempts to log in before the specified date will be denied.valid_until
The date (not time of day) after which this user account may not be used. If
NULL
, this restriction does not apply. If set to non-NULL
, attempts to log in after the specified date will be denied, while attempts to log in before the specified date will be allowed.timezone
The time zone to use when interpreting the
access_window_start
,access_window_end
,valid_from
, andvalid_until
values. This value may be any JavaTimeZone
ID, as defined bygetAvailableIDs()
though the Guacamole management interface will only present a subset of these time zones.full_name
The user’s full name. Unlike the username, this name need not be unique; it is optional and is meant for display purposes only.  User accounts with no associated full name should have this column set to
NULL
.email_address
The user’s email address, if any. This value is optional, need not be unique relative to other defined users, and is meant for display purposes only.  If the user has no associated email address, this column should be set to
NULL
.organization
The name of the organization, company, etc. that the user is affiliated with. This value is optional and is meant for display purposes only.  Users with no associated organization should have this column set to
NULL
.organizational_role
The role or title of the user at the organization described by the organization column. This value is optional and is used for display purposes only.  Users with no associated organization (or specific role/title at that organization) should have this column set to
NULL
.
Important
If you choose to manually set unsalted password hashes, please be sure you understand the security implications of doing so.
In the event that your database is compromised, finding the password for a salted hash is computationally infeasible, but finding the password for an unsalted hash is often not. In many cases, the password which corresponds to an unsalted hash can be found simply by entering the hash into a search engine like Google.
If creating a user manually, the main complication is the salt, which must be
determined before the INSERT
statement can be constructed, but this can be
dealt with using variables. For MySQL:
-- Generate salt
SET @salt = UNHEX(SHA2(UUID(), 256));
-- Create base entity entry for user
INSERT INTO guacamole_entity (name, type)
VALUES ('myuser', 'USER');
-- Create user and hash password with salt
INSERT INTO guacamole_user (
entity_id,
password_salt,
password_hash,
password_date
)
SELECT
entity_id,
@salt,
UNHEX(SHA2(CONCAT('mypassword', HEX(@salt)), 256)),
CURRENT_TIMESTAMP
FROM guacamole_entity
WHERE
name = 'myuser'
AND type = 'USER';
This sort of statement is useful for both creating new users or for changing passwords, especially if all administrators have forgotten theirs.
If you are not using MySQL, or you are using a version of MySQL that lacks the
SHA2 function, you will need to calculate the SHA-256 value manually (by using
the sha256sum
command, for example).
Password history
When a user’s password is changed, a copy of the previous password’s
hash and salt is made within the guacamole_user_password_history
.
Each entry in this table is associated with the user whose password
changed, along with the date that password first applied.
Old entries within this table are automatically deleted on a per-user basis depending on the requirements of the password policy. For example, if the password policy has been configured to require that users not reuse any of their previous six passwords, then there will be no more than six entries in this table for each user.
password_history_id
The unique integer associated with each password history record. This value is generated automatically when a new entry is inserted into the
guacamole_user_password_history
table.user_id
The value of the
user_id
column from the entry inguacamole_user
associated with the user who previously had this password.password_hash
The hashed password specified within the
password_hash
column of
guacamole_user
prior to the password being changed.In most cases, this will be a salted hash, though it is possible to force the use of unsalted hashes when making changes to the database manually or through an external system.
password_salt
The salt value specified within the
password_salt
column ofguacamole_user
prior to the password being changed.This will always be set for users whose passwords are set through Guacamole, but it is possible to use unsalted password hashes when inserted manually or through an external system, in which case this may be
NULL
.password_date
The date (and time) that the password was set. The time that the password ceased being used is recorded either by the
password_date
of the next related entry inguacamole_user_password_history
orpassword_date
ofguacamole_user
(if there is no such history entry).
Login history
When a user logs in or out, a corresponding entry in the
guacamole_user_history
table is created or updated respectively.
Each entry is associated with the user that logged in and the time their
session began. If the user has logged out, the time their session ended
is also stored.
It is very unlikely that a user will need to update this table, but
knowing the structure is potentially useful if you wish to generate a
report of Guacamole usage. The guacamole_user_history
table has the
following columns:
history_id
The unique integer associated with each history record. This value is generated automatically when a new entry is inserted into the
guacamole_user_history
table.user_id
The value of the
user_id
from the entry inguacamole_user
associated with the user that logged in. If the user no longer exists, this will beNULL
.username
The username associated with the user at the time that they logged in. This username value is not guaranteed to uniquely identify a user, as the original user may be subsequently renamed or deleted.
remote_host
The hostname or IP address of the machine that the user logged in from, if known. If unknown, this will be
NULL
.start_date
The time at which the user logged in. Despite its name, this column also stores time information in addition to the date.
end_date
The time at which the user logged out. If the user is still active, the value in this column will be
NULL
. Despite its name, this column also stores time information in addition to the date.
User groups
Similar to users, every user group has a
corresponding entry in the guacamole_user_group
and
guacamole_entity
tables. Each user group has a
corresponding unique name specified via guacamole_entity
.
If deleting a user group, the corresponding entity should also be deleted. As any user group which points to the entity will be deleted automatically when the entity is deleted through cascading deletion, it is advisable to use the entity as the basis for any delete operation.
The guacamole_user_group
table contains the following columns:
user_group_id
The unique integer associated with each user group. This value is generated automatically when a new entry is inserted into the
guacamole_user_group
table.entity_id
The value of the
entity_id
column of theguacamole_entity
entry
representing this user group.disabled
Whether membership within this group should be taken into account when determining the permissions granted to a particular user. If this column is set to
TRUE
or1
, membership in this group will have no effect on user permissions, whether those permissions are granted to this group directly or indirectly through the groups that this group is a member of. By default, user groups are not disabled, and permissions granted to a user through the group will be taken into account.
Membership within a user group is dictated through entries in the
guacamole_user_group_member
table. As both users and user groups may be
members of groups, each entry associates the containing group with the entity
of the member.
The guacamole_user_group_member
table contains the following columns:
user_group_id
The
user_group_id
value of the user group having the specified member.member_entity_id
The
entity_id
value of the user or user group that is a member of the specified group.
Connections and parameters
Each connection has an entry in the guacamole_connection
table, with a
one-to-many relationship to parameters, stored as name/value pairs in the
guacamole_connection_parameter
table.
The guacamole_connection
table is simply a pairing of a unique and
descriptive name with the protocol to be used for the connection. It contains
the following columns:
connection_id
The unique integer associated with each connection. This value is generated automatically when a new entry is inserted into the
guacamole_connection
table.connection_name
The unique name associated with each connection. This value must be specified manually, and must be different from any existing connection name in the same connection group. References to connections in other tables use the value from
connection_id
, notconnection_name
.protocol
The protocol to use with this connection. This is the name of the protocol that should be sent to guacd when connecting, for example “
vnc
” or “rdp
”.parent_id
The unique integer associated with the connection group containing this connection, or
NULL
if this connection is within the root group.max_connections
The maximum number of concurrent connections to allow to this connection at any one time regardless of user.
NULL
will use the default value specified inguacamole.properties
and a value of0
denotes unlimited.max_connections_per_user
The maximum number of concurrent connections to allow to this connection
at any one time from a single user.NULL
will use the default value
specified inguacamole.properties
and a value of0
denotes unlimited.proxy_hostname
The hostname or IP address of the Guacamole proxy daemon (guacd) which should be used for this connection. If
NULL
, the value defined with theguacd-hostname
property inguacamole.properties
will be used.proxy_port
The TCP port number of the Guacamole proxy daemon (guacd) which should be used for this connection. If
NULL
, the value defined with theguacd-port
property inguacamole.properties
will be used.proxy_encryption_method
The encryption method which should be used when communicating with the Guacamole proxy daemon (guacd) for this connection. This can be either
NONE
, for no encryption, orSSL
, for SSL/TLS. IfNULL
, the encryption method will be dictated by theguacd-ssl
property inguacamole.properties
.connection_weight
The weight for a connection, used for applying weighted load balancing algorithms when connections are part of a
BALANCING
group. This is an integer value, where values1
or greater will weight the connection relative to other connections in that group, and values below1
cause the connection to be disabled in the group. IfNULL
, the connection will be assigned a default weight of1
.failover_only
Whether this connection should be used for failover situations only, also known as a “hot spare”. If this column is set to
TRUE
or1
, this connection will be used only when another connection within the sameBALANCING
connection group has failed due to an error within the remote desktop.Connection groups will always transparently switch to the next available connection in the event of remote desktop failure, regardless of the value of this column. This column simply dictates whether a particular connection should be reserved for such situations, and left unused otherwise.
This column only has an effect on connections within
BALANCING
groups.
As there are potentially multiple parameters per connection, where the names of
each parameter are completely arbitrary and determined only by the protocol in
use, every parameter for a given connection has an entry in table
guacamole_connection_parameter
table associated with its corresponding
connection. This table contains the following columns:
connection_id
The
connection_id
value from the connection this parameter is for.parameter_name
The name of the parameter to set. This is the name listed in the documentation for the protocol specified in the associated connection.
parameter_value
The value to assign to the parameter named. While this value is an arbitrary string, it must conform to the requirements of the protocol as documented for the connection to be successful.
Adding a connection and corresponding parameters is relatively easy compared to adding a user as there is no salt to generate nor password to hash:
-- Create connection
INSERT INTO guacamole_connection (connection_name, protocol) VALUES ('test', 'vnc');
-- Determine the connection_id
SELECT * FROM guacamole_connection WHERE connection_name = 'test' AND parent_id IS NULL;
-- Add parameters to the new connection
INSERT INTO guacamole_connection_parameter VALUES (1, 'hostname', 'localhost');
INSERT INTO guacamole_connection_parameter VALUES (1, 'port', '5901');
Usage history
When a connection is initiated or terminated, a corresponding entry in the
guacamole_connection_history
table is created or updated respectively. Each
entry is associated with the user using the connection, the connection itself,
the sharing profile in use (if the
connection is being shared), and the time the connection started. If the
connection has ended, the end time is also stored.
It is very unlikely that a user will need to update this table, but knowing the
structure is potentially useful if you wish to generate a report of Guacamole
usage. The guacamole_connection_history
table has the following columns:
history_id
The unique integer associated with each history record. This value is generated automatically when a new entry is inserted into the
guacamole_connection_history
table.user_id
The value of the
user_id
from the entry inguacamole_user
associated with the user using the connection. If the user no longer exists, this will beNULL
.username
The username associated with the user at the time that they used the connection. This username value is not guaranteed to uniquely identify a user, as the original user may be subsequently renamed or deleted.
connection_id
The value of the
connection_id
from the entry inguacamole_connection
associated the connection being used. If the connection associated with the history record no longer exists, this will beNULL
.connection_name
The name associated with the connection at the time that it was used.
sharing_profile_id
The value of the
sharing_profile_id
from the entry inguacamole_sharing_profile
associated the sharing profile being used to access the connection. If the connection is not being shared (no sharing profile is being used), or if the sharing profile associated with the history record no longer exists, this will beNULL
.sharing_profile_name
The name associated with the sharing profile being used to access the connection at the time this history entry was recorded. If the connection is not being shared, this will be
NULL
.start_date
The time at which the connection was started by the user specified. Despite its name, this column also stores time information in addition to the date.
end_date
The time at which the connection ended. If the connection is still active, the value in this column will be
NULL
. Despite its name, this column also stores time information in addition to the date.
Connection groups
Each connection group has an entry in the guacamole_connection_group
table,
with a one-to-many relationship to other groups and connections.
The guacamole_connection_group
table is simply a pairing of a unique and
descriptive name with a group type, which can be either ORGANIZATIONAL
or
BALANCING
. It contains the following columns:
connection_group_id
The unique integer associated with each connection group. This value is generated automatically when a new entry is inserted into the
guacamole_connection_group
table.connection_group_name
The unique name associated with each connection group. This value must be specified manually, and must be different from any existing connection group name in the same connection group. References to connections in other tables use the value from
connection_group_id
, notconnection_group_name
.type
The type of this connection group. This can be either
ORGANIZATIONAL
orBALANCING
.parent_id
The unique integer associated with the connection group containing this connection group, or
NULL
if this connection group is within the root group.max_connections
The maximum number of concurrent connections to allow to this connection group at any one time regardless of user.
NULL
will use the default value specified inguacamole.properties
and a value of0
denotes unlimited. This only has an effect onBALANCING
groups.max_connections_per_user
The maximum number of concurrent connections to allow to this connection group at any one time from a single user.
NULL
will use the default value specified inguacamole.properties
and a value of0
denotes unlimited. This only has an effect onBALANCING
groups.enable_session_affinity
Whether session affinity should apply to this connection group. If this column is set to
TRUE
or1
, users will be consistently routed to the same underlying connection until they log out. The normal balancing behavior will only apply for each user’s first connection attempt during any one Guacamole session. By default, session affinity is not enabled, and connections will always be balanced across the entire connection group. This only has an effect onBALANCING
groups.
Adding a connection group is even simpler than adding a new connection as there are no associated parameters stored in a separate table:
-- Create connection group
INSERT INTO guacamole_connection_group (connection_group_name, type)
VALUES ('test', 'ORGANIZATIONAL');
Permissions
There are several permissions tables in the schema which correspond to the types of permissions in Guacamole’s authentication model: system permissions, which control operations that affect the system as a whole, and permissions which control operations that affect specific objects within the system, such as users, connections, or groups.
System permissions
System permissions are defined by entries in the guacamole_system_permission
table. Each entry grants permission for a specific user or user group to
perform a specific system operation.
The guacamole_system_permission
table contains the following columns:
entity_id
The value of the
entity_id
column of the entry associated with the user or user group owning this permission.permission
The permission being granted. This column can have one of six possible values:
ADMINISTER
, which grants the ability to administer the entire system (essentially a wildcard permission),CREATE_CONNECTION
, which grants the ability to create connections,CREATE_CONNECTION_GROUP
, which grants the ability to create connections groups,CREATE_SHARING_PROFILE
, which grants the ability to create sharing profiles,CREATE_USER
, which grants the ability to create users, orCREATE_USER_GROUP
, which grants the ability to create user groups.
User permissions
User permissions are defined by entries in the guacamole_user_permission
table. Each entry grants permission for a specific user or user group to
perform a specific operation on an existing user.
The guacamole_user_permission
table contains the following columns:
entity_id
The value of the
entity_id
column of the entry associated with the user or user group owning this permission.affected_user_id
The value of the
user_id
column of the entry associated with the user affected by this permission. This is the user that would be the object of the operation represented by this permission.permission
The permission being granted. This column can have one of four possible values:
ADMINISTER
, which grants the ability to add or remove permissions which affect the user,READ
, which grants the ability to read data associated with the user,UPDATE
, which grants the ability to update data associated with the user, orDELETE
, which grants the ability to delete the user.
User group permissions
User group permissions are defined by entries in the
guacamole_user_group_permission
table. Each entry grants permission for a
specific user or user group to perform a specific operation on an existing user
group.
The guacamole_user_group_permission
table contains the following columns:
entity_id
The value of the
entity_id
column of the entry associated with the user or user group owning this permission.affected_user_group_id
The value of the
user_group_id
column of the entry associated with the user group affected by this permission. This is the user group that would be the object of the operation represented by this permission.permission
The permission being granted. This column can have one of four possible values:
ADMINISTER
, which grants the ability to add or remove permissions which affect the user group,READ
, which grants the ability to read data associated with the user group,UPDATE
, which grants the ability to update data associated with the user group, orDELETE
, which grants the ability to delete the user group.
Connection permissions
Connection permissions are defined by entries in the
guacamole_connection_permission
table. Each entry grants permission for a
specific user or user group to perform a specific operation on an existing
connection.
The guacamole_connection_permission
table contains the following columns:
entity_id
The value of the
entity_id
column of the entry associated with the user or user group owning this permission.connection_id
The value of the
connection_id
column of the entry associated with the connection affected by this permission. This is the connection that would be the object of the operation represented by this permission.permission
The permission being granted. This column can have one of four possible values:
ADMINISTER
, which grants the ability to add or remove permissions which affect the connection,READ
, which grants the ability to read data associated with the connection (a prerequisite for connecting),UPDATE
, which grants the ability to update data associated with the connection, orDELETE
, which grants the ability to delete the connection.
Connection group permissions
Connection group permissions are defined by entries in the
guacamole_connection_group_permission
table. Each entry grants permission for
a specific user or user group to perform a specific operation on an existing
connection group.
The guacamole_connection_group_permission
table contains the following
columns:
entity_id
The value of the
entity_id
column of the entry associated with the user or user group owning this permission.connection_group_id
The value of the
connection_group_id
column of the entry associated with the connection group affected by this permission. This is the connection group that would be the object of the operation represented by this permission.permission
The permission being granted. This column can have one of four possible values:
ADMINISTER
, which grants the ability to add or remove permissions which affect the connection group,READ
, which grants the ability to read data associated with the connection group,UPDATE
, which grants the ability to update data associated with the connection group, orDELETE
, which grants the ability to delete the connection group (and implicitly its contents).


Attention
Please take a moment to review these three important notes as they may affect your payment:
- During the study, please do not use the BACK or REFRESH buttons. If you press one of these buttons, the experiment may restart and you will lose all of your progress. If that happens, you may not be able to complete the study.
- Please make sure that you complete this study on your own and without help from others, ideally in a quiet room, and without any multitasking.
- We will not compensate participants whose performance shows evidence of random responding or lack of engagement with the task. Please note that if we detect such behavior from your account, you may be permanently excluded from all of our future studies.


SweetFreeStuff.com
///////////////////////////////////////////
Free M&Ms, 16 oz Coke, 32 oz Drink, and Corn Dog at Murphy USA
Posted: 05 Nov 2014 09:38 AM PST
http://feedproxy.google.com/&edburner&utm_medium=email
Sign up or log in to your account to get the coupons. Free MM’s, 16 oz
Coke, 32 oz Drink, and Corn Dog at Murphy USA
The post Free MM’s, 16 oz Coke, 32 oz Drink, and Corn Dog at Murphy USA
appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to Brides Magazine
Posted: 05 Nov 2014 05:52 AM PST
http://feedproxy.google.com/&edburner&utm_medium=email
The post Free Subscription to Brides Magazine appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
FREE ½ lb. Bag of Petcurean Dog or Cat Food (Coupon)
Posted: 04 Nov 2014 04:01 PM PST
http://feedproxy.google.com/&edburner&utm_medium=email
FREE ½ lb. Bag of Petcurean Dog or Cat Food (Coupon)
The post FREE ½ lb. Bag of Petcurean Dog or Cat Food (Coupon) appeared
first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Huggies Little Snugglers Diapers Sample
Posted: 04 Nov 2014 03:55 PM PST
http://feedproxy.google.com/&edburner&utm_medium=email
Free Huggies Little Snugglers Diapers Sample
The post Free Huggies Little Snugglers Diapers Sample appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Seventh Generation Diapers w/ Photo Submission
Posted: 04 Nov 2014 03:03 PM PST
http://feedproxy.google.com/&edburner&utm_medium=email
Show us your baby (or your bump!) on Instagram or Twitter with the hashtag
ample 2-pack in your choice of size. Free
Seventh Generation Diapers w/ Photo Submission
The post Free Seventh Generation Diapers w/ Photo Submission appeared first
on SweetFreeStuff.com.


Font-Size:
State Policies
| States | Medical | Recreational | Decriminalized | Hemp | More Info |
|---|---|---|---|---|---|
| Alabama | Only Local | Authorized State | NORML AL | ||
| Alaska | x | Authorized State | NORML AK | ||
| Arizona | x | Authorized State | NORML AZ | ||
| Arkansas | x | Only Local | Authorized State | NORML AK | |
| California | x | x | Throughout the State | Authorized State | NORML CA |
| Colorado | x | x | Throughout the State | Authorized State | NORML CO |
| Connecticut | x | To Some Degree | Authorized State | NORML CT | |
| Delaware | x | To Some Degree | Authorized State | NORML DE | |
| Florida | x | Only Local | Authorized State | NORML FL | |
| Georgia | CBD Only | Only Local | Authorized with Permits | NORML GA | |
| Hawaii | x | Authorized State | NORML HI | ||
| Idaho | No | Unauthorized State | NORML ID | ||
| Illinois | x | x | Throughout the State | Authorized State | NORML IL |
| Indiana | CBD Only | CBD Only | Authorized State | NORML IN | |
| Iowa | CBD Only | Authorized State | NORML IA | ||
| Kansas | CBD Only | CBD Only | Authorized State | NORML KS | |
| Kentucky | Local Only | Authorized State | NORML KY | ||
| Louisiana | x | Local Only | NORML LA | ||
| Maine | x | x | Throughout the State | Authorized State | NORML ME |
| Maryland | x | To Some Degree | Authorized State | NORML MD | |
| Massachusetts | x | x | Throughout the State | Authorized State | NORML MA |
| Michigan | x | x | To Some Degree | Authorized State | NORML MI |
| Minnesota | x | To Some Degree | Authorized State | NORML MN | |
| Mississippi | CBD Only | To Some Degree | Authorized State | NORML MS | |
| Missouri | x | To Some Degree | Authorized State | NORML MO | |
| Montana | x | Local Only | Authorized State | NORML MT | |
| Nebraska | To Some Degree | Authorized State | NORML NE | ||
| Nevada | x | x | Throughout the State | Authorized State | NORML MV |
| New Hampshire | x | To Some Degree | Authorized State | NORML NH | |
| New Jersey | x | No | NORML NJ | ||
| New Mexico | x | Local Only | Authorized State | NORML NM | |
| New York | x | To Some Degree | Authorized State | NORML NY | |
| North Carolina | CBD Only | To Some Degree | Authorized State | NORML NC | |
| North Dakota | To Some Degree | Authorized State | NORML ND | ||
| Ohio | x | To Some Degree | Authorized State | NORML OH | |
| Oklahoma | x | To Some Degree | Authorized State | NORML OK | |
| Oregon | x | x | Throughout the State | Authorized State | NORML OR |
| Pennsylvania | x | Local Only | Authorized State | NORML PA | |
| Rhode Island | x | To Some Degree | Authorized State | NORML RI | |
| South Carolina | CBD Only | No | Authorized State | NORML SC | |
| South Dakota | No | Authorized State | NORML SD | ||
| Tennessee | CBD Only | No | Authorized State | NORML TN | |
| Texas | CBD Only | Local Only | Unauthorized State | NORML TX | |
| Utah | x | No | Authorized State | NORML UT | |
| Vermont | x | x | Throughout the State | Authorized State | NORML VT |
| Virginia | CBD Only | No | Authorized State | NORML VA | |
| Washington | x | x | Throughout the State | Authorized State | NORML WA |
| West Virginia | x | No | Authorized State | NORML WV | |
| Wisconsin | CBD Only | Local Only | Authorized State | NORML WI | |
| Wyoming | CBD Only | No | Authorized State | NORML WY |


Adam Cole reacts to NXT finally beating AEW Dynamite in the Wednesday Night War ratings
by Soumik DattaIn the aftermath of this week's Wednesday Night Wars, WWE NXT finally managed to beat AEW Dynamite in TV ratings for the very first time since the two shows have been going head-to-head.
Current NXT Champion Adam Cole has now joined the likes of Cody Rhodes and current AEW Champion Chris Jericho in reacting to the major news of NXT finally beating AEW in the Wednesday Night Wars.
Adam Cole's take on NXT beating AEW for the first time in ratings
In the aftermath of NXT finally beating AEW Dynamite in terms of TV ratings for the first time in the Wednesday Night Wars, current NXT Champion Cole sat down for an interview with The Wrap and during the conversation, he was asked about the Black & Gold brand's victory over Dynamite.
Cole responded by stating that he isn't too bothered about the ratings but is certainly happy with his brand's win and also added the fact that he had a blast working with the RAW and SmackDown Live stars who made their way over to NXT this week. (H/T: SEScoops)
“We’re just mainly focused on trying to put on a really exciting, cool show. And last night’s show was just an absolute blast, with the guys from ‘RAW,’ the guys from ‘SmackDown,’ the matches that happened, it was just a really, really cool night and so I’m glad so many people enjoyed it."
What's next for Adam Cole?
Adam Cole has a tough task ahead of him, as he will have to defend the NXT Championship at Survivor Series against either Pete Dunne, Killian Dain, or Damian Priest. However, at NXT TakeOver: WarGames, Cole will be leading The Undisputed Era into battle against Team Ciampa.
Now you can vote for your favorite matches from the past week here !


Thousand Rooms is a visual novel, following the behaviours of four characters and a room.
We have written this book with the hopes of creating a sort of Borges for children, in which the reader follows a bat, a cat, an owl and a fox who try and make sense of this simple system. The book also encourages to try and understand the rules, and plan unsuggested avenues.
The book is available in 13 languages (all are available for download on purchase), and can be used as a tool for study. The translations were done on a volunteer basis. If you'd like to contribute a translation, or to make corrections to any text, please contact us at hundredrabbits at gmail dot com.
Available in English, French, Lietal, Japanese, Russian, German, Italian, Dutch, Greek, Arabic, Chinese, Spanish and Portuguese
Thousand Rooms was conceived while on passage from Mexico to the Marquesas in 2017, and was completed in French Polynesia during our stay in Nuku Hiva and the Rangiroa atoll. We made the decision to make a book project rather than a game because of our power limitations.


| Recommended Compatible Bulbs | Voltage | Wattage | Socket Type | Color Temp | Lumens | Lifespan | Beam Spread | Rating | Dimmable |
|---|---|---|---|---|---|---|---|---|---|
|
12V 3W COB COOL WHITE LED MR16 WIDE FLOOD |
12V | 3w | GU5.3 Bi-Pin | Cool White (5500K) | 220 Lumens | 25,000 Hours | Wide Flood (80°) | UL Listed for Moist Locations (E330072) | Yes (with magnetic transformers only) |
|
12V 3W COB WARM WHITE LED MR16 WIDE FLOOD |
12V | 3w | GU5.3 Bi-Pin | Warm White (2700K) | 220 Lumens | 25,000 Hours | Wide Flood (80°) | UL Listed for Moist Locations (E330072) | Yes (with magnetic transformers only) |
|
12V 3W COOL WHITE LED MR16 SPOT |
12V | 3w | GU5.3 Bi-Pin | Cool White (5700K) | 200 Lumens | 25,000 Hours | Tight Spot (15°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 3W WARM WHITE LED MR16 SPOT |
12V | 3w | GU5.3 Bi-Pin | Warm White (2700K) | 200 Lumens | 25,000 Hours | Tight Spot (15°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 3W COOL WHITE LED MR16 WIDE SPOT |
12V | 3w | GU5.3 Bi-Pin | Cool White (5500K) | 200 Lumens | 25,000 Hours | Wide Spot (30°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 3W WARM WHITE LED MR16 WIDE SPOT |
12V | 3w | GU5.3 Bi-Pin | Warm White (2700K) | 200 Lumens | 25,000 Hours | Wide Spot (30°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 3W WARM WHITE LED MR16 WIDE SPOT |
12V | 3w | GU5.3 Bi-Pin | Warm White (2700K) | 200 Lumens | 25,000 Hours | Wide Spot (30°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 3W COOL WHITE LED MR16 FLOOD |
12V | 3w | GU5.3 Bi-Pin | Cool White (5500K) | 200 Lumens | 25,000 Hours | Flood (45°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 3W WARM WHITE LED MR16 FLOOD |
12V | 3w | GU5.3 Bi-Pin | Warm White (2700K) | 200 Lumens | 25,000 Hours | Flood (45°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 6W COB COOL WHITE LED MR16 WIDE FLOOD |
12V | 6w | GU5.3 Bi-Pin | Cool White (5500K) | 450 Lumens | 25,000 Hours | Wide Flood (80°) | UL Listed for Moist Locations (E330072) | Yes (with magnetic transformers only) |
|
12V 6W COB WARM WHITE LED MR16 WIDE FLOOD |
12V | 6w | GU5.3 Bi-Pin | Warm White (2700K) | 450 Lumens | 25,000 | Wide Flood (80°) | UL Listed for Moist Locations (E330072) | Yes (with magnetic transformers only) |
|
12V 6W COOL WHITE LED MR16 SPOT |
12V | 6w | GU5.3 Bi-Pin | Cool White (5500K) | 425 Lumens | 25,000 Hours | Tight Spot (15°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 6W WARM WHITE LED MR16 SPOT |
12V | 6w | GU5.3 Bi-Pin | Warm White (2700K) | 425 Lumens | 25,000 Hours | Tight Spot (15°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 6W COOL WHITE LED MR16 WIDE SPOT |
12V | 6w | GU5.3 Bi-Pin | Cool White (5700K) | 425 Lumens | 25,000 Hours | Wide Spot (30°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 6W WARM WHITE LED MR16 WIDE SPOT |
12V | 6w | GU5.3 Bi-Pin | Warm White (2700K) | 425 Lumens | 25,000 Hours | Wide Spot (30°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 6W COOL WHITE LED MR16 FLOOD |
12V | 6w | GU5.3 Bi-Pin | Cool White (5500K) | 425 Lumens | 25,000 Hours | Flood (45°) | UL Listed for Moist Locations (E330072) | Yes |
|
12V 6W WARM WHITE LED MR16 FLOOD |
12V | 6w | GU5.3 Bi-Pin | Warm White (2700K) | 425 Lumens | 25,000 Hours | Flood (45°) | UL Listed for Moist Locations (E330072) | Yes |


Harry Styles talks One Direction, drug taking and his new album
Fine Line will be released on December 13.
Harry Styles has reflected on his time in One Direction and said he avoided experimenting with drugs for fear of risking the band’s success.
Styles, 25, made headlines in August when he revealed he bit the end of his tongue off in Malibu while high on mushrooms during the recording of his new album, Fine Line.
The singer will appear on Zane Lowe’s Apple Music radio show on Friday as he prepares for the release of the record.
He has now opened up on his drug use and said he only felt safe enough to experiment after leaving One Direction in 2016.

“So I was like, now is the time in my life when you probably go out and experiment and do this and you take this and you do that and that’s what you do with your friends.
 So I was like, I’m not going to do any of that stuff.”
However, Styles said it was different while recording Fine Line at Malibu’s famous Shangri-La studios, saying he felt “so safe”.
“Making this record felt like, I just felt so much more joyous and I was with my friends and we were in Malibu. I felt so safe,” he said.
“It was like, I want to take some mushrooms, now is the time to have fun. We’re in Malibu, 24, I’m also in music.”
Styles told Rolling Stone magazine that while recording Fine Line, which will contain the singles Lights Up and Watermelon Sugar, he would “do mushrooms” and listen to the Paul McCartney album Ram and lie in the sunshine.
Pointing to a corner at Shangri-La studios in Malibu, Styles said: “This is where I was standing when we were doing mushrooms and I bit off the tip of my tongue. So I was trying to sing with all this blood gushing out of my mouth. So many fond memories, this place.”
Fine Line will be released on December 13.


|
ENSIIE-Morpion
lot_b
|
Displays the Board and manages the user/program interactions. More...
Go to the source code of this file.
Functions | |
| void | set_hint (bool boolean) |
| Set hint value. More... | |
| void | set_fullscreen (bool set) |
| Set full screen for terminal. More... | |
| void | print_board (Board *pboard) |
| Print the Board, as well as a hint (i.e. a list of available moves) if required. More... | |
| Coord | select_move (void) |
| Ask the user to play a move. More... | |
| enum action | select_action (void) |
| Ask the user for the next action. More... | |
| void | print_help (void) |
| Print help for the user. | |
| void | select_line (Move *pmove) |
| Select among available lines (if more than 1 are available) | |
| bool | confirm_quit_save (Board *pboard) |
| Ask user for confirmation to quit and/or save game. More... | |
| char * | ask_savefile_name (void) |
| Ask the user for the saved file name. More... | |
| void | display_logo (void) |
| Print game logo (starting screen) | |
| void | clear_screen (void) |
| Clear the terminal. | |
| void | press_enter_to_continue (void) |
| Block terminal and wait for user to type <enter> | |
| void | print_error (Error err) |
| Print error message. More... | |
| void | print_game_over (void) |
| Print game over message. | |
| void | print_score (void) |
| Print user score. | |
Displays the Board and manages the user/program interactions.
Handles displaying and asks the user for input.
| ask_savefile_name | ( | void | ) |
Ask the user for the saved file name.
| bool confirm_quit_save | ( | Board * | pboard | ) |
Ask user for confirmation to quit and/or save game.
| pboard | Pointer to Board. |
| print_board | ( | Board * | pboard | ) |
| void print_error | ( | Error | error | ) |
Print error message.
| err | Error to be displayed. |
| enum action select_action | ( | void | ) |
Ask the user for the next action.
| select_move | ( | void | ) |
Ask the user to play a move.
| void set_fullscreen | ( | bool | set | ) |
Set full screen for terminal.
| set | True to activate full screen, false to disable full screen. |
| void set_hint | ( | bool | boolean | ) |
Set hint value.
| boolean | Value to set. |


Web-based fun game to guess the word with correct spelling with pictures and sounds.
LIRI is a Language Interpretation and Recognition Interface. A command line node app.
Web-based game app using JavaScript for the logic and jQuery to manipulate HTML.


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is experimental and somewhat different from what we usually offer, so please
do send your feedback.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Shockumentary
Rate My Poo
Rate My Kitten
Rate My Finger
Penny Postcards
Phallic
Dr. Sputnik
Boners
Dead Pool
NNDB
Home
Make Dailyrotten your start page
|
|
|
December 19, 2003
Iraqis now free to endorse America, or else
Reuters UK | Submitted by: Katie
"Tanks have rolled out on to the streets of Tikrit, as a message that the U.S. army will not tolerate shows of support for Saddam Hussein in the captured president's home town... a handful of military vehicles returned, one carrying the U.S.-backed regional governor Hussein al-Jaburi, while a recording of his voice boomed a warning to would-be Saddam loyalists. 'Any demonstration against the government or coalition forces will be fired upon,' Jaburi's voice said, according to an army interpreter. 'This is a fair warning.'"
|
|
Read article...
|
|
Townspeople exact revenge against pirates
iAfrica | Submitted by: Pedro
"Villagers armed with sticks finally struck back against the brutal gangs whose crimes had included the rape of young women, cattle rustling and extortion. The bodies of five pirates killed by the villagers were found Sunday and another 22 late Monday on the islands of Char Clarke, Bayer Char, Urir Char and Munshi Hat, said police in Noakhali district town, some 120 kilometres southeast of the capital Dhaka...  The woman, identified only as Rahima, found her attacker among the dead and cut off his testicles, the mass circulation Ittefaq newspaper reported."
|
|
Read article...
|
|
Rounded-up foreigners beaten in federal jail
Washington Post | Submitted by: Bonny Fide
"Hundreds of videotapes that federal prison officials had claimed were destroyed show that foreign nationals held at a New York detention facility after the Sept. 11, 2001 attacks were victims of physical and verbal abuse by guards, the Justice Department's inspector general said yesterday. An investigation by Inspector General Glenn A. Fine also found that officials at the Metropolitan Detention Center (MDC) in Brooklyn, N.Y., which is run by the U.S. Bureau of Prisons, improperly taped meetings between detainees and their lawyers, and used excessive strip searches and restraints to punish those in confinement... Many detainees also told investigators that, in the month before the installation of the camera system in October 2001, jail conditions and abuse had been much worse."
|
|
Read article...
|
|
Lawsuit filed over purported Exxon cult
Houston Chronicle | Submitted by: Cagehead
"William McCracken, 63, of Houston alleges that he and at least two other employees at the Exxon Baytown Olefins Plant laboratory were fired for failing to seek counseling and undergo healing rituals administered by a cult leader... The lawsuit filed this week alleges that Exxon Mobil and Kelly Services failed to investigate McCracken's complaints about the activities of employees who 'adhered to certain spiritual, religious teachings of (the cult leader) and a "new age" belief system, including a practice known as Reiki.' ... A lab supervisor, who allegedly was a member of the cult, fired one of McCracken's co-workers after she refused to allow the alleged cult leader to treat her cervical cancer, according to the lawsuit. Another woman was fired after she refused to attend cult meetings at the home of a supervisor, the lawsuit alleges."
|
|
Read article...
|
|
Alleged cowfucker allegedly caught in the act
Canoe | Submitted by: Layzell
"Police call it a cowardly act against Sedala the cow at Toronto's Riverdale Farm.  Employees said the man refused to dismount Sedala, claiming he was assisting the animal in giving birth... After the man finally dismounted, he allegedly punched an employee on the shoulder before entering a horse's stall, where he again refused to leave."
|
|
Read article...
|
|
Lawyer convicted of adultery
whsv.com | Submitted by: Ex1le
"In Virginia, cheating on your spouse is more than just a sin. As a Valley attorney learned, it's also against the law. Longtime Luray town attorney John Bushey, Jr., was recently convicted of violating the little-known state law prohibiting adultery. The 65-year-old Bushey pleaded guilty to a criminal charge of adultery in October... Bushey has appealed his conviction. A hearing is set for Jan. 27 in Shenandoah County Circuit Court. Bushey has also resigned as Luray town attorney, a position he had held for 32 years."
|
|
Read article...
|
|
Ridgway's apology fools no one
Seattle Times | Submitted by: rptchels420
"In the end, what may be remembered most about yesterday's sentencing of the Green River killer won't be the tearful, awkward apology that Gary Leon Ridgway offered before he was handed 48 consecutive life terms. What will likely stand out is how few people believed any of it... 'The remarkable thing about you, sir, is your Teflon-coated emotions and absolute lack of compassion for the women you murdered,' [Judge Richard A. Jones] said."
|
|
Read article...
|
|
Juvie sucks even worse in Mississippi
CNN | Submitted by: Ex1le
"The Justice Department filed suit Thursday against the state of Mississippi for failing to end what federal officials call 'disturbing' abuse of juveniles and 'unconscionable' conditions at two state-run facilities... 'In some cases suicidal girls were stripped naked and isolated for extended time periods in windowless empty "dark rooms" with only a drain in the cement floor to serve as a toilet.' ... 'We found evidence of systemic abuses including hog-tying and pole-shackling. It was even reported that girls, overcome by the heat during drills, were forced to eat their own vomit.'"
|
|
Read article...
|
|
Halliburton withholding internal audit
Boston Globe | Submitted by: dianalily
"Halliburton's own auditors warned of problems with the company's contract to deliver fuel in Iraq even before Pentagon investigators raised similar concerns, a Democratic presidential candidate says. Sen. Joe Lieberman, D-Conn., said a Pentagon official told him Halliburton was refusing to turn over copies of the internal audit, which Defense Department investigators found but did not copy. Halliburton spokeswoman Wendy Hall said the internal audit was confidential and a Pentagon auditor may have broken the law by reading it."
|
|
Read article...
|
|
|
|
|


WWX2016 talk by Alex Hoyau, CTO @ Secret Media
Typewriter etsy messenger bag fingerstache, aesthetic vinyl semiotics twee DIY forage chillwave. Thundercats ennui messenger bag, squid carles chillwave shoreditch pickled cliche letterpress. DIY beard locavore occupy salvia, whatever single-origin coffee
fanny pack 3 wolf moon typewriter gastropub kale chips. Ennui keffiyeh thundercats jean shorts biodiesel. Terry richardson, swag blog locavore umami vegan helvetica. Fingerstache kale chips.
DIY beard locavore occupy salvia, whatever single-origin coffee fanny pack 3 wolf moon typewriter gastropub kale chips. Ennui keffiyeh thundercats jean shorts biodiesel.
Typewriter etsy messenger bag fingerstache, aesthetic vinyl semiotics twee DIY forage chillwave. Thundercats ennui messenger bag, squid carles chillwave shoreditch pickled cliche letterpress.
DIY beard locavore occupy salvia, whatever single-origin coffee fanny pack 3 wolf moon typewriter gastropub kale chips.
| Locavore | Umami | Helvetica | Vegan |
|---|---|---|---|
| Fingerstache | Kale | Chips | Keytar |
| Sriracha | Gluten-free | Ennui | Keffiyeh |
| Thundercats | Jean | Shorts | Biodiesel |
| Terry | Richardson | Swag | Blog |
Typewriter etsy messenger bag fingerstache.
<html lang="en">
<head> <!--Comment-->
<title>Shower</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="s/screen.css">
<script src="j/jquery.js"></script>
</head>
<html lang="en">
<head> <!--Comment-->
<title>Shower</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="s/screen.css">
<script src="j/jquery.js"></script>
</head>
Three seconds to go.
Before they sold out master


I`m Tamim Ashour, 34, wells completions engineer, and business entrepreneur .
I was exited to join this camp,
in order to build and develop coding skills that will directly
add enhancement and improvement to startups I`m involved in,
also looking forward to gain the access into more advanced fields in the industry.
2008 graduated from Jordan University with a degree in Applied Geology, and I got the chance to work
in different projects, mainly in the oil field, and I was lucky to work with global company SHELL
for 6 years, during that period I managed to add another degree to my portfolio from Shell university
in Netherlands, in Oil Wells Completion engineering & design.
For me working in Oil field was fun and tough at the same time, during that time I recognized my tendency toward
technology specially softwares, I used to read about it everytime I had a chance, I learned some Python,
by myself.
Later on I had some attempts to jump inside some startups in the technology, only to keep
updated, till I had my own attempts in the field, and usually I used to use other developers
in order to achieve the project`s goals.
Now I`m involved in two early stages startups one is a virtual education platform called
3abkari.com, the other one is smart device including electronics and softwares.
Here are the major outlines of my career
Bsc Applied & Environmental Geology/ Jordan University 2009
Phospate Mine operation advisor 2009
SiteGroup- Water wells testing operator 2009-2010
Shell Jordan(JOSCO)- finished as Field Superintend 2010-2015
Shell open University- CWI engineering degree 2011-2013


PhoneDB
Search contacts
Search contacts
Search SMS conversations
Search SMS messages
Search call logs
Back
Search results


ServerName:
Host: RunTime:{{Data.RunTime}}
CPU: Memory:{{Data.Memory}}KB
Total Connections: Live: {{Data.CurrentConnectinos}} Accept: {{Data.ConnectionsPer}}/s
Request: Total Request: {{Data.TotalRequest}}
ReceiveBytes: Total ReceiveBytes: {{Data.TotalReceiveBytes}}MB
SendBytes: Total SendBytes: {{Data.TotalSendBytes}}MB


{% extends "templates/layout/customweb.html" %} {% block loader %} {% include "/templates/pages/homepageloader.html" %} {% endblock %} {% block content %}
Subscribe to your mailing list to receive on new arrivals, special offers and other discount information.


From:Geaccone To:McConnell; Watson Sent:2017-01-11T04:39:30.0000000Z Subject:RE: Questar Southern Trails Due Diligence
Please include Michael Ratner for Rod's team as well.
Thanks
-----Original Message-----
From: McConnell, Mark
Sent: Tuesday, October 16, 2001 3:50 PM
To: Geaccone, Tracy; Hayslett, Rod; Huber, Lee; Kilmer III, Robert; Lokey, Teb; Centilli, James; Abdmoulaie, Mansoor; Gadd, Eric
Cc: Harris, Steven; Watson, Kimberly
Subject: Questar Southern Trails Due Diligence
The LOI with a nonbinding bid referencing our interest in their West Leg of the Southern Trail Pipeline was faxed to Questar yesterday . We are confident that we will be invited to the data room to perform due diligence. We anticipate that this will occur at the end of this month. As soon as we know the exact date, we will advise all of those involved.
We will be assembling the due diligence team this week and then we will meet to create a plan for the process while we have access to the data room.
We'll be in touch as the details unfold. In the mean time, if you have any questions, please feel free to call Kim Watson or myself.
Mark
Mark McConnell
Transwestern Pipeline Company
713-345-7896 office
713-822-4862 cell
713-646-2551 fax
<EMAIL_ADDRESS>***********
EDRM Enron Email Data Set has been produced in EML, PST and NSF format by ZL Technologies, Inc. This Data Set is licensed under a Creative Commons Attribution 3.0 United States License <http://creativecommons.org/licenses/by/3.0/us/> . To provide attribution, please cite to "ZL Technologies, Inc. (http://www.zlti.com)."
***********
California


Ploror688.github.io
The sale of the HSBC will writing service that has subsequently left many customers confused has been responded to by an open letter. This response to a letter. Regions Bank Promotions - Hustler Money. Fifth Third Bank Promotions: $200, $400, $500, $550 Bonuses.
HSBC Online Banking activation. We're currently making improvements to our Online Banking service. If you registered for Online Banking prior to the 17th December. Application for Passport, World Birth Card, World Birth Certificate, World Identity Card World Service Authority.
Home Loan and Mortgage Services Contact PNC Bank Customer Service. Find PNC Bank Customer Support, Phone Number, Email Address, Customer Care Returns Fax, 800 Number, Chat and PNC Bank FAQ. Speak. Vernon W. Hill II (born August 18, 1945) is an American businessman, the founder and chairman of Metro Bank, a UK retail bank with 57 stores , and assets of £7.4b. Please enable cookies. To use online banking you need to allow this website to use cookies. This setting is usually found in your browser s privacy or security settings.
HSBC Internet Banking Terms and Conditions. Contact PNC Bank Customer Service: Email, Phone Number. Regions Bank Promotions with cash bonuses that can range in value from $50 to $400. For these bonuses, customers are only required to open eligible. If you have cookies disabled you will still service able to use the HSBC Expat website creative writing my house online banking will not be will and some creative. HSBC Bank plc is one of the largest banking and financial services organisations in the world. HSBC's international network comprises around 7,500 offices In June 2015, HSBC announced that it is selling its Wills and Probate services to Simplify Trust Corporation, previously known as Chorus Law and ITC.HSBC. Application for Passport, World Birth Card, World Birth. HSBC is selling its Wills and Probate services.
Travelling abroad or moving to the UK? Find out about the International Services available at HSBC UK. Travel money, travel insurance, international payments.
HSBC Library Holdings The Historical Society. HSBC Wills customers told to leave or sign up with Simplifiy. Fifth Third Bank Promotions are available for residents of Ohio, Florida, Georgia, Illinois, Indiana, Kentucky, Michigan, North Carolina, Tennessee Reclaim packaged bank account charges - MoneySavingExpert.com.
Still, Joseph Norwood. CS71.S8563 1992: Still family. Bowman family. Shedd family. Werth family. Pennsylvania --Genealogy. Maryland --Genealogy. Father Tabb ; a study.
HSBC is on the verge of doing live trade finance blockchain transactions with clients, with the bank set to announce a series of pilots in the coming weeks. You may be able to save money by using a will writing service but it Should you use a will writing service? Will writing services as bank accounts. HSBC Wills Customers told they . An earlier review meant that HSBC’s will writing service ceased . If you believe your Will is held within HSBC’s
International Banking International Services
Hsbc bank will writing service - Proposals and resumes at most attractive prices. No fails with our trustworthy essay services. Proofreading and proofediting services.
HSBC letter causes great concern for will writing.
HSBC Headquarters Information – Headquarters. Do I have to have an HSBC bank account to apply Writing a will – the right way . Writing a will provides clarity to those left behind, . Beware any service, such as a will writer Hsbc bank will writing service. Writing a will – the right way Money The Guardian. Premier Bank Account Reward Bank Account
Welcome to HSBC UK banking products including current accounts, loans, mortgages, credit cards. Also Premier and Advance banking and more…. Hsbc Premier Will Writing Service ‒ HSBC Premier. HSBC Premier is an exclusive banking solution to fit your lifestyle from everyday banking to global products and services. See our Premier account solutions. Hsbc had filed criminal charges relating to my account in which the bank mistakenly believe fraudulent checks were deposit into my account. The bank loss was around.
With HSBC, you're always in control of your mortgage account information. That's because Personal Internet Banking makes it easy to find routine information Full Money Saving Expert guide to reclaim fees from mis-sold packaged bank accounts. Are you due £100s. Welcome to HSBC UK banking products including current. Will writing services – pros and cons - Money Advice Service.
The Customer shall follow the guidance provided by HSBC India during registration online in designating the user identification code, the Password Accessibility: website, browser, help: HSBC Mobile Banking lets you manage and access your eligible HSBC accounts quickly and securely from your mobile devices. Click here to download the HSBC mobile HSBC ready to do live trade finance transactions. HSBC Bank (Europe) - Wikipedia. Fees Charges for HSBC Banking and Wealth Management customers. Find the latest fees and charges for bank accounts, deposit and payment services, overdrafts. Hsbc bank will writing service - June-Two.


A downloadable interpreter is now available!
- Click this link to download the interpreter.
- Once you have downloaded it, place it in the same directory as your E code.
- Save youe E code in a file with the extension .e
- Open a terminal in that directory and run: Compile [filename].e
- If you have valid E code, that should produce its desired output!