2014-06-29 15:15:38 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Lists vhosts
|
|
|
|
* Lists redirections
|
|
|
|
* Checks vhosts
|
|
|
|
* Checks redirections
|
|
|
|
*/
|
|
|
|
class Alternc_Diagnostic_Service_Apache2
|
|
|
|
extends Alternc_Diagnostic_Service_Abstract
|
|
|
|
implements Alternc_Diagnostic_Service_Interface
|
|
|
|
{
|
|
|
|
|
2014-06-29 22:38:24 +00:00
|
|
|
public $name = "apache2";
|
|
|
|
const SECTION_VHOSTS = "vhosts";
|
|
|
|
const SECTION_MODULES = "modules";
|
|
|
|
const SECTION_REDIRECTIONS = "redirections";
|
|
|
|
const SECTION_RESPONSES = "responses";
|
2014-06-30 22:21:41 +00:00
|
|
|
|
2014-06-29 15:15:38 +00:00
|
|
|
function run(){
|
|
|
|
|
2014-06-29 22:38:24 +00:00
|
|
|
// Writes the modules
|
|
|
|
$this->writeSectionData (self::SECTION_MODULES,$this->filterRegexp ($this->execCmd("apache2ctl -M"), "/^[\W]*(\w+).*\(.*$/u" ));
|
|
|
|
// Writes the vhosts in the form "port servername"
|
|
|
|
$this->writeSectionData (self::SECTION_VHOSTS,$this->getVhosts());
|
|
|
|
// Writes the redirects
|
|
|
|
$this->writeSectionData (self::SECTION_REDIRECTIONS, $this->getRedirects());
|
|
|
|
// Writes the tests
|
|
|
|
$this->writeSectionData (self::SECTION_RESPONSES,$this->testServers());
|
2014-06-30 22:21:41 +00:00
|
|
|
|
2014-06-29 15:15:38 +00:00
|
|
|
return $this->data;
|
|
|
|
}
|
|
|
|
|
2014-06-29 22:38:24 +00:00
|
|
|
function getVhosts(){
|
2014-07-05 16:12:58 +00:00
|
|
|
$list = $this->filterRegexp( $this->execCmd("apache2ctl -S"), "/^[\D]*(\d{2,4}).* (.*) \(\/.*$/u");
|
2014-06-29 22:38:24 +00:00
|
|
|
$returnArray = array();
|
|
|
|
foreach( $list as $vhost){
|
|
|
|
$returnArray[] = explode(" ",$vhost);
|
|
|
|
}
|
|
|
|
return $returnArray;
|
|
|
|
}
|
|
|
|
|
|
|
|
function getRedirects(){
|
|
|
|
$mysqlResource = $this->db->query("SELECT domaine as domain, valeur as url from sub_domaines where type='url';");
|
|
|
|
$resultArray = array();
|
|
|
|
if ($this->db->num_rows()) {
|
|
|
|
while(($resultArray[] = mysql_fetch_assoc($mysqlResource)) || array_pop($resultArray));
|
|
|
|
}
|
|
|
|
return $resultArray;
|
|
|
|
}
|
|
|
|
|
|
|
|
function testServers(){
|
|
|
|
|
|
|
|
$sockets_max = 8;
|
|
|
|
$fieldsList = array("http_code","url");
|
|
|
|
$vhostUrlList = array();
|
|
|
|
|
|
|
|
// Retrieves and tests local vhosts
|
|
|
|
$vhostList = $this->data->getSection(self::SECTION_VHOSTS)->getData();
|
|
|
|
foreach( $vhostList as $vhostInfo){
|
|
|
|
$protocol = $vhostInfo[0] == 443 ? "https://":"http://";
|
|
|
|
$vhostUrlList[] = "{$protocol}{$vhostInfo[1]}";
|
|
|
|
}
|
|
|
|
$vhostResult = $this->curlRequest($vhostUrlList,$fieldsList,$sockets_max);
|
|
|
|
|
|
|
|
// Retrieves and tests local redirs
|
|
|
|
$redirList = $this->data->getSection(self::SECTION_REDIRECTIONS)->getData();
|
|
|
|
foreach( $redirList as $redirInfo){
|
|
|
|
$redirUrlList[] = $redirInfo["url"];
|
|
|
|
}
|
|
|
|
$redirResult = $this->curlRequest($redirUrlList,$fieldsList,$sockets_max);
|
|
|
|
|
|
|
|
return array_merge($vhostResult,$redirResult);
|
|
|
|
|
|
|
|
}
|
2014-06-30 22:21:41 +00:00
|
|
|
|
2014-06-29 15:15:38 +00:00
|
|
|
}
|