Anti-Frenzy par MenzAgitat
Catégorie : Sécurité - protection
68 téléchargements
Résumé : Défense d'appoint pour votre chan : antiflood pouvant s'appliquer sur des commandes n'en ayant pas, antibadwords avec regexp, riposte graduée, nombreux paramètres.
Description :
Description :

Anti-Frenzy est un anti-flood universel pouvant être appliqué sur des commandes n'en possédant pas, et il peut également faire office de script anti-badwords.

Vous pouvez définir une liste de commandes ou de masques de reconnaissance qui seront surveillés par Anti-Frenzy, comme par exemple :
{!*}
{.*}
{!kick *}
{* connard *}

D'autre part, Anti-Frenzy peut être utilisé comme un anti-flood complémentaire pour des commandes en possédant déjà  un. Supposons que vous ayez réglé l'anti-flood de la commande !truc pour ne pas autoriser plus de 5 commandes en 3mn, donc rien n'empêche un utilisateur de taper 5 fois !truc en 1 seconde et ce n'est pas forcément une bonne chose.
Il vous suffit de paramétrer Anti-Frenzy pour qu'il intervienne si la commande !truc est utilisée disons 2 fois en moins d'1 seconde.

Anti-Frenzy permet d'appliquer une riposte graduée en plusieurs étapes.
Par exemple le premier abus peut être sanctionné d'un 1er avertissement + devoice, le second d'un 2ème avertissement + devoice + dehalfop + deop, le troisième d'un kick, le 3ème d'un ban, etc...

Gardez à l'esprit qu'Anti-Frenzy ne bloque pas l'exécution des commandes en cas de flood, mais il peut ignorer l'offenseur pendant quelques secondes (paramétrable).

Pour désactiver Anti-Frenzy sur un chan en particulier, vous pouvez taper la ligne suivante en partyline :
tcl
.chanset #nomduchan -AntiFrenzy


Ou pour le réactiver :
tcl
.chanset #nomduchan +AntiFrenzy


AntiFrenzy est activé par défaut sur tous les chans enregistrés sur l'eggdrop.

Anti-Frenzy est conçu pour fonctionner sur sur les serveurs qui possèdent un service du nom de ChanServ (Anope ou Epona) mais il devrait pouvoir être utilisé sur d'autres types de serveur moyennant un minimum de modifications.


Détails techniques :

Les nouveaux déclencheurs sont ajoutés manuellement dans le script selon la syntaxe suivante :
{{#chan} {*mask*} {regexp/noregexp} {num:sec} {cm} {bantime} {cible :warn1} {cible :warn2} {kick msg} {ban msg}}
  • #chan peut valoir le nom du chan sur lequel vous voulez que cela s'applique ou peut valoir global si vous voulez que le déclencheur soit valable sur tous les chans sur lesquels Anti-Frenzy est actif.
  • *mask* contient le masque de détection. Vous pouvez utiliser des jokers ou des expressions régulières.
  • regexp/noregexp spécifie si le masque utilise des expressions régulières (regexp) ou non. Peut valoir regexp ou noregexp.
  • num:sec = combien de fois maximum:en combien de secondes. Détermine le nombre de fois qu'on tolère *mask* en un temps donné avant d'appliquer des contre-mesures.
    Peut valoir 0:0 auquel cas le déclencheur sera considéré comme un badword et les contre-mesures seront appliquées immédiatement à chaque déclenchement.
  • cm = contre-mesures. Voici une liste des contre-mesures disponibles :
    • w1 = warn1 (1er message d'avertissement)
    • w2 = warn2 (2ème message d'avertissement)
    • k = kick
    • do = deop
    • dh = dehalfop
    • dv = devoice
    • b = ban
    • f = flag (les flags -alo+dr sont appliqués sur le handle de l'user (qui est lui-même créé si nécessaire), puis il est déopé et déhalfopé.
      Les flags +dr ont pour effet d'empêcher le coupable d'être opé ou halfopé à l'avenir.
    Vous pouvez utiliser des combinaisons :
    w1do = warn1 + deop
    dodhdv = deop + dehalfop + devoice
    ...
    Vous pouvez cumuler autant de contre-mesures que vous le souhaitez et les combiner comme bon vous semble : {w1 dodhdv k w2f kb}
  • bantime = durée du ban en secondes.
  • cible :warn1 et cible :warn2 sont les 2 messages d'avertissement correspondant aux contre-mesures w1 et w2. La cible du message doit être spécifiée.
    Par exemple, pour afficher le message sur le chan on fera :
    {$chan :attention, ceci est un message d'avertissement !}
    ou en privé à l'utilisateur :
    {$nick :attention, te voilà averti}
    ou même envoyer une commande aux services :
    {ChanServ :DEPROTECT $chan $nick}
    Veuillez noter qu'il est important de respecter l'espace suivi des ":" après la cible du message.
  • kick msg est le message de kick qui sera utilisé.
  • ban msg est le message de ban qui sera utilisé.

Exemple détaillé :
{{global} {!*} {noregexp} {2:3} {w1do k kb} {600} {$chan :$nick > du calme avec les commandes} {$chan :$nick > dernier avertissement} {tiens, prends ça !} {et ça !}}
Explication de l'exemple :
On surveille toutes les commandes commençant par "!" sur TOUS les chans où Anti-Frenzy est actif (global).
On autorise au maximum 2 commandes en 3 secondes.
La première transgression déclenchera un avertissement + déop de la personne (w1do).
Le message d'avertissement suivant sera affiché sur le chan :
"$nick > du calme avec les commandes" (où $nick sera remplacé par le pseudo de l'utilisateur qui a commis l'abus).
La deuxième transgression déclenchera un kick (k) et la troisième un ban (b) d'une durée de 600 secondes.
Notez que si vous souhaitez utiliser les caractères { ou } dans les messages d'avertissement, le message de kick, le message de ban ou dans le nom du chan, vous devez antislasher ces caractères comme ceci : \{ \}



post support : http://www.eggdrop.fr/board/showthread.php?tid=412

Changelog

Version 2.02 par MenzAgitat (22/04/2020)
68 téléchargements
Correction : le script refusait de se charger sur les Eggdrops v1.8+
Correction : le seuil de déclenchement n'était pas correctement pris en compte et nécessitait +1 occurrence pour se déclencher.
Correction : une erreur se produisait si le paramètre forgiveness_delay était réglé à une valeur inférieure à 2.
Version 1 par MenzAgitat (31/05/2009)
110 téléchargements
v1.1
meilleure gestion des caractères spéciaux dans les nicks.
lorsque le script se désinstalle, il arrête désormais proprement ses timers/utimers en cours.
v1.2
le script est maintenant compatible avec eggdrop v1.6.20 même si vous activez l'option alternate_msg_queue.
passage sous licence Creative Commons.
v1.3
Ajout : il est désormais possible de spécifier un nick différent sur chaque chan pour le bot de BotServ.
Ajout : vous pouvez maintenant définir plusieurs handles de personne à informer lors de l'application d'une punition de type flag +dr.
Diverses optimisations du code.
v2.0
Restructuration d'une bonne partie du script, nombreuses optimisations du code et réécriture de la documentation.
Correction : une erreur se produisait si la variable de configuration BotServ était vide ou incomplète
Correction : Les étapes des contre-mesures étaient décrémentées trop rapidement après le délai initial défini dans forgiveness_delay.
Correction : les sessions expirées restaient inutilement en mémoire.
Correction de problèmes potentiels lorsque le masque de déclenchement contenait certains caractères spécifiques.
Correction de problèmes d'affichage potentiels lorsque le chan, le nick ou le handle commençaient par un chiffre.
Correction : si la valeur du paramètre globally_exempted_flags (anciennement exempted_flags) était -|-, alors tout le monde était exempté au lieu de n'exempter personne.
Ajout : Les CTCP ACTION (/me) sont maintenant pris en considération, ce qui est utile si vous utilisez Anti-Frenzy comme antibadwords.
Ajout de nombreux champs de configuration dans les déclencheurs, modification de leur ordre et de leur syntaxe.
Reportez-vous à la documentation fournie pour en prendre connaissance.
Si vous importez vos réglages d'une version précédente du script, vous devrez les adapter à la nouvelle syntaxe.
Ajout de deux nouvelles contre-mesures permettant d'exécuter une ou plusieurs instructions en Tcl.
Ajout des paramètres de configuration default_forgiveness_delay, default_ignore_time et default_ban_duration afin de pouvoir définir une valeur par défaut pour certains paramètres de déclencheur.
Ajout du paramètre de configuration hostmask_type permettant de définir un type de masque de host à appliquer pour la création automatique d'un handle lors de l'application d'une contre-mesure de type f.
Ajout du paramètre de configuration ChanServ afin de vous permettre de personnaliser le nom du service de chan en fonction de votre serveur IRC.
Ajout du paramètre de configuration use_MDS permettant d'utiliser le script Messages Delivery Service (script du même auteur à télécharger séparément) pour envoyer des messages aux utilisateurs spécifiés dans l'option inform_hand.
Ajout d'une routine de vérification de la validité des paramètres des déclencheurs au chargement du script.
Notez que si une erreur est détectée, elle sera signalée en partyline et dans les logs de l'Eggdrop, et que le déclencheur concerné sera désactivé.
Modification : la contre-mesure f (flag) ne sera pas réappliquée si un utilisateur a déjà les flags +dr.
De plus, le script passera automatiquement à l'étape suivante si une étape de contre-mesure ne comporte que "f" (et optionnellement "do" et/ou "dh") et que l'utilisateur a déjà les flags.
Modification : une fois la dernière étape de contre-mesure atteinte, elle sera répétée à chaque nouveau déclenchement, et cela tant que le niveau d'escalade des contre-mesures n'aura pas décru.
Modification : vous pouvez désormais choisir de mettre un ban permanent en définissant sa durée à 0.
Modification : la durée affichée dans les messages de ban est désormais convertie en temps compréhensible par un humain, c'est à dire en jours, heures, minutes et secondes.
v2.01
Correction : un bug introduit dans la v2.0 empêchait Anti-Frenzy d'appliquer correctement les contre-mesures.
Correction : Les codes d'arrêt de style \017 gênaient la détection des déclencheurs lorsqu'ils étaient utilisés au milieu d'un mot.
Modification : en mode anti-badwords, les accents sont automatiquement filtrés afin d'éviter le contournement (comme porn / pørn / pörn / ...)