[TCL] Anti-Frenzy (version actuelle : 2.01)
#1
 
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 Very HappyEPROTECT $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



Changelog

Citation :v1.0
  • 1ère version
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 / ...)



Téléchargement

Anti-Frenzy  v2.01

Vous pouvez trouver une liste de mes autres releases ici


Laissez vos commentaires / suggestions / rapports de bugs ici...
 
Répondre Avertir
#2
Bonjour , désolé de vous déranger, mais j'ai chargé AntiFrenzy.tcl et j'ai une erreur qui apparait. J'ai regarder un peu sur les forums autour, pour voir d'où ça pourrait venir mais sans suite :/

Voici l'erreur en pl : Tcl error [AntiFrenzy::main_proc]: putdccraw is deprecated. Please use putdcc/putnow instead.

Pourriez vous me guider pour trouver d'où vient cette erreur. Merci par avance
Répondre Avertir
#3
La réponse est sur ce post
Avec un peu de chance, une nouvelle version d'Anty-Frenzy sortira bientôt Smile
Répondre
#4
ok Merci CrazyCat Smile
Répondre Avertir
#5

Nouvelle version disponible : v1.2

Changelog :
Citation :1.1
  • 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.
1.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.

Téléchargement : ici

Répondre Avertir
#6
Petit correctif :
tcl
variable botserv "NickBotServ"


devrait valoir "" par défaut, car il est dit "Si vous n'utilisez pas botserv, nul besoin de toucher à cette option." et si vous laissez tel quel vous aurez une erreur.
Répondre Avertir
#7
Nouvelle version disponible : v1.3

Changelog partiel :
Citation :1.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.

Téléchargement : Anti-Frenzy v1.3
Répondre Avertir
#8
 
Nouvelle version disponible : v2.0


Changelog partiel :
Citation :2.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.

Téléchargement : Anti-Frenzy v2.0
 
Répondre Avertir
#9
 
Nouvelle version disponible : v2.01


Changelog partiel :
Citation :2.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 / ...)

Téléchargement : Anti-Frenzy v2.01

Vous pouvez trouver une liste de mes autres releases ici
 
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté