begin process at 2013 05 23 17:09:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > PROGRAMME POUR N'ACCEPTER QUE LES IPS PROVENANT DE TEL PAYS

PROGRAMME POUR N'ACCEPTER QUE LES IPS PROVENANT DE TEL PAYS


 Information sur la source

Note :
Aucune note
Catégorie :Divers Niveau :Expert Date de création :12/04/2005 Date de mise à jour :12/04/2005 23:38:09 Vu :3 949

Auteur : RasZa

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

 Description

PROGRAMME POUR N'ACCEPTER QUE LES IPS PROVENANT DE TEL PAYS
Popups & dialog

Inscrivez le(s) pays que vous voulez accepter
- Attendez...

Source

  • menu channel {
  • -
  • PAYS ACCEPTER
  • .OPEN_DIALOG:{ ip_location }
  • .$iif(%_bio. [ $+ [ # ] ],OFF,ON):{
  • set %_bio. [ $+ [ # ] ] $iif(%_bio. [ $+ [ # ] ],0,1)
  • }
  • .addpays:{
  • var %bi $$?="Pays"
  • if ($findtok(%_bi. [ $+ [ # ] ],%bi,0,44)) {
  • echo -a Ce Pays Fait Déjà Parti de la list de #
  • }
  • else { set %_bi. [ $+ [ # ] ] $addtok(%_bi. [ $+ [ # ] ],%bi,44) | echo -a Ajout du %bi à la list de # }
  • }
  • .delpays:{
  • var %bi2 $$?="Pays"
  • set %_bi. [ $+ [ # ] ] $remtok(%_bi. [ $+ [ # ] ],%bi2,1,44)
  • echo -a Retrait du %bi2 à la list de #
  • }
  • .showpays://echo -a $iif(%_bi. [ $+ [ # ] ],$ifmatch,Nothing)
  • }
  • alias -l ip_location { dialog -mod _ip_location _ip_location }
  • dialog _ip_location {
  • title "Ras'Z Ip_location"
  • size -1 -1 177 53
  • option dbu
  • box "Pays Accepter", 1, 3 4 172 34
  • button "ACCEPTER", 2, 97 39 37 12, ok
  • button "REFUSER", 3, 134 39 40 12, cancel
  • edit "", 4, 71 13 62 10
  • button "ajouter", 6, 135 13 37 10
  • combo 5, 5 13 65 180, size drop
  • list 7, 71 24 62 10, size vsbar
  • button "retirer", 8, 135 24 37 10
  • text "ON", 10, 9 27 8 7, center
  • text "OFF", 11, 17 27 11 7, center
  • link "ON", 13, 9 27 8 7
  • link "OFF", 12, 17 27 11 7
  • link " RasZa Links Alright Reserved~© ", 9, 2 43 91 8
  • }
  • on *:dialog:_ip_location:init:*:{
  • did -h $dname 12,13
  • did -b $dname 4,6,7,8
  • var %_a 1
  • while $chan(%_a) {
  • did -o $dname 5 %_a $ifmatch
  • inc %_a
  • }
  • }
  • on *:dialog:_ip_location:sclick:5:{
  • if (%_bio. [ $+ [ $did($did) ] ]) {
  • did -e $dname 4,6,7,8
  • did -v $dname 10,12
  • did -h $dname 11,13
  • }
  • else { did -b $dname 4,6,7,8 | did -h $dname 10,12 | did -v $dname 11,13 }
  • did -r $dname 4,7
  • if (%_bi. [ $+ [ $did($did) ] ]) {
  • var %_a 1
  • while $gettok(%_bi. [ $+ [ $did($did) ] ],%_a,44) {
  • did -o $dname 7 %_a $ifmatch
  • inc %_a
  • }
  • }
  • }
  • on *:dialog:_ip_location:sclick:6:{
  • if ($findtok(%_bi. [ $+ [ $did(5) ] ],$did(4),0,44)) {
  • echo -a Ce Pays Fait Déjà Parti de la list de $did(5)
  • }
  • else {
  • set %_bi. [ $+ [ $did(5) ] ] $addtok(%_bi. [ $+ [ $did(5) ] ],$did(4),44) | echo -a Ajout du $did(4) à la list de $did(5)
  • did -a $dname 7 $did(4)
  • }
  • }
  • on *:dialog:_ip_location:sclick:8:{
  • if ($did(7).sel) {
  • set %_bi. [ $+ [ $did(5) ] ] $remtok(%_bi. [ $+ [ $did(5) ] ],$did(7).seltext,1,44)
  • echo -a Retrait du $did(7).seltext à la list de $did(5)
  • did -d $dname 7 $did(7).sel
  • }
  • else { echo -a Choisi QuelQue Chose !! }
  • }
  • on *:dialog:_ip_location:sclick:12:{ unset %_bio. [ $+ [ $did(5) ] ] | did -h $dname 10,12 | did -v $dname 11,13 | did -b $dname 4,6,7,8 }
  • on *:dialog:_ip_location:sclick:13:{ set %_bio. [ $+ [ $did(5) ] ] 1 | did -v $dname 10,12 | did -h $dname 11,13 | did -e $dname 4,6,7,8 }
  • on @!*:join:#:{
  • if %_bio. [ $+ [ # ] ] {
  • if *users.undernet.org iswm $site { halt }
  • var %_reg (^([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(\.\d|\.[1-9]\d|\.1\d{2}|\.2[0-4]\d|\.25[0-5]){3}$)
  • if $regex($site,%_reg) {
  • set %_bir. [ $+ [ $site ] ] $+(#,$chr(44),$nick)
  • dnss_lookup $site
  • }
  • else {
  • .enable #group.dns
  • set %_biv. [ $+ [ $site ] ] $+(#,$chr(44),$nick)
  • dns $site
  • }
  • }
  • }
  • #group.dns off
  • on *:dns:{
  • if ($raddress) {
  • set %_bir. [ $+ [ $iaddress ] ] %_biv. [ $+ [ $naddress ] ]
  • dnss_lookup $iaddress
  • }
  • .disable #groud.dns
  • else { halt }
  • }
  • #group.dns end
  • alias -l dnss_lookup {
  • sockopen dnss_lookup- [ $+ [ $1 ] ] www.dnsstuff.com 80
  • .timer $+ $1 1 2 sockclose dnss_lookup- [ $+ [ $1 ] ]
  • }
  • on *:SOCKOPEN:dnss_lookup-*: {
  • sockwrite -n $sockname GET $+(/tools/city.ch?ip=,$gettok($sockname,2,45)) HTTP/1.1
  • sockwrite -n $sockname Host: www.dnsstuff.com
  • sockwrite -n $sockname User-agent: mIRC/ $+ $version
  • sockwrite -n $sockname $crlf
  • }
  • on *:SOCKREAD:dnss_lookup-*: {
  • var %tmp
  • sockread %tmp
  • while ($sockbr) {
  • if (*Country:* iswm %tmp) { check.country $+($gettok(%tmp,2,58),$chr(44),$gettok($sockname,2,45),$chr(44),%_bir. [ $+ [ $gettok($sockname,2,45) ] ]) }
  • sockread %tmp
  • }
  • }
  • alias -l check.country {
  • tokenize 44 $1
  • if !$istok(%_bi. [ $+ [ $3 ] ],$1,44) {
  • mode $3 +b $+(*!*@,$2)
  • kick $3 $4 Tourisme : Retourne dans Ton PAYS
  • }
  • }
menu channel {
  -
  PAYS ACCEPTER
  .OPEN_DIALOG:{ ip_location }
  .$iif(%_bio. [ $+ [ # ] ],OFF,ON):{ 
    set %_bio. [ $+ [ # ] ] $iif(%_bio. [ $+ [ # ] ],0,1)
  }
  .addpays:{ 
    var %bi $$?="Pays" 
    if ($findtok(%_bi. [ $+ [ # ] ],%bi,0,44)) { 
      echo -a Ce Pays Fait Déjà Parti de la list de # 
    }
    else { set %_bi. [ $+ [ # ] ] $addtok(%_bi. [ $+ [ # ] ],%bi,44) | echo -a Ajout du %bi à la list de # }
  }
  .delpays:{ 
    var %bi2 $$?="Pays" 
    set %_bi. [ $+ [ # ] ] $remtok(%_bi. [ $+ [ # ] ],%bi2,1,44)
    echo -a Retrait du %bi2 à la list de #
  }
  .showpays://echo -a $iif(%_bi. [ $+ [ # ] ],$ifmatch,Nothing) 
}
alias -l ip_location { dialog -mod _ip_location _ip_location }
dialog _ip_location {
  title "Ras'Z Ip_location"
  size -1 -1 177 53
  option dbu
  box "Pays Accepter", 1, 3 4 172 34
  button "ACCEPTER", 2, 97 39 37 12, ok 
  button "REFUSER", 3, 134 39 40 12, cancel
  edit "", 4, 71 13 62 10
  button "ajouter", 6, 135 13 37 10
  combo 5, 5 13 65 180, size drop
  list 7, 71 24 62 10, size vsbar
  button "retirer", 8, 135 24 37 10
  text "ON", 10, 9 27 8 7, center
  text "OFF", 11, 17 27 11 7, center
  link "ON", 13, 9 27 8 7
  link "OFF", 12, 17 27 11 7
  link "  RasZa Links Alright Reserved~©  ", 9, 2 43 91 8
}
on *:dialog:_ip_location:init:*:{
  did -h $dname 12,13
  did -b $dname 4,6,7,8
  var %_a 1
  while $chan(%_a) {  
    did -o $dname 5 %_a $ifmatch
    inc %_a
  }
}
on *:dialog:_ip_location:sclick:5:{ 
  if (%_bio. [ $+ [ $did($did) ] ]) { 
    did -e $dname 4,6,7,8 
    did -v $dname 10,12
    did -h $dname 11,13
  }
  else { did -b $dname 4,6,7,8 | did -h $dname 10,12 | did -v $dname 11,13 }
  did -r $dname 4,7
  if (%_bi. [ $+ [ $did($did) ] ]) { 
    var %_a 1 
    while $gettok(%_bi. [ $+ [ $did($did) ] ],%_a,44) {
      did -o $dname 7 %_a $ifmatch
      inc %_a
    }
  }
}
on *:dialog:_ip_location:sclick:6:{ 
  if ($findtok(%_bi. [ $+ [ $did(5) ] ],$did(4),0,44)) { 
    echo -a Ce Pays Fait Déjà Parti de la list de $did(5)
  }
  else { 
    set %_bi. [ $+ [ $did(5) ] ] $addtok(%_bi. [ $+ [ $did(5) ] ],$did(4),44) | echo -a Ajout du $did(4) à la list de $did(5) 
    did -a $dname 7 $did(4)
  }
}
on *:dialog:_ip_location:sclick:8:{
  if ($did(7).sel) {  
    set %_bi. [ $+ [ $did(5) ] ] $remtok(%_bi. [ $+ [ $did(5) ] ],$did(7).seltext,1,44)
    echo -a Retrait du $did(7).seltext à la list de $did(5) 
    did -d $dname 7 $did(7).sel
  }
  else { echo -a Choisi QuelQue Chose !! }
}
on *:dialog:_ip_location:sclick:12:{ unset %_bio. [ $+ [ $did(5) ] ] | did -h $dname 10,12 | did -v $dname 11,13 | did -b $dname 4,6,7,8  }
on *:dialog:_ip_location:sclick:13:{ set %_bio. [ $+ [ $did(5) ] ] 1 | did -v $dname 10,12 | did -h $dname 11,13 | did -e $dname 4,6,7,8  }

on @!*:join:#:{ 
  if %_bio. [ $+ [ # ] ] { 
    if *users.undernet.org iswm $site { halt } 
    var %_reg (^([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(\.\d|\.[1-9]\d|\.1\d{2}|\.2[0-4]\d|\.25[0-5]){3}$)
    if $regex($site,%_reg) { 
      set %_bir. [ $+ [ $site ] ] $+(#,$chr(44),$nick) 
      dnss_lookup $site 
    }
    else { 
      .enable #group.dns 
      set %_biv. [ $+ [ $site ] ] $+(#,$chr(44),$nick) 
      dns $site 
    }
  }
}
#group.dns off
on *:dns:{
  if ($raddress) {
    set %_bir. [ $+ [ $iaddress ] ] %_biv. [ $+ [ $naddress ] ]
    dnss_lookup $iaddress 
  }
  .disable #groud.dns
  else { halt }
}
#group.dns end
alias -l dnss_lookup {
  sockopen dnss_lookup- [ $+ [ $1 ] ] www.dnsstuff.com 80 
  .timer $+ $1 1 2 sockclose dnss_lookup- [ $+ [ $1 ] ]
}
on *:SOCKOPEN:dnss_lookup-*: {
  sockwrite -n $sockname GET $+(/tools/city.ch?ip=,$gettok($sockname,2,45)) HTTP/1.1
  sockwrite -n $sockname Host: www.dnsstuff.com 
  sockwrite -n $sockname User-agent: mIRC/ $+ $version
  sockwrite -n $sockname $crlf
}
on *:SOCKREAD:dnss_lookup-*: {
  var %tmp 
  sockread %tmp
  while ($sockbr) {    
    if (*Country:* iswm %tmp) { check.country $+($gettok(%tmp,2,58),$chr(44),$gettok($sockname,2,45),$chr(44),%_bir. [ $+ [ $gettok($sockname,2,45) ] ]) } 
    sockread %tmp
  }
}
alias -l check.country {
  tokenize 44 $1
  if !$istok(%_bi. [ $+ [ $3 ] ],$1,44) { 
    mode $3 +b $+(*!*@,$2)
    kick $3 $4 Tourisme : Retourne dans Ton PAYS 
  }   
}

 Conclusion

Pour des explication concrètes et en détails , venez me voir sur undernet : #ircfr , #scriptage ou #scripteur . Mon nickname est [Ras][Z-a]

Bienvenue au commentaire et amélioration.

J'ai pensé ajouter un ban de range , seulement des petits problèmes surviennent , donc se n'est pas pour tout suite


 Historique

12 avril 2005 07:49:50 :
correction
12 avril 2005 07:53:03 :
désoler
12 avril 2005 09:02:40 :
correction
12 avril 2005 23:38:09 :
Optimisation

 Sources du même auteur

ALIAS $ADD : NOUS AVONS $REMOVE , $REPLACE .. ALORS POURQUOI...

 Sources de la même categorie

Source avec Zip CRÉER DU MONDE SUR VOTRE SERVEUR IRC par Averell
AVOIR UNE LISTE D'UTILISATEUR EN COULEURS SELON LEURS SEXE P... par WorldDMT
COMMANDES FANTAISIES ( OP DEOP , VOICE DEVOICE ) ORIGINALES par Orona
Source avec Zip Source avec une capture CORRECTEUR par Orona
Source avec Zip Source avec une capture [DLL] DESSINER COMME LES PICWINS SUR UNE DIALOGBOX (BONUS: J... par uaip

Commentaires et avis

Commentaire de RasZa le 12/04/2005 07:56:52

Une liste des pays vas etre ajouter pour changer l'ajout

Commentaire de MaX_62 le 12/04/2005 11:14:39

Regroupe tes évènements de dialog :
on *:dialog:_ip_location:*:*:{
  if ($devent == init) {  }
  elseif ($devent == sclick) {
    if ($did == 12) {  }
  }
}
Tes boucles /while peuvent être optimisées, exemple :
var %a 1
while (%a <= $numtok(%variable,32)) { echo -a $gettok(%variable,%a,32) | inc %a }
ça peut devenir :
var %a 1
while ($gettok(%variable,%a,32)) { echo -a $ifmatch | inc %a }

Désolé, j'ai pas pris le temps de tester ton code, mais ça m'a l'air intéressant :)

Commentaire de COOLMAN002 le 12/04/2005 15:28:26

Expert ?

Plutot que de /Set -u2, utilise /var.

Sur la plupart des serveurs, les ips sont cryptés, rare sont ceux qui laisse l'ip en décodé, donc c'est assez limité pour une personne n'allant pas sur undernet ou d'autre serveurs de ce genre...

Commentaire de tofu le 12/04/2005 19:10:58

suffit juste d'un istok avec une var contenant la liste des pays autorisés..

de plus juste comme ça, le racisme est prohibé donc bannir des pays entiers c'est pas super..

Commentaire de RasZa le 12/04/2005 23:33:38

Coolman
Expert ?
hum ...c'est quoi les trois choix nous avons
débutant , initié , expert

la base est dialog & popups ..débutant ?
le code comprend du Socket , Regex ...initié ?

j'aimerait savoir que pense-tu etre expert ?

Plutot que de /Set -u2, utilise /var.
désolé j'ai pris la base popups d'un autre de mes petit programmes ..quelque modif on été oublier



-----------------------------

Tofu : A là base se petit programme est pour undernet
Plusieur bot on simplement envahi les server d'unet donc j'offre plusieurs protections
Sérieusement , cette protections est ma meilleur pour la vérification de mes users


-----
Max_62 : mettre plusieur on dialog n'augmente pas sa vitesse d'éxécution ?
Pour le reste ma l'optimiser...juste pour toi

Commentaire de PaDa le 13/04/2005 10:17:54

Justement RasZa, tu as mis ton code en expert alors qu'initié aurait été plus adapté :)

J'irais pas jusqu'a dire que c'est du racisme, lol

Pour appuyer les comments de max :
-le $numtok évalué $numtok fois, c'est moche, et ca oblige mirc a le recalculer a chaque fois, l'optimisation que MaX propose est très pertinente.
-Regrouper ses on dialog, ca a trois avantages : c'est bien plus facile a relire, ca évite de se prendre la tête 3h a chercher pk un "on dialog" ne se déclenche pas (on dialog équivalent plus haut...) et pour ma part je remarque des gains de vitesse sur les on text regroupés :]

Sinon je rejoins tofu, fondamentalement ce code c'est un $istok et une liste d'extensions, rien de plus... et puis autant j'adore les regex, autant tester la validité d'une ip par regex a grande échelle je pense pas que ce soit le plus rapide

Bonne continuation

Commentaire de fjxokt le 13/04/2005 11:00:50

(pr ce qui est du niveau des sources, je pense que c'est aux admins a decider si une source peut etre en expert ou pas
- d'ailleurs je me demande tjrs quel genre de source il faut pr pvoir la mettre en expert- )

Commentaire de PaDa le 13/04/2005 21:09:09

bah débutant, c des trucs proches de l'aide, initié faut connaitre un peu mirc et le principe peut etre un peu évolué, et expert c un principe compliqué et du code optimisé... a mon sens :) de toute facon ca n'est qu'indicatif :))

Commentaire de linkioto le 24/07/2005 19:45:39

je comprend pas pourquoi vous pronez le on *:dialog:*:*:{ instructions }
par exemple peu de dialogue se servent du $devent = mouse
si on prend ta méthode pada : des qu'on va bouger la souris mirc se retapera toutes les instructions pour voir si on lui demande pas de faire qqchose lors du mouvement de la souris

si le gars utilise juste init et slick :
mirc lis tout le code des remotes
il tombe sur
on *:dialog:init:*:{ instructions }
il passe son chemin sur les instructions
il tombe sur
on *:dialog:sclick:*:{ instructions }
il passe son chemin sur les instructions

perso je le vois de cette façon là, après faut voir

sinon je suis d'accord sur les on text : c'est mieux de regrouper

et puis pour les on dialog je pense que c'est vraiment du détail pour l'optimisation du code, les /set & /var étant, par exemple, beaucoup plus important à mon gout

Commentaire de PaDa le 24/07/2005 22:36:37

bah lis exactement ce que j'ai mis, j'ai précisé les raisons ;)
je suis d'accord pour l'event mouse, cependant je pense (ce serait a vérifier avec un benchmark correct) que le gain est meilleur en regroupant les on dialog : en regroupant, mirc risque de lagguer a "traiter" un event "mouse" qui n'est pas utilisé, en ne regroupant pas mirc risque de lagguer a parser le code a la recherche de plusieurs traitement, vérifier qu'ils ne se recoupent ou ne s'interrompent pas etc..
A voir, ce n'est pas primordial certes, pour moi, pour les dialogs, c'est plus des gains de lecture et de confort pour changer le code après :)
Détails détails ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 5,070 sec (3)

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