You are here

hosting_ssl.module in Hosting 6.2

File

web_server/ssl/hosting_ssl.module
View source
<?php

/**
 * SSL is disabled for this site.
 */
define('HOSTING_SSL_DISABLED', 0);

/**
 * SSL is enabled for this site.
 */
define('HOSTING_SSL_ENABLED', 1);

/**
 * SSL is required for this site.
 */
define('HOSTING_SSL_REQUIRED', 2);
include_once 'hosting_ssl.nodeapi.inc';
function hosting_ssl_hosting_service() {
  return array(
    'apache_ssl' => 'http',
  );
}

/**
 * Implementation of hook_perm()
 */
function hosting_ssl_perm() {
  return array(
    'create ssl certificate',
  );
}

/**
 * Return a list of servers which have SSL enabled web services.
 */
function hosting_ssl_get_servers() {
  $servers = hosting_get_servers('http');
  $ssl_servers = array();
  foreach ($servers as $nid => $title) {
    $node = node_load($nid);
    if ($node->services['http']->ssl_enabled) {
      $ssl_servers[] = $nid;
    }
  }
  return $ssl_servers;
}

/**
 * Return a list of platforms on SSL enabled servers.
 */
function hosting_ssl_get_platforms() {
  $servers = hosting_ssl_get_servers();
  $ssl_platforms = array();
  $platforms = _hosting_get_platforms();
  foreach ($platforms as $nid => $title) {
    $platform = node_load($nid);
    if (in_array($platform->web_server, $servers)) {
      $ssl_platforms[] = $nid;
    }
  }
  return $ssl_platforms;
}

/**
 * Return a list of profiles with SSL enabled platforms.
 */
function hosting_ssl_get_profiles() {
  $platforms = hosting_ssl_get_platforms();
  $ssl_profiles = array();
  foreach ($platforms as $nid) {
    $platform = node_load($nid);
    $ssl_profiles = array_merge($ssl_profiles, array_keys($platform->profiles));
  }
  return array_unique($ssl_profiles);
}
function hosting_ssl_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'site_node_form') {
    hosting_ssl_site_form($form, $form_state, $form_id);
  }
}

/**
 * Per-server, per-ip certificate listing
 */
function hosting_ssl_menu() {
  $items = array();
  $items['node/%hosting_ssl_cert_node/ssl'] = array(
    'title' => 'Certificates',
    'description' => 'SSL certificates deployed on this server',
    'page callback' => 'hosting_ssl_server_cert_list',
    'page arguments' => array(
      1,
    ),
    'type' => MENU_LOCAL_TASK,
    'access arguments' => array(
      'view server',
    ),
  );
  return $items;
}

/**
 * Implementation of the hook_load() from hook_menu().
 *
 * This is a weird hook that is not well documented but allows loads from the
 * menu system. This is *not* the regular hook_load().
 *
 * @see hosting_ssl_menu()
 */
function hosting_ssl_cert_node_load($arg) {
  if (!is_numeric($arg)) {
    return FALSE;
  }
  if ($node = node_load($arg)) {
    if ($node->type == 'server') {
      return $node;
    }
  }
  return FALSE;
}

/**
 * List SSL certificates associated with the given server
 */
function hosting_ssl_server_cert_list($node) {
  $args = array(
    $node->nid,
  );
  drupal_set_title(t('Certificates installed on server @server', array(
    '@server' => $node->title,
  )));
  $header = array(
    array(
      'data' => t('Domain'),
      'field' => 'domain',
    ),
    array(
      'data' => t('IP address'),
      'field' => 'ip_address',
    ),
    array(
      'data' => t('Client'),
      'field' => 'client',
    ),
  );
  $sql = 'SELECT ips.ip_address, cert.ssl_key AS domain, cert.status, client.title AS client
            FROM {hosting_ip_addresses} ips
            INNER JOIN {hosting_ssl_cert_ips} cert_ip ON cert_ip.ip_address = ips.id
            INNER JOIN {hosting_ssl_cert} cert ON cert.cid = cert_ip.cid
            INNER JOIN {node} client ON client.nid = cert.client
            WHERE ips.nid = %d';
  $sql .= tablesort_sql($header);
  $result = pager_query(db_rewrite_sql($sql, 'cert'), 25, 2, null, $args);
  $rows = array();
  while ($cert = db_fetch_object($result)) {

    // XXX: not in use?

    //$row_class = ($cert->status == 1) ? 'hosting-success' : 'hosting-info';
    $row = array();
    $row[] = $cert->domain;
    $row[] = $cert->ip_address;
    $row[] = filter_xss($cert->client);
    $rows[] = $row;
  }
  return theme('table', $header, $rows, array(
    'class' => 'hostign-table',
  )) . theme('pager', null, 25, 2);
}

Functions

Namesort descending Description
hosting_ssl_cert_node_load Implementation of the hook_load() from hook_menu().
hosting_ssl_form_alter
hosting_ssl_get_platforms Return a list of platforms on SSL enabled servers.
hosting_ssl_get_profiles Return a list of profiles with SSL enabled platforms.
hosting_ssl_get_servers Return a list of servers which have SSL enabled web services.
hosting_ssl_hosting_service
hosting_ssl_menu Per-server, per-ip certificate listing
hosting_ssl_perm Implementation of hook_perm()
hosting_ssl_server_cert_list List SSL certificates associated with the given server

Constants

Namesort descending Description
HOSTING_SSL_DISABLED SSL is disabled for this site.
HOSTING_SSL_ENABLED SSL is enabled for this site.
HOSTING_SSL_REQUIRED SSL is required for this site.