Vous n'êtes pas identifié(e).

Top posteurs

Statistiques

Partenaires

  • eXolia Hosting
  • Eggdrop.fr

#1 23/08/2011 06:52:24

Diogene
IRCzien
Lieu : Le Mans
Inscription : 09/07/2011
Messages : 179

[TCL] Link InspIRCd 1.2.x / 2.0.x

Voici un petit bout de code tout simple rédigé en TCL pur établissant une connexion LINK avec un serveur InspIRCd 1.2.x/  2.0.x.
Le service en lui même est inutile, il sert simplement à répondre aux requêtes PING.

Fichier core.tcl

Code: TCL
#   SySteM IRC Service
# ====================
#    Auteur: Diogene
# ====================
#      core.tcl
# ====================
 
namespace eval service {
    set service(root)            [file dirname [info script]]
    set service(modules)         [file join $service(root) "modules"]
    set server(ip) 	         "0.0.0.0"
    set server(port) 		 "7000"
    set server(name)	 	 "system.tonreseau.net"
    set server(passwd) 	 	 "mot-de-passe"
    set server(desc)	 	 "SySteM Advanced"
    set server(sid)        	 "522"
    set bot(nick)	 	 "SySteM"
    set bot(host)	 	 "system.fr"
    set bot(ident)	 	 "bot"  
    set bot(real)   	 	 "InspIRCd Server Test"
    set bot(uid)	 	 "522AAAAAA"  
    set bot(chan)	 	 "#Services"  
}
 
proc service::coreInit {args} {
 
    variable service
    variable server
    variable bot
    loadModule "irc.mod.tcl"
    ircConnection
 
}
 
proc service::ircConnection {args} {
 
    variable server
    variable bot
    if { [catch {socket $server(ip) $server(port)} sockID] } {
	puts "## Erreur reçue: $sockID "
	puts "## Arrêt automatique du service après détection d'erreur fatale..."
	exit 1
    }
    fconfigure $sockID -buffering line
    fileevent $sockID readable [list [namespace current]::getData $sockID]
    irc::linkCreate $sockID $server(name) $server(passwd) $server(desc) $server(sid)
     irc::botCreate  $sockID $bot(nick) $bot(ident) $bot(host) $bot(real) $server(sid) $bot(uid) $bot(chan)
}
 
proc service::getData {sockID} {
    variable server
    gets $sockID data
 
      if { [eof $sockID] } {
          close $sockID
          puts "EOF"
          exit 1
 
	}
    irc::srvEvents $sockID $data $server(sid)
}
 
 
proc service::loadModule {moduleName} {
  variable service
  source $service(modules)/$moduleName 
}
 
 
service::coreInit
 
vwait _forever_

Fichier modules/irc.mod.tcl

Code: TCL
#   SySteM IRC Service
# ====================
#    Auteur: Diogene
# ====================
#      irc.mod.tcl
# ====================
 
namespace eval irc {
    variable ircd
    set ircd "inspircd"#Cette variable est inutile pour ce bout de code
}
 
proc irc::linkCreate {sockID name passwd desc sid} {
  puts $sockID "SERVER $name $passwd 0 $sid :$desc"
  puts $sockID ":$sid BURST [clock seconds]"
  puts $sockID ":$sid ENDBURST"
}
 
proc irc::botCreate {sockID nick ident host real sid uid chan} {
  puts $sockID ":$sid UID $uid [clock seconds] $nick $host $host $ident $host [clock seconds] +Siosw +ABCKNOQcdfgklnoqtx :$real"
  puts $sockID ":$uid JOIN $chan"
  puts $sockID ":$uid MODE $chan +o $nick"
 
}
 
proc irc::srvEvents {sockID data sid} {
  puts $data  
  switch -exact [lindex $data 1] {
     "PING" {
	    puts $sockID ":$sid PONG $sid :[lindex $data 2]"
     } 
  }
}

Cordialement, Diogene.


Mieux vaut mourir incompris que passer sa vie à s'expliquer. [William Shakespeare]

Bon, c'est Diogene, mais c'est un humain malgré tout [CrazyCat]

Hors ligne

#2 23/08/2011 06:54:02

Diogene
IRCzien
Lieu : Le Mans
Inscription : 09/07/2011
Messages : 179

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

Je n'ai pas commenté le snippet par manque de courage, je le ferais plus tard, la fatigue me ronge.. tongue
J'ai fais exprès de ne pas mettre l'ajout de socket dans la procédure de link pour bien montrer que la commande UID peut être utilisée n'importe quand.

Dernière modification par Diogene (23/08/2011 06:55:28)


Mieux vaut mourir incompris que passer sa vie à s'expliquer. [William Shakespeare]

Bon, c'est Diogene, mais c'est un humain malgré tout [CrazyCat]

Hors ligne

#3 24/08/2011 18:17:04

ludo`
IRCzien
Lieu : FRANCE
Inscription : 11/07/2011
Messages : 111
Site Web

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

Salut Diogene
cela peut toujours servir, mais il me semble qu'à l'époque Tisma en avais déjà mis un ici, que j'avais commencer à travaillé avec d'ailleurs pour mon service mais vite arrêter car préfère unreal ^^

Hors ligne

#4 25/08/2011 01:41:55

Diogene
IRCzien
Lieu : Le Mans
Inscription : 09/07/2011
Messages : 179

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

TiSmA en avait poster un pour InspIRCd 1.1.x
Cordialement, Diogene.


Mieux vaut mourir incompris que passer sa vie à s'expliquer. [William Shakespeare]

Bon, c'est Diogene, mais c'est un humain malgré tout [CrazyCat]

Hors ligne

#5 25/08/2011 18:28:45

ludo`
IRCzien
Lieu : FRANCE
Inscription : 11/07/2011
Messages : 111
Site Web

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

Oui peut être je sais plus depuis le temps q'IRCz n'étais plus ouvert ^^

Hors ligne

#6 26/08/2011 01:26:33

Diogene
IRCzien
Lieu : Le Mans
Inscription : 09/07/2011
Messages : 179

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

Ou si il en a fait un, je ne l'ai jamais vu.


Mieux vaut mourir incompris que passer sa vie à s'expliquer. [William Shakespeare]

Bon, c'est Diogene, mais c'est un humain malgré tout [CrazyCat]

Hors ligne

#7 26/08/2011 15:28:04

ludo`
IRCzien
Lieu : FRANCE
Inscription : 11/07/2011
Messages : 111
Site Web

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

Si il l'avais fait car en faite j'avai utiliser son "tuto" sur le link pour adapté mon Onyx service aussi pour InspIRCd mais après arreter car sa me donner trop de boulot pour unreal et insp lol.

Hors ligne

#8 26/08/2011 19:05:42

Diogene
IRCzien
Lieu : Le Mans
Inscription : 09/07/2011
Messages : 179

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

Je parle pour InspIRCd 2.0.x (protocole TS6), le tutoriel pour InspIRCd 1.1.x est disponible dans la rubrique snippet

Dernière modification par Diogene (28/08/2011 15:12:53)


Mieux vaut mourir incompris que passer sa vie à s'expliquer. [William Shakespeare]

Bon, c'est Diogene, mais c'est un humain malgré tout [CrazyCat]

Hors ligne

#9 26/08/2011 19:46:40

ludo`
IRCzien
Lieu : FRANCE
Inscription : 11/07/2011
Messages : 111
Site Web

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

oui surement bref lol.
Sa servira.

Hors ligne

#10 28/08/2011 23:42:11

Diogene
IRCzien
Lieu : Le Mans
Inscription : 09/07/2011
Messages : 179

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

Je l'espere, c'est le but wink


Mieux vaut mourir incompris que passer sa vie à s'expliquer. [William Shakespeare]

Bon, c'est Diogene, mais c'est un humain malgré tout [CrazyCat]

Hors ligne

#11 22/01/2012 12:11:08

ludo`
IRCzien
Lieu : FRANCE
Inscription : 11/07/2011
Messages : 111
Site Web

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

Salut tout le monde

pour ceux qui utilise ce "tuto" pour link un service, si celui-ci à une version que vous voulez que l'ont voi sur le serveur en tapant /version votre_link

ajoutez   puts $sockID ":$sid VERSION :Version de votre service" comme ceci

Code: TCL
proc irc::linkCreate {sockID name passwd desc sid} {
  puts $sockID "SERVER $name $passwd 0 $sid :$desc"
  puts $sockID ":$sid BURST [clock seconds]"
  puts $sockID ":$sid VERSION :Version de votre service"
  puts $sockID ":$sid ENDBURST"
}

Enfin si sa peut en aidez, je pense que Diogene avais pas mis car sa l'intéressai pas et que surtout c'était en exemple pour répondre au PING

Dernière modification par ludo` (22/01/2012 12:16:52)

Hors ligne

#12 22/01/2012 18:40:32

Diogene
IRCzien
Lieu : Le Mans
Inscription : 09/07/2011
Messages : 179

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

Bonsoir,

Oui, cette source était à titre d'exemple.
Merci ludo`.
Pour plus d'informations, la liste des commandes est disponible ici : http://wiki.inspircd.org/InspIRCd_Spann … 2/Commands
Liste inchangée entre le 1.2.x et le 2.0.x

Cordialement, Diogene.


Mieux vaut mourir incompris que passer sa vie à s'expliquer. [William Shakespeare]

Bon, c'est Diogene, mais c'est un humain malgré tout [CrazyCat]

Hors ligne

#13 03/08/2015 23:03:35

sianur
IRCzien en herbe
Lieu : dordogne
Inscription : 17/05/2013
Messages : 79
Site Web

Re : [TCL] Link InspIRCd 1.2.x / 2.0.x

Salut désoler vieux post mais qui peut rester utile

il y a un changement a cause de anope2 dans la procédure  irc::linkCreate
si vous n'indiquer pas a anope2.X que votre bot support le protocole 1202 anope plantera motif (omode non supporter)

voici le changement (ajout des capabs) :

Code: TCL
 
 
proc irc::linkCreate {sockID name passwd desc sid} {
  puts $sockID ":$sid CAPAB START 1202"
  puts $sockID ":$sid CAPAB CAPABILITIES :PROTOCOL=1202"
  puts $sockID ":$sid CAPAB END"
  puts $sockID "SERVER $name $passwd 0 $sid :$desc"
  puts $sockID ":$sid BURST [clock seconds]"
  puts $sockID ":$sid ENDBURST"
}
 
 



J'ai toujours un soucis genre un stats g refuser si je trouve la solution je re-posterais ici sinon merci a vous de l'indiquer smile

Cordialement


Donc au niveau des /stats refuser comme j'en avais marre de chercher voici une solution qui n'est pas forcement la meilleur

dans le fichier /inspircd-2.0.20/src/commands/cmd_stats.cpp j'ai autoriser l'uid de mon bot et voila penser quant même à protéger cette uid au cas ou même si ca reste la commande /stats

entre la ligne 66 et 76

Code: C++
 
	if (user->uuid != "522AAAAAA") {
	    if (!isPublic && !isRemoteOper && !isLocalOperWithPrivs)
	    {
		    ServerInstance->SNO->WriteToSnoMask('t',
				"%s '%c' denied for %s (%s@%s)",
				(IS_LOCAL(user) ? "Stats" : "Remote stats"),
				statschar, user->nick.c_str(), user->ident.c_str(), user->host.c_str());
		    results.push_back(sn + " 481 " + user->nick + " :Permission denied - STATS " + statschar + " requires the servers/auspex priv.");
		    return;
	    }
    }
 

make
make install
restart

Dernière modification par sianur (04/08/2015 14:05:10)


Un jour j'irai vivre en Théorie, car en Théorie tout se passe bien.

Hors ligne

Pied de page des forums

448553 visites ( 124 aujourd'hui ) 5 visiteurs en ligne
Copyright © 2004 - 2013 IRCz