Conception PHP
Ci-dessous un script de monitoring FTP permettant de pouvoir superviser n’importe quel serveur FTP . Celui-ci ce veux autonome en cas d’un échec détecté, permettant de pouvoir exécuter des commandes PHP CLI avec exec() par exemple .
Celui-ci nécessite :
– Création d’un dossier :
mkdir -p /home/automate/ftpmonit/alerte
chmod o+x /home/automate/ftpmonit/alerte
– Création d’un fichier connect.txt dans /home/automate/ftpmonit du format suivant :
<SERVEUR>|<UTILISATEUR>|<PASSWORD>
– Copie du code suivant dans le fichier : /home/automate/ftpmonit/monit.php
– Création d’un cron pour qui soit répétitif ( http://fr.wikipedia.org/wiki/Crontab )
<?php function restore($user,$server){ $file = "/home/automate/ftpmonit/alerte/$user.$server.txt"; $num = file_get_contents($file);
$numc = trim($num)+1;
file_put_contents($file,$numc); if ($numc > 2 ){ if ($numc < 4 ){ echo "Trop de tentative : echec des relances\n"; $daten = date("d/m/Y H:i:s"); $message = "Panne du serveur : $user@$server a $daten \n ECHEC DES 3 TENTATIVES : \n\n Status : en attente d'une OPERATION MANUELLE"; mail("< VOTRE EMAIL >","[URGENT ALERTE FTP : $user]",$message,"From:< VOTRE EMAIL >"); }else{ echo "Trop de tentative - Message deja effectif\n"; } }else{ < VOS EXÉCUTIONS > } }
function alerte($user,$server){ $file = "/home/automate/ftpmonit/alerte/$user.$server.txt"; if (! file_exists($file)){ file_put_contents($file,"ALERTE"); $daten = date("d/m/Y H:i:s"); $message = "Panne du serveur : $user@$server a $daten \n\n Status : en attente d'un RECOVERY"; mail("< VOTRE EMAIL >","[ALERTE FTP : $user]",$message,"From:< VOTRE EMAIL >"); restore($user,$server); }else{ echo "\nFile Lock d<E9>ja present pour $user \n"; restore($user,$server); } }
function recovery($user,$server){ $file = "/home/automate/ftpmonit/alerte/$user.$server.txt"; if (file_exists($file)){ unlink($file); $daten = date("d/m/Y H:i:s"); $message = "Restauration du serveur : $user@$server a $daten"; mail("< VOTRE EMAIL >","[RECOVERY FTP : $user]",$message,"From:< VOTRE EMAIL >"); } }
// Mise en place d'une connexion basique $lines = file('/home/automate/ftpmonit/connect.txt'); /*On parcourt le tableau $lines et on affiche le contenu de chaque ligne pr<E9>c<E9>d<E9>e de son num<E9>ro*/ foreach ($lines as $lineContent) { list($ftpd,$user,$passwd)=explode("|",$lineContent); $ftp_server = $ftpd; $ftp_user = $user; $ftp_pass = $passwd; echo "CONNEXION : $ftpd - AVEC $user \n"; if (@ftp_connect(trim($ftpd))){ $conn_id = @ftp_connect(trim($ftpd)) or die("Couldn't connect to $ftp_server"); }else{
echo "\nEchec de connexion $ftpd\n"; $no = 1; alerte($ftpd,$user); } if ($no != 1){ // Tentative d'identification if (@ftp_login($conn_id, trim($ftp_user), trim($passwd))) { echo "OK"; $file = "/home/automate/ftpmonit/alerte/$ftp_user.$ftp_server.txt"; if (file_exists($file)){ echo " Recovery : $ftp_user@$ftp_server\n"; recovery($user,$ftpd); }else{ echo " Connect $ftp_user@$ftp_server\n"; } } else {
echo "NOK $ftp_user\n"; alerte($user,$ftpd); } } // Fermeture de la connexion @ftp_close($conn_id); unset($ftpd); unset($user); unset($passwd); unset($no); sleep("10"); echo "\n\n=========================================\n\n"; } ?>
L’interface de gestion utilisateur est composée de :
-
système de gestion de droit administrateur / modérateur
-
système de protection par IP
-
gestion de groupe et attribution d’identifiant à un groupe
-
La possibilité de modifier / supprimer / éditer facilement les groupes, la gestion d’utilisateur et les IP.
-
Protection du groupe s’ il est déjà associé à un utilisateur
-
Gestion de session.
Composition du droit administrateur :
-
Total modification et gestion
Composition du droit modérateur :
-
Ne peut supprimer un utilisateur
-
Ne peut gérer les IP
-
Ne peut désactiver un utilisateur
-
Ne peut modifier son identifiant
Composition :
-
MyDB pour la connexion Mysql (fichier de configuration config.inc.php)
-
PHP & Smarty en solution de Template vue MVC
-
Gestion de thème dans le dossier thème
-
CSS dans « css/general.css »
-
JavaScript intégré dans les fichiers Template
Télécharger
Publié sur le site PHPCS : http://www.phpcs.com/code.aspx?ID=49734
Cette parcelle de code est faite pour aider à la récupération de la dernière version de webmin , si jamais, on souhaite créer un script PHP utilisant l’extension SSH2 ( bien pour l’exécuter à distance ), mais on peut également le faire en local . Ce morceau de code peut servir pour la création d’une mise à jour de webmin automatique sur une machine Ubuntu ou Debian .
- <?php
- $fp = file_get_contents(‘http://download.webmin.com/devel/deb‘, ‘r‘);
- $doc = new DOMDocument();
- $doc->loadHTML($fp);
- $tags = $doc->getElementsByTagName(‘a‘);
- foreach ($tags as $tag) {
- $extension = explode(« .« ,$tag->nodeValue);
- if ((strstr($tag->nodeValue, »webmin« ))&&(in_array(« deb« , $extension))){
- $version = explode(« _« ,$tag->nodeValue);
- if (is_numeric($version[1])){
- $version_nouvelle = $version[1]; # Nouvelle version de webmin
- }
- }
- }
- ?>
Publication sur PHPCS de Codes Sources : http://www.phpcs.com/codes/DETERMINER-VERSION-WEBMIN_48728.aspx
(Site réalisé par Desroches Kilian )
Site commerçant présentant divers articles , bijoux et autres . Vente par correspondance . Utilisation du CMS Thélia pour la conception du site . Modification de l’url Rewriting pour amélioration du référencement . Personnalisation de l’administration , création de nouveaux modules de gestion de paiement et gestion d’articles .
Tâches cron :
Principe : à chaque mise à jour d’insertion modification suppression , crontab.php analyse la table et met à jour vos données CRON dans le fichier TEXTE qu’il importe dans crontab système .
Le but est simplement de pouvoir mettre en place une interface de gestion de cron pour néophyte qui soit en PHP sans utiliser le gestionnaire de crontab sous webmin
Version 0.1 gratuite sur ComScripts : Comscripts
Version 1.0 : en vente sur le site de l’agence 3W :
Explication sur le site de l’agence : Explications du projet
Démo sur le site de l’agence : Démo du Projet