[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |