Apache VCL 2.5

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

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

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

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

VCL web server Linux packages:
* Apache HTTP Server v1.3 or 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.3.1611 (Core)
* Red Hat Enterprise Linux Server release 6.8 (Santiago)
* 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
* DBI
* Digest::SHA1
* Exception::Class::Base
* Frontier::Client
* HTTP::Headers
* IO::String
* JSON
* LWP::UserAgent
* Mail::Mailer
* Net::Jabber
* Net::Netmask
* 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.
* Windows XP & Windows Server 2003 bare-metal provisioning
  The Sysprep utility is required to provision Windows XP and Windows Server
  2003 bare-metal images. The utility can be downloaded from Microsoft. It is
  included in newer versions of Windows. Sysprep is not required to provision
  virtual machine images.
* Jabber notifications
  VCL has the ability to send instant message notifications using Jabber. This
  feature is optional and can be enabled or disabled by configuring the
  "jabber=[yes|no]" property in the vcld.conf file. If the Jabber notification
  feature is enabled, the Net::Jabber Perl module is required.

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

A copy of Dojo Toolkit version 1.6.2 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.