* @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";
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 "
\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 "
\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";
}
//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";
}
}
} else {
echo "".gettext("Cette application, nécessite les droits d'administrateur du serveur Se3 !")."
";
}
include ("pdp.inc.php");
?>