[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/includes/ -> printers.inc.php (source)

   1  <?php
   2  
   3  
   4     /**
   5     * Fonctions pour la partie imprimante
   6    
   7     * @Version $Id printers.inc.php 2592 2007-11-21 16:26:45Z keyser $
   8     
   9     * @Projet LCS / SambaEdu 
  10     
  11     * @Auteurs Patrice Andre <h.barca@free.fr> Carip-Academie de Lyon
  12     
  13     * @Note  
  14  
  15     * @Licence Distribue sous la licence GPL
  16     */
  17  
  18     /**
  19  
  20     * file: printers.inc.php
  21     * @Repertoire: includes/ 
  22     */  
  23    
  24  
  25  
  26  
  27  
  28  require_once ("lang.inc.php");
  29  require_once("config.inc.php");
  30  require_once ("ldap.inc.php");
  31  bindtextdomain('se3-core',"/var/www/se3/locale");
  32  textdomain ('se3-core');
  33  
  34  
  35  $ou_printers="Printers";
  36  $printersRdn="ou=Printers";
  37  $dn["printers"]= "$printersRdn,$ldap_base_dn";
  38  
  39  
  40  
  41  
  42  /**
  43  
  44  * renvoie le parc de la machine dont on a fourni l'adresse IP ou une chaine vide si la machine n'appartient a aucun parc
  45      
  46  * @Parametres ip de la machine
  47  * @Return nom duparc ou chaine vide si aucun
  48  */
  49  
  50  function search_parc($ip){
  51  
  52    global $ldap_server, $ldap_port, $dn;
  53    global $error;
  54    $error="";
  55    $filter="cn=*";
  56    $trouver=FALSE;
  57  
  58    // LDAP attributs
  59   $members_attr = array ("member");
  60  
  61    $machine=search_computers("ipHostNumber=".$ip);
  62  
  63    //if ($machine != "") {
  64    if (count($machine)>0) {
  65     $ds = @ldap_connect ( $ldap_server, $ldap_port );
  66     if ( $ds ) {
  67      $r = @ldap_bind ( $ds ); // Bind anonyme
  68      if ($r) {
  69          $result=@ldap_search ($ds, $dn["parcs"], $filter,$members_attr);
  70  //    echo "\$result : ". $result;
  71          if ($result) {
  72            $info = @ldap_get_entries( $ds, $result );
  73  //       echo "<br>";
  74  //       echo $info["count"]." entrees trouvees"; echo "<br>";
  75  // $info["count"] renvoie le nombre de parc trouve
  76            if ($info["count"]>0){
  77    unset($tabparc);
  78    $tabparc=array();
  79  //$fich=fopen("/tmp/liste_parcs_$ip.txt","w+");
  80            for ($i=0; $i < $info["count"]; $i++) {
  81               for ($loop=0; $loop < $info[$i]["member"]["count"]; $loop++) {
  82  //               echo $info[$i]["member"][$loop];echo  "<br>"; echo $info[$i]["dn"];
  83  //         echo "<br>";
  84  //         echo $info[$i]["cn"][$loop];
  85  //         echo "<br>";
  86          //if (preg_match ('/$machine[0]["cn"]/',$info[$i]["member"][$loop])) {
  87          if (preg_match ('/'.$machine[0]["cn"].'/',$info[$i]["member"][$loop])) {
  88  //fwrite($fich,$info[$i]["member"][$loop]."\n");
  89              $parc = explode(",",$info[$i]["dn"]);
  90              $parc = explode("=",$parc[0]);
  91  //fwrite($fich,"\$parc[1]=".$parc[1]."\n");
  92              $tabparc[]=$parc[1];
  93  //        echo "<br>";
  94  //        echo "La machine est dans le parc :  ".$parc[1];
  95              $trouver=TRUE;
  96              break;
  97          }
  98            }
  99        }
 100  //fclose($fich);
 101           }
 102            @ldap_free_result ( $result );
 103          }
 104  
 105      } else {
 106        $error = gettext("Echec du bind anonyme");
 107      }
 108      @ldap_close ( $ds );
 109    } else {
 110      $error = gettext("Erreur de connection au serveur LDAP");
 111    }
 112    }
 113  
 114  //if (!$trouver) {$parc[1]=""; }
 115  //return $parc[1];
 116  
 117  //if (!$trouver) {return NULL;}else{return $parc;}
 118  if (!$trouver) {return NULL;}else{return $tabparc;}
 119  
 120  }
 121  
 122  
 123  /**
 124  
 125  * Retourne un ou a partir d'un dn
 126  
 127  * @Parametres dn
 128  * @Return ou retourne
 129  */
 130  
 131  // Retourne un ou a partir d'un dn
 132  function extract_ou ($dn) {
 133    $champ = preg_split ("/,/",$dn);
 134    $champ_ou = preg_split ("/=/",$champ[1],2);
 135    $champ_cn = preg_split ("/=/",$champ[0],2);
 136    if ($champ_ou[1]=="Printers") return $champ_cn[1];
 137  }
 138  
 139  
 140  /**
 141  
 142  * Recherche une imprimante a partir du filtre souhaite
 143  
 144  * @Parametres filtre
 145  * @Return imprimantes
 146  */
 147  
 148  function search_printers ($filter)
 149  {
 150    return search_imprimantes($filter,"printers");
 151  }
 152  
 153  
 154  
 155  /**
 156  
 157  * Recherche les imprimantes donnees par le filtre
 158  * @Parametres filtre et branche de recherche
 159  * @Return 
 160  */
 161  
 162  function search_imprimantes ($filter,$branch) {
 163    global $ldap_server, $ldap_port, $dn;
 164    global $error;
 165  
 166    // LDAP attributs
 167    if ("$branch"=="printers")
 168      $ldap_printer_attr = array (
 169      "nprintHardwareQueueName",
 170      "printer-name",
 171      "printer-uri",   // uri de l'imprimante
 172      "printer-location",                        //Emplacement  de l'imprimante
 173      "printer-info",        // Description de l'imprimante
 174      "printer-more-info" // Mode d'impression
 175      );
 176    else
 177      $ldap_printer_attr = array (
 178      "printer-name"
 179      );
 180  
 181    // Initialisation au cas ou il n'y aurait pas d'imprimante declaree:
 182    $printers=array();
 183  
 184    $ds = @ldap_connect ( $ldap_server, $ldap_port );
 185    if ( $ds ) {
 186      //$r = @ldap_bind ( $ds ); // Bind anonyme
 187      $adminLdap = get_infos_admin_ldap2();
 188      $r = @ldap_bind($ds, $adminLdap["adminDn"], $adminLdap["adminPw"]); // Bind admin LDAP
 189      
 190      if ($r) {
 191        $result = @ldap_list ( $ds, $dn[$branch], $filter, $ldap_printer_attr );
 192      if ($result) {
 193          $info = @ldap_get_entries ( $ds, $result );
 194  
 195  // print_r(array_values($info));
 196          if ( $info["count"]) {
 197            for ($loop=0; $loop < $info["count"]; $loop++) {
 198              $printers[$loop]["printer-name"] = $info[$loop]["printer-name"][0];
 199              if ("$branch"=="printers") {
 200                  $printers[$loop]["printer-uri"] = $info[$loop]["printer-uri"][0];
 201                  $printers[$loop]["printer-location"] = $info[$loop]["printer-location"][0];
 202                  $printers[$loop]["printer-info"] = utf8_decode($info[$loop]["printer-info"][0]);
 203                  $printers[$loop]["printer-more-info"] = $info[$loop]["printer-more-info"][0];
 204          $printers[$loop]["nprinthardwarequeuename"] = $info[$loop]["nprinthardwarequeuename"][0];
 205              }
 206            }
 207          }
 208          @ldap_free_result ( $result );
 209        }
 210      }
 211      @ldap_close($ds);
 212    }
 213    return $printers;
 214  }
 215  
 216  
 217  
 218  /**
 219  
 220  * Test l'adresse IP pour verifier si elle est correccte (incomplet)
 221  * @Parametres adresse ip
 222  * @Return true ou false
 223  */
 224  
 225  function verif_ip ($ip) {         // MARCHE PAS
 226    $motif="^([0-9]{1,3}.){3}[0-9]$";
 227    if (preg_match("/$motif/",$ip)) return false;
 228    else return false;
 229  }
 230  
 231  
 232  
 233  /**
 234  
 235  * Recherche les imprimantes membres d'un parc
 236  * @Parametres 
 237  * @Return
 238  */
 239  
 240  function printers_members ($gof,$branch,$extract) {   // Recherche les imprimantes membres d'un parc
 241    global $ldap_server, $ldap_port, $dn;
 242    global $error;
 243    $error="";
 244  
 245    $i=0;
 246    // LDAP attributs
 247    $members_attr = array (
 248        "member"   // Membres du groupe Profs
 249    );
 250    $ds = @ldap_connect ( $ldap_server, $ldap_port );
 251    if ( $ds ) {
 252      $r = @ldap_bind ( $ds ); // Bind anonyme
 253      if ($r) {
 254          $result=@ldap_read ($ds, "cn=$gof,".$dn[$branch], "cn=*", $members_attr);
 255          if ($result) {
 256            $info = @ldap_get_entries( $ds, $result );
 257            if ($info["count"]==1) {
 258              $init=0;
 259               for ($loop=0; $loop < $info[0]["member"]["count"]; $loop++) {
 260                  if ($extract==1)
 261            {
 262              if ( ($printer_ou=extract_ou($info[0]["member"][$loop]) ) != "" )
 263                {
 264              $ret[$i]=$printer_ou;
 265              $i++;
 266                }
 267            }
 268          else $ret[$loop]=$info[0]["member"][$loop];
 269           }
 270        }
 271  
 272            @ldap_free_result ( $result );
 273          }
 274  
 275      } else {
 276        $error = gettext("Echec du bind anonyme");
 277      }
 278      @ldap_close ( $ds );
 279    } else {
 280      $error = gettext("Erreur de connection au serveur LDAP");
 281    }
 282    return $ret;
 283  }
 284  
 285  
 286  
 287  
 288  //function people_get_variables($uid, $mode) {
 289  function get_default_printer($parc_cn) {
 290  
 291  
 292      /**
 293       * Retourne le nom de l'imprimante par défaut
 294  
 295       * @Parametres $parc_cn - Le cn du parc
 296  
 297       * @Return  une chaine contenant le cn de l'imprimante par default du parc_cn
 298  
 299       */
 300      global $ldap_server, $ldap_port, $dn;
 301      global $error;
 302      $error = "";
 303  
 304      // LDAP attribute
 305  //    $ldap_people_attr = array(
 306      $ldap_printer_attr = array(
 307          "cn",        // nom du parc
 308          "owner"        // contient le cn de l'imprimante par defaut
 309      );
 310  
 311      $ds = @ldap_connect($ldap_server, $ldap_port);
 312      if ($ds) {
 313          $r = @ldap_bind($ds); // Bind anonyme
 314          if ($r) {
 315  //            $result = @ldap_read($ds, "uid=" . $uid . "," . $dn["people"], "(objectclass=posixAccount)", $ldap_people_attr);
 316              $result = @ldap_read($ds, "cn=" . $parc_cn . "," . $dn["parcs"], "(objectclass=groupOfNames)", $ldap_printer_attr);
 317              if ($result) {
 318                  $info = @ldap_get_entries($ds, $result);
 319                  if ($info["count"]) {
 320  
 321                      if(isset($info[0]["owner"][0])) {                
 322                          $foo = ldap_explode_dn($info[0]["owner"][0],0);
 323                          $ret = substr($foo[0],3);
 324                      }
 325                  }
 326                  @ldap_free_result($result);
 327              }
 328          } else {
 329              $error = gettext("Echec du bind anonyme");
 330          }
 331  
 332          @ldap_close($ds);
 333      } else {
 334          $error = gettext("Erreur de connection au serveur LDAP");
 335      }
 336  
 337      return $ret;
 338  }
 339  
 340  
 341  ?>


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