<?php
/*
Copyright (C) 2002 Loc Dayot - Mairie de Pierrefitte (93)
EPNadmin - Version 0.6
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
http://epnadmin.pierrefitte93.fr/
*/
require_once("header.inc.php");
require_once("constantes.inc.php"); // dfinition des constantes
if (!defined("FCT_SITES"))
{
echo $fctnonactive;
exit;
}
require_once("fonctions.inc.php"); // concernant des fonctions transversales inclassables
require_once("mysql.inc.php"); // concernant mysql
//require_once("sessions.inc.php"); // concernant les sessions et initiations
//require_once("usagers.inc.php"); // concernant la gestion des usagers
//require_once("reservations.inc.php"); // concernant les rservations des postes en accs individuel par des usagers
//require_once("tableaux.inc.php"); // Concernant l'affichage transpos d'un tableau
require_once("siteweb.inc.php"); // concernant les pages perso des usagers et les sites web des structures
//require_once("dateheure.inc.php"); // concernant la manipulation des heures et des dates, formulaire, conversion...
require_once("structures.inc.php"); // concernant les structures
//require_once("initiations.inc.php"); // concernant les initiations et les thmes
//require_once("parcours.inc.php"); // concernant les parcours des usagers et leur positionnement
$ptitr=$ssites;
$titr = $stitresites;
define("COULEUR", COULEUR_SITES);
$datemaj="3 mai 2003";
require("entete.inc.php");
// Cration d'un sous-domaine ou d'un alias
function form_sousdomaine($operation, $id_sousdomaine=0, $id_domaine=1)
{
global $id_structure, $id_usager, $seditsite, $seditalias,
$seditionsite,$sstrugerante,$saliasdesite,$snomdesousdom,$sIdentifiant,
$sconfirmer,$sdirigeverssite,$sMotdepasse;
switch ($operation)
{
case 201 : $sentete=$seditsite; break;
case 221 : $sentete=$seditalias; break;
}
echo cadre_debut($sentete);
echo "<table border=1>
<form action=\"$PHP_SELF\">
<input type=\"hidden\" name=\"operation\" value=\"$operation\">";
// il s'agit d'un site web de structure
echo "<tr><td>$sstrugerante* :</td>";
echo "<td>";
if (SITES_AUTRES<"w")
echo "<input type=\"hidden\" name=\"id_stru\" value=\"$id_structure\">".structure($id_structure);
else
choix_structure($id_structure, "id_stru");
echo "</td></tr>\n";
echo "<tr><td>";
if ($operation>=221)
echo "$saliasdesite*";
else
echo "$snomdesousdom*";
echo " :</td><td><input type=\"text\" name=\"sousdomaine\">";
choix_domaine($id_domaine, "id_domaine");
echo "</td></tr>";
if ($operation==201)
echo "<tr><td>$sIdentifiant* :</td><td><input name=\"login\"></td></tr>
<tr><td>$sMotdepasse* :</td><td><input name=\"motdepasse\" type=\"password\"></td></tr>
<tr><td>$sMotdepasse* (2):</td><td><input name=\"motdepasse2\" type=\"password\"></td></tr>";
else
{
echo "<tr><td>$sdirigeverssite* :</td><td>";
choix_sousdomaine($id_sousdomaine, "id_sousdomaine");
echo "</td></tr>\n";
}
echo "<tr><td colspan=2 align=center>
<input type=\"submit\" name=\"Envoyer\" value=\"$sconfirmer\">
</td></tr>
</table>\n";
echo cadre_fin();
} // function form_sousdomaine
// Dbut de la page
switch ($operation)
{
case 10 : // Liste de tous les sites web
echo cadre_debut($slistesites);
if (SITES_AUTRES<"r")
{
echo $pasledroit;
echo cadre_fin();
break;
}
echo "<table border=1>
<tr><th align=center>Gestionnaire</th><th align=center>Sous-domaine</th><th align=center>Actions</th></tr>";
$req="SELECT * FROM hebergements
WHERE type=\"siteweb\" OR type=\"aliassiteweb\"
ORDER BY id_structure, sousdomaine";
$res=executeRequete($req);
while ($sousdomaine=fetch_object($res))
{
if ( $sousdomaine->id_structure!=$idstranc
|| $sousdomaine->id_usager!=$idusaanc)
{
if ($coul!="")
$coul="";
else
$coul=" bgcolor=\"lightgrey\"";
$idstranc=$sousdomaine->id_structure;
$idusaanc=$sousdomaine->id_usager;
}
echo "<tr$coul><td>";
if ($sousdomaine->id_structure)
echo structure($sousdomaine->id_structure);
else
echo usager($sousdomaine->id_usager);
echo "</td><td>";
if ($sousdomaine->type=="siteweb") echo "<b>";
echo "<a target='_blank' href=\"http://$sousdomaine->sousdomaine\">http://$sousdomaine->sousdomaine</a>";
if ($sousdomaine->type=="siteweb") echo "</b>";
if ($sousdomaine->type=="aliassiteweb")
echo " -> http://$sousdomaine->login";
echo "</td><td nowrap><a href=\"$PHP_SELF?id_sousdomaine=$sousdomaine->id&operation="; //"
if ($sousdomaine->id_structure) echo "50"; else echo "51";
echo "\">$info $sparametres</a>"; //"
/* if ($sousdomaine->id_structure) // pas encore prets
echo "<br><a href=\"$PHP_SELF?id_sousdomaine=$sousdomaine->id&operation=40\">
$modifier changer mot-de-passe</a>"; */
if (SITES_AUTRES>="w")
{
echo "<br><a href=\"$PHP_SELF?id_sousdomaine=$sousdomaine->id&operation="; //"
if ($sousdomaine->id_structure) echo "30"; else echo "31";
echo "\">$supprimer $ssupprimer</a>"; //"
}
echo "</td></tr>\n";
}
echo "</table>\n";
if (SITES_AUTRES>="w" || SITES_MOI>="w")
{
echo "<p><a href=\"$PHP_SELF?operation=20\">$ssitecreer</a></p>\n";
echo "<p><a href=\"$PHP_SELF?operation=22\">$ssitecreeralias</a></p>\n";
}
echo cadre_fin();
break;
case 11 : // Liste des sites web de la structure
echo cadre_debut($ssitesgerespar.structure($id_stru));
if (!$id_structure)
{
echo "<p>La sortie n'est pas par l...</p>\n";
echo cadre_fin();
break;
}
if (SITES_AUTRES<"r" || !$id_stru) $id_stru=$id_structure;
echo "<table border=1>
<tr><th align=center>$ssousdomaines</th><th align=center>$sActions</th></tr>";
$req="SELECT * FROM hebergements
WHERE (type=\"siteweb\" OR type=\"aliassiteweb\") AND ";
if ($id_structure)
$req.="id_structure=$id_stru";
else
$req.="id_usager=$id_usager";
$req.=" ORDER BY id_structure, sousdomaine";
$res=executeRequete($req);
while ($sousdomaine=fetch_object($res))
{
echo "<tr><td><a href='http://$sousdomaine->sousdomaine' target='_blank'>$sousdomaine->sousdomaine</a>";
if ($sousdomaine->type=="aliassiteweb")
echo " -> $sousdomaine->login";
echo "</td><td>
<a href=\"http://$sousdomaine->sousdomaine/webalizer\">$info statistiques</a> ";
echo "- <a href=\"$PHP_SELF?operation=";
if ($sousdomaine->id_structure) echo "50"; else echo "51";
echo "&id_sousdomaine=$sousdomaine->id\">$info $sparametres</a> ";
/* Pas encore fait.
if ($sousdomaine->id_structure && $sousdomaine->type!="aliassiteweb")
echo " - <a href=\"$PHP_SELF?operation=40&id_sousdomaine=$sousdomaine->id\">$modifier changer mot-de-passe</a>";
*/
echo " - <a href=\"$PHP_SELF?operation=";
if ($sousdomaine->id_structure) echo "30"; else echo "31";
echo "&id_sousdomaine=$sousdomaine->id\">$supprimer $ssupprimer</a></td></tr>\n";
}
echo "</table>\n";
if (SITES_AUTRES>="w" || SITES_MOI>="w")
{
echo "<p><a href=\"$PHP_SELF?operation=20\">$ssitecreer</a></p>\n";
echo "<p><a href=\"$PHP_SELF?operation=22\">$ssitecreeralias</a></p>\n";
}
echo cadre_fin();
break;
case 20 : // Crer un nouveau site web
form_sousdomaine(201);
break;
case 22 : // Crer un alias de site web
form_sousdomaine(221);
break;
case 201 : // Aprs saisie d'un nouveau site web
// Vrification des informations
echo cadre_debut($seditsite);
$mes="";
// le login n'existe-t-il pas dj ?
$req = "SELECT * FROM hebergements WHERE login=\"$login\"";
if ($res = executeRequete($req))
if (fetch_object($res))
$mes .= "$ssiteidentexistant<br>";
$req = "SELECT * FROM usagers WHERE login=\"$login\"";
$res = executeRequete($req);
if ($res)
if (fetch_object($res))
$mes .="$ssiteidentexistantusager<br>";
// le sous-domaine n'existe-t-il pas dj ?
$res = recherche("domaines", "id", $id_domaine);
$domaine = fetch_object($res);
$domaine = $domaine->domaine;
$req = "SELECT * FROM hebergements
WHERE sousdomaine='$sousdomaine.$domaine'
AND (type='siteweb' OR type='aliassiteweb')";
$res = executeRequete($req);
if (fetch_object($res))
$mes .="$ssitedomainepris<br>";
// vrification mot de passe
if ($motdepasse=="")
$mes.="$manquemotdepasse<br>";
elseif ($motdepasse!=$motdepasse2)
$mes.="$motdepassedifferents<br>";
if ($mes!="")
{
echo "<p>$mes</p>\n";
echo cadre_fin();
require("basdepage.inc.php");
echo "</body></html>";
require("footer.inc.php");
exit;
}
// Ajouter l'enregistrement dans la base de donnes hbergement
$motdepassec= md5($motdepasse);
$req="INSERT INTO hebergements (id_structure, type, sousdomaine, login, motdepasse)
VALUES ('$id_stru', 'siteweb', '$sousdomaine.$domaine', \"$login\", \"$motdepassec\")";
$res = executeRequete($req);
// Retourver le numro de l'enregistrement
$res = recherche("hebergements", "sousdomaine", "$sousdomaine.$domaine");
$enr = fetch_object($res);
$id_hebergement = $enr->id;
// Ajouter le compte sur la machine serveur (pour le FTP)
$motdepassec = crypt($motdepasse, "Sa");
$comm="useradd -d /home/wwwusers/".$sousdomaine.".".$domaine
." -c \"Site web $sousdomaine.$domaine\" -m -k /home/wwwusers/skel/"
." -g www -s /bin/bash -p $motdepassec $login";
executecommande("sudo $comm");
echo "<p>$ssitecreeok</p>\n";
// Envoi d'un courriel pour la demande de cration d'hte virtuel.
$corps = sprintf($ssitemessagecree,
structure($id_stru),
"http://$sousdomaine.$domaine",
"/home/wwwusers/$sousdomaine.$domaine/www");
$to=$administrateursitesweb;
$from=courriel("structures", $id_stru); // on recherche le courriel de la structure qui demande
if (!$from)
$from=$administrateursitesweb; // si on l'a pas, c'est pas grave
else
$to.=",".$from; // mais si on l'a, on envoi aussi le courriel.
$ok = mail($to, $ssiteobjetmessagecree,
$corps, "From:$from");
echo "<p>$corps</p>\n";
// Et si c'tait automatique...
$conf ="\n# $id_hebergement\n";
$conf.="<VirtualHost $ip_serveur:80>\n";
$conf.=" ServerAdmin $administrateursitesweb\n";
$conf.=" ServerName $sousdomaine.$domaine\n";
$conf.=" VirtualDocumentRoot /home/wwwusers/$sousdomaine.$domaine/www/\n";
$conf.=" VirtualScriptAlias /home/wwwusers/$sousdomaine.$domaine/cgi-bin/\n";
$conf.=" ErrorLog /var/log/apache-ssl/$sousdomaine.$domaine-error.log\n";
$conf.=" TransferLog /var/log/apache-ssl/$sousdomaine.$domaine-access.log\n";
$conf.=" CustomLog /var/log/apache-ssl/$sousdomaine.$domaine.log combined\n";
$conf.=" Alias /webalizer /home/wwwusers/$sousdomaine.$domaine/public_html/webalizer\n";
$conf.="</VirtualHost>\n";
$conf.="## $id_hebergement\n";
if (! config_apache_ajoute($conf))
debug($ssitepbconfapache);
echo cadre_fin();
break;
case 221 : // Aprs saisie d'un nouvel alias de site web
echo cadre_debut($seditalias);
// Vrification des informations
$mes="";
// le sous-domaine n'existe-t-il pas dj ?
$res = recherche("domaines", "id", $id_domaine);
$domaine = fetch_object($res);
$domaine = $domaine->domaine;
$req = "SELECT * FROM hebergements WHERE sousdomaine='$sousdomaine.$domaine'
AND (type='siteweb' OR type='aliassiteweb')";
$res = executeRequete($req);
if (fetch_object($res))
$mes .="$ssitedomainepris<br>";
if ($mes!="")
{
echo "<p>$mes</p>\n";
echo cadre_fin();
require("basdepage.inc.php");
echo "</body></html>";
require("footer.inc.php");
exit;
}
$req = "SELECT * FROM hebergements WHERE id=$id_sousdomaine";
$res = executeRequete($req);
$sousdomainedestination=fetch_object($res);
// Ajouter l'enregistrement dans la base de donnes hbergement
$req="INSERT INTO hebergements (id_structure, type, sousdomaine, login)
VALUES ('$id_stru', 'aliassiteweb', '$sousdomaine.$domaine', \"$sousdomainedestination->sousdomaine\")";
$res = executeRequete($req);
// Retrouver l'id_hebergement
$id_hebergement=insert_id();
// Envoi d'un courriel pour demande la cration de l'alias
$corps = sprintf($ssitemessagealiascree,
structure($id_stru),
"http://$sousdomaine.$domaine",
"http://$sousdomainedestination->sousdomaine");
$to=$administrateursitesweb;
$from=courriel("structures", $id_stru); // on recherche le courriel de la structure qui demande
if (!$from)
$from=$administrateursitesweb; // si on l'a pas, c'est pas grave
else
$to.=",".$from; // mais si on l'a, on envoi aussi le courriel.
$ok = mail($to, $ssiteobjetmessagealiascree,
$corps, "From: $from");
echo "<p>$corps</p>\n";
//debug($hebergement->id);
// Et si c'tait automatique
$conf ="\n# $hebergement->id\n";
$conf.="<VirtualHost $ip_serveur:80>\n";
$conf.=" ServerName $sousdomaine.$domaine\n";
$conf.=" Redirect permanent / http://$sousdomainedestination->sousdomaine\n";
$conf.="</VirtualHost>\n";
$conf.="## $hebergement->id\n";
if (! config_apache_ajoute($conf))
debug($ssitepbconfapache);
echo cadre_fin();
break;
case 30 : // Confirmation de destruction d'un site web
echo cadre_debut($ssitesuppr);
if (!$id_structure || SITES_AUTRES<"w")
{
echo $pasledroit;
echo cadre_fin();
break;
}
// On retrouve l'enregistrement du sous domaine
$res=recherche("hebergements", "id", $id_sousdomaine);
if (!$sousdomaine=fetch_object($res))
{
echo "<p>$ssiteintrouvable</p>\n";
echo cadre_fin();
break;
}
echo "<table border=1>";
echo "<tr><th colspan=2 align=center>$sousdomaine->sousdomaine</th></tr>";
echo "<tr><td>$sstrugerante :</td>";
echo "<td>".structure($sousdomaine->id_structure);
echo "</td></tr>\n";
if ($sousdomaine->type=="aliassiteweb")
echo "<tr><td>$ssitealiasde :</td><td>$sousdomaine->login</td></tr>\n";
else
{
echo "<tr><td>$sServeur FTP :</td><td>ftp.pierrefitte93.fr</td></tr>";
echo "<tr><td>$sIdentifiant FTP :</td><td>$sousdomaine->login</td></tr>";
echo "<tr><td>$sMotdepasse FTP :</td><td>Celui que vous avez saisi lors de la cration du site</td></tr>";
echo "<tr><td>$sdossierbase :</td><td>/www/</td></tr>\n";
}
echo "<tr><td colspan=2 align=center>
<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=301>
<input type=\"hidden\" name=\"id_sousdomaine\" value=$sousdomaine->id>";
if ($sousdomaine->type=="siteweb")
echo "
<input type=\"checkbox\" name=\"suppr_compte\" checked>Supprimer le compte (FTP)<br>
<input type=\"checkbox\" name=\"suppr_fichiers\">Supprimer les fichiers<br>";
echo "<input type=\"submit\" name=\"Supprimer\" value=\"Confirmer\">
</form>
</td></tr>\n";
echo "</table>\n";
echo cadre_fin();
break;
case 301 : // Destruction de site web
echo cadre_debut($ssitesuppr);
if (!$id_structure || SITES_MOI<"w")
{
echo $pasledroit;
echo cadre_fin();
break;
}
// Vrification des informations
$mes="";
// le sous-domaine existe-t-il ?
$res=recherche("hebergements", "id", $id_sousdomaine);
if (!$sousdomaine=fetch_object($res))
{
echo "<p>$ssiteintrouvable</p>\n";
echo cadre_fin();
break;
}
$req = "DELETE FROM hebergements WHERE id=$id_sousdomaine";
$res = executeRequete($req);
// Envoi d'un courriel pour demande la suppression du site
$corps = sprintf($ssitemessagesuppr,
structure($id_stru),
"http://$hebergement->sousdomaine");
$to=$administrateursitesweb;
$from=courriel("structures", $id_stru); // on recherche le courriel de la structure qui demande
if (!$from)
$from=$administrateursitesweb; // si on l'a pas, c'est pas grave
else
$to.=",".$from; // mais si on l'a, on envoi aussi le courriel.
$ok = mail($to, $ssiteobjetmessagesuppr,
$corps, "From: $from");
echo "<p>$corps</p>\n";
// Et si c'tait automatique
if (! config_apache_supprime($id_sousdomaine))
debug($ssitepbconfapache);
else
echo $ssitesupprok;
// Controle des droits pour rellement supprimer le compte...
if ($suppr_compte!="on" || SITES_AUTRES<"w")
{
echo $ssitepasledroitsupprfichiers;
echo cadre_fin();
break;
}
echo "<p>$ssitesupprcompte";
if ($suppr_fichiers=="on")
{
$comm="userdel -r $sousdomaine->login";
echo $ssitesupprfichiers;
}
else
$comm="userdel $sousdomaine->login";
echo ".</p>\n";
executecommande("sudo $comm");
echo cadre_fin();
break;
case 40 : // TODO : Changer de mot de passe pour un site (structure uniquement)
break;
case 50 : // Afficher les paramtres site web structure
echo cadre_debut($ssiteparametres);
$res=recherche("hebergements", "id", $id_sousdomaine);
if (!$sousdomaine=fetch_object($res))
{
echo $ssiteintrouvable;
echo cadre_fin();
break;
}
if (($sousdomaine->id_structure==$id_structure && SITES_MOI<"r")
|| SITES_AUTRES<"r")
{
echo $pasledroit;
echo cadre_fin();
break;
}
// On retrouve l'enregistrement du sous domaine
echo "<table border=1>
<tr><th align=center colspan=2>$sousdomaine->sousdomaine</th></tr>";
// recherche des alias de sitesweb
$res2=recherche("hebergements", "login", $sousdomaine->sousdomaine);
while ($alias=fetch_object($res2))
if ($alias->type=="aliassiteweb")
echo "<tr><td align=center>$sAlias : $alias->sousdomaine</td></tr>\n";
echo "<tr><td>$sstrugerante :</td>";
echo "<td>".structure($sousdomaine->id_structure);
echo "</td></tr>\n";
if ($sousdomaine->type=="aliassiteweb")
echo "<tr><td>$ssitealiasde :</td><td>$sousdomaine->login</td></tr>\n";
else
{
echo "<tr><td>$sServeur FTP :</td><td>ftp.pierrefitte93.fr</td></tr>";
echo "<tr><td>$sIdentifiant FTP :</td><td>$sousdomaine->login</td></tr>";
echo "<tr><td>$sMotdepasse FTP :</td><td>Celui que vous avez saisi lors de la cration du site</td></tr>";
echo "<tr><td>$sdossierbase :</td><td>/www/</td></tr>\n";
}
echo "<tr><td>$ssitepagedaccueil :</td><td><a href=\"http://$sousdomaine->sousdomaine/\" target='_blank'>http://$sousdomaine->sousdomaine/</a></td></tr>";
echo "<tr><td>$sStatistiques :</td><td><a target='_blank' href=\"http://$sousdomaine->sousdomaine/webalizer/\">http://$sousdomaine->sousdomaine/webalizer/</a></td></tr>";
echo "</table>\n";
echo cadre_fin();
break;
case 60 : // Modifier le site par dfaut
case 51 : // Afficher les paramtre page perso
default :
echo cadre_debut($ssiteparametrepageperso);
if ($id_usager)
{ // Il s'agit d'un usager individuel
$res=recherche("usagers", "id", $id_usager);
$usager=fetch_object($res);
echo "<table><tr><td>";
printf($ssiteinfopageperso,
"public_html/",
"<a href='http://perso.pierrefitte93.fr/~$usager->login'>http://perso.pierrefitte93.fr/~$usager->login</a>",
"<a href='http://perso.pierrefitte93.fr/~$usager->login/webalizer'>http://perso.pierrefitte93.fr/~$usager->login/webalizer</a>",
"ftp.pierrefitte93.fr",
"$usager->login@arobase.pierrefitte93.fr",
"/public_html/");
echo "</td></tr></table>\n";
}
else
$pasledroit;
echo cadre_fin();
}
// Fin de la page
require("basdepage.inc.php");
echo "</body></html>";
require("footer.inc.php");
?>