Si ce sont des “append” à la fin du fichier, tu peux faire une lecture “pipe” de ton fichier en adaptant la lecture en continu de la manière suivante:
initialisation
open(LEFIC,"</chemin/vers/le_fichier");
while (<LEFIC>) { }; # on ignore l'existant qu'on a déjà traité
my $curPos=tell(LEFIC);
aprés, quand tu as besoin de regarder les nouvelles lignes du fichier:
seek(LEFIC,$curPos,0);
while(<LEFIC>){ faire_qqchose_avec($_); };
$curPos=tell(LEFIC); Et tu en fais un démon qui ne réagit que quand il y a du nouveau.
quote="Yukiz"
On marque quoi dans les bloucles while ?[/quote] Ben ce que tu veux (à chaque itération, $_ contient une ligne). Le premier bloc lit donc ligne à ligne l’ensemble du fichier une première fois (je partais de l’idée que seules les nouvelles lignes t’interressaient donc cette boucle ne fait rien mais tu peux y faire ce que tu veux), et le bloc suivant reprend dans le fichier là ou était la fin avant, puis relit ligne à ligne les nouveaux ajouts (et là, à toi de faire quelquechose avec le $_ contenant la ligne lue).[quote=“Yukiz”]
Faut-il que je change quelques chose ( a part le chemin fichier ) ?[/quote]Ca dépend. Tu veux faire un programme qui fait quelquechose, ou c’est pour imprimer le code et l’afficher sur le mur ? [quote=“Yukiz”] (…)
Je te remercie, j’essaie de trouver le bloc de code qui sert a l’ouverture du fichier et j’te post cela.
Merci
EDIT :
if($config{"BADIP-YUKSERV"}{"Enabled"}) {
my @content = &readFile("Bad IP: ",$config{"BADIP-YUKSERV"}{"File"});
$settings{"badip"}{"content"} = \@content;
}
On prend en consideration que l’Option BADIP-YUKSERV est Activée ( Enabled ).
Bien, en faite, il faut que le fichier soit lu et relu du debut.
Par forcement de la derniere ligne obtenue.
Ce serait plus simple, non ?
Le Robot procede comme ca :
–
Le Robot lit le code toutes les 2 secondes
Il rafraichit la liste des utilisateurs connectés.
Arrivé a mon bout de code, il verifie son adresse IP.
Si son adresse IP est equivalant que les IPs dans le fichier, alors il procède a un bannissement.
Donc, il faudrait que le bot, a chaque relecture, renitialise la variable ayant le contenu du fichier des bannis, et replace toutes lignes du fichier dans la variable.
Peut-etre qu’un simple renitialisment sufierait … Sais tu le faire ?
Je ne comprend toujours pas ton problême.
Si ce que tu veux, c’est revenir au début et relire tout le fichier à chaque fois, il suffit soit de le réouvrir quand tu as besoin, soit de lui dire seek(LEFIC,0,0) et le fichier est alors remboniné. Dans ce cas là, je ne vois pas trop la difficulté.
Mais si le processus qui alimente ta blacklist ne fait que rajouter des nouvelles adresses à la fin du fichier, je ne vois pas pkoi tu veux le relire intégralement à chaque fois. Autant entretenir en mêmoire une version en liste de tes adresses interdites et l’utiliser pour vérifier les adresses des connectés (grep /^$ipconnectée$/,@la_liste_des_adresses_interdites), plutot que de relire le fichier à chaque fois que tu vérifies une adresse. Tu fabrique ta liste au démarrage, et tu fais une routine qui la met à jour régulièrement. Aprés, quand tu as besoin, tu vérifies la présence ou non des ips que tu veux tester dans cette liste.
[quote=“Yukiz”]Pourrais tu m’expliquer comment marche ’ seek(LEFIC,0,0) '?[/quote] perldoc.perl.org/functions/seek.html [quote=“Yukiz”]Je le metrais ou dans ce bloc de lignes :
(…)[/quote]Aucune idée: je ne sais pas ce que tu veux faire avec ce seek.