Apache VCL 2.5.1

================================================================================
INSTALLATION

Please see the INSTALLATION file or the installation guide on the Apache VCL
website. (http://vcl.apache.org/docs/VCL251InstallGuide.html)

================================================================================
SYSTEM REQUIREMENTS

------------
VCL WEB SITE
------------

VCL web server Linux packages:
* Apache HTTP Server v2.x with SSL enabled
* PHP 5.0 or later

VCL web server PHP modules:
* php-gettext
* php-json
* php-ldap (only required if using LDAP authentication)
* php-mysql
* php-openssl
* php-xml
* php-xmlrpc

------------
VCL DATABASE
------------

VCL has been tested on:
* MySQL 5.0 or later
* MariaDB 5.0 or later

-------------------
VCL MANAGEMENT NODE
-------------------

VCL has been tested on the following operating systems:
* CentOS release 6.9 (Final)
* CentOS Linux release 7.6.1810 (Core)
* Red Hat Enterprise Linux Server release 7.3 (Maipo)

Required Linux Packages:

The VCL management node daemon (vcld) requires the following Linux packages in
order to run. A script is provided to assist with installing them. Several of
the packages are required to be able to build and install some of the required
Perl modules.

* expat-devel
* gcc
* krb5-devel
* krb5-libs
* libxml2-devel
* make
* mysql/mariadb
* nmap
* openssh
* openssl-devel
* perl
* xmlsec1-openssl

The VCL management node daemon (vcld) requires the following Perl modules in
order to run. A script is provided to assist in installing them. The script
will install as many as possible through package management. Any remaining
modules will be installed from CPAN.

* Crypt::CBC
* Crypt::OpenSSL::RSA
* Crypt::Rijndael
* DBD::MySQL
* DBI
* Digest::SHA1
* Exception::Class::Base
* Frontier::Client
* HTTP::Headers
* IO::String
* JSON
* LWP::UserAgent
* Mail::Mailer
* Net::Jabber
* Net::Netmask
* Net::Ping::External
* Net::SSH::Expect
* Object::InsideOut
* RPC::XML::Client
* Text::CSV_XS
* XML::Simple
* YAML

The required Perl modules are distributed under one or more of the following
licenses:
* The "Artistic License"
* GNU General Public License (GPL)
* GNU Library or "Lesser" General Public License (LGPL)

Some of the required Perl modules are included in your Perl distribution.
Modules not included in your Perl distribution are available from CPAN
(www.cpan.org). See the "Install the Required Linux Packages & Perl Modules"
section of the online installation guide for how to use the provided script to
install the required Linux packages and Perl modules. 

Management node system requirements:
* DHCP - VCL requires that a DHCP server, configured to listen on the private
  network, be running on each management node.

Management node conditional system requirements:
* xCAT provisioning
  In order to provision bare-metal or physical computers, xCAT must be installed
  and properly configured. This release supports xCAT 2.x. Imaging support using
  xCAT 2.x requires additional files. To enable imaging for xCAT 2.x, see the
  page describing how to add support for partimage and partimage-ng in the
  Apache VCL wiki. 
* VMware vCenter provisioning
  In order to provision virtual machines on VMware vCenter you will need the
  vSphere SDK for Perl. This can be obtained from:
  http://www.vmware.com/support/developer/viperltoolkit/
  This is not required if provisioning virtual machines on standalone VMware ESX
  or ESXi hosts.

================================================================================
BUNDLED 3RD PARTY SOFTWARE

A copy of Dojo Toolkit version 1.6.5 is included in under web/dojo.

Portions of the phpseclib (http://phpseclib.sourceforge.net) project are
included under web/.ht-inc/phpseclib.

Spyc version 0.5.1 (https://github.com/mustangostang/spyc/) is included under
web/.ht-inc/spyc-0.5.1.

================================================================================
TSU NOTIFICATION - Encryption

This distribution includes cryptographic software. The country in which you
currently reside may have restrictions on the import, possession, use, and/or
re-export to another country, of encryption software. BEFORE using any
encryption software, please check your country's laws, regulations and policies
concerning the import, possession, or use, and re-export of encryption software,
to see if this is permitted. See <http://www.wassenaar.org/> for more
information.

The U.S. Government Department of Commerce, Bureau of Industry and Security
(BIS), has classified this software as Export Commodity Control Number (ECCN)
5D002.C.1, which includes information security software using or performing
cryptographic functions with asymmetric algorithms. The form and manner of this
Apache Software Foundation distribution makes it eligible for export under the
License Exception ENC Technology Software Unrestricted (TSU) exception (see the
BIS Export Administration Regulations, Section 740.13) for both object code and
source code.

The following provides additional details on the cryptographic functionality
utilized within the Apache VCL software:

The frontend website portion of the code utilizes cryptographic functions
included in PHP 5.3.0 and later as well as functions provided by third-party PHP
libraries to encrypt and decrypt password information stored in the database and
to encrypt cookie information passed to and stored in users' browsers.

Portions of the third-party phpseclib library are included in the frontend
website portion of the code. This library is only used for PHP versions prior to
5.3.0 which do not support PHP's "openssl_encrypt" function.

The backend management node portion of the code utilizes functions provided by
third-party Perl modules to decrypt password information stored in the database.
The backend management node code also uses the SSH protocol and public key
authentication to connect to and control compute nodes provisioned by a VCL
management node server as well as other hosts that comprise a VCL system such as
hypervisors.
