j'ai le code suivant pour ma class mais il ne marche pas en php5 plusieurs erreur:
<?php
class networkManager {
var $os;
public static $netshOutput;
public static $ifconfigaOutput;
public static $ifconfigOutput;
public function __construct($status=""){
/* Detection de l'OS */
if(eregi("win",$_SERVER["SERVER_SOFTWARE"],$result)) $this->os = "windows";
else $this->os = "linux";
if($this->os=="windows") {
$this->netshOutput = array();
try{ exec('netsh interface show interface',$this->netshOutput); } catch (Exception $e) { } // Affiche la liste des interfaces reseau sous Windows
}
else {
$this->ifconfigaOutput = array();
try{ exec('ifconfig -a | grep eth',$this->ifconfigaOutput); } catch (Exception $e) { } // Affiche la liste des interfaces reseau sous Linux
$this->ifconfigOutput = array();
try{ exec('ifconfig | grep eth',$this->ifconfigOutput); } catch (Exception $e) { } // Affiche la liste des interfaces reseau actives sous Linux
}
}
function getNetworkInterfaces(){
$interfaces = array();
/* Detection de toutes les interfaces reseau de la machine */
if($this->os=="windows") {
$nb_lines = sizeof($this->netshOutput);
for($i=3; $i<$nb_lines; $i++){
$infos = preg_split("/\s{2,}/", $this->netshOutput[$i]); // Parsing de la reponse
if($infos[3]!="") $interfaces[] = $infos[3]; // Ajout d'une nouvelle interface
}
}
else {
$interfaces = array();
$nb_lines = sizeof($this->ifconfigaOutput);
for($i=0; $i<$nb_lines; $i++){
if(eregi("eth[0-9]",$this->ifconfigaOutput[$i],$result)){ // Parsing de la reponse
if($result[0]!="") $interfaces[] = $result[0]; // Ajout d'une nouvelle interface
}
}
}
sort($interfaces);
return $interfaces;
}
}
class NetworkInterface {
var $os;
var $name;
var $status;
var $mac_address;
var $ip_address;
var $ip_address_v6;
var $netmask;
var $gateway;
var $dns1;
var $dns2;
var $is_dhcp;
var $description;
var $language;
public function __construct($name){
$this->name = $name;
$this->language = "fr";
$this->ip_address = "0.0.0.0";
$this->netmask = "0.0.0.0";
$this->gateway = "0.0.0.0";
$this->dns1 = "0.0.0.0";
$this->dns2 = "0.0.0.0";
/* Detection de l'OS */
if(eregi("win",$_SERVER["SERVER_SOFTWARE"],$result)) $this->os = "windows";
else $this->os = "linux";
/* Detection du status de l'interface : Activee/Desactivee, Connectee/deconnectee */
if($this->os=="windows"){
$output = array();
try{ exec('netsh interface show interface',$output); } catch (Exception $e) { return false; } // Affiche la liste des interfaces reseau sous Windows
$nb_lines = sizeof($output);
for($i=3; $i<$nb_lines; $i++){
$infos = preg_split("/\s{2,}/", $output[$i]);
if($infos[3]==$this->name){
if($infos[1]=="Connect,") $this->status = 2; // Manque gestion charset
else if($infos[0]=="Activ," && $infos[1]=="D,connect,") $this->status = 1; // Manque gestion charset
else $this->status = 0;
}
}
}
else {
$output = array();
try{ exec('ifconfig | grep eth',$output); } catch (Exception $e) { return false; } // Affiche la liste des interfaces reseau actives sous Linux
$nb_lines = sizeof($output);
for($i=0; $i<$nb_lines; $i++){
$this->status = 0;
if(eregi("eth[0-9]",$output[$i],$result) && $result[0]==$this->name) $this->status = 2;
}
}
/* Detection des parametres de l'interface : */
if($this->os=="windows" && $this->status==2){
$output = array();
$write = false; // Active ou pas l'ecriture des parametres
$previous_line_empty = false; // Indique si la ligne precedente est vide, cad s'il s'agit d'une nouvelle interface
try{ exec("ipconfig /all",$output); } catch (Exception $e) { return false; } // Affiche les parametres IP sous Windows
$nb_lines = sizeof($output);
for($i=0; $i<$nb_lines; $i++){
/* On parcourt le resultat de la commande. On active l'écriture en arrivant a la partie concernant l'interface et on la desactice en arrivant a l'interface suivante */
if((eregi("Carte Ethernet",$output[$i],$result)||eregi("Carte r,seau sans fil",$output[$i],$result)) && $previous_line_empty && eregi($this->name,$output[$i],$result)) $write = true;
else if(eregi("Carte",$output[$i],$result) && $previous_line_empty && $write) $write = false;
/* Detection de la description hardware de l'interface */
if(eregi("Description",$output[$i],$result) && $write) {
$tmp = explode(":",str_replace(" : ",":",$output[$i]));
$this->description = $tmp[1];
}
/* Detection de l'adresse MAC de l'interface */
if(eregi("Adresse physique",$output[$i],$result) && $write) {
preg_match("/([0-9A-F]*\-[0-9A-F]*\-[0-9A-F]*\-[0-9A-F]*\-[0-9A-F]*\-[0-9A-F]*)/", $output[$i], $matches, PREG_OFFSET_CAPTURE, 3);
$this->mac_address = str_replace("-",":",$matches[0][0]);
}
/* Detection du mode de l'interface : statique ou DHCP*/
if(eregi("DHCP activ,",$output[$i],$result) && $write) {
if(eregi("Oui",$output[$i], $matches)) $this->is_dhcp = 1;
else $this->is_dhcp = 0;
}
/* Detection de l'adresse IPv4 de l'interface */
if(eregi("IPv4",$output[$i],$result) && $write) {
preg_match("/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/", $output[$i], $matches, PREG_OFFSET_CAPTURE, 3);
$this->ip_address = $matches[0][0];
}
/* Detection de l'adresse IPv6 de l'interface */
if(eregi("IPv6",$output[$i],$result)) {
preg_match("/([0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*)/", $output[$i], $matches, PREG_OFFSET_CAPTURE, 3);
$this->ip_address_v6 = $matches[0][0];
}
/* Detection du masque de sous-reseaux de l'interface */
if(eregi("Masque",$output[$i],$result) && $write) {
preg_match("/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/", $output[$i], $matches, PREG_OFFSET_CAPTURE, 3);
$this->netmask = $matches[0][0];
}
/* Detection de la passerelle par defaut de l'interface */
if(eregi("Passerelle",$output[$i],$result) && $write) {
preg_match("/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/", $output[$i], $matches, PREG_OFFSET_CAPTURE, 3);
$this->gateway = $matches[0][0];
}
/* Detection des serveurs DNS de l'interface */
if(eregi("Serveurs DNS",$output[$i],$result) && $write) {
preg_match("/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/", $output[$i], $matches, PREG_OFFSET_CAPTURE, 3);
$this->dns1 = $matches[0][0];
preg_match("/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/", $output[($i+1)], $matches, PREG_OFFSET_CAPTURE, 3);
$this->dns2 = $matches[0][0];
}
if($output[$i]=="") $previous_line_empty = true;
else $previous_line_empty = false;
}
}
else if($this->status==2){
$output = array();
$write = true; // Active ou pas l'ecriture des parametres
try{ exec("ifconfig -a ".$this->name,$output); } catch (Exception $e) { return false; } // Affiche les parametres IP sous Linux
$nb_lines = sizeof($output);
for($i=0; $i<$nb_lines; $i++){
/* Detection de l'adresse MAC de l'interface */
if(eregi("HWaddr",$output[$i],$result) && $write) {
preg_match("/([0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*)/", $output[$i], $matches, PREG_OFFSET_CAPTURE, 3);
$this->mac_address = str_replace("-",":",$matches[0][0]);
}
/* Detection de l'adresse IPv4 de l'interface */
if(eregi("inet addr",$output[$i],$result) && $write) {
preg_match("/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/", $output[$i], $matches, PREG_OFFSET_CAPTURE, 3);
$this->ip_address = $matches[0][0];
}
/* Detection de l'adresse IPv6 de l'interface */
if(eregi("inet6 addr",$output[$i],$result)) {
preg_match("/([0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*\:[0-9A-F]*)/", $output[$i], $matches, PREG_OFFSET_CAPTURE, 3);
$this->ip_address_v6 = $matches[0][0];
}
/* Detection du masque de sous-reseaux de l'interface */
if(eregi("Mask",$output[$i],$result) && $write) {
preg_match_all("/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/", $output[$i], $matches, PREG_OFFSET_CAPTURE, 3);
$this->netmask = $matches[0][2][0];
}
}
/* Detection de la description hardware de l'interface */
$output = array();
try{ exec("cat /etc/sysconfig/network-scripts/ifcfg-".$this->name." | grep \"#\"",$output); } catch (Exception $e) { return false; } // Affiche la liste des DNS sous Linux
$this->description = str_replace("# ","",$output[0]);
/* Detection du mode de l'interface : statique ou DHCP*/
$output = array();
try{ exec("cat /etc/sysconfig/network-scripts/ifcfg-".$this->name." | grep BOOTPROTO",$output); } catch (Exception $e) { return false; } // Affiche la liste des DNS sous Linux
if(eregi("dhcp",$output[0], $matches)) $this->is_dhcp = 1;
else $this->is_dhcp = 0;
/* Detection des serveurs DNS de l'interface */
$output = array();
try{ exec("cat /etc/resolv.conf | grep nameserver",$output); } catch (Exception $e) { return false; } // Affiche la liste des DNS sous Linux
preg_match("/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/", $output[1], $matches, PREG_OFFSET_CAPTURE, 3);
$this->dns1 = $matches[0][0];
preg_match("/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/", $output[2], $matches, PREG_OFFSET_CAPTURE, 3);
$this->dns2 = $matches[1][0];
/* Detection de la passerelle par defaut de l'interface */
$output = array();
try{ exec("route | grep default | grep ".$this->name,$output); } catch (Exception $e) { return false; } // Affiche la liste des DNS sous Linux
preg_match("/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/", $output[0], $matches, PREG_OFFSET_CAPTURE, 3);
$this->gateway = $matches[0][0];
}
// Petite bidouille de charset pour Windows en francais
if($this->language=="fr" && $this->os=="windows") $this->name = str_replace(",","é",$this->name);
}
function getName(){ return $this->name; }
function getStatus(){ return $this->status; } // 0: desactivee, 1: deconnectee, 2: connectee
function getMacAddress(){ return $this->mac_address; }
function getIPv4(){ return $this->ip_address; }
function getIPv6(){ return $this->ip_address_v6; }
function getNetmask(){ return $this->netmask; }
function getGateway(){ return $this->gateway; }
function getDNS(){ return $this->dns1; }
function getDNS2(){ return $this->dns2; }
function getDHCPmode(){ return $this->is_dhcp; } // 0: static mode, 1: DHCP mode
function getDescription(){ return $this->description; }
function setIPv4($value){ $this->ip_address = $value; }
function setIPv6($value){ $this->ip_address_v6 = $value; }
function setNetmask($value){ $this->netmask = $value; }
function setGateway($value){ $this->gateway = $value; }
function setDNS($value){ $this->dns1 = $value; }
function setDNS2($value){ $this->dns2 = $value; }
function activate() {
if($this->os=="windows") try{ exec('netsh interface set interface name="'.$this->name.'" admin=ENABLE',$output); } catch (Exception $e) { return array(); }
else try{ exec('ifup '.$this->name,$output); } catch (Exception $e) { return 0; }
if($output[0]=="") return 1;
else return 0;
}
function desactivate() {
if($this->os=="windows") try{ exec('netsh interface set interface name="'.$this->name.'" admin=DISABLE',$output); } catch (Exception $e) { return array(); }
else try{ exec('ifdown '.$this->name,$output); } catch (Exception $e) { return 0; }
if($output[0]=="") return 1;
else return 0;
}
function setDHCP() {
if($this->os=="windows") {
try{ exec('netsh interface ip set address "'.$this->name.'" dhcp',$output); } catch (Exception $e) { return array(); }
try{ exec('netsh interface ip set dns "'.$this->name.'" dhcp',$output); } catch (Exception $e) { return array(); }
}
else try{ exec('dhclient '.$this->name,$output); } catch (Exception $e) { return 0; }
if($output[0]=="") {
$this->is_dhcp = 1;
return 1;
}
else return 0;
}
function setStatic($ip_address="",$netmask="",$gateway="",$dns="") {
if($ip_address=="") $ip_address = $this->ip_address;
if($netmask=="") $netmask = $this->netmask;
if($gateway=="") $gateway = $this->gateway;
if($dns=="") $dns = $this->dns1;
if($ip_address=="") return 0;
if($this->os=="windows") {
try{ exec('netsh interface ip set address "'.$this->name.'" static '.$ip_address.' '.$netmask.' '.$gateway.' 1',$output); } catch (Exception $e) { return 0; }
try{ exec('netsh interface ip set dns "'.$this->name.'" static '.$dns.'',$output); } catch (Exception $e) { return 0; }
}
else {
try{ exec('ifconfig '.$this->name.' inet '.$ip_address.' netmask '.$netmask,$output); } catch (Exception $e) { return 0; }
try{ exec('route add default gw '.$gateway,$output); } catch (Exception $e) { return 0; }
}
if($output[0]=="") {
$this->is_dhcp = 0;
return 1;
}
else return 0;
}
}
?>