Administrators chain Posted April 15, 2023 Administrators Report Share Posted April 15, 2023 Description Anti-Frenzy est une défense d'appoint pour votre chan. Il peut être utilisé comme : Un antiflood universel pouvant s'appliquer à des commandes n'en possédant pas. Un antiflood complémentaire pour des commandes en possédant déjà un. Supposons par exemple 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, ce qui 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. Un antibadwords performant en bénéficiant de la puissance des expressions régulières (regexp). D'autres utilisations auxquelles je n'ai pas pensé sont probablement envisageables, la souplesse et la puissance du système utilisé ouvre de nombreuses possibilités. Anti-Frenzy permet d'appliquer une riposte graduée en plusieurs étapes. Le nombre de ces étapes n'est pas limité et chaque étape peut combiner plusieurs actions (également appelées contre-mesures). Par exemple la première étape peut consister à afficher un 1er avertissement et à dévoicer l'utilisateur, la seconde peut afficher un 2ème avertissement puis dévoicer/dehalfoper/déoper l'utilisateur, la troisième peut le kicker, la quatrième le bannir, etc... Voici la liste des différentes actions possibles : afficher un 1er message d'avertissement afficher un 2ème message d'avertissement dévoicer un utilisateur déhalfoper un utilisateur déoper un utilisateur kicker un utilisateur kicker + bannir un utilisateur mettre des flags à un utilisateur pour empêcher qu'il puisse être halfopé ou opé par qui que ce soit à l'avenir + afficher un message pour l'en informer. exécuter une ou plusieurs commandes Tcl (1er jeu de commandes) exécuter une ou plusieurs commandes Tcl (2ème jeu de commandes) Déclencheurs : syntaxe, explications, exemple détaillé Pour configurer Anti-Frenzy, vous allez devoir définir une liste de déclencheurs. Si vous souhaitez par exemple mettre un antiflood sur la commande !truc, vous avez le choix entre 2 solutions : La première n'utilise pas les expressions régulières et nécessite de surveiller {!truc} et {!truc *} (pour reconnaître la commande avec ou sans arguments). La seconde utilise les expressions régulières, ce qui est plus efficace et concis, mais aussi moins abordable pour ceux d'entre vous qui ne savent pas ce que c'est. Ça donnera par exemple {\!truc\M}. Pour donner un autre exemple, nous voulons ajouter un antibadword sur quelques insultes courantes. Sans utiliser les expressions régulières, nous allons devoir ajouter {connard} {* connard} {connard *} et {* connard *} pour prévoir tous les cas de figure (mot seul, mot en début de ligne, ...) En utilisant les expressions régulières, nous ferons {\mcon+ard?s?\M}, ce qui reconnaîtra conard, connard, connards, connnnnnnnnnard, conar et encore tout un tas d'autres variantes orthographiques. La ligne suivante vous montre un autre exemple combinant plusieurs insultes sur une seule ligne pour plus d'efficacité : {\m(con+(ard?|as+e)s?|sal(aud|ope?)s?|pé?dé?s?)\M} Les déclencheurs sont ajoutés manuellement dans le script selon la syntaxe suivante : {{#chan} {mask} {num:sec} {regexp/noregexp} {f/b} {cm} {forgiveness_delay} {ignore_time} {ban_duration} {exempted_flags} {msg_mode:cible:warn1} {msg_mode:cible:warn2} {msg_mode:cible:flag_msg} {kick msg} {ban msg} {commande_1} {commande_2}} #chan peut valoir le nom du chan sur lequel vous voulez que le déclencheur 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. 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. regexp/noregexp spécifie si le masque utilise des expressions régulières (regexp) ou non. Peut valoir regexp ou noregexp. f/b indique si l'entrée doit être traitée comme antiflood (f) ou comme antibadword (b). La différence tient au fait qu'en mode antibadword, les CTCP ACTION (/me) sont également pris en considération, tandis qu'en mode antiflood ils ne le sont pas. cm = contre-mesures. Voici une liste des contre-mesures disponibles : w1 = affiche le 1er message d'avertissement (warn1) w2 = affiche le 1er message d'avertissement (warn2) dv = devoice dh = dehalfop do = deop k = kick kb = kick+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. Le message défini dans flag_msg sera affiché. c1 = exécute une ou plusieurs commandes définies dans commande_1 c2 = exécute une ou plusieurs commandes définies dans commande_2 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} forgiveness_delay = délai en secondes après lequel un niveau d'escalade des contre-mesures sera "pardonné". Admettons par exemple la liste de contre-mesures {w1 k kb} et un forgiveness_delay réglé à 60 secondes; si l'utilisateur vient d'être kické (c'est à dire à l'étape 2 des contre-mesures) et qu'il ne récidive pas dans les 60 prochaines secondes, le niveau redescendra à l'étape 1. S'il ne récidive toujours pas pendant les 60 secondes suivantes, il aura droit à l'oubli, sinon, on repassera à l'étape 2 et ainsi de suite. Si vous laissez ce champ vide, la valeur par défaut définie dans les paramètres du script sera utilisée. ignore_time = nombre de secondes pendant lesquelles l'utilisateur sera ignoré après le déclenchement d'une contre-mesure. Ca peut être utile dans le cas d'un antiflood afin d'empêcher que de nombreuses commandes consécutives soient exécutées par le bot, mais aussi pour éviter que plusieurs étapes de contre-mesures soient passées d'un seul coup si l'utilisateur floode le déclencheur. Il est déconseillé de définir une valeur trop élevée car l'Eggdrop ne "voit" plus un utilisateur qu'il ignore et ce dernier a ainsi toute latitude pour faire des bêtises impunément. Si vous laissez ce champ vide, la valeur par défaut définie dans les paramètres du script sera utilisée. ban_duration = durée du ban en secondes. Mettez 0 pour un ban permanent. Si vous laissez ce champ vide, la valeur par défaut définie dans les paramètres du script sera utilisée. exempted_flags = flags utilisateurs qui seront exemptés pour ce déclencheur. msg_mode:cible:warn1 et msg_mode:cible:warn2 sont les 2 messages d'avertissement correspondant aux contre-mesures w1 et w2. msg_mode peut valoir msg ou notice selon que vous souhaitez que le message soit envoyé normalement ou en notice. La cible du message doit être spécifiée et peut être un utilisateur ou un chan. Le message peut contenir ":" car seules les deux premières occurrences de ce symbole seront considérées comme un séparateur. Par exemple, pour afficher le message sur le chan on fera : {msg:$chan:attention, ceci est un message d'avertissement !} ou en privé à l'utilisateur : {msg:$nick:attention, te voilà averti} ou en notice à l'utilisateur : {notice:$nick:attention, te voilà averti} vous pouvez même envoyer une commande aux services : {ChanServ :DEPROTECT $chan $nick} msg_mode:cible:flag_msg contient le message qui sera affiché lors de l'application d'une contre-mesure de type f (flag). La syntaxe est similaire aux deux options {msg_mode:cible:warn1} et {msg_mode:cible:warn2} ci-dessus. kick msg est le message de kick qui sera utilisé pour la contre-mesure k. ban msg est le message de ban qui sera utilisé pour la contre-mesure kb. commande_1 et commande_2 sont deux champs que vous pouvez utiliser pour exécuter une ou plusieurs instructions en Tcl. Ils correspondent aux contre-mesures c1 et c2. Dans les messages (d'avertissement, de ban ou de kick) et dans les commandes, vous pouvez utiliser les variables suivantes : $nick = nom de l'utilisateur qui a activé le déclencheur $handle = handle de l'utilisateur $host = host de l'utilisateur $chan = chan sur lequel le déclencheur a été activé Exemple détaillé : {{global} {!*} {2:3} {noregexp} {f} {w1do k kb} {60} {2} {600} {-|-} {msg:$chan:$nick > du calme avec les commandes} {} {} {tiens, prends ça !} {et ça !} {::set_access "Anti-Frenzy" $handle $chan $host -1} {}} Explication de l'exemple : La surveillance s'applique sur TOUS les chans sur lesquels Anti-Frenzy est actif (global). Le masque de détection indique de surveiller toutes les commandes commençant par "!". On autorise au maximum 2 commandes en 3 secondes. Le masque de détection doit être traité comme du texte brut (pouvant contenir des jokers * ou ?) et non pas comme une expression régulière (noregexp). Ce déclencheur aura une fonction antiflood (f). 3 niveaux de contre-mesures sont ici prévus : la première transgression déclenchera un avertissement + déop de la personne (w1do), la deuxième déclenchera un kick (k) et la troisième un kickban (kb). Le niveau d'escalade des contre-mesures décroitra d'une étape après 60 secondes. L'utilisateur sera ignoré pendant 2 secondes par l'Eggdrop s'il active le déclencheur. La durée d'un ban est fixée à 600 secondes. Aucun flag utilisateur n'est exempté donc ce déclencheur est actif pour tout le monde. En guise de 1er avertissement, le message suivant sera affiché sur le chan : "$nick > du calme avec les commandes" (où $nick sera remplacé par le nick de l'utilisateur concerné). Le champ suivant est vide car nous ne l'utilisons pas, mais il est normalement destiné à accueillir un second message d'avertissement. Le champ suivant est lui aussi vide, car il est destiné à accueillir un message qui s'afficherait en cas d'application de la contre-mesure "f". Le champ suivant contient le message de kick. Le champ suivant contient le message de ban. L'avant-dernier champ contient une commande; dans cet exemple, on utilise le script Progressive Access System pour enlever 1 point d'accès à l'utilisateur (script du même auteur, à télécharger séparément). Le dernier champ est vide car nous ne l'utilisons pas, mais il est normalement destiné à accueillir un 2ème jeu de commandes Tcl. Expressions régulières : quelques bases pour commencer ( ) est utilisé pour délimiter une pattern . correspond à n'importe quel caractère + correspond à "une fois ou plus" le caractère ou la pattern qui précède * correspond à "zéro fois ou plus" le caractère / pattern qui précède ? correspond à "zéro fois ou une" le caractère / pattern qui précède | séparateur signifiant "ou" \m début de mot \M fin de mot \s correspond à un espace ou une tabulation \ est aussi utilisé pour neutraliser certains caractères spéciaux comme le "." ou le "!", sans quoi ils auraient une signification spéciale dans le contexte de l'expression régulière. ^ représente début d'une ligne de texte $ représente la fin d'une ligne de texte Activation / désactivation du script Pour activer Anti-Frenzy sur un chan en particulier, vous devez taper la ligne suivante en partyline de l'Eggdrop : .chanset #nomduchan +AntiFrenzy et ceci pour le désactiver : .chanset #nomduchan -AntiFrenzy Post support (remarques, suggestions, rapports de bugs) : http://forum.eggdrop.fr/showthread.php?tid=412 Vous pouvez trouver une liste de mes autres releases ici Changelog Version 2.02 par MenzAgitat (22/04/2020) 303 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 2.01 par MenzAgitat (08/06/2015) 38 téléchargements 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 / ...) Version 2.0 par MenzAgitat (05/12/2014) 0 téléchargements 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. Version 1.3 par MenzAgitat (10/08/2012) 0 téléchargements 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. Version 1.2 par MenzAgitat (13/07/2011) 0 téléchargements meilleure gestion des caractères spéciaux dans les pseudos. lorsque le script se désinstalle, il arrête désormais proprement ses timers/utimers en cours. 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. 20200422115016-Anti-Frenzy_v2_02.zip Quote Link to comment Share on other sites More sharing options...