diff --git a/hosting_https.module b/hosting_https.module index 7447d91..3abd580 100644 --- a/hosting_https.module +++ b/hosting_https.module @@ -104,11 +104,11 @@ function hosting_https_is_available($site, $check_server_access = TRUE) { $https_available = FALSE; if (isset($site->nid)) { + $https_available = TRUE; $platform = node_load($site->platform); - $server = node_load($platform->web_server); - - if ($server->services['http']->https_enabled) { - $https_available = TRUE; + $servers = _hosting_https_get_platform_servers($platform); + foreach ($servers as $server) { + $https_available = $https_available && $server->services['http']->https_enabled; } } elseif (count(hosting_https_get_servers($check_server_access)) > 0) { @@ -117,3 +117,27 @@ function hosting_https_is_available($site, $check_server_access = TRUE) { return $https_available; } + +function _hosting_https_get_platform_servers($platform) { + $server = node_load($platform->web_server); + $servers = array(); + + if ($server->services['http']->type == 'cluster') { + foreach ($server->services['http']->web_servers as $nid) { + $servers[] = node_load($nid); + } + } + elseif ($server->services['http']->type == 'pack') { + foreach ($server->services['http']->master_servers as $nid) { + $servers[] = node_load($nid); + } + foreach ($server->services['http']->slave_servers as $nid) { + $servers[] = node_load($nid); + } + } + else { + $servers[] = $server; + } + + return $servers; +} diff --git a/hosting_https.nodeapi.inc b/hosting_https.nodeapi.inc index e0292dc..d547607 100644 --- a/hosting_https.nodeapi.inc +++ b/hosting_https.nodeapi.inc @@ -153,19 +153,21 @@ function hosting_https_site_form_validate($form, $form_state) { // Check that the server to host this site has HTTPS enabled. if (!empty($node->platform)) { $platform = node_load($node->platform); - $server = node_load($platform->web_server); - if (!$server->services['http']->https_enabled) { - $server_name = strlen($server->human_name) ? $server->human_name : $server->title; - $server_edit_path = 'node/' . $server->nid . '/edit'; - if (drupal_valid_path($server_edit_path, TRUE)) { - $enable = t('Enable HTTPS on !server.', array('!server' => l($server_name, $server_edit_path))); + $servers = _hosting_https_get_platform_servers($platform); + foreach ($servers as $server) { + if (!$server->services['http']->https_enabled) { + $server_name = strlen($server->human_name) ? $server->human_name : $server->title; + $server_edit_path = 'node/' . $server->nid . '/edit'; + if (drupal_valid_path($server_edit_path, TRUE)) { + $enable = t('Enable HTTPS on !server.', array('!server' => l($server_name, $server_edit_path))); + } + else { + $enable = t('Ask your site administrator to enable HTTPS.'); + } + return form_set_error('hosting_https_wrapper', t("This site's platform is installed on a server that does not have HTTPS enabled. !enable", array( + '!enable' => $enable, + ))); } - else { - $enable = t('Ask your site administrator to enable HTTPS.'); - } - return form_set_error('hosting_https_wrapper', t("This site's platform is installed on a server that does not have HTTPS enabled. !enable", array( - '!enable' => $enable, - ))); } } }