77 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php 
 | |
| 
 | |
| /**
 | |
|  * Lists vhosts 
 | |
|  * Lists redirections
 | |
|  * Checks vhosts
 | |
|  * Checks redirections
 | |
|  */
 | |
| class Alternc_Diagnostic_Service_Apache2
 | |
|     extends Alternc_Diagnostic_Service_Abstract
 | |
|     implements Alternc_Diagnostic_Service_Interface
 | |
| {
 | |
| 
 | |
|     public $name                        = "apache2";
 | |
|     const SECTION_VHOSTS                = "vhosts";
 | |
|     const SECTION_MODULES               = "modules";
 | |
|     const SECTION_REDIRECTIONS          = "redirections";
 | |
|     const SECTION_RESPONSES             = "responses";
 | |
|     
 | |
|     function run(){        
 | |
|         
 | |
|         // 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());
 | |
|         
 | |
|         return $this->data;
 | |
|     }
 | |
| 
 | |
|     function getVhosts(){
 | |
|         $list                           = $this->filterRegexp( $this->execCmd("apache2ctl -S"), "/^[\D]*(\d{2,4}).* (.*) \(\/.*$/u");
 | |
|         $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);
 | |
|         
 | |
|     }
 | |
|     
 | |
| } |