formater logs

Pomdeter
Invité n'ayant pas de compte PHPfrance

22 sept. 2010, 07:24

Bonjour à tous,

Je m'occupe d'un site communautaire, fonctionnant avec joomla (mais c'est un détail), et a ce titre je récupère les fichiers de logs produit par un composant de mon site, qui traque les tentatives d'intrusions.

ce fichier de logs génère une quantité de données, mais je souhaiterai en extraire certaines pour en proposer un "résumé" aux autres administrateurs du site.

Concrètement les données se présentes sous cette forme :

date heure navigateur ip utilisateur requette

Je souhaite créer un tableau n'affichant que :
date heure ip et utilisateur

Bien entendu les champs "navigateur" et "requette" n'affichent pas des données de format identique, voici quelques exemples :

Code : Tout sélectionner

2010-04-15 01:35:52 USER_AGENT: Opera/9.80 (Windows NT 6.1; U; fr) Presto/2.5.22 Version/10.51 IP: xx.xxx.xx.xxx USER: xxx REQUEST: exec=install PAR: /web/?exec=install
ou

Code : Tout sélectionner

2010-04-16 13:36:04 USER_AGENT: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.16) Gecko/2009121601 Ubuntu/8.10 (intrepid) Firefox/3.0.16 IP: xx.x.xx.x USER: visitor REQUEST: option=com_s5clanroster PAR: /web/index.php?option=com_s5clanroster&view=s5clanroster&Itemid=142//index.php?option=com_s5clanroster&view=http://www.siliconvalleyforex.com//cmdstate.txt???
Comme mes connaissances en PHP sont plus que limitées (le plus souvent j'adapte des moreceaux de code en fonction de mes connaissances) - et en l'occurence je ne vois pas du tout comment extraire (ou supprimer) certains champs de cette liste...

Merci d'avance si vous pouvez m'aiguiller.

ViPHP
ViPHP | 5462 Messages

22 sept. 2010, 16:58

c'est quel module ?

Pomdeter
Invité n'ayant pas de compte PHPfrance

22 sept. 2010, 19:02

Il s'agit de logs générés pas le plugin sentinelle (qui est un plugin de sécurité)

ViPHP
ViPHP | 5462 Messages

22 sept. 2010, 19:08

Il s'agit de logs générés pas le plugin sentinelle (qui est un plugin de sécurité)
y'a pas de gestion des log dans un table SQL ?

sinon avec file + preg_match, ca devrait le faire :wink:

Pomdeter
Invité n'ayant pas de compte PHPfrance

22 sept. 2010, 19:50

y'a pas de gestion des log dans un table SQL ?
Non, en l'occurence le plugin erit un fichier texte
sinon avec file + preg_match, ca devrait le faire :wink:
Pour le moment j'affiche les données de cette façon (ça me conviens à peu près pour l'utilisation que je souhaite en faire :

Code : Tout sélectionner

<? $lecture = fopen("logs.txt","r"); $var_fichier = fread($lecture, filesize("logs.txt")); fclose($lecture); // Formatage $var_fichier = str_replace("-",":",$var_fichier); $var_fichier = str_replace("visitor","Anonyme",$var_fichier); echo '<p><i>'.$var_fichier.'</i></p>';
Mon problème réside toujours dans le fait que, dans mes logs, certains champs n'affichent pas les mêmes données, le champ "User Agent" par exemple - que je souhaite supprimer - affiche des données très différentes, comme ceci :

Code : Tout sélectionner

USER_AGENT: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.16) Gecko/2009121601 Ubuntu/8.10 (intrepid) Firefox/3.0.16
ou,

Code : Tout sélectionner

USER_AGENT: libwww-perl/5.834
ou être encore bien différent, voir vide, du coup, je ne peux pas utiliser str_replace, qui me contraindrait a envisager tous les cas de figure (pas possible ^^ )

Et le problème se pose pour le champ "REQUEST:"

Pour mémoire, voici une "ligne" type de mes logs :

Code : Tout sélectionner

2010-04-15 01:35:52 USER_AGENT: Opera/9.80 (Windows NT 6.1; U; fr) Presto/2.5.22 Version/10.51 IP: 88.xx.xx.xx USER: "Nom_utilisateur" REQUEST: exec=install PAR: /web/?exec=install

Petit nouveau ! | 9 Messages

23 sept. 2010, 23:40

Peut-être en cherchant du côté de strpos pour identifier le positionnement des éléments fixes qui vont te permettre de calculer les paramètres à passer à substr pour découper la chaîne ?