begin process at 2010 02 09 18:29:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

AddOns

 > SNIPPET: INTERCONNECTION SYSTEM

SNIPPET: INTERCONNECTION SYSTEM


 Information sur la source

Note :
7,17 / 10 - par 12 personnes
7,17 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :AddOns Niveau :Initié Date de création :15/05/2004 Date de mise à jour :16/05/2004 00:36:54 Vu :2 370

Auteur : Seregon

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Ce petit snippet va vous permettre d'établir une connection entre mIRC et le server IRC.
Ce code n'est qu'un début de possibilité. Vous pouvez ajouter des commandes dans le on sockread pour ajouter des fonctions de filtre.
Les fakes events envoient a votre mIRC des messages en se faisant passre pour le server. L'intéret est de tester des events sans affecter les autres users de l'IRC
Vous trouverez également quelques systèmes comme un monitoring de ping, un ctcp version/ping blocker ou un log des messages entrant et sortant de mIRC (commande /debug)
La différence entre ces systèmes et ce que l'on trouve d'habitude est que cette fois ci mIRC en tant que client IRC ne verra rien passer.
Pour ouvrir une connection utilisant l'interconnection: /server -q server port
Le reste des commandes est décrit dans le remote file.
Je suis ouvert à toute proposition de nouvelle fonction a ajouter à ce système.

Source

  • ; InterConnection system v1.0 by Seregon®
  • ;
  • ; Ce système va vous permettre d'établir un filtre sur vos connections et ainsi de ne pas faire parvenir certains messages à mIRC
  • ; Pour le moment seules quelques commandes simples:
  • ; - ctcp ping/version block
  • ; - Monitoring de ping (sans passer par mIRC)
  • ; - Fakes events
  • ; Ce code n'est pas un addon en lui même, il s'agit d'un point de départ (snippet) servant à ouvrir sur plusieurs possibilités de réalisations.
  • ; Vous pouvez le modifier: n'hésitez pas à me faire part de modification si celles-ci valent la peine d'etre ajoutées. Mais ne me donnez pas vos codes lol je préfère
  • ; réaliser les systèmes moi même :).
  • ;
  • ; Le multi server est géré, cependant le /server -mq ... bug toujours, j'essayerai de le corriger dans la prochaine version du script.
  • ;
  • ; Description des commandes:
  • ;
  • ; /server -q <server> [port] : Se connecte au server sur le port spécifié. Si vous spécifiez d'autres flags, ils ne seront pas pris en compte. (J'ai l'intention d'ajouter
  • ; le flag m prochainement
  • ;
  • ; /s.filter ctcp <type> <params> : Gère les reply sur les ctcp ping comme indiqué ci-dessous.
  • ; /s.filter ctcp version <on|off|change> [text] : "on" entraine un bloquage total des reply sur le ctcp version
  • ; "off" laisse mIRC gérer les replies
  • ; "change" Envoie un message de version personalisé
  • ; Si "text" est spécifié, le message personalisé envoyé (si les ctcp version sont en mode "change") sera remplacé par celui-ci
  • ; /s.filter ctcp ping <on|off|disturb> : "on" active le bloquage des replies sur le ctcp ping
  • ; "off" laisse mIRC gérer les ping replies
  • ; "disturb" envoie une reply incohérente :p
  • ;
  • ; /s.filter pingmon <cid> <on|off> [time] : Ceci active ou désactive un système de monitoring de ping (la nouveauté ici est que mIRC en tant que client IRC ne verra rien!
  • ; <cid> : représente le cid sur lequel vous souhaitez commencer le monitoring
  • ; <on|off> : Active/désactive le monitoring sur le cid spécifié.
  • ; [time] : Obligatoire si "on" est spécifié, détermine le temps de refresh de votre monitoring (en secondes)
  • ; NB: Le ping monitoring déclenchera un signal ping.mon où $1 retournera la valeur (en milisecondes) du ping
  • ;
  • ; /s.filter fake <cid> <event> <params> : Ceci déclenche un fake event sous mIRC selon les paramètres spécifiés par l'user.
  • ; <cid> Le cid sur lequel le fake event doit avoir lieu
  • ; Ci-dessous la liste des events disponibles et de leurs paramètres:
  • ;
  • ; Event: Paramètres
  • ; Join: <nick|address> <channel>
  • ; Part: <nick|address> <channel>
  • ; Quit: <nick|address>
  • ; Privmsg: <nick|address> <target> (peut etre un channel, un channel prefixé (+#chan,@chan...), $me (private message) ou * (general message)) <text>
  • ; Action: <nick|address> <target> (peut etre un channel, prefixé ou non (voir l'event privmsg) ou $me) <text>
  • ; Notice: <nick|address> <target> (même format que pour l'event privmsg) <text>
  • ; Kick: <nick|address> <chan> <nick> <raison> (le second nick est le nick kické et le 1er est l'auteur du kick)
  • ; Rawmode: <nick|address> <channel> <modes> [nicks] (gère les mode channels aussi bien que les modes users)
  • ; Topic: <nick|address> <channel> <text>
  • ; ServerNotice: <text>
  • ;
  • ; /s.filter log <on|off> <@window> : Log les messages reçus du server dans une @window (pareil que la commande /debug)
  • alias server {
  • if ($left($1,1) == -) && (q isin $1) && ($2) {
  • if ($scid($cid).status == connected) {
  • hadd filter $+(reco-,$cid) $2 $iif($3,$3,6667)
  • scid $cid disconnect
  • halt
  • }
  • hdel -w filter $+(buffer-,$cid,-*)
  • socklisten $+(FirebirD-,$activecid)
  • sockopen $+(AnduriL-,$activecid) $2 $iif($3,$3,6667)
  • }
  • else server $1-
  • }
  • on 1:start: { hmake filter 50 | if ($exists($scriptdirfilter.hash) == $true) hload -o filter $+(",$scriptdirfilter.hash,") }
  • on 1:exit: hsave -o filter $+(",$scriptdirfilter.hash,")
  • on 1:sockopen:AnduriL-*: { server 127.0.0.1 $sock($+(FirebirD-,$gettok($sockname,-1,45))).bindport }
  • on 1:socklisten:FirebirD-*: {
  • sockaccept $+(NarsiL-,$gettok($sockname,-1,45))
  • sockclose $+(FirebirD-,$gettok($sockname,-1,45))
  • var %i = 1, %n = $hfind(filter,$+(buffer-,$gettok($sockname,-1,45),-*),0,w)
  • while (%i <= %n) {
  • sockwrite -n $+(NarsiL-,$gettok($sockname,-1,45)) $hget(filter,$hfind(filter,$+(buffer-,$gettok($sockname,-1,45),-*),%i,w))
  • inc %i
  • }
  • hdel -w filter $+(buffer-,$gettok($sockname,-1,45),-*)
  • }
  • on 1:sockread:NarsiL-*: {
  • sockread %NarsiL
  • if ($hget(filter,debug)) $hget(filter,debug) $+(=NarsiL,$gettok($sockname,-1,45),=) %NarsiL
  • sockwrite -n $+(AnduriL-,$cid) %NarsiL
  • }
  • on 1:sockread:AnduriL-*: {
  • sockread %AnduriL
  • tokenize 32 %AnduriL
  • if ($sock($+(NarsiL-,$gettok($sockname,-1,45)))) {
  • if ($hget(filter,debug)) $hget(filter,debug) $+(=AnduriL,$gettok($sockname,-1,45),=) $1-
  • if ($gettok($1-,2,58) == version) {
  • if ($hget(filter,version) == change) sockwrite -n $sockname NOTICE $gettok($gettok($1-,1,58),1,33) $+(:,,VERSION,$chr(32),$hget(filter,versiontxt),)
  • elseif ($hget(filter,version) == block) halt
  • .signal filter version $gettok($gettok($1-,1,58),1,33) $hget(filter,version)
  • }
  • elseif ($regex($gettok($1-,2,58),^(ping) [[:digit:]]*) == 1) {
  • if ($hget(filter,ping) == disturb) sockwrite -n $sockname NOTICE $gettok($gettok($1-,1,58),1,33) :PING just disturbing your ping :p
  • elseif ($hget(filter,ping) == block) halt
  • .signal filter ping $gettok($gettok($1-,1,58),1,33) $hget(filter,ping)
  • }
  • elseif ($2 == PONG) && ($4 == :monitoring) { .signal sfilter.ping $calc($ticks - $hget(filter,$+(reply-,$gettok($sockname,-1,45)))) | hdel filter $+(reply-,$gettok($sockname,-1,45)) }
  • else sockwrite -n $+(NarsiL-,$gettok($sockname,-1,45)) $1-
  • }
  • elseif ($sock($+(FirebirD-,$gettok($sockname,-1,45)))) hadd filter $+(buffer-,$gettok($sockname,-1,45),-,$calc($hfind(filter,$+(buffer-,$gettok($sockname,-1,45),-*),0,w) + 1)) $1-
  • }
  • on 1:sockclose:AnduriL-*: {
  • if ($scid($cid).server) scid $cid disconnect
  • sockclose $+(NarsiL-,$gettok($sockname,-1,45))
  • if ($hget(filter,$+(reco-,$gettok($sockname,-1,45)))) {
  • socklist
  • scid $cid server -q $hget(filter,$+(reco-,$gettok($sockname,-1,45)))
  • hdel filter $+(reco-,$gettok($sockname,-1,45))
  • }
  • }
  • on 1:sockclose:NarsiL-*: {
  • if ($scid($cid).server) scid $cid disconnect
  • sockclose $+(AnduriL-,$gettok($sockname,-1,45))
  • if ($hget(filter,$+(reco-,$gettok($sockname,-1,45)))) {
  • socklist
  • scid $cid server -q $hget(filter,$+(reco-,$gettok($sockname,-1,45)))
  • hdel filter $+(reco-,$gettok($sockname,-1,45))
  • }
  • }
  • alias s.filter {
  • if ($isid == $false) {
  • if (!$1) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • elseif ($1 == ctcp) && ((!$2) || (!$3)) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • elseif ($1 == ctcp) && ($2 == version) {
  • if ($3 == change) && (!$4) && (!$hget(filter,versiontxt)) { echo $color(info) -a *** /s.filter: no version message specified | halt }
  • elseif ($3 == change) && (!$4) && ($hget(filter,versiontxt)) hadd filter verison change
  • elseif ($3 == change) && ($4) { hadd filter versiontxt $4- | hadd filter version change }
  • elseif ($3 == off) hadd filter version allow
  • elseif ($3 == on) hadd filter version block
  • }
  • elseif ($1 == ctcp) && ($2 == ping) {
  • if (!$3) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • elseif ($3 == on) hadd filter ping block
  • elseif ($3 == off) hadd filter ping allow
  • elseif ($3 == disturb) hadd filter ping disturb
  • }
  • elseif ($1 == log) {
  • if (!$2) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • if ($2 == on) && (!$3) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • elseif ($2 == off) { hdel filter debug | halt }
  • elseif ($2 == on) && (($left($3,1) != @) || ($len($3) == 1)) { echo $color(info) -a *** /s.filter: invalid parameters | halt }
  • elseif ($2 == on) && ($left($3,1) == @) {
  • if (!$window($3)) window -ae $3
  • hadd filter debug aline -ph $3
  • halt
  • }
  • }
  • elseif ($1 == pingmon) {
  • if (!$2) || (!$3) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • elseif ($3 == off) && (!$timer($+(pingmon-,$2))) { echo $color(info) -a *** /s.filter: no such monitoring | halt }
  • elseif ($3 == off) && ($timer($+(pingmon-,$2))) { $+(.timerpingmon-,$2) off | if ($hget(filter,$+(reply-,$2))) { hdel filter $+(reply-,$2) } | halt }
  • elseif ($3 == on) && ($timer($+(pingmon-,$2))) { echo $color(info) -a *** /s.filter: already monitoring $2 | halt }
  • elseif ($3 == on) && ($int($2) != $2) || ($3 <= 0) { echo $color(info) -a *** /s.filter: invalid parameters | halt }
  • elseif ($3 == on) && (!$scid($2)) { echo $color(info) -a *** /s.filter: no such cid | halt }
  • elseif ($3 == on) { $+(.timerpingmon-,$2) 0 $3 ping.mon $2 }
  • }
  • elseif ($1 == fake) {
  • if ($2 !isnum) { echo $color(info) -a *** /s.filter: invalid parameters | halt }
  • elseif (!$sock($+(Narsil-,$2))) { echo $color(info) -a *** /s.filter: invalid cid | halt }
  • elseif ($3 == join) || ($3 == part) {
  • if (!$5) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • elseif ($5 !ischan) { echo $color(info) -a *** /s.filter: invalid parameters | halt }
  • sockwrite -n $+(NarsiL-,$2) $+(:,$4) $upper($3) $5
  • halt
  • }
  • elseif ($3 == quit) {
  • if (!$4) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • sockwrite -n $+(NarsiL-,$2) $+(:,$4) $upper($3)
  • halt
  • }
  • elseif ($3 == privmsg) || ($3 == action) {
  • if (!$6) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • sockwrite -n $+(NarsiL-,$2) $+(:,$4) PRIVMSG $5 $+(:,$iif($3 == action,ACTION $6- $+ ,$6-))
  • halt
  • }
  • elseif ($3 == notice) {
  • if (!$6) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • sockwrite -n $+(NarsiL-,$2) $+(:,$4) NOTICE $5 $+(:,$6-)
  • halt
  • }
  • elseif ($3 == servernotice) {
  • if (!$4) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • sockwrite -n $+(NarsiL-,$2) $+(:,$scid($cid).server) NOTICE $4-
  • halt
  • }
  • elseif ($3 == kick) {
  • if (!$5) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • sockwrite -n $+(NarsiL-,$2) $+(:,$4) KICK $5-6 $+(:,$7-)
  • halt
  • }
  • elseif ($3 == rawmode) {
  • if (!$6) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • sockwrite -n $+(NarsiL-,$2) $+(:,$4) MODE $5-
  • halt
  • }
  • elseif ($3 == topic) {
  • if (!$5) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
  • sockwrite -n $+(NarsiL-,$2) $+(:,$4) TOPIC $5-
  • halt
  • }
  • }
  • }
  • }
  • alias ping.mon {
  • if (!$hget(filter,$+(reply-,$1))) {
  • if ($scid($1).status == connected) { hadd filter $+(reply-,$1) $ticks | sockwrite -n $+(AnduriL-,$1) ping monitoring }
  • else .signal sfilter.ping N/A
  • }
  • }
; InterConnection system v1.0 by Seregon®
;
; Ce système va vous permettre d'établir un filtre sur vos connections et ainsi de ne pas faire parvenir certains messages à mIRC
; Pour le moment seules quelques commandes simples: 
;                                                                                       - ctcp ping/version block
;                                                                                       - Monitoring de ping (sans passer par mIRC)
;                                                                                       - Fakes events
; Ce code n'est pas un addon en lui même, il s'agit d'un point de départ (snippet) servant à ouvrir sur plusieurs possibilités de réalisations.
; Vous pouvez le modifier: n'hésitez pas à me faire part de modification si celles-ci valent la peine d'etre ajoutées. Mais ne me donnez pas vos codes lol je préfère
; réaliser les systèmes moi même :).
;
; Le multi server est géré, cependant le /server -mq ... bug toujours, j'essayerai de le corriger dans la prochaine version du script.
;
; Description des commandes:
;
; /server -q <server> [port] : Se connecte au server sur le port spécifié. Si vous spécifiez d'autres flags, ils ne seront pas pris en compte. (J'ai l'intention d'ajouter
;                                               le flag m prochainement
;
; /s.filter ctcp <type> <params> : Gère les reply sur les ctcp ping comme indiqué ci-dessous.
;                                                       /s.filter ctcp version <on|off|change> [text] : "on" entraine un bloquage total des reply sur le ctcp version
;                                                                                                                                  "off" laisse mIRC gérer les replies
;                                                                                                                                  "change" Envoie un message de version personalisé
;                                                       Si "text" est spécifié, le message personalisé envoyé (si les ctcp version sont en mode "change") sera remplacé par celui-ci
;                                                       /s.filter ctcp ping <on|off|disturb> : "on" active le bloquage des replies sur le ctcp ping
;                                                                                                                  "off" laisse mIRC gérer les ping replies
;                                                                                                                  "disturb" envoie une reply incohérente :p
;
; /s.filter pingmon <cid> <on|off> [time] : Ceci active ou désactive un système de monitoring de ping (la nouveauté ici est que mIRC en tant que client IRC ne verra rien!
;                                                                   <cid> : représente le cid sur lequel vous souhaitez commencer le monitoring
;                                                                   <on|off> : Active/désactive le monitoring sur le cid spécifié.
;                                                                   [time] : Obligatoire si "on" est spécifié, détermine le temps de refresh de votre monitoring (en secondes)
; NB: Le ping monitoring déclenchera un signal ping.mon où $1 retournera la valeur (en milisecondes) du ping
;
; /s.filter fake <cid> <event> <params> : Ceci déclenche un fake event sous mIRC selon les paramètres spécifiés par l'user.
;                                                                  <cid> Le cid sur lequel le fake event doit avoir lieu
;                                                                  Ci-dessous la liste des events disponibles et de leurs paramètres:
;
;                                                                  Event: Paramètres
;                                                                  Join: <nick|address> <channel>
;                                                                  Part: <nick|address> <channel>
;                                                                  Quit: <nick|address>
;                                                                  Privmsg: <nick|address> <target> (peut etre un channel, un channel prefixé (+#chan,@chan...), $me (private message) ou * (general message)) <text>
;                                                                  Action: <nick|address> <target> (peut etre un channel, prefixé ou non (voir l'event privmsg) ou $me) <text>
;                                                                  Notice: <nick|address> <target> (même format que pour l'event privmsg) <text>
;                                                                  Kick: <nick|address> <chan> <nick> <raison> (le second nick est le nick kické et le 1er est l'auteur du kick)
;                                                                  Rawmode: <nick|address> <channel> <modes> [nicks] (gère les mode channels aussi bien que les modes users)
;                                                                  Topic: <nick|address> <channel> <text>
;                                                                  ServerNotice: <text>
;
; /s.filter log <on|off> <@window> : Log les messages reçus du server dans une @window (pareil que la commande /debug)

alias server {
  if ($left($1,1) == -) && (q isin $1) && ($2) {
    if ($scid($cid).status == connected) {
      hadd filter $+(reco-,$cid) $2 $iif($3,$3,6667)
      scid $cid disconnect
      halt
    }
    hdel -w filter $+(buffer-,$cid,-*)
    socklisten $+(FirebirD-,$activecid)
    sockopen $+(AnduriL-,$activecid) $2 $iif($3,$3,6667)
  }
  else server $1-
}
on 1:start: { hmake filter 50 | if ($exists($scriptdirfilter.hash) == $true) hload -o filter $+(",$scriptdirfilter.hash,") }
on 1:exit: hsave -o filter $+(",$scriptdirfilter.hash,")
on 1:sockopen:AnduriL-*: { server 127.0.0.1 $sock($+(FirebirD-,$gettok($sockname,-1,45))).bindport }
on 1:socklisten:FirebirD-*: { 
  sockaccept $+(NarsiL-,$gettok($sockname,-1,45)) 
  sockclose $+(FirebirD-,$gettok($sockname,-1,45)) 
  var %i = 1, %n = $hfind(filter,$+(buffer-,$gettok($sockname,-1,45),-*),0,w)
  while (%i <= %n) {
    sockwrite -n $+(NarsiL-,$gettok($sockname,-1,45)) $hget(filter,$hfind(filter,$+(buffer-,$gettok($sockname,-1,45),-*),%i,w))
    inc %i
  }
  hdel -w filter $+(buffer-,$gettok($sockname,-1,45),-*)
}
on 1:sockread:NarsiL-*: {
  sockread %NarsiL
  if ($hget(filter,debug)) $hget(filter,debug) $+(=NarsiL,$gettok($sockname,-1,45),=) %NarsiL
  sockwrite -n $+(AnduriL-,$cid) %NarsiL
}
on 1:sockread:AnduriL-*: {
  sockread %AnduriL
  tokenize 32 %AnduriL
  if ($sock($+(NarsiL-,$gettok($sockname,-1,45)))) {
    if ($hget(filter,debug)) $hget(filter,debug) $+(=AnduriL,$gettok($sockname,-1,45),=) $1-
    if ($gettok($1-,2,58) == version) {
      if ($hget(filter,version) == change) sockwrite -n $sockname NOTICE $gettok($gettok($1-,1,58),1,33) $+(:,,VERSION,$chr(32),$hget(filter,versiontxt),)
      elseif ($hget(filter,version) == block) halt
      .signal filter version $gettok($gettok($1-,1,58),1,33) $hget(filter,version)
    }
    elseif ($regex($gettok($1-,2,58),^(ping) [[:digit:]]*) == 1) {
      if ($hget(filter,ping) == disturb) sockwrite -n $sockname NOTICE $gettok($gettok($1-,1,58),1,33) :PING just disturbing your ping :p
      elseif ($hget(filter,ping) == block) halt
      .signal filter ping $gettok($gettok($1-,1,58),1,33) $hget(filter,ping)
    }
    elseif ($2 == PONG) && ($4 == :monitoring) { .signal sfilter.ping $calc($ticks - $hget(filter,$+(reply-,$gettok($sockname,-1,45)))) | hdel filter $+(reply-,$gettok($sockname,-1,45)) }
    else sockwrite -n $+(NarsiL-,$gettok($sockname,-1,45)) $1-
  }
  elseif ($sock($+(FirebirD-,$gettok($sockname,-1,45)))) hadd filter $+(buffer-,$gettok($sockname,-1,45),-,$calc($hfind(filter,$+(buffer-,$gettok($sockname,-1,45),-*),0,w) + 1)) $1-
}
on 1:sockclose:AnduriL-*: { 
  if ($scid($cid).server) scid $cid disconnect 
  sockclose $+(NarsiL-,$gettok($sockname,-1,45))
  if ($hget(filter,$+(reco-,$gettok($sockname,-1,45)))) {
    socklist
    scid $cid server -q $hget(filter,$+(reco-,$gettok($sockname,-1,45)))
    hdel filter $+(reco-,$gettok($sockname,-1,45))
  }
}
on 1:sockclose:NarsiL-*: { 
  if ($scid($cid).server) scid $cid disconnect 
  sockclose $+(AnduriL-,$gettok($sockname,-1,45)) 
  if ($hget(filter,$+(reco-,$gettok($sockname,-1,45)))) {
    socklist
    scid $cid server -q $hget(filter,$+(reco-,$gettok($sockname,-1,45)))
    hdel filter $+(reco-,$gettok($sockname,-1,45))
  }
}
alias s.filter {
  if ($isid == $false) {
    if (!$1) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
    elseif ($1 == ctcp) && ((!$2) || (!$3)) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
    elseif ($1 == ctcp) && ($2 == version) {
      if ($3 == change) && (!$4) && (!$hget(filter,versiontxt)) { echo $color(info) -a *** /s.filter: no version message specified | halt }
      elseif ($3 == change) && (!$4) && ($hget(filter,versiontxt)) hadd filter verison change
      elseif ($3 == change) && ($4) { hadd filter versiontxt $4- | hadd filter version change }
      elseif ($3 == off) hadd filter version allow
      elseif ($3 == on) hadd filter version block
    }
    elseif ($1 == ctcp) && ($2 == ping) {
      if (!$3) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
      elseif ($3 == on) hadd filter ping block
      elseif ($3 == off) hadd filter ping allow
      elseif ($3 == disturb) hadd filter ping disturb
    }
    elseif ($1 == log) {
      if (!$2) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
      if ($2 == on) && (!$3) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
      elseif ($2 == off) { hdel filter debug | halt }
      elseif ($2 == on) && (($left($3,1) != @) || ($len($3) == 1)) { echo $color(info) -a *** /s.filter: invalid parameters | halt }
      elseif ($2 == on) && ($left($3,1) == @) { 
        if (!$window($3)) window -ae $3
        hadd filter debug aline -ph $3 
        halt
      }
    }
    elseif ($1 == pingmon) {
      if (!$2) || (!$3) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
      elseif ($3 == off) && (!$timer($+(pingmon-,$2))) { echo $color(info) -a *** /s.filter: no such monitoring | halt }
      elseif ($3 == off) && ($timer($+(pingmon-,$2))) { $+(.timerpingmon-,$2) off | if ($hget(filter,$+(reply-,$2))) { hdel filter $+(reply-,$2) } | halt }
      elseif ($3 == on) && ($timer($+(pingmon-,$2))) { echo $color(info) -a *** /s.filter: already monitoring $2 | halt }
      elseif ($3 == on) && ($int($2) != $2) || ($3 <= 0) { echo $color(info) -a *** /s.filter: invalid parameters | halt }
      elseif ($3 == on) && (!$scid($2)) { echo $color(info) -a *** /s.filter: no such cid | halt }
      elseif ($3 == on) { $+(.timerpingmon-,$2) 0 $3 ping.mon $2 }
    }
    elseif ($1 == fake) {
      if ($2 !isnum) { echo $color(info) -a *** /s.filter: invalid parameters | halt }
      elseif (!$sock($+(Narsil-,$2))) { echo $color(info) -a *** /s.filter: invalid cid | halt }

      elseif ($3 == join) || ($3 == part) {
        if (!$5) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
        elseif ($5 !ischan) { echo $color(info) -a *** /s.filter: invalid parameters | halt }
        sockwrite -n $+(NarsiL-,$2) $+(:,$4) $upper($3) $5 
        halt
      }
      elseif ($3 == quit) {
        if (!$4) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
        sockwrite -n $+(NarsiL-,$2) $+(:,$4) $upper($3) 
        halt
      }
      elseif ($3 == privmsg) || ($3 == action) {
        if (!$6) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
        sockwrite -n $+(NarsiL-,$2) $+(:,$4) PRIVMSG $5 $+(:,$iif($3 == action,ACTION $6- $+ ,$6-))
        halt
      }
      elseif ($3 == notice) {
        if (!$6) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
        sockwrite -n $+(NarsiL-,$2) $+(:,$4) NOTICE $5 $+(:,$6-)
        halt    
      }
      elseif ($3 == servernotice) {
        if (!$4) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
        sockwrite -n $+(NarsiL-,$2) $+(:,$scid($cid).server) NOTICE $4-
        halt
      }
      elseif ($3 == kick) {
        if (!$5) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
        sockwrite -n $+(NarsiL-,$2) $+(:,$4) KICK $5-6 $+(:,$7-)
        halt
      }
      elseif ($3 == rawmode) {
        if (!$6) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
        sockwrite -n $+(NarsiL-,$2) $+(:,$4) MODE $5-
        halt
      }
      elseif ($3 == topic) {
        if (!$5) { echo $color(info) -a *** /s.filter: insufficient parameters | halt }
        sockwrite -n $+(NarsiL-,$2) $+(:,$4) TOPIC $5-
        halt
      }
    }
  }
}
alias ping.mon {
  if (!$hget(filter,$+(reply-,$1))) { 
    if ($scid($1).status == connected) { hadd filter $+(reply-,$1) $ticks | sockwrite -n $+(AnduriL-,$1) ping monitoring }
    else .signal sfilter.ping N/A
  }
}

 Conclusion

Le /server -mq n'est pas encore fonctionnel, j'essayerai de corriger le probleme le plus vite possible.
Je rappelle que ce code n'est qu'un snippet et n'est donc pas un système fini: Il ouvre à la création d'addons sur cette base.
Si vous voulez deux trois explications supplémentaires sur le fonctionnement, n'hesitez pas à me pmsg ou à laisser vos questions en commentaire.


 Sources du même auteur

SNIPPET: /DRAWMIX
Source avec Zip METEOCONSULT
Source avec Zip BATNAV: JEU DE BATAILLE NAVALE POUR MIRC
SNIPPET - /DRAWTRANSP
Source avec Zip Source avec une capture DESSINEZ C'EST GAGNÉ V1.0B

 Sources de la même categorie

BLACKLIST PSEUDOS/MASKS par usurpateur
Source avec une capture [XCHAT] ANTI KICK / AWAY C++ par GeroXXXX
JEU DU CODE par alanpersonproject
SERVEUR FTP par hisoka2501
BANNIR LES AGES, LES HOMMES, LES FEMMES ET PSEUDO AVEC CHIFF... par cougar_du_havre

Commentaires et avis

Commentaire de SornDrixer le 16/05/2004 09:26:46 administrateur CS

Très complet, bravo
J'avais moi aussi utilisé ce principe, pour faire un addon qui modifiait les ctcpreply de mIRC.

Commentaire de Seregon le 16/05/2004 14:19:21

Je cherche d'autres truc à ajouter mais j'ai vraiment pas d'idées.
Jvai ptet faire un système complet qui exploite ce snippet en dialog et tout histoire de montrer ce qu'on peut en faire.

Commentaire de Kerrigan le 16/05/2004 18:53:56

ben wala avec mon 10 tu as une note  qui reflete réellement le niveau de ta source.

alors ce que je tiens a dire:
-pourrait on avoir un fichier d'aide plus complet avec des exemples très concret?! parje me sens un peu perdu dans tout ça.

-ne crache pas sur un événtuel developpement a plusieur c'est comme ça qu'on progresse.

mais bon tu connais Kerrigan tout n'est qu'une question de point de vue.

Ceci dit sans Sorn_Drixer Kolibot Chang-Fu Dragoon1 et j'en passe je serais pas ou j'en suis ( merci a eux )

Commentaire de Seregon le 16/05/2004 20:23:59

Je vais développer un code qui mette en pratique tout ca "expliqué et commenté" par contre (en raison de bac approchant) je sais pas trop quand celui-ci sera pret lol
Au pire je ferai un truc rapide en popup+petit dialog avant de développer un truc plus complet

Commentaire de Seregon le 16/05/2004 22:34:31

Pi tsais Kerrigan j'ai l'habitude des gars qui me mettent d sales notes sans s'annoncer. jpense que certains n'aiment pas mes critiques -_-

Commentaire de Seregon le 17/05/2004 20:50:27

Lol j'aime les gens qui osent pas se nommer en mettant des sales notes. Ca montre un esprit hyper evolué -_-
Si o moin zavaient un peu de courage i se désignerianet mais jpense pas que ca soit leur cas.
Ca deocurage vrmt de poster sur ce site...

Commentaire de Kerrigan le 18/05/2004 12:42:59

C'est qui le boufon qui t'as mis 5/10 ? C'est un truc de fou t'as source ne merite pas ça. Il faut absolument changé le système de notation ça devient du n'importe quoi.

Dernierement on m'as mis une source qui était a 8 a 4/10 je sais pas a fait ça , le pire c'est que tous mes commentaire étaient positifs ... Quelqu'un va trouver une solution.

Commentaire de Kerrigan le 18/05/2004 12:44:43

Je vais en toucher un mot aux admins.

Commentaire de Huitre le 29/05/2004 09:55:12

Un petit 10 pour remonter la note, car à part un bouffon qui t' en ve je ne vois pas d' ou pe venir le 5/10 car ton snippet vaux bien plus...

Faudrait pouvoir noter que si on post un commentaire, ca résouderais des problemes.

Commentaire de Froh le 04/06/2004 19:29:07

bon bah j'ai mis 10, mais bon ca l'a pas trop remonté =)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales