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

\"livraison

\n"; } // Verifie qu'une chaine n'a pas de code introduisant une // breche de securite au niveau du shell function valid_input($line,$message){ $ret = 1; if (strchr($line,"*") || strchr($line,"?") || strchr($line,"/") || strchr($line,"..") || strchr($line,"(") || strchr($line,")") || strchr($line,"`") || strchr($line,"'") || strchr($line,"\"")){ printf ("%s\n",$message); $ret = 0; } return $ret; } function valid_inputdir($line,$message){ $ret = 1; if (strchr($line,"*") || strchr($line,"?") || strchr($line,"..") || strchr($line,"(") || strchr($line,")") || strchr($line,"`") || strchr($line,"'") || strchr($line,"\"")){ printf ("%s\n",$message); $ret = 0; } return $ret; } // Extrait tous les sous-repertoire function recursedir ($prof,$uid,$pass){ $f = popen ("/usr/sbin/livre_check_pass $uid $pass --profdirs \"$prof\"","r"); if (!$f){ printf ("Ne peut valider le mot de passe\n"); }else{ while (1){ $s=fgets($f,200); $s = trim($s); if ($s == "") break; $tb[]=$s; } pclose ($f); } return $tb; } function formfichier($uid,$pass,$prof,$subdir){ printf ("
\n"); printf ("
\n"); printf ("
\n"); printf ("\n"); printf ("\n"); printf ("\n"); printf ("\n"); printf ("\n"); printf ("\n"); printf ("Cliquez d'abord sur \"Parcourir\" pour choisir le fichier à livrer à l'enseignant

\n"); printf ("\n"); printf ("

\n"); printf ("Le fichier sera livré à $prof dans le dossier

\n"); printf ("\"dossier\"$subdir

\n"); printf ("\n"); // printf ("\n"); printf ("

\n"); } // Verifie un code usager et mot de passe. // Retourne le numero d'ecole si valide, false sinon function valid_user ($uid,$pass){ $ret = false; if (valid_input($uid,"Code usager invalide") && valid_input($pass,"Mot de passe invalide")){ $f = popen ("/usr/sbin/livre_check_pass $uid $pass --localuser","r"); if ($f){ $s=fgets($f,100); $s = trim($s); if ($s != ""){ $ret = $s; } pclose ($f); } } return $ret; } // $dirtp = "/ecoles/ // include ("/etc/livre.conf"); $uid = $PHP_AUTH_USER; $pass = $PHP_AUTH_PW; if ($state == ""){ $ecole = valid_user($uid,$pass); if (!$ecole){ Header("WWW-Authenticate: Basic realm=\"dossiers\""); Header("HTTP/1.0 401 Unauthorized"); echo "A la prochaine\n"; exit; }else{ imprime_entete(); // Produit la liste des prof printf ("

ecole %s

\n",$ecole); printf ("
\n"); printf ("
\n"); printf ("Sélectionnez un enseignant

\n"); $f = popen ("livre_check_pass $uid $pass --profliste","r"); if ($f){ while (1){ $s = fgets($f,200); $s = trim($s); if ($s == "") break; $tb[]=$s; } pclose ($f); if (is_array($tb)){ sort ($tb); } for ($i=0; $i$e
\n" ,urlencode($e)); } } printf ("

\n"); } }else if ($state == "2"){ // Un repertoire professeur est choisi. Il peut contenir // des sous repertoire ou non // S'il en contient, alors on presente la liste. Si l'usager // click, ca le mene a state == 3. // S'il n'y a pas de sous-repertoire, on presente le formulaire $ecole = valid_user($uid,$pass); imprime_entete(); if ($ecole && valid_input($prof,"Professeur inconnu")){ // && file_exists("/ecoles/$ecole/tp/$prof")){ $tb = recursedir ($prof,$uid,$pass); if (count($tb)==0){ formfichier($uid,$pass,$prof,""); }else{ sort ($tb); printf ("

Livraison du travail à l'enseignant(e) $prof

\n"); printf ("
\n"); printf ("

\n"); printf ("

\n"); printf ("Choisissez le dossier dans lequel vous voulez remettre votre travail\n

"); for ($i=0; $i$e
\n" ,urlencode($prof) ,urlencode($e)); } printf ("

\n"); } }else{ printf ("Validation ecole/professeur ??? :/ecoles/$ecole/tp/$prof:\n"); } }else if ($state == "3"){ // Livraison dans un sous-repertoire de professeur // Apres validation, on presente le formulaire $ecole = valid_user($uid,$pass); imprime_entete(); if ($ecole && valid_input($prof,"Professeur inconnu") && valid_inputdir($subdir,"Destination invalide")){ //&& file_exists("/ecoles/$ecole/tp/$prof/$subdir")){ formfichier($uid,$pass,$prof,$subdir); }else{ printf ("Validation ecole/professeur/destination ???\n"); } }else if ($state == "4"){ // On recoit le fichier a stocker $ecole = valid_user($uid,$pass); imprime_entete(); if ($ecole && valid_input($prof,"Enseignant inconnu") && valid_inputdir($subdir,"Destination invalide") && valid_input($fichier_name,"Nom de fichier invalide")){ $original = strrchr ($fichier_name,"/"); if ($original){ $original = substr($original,1); }else{ $original = $fichier_name; } // printf ("name = :%s: :%s:\n",$fichier_name,$original); $ss = system ("/usr/sbin/livre_check_pass $uid $pass \"$prof\"" . " \"$subdir\" $fichier \"$original\"",$ok); // printf ("ss=:$ss:\n"); if ($ok == 0){ printf ("
\n
"); printf ("
\n"); printf ("

Le document a été livré à l'enseignant(e) %s
\n" ,$prof); if ($subdir != ""){ printf ("dans le répertoire %s

\n",$subdir); printf ("Retour à la page d'accueil",$lienRetour); } printf ("\n"); }else{ printf ("
Attention: Le document n'a pas été livré\n"); } } }else{ printf ("

????\n"); } ?>