[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-internet/sources/www/se3/includes/ -> Internet.inc.php (source)

   1  <?php
   2  
   3  
   4  /**
   5     * Fonctions pour le paquet se3-internet
   6     * @Version $Id: Internet.inc.php 5988 2010-11-26 16:55:03Z dbo $
   7     
   8     * @Projet LCS-SE3
   9     * @auteurs Denis Bonnenfant
  10     * @auteurs e-fournier@wanadoo.fr
  11     * @Licence Distribue sous  la licence GPL
  12  */
  13  
  14  /**    
  15      * @Repertoire includes/
  16      * file Internet.inc.php
  17  */    
  18  
  19  
  20  
  21  //=================================================
  22  
  23  /**
  24  * fonction qui retourne les droits Internet  pour une personne ou une machine
  25  
  26  * @Parametres variable de format "uid ou cn"
  27  * @Return  table  repersentent les niveaux de  droits Internet: droit permanent droit temporaire duree
  28  */
  29  
  30  function lecture_droit($uid)
  31  {
  32      global $ldap_server, $ldap_port, $dn, $ldap_base_dn;
  33      global $error;
  34      $error="";
  35      $ds = ldap_connect ($ldap_server, $ldap_port);
  36      if ($ds)
  37      {
  38          $r = ldap_bind ($ds); // Bind anonyme
  39          if ($r)
  40          {
  41              // recherche des entrees qui contiennent l'uid $uid
  42              $result = @ldap_search ($ds, "ou=People,$ldap_base_dn", "uid=$uid");
  43              $m = ldap_get_entries ( $ds, $result ); 
  44              if(!$m[0]["destinationindicator"][0])
  45              {
  46                  $result = @ldap_search ($ds, "ou=Computers,$ldap_base_dn", "cn=$uid");
  47                  $m = ldap_get_entries ( $ds, $result ); 
  48              }
  49              // lecture du droit
  50              $droit = $m[0]["destinationindicator"][0];
  51              $table_droit = explode(":", $droit); 
  52                  @ldap_free_result ($result);
  53          }
  54          else
  55          {
  56              $error = "Echec du bind anonyme";
  57          }
  58          ldap_close ( $ds );
  59      }
  60      else
  61      {
  62      $error = "Erreur de connection au serveur LDAP";
  63      }
  64  
  65      return $table_droit;
  66  }
  67  
  68  
  69  //=================================================
  70  
  71  /**
  72  * Retourne le droit temporaire d'une personne
  73  
  74  * @Parametres nom dont on veut connaitre le droit
  75  * @Return le droit
  76  */
  77  
  78  function lecture_droit_temporaire($nom)
  79  {
  80      global $error;
  81      $error="";
  82      $droits=lecture_droit($nom);
  83      return $droits[1];
  84  }
  85  
  86  
  87  //=================================================
  88  
  89  /**
  90  * Retourne le droit permament d'une personne
  91  
  92  * @Parametres nom de la personne
  93  * @Return le droit
  94  */
  95  function lecture_droit_permanent($nom)
  96  {
  97      global $error;
  98      $error="";
  99      $droits=lecture_droit($nom);
 100      return $droits[0];
 101  }
 102  
 103  
 104  
 105  //=================================================
 106  
 107  /**
 108  * Recherche les machines ayant le manager correspondant  a l'uid et etant dans un parc portable_*
 109  
 110  * @Parametres uid
 111  * @Return
 112  */
 113  function search_manager($uid)
 114  {
 115      global $ldap_server, $ldap_port, $dn, $ldap_base_dn;
 116      global $error;
 117      $error="";
 118      $ds = ldap_connect ($ldap_server, $ldap_port);
 119      if ($ds)
 120      {
 121          $r = ldap_bind ($ds); // Bind anonyme
 122          if ($r)
 123          {
 124              // recherche des entrees qui contiennent l'uid $uid
 125              $result = @ldap_search ($ds, "ou=Computers,$ldap_base_dn", "manager=uid=$uid,ou=People,$ldap_base_dn");
 126              $m = ldap_get_entries ( $ds, $result ); 
 127              for ($loop = 0; $loop < count($m)-1 ; $loop++)
 128              {
 129                  $computer[] = $m[$loop]["cn"][0];
 130              }
 131              @ldap_free_result ($result);
 132          }
 133          else
 134          {
 135              $error = "Echec du bind anonyme";
 136          }
 137          ldap_close ( $ds );
 138      }
 139      else
 140      {
 141      $error = "Erreur de connection au serveur LDAP";
 142      }
 143  
 144      return $computer;
 145  }
 146  
 147  
 148  //=================================================
 149  
 150  /**
 151  * Recherche les portables appartenant a $manager 
 152  
 153  * @Parametres manager le nom du proprio du portable
 154  * @Return un tableau de machines
 155  */
 156  function search_portables ($manager) {
 157  
 158  
 159        global $ldap_server, $ldap_port, $dn;
 160        global $error;
 161  
 162          $ldap_computer_attr = array ( "cn" );
 163          $filter_m = "(manager=uid=".$manager.",".$dn["people"].")";
 164  
 165        $ds = @ldap_connect ( $ldap_server, $ldap_port );
 166        if ( $ds ) {
 167              $r = @ldap_bind ( $ds ); // Bind anonyme
 168              if ($r) {
 169                    $result = @ldap_list ( $ds, $dn["computers"], $filter_m, $ldap_computer_attr );
 170                    if ($result) {
 171                      $info = @ldap_get_entries ( $ds, $result );
 172                      if ( $info["count"]) {
 173                            for ($loop=0; $loop < $info["count"]; $loop++) {
 174                              $filter_p = "(&(cn=portables_*)(member=cn=".$info[$loop]["cn"][0].",".$dn["computers"]."))";
 175                              $ldap_parc_attr = array ( "cn" );
 176                              $result_p = @ldap_list ( $ds, $dn["parcs"], $filter_p, $ldap_parc_attr );
 177                              if ($result_p) {
 178                                  $info_p = @ldap_get_entries ( $ds, $result_p );
 179                                  if ( $info_p["count"]) {
 180                                      $computers[]["cn"] = $info[$loop]["cn"][0];
 181                                  }
 182                              }
 183                              @ldap_free_result ( $result_p );    
 184                            }
 185                      }
 186                      
 187                  @ldap_free_result ( $result );
 188                    }
 189              }
 190      
 191              @ldap_close($ds);
 192        }
 193        
 194      return $computers;                
 195  }
 196  
 197  
 198  //=================================================
 199  
 200  /**
 201  * Retourne l'IP de la machine
 202  
 203  * @Parametres machine dont on veut l'IP
 204  * @Return l'adresse IP
 205  */
 206  
 207  function get_ip($machine)
 208  {
 209      global $ldap_server, $ldap_port, $dn, $ldap_base_dn;
 210      global $error;
 211      $error="";
 212      $valeur = 0;
 213  
 214      $ds = @ldap_connect ($ldap_server, $ldap_port);
 215      if ($ds)
 216      {
 217          $r = @ldap_bind ($ds); // Bind anonyme
 218          if ($r)
 219          {
 220              // recherche des ip de $machine
 221              $result = @ldap_search ($ds, "ou=Computers,".$ldap_base_dn, "(cn=".$machine.")", array("iphostnumber"));
 222              $m = @ldap_get_entries ( $ds, $result );
 223              for ($loop=0; $loop < count($m[0]["iphostnumber"]); $loop++) {
 224                  // Ips associees au nom
 225                  $ip = $m[0]["iphostnumber"][$loop];
 226              }
 227              @ldap_free_result ($result);
 228          }
 229          else
 230          {
 231              $error = "Echec du bind anonyme";
 232          }
 233          @ldap_close ( $ds );
 234      }
 235      else
 236      {
 237      $error = "Erreur de connection au serveur LDAP";
 238      }
 239      return $list_ip;
 240  }
 241  
 242  
 243  //=================================================
 244  
 245  /**
 246  * Renvoie un tableau de noms des  machines correspondant a l'iP si elle est dans le parc
 247  
 248  * @Parametres
 249  * @Return
 250  */
 251  
 252  function get_name($ip, $parc)
 253  {
 254      global $ldap_server, $ldap_port, $dn, $ldap_base_dn;
 255      global $error;
 256      $error="";
 257      $valeur = 0;
 258  
 259      $ds = @ldap_connect ($ldap_server, $ldap_port);
 260      if ($ds)
 261      {
 262          $r = @ldap_bind ($ds); // Bind anonyme
 263          if ($r)
 264          {
 265              // recherche des machines
 266              $result = @ldap_search ($ds, "ou=computers,".$ldap_base_dn,  "iphostnumber=".$ip);
 267              $m = @ldap_get_entries ( $ds, $result );
 268              if ($m["count"]>0) {
 269                    for ($loop=0; $loop < $m["count"]; $loop++) {
 270                      $resp = @ldap_search ($ds, "ou=Parcs,".$ldap_base_dn,  "(&(cn=".$parc.")(member=".$m[$loop]["dn"]."))");
 271                      $p = @ldap_get_entries ( $ds, $resp );
 272                      if ($p["count"] > 0 ) 
 273                          $machine[] = $m[$loop]["cn"][0];
 274                  }
 275              }
 276              @ldap_free_result ($result);
 277          }
 278          else
 279          {
 280              $error = "Echec du bind anonyme";
 281          }
 282          @ldap_close ( $ds );
 283      }
 284      else
 285      {
 286      $error = "Erreur de connection au serveur LDAP";
 287      }
 288  
 289      return $machine;
 290  }
 291  
 292  
 293  
 294  //=================================================
 295  
 296  /**
 297  * Compare deux chaines (ici des classes) a et b sans tenir compte de la case 
 298  
 299  * @Parametres $a et $b a comparer
 300  * @Return true si les deux chaines sont identiques
 301  */
 302  
 303  function myCmpClasse ($a, $b) {
 304          return strcasecmp ($a[cn][0], $b[cn][0]);
 305  }
 306  
 307  
 308  //=================================================
 309  
 310  /**
 311  * Compare deux chaines $a et $b sans tenir compte de la case
 312  
 313  * @Parametres $a et $b a comparer
 314  * @Return true si les deux chaines sont identiques
 315  */
 316  function myCmp ($a, $b)    {
 317          return strcasecmp ($a[uid][0], $b[uid][0]);
 318  }
 319  
 320  
 321  ?>


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1