      1: <?php
      2: /**
      3:  * Copyright 2012-2014 Rackspace US, Inc.
      4:  *
      5:  * Licensed under the Apache License, Version 2.0 (the "License");
      6:  * you may not use this file except in compliance with the License.
      7:  * You may obtain a copy of the License at
      8:  *
      9:  * http://www.apache.org/licenses/LICENSE-2.0
     10:  *
     11:  * Unless required by applicable law or agreed to in writing, software
     12:  * distributed under the License is distributed on an "AS IS" BASIS,
     13:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14:  * See the License for the specific language governing permissions and
     15:  * limitations under the License.
     16:  */
     17:
     18: namespace OpenCloud\LoadBalancer\Resource;
     19:
     20: /**
     21:  * The SSL Termination feature allows a load balancer user to terminate SSL
     22:  * traffic at the load balancer layer versus at the web server layer. A user may
     23:  * choose to configure SSL Termination using a key and an SSL certificate or an
     24:  * (Intermediate) SSL certificate.
     25:  *
     26:  * When SSL Termination is configured on a load balancer, a secure shadow server
     27:  * is created that listens only for secure traffic on a user-specified port.
     28:  * This shadow server is only visible to and manageable by the system. Existing
     29:  * or updated attributes on a load balancer with SSL Termination will also apply
     30:  * to its shadow server. For example, if Connection Logging is enabled on an SSL
     31:  * load balancer, it will also be enabled on the shadow server and Cloud Files
     32:  * logs will contain log files for both.
     33:  *
     34:  * @link http://docs.rackspace.com/loadbalancers/api/v1.0/clb-devguide/content/SSLTermination-d1e2479.html
     35:  */
     36: class SSLTermination extends NonIdUriResource
     37: {
     38:     /**
     39:      * The certificate used for SSL termination.
     40:      *
     41:      * @var string
     42:      */
     43:     public $certificate;
     44:
     45:     /**
     46:      * Determines if the load balancer is enabled to terminate SSL traffic.
     47:      * If set to FALSE, the load balancer will retain its specified SSL
     48:      * attributes, but will not terminate SSL traffic.
     49:      *
     50:      * @var bool
     51:      */
     52:     public $enabled;
     53:
     54:     /**
     55:      * Determines if the load balancer may accept only secure traffic.
     56:      * If set to TRUE, the load balancer will not accept non-secure traffic.
     57:      *
     58:      * @var bool
     59:      */
     60:     public $secureTrafficOnly;
     61:
     62:     /**
     63:      * The private key for the SSL certificate.
     64:      *
     65:      * @var string
     66:      */
     67:     public $privatekey;
     68:
     69:     /**
     70:      * The user's intermediate certificate used for SSL termination.
     71:      *
     72:      * @var string
     73:      */
     74:     public $intermediateCertificate;
     75:
     76:     /**
     77:      * The port on which the SSL termination load balancer will listen for secure traffic.
     78:      *
     79:      * @var int
     80:      */
     81:     public $securePort;
     82:
     83:     protected static $json_name = "sslTermination";
     84:     protected static $url_resource = "ssltermination";
     85:
     86:     protected $createKeys = array(
     87:         'certificate',
     88:         'enabled',
     89:         'secureTrafficOnly',
     90:         'privatekey',
     91:         'intermediateCertificate',
     92:         'securePort'
     93:     );
     94:
     95:     public function create($params = array())
     96:     {
     97:         return $this->update($params);
     98:     }
     99: }
    100: