begin process at 2010 03 12 07:21:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

AddOns

 > XCHAT - TCL - MYSQL ANCIENS PSEUDOS

XCHAT - TCL - MYSQL ANCIENS PSEUDOS


 Information sur la source



 Description

Quand on est admin, c'est parfois lourd de voir quelqu'un changer de pseudo pour retenter sa chance apres qu'il au pourri sa reputation, ce script l'empechera de faire puisqu'il affiche les anciens pseudos de chaque personne se connectant...
Code tcl
Comatible xchat
mysqltcl requis

la seconde ligne vous permet de configurer vos parametres sql : [mysqlconnect -host localhost -user root]


Source

  • package require mysqltcl
  • set db [mysqlconnect -host localhost -user root]
  • mysqlquery $db {CREATE DATABASE IF NOT EXISTS tcl}
  • mysqlquery $db {USE tcl}
  • mysqlquery $db {CREATE TABLE IF NOT EXISTS hosts2nicks(nick VARCHAR(100), host VARCHAR(100));}
  • on JOIN reqjoin {
  • splitsrc
  • if { $_nick != [me] } {
  • autrenicks $_host $_nick $_dest
  • }
  • }
  • # Ceci alerte chaque fois que quelqu'un join
  • # Les anciens pseudos et vhosts qu'il a eu.
  • # si qqn vole un pseudo a qqn, alors le code est fausse..
  • proc allnick { host liste } {
  • #donne tout les pseudos qui ont ete associe a un vhost
  • global db
  • set query [mysqlquery $db "SELECT trim(nick) as nick FROM hosts2nicks WHERE host=\"$host\""]
  • mysqlmap $query nick {
  • if { [inliste $host $nick $liste] == 0 } {
  • set liste [ addliste $host $nick $liste ]
  • set liste [ allhosts $nick $liste ]
  • }
  • }
  • mysqlendquery $query
  • return $liste
  • }
  • proc allhosts { nick liste } {
  • #donne tout les vhosts qui ont ete associes a un pseudo
  • global db
  • set query [mysqlquery $db "SELECT host FROM hosts2nicks WHERE nick=\"$nick\"" ]
  • mysqlmap $query host {
  • if { [inliste $host $nick $liste] == 0 } {
  • set liste [ addliste $host $nick $liste ]
  • set liste [ allnick $host $liste ]
  • }
  • }
  • mysqlendquery $query
  • return $liste
  • }
  • proc addliste { host nick liste } {
  • #ajoute quelqu'un dans la liste des gens selectiones pour l'affichage
  • set var "[string trim $nick]"
  • lappend liste $var
  • return $liste
  • }
  • proc inliste { host nick liste } {
  • #dit si qqn a deja ete selectione
  • set var "[string trim $nick]"
  • foreach { each } $liste {
  • if { $each == $var } {
  • return 1
  • }
  • }
  • return 0
  • }
  • proc noalreadyregister { nick host } {
  • #dit si qqn a deja ete enregistre avec un pseudo et un vhost
  • global db
  • set query [mysqlquery $db "SELECT 1 FROM hosts2nicks WHERE nick=\"$nick\" AND host=\"$host\"" ]
  • mysqlmap $query nombre { return 1 }
  • mysqlendquery $query
  • return 0
  • }
  • proc enregnickhosts { nick host } {
  • #enregistre un pseudo et un vhost dans la base
  • global db
  • if { ! [noalreadyregister $nick $host] } {
  • mysqlquery $db "INSERT INTO hosts2nicks SET nick=\"$nick\", host=\"$host\""
  • }
  • }
  • proc noserv { hash } {
  • set r {^(.*@)?([^\-]*)(\-?.*)$}
  • if { [ regexp $r $hash m ] } {
  • regexp $r $hash s top serveur clients
  • if { $clients == "" } {
  • return $serveur
  • } else {
  • return $clients
  • }
  • } else {
  • return $hash
  • }
  • }
  • proc autrenicks { _host _nick _dest } {
  • #affiche lors de la connexion tout les pseudos et vhosts associes a une personne.
  • if { [can_ghost $_host ] } {
  • set _host [noserv $_host]
  • enregnickhosts $_nick $_host
  • set liste [ allnick $_host [ list ] ]
  • set liste [ allhosts "$_nick " $liste ]
  • if { [llength $liste] > 1 } {
  • print $_dest [join $liste " "]
  • } else {
  • #print $_dest "un seul login et host"
  • }
  • }
  • }
  • alias autres {
  • #commande pour chercher qqn
  • set liste [ allhosts $_rest [list ] ]
  • print [join $liste " "]
  • }
  • alias register__ {
  • #commande pour enregistrer qqn
  • set a [split $_rest " "]
  • set nick [lindex $a 0]
  • set host [noserv [lindex $a 1] ]
  • if { ! [noalreadyregister $nick $host ] } {
  • print "nick : $nick host : $host"
  • enregnickhosts $nick $host
  • }
  • }
package require mysqltcl
set db [mysqlconnect -host localhost -user root]
mysqlquery $db {CREATE DATABASE IF NOT EXISTS tcl}
mysqlquery $db {USE tcl}
mysqlquery $db {CREATE TABLE IF NOT EXISTS hosts2nicks(nick VARCHAR(100), host VARCHAR(100));}

on JOIN reqjoin {
	splitsrc
	if { $_nick != [me] } {
		autrenicks $_host $_nick $_dest
	}
}

#  Ceci alerte chaque fois que quelqu'un join
#  Les anciens pseudos et vhosts qu'il a eu.
#  si qqn vole un pseudo a qqn, alors le code est fausse..

proc allnick { host liste } {
	#donne tout les pseudos qui ont ete associe a un vhost
	global db
	set query [mysqlquery $db "SELECT trim(nick) as nick FROM hosts2nicks WHERE host=\"$host\""]
	mysqlmap $query nick {
		if { [inliste $host $nick $liste] == 0 } {
			set liste [ addliste $host $nick $liste ]
			set liste [ allhosts $nick $liste ]
		}
	}
	mysqlendquery $query
	return $liste
}

proc allhosts { nick liste } {
	#donne tout les vhosts qui ont ete associes a un pseudo
	global db
	set query [mysqlquery $db "SELECT host FROM hosts2nicks WHERE nick=\"$nick\"" ]
	mysqlmap $query host {
		if { [inliste $host $nick $liste] == 0 } {
			set liste [ addliste $host $nick $liste ]
			set liste [ allnick $host $liste ]
		}
	}
	mysqlendquery $query
	return $liste
}

proc addliste { host nick liste } {
	#ajoute quelqu'un dans la liste des gens selectiones pour l'affichage
	set var "[string trim $nick]"
	lappend liste $var
	return $liste
}

proc inliste { host nick liste } {
	#dit si qqn a deja ete selectione
	set var "[string trim $nick]"
	foreach { each } $liste {
		if { $each == $var } {
			return 1
		}
	}
	return 0
}

proc noalreadyregister { nick host } {
	#dit si qqn a deja ete enregistre avec un pseudo et un vhost
	global db
	set query [mysqlquery $db "SELECT 1 FROM hosts2nicks WHERE nick=\"$nick\" AND host=\"$host\"" ]
	mysqlmap $query nombre { return 1 }
	mysqlendquery $query
	return 0
}

proc enregnickhosts { nick host } {
	#enregistre un pseudo et un vhost dans la base
	global db
	if { ! [noalreadyregister $nick $host] } {
		mysqlquery $db "INSERT INTO hosts2nicks SET nick=\"$nick\", host=\"$host\""
	}
}

proc noserv { hash } {
	set r {^(.*@)?([^\-]*)(\-?.*)$}
	if { [ regexp $r $hash m ] } {
		regexp $r $hash s top serveur clients
		if { $clients == "" } {
			return $serveur
		} else {
			return $clients
		}
	} else {
		return $hash
	}
}

proc autrenicks { _host _nick _dest } {
	#affiche lors de la connexion tout les pseudos et vhosts associes a une personne.
	if { [can_ghost $_host ] } {
		set _host [noserv $_host]
		enregnickhosts $_nick $_host
		set liste [ allnick $_host [ list ] ]
		set liste [ allhosts "$_nick " $liste ]
		if { [llength $liste] > 1 } {
			print $_dest [join $liste " "]
		} else {
			#print $_dest "un seul login et host"
		}
	}
}


alias autres {
	#commande pour chercher qqn
	set liste [ allhosts $_rest [list ] ]
	print  [join $liste " "]
}

alias register__ {
	#commande pour enregistrer qqn
	set a [split $_rest " "]
	set nick [lindex $a 0]
	set host [noserv [lindex $a 1] ]
	if { ! [noalreadyregister $nick $host ] } {
		print "nick : $nick host : $host"
		enregnickhosts $nick $host
	}
}

 Conclusion

sur certains serveurs, ils ips sont formates bizarements, les regexp que j'ai places ne seront pas forcement les bonnes pour vos serveurs favoris...

j'utilise ca sur irc.heliosnet.org #programmation le chan officiel de codes-sources entre autre


 Sources de la même categorie

TCL - AJOUT SUPPRESSION DE LOGS par Atok
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

 Sources en rapport avec celle ci

VHOST PERSO par isko
CONNAITRE TOUT LES PSEUDOS DE VOS CHANS par Ziboo

Commentaires et avis

Commentaire de PaDa le 13/12/2007 13:31:05

Je tombe sur ce code par hasard, je trouve ça très sympa, et facile à lire.
Ca me donne envie de me mettre à TCL sous Xchat :) Merci !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

$nick si $nick ds un .txt ? [ par PiZZaMaN ] BonjourJ'ai fait un antipv, et g mi un truc pr ne pas bloquer les pv de certains pseudos. J'ai mis ces pseudos ds un fichier .txt (pour rajouter les vhost [ par Lonsdale^ ] salut,voila si kk1 pouvais me filer 1 liste de vhost (gratos) merci :) Probleme pour creer un script [ par Ricomat03 ] Bonjour tout le monde.Il y a assez longtemps j'ai fait un script bien nul pour changer de pseudos rapidement et facilement.Voila le script (je l'ai m vhost avec domain [ par Solisoft ] salut,On m'as dit qu'il etais possible d'avoir son nom de domain dans le vhost sans pour autant avoir 1 bnc,Si on m'as bien renseigné et que cela es p Domaine-Vhost [ par Solisoft ] SalutVoila j'ai loué mon nom de domaine, j'ai vu qu'il etais possible de l'avoir dans son vhost, pas en utilisant 1 bnc avec 1 vhost perso. mais c'est Alias pr Unreal [ par MaX_62 ] Bonjour,Est ce que quelqu'un aurait une solution pour un alias dans ma unrealircd.conf ? L'alias serait /vhost-public et la commande serait /vhost Un- Grades et pseudos [ par XavSniper ] Salut tout le monde Je voudrait savoir comment on ajoute le grade d'un pseudo, pour le mettre a coté du pseudo quand on écrit sur le chan. P Détécteur de clones, un peu spécial.. [ par GforceFX ] Bonjour, j'aimerai fait un détécteur de clones qui se base sur le /userip de la personne, étant donné que dans un whois, si la per Modération pseudos [ par rush974 ] Bjr,Je suis à la recherche d'un script qui détecte l'arrivée d'un pseudo interdit avec possibilté de kick-ban d'office avec raison Sonne si nickname parle dans une fenetre de chat [ par charly42 ] Bonjour à tous.J'aimerai que cela sonne quand un nickname spécifique dit quelque chose en salle, ou dans une fenêtre de chat quelconque.Comment faire?


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

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,889 sec (4)

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