* @auteurs Carip-Academie de Lyon * @Licence Distribue selon les termes de la licence GPL * @note */ /** * @Repertoire: printers/ * file: config_printer.php */ // Configuration d'un nouvelle imprimante // Ecriture dans CUPS et LDAP include "entete.inc.php"; include "ldap.inc.php"; // include "ihm.inc.php"; // pour enleveaccents(); include "printers.inc.php"; require_once ("lang.inc.php"); bindtextdomain('se3-printers',"/var/www/se3/locale"); textdomain ('se3-printers'); //aide $_SESSION["pageaide"]="Imprimantes"; $nom_imprimante=$_POST['nom_imprimante']; $nom_printer=$_POST['nom_printer']; $lieu_printer=$_POST['lieu_printer']; $info_printer=$_POST['info_printer']; $dev_mode=$_POST['dev_mode']; $driver_printer=$_POST['driver_printer']; $uri_printer=$_POST['uri_printer']; $config_printer=$_POST['config_printer']; $protocole=$_POST['protocole']; $driver=$_POST['driver']; $lieu_imprimante=$_POST['lieu_imprimante']; $info_imprimante=$_POST['info_imprimante']; $uri_imprimante=$_POST['uri_imprimante']; $lieu_imprimante=$_POST['lieu_imprimante']; $modif_imprimante=$_POST['modif_imprimante']; $fabriquant = $_POST['fabriquant']; if (isset ($_POST['imp_mode'])) $imp_mode="on"; else $imp_mode="off"; if (is_admin("se3_is_admin",$login)=="Y") { //Affichage de la page de saisie des parametres l'imprimante echo "

".gettext("Configuration de l'imprimante")."

\n"; if ( !$nom_imprimante || !$uri_imprimante || !$lieu_imprimante || !$info_imprimante ) { // Pour une modif if($nom_printer) { $nom_imprimante=$_POST['nom_printer']; $modif_imprimante="1"; } if($lieu_printer) {$lieu_imprimante=$_POST['lieu_printer']; } if($info_printer) {$info_imprimante=$_POST['info_printer']; } if($uri_printer) { if(preg_match('/^ipp/',$_POST['uri_printer'])) { $protoc="custom"; $uri_imprimante=$_POST['uri_printer']; } if(preg_match('/^smb/',$_POST['uri_printer'])) { $protoc="smb"; list(,,,$uri_imp,$imp)=preg_split('///',$uri_printer); if ($imp!="") { $uri_imprimante="$uri_imp"; } else { $uri_imprimante="$uri_imp"; } } if(preg_match('/^socket/',$_POST['uri_printer'])) { $protoc="socket"; list(,,$uri_imp_1)=preg_plit('///',$uri_printer); list($uri_imp,)=preg_split('/:/',$uri_imp_1); $uri_imprimante="$uri_imp"; } if(preg_match('/^parallel/',$_POST['uri_printer'])) { $protoc="parallel"; list(,$uri_imp,)=preg_split('///',$uri_printer); $uri_imprimante="$uri_imp"; } if(preg('/^http/',$_POST['uri_printer'])) { if(preg_match('/printers/',$_POST['uri_printer'])) {$protoc="ipp";} else {$protoc="http";} list(,,$uri_imp_1)=preg_split('///',$_POST['uri_printer']); list($uri_imp,)=preg_split('/:/',$uri_imp_1); $uri_imprimante="$uri_imp"; } if(preg_match('/^lpd/',$_POST['uri_printer'])) { $protoc="lpd"; list(,,$uri_imp_1)=preg_split('///',$_POST['uri_printer']); list($uri_imp,)=preg_split('/:/',$uri_imp_1); $uri_imprimante="$uri_imp"; } if(preg_match('/^usb/',$_POST['uri_printer'])) { $protoc="usb"; list(,$uri_imp,)=preg_split('///',$_POST['uri_printer']); $uri_imprimante="$uri_imp"; } } //Affichage du formulaire de la liste des pilotes CUPS echo "
\n"; echo "\n"; echo "\n"; echo "\n"; // Si une modif on ne peut pas changer le nom if($nom_imprimante) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } else { echo "\n"; echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
".gettext("Nom")." :$nom_imprimantePour pouvoir le faire vous devez supprimer et recréer l\'imprimante')")."\">Celui-ci doit être unique et limité à 8 caractères.
Dans le cas d\'une imprimante partagée, indiquez le nom de partage')")."\">
URI :Dans le cas d\'une imprimante partagée, indiquez le nom du poste qui partage l\'imprimante.
Pour une imprimante IPP, vous pouvez egalement entrer l\'URI complete, par exemple ipp://172.16.100.113:631/A21-CA3
dans ce cas choisissez Personnalise pour le protocole')")."\">
".gettext("Emplacement")." :Cette information n\'est qu\'indicative.')")."\">
".gettext("Description")." :
\n"; echo "
"; echo "

".gettext("Sélectionnez votre protocole : "); echo "Dans le cas d\'une imprimante partagée, indiquez Samba.
Dans le cas d\'une imprimante réseau, TCP/IP doit fonctionner dans la majorité des cas mais se référer à la documentation de l\'imprimante permettra de choisir le meilleur protocole.
Si vous savez ce que vous faites, vous pouvez aussi
utiliser Personnalisé pour les imprimantes IPP :
dans ce cas entrez l\'URI exacte de l\'imprimante dans le champ URI, Par exemple ipp://172.16.1.1:631/truc
Vous pouvez également consulter la documentation Se3 en ligne pour plus d\'informations.')")."\">
"; echo "

\n"; echo "\n"; echo "
"; //drivers echo "

".gettext("Choix du pilote d'impression : "); echo ""; echo "Pilote windows du client déployable : Soit le pilote de l\'imprimante est placé sur le serveur SambaEdu dans le partage drivers et s\'installe automatiquement ou bien vous l\'installez manuellement sur chaque poste, au choix
Pilote CUPS : Vous utilisez le pilote CUPS, qui est d\'une qualité inférieur (déconseillé).')")."\">

"; echo "\n"; if($driver_printer) { // client windows if($driver_printer=="raw") { echo "\n"; echo "\n"; } // client windows deployable echo "\n"; echo "\n"; // client cups echo "\n"; echo "\n"; // Ancien client cups if (($driver_printer!="raw") && ($driver_printer!="dep")) { // un driver cups existe deja list(,$fabric_old,$driver_old) = preg_split('///',$driver_printer); list($driver_only,,) = preg_split('/./',$driver_old); echo "\n"; echo "\n"; } } else { // On cree une nouvelle imprimante // client windows // echo "\n"; // echo "\n"; // client windows deployable echo "\n"; echo "\n"; // client cups echo "\n"; echo "\n"; } echo "
".gettext("Pilote Windows du client")."
 ".gettext("Option obsolete, préférez le client déployable")."
".gettext("Pilote Windows du client deployable")."
 ".gettext("Permet de deployer à partir du serveur le client windows")."
"; echo gettext("Pilote du serveur d'impression CUPS")."
 ".gettext("Qualité d'impression en générale inférieure")."
".gettext("Pilote CUPS existant ").$driver_printer."
 ".gettext("Qualité d'impression en générale inférieure")."
"; // echo gettext("Pilote Windows du client")."
 ".gettext("Option par défaut, installation manuelle du pilote")."
".gettext("Pilote Windows du client deployable")."
 ".gettext("Permet de deployer à partir du serveur le client windows")."
"; echo gettext("Pilote du serveur d'impression CUPS")."
 ".gettext("Qualité d'impression en générale inférieure")."
\n"; echo "

".gettext("Correction de problèmes : "); echo ""; echo "

"; echo "\n"; echo "\n"; echo "\n"; echo "
"; echo gettext("Correction pilote défaillant")."
 ".gettext("Dans le cas d'un pilote déployable, si lors de la mise en place du pilote
explorer.exe plante, cochez cette case...")."
\n"; echo "
"; echo "\n"; echo "\n"; echo "
\n"; if ($config_printer) { if ( (!$nom_imprimante)||(!$uri_imprimante)||(!$lieu_imprimante) ) { echo "
".gettext("Vous devez obligatoirement renseigner les champs: Nom, URI, Emplacement, Description !")."

\n"; } elseif (1==1) { echo "
".gettext("Vous devez saisir une adresse IP valide !")."

\n"; } } } //Affichage de la page de confirmation de l'installation de l'imprimante elseif ($driver != "cups") { // Verification de l'existence de cette imprimante $nom_imprimante = stripslashes($nom_imprimante); $printer_name =utf8_encode($nom_imprimante); $printer_exist=search_printers("(&(printer-name=$printer_name)(objectClass=printerService))"); // Suppression des accents et des espaces que l'utilisateur a entres dans les champs $nom_imprimante=enleveaccents($nom_imprimante); $info_imprimante=enleveaccents($info_imprimante); $lieu_imprimante=enleveaccents($lieu_imprimante); // Cas d'une modification if(($_POST["modif_imprimante"]=="1") && (count($printer_exist))) { exec("/usr/share/se3/sbin/printerMod.pl $nom_imprimante $uri_imprimante $lieu_imprimante $info_imprimante $protocole $driver $imp_mode",$AllOutPut,$ReturnValue); // echo "/usr/share/se3/sbin/printerMod.pl $nom_imprimante $uri_imprimante $lieu_imprimante $info_imprimante $protocole $driver"; // Compte rendu de creation if ($ReturnValue==0) { exec("/usr/share/se3/sbin/printers_group.pl"); echo gettext("L'imprimante")." $nom_imprimante ".gettext("a été reconfigurée avec succès")."
"; echo "
"; echo "Retour"; echo "
"; } else { echo "
".gettext("Erreur lors de la modification de l'imprimante")." $nom_imprimante(".gettext("type d'erreur")." : $ReturnValue) ,".gettext("veuillez contacter")." ".gettext("l'administrateur du système")."

\n"; } } else { // Si ce n'est pas une modification if (count($printer_exist)) { // Si la machine existe deja il faut changer le nom. echo "
".gettext("Echec de création : L'imprimante")." $nom_imprimante ".gettext("est déja présente dans l'annuaire.")."

\n"; echo "
"; echo "Retour"; echo "
"; } else { // Sinon on la cree // Ecriture de la configuration dans CUPS et LDAP // echo "/usr/share/se3/sbin/printerAdd.pl $nom_imprimante $uri_imprimante $lieu_imprimante $info_imprimante $protocole $driver"; exec("/usr/share/se3/sbin/printerAdd.pl $nom_imprimante $uri_imprimante $lieu_imprimante $info_imprimante $protocole $driver $imp_mode",$AllOutPut,$ReturnValue); // Compte rendu de creation if ($ReturnValue==0) { echo gettext("L'imprimante")." $nom_imprimante ".gettext("a été configurée avec succès")."
"; echo ""; echo gettext("Ajouter l'imprimante à un parc"); echo ""; } else { echo "
".gettext("Erreur lors de la création de l'imprimante ")." $nom_imprimante (".gettext(" type d'erreur")." : $ReturnValue) ,
".gettext("veuillez contacter")." ".gettext("l'administrateur du système")."

\n"; echo "
"; echo "Retour"; echo "
"; } } } // A partir d'ici on propose le choix d'un driver CUPS } elseif(isset($driver) && ($driver=="cups")) { // Retourne le nombre de pilotes $nb_drivers=exec("/usr/sbin/lpinfo -m | wc -l"); // Retourne les fabiquants des pilotes $return=exec ("/usr/sbin/lpinfo -m | cut -d\" \" -f2",$fab_drivers); //Affichage du formulaire de selection du fabriquant. if (!isset($fabriquant)) { echo "

".gettext("Sélectionnez la marque de l'imprimante")."

\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "

\n"; echo "
\n"; echo "
\n"; } //Affichage du formulaire de selection des pilotes pour le fabriquant choisi. else { echo "

".gettext("Sélectionnez le pilote de l'imprimante")."

\n"; $return=exec ("/usr/sbin/lpinfo -m | cut -d\" \" -f1",$ppd_drivers); $return=exec ("/usr/sbin/lpinfo -m | cut -d\" \" -f3-",$name_drivers); echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "

\n"; echo "
\n"; echo "
\n"; } } } else { echo "
".gettext("Cette application, nécessite les droits d'administrateur du serveur Se3 !")."
"; } include ("pdp.inc.php"); ?>