| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | 
							- <?php
 
- class SophosUtm{
 
- 	public $login,$password,$host,$port;
 
- 	
 
- 	public function getVHost($ref = null){
 
- 		$hosts = $this->rest('GET','/objects/reverse_proxy/frontend');
 
- 		if(!isset($ref)) return $hosts;
 
- 		foreach ($hosts as $host) {
 
- 			if($host['_ref']==$ref) return $host;
 
- 		}
 
- 		return false;
 
- 	}
 
- 	public function setVHost($ref = 'REF_RevFroDockeWordpMulti',$vhost = array()){
 
- 		//On supprime les attributs readonly (débutant par _)
 
- 		foreach ($vhost as $key => $value) 
 
- 			if(substr($key, 0,1)=='_') unset($vhost[$key]);
 
- 	
 
- 		$body = json_encode($vhost,JSON_PRETTY_PRINT);
 
- 		return $this->rest('PUT','/objects/reverse_proxy/frontend/'.$ref,$body);
 
- 	}
 
- 	public function getCertificates(){
 
- 		return $this->rest('GET','/objects/ca/host_key_cert/');
 
- 	}
 
- 	public function createLocation($label,$realWebServer){
 
- 	 	$attributes = array (
 
- 	        "access_control"=> "0",
 
- 		    "allowed_networks"=> array(
 
- 		      "REF_NetworkAny"
 
- 		    ),
 
- 		    "auth_profile"=> "",
 
- 		    "backend"=> array(
 
- 		      $realWebServer
 
- 		    ),
 
- 		    "be_path"=> "",
 
- 		    "comment"=> "",
 
- 		    "denied_networks"=> array(),
 
- 		    "hot_standby"=> false,
 
- 		    "name"=> "/ (".sha1(time().'doc').")",
 
- 		    "path"=> "/",
 
- 		    "status"=> true,
 
- 		    "stickysession_id"=> "ROUTEID",
 
- 		    "stickysession_status"=> false,
 
- 		    "websocket_passthrough"=> false
 
-   	   );
 
- 	
 
- 		$body = json_encode($attributes,JSON_PRETTY_PRINT);
 
- 	
 
- 		return $this->rest('POST','/objects/reverse_proxy/location/',$body);
 
- 	}
 
- 	public function createVHost($label,$domains=array(),$port=80,$serverRef = '',$certificateRef = ''){
 
- 	 $location = $this->createLocation($domains[0],$serverRef);
 
- 	
 
- 	 if(empty($location['_ref'])) throw new Exception("Impossible de créer le chemin pour ce domaine, peut être existe t-il déjà dans l'utm ?");
 
- 	 
 
- 	 $attributes = array (
 
- 	      'add_content_type_header' => true,
 
- 	      'address' =>  'REF_NetIntLiveb21223Addre3',
 
- 	      'allowed_networks' => array('REF_NetworkAny'),
 
- 	      'blockpagetheme' => '',
 
- 	      'certificate' => $certificateRef,
 
- 	      'comment' =>  '',
 
- 	      'disable_compression' => false,
 
- 	      'domain' => $domains,
 
- 	      'exceptions' => array(),
 
- 	      'htmlrewrite' => false,
 
- 	      'htmlrewrite_cookies' => true,
 
- 	      'implicitredirect' => true,
 
- 	      'lbmethod' => 'bybusyness',
 
- 	      'locations' =>  array ($location['_ref']),
 
- 	      'name' =>  $label,
 
- 	      'port' =>  $port,
 
- 	      'preservehost' =>  true,
 
- 	      'profile' =>  '',
 
- 	      'status' => true,
 
- 	      'type' =>  'http'.($port==443?'s':''),
 
- 	      'waflocalpath' => '/.waf',
 
- 	      'xheaders' =>  false
 
-   	   );
 
- 	
 
- 		$body = json_encode($attributes,JSON_PRETTY_PRINT);
 
- 		return $this->rest('POST','/objects/reverse_proxy/frontend/',$body);
 
- 	}
 
- 	//Requete rest
 
- 	public function rest($method,$action,$body='',$headers=array()){
 
- 		$url = $this->host.':'.$this->port.'/api'.$action;
 
- 		$ch = curl_init();
 
- 		$options[CURLOPT_URL] =  $url;
 
- 		$options[CURLOPT_RETURNTRANSFER] =  true;
 
- 		$options[CURLOPT_SSL_VERIFYPEER] =  false;
 
- 		$options[CURLOPT_FOLLOWLOCATION] = true;
 
- 		$options[CURLOPT_SSL_VERIFYPEER] = false;
 
- 		$options[CURLOPT_USERAGENT] = 'Awesome erp';
 
- 		$options[CURLOPT_USERPWD] =  $this->login . ":" . $this->password;
 
- 		$options[CURLOPT_CUSTOMREQUEST] = $method;
 
- 		if(!empty($body)) $options[CURLOPT_POSTFIELDS] = $body;
 
- 	
 
- 		$headers = array();
 
- 		$headers[] = 'Content-Type: application/json';
 
- 		$headers[] = 'Accept: application/json';
 
- 		$options[CURLOPT_HTTPHEADER] = $headers;
 
- 		
 
- 		curl_setopt_array($ch,$options);
 
- 		$response = curl_exec($ch);
 
- 		if($response === false) throw new Exception(curl_error($ch));
 
- 		curl_close($ch);
 
- 		return json_decode($response,true);
 
- 	}	
 
- }
 
- ?>
 
 
  |