Accueil > > > G-IRCD1.0
G-IRCD1.0
Information sur la source
Description
Le voilà enfin, le G-IRCD1.0 est arrivé.
Le G-IRCD est un serveur IRC qui se veut le plus proche possible de la référence en matière d'IRCD : UnrealIRCd. Le développement du G-IRCD a commencé le 20/04/2004. À cette date là, j'ai commencé à écrire les premières lignes du programme. J'étais très motivé jusqu'au moment où, en Août, je décida d'arrêter le développement du G-IRCD par manque de motivation. Personnellement, je pense que rester motivé est une des choses les plus difficiles tout au long d'un projet. J'en ai été ici victime.
Le 28/01/2005, j'ai décidé de reprendre le développement du G-IRCD.
Cette version 1.0, n'a pas été béta-testée, elle a surtout vu le jour pour que les gens puissent voir où j'en suis, et apporter des suggestions, faire des rapports de bug, pour m'aider tout au long de la suite du développement. C'est pourquoi il n'y a quasiment aucune doc. Cela m'apporte aussi de la motivation. Elle est linkless, c'est à dire qu'elle ne gère pas de links avec d'autres serveurs, ou services IRC.
À vrai dire, la véritable première version du G-IRCD sera la 2.0. Elle permettera la gestion des links, et sera améliorée, corrigée...
C'est pourquoi je voudrais, si vous le voulez bien, faire des rapports de bug (voir la section Bug Report du site du G-IRCD (/credits)), pour m'aider à améliorer ce programme ! Merci
Source
- on 1:start: {
- if (!$isdir(System)) {
- mkdir System
- }
- echo -s 4Type /start, to start the server
- echo -s Please visit http://www.g-neration.com/G-IRCD/
- echo -s You can configure the server by editing g-ircd.conf, and by modifying rehash.g
- if ($readini(System\G-IRCD.dat,GlobalVars,firststart) != no) {
- writeini -n System\G-IRCD.dat GlobalVars creationtime $asctime
- writeini -n System\G-IRCD.dat GlobalVars firststart no
- }
- }
-
- alias cleanup {
- var %i 1
- set %systemdir $mircdir $+ System\
- set %nbdfiles $calc($findfile(%systemdir ,*,0,0,) - 1)
- log Cleaning up the database...
- while (%i <= %nbdfiles) {
- set %tmpfile $findfile(%systemdir ,*,%i,0,)
- if (($nopath(%tmpfile) != G-IRCD.dat) && (%tmpfile)) {
- log Removing %tmpfile
- .remove $shortfn(%tmpfile)
- }
- inc %i
- }
- }
-
- alias sw {
- set %lastsw sw $1-
- echo @sw 12 $+ %lastsw
- sockwrite -tn $1 $2-
- }
- alias log { write log.txt $1- | echo @G-IRCD $1- }
- alias randsock { return gircd $+ $rand(a,z) $+ $rand(A,Z) $+ $rand(a,z) $+ $rand(A,Z) $+ $rand(A,Z) $+ $rand(1000,9999) $+ $rand(10,99) $+ $rand(a,z) }
- alias randping { return $rand(10,99) $+ $rand(A,Z) $+ $rand(0,9) $+ $rand(A,Z) $+ $rand(A,Z) $+ $rand(A,Z) $+ $rand(0,9) }
-
- alias start {
- ;Démarrage du serveur
-
- window -e @G-IRCD
- ;window -e @sr
- cleanup
- log Removing temporary variables...
- unset %*
- log Reading configuration for rehash...
- rehash
- rh
- addmap %me 0 %me %me.info
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CHANGER ICI <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- log Server ready to listen to the Internet...
- var %i 1
- ;Boucle servant à mettre en écoute les ports
- while (%i <= $gettok(%ports,0,300)) {
- set %tport $gettok(%ports,%i,300)
- socklisten gircd $+ %i %tport
- log 14Listening port : %tport
- inc %i
- }
- log 4Server started !
- writeini -n System\G-IRCD.dat GlobalVars online $asctime
- }
-
- alias usergiven {
- ;Alias servant à vérifier si l'user donné (sous forme de sockname) a déjà donné sa commande USER.
- if ($1) {
- inc %usergiventimes_ [ $+ [ $1 ] ]
- if (%usergiventimes_ [ $+ [ $1 ] ] >= 10) {
- .timerusergiven $+ $1 off
- halt
- }
- .timerusergiven $+ $1 off
- if (%usergiven_ [ $+ [ $1 ] ] == on) {
- if (!$isco($socknick($sockname))) {
- sw $1 : $+ %me NOTICE %nick_of_sockname_ [ $+ [ $1 ] ] :*** If you are having problems connecting due to ping timeouts, please type /quote pong %ping_ [ $+ [ $1 ] ] or /raw pong %ping_ [ $+ [ $1 ] ] now.
- sw $1 : $+ %me NOTICE %nick_of_sockname_ [ $+ [ $1 ] ] :*** %me running version G-IRCD1.1
- sw $1 PING : $+ %ping_ [ $+ [ $1 ] ]
- .timerping $+ $1 1 %pingfreq /pingverif $1
- set %usergiven_ [ $+ [ $1 ] ] off
- hello $1
- }
- else {
- sw $1 ERROR :Closing Link: Nickname is already in use. Please change.
- sockclose2 $1
- .timerkill $+ $1 -m 1 200 /sockclose $1
- }
- }
- else {
- ;Sinon, on refait appel à cette même fonction dans une seconde, pour voir s'il ne l'a toujours pas donné, et ainsi de suite.
- .timerusergiven $+ $1 1 1 /usergiven $1
- }
- }
- }
-
- on *:socklisten:gircd*: {
- ;On créé un nom aléatoire de socket
- set %randsock $randsock
- ;On l'accepte en lui donnant le nom aléatoire
- sockaccept %randsock
- ;On détermine l'ip du client venant de se connecter
- set %ip_ [ $+ [ %randsock ] ] $sock(%randsock).ip
-
- ;Vérification du nombre de sessions pour l'ip
- if (%sessions_ [ $+ [ %ip_ [ $+ [ %randsock ] ] ] ] >= %slimit) {
- log 7Killed %ip_ [ $+ [ %randsock ] ] : Session limit exceeded
- sw %randsock ERROR :Closing Link: Session limit exceeded
- sockclose2 %randsock
- .timerkill $+ %randsock -m 1 200 /sockclose %randsock
- }
- else {
- inc %nbdconnects
- set %port_ [ $+ [ %randsock ] ] $sock($sockname).port
- inc %sessions_ [ $+ [ %ip_ [ $+ [ %randsock ] ] ] ]
- sw %randsock : $+ %me NOTICE AUTH :*** Looking up your hostname...
- set %dnssock %randsock
- ;dns %ip_ [ $+ [ %randsock ] ]
- if ($dllcall(G-IRCD.dll,dllcallreturn,GDNS,%ip_ [ $+ [ %randsock ] ] %randsock)) { }
- sw %randsock : $+ %me NOTICE AUTH :*** Checking ident...
- }
- }
-
- alias dllcallreturn { }
-
- on *:sockclose:gircd*: {
- log 4Déconnexion : $socknick($sockname) ( $+ $fullhost($sockname) $+ )
- set %quitchans %chans_ [ $+ [ $sockname ] ]
- set %qfullhost $fullhost($sockname)
- set %qnick $socknick($sockname)
- set %qserv %server_ [ $+ [ $socknick($sockname) ] ]
- set %quitraison_ [ $+ [ $sockname ] ] Quit: Connection reset by peer
- sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ $sockname ] ]
- sockclose2 $sockname
- gquit $sockname Connection reset by peer
- }
-
- alias sockclose2 {
- if ($1) {
-
- if (%server_ [ $+ [ $socknick($1) ] ] == %me) {
- ;Envoyer la notice à tous les IRCops locaux
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto sockcloseend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- if (c isincs %snomask_ [ $+ [ %r ] ]) {
- if ($socknick($1)) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %lonick :*** Notice -- client exiting: $socknick($1) ( $+ $gettok($fullhost($1),2-,$asc(!)) $+ ) $chr(91) $+ %quitraison_ [ $+ [ $1 ] ] $+ $chr(93)
- ;*** Notice -- Client exiting: G-FACTION[GTASA] (G-FACTION@127.0.0.2) [Quit: ]
- }
- }
- }
- }
- }
- .fclose %file
- :sockcloseend
- ;Fin
- }
-
- whowas.add.private $1
- tmpshun.del $socknick($1)
- set %sockclosenick $socknick($1)
- dec %sessions_ [ $+ [ $sock($1).ip ] ]
- unset %connectiontime_ [ $+ [ $1 ] ]
- unset %chans_ [ $+ [ $1 ] ]
- unset %reginserver_ [ $+ [ $1 ] ]
- unset %realname_ [ $+ [ $socknick($1) ] ]
- unset %nick_ [ $+ [ $socknick($1) ] ]
- if (%ircop_ [ $+ [ $socknick($1) ] ]) {
- delircoplist %nick_of_sockname_ [ $+ [ $1 ] ]
- }
- unset %ircop_ [ $+ [ $socknick($1) ] ]
- unset %nick_ [ $+ [ $socknick($1) ] ]
- unset %snomask_ [ $+ [ $socknick($1) ] ]
- unset %umodes_ [ $+ [ $socknick($1) ] ]
- unset %identd_ [ $+ [ $socknick($1) ] ]
- unset %server_ [ $+ [ $socknick($1) ] ]
- unset %ping_ [ $+ [ $1 ] ]
- unset %usergiven_ [ $+ [ $1 ] ]
- unset %port_ [ $+ [ $1 ] ]
- unset %vraiehost_ [ $+ [ $1 ] ]
- unset %sockname_ [ $+ [ $socknick($1) ] ]
- unset %nick_of_sockname_ [ $+ [ $1 ] ]
- unset %host_ [ $+ [ $1 ] ]
- unset %ip_ [ $+ [ $1 ] ]
- unset %nick_of_sockname_ [ $+ [ $1 ] ]
- delservnick %sockclosenick
- }
- }
-
- alias pingverif {
- if ($1) {
- .timerping $+ $1 off
- if (%pongdonne_ [ $+ [ $1 ] ]) {
- set %pongdonne_ [ $+ [ $1 ] ] $false
- set %ping_ [ $+ [ $1 ] ] $randping
- sw $1 PING : $+ %ping_ [ $+ [ $1 ] ]
- .timerping $+ $1 1 %pingfreq /pingverif $1
- }
- else {
- set %quitchans %chans_ [ $+ [ $1 ] ]
- set %qfullhost $fullhost($1)
- set %qnick $socknick($1)
- set %gserv %server_ [ $+ [ $socknick($1) ] ]
- ;sw $1 ERROR :Closing Link: Ping timeout
- set %quitraison_ [ $+ [ $1 ] ] Quit: Ping Timeout
- sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ $1 ] ]
- sockclose2 $1
- gquit $1 Ping Timeout
- ;.timerkill $+ $1 -m 1 200 /sockclose $1
- }
- }
- }
- alias applymodesonrequest {
- if ($2) {
- unset %endmodes
- set %tnick $socknick($1)
- set %tmodes $2
- ;Chargement des possibles flags de l'users
- set %tflags %oline. [ $+ [ %ircop_ [ $+ [ %tnick ] ] ] ] [ $+ [ .flags ] ]
-
- ;Analyse des modes qu'envoit le client...
- ;On regroupe les modes par signe (grâce à $positivemodes et $negativemodes)
- set %tmodes.pos $positivemodes(%tmodes)
- set %tmodes.neg $negativemodes(%tmodes)
- var %i 1
- set %len $len(%tmodes)
- unset %tumodes
- set %tumodes %umodes_ [ $+ [ %tnick ] ]
- while (%i <= %len) {
- set %tlettre $mid(%tmodes,%i,1)
- if (%tlettre isincs %tmodes.pos) {
- set %signe $chr(43)
- }
- elseif (%tlettre isincs %tmodes.neg) {
- set %signe $chr(45)
- }
- if ((%tlettre != $chr(43)) && (%tlettre != $chr(45))) {
- if (%signe == $chr(43)) {
- if (!$3) {
- if (%tlettre isincs %tumodes) {
- sw $1 : $+ %me 525 %tnick :You already have this umode ( $+ %tlettre $+ )
- goto endwhileumode
- }
- }
- }
- if (%signe == $chr(45)) {
- if (!$3) {
- if (%tlettre !isincs %tumodes) {
- sw $1 : $+ %me 526 %tnick :You don't have this umode ( $+ %tlettre $+ )
- goto endwhileumode
- }
- }
- }
- }
- ;Commençons par nous occuper des modes que tout le monde peut se foutre
- if ((%tlettre === s) || (%tlettre === i) || (%tlettre === w) || (%tlettre === R) || (%tlettre === V)) {
- if (%tlettre !== s) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- if (%tlettre === s) {
- if ($3) {
- set %tsnomask $3
- set %tsnomask.pos $positivemodes(%tsnomask)
- set %tsnomask.neg $negativemodes(%tsnomask)
- ;<- :irc.G-SERVER.net 008 G-FACTION :Server notice mask (+cfvGqs)
- var %o 1
- set %len2 $len(%tsnomask)
- while (%o <= %len2) {
- set %ttsnomask $mid(%tsnomask,%o,1)
- if (%ttsnomask isincs %tsnomask.pos) {
- set %signe2 $chr(43)
- }
- elseif (%ttsnomask isincs %tsnomask.neg) {
- set %signe2 $chr(45)
- }
- set %tttsnomask %snomask_ [ $+ [ %tnick ] ]
- ;sw $1 : $+ %me 999 %tnick :tttsnomask: %tttsnomask && ttsnomask: %ttsnomask
- if ((%ttsnomask != $chr(43)) && (%ttsnomask != $chr(45))) {
- if (%signe2 == $chr(43)) {
- if (%ttsnomask isincs %tttsnomask) {
- sw $1 : $+ %me 527 %tnick :You already have this snomask ( $+ %ttsnomask $+ )
- goto endwhilesnomask
- }
- }
- elseif (%signe2 == $chr(45)) {
- if (%ttsnomask !isincs %tttsnomask) {
- sw $1 : $+ %me 528 %tnick :You don't have this snomask ( $+ %ttsnomask $+ )
- goto endwhilesnomask
- }
- }
- }
- if ((%ttsnomask === k) || (%ttsnomask === s)) {
- ;<- :irc.G-SERVER.net 008 G-FACTION :Server notice mask (+cfvGqs)
- ;sw $1 : $+ %me 999 %tnick :haha1
- snomasksrv %signe2 %tnick %ttsnomask
- sw $1 : $+ %me 008 %tnick :Server notice mask ( $+ $chr(43) $+ %snomask_ [ $+ [ %tnick ] ] $+ )
- }
- elseif ((%ttsnomask === c) || (%ttsnomask === j) || (%ttsnomask === n) || (%ttsnomask === q) || (%ttsnomask === v) || (%ttsnomask === G) || (%ttsnomask === F) || (%ttsnomask === o)) {
- if (%ttsnomask !== F) {
- if (o isin %tumodes) {
- snomasksrv %signe2 %tnick %ttsnomask
- sw $1 : $+ %me 008 %tnick :Server notice mask ( $+ $chr(43) $+ %snomask_ [ $+ [ %tnick ] ] $+ )
- }
- else {
- sw $1 : $+ %me 523 %tnick :Permission Denied - You do not have the correct IRC Operator privileges for this snomask
- }
- }
- else {
- if (o isincs %tumodes) {
- snomasksrv %signe2 %tnick %ttsnomask
- sw $1 : $+ %me 008 %tnick :Server notice mask ( $+ $chr(43) $+ %snomask_ [ $+ [ %tnick ] ] $+ )
- }
- else {
- sw $1 : $+ %me 523 %tnick :Permission Denied - You do not have the correct IRC Operator privileges for this snomask
- }
- }
- }
- else {
- if ((%ttsnomask != $chr(43)) && (%ttsnomask != $chr(45))) {
- sw $1 : $+ %me 524 %tnick : $+ %ttsnomask : Unknown Snomask
- }
- }
- :endwhilesnomask
- inc %o
- }
- }
- if (%signe == $chr(43)) {
- if (s !isincs %tumodes) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- }
- if (%signe == $chr(45)) {
- if (s isincs %tumodes) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- }
- }
- }
- elseif (%tlettre === x) {
- if (%signe == $chr(43)) {
- set %host_ [ $+ [ $1 ] ] %host.bak_ [ $+ [ $1 ] ]
- }
- elseif (%signe == $chr(45)) {
- set %host_ [ $+ [ $1 ] ] %vraiehost_ [ $+ [ $1 ] ]
- }
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- elseif (%tlettre === B) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- botmotd $1
- }
- ;Puis, on s'occupe des modes qui vont demander de se référer à la o:line de l'utilisateur.
- elseif ((%tlettre === p) || (%tlettre === H) || (%tlettre === W) || (%tlettre === N) || (%tlettre === o) || (%tlettre === O) || (%tlettre === A) || (%tlettre === C) || (%tlettre === a) || (%tlettre === g)) {
- if (o isin %tumodes) {
- if (%tlettre === N) {
- if (N isincs %tflags) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- else {
- sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
- }
- }
- elseif (%tlettre === o) {
- if (O isincs %tflags) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- else {
- sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
- }
- }
- elseif (%tlettre === O) {
- if (o isincs %tflags) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- else {
- sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
- }
- }
- elseif (%tlettre === A) {
- if (A isincs %tflags) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- else {
- sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
- }
- }
- elseif (%tlettre === C) {
- if (C isincs %tflags) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- else {
- sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
- }
- }
- elseif (%tlettre === a) {
- if (a isincs %tflags) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- else {
- sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
- }
- }
- elseif (%tlettre === g) {
- if (g isincs %tflags) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- else {
- sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
- }
- }
- }
- else {
- ;Note : +raw.txt
- sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
- }
- }
- elseif (%tlettre === h) {
- if (h isincs %tflags) {
- set %endmodes %endmodes $+ %signe $+ %tlettre
- umodesrv %signe %tnick %tlettre
- }
- else {
- sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
- }
- }
-
-
- /*Memo :
- Faire //mode $me -o
- Revient à faire : -oOhaANW
- Ca n'enleve naturellement pas ceux-ci : +wgsx
- */
-
- else {
- if ((%tlettre != $chr(45)) && (%tlettre != $chr(43))) {
- sw $1 : $+ %me 501 %tnick : $+ %tlettre : Unknown MODE flag
- }
- }
- :endwhileumode
- inc %i
- }
- if (%endmodes) {
- sw $1 : $+ %tnick MODE %tnick : $+ $reconvmodes(%endmodes)
- sendmultiserver : $+ %tnick MODE %tnick : $+ $reconvmodes(%endmodes)
- }
- }
- }
-
- alias applyumodesoline {
- set %tnick $socknick($1)
- unset %ttumodes
- set %tumodes %oline. [ $+ [ %ircop_ [ $+ [ %tnick ] ] ] ] [ $+ [ .flags ] ]
- if (o isincs %tumodes) {
- set %ttumodes %ttumodes $+ O
- }
- if (O isincs %tumodes) {
- set %ttumodes %ttumodes $+ o
- }
- set %ttumodes %ttumodes $+ $replacecs(%tumodes,a,a,A,A,N,N,C,C,g,g,h,h,w,w,R,,D,,n,,K,,G,,k,,b,,B,,t,,z,,Z,,v,,H,,W,,r,)
- umodesrv $chr(43) %tnick %ttumodes
- sw $1 : $+ %tnick MODE %tnick : $+ $chr(43) $+ %ttumodes
- }
-
- alias gopen {
- ;made by G-FACTION
- var %handle $+(FILE::,$rand($calc($ticks/4*2/5),$ticks))
- .fopen %handle $1
- if ($fopen(%handle).err) { .fclose %handle | return 0 }
- else { return %handle }
- }
-
- alias botmotd {
- if ($1) {
- if ($exists(%botmotdfile)) {
- set %botmotdnick $socknick($1)
- sw $1 : $+ %me NOTICE %botmotdnick :- %me Bot Message Of The Day -
- var %file $gopen(%botmotdfile)
- while ($fread(%file)) {
- sw $1 : $+ %me NOTICE %botmotdnick :- $+ $ifmatch
- }
- .fclose %file
- sw $1: $+ %me NOTICE %botmotdnick :End of /BOTMOTD command.
- }
- else {
- sw $1 : $+ %me NOTICE %botmotdnick :BOTMOTD File not found
- }
- }
- .fclose %file
- }
-
- alias umodesrv {
- if ($2) {
- if ($1 == $chr(43)) {
- set %tumodes $removecs(%umodes_ [ $+ [ $2 ] ],$3)
- set %umodes_ [ $+ [ $2 ] ] %tumodes $+ $3
- }
- elseif ($1 == $chr(45)) {
- set %umodes_ [ $+ [ $2 ] ] $removecs(%umodes_ [ $+ [ $2 ] ],$3)
- }
- }
- }
-
- alias snomasksrv {
- ;signe nick snomask
- if ($2) {
- if ($1 == $chr(43)) {
- set %tsnomask2 $removecs(%snomask_ [ $+ [ $2 ] ],$3)
- set %snomask_ [ $+ [ $2 ] ] %tsnomask2 $+ $3
- }
- elseif ($1 == $chr(45)) {
- set %snomask_ [ $+ [ $2 ] ] $removecs(%snomask_ [ $+ [ $2 ] ],$3)
- }
- }
- }
-
- alias positivemodes {
- unset %positivemodes
- if (($left($1,1) != $chr(45)) && ($left($1,1) != $chr(43))) {
- set %tmodes + $+ $1-
- }
- else { set %tmodes $1- }
- set %tmodes - $+ %tmodes
- if ($1) {
- var %i 1
- set %len $len($1-)
- set %tokenmodes $gettok(%tmodes,0,43)
- while ($calc(%i + 1) <= %tokenmodes) {
- set %positivemodes %positivemodes $+ $deltok($gettok(%tmodes,$calc(%i + 1),43),2-,45)
- inc %i
- }
- }
- return %positivemodes
- }
-
- alias negativemodes {
- unset %negativemodes
- if (($left($1,1) != $chr(45)) && ($left($1,1) != $chr(43))) {
- set %tmodes + $+ $1-
- }
- else { set %tmodes $1- }
- set %tmodes + $+ %tmodes
- if ($1) {
- var %i 1
- set %len $len($1-)
- set %tokenmodes $gettok(%tmodes,0,45)
- while ($calc(%i + 1) <= %tokenmodes) {
- set %negativemodes %negativemodes $+ $deltok($gettok(%tmodes,$calc(%i + 1),45),2-,43)
- inc %i
- }
- }
- return %negativemodes
- }
-
- alias isatleast {
- ;$isatleast(mode,nick,chan)
- ; 1 2 3
- ;Exemple : $isatleast(h,G-FACTION,#scripts) va retourner $true si je suis op, halfop, ou owner :p
- if ($3) {
- set %chanfile $chanfile($3)
- if (!$exists(%chanfile)) {
- goto isatleastend
- }
- var %file $gopen(%chanfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %is $left(%r,1)
- set %tnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %is rien
- set %tnick %r
- }
- if (%tnick == $2) {
- set %iss %is
- }
- }
- .fclose %file
- :isatleastend
- if ($1 === o) {
- if ((%iss == $chr(64)) || (%iss == $chr(126)) || (%iss == $chr(38))) {
- set %isatleast yes
- }
- else {
- set %isatleast no
- }
- }
- elseif ($1 == h) {
- if ((%iss == $chr(64)) || (%iss == $chr(126)) || (%iss == $chr(37)) || (%iss == $chr(38))) {
- set %isatleast yes
- }
- else {
- set %isatleast no
- }
- }
- elseif ($1 == v) {
- if ((%iss == $chr(64)) || (%iss == $chr(126)) || (%iss == $chr(37)) || (%iss == $chr(43)) || (%iss == $chr(38))) {
- set %isatleast yes
- }
- else {
- set %isatleast no
- }
- }
- elseif ($1 == q) {
- if (%iss == $chr(126)) {
- set %isatleast yes
- }
- else {
- set %isatleast no
- }
- }
- elseif ($1 == a) {
- if ((%iss == $chr(38)) |- (%iss == $chr(126))) {
- set %isatleast yes
- }
- else {
- set %isatleast no
- }
- }
- if (%isatleast == yes) {
- return $true
- }
- else {
- return $false
- }
- }
- }
-
- alias strongerthan {
- ;$strongerthan(a,q) = $false (a pas plus fort que q)
- if ($2) {
- if ($1 == q) {
- return $true
- }
- elseif ($1 == a) {
- if ($2 == q) {
- return $false
- }
- else {
- return $true
- }
- }
- elseif ($1 == o) {
- if (($2 == a) || ($2 == q)) {
- return $false
- }
- else {
- return $true
- }
- }
- elseif ($1 == h) {
- if (($2 == o) || ($2 == a) || ($2 == q)) {
- return $false
- }
- else {
- return $true
- }
- }
- elseif ($1 == v) {
- if (($2 == h) || ($2 == o) || ($2 == a) || ($2 == q)) {
- return $false
- }
- else {
- return $true
- }
- }
- elseif ($1 == NULL) {
- if ($2 == NULL) {
- return $true
- }
- else {
- return $false
- }
- }
- }
- }
-
- alias nfochanfile {
- if ($1) {
- return $mircdir $+ System\ $+ $1 $+ .nfo
- }
- }
-
- alias chmodestxsrv {
- ;chmodesrv +- Chan Mode
- if ($3) {
- if ($1 == $chr(43)) {
- set %m $replacecs($3,N,1,S,3,C,4,T,5)
- writeini -n $nfochanfile($2) STXM %m on
- }
- elseif ($1 == $chr(45)) {
- set %m $replacecs($3,N,1,S,3,C,4,T,5)
- writeini -n $nfochanfile($2) STXM %m off
- }
- }
- }
-
- alias chmodedynsrv {
- ;chmodedynsrv +- #chan k lepass
- ; 1 2 3 4
- echo -a 10chmodedynsrv $1-
- if ($3) {
- if ($1 == $chr(43)) {
- set %m $replacecs($3,L,2)
- writeini -n $nfochanfile($2) DYNM %m on
- writeini -n $nfochanfile($2) DYNM %m $+ .arg $4
- }
- elseif ($1 == $chr(45)) {
- set %m $replacecs($3,L,2)
- writeini -n $nfochanfile($2) DYNM %m off
- }
- }
- }
-
- alias sendchannel {
- ;sendchannel #chan Le message... ^^
- if ($2) {
- var %o 0
- if (!$exists($chanfile($1))) {
- goto sendchannelend
- }
- var %file $gopen($chanfile($1))
- while ($fread(%file)) {
- inc %o
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %tempnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %tempnick %r
- }
- if (($sock(%sockname_ [ $+ [ %tempnick ] ])) && (%server_ [ $+ [ %tempnick ] ] == %me)) {
- ;echo -a 7sw %sockname_ [ $+ [ %tempnick ] ] $2-
- sw %sockname_ [ $+ [ %tempnick ] ] $2-
- }
- else {
- if (!$sock($+(gserv.,$passerelle(%server_ [ $+ [ %tempnick ] ])))) {
- ;Ghost repéré...
- echo @sr 3Ghost repéré, ligne %o de $chanfile($1) supprimée ( $+ $read($chanfile($1),%o) $+ )
- write -dl $+ %o $chanfile($1)
- }
- }
- }
- .fclose %file
- :sendchannelend
- }
- }
-
- alias chmodestatussrv {
- ;chmodestatussrv +- Chan Mode Personne
- ; 1 2 3 4
- echo @sr 13Entering chmodestatussrv function
- echo @sr 131: $1 2: $2 3: $3 4: $4
- if ($4) {
- unset %laligne
- var %i 0
- var %file $gopen($chanfile($2))
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- ;echo -a 2 $+ %r
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %tempnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %tempnick %r
- }
- if (%tempnick == $4) {
- ;echo -a 4Personne repérée...
- set %laligne %i
- echo @sr 13Laligne: %laligne
- echo @sr 13Personne: %tempnick
- }
- }
- .fclose %file
- if (%laligne) {
- echo @sr 13chmodestatussrv : delete line : %laligne in $chanfile($2)
- write -dl $+ %laligne $chanfile($2)
- }
- if ($1 == $chr(43)) {
- set %tempstsm $readini($nfochanfile($2),STSM,$4)
- set %tempstsm $removecs(%tempstsm,$3)
- set %tempstsm %tempstsm $+ $3
- writeini -n $nfochanfile($2) STSM $4 %tempstsm
- echo @sr 13write $chanfile($2) $replace($strongermode(%tempstsm),v,$chr(43),h,$chr(37),o,$chr(64),q,$chr(126),a,$chr(38)) $+ $4
- write $chanfile($2) $replace($strongermode(%tempstsm),v,$chr(43),h,$chr(37),o,$chr(64),q,$chr(126),a,$chr(38)) $+ $4
- }
- elseif ($1 == $chr(45)) {
- set %tempstsm $readini($nfochanfile($2),STSM,$4)
- set %tempstsm $removecs(%tempstsm,$3)
- if (!%tempstsm) { set %tempstsm z }
- writeini -n $nfochanfile($2) STSM $4 %tempstsm
- set %tstrongermode $strongermode(%tempstsm)
- if (%tstrongermode != NULL) {
- echo @sr 13write $chanfile($2) $replace(%tstrongermode,v,$chr(43),h,$chr(37),o,$chr(64),q,$chr(126),a,$chr(38),z,) $+ $4
- write $chanfile($2) $replace(%tstrongermode,v,$chr(43),h,$chr(37),o,$chr(64),q,$chr(126),a,$chr(38),z,) $+ $4
- }
- else {
- echo @sr 13write $chanfile($2) $4
- write $chanfile($2) $4
- }
- }
- }
- }
-
- alias strongermode {
- ;Alias définissant le plus fort mode de ceux proposés, sans l'ordre 'qaohv'
- if ($1) {
- unset %sm
- if ((v isincs $1) && (h !isincs $1) && (o !isincs $1) && (a !isincs $1) && (q !isincs $1)) {
- set %sm v
- }
- elseif ((h isincs $1) && (o !isincs $1) && (a !isincs $1) && (q !isincs $1)) {
- set %sm h
- }
- elseif ((o isincs $1) && (a !isincs $1) && (q !isincs $1)) {
- set %sm o
- }
- elseif ((a isincs $1) && (q !isincs $1)) {
- set %sm a
- }
- elseif (q isincs $1) {
- set %sm q
- }
- else {
- set %sm NULL
- }
- return %sm
- }
- }
-
- alias reconvmodes {
- if ($1) {
- var %i 1
- unset %endstr
- unset %derniersigne
- while (%i <= $len($1)) {
- set %rmode $mid($1,%i,1)
- if ((%rmode == $chr(43)) || (%rmode == $chr(45))) {
- if (%rmode != %derniersigne) {
- set %derniersigne %rmode
- set %endstr %endstr $+ %rmode
- }
- goto finwhile
- }
- else {
- set %endstr %endstr $+ %rmode
- }
- :finwhile
- inc %i
- }
- return %endstr
- }
- }
-
- alias chbanlist {
- ;chbanlist %chsigne %chchan $quelargument(%i,%chmodes) %chnick $ctime extension(bl par exemple)
- ;chbanlist + #G-FACTION *lol*!*@* G-FACTION 1108716436 bl
- ; 1 2 3 4 5 6
- echo -a 13 $+ $1-
- if ($6) {
- echo -a haha
- unset %laligne
- set %banfile $mirc $+ System\ $+ $2 $+ $chr(46) $+ $6
- echo -a 3 $+ %banfile
- if (!$exists(%banfile)) {
- echo -a mwahaa
- goto chbanlistend
- }
- echo -a 4KJHBZRF
- var %i 0
- if (($3 == $chr(42)) || ($3 == $chr(33)) || ($3 == $chr(64))) {
- echo -a !!!1
- set %bmask *!*@*
- }
- elseif (($chr(64) !isin $3) && ($chr(33) !isin $3) && ($chr(42) !isin $3)) {
- echo -a !!!2
- set %bmask $3 $+ !*@*
- echo -a %bmask :)
- }
- elseif (($chr(64) !isin $3) && ($chr(33) !isin $3)) {
- echo -a !!!5
- set %bmask $3 $+ !*@*
- }
- else {
- echo -a !!!4
- set %bmask $3
- }
- var %file $gopen(%banfile)
- while ($fread(%file)) {
- inc %i
- ;set %r $read(%banfile,n,%i)
- set %r $ifmatch
- echo -a $gettok(%r,1,32) == %bmask
- if ($gettok(%r,1,32) == %bmask) {
- set %laligne %i
- }
- }
- .fclose %file
- :chbanlistend
- if (%laligne) {
- if ($1 == $chr(43)) {
- goto chbanlistend2
- }
- else {
- write -dl $+ %laligne %banfile
- }
- }
- if ($1 == $chr(43)) {
- if (%bmask != ERROR) {
- write %banfile %bmask $4 $5
- ;<- :G-FACTION!~G-FACTION@EpiK-5A393E5B.fbx.proxad.net MODE #g-faction +b pa!*@*
- echo -a sendchannel $2 : $+ $fullhost(%sockname_ [ $+ [ $4 ] ]) MODE $2 $1 $+ $iif($6 == bl,b,e) %bmask
- sendchannel $2 : $+ $fullhost(%sockname_ [ $+ [ $4 ] ]) MODE $2 $1 $+ $iif($6 == bl,b,e) %bmask
- }
- else {
- if ($6 == bl) {
- set %mot ban
- }
- elseif ($6 == el) {
- set %mot exception
- }
- sw %sockname_ [ $+ [ $4 ] ] : $+ %me 531 $4 :Invalid %mot mask ( $+ $3 $+ )
- halt
- }
- }
- else {
- if (%laligne) {
- sendchannel $2 : $+ $fullhost(%sockname_ [ $+ [ $4 ] ]) MODE $2 $1 $+ $iif($6 == bl,b,e) %bmask
- }
- }
- :chbanlistend2
- }
- else { echo -a 4!!!!!!!!!!!!!!!!!!!!!!!!!!! }
- }
-
- alias banfile {
- if ($1) {
- return $mircdir $+ System\ $+ $1 $+ .bl
- }
- }
-
- alias exceptfile {
- if ($1) {
- return $mircdir $+ System\ $+ $1 $+ .el
- }
- }
-
- alias zline.add {
- ;zline.add host $ctime timetoexpire host_zlineur raison
- ; 1 2 3 4 5
- if ($5) {
- write $linesfile Z $1-
- }
- }
-
- alias zline.del {
- if ($1) {
- var %i 0
- set %zfile $linesfile
- if (!$exists(%zfile)) {
- halt
- }
- unset %zline
- unset %r
- var %file $gopen(%zfile)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if ($gettok(%r,1,32) == Z) {
- if ($gettok(%r,2,32) == $1) {
- write -dl $+ %i %zfile
- break
- }
- }
- inc %i
- }
- .fclose %file
- }
- }
-
- alias zline.infos {
- if ($1) {
- set %zfile $linesfile
- if (!$exists(%zfile)) {
- goto zlineinfosend
- }
- unset %zline
- unset %zinfos
- var %file $gopen(%zfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if ($gettok(%r,1,32) == Z) {
- if ($gettok(%r,2,32) == $1) {
- set %zinfos $gettok(%r,3-,32)
- }
- }
- }
- .fclose %file
- if (%zinfos) {
- return %zinfos
- }
- }
- :zlineinfosend
- }
-
- alias quelargument {
- ;$quelargument(numero,modes)
- ; 1 2
- ;+oooo Nick1 Nick2 Nick3 Nick4
- ;On veut savoir quel est l'argument du 3ème 'o' par exemple. Ici : Nick3
- var %i 1
- set %qlen $len($2)
- unset %args
- unset %quelargument
- while (%i <= %qlen) {
- set %qmode $mid($2,%i,1)
- if (%qmode isincs aqhovbeklL) {
- ;Si le mode doit comporter un argument
- ;On incrémente la variable qui compte le nombre d'args
- inc %args
- }
- if (%i == $1) {
- set %quelargument $gettok($2,$calc(%args + 1),32)
- }
- inc %i
- }
- return %quelargument
- }
-
- alias sendbanlist {
- ;sendbanlist sockname chan
- ; 1 2
- if ($2) {
- set %blnick $socknick($1)
- set %banfile $banfile($2)
- if (!$exists(%banfile)) {
- goto sendbanlistend
- }
- var %file $gopen(%banfile)
- while ($fread(%file)) {
- set %r $ifmatch
- sw $1 : $+ %me 367 %blnick $2 $gettok(%r,1-3,32)
- }
- .fclose %file
- :sendbanlistend
- sw $1 : $+ %me 368 %blnick $2 :End of Channel Ban List
- }
- }
-
- alias sendexceptlist {
- ;sendbanlist sockname chan
- ; 1 2
- if ($2) {
- set %exnick $socknick($1)
- set %exceptfile $exceptfile($2)
- if (!$exists(%exceptfile)) {
- goto sendexceptlistend
- }
- set %file $gopen(%exceptfile)
- while ($fread(%file)) {
- set %r $ifmatch
- sw $1 : $+ %me 348 %exnick $2 $gettok(%r,1-3,32)
- }
- .fclose %file
- :sendexceptlistend
- sw $1 : $+ %me 349 %exnick $2 :End of Channel Exception List
- }
- }
-
- alias banalreadyexists {
- if ($3) {
- set %banfile $mircdir $+ System\ $+ $1 $+ . $+ $3
- set %bae $false
- if (!$exists(%banfile)) {
- goto banalreadyexistsend
- }
- set %file $gopen(%banfile)
- while ($fread(%file)) {
- set %read $ifmatch
- if ($gettok(%read,1,32) == $2) {
- set %bae $true
- }
- }
- .fclose %file
- :banalreadyexistsend
- return %bae
- }
- }
-
- alias applychmodesonrequest {
- ;applychmodesonrequest Sockname Chan Modes-
- ;
- ; 1 2 3-
- if ($3) {
- ;$sockname $+ $chr(96) $+ %me $2-
- set %tsock $gettok($1,1,96)
- set %samode $false
- if ($gettok($1,2,96)) {
- set %chnick $ifmatch
- set %samode $true
- }
- else {
- set %chnick $socknick(%tsock)
- }
- set %chchan $2
- set %chmodes $3-
- set %chmodes.pos $positivemodes($gettok(%chmodes,1,32))
- set %chmodes.neg $negativemodes($gettok(%chmodes,1,32))
- var %i 1
- unset %endchmodes
- unset %endstatusmodes
- unset %enddynmodes
- unset %chargs
- set %chlen $len($3)
- set %operoverride $false
- if (%ircop_ [ $+ [ %chnick ] ]) {
- set %tflags %oline. [ $+ [ %ircop_ [ $+ [ %chnick ] ] ] ] [ $+ [ .flags ] ]
- if (v isincs %tflags) {
- set %operoverride $true
- }
- }
- while (%i <= %chlen) {
- set %chlettre $mid(%chmodes,%i,1)
- set %chlettre2 $replacecs($mid(%chmodes,%i,1),N,1,L,2,S,3,C,4,T,5)
- if ((%chlettre == $chr(43)) || (%chlettre == $chr(45))) {
- ;Alors il s'agit d'un + ou -
- goto endofchlettrewhile
- }
- if (%chlettre isincs %chmodes.pos) {
- set %chsigne $chr(43)
- }
- elseif (%chlettre isincs %chmodes.neg) {
- set %chsigne $chr(45)
- }
- ;Regroupons par type de mode
- if (%chlettre isincs icmnprstACMKNOQRSVT) {
- ;Ce sont des static modes
- ;Regroupons par ordre de privileges requis
- if (%chsigne == $chr(43)) {
- if ($readini($nfochanfile(%chchan),STXM,%chlettre2) == on) {
- goto endofchlettrewhile
- }
- }
- elseif (%chsigne == $chr(45)) {
- if ($readini($nfochanfile(%chchan),STXM,%chlettre2) != on) {
- goto endofchlettrewhile
- }
- }
- if (%chlettre isincs imnt) {
- ;Ce sont les modes où il faut au moins être halfop pour pouvoir les mettre
- if (($isatleast(h,%chnick,%chchan)) || (%operoverride) || (%samode)) {
- set %endchmodes %endchmodes $+ %chsigne $+ %chlettre
- chmodestxsrv %chsigne %chchan %chlettre
- }
- else {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- }
- elseif (%chlettre isincs scpoCMKNQRSVT) {
- ;Modes où il faut être au moins op
- if (($isatleast(o,%chnick,%chchan)) || (%operoverride) || (%samode)) {
- if (%chsigne == $chr(43)) {
- if (%chlettre === s) {
- if (p isincs $chmodes(%chchan)) {
- chmodestxsrv $chr(45) %chchan p
- set %endchmodes %endchmodes $+ $chr(45) $+ p
- }
- }
- elseif (%chlettre === p) {
- if (s isincs $chmodes(%chchan)) {
- chmodestxsrv $chr(45) %chchan s
- set %endchmodes %endchmodes $+ $chr(45) $+ s
- }
- }
- }
- set %endchmodes %endchmodes $+ %chsigne $+ %chlettre
- chmodestxsrv %chsigne %chchan %chlettre
- }
- else {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- }
- elseif (%chlettre === O) {
- ;Mode uniquement appliquable par les IRCops
- if ((o isin %umodes_ [ $+ [ %chnick ] ]) || (%samode)) {
- set %endchmodes %endchmodes $+ %chsigne $+ %chlettre
- chmodestxsrv %chsigne %chchan %chlettre
- }
- else {
- sw %tsock : $+ %me 529 %chnick %chchan :Opers Only mode (+O) can only be set by IRC Operators.
- }
- }
- elseif (%chlettre === A) {
- if ((a isin %umodes_ [ $+ [ %chnick ] ]) || (N isincs %umodes_ [ $+ [ %chnick ] ]) || (%samode)) {
- set %endchmodes %endchmodes $+ %chsigne $+ %chlettre
- chmodestxsrv %chsigne %chchan %chlettre
- }
- else {
- sw %tsock : $+ %me 530 %chnick %chchan :Admins Only mode (+A) can only be set by Administrators.
- }
- }
- }
- elseif (%chlettre isincs vhoaq) {
- ;Ce sont des status modes
- if ($quelargument(%i,%chmodes)) {
- if (%chsigne == $chr(43)) {
- if (%chlettre isincs $readini($nfochanfile(%chchan),STSM,$quelargument(%i,%chmodes))) {
- goto endofchlettrewhile
- }
- }
- elseif (%chsigne == $chr(45)) {
- if (%chlettre !isincs $readini($nfochanfile(%chchan),STSM,$quelargument(%i,%chmodes))) {
- goto endofchlettrewhile
- }
- }
- write haha.txt juste avant le $eval($ison,0)
- if (($ison(%chnick,%chchan)) || (%samode)) {
- write haha.txt juste avant le $eval($ison,0) 2
- if (!$ison($quelargument(%i,%chmodes),%chchan)) {
- write haha.txt dans le ison 2 !
- ;<- :besancon3.fr.epiknet.org 401 G-FACTION mdr :No such nick/channel
- if (!%samode) {
- sw %tsock : $+ %me 401 %chnick $quelargument(%i,%chmodes) :No such nick/channel
- }
- goto hahaha
- }
- }
- else {
- ;<- :besancon3.fr.epiknet.org 482 G-FACTION #lol :You're not channel operator
- if (!%samode) {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- goto hahaha
- }
- else {
- }
- if (%chlettre === v) {
- if (($isatleast(h,%chnick,%chchan)) || (%operoverride) || (%samode)) {
- set %endstatusmodes %endstatusmodes $+ %chsigne $+ %chlettre
- chmodestatussrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
- set %chargs %chargs $quelargument(%i,%chmodes)
- }
- else {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- }
- elseif (%chlettre === h) {
- if (($isatleast(o,%chnick,%chchan)) || (%operoverride) || (%samode)) {
- set %endstatusmodes %endstatusmodes $+ %chsigne $+ %chlettre
- chmodestatussrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
- set %chargs %chargs $quelargument(%i,%chmodes)
- }
- else {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- }
- elseif (%chlettre === o) {
- if (($isatleast(o,%chnick,%chchan)) || (%operoverride) || (%samode)) {
- set %endstatusmodes %endstatusmodes $+ %chsigne $+ %chlettre
- chmodestatussrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
- set %chargs %chargs $quelargument(%i,%chmodes)
- }
- else {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- }
- elseif ((%chlettre === a) || (%chlettre === q)) {
- if (($isatleast(q,%chnick,%chchan)) || (%operoverride) || (%samode)) {
- set %endstatusmodes %endstatusmodes $+ %chsigne $+ %chlettre
- chmodestatussrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
- set %chargs %chargs $quelargument(%i,%chmodes)
- }
- else {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- }
- :hahaha
- }
- }
- elseif (%chlettre isincs beklL) {
- ;Alors ce sont des dynamic modes
- if (%chlettre === e) {
- set %format el
- }
- elseif (%chlettre === b) {
- set %format bl
- }
- if (%chlettre !isincs eb) {
- if (%chsigne == $chr(43)) {
- if ($readini($nfochanfile(%chchan),DYNM,%chlettre2) == on) {
- if ($readini($nfochanfile(%chchan),DYNM,%chlettre2 $+ .arg) == $quelargument(%i,%chmodes)) {
- goto endofchlettrewhile
- }
- }
- }
- elseif (%chsigne == $chr(45)) {
- if ($readini($nfochanfile(%chchan),DYNM,%chlettre2) != on) {
- goto endofchlettrewhile
- }
- }
- }
- if ((%chlettre === b) || (%chlettre === e)) {
- ;Le fichier de banlist d'un canal est #canal.bl
- ;Le format dans le fichier : Mask Banner ctime
- if (!$len($quelargument(%i,%chmodes))) {
- if (%chlettre === b) {
- sendbanlist %tsock %chchan
- goto endofchlettrewhile
- }
- elseif (%chlettre === e) {
- sendexceptlist %tsock %chchan
- goto endofchlettrewhile
- }
- }
- if (($isatleast(h,%chnick,%chchan)) || (%operoverride) || (%samode)) {
- if ($len($quelargument(%i,%chmodes))) {
- ;set %enddynmodes %enddynmodes $+ %chsigne $+ %chlettre
- chbanlist %chsigne %chchan $quelargument(%i,%chmodes) %chnick $ctime %format
- ;set %chargs %chargs $quelargument(%i,%chmodes)
- }
- }
- else {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- }
- elseif ((%chlettre === k) || (%chlettre === l) || (%chlettre === L)) {
- if (%chsigne == $chr(43)) {
- if (!$quelargument(%i,%chmodes)) {
- goto endofchlettrewhile
- }
- }
- if (%chsigne == $chr(43)) {
- if (%chlettre === L) {
- if (l isincs $chmodes(%chchan)) {
- ;974 G-FACTION L :+l must be set
- if (!$correctchanname($quelargument(%i,%chmodes))) {
- ;403 G-FACTION l :No such channel
- sw $1 : $+ %me 403 %chnick $quelargument(%i,%chmodes) :No such channel
- goto endofchlettrewhile
- }
- }
- else {
- sw $1 : $+ %me 974 %chnick L :+l must be set
- goto endofchlettrewhile
- }
- }
- }
- if (%chlettre === k) {
- if (($isatleast(h,%chnick,%chchan)) || (%operoverride) || (%samode)) {
- set %enddynmodes %enddynmodes $+ %chsigne $+ %chlettre
- chmodedynsrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
- set %chargs %chargs $quelargument(%i,%chmodes)
- }
- else {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- }
- elseif (%chlettre === l) {
- if (($isatleast(o,%chnick,%chchan)) || (%operoverride) || (%samode)) {
- set %enddynmodes %enddynmodes $+ %chsigne $+ %chlettre
- chmodedynsrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
- set %chargs %chargs $quelargument(%i,%chmodes)
- }
- else {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- }
- elseif (%chlettre === L) {
- if (($isatleast(q,%chnick,%chchan)) || (%operoverride) || (%samode)) {
- set %enddynmodes %enddynmodes $+ %chsigne $+ %chlettre
- chmodedynsrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
- set %chargs %chargs $quelargument(%i,%chmodes)
- }
- else {
- sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
- }
- }
- }
- }
- else {
- ;<- :besancon.fr.epiknet.org 472 G-FACTION ^ :is unknown mode char to me
- sw %tsock : $+ %me 472 %chnick %chlettre :is unknown mode char to me
- }
- :endofchlettrewhile
- inc %i
- }
- if (%endchmodes) {
- ;<- :irc.G-SERVER.net MODE #G-FACTION +i
- if (!%samode) {
- sendchannel %chchan : $+ $fullhost(%sockname_ [ $+ [ %chnick ] ]) MODE %chchan $reconvmodes(%endchmodes)
- sendmultiserver : $+ %chnick MODE %chchan $reconvmodes(%endchmodes)
- }
- else {
- sendchannel %chchan : $+ %me MODE %chchan $reconvmodes(%endchmodes)
- sendmultiserver : $+ %me MODE %chchan $reconvmodes(%endchmodes)
- }
- }
- if (%endstatusmodes) {
- if (!%samode) {
- sendchannel %chchan : $+ $fullhost(%sockname_ [ $+ [ %chnick ] ]) MODE %chchan $reconvmodes(%endstatusmodes) %chargs
- sendmultiserver : $+ %chnick MODE %chchan $reconvmodes(%endstatusmodes) %chargs
- }
- else {
- sendchannel %chchan : $+ %me MODE %chchan $reconvmodes(%endstatusmodes) %chargs
- sendmultiserver : $+ %me MODE %chchan $reconvmodes(%endstatusmodes) %chargs
- }
- }
- if (%enddynmodes) {
- if (!%samode) {
- echo -a fonction modes
- echo -a sendchannel %chchan : $+ $fullhost(%sockname_ [ $+ [ %chnick ] ]) MODE %chchan $reconvmodes(%enddynmodes) %chargs
- sendchannel %chchan : $+ $fullhost(%sockname_ [ $+ [ %chnick ] ]) MODE %chchan $reconvmodes(%enddynmodes) %chargs
- sendmultiserver : $+ %chnick MODE %chchan $reconvmodes(%enddynmodes) %chargs
- }
- else {
- sendchannel %chchan : $+ %me MODE %chchan $reconvmodes(%enddynmodes) %chargs
- sendmultiserver : $+ %me MODE %chchan $reconvmodes(%enddynmodes) %chargs
- }
- }
- }
- }
-
- alias verifyshunlines {
- if ($1) {
- var %lol $gettok($vraiefullhost($1),2,33)
- set %vffile $linesfile
- if (!$exists(%vffile)) {
- goto tend
- }
- var %file $gopen(%vffile)
- while ($fread(%file)) {
- set %r $ifmatch
- if ($gettok(%r,1,32) == s) {
- if ($gettok(%r,2,32) iswm %lol) {
- return $true
- }
- }
- }
- .fclose %file
- :tend
- return $false
- }
- }
-
-
- on *:sockread:gircd*: {
- sockread %sr
- echo @sr $sockname : %nick_of_sockname_ [ $+ [ $sockname ] ] :4 %sr
- tokenize 32 %sr
-
- if ($isreginserver($sockname)) {
- ;Les commandes diverses lorsqu'on a déjà passé la phase auth.
- if (($verifyshunlines($sockname)) || ($shunned($socknick($sockname)))) {
- if ($1 == PONG) {
- if ($2) {
- set %tpong $remove($2,$chr(58))
- if (%tpong == %ping_ [ $+ [ $sockname ] ]) {
- set %pongdonne_ [ $+ [ $sockname ] ] $true
- }
- }
- else {
- ;<- :besancon.fr.epiknet.org 409 G-FACTION :No origin specified
- sw $sockname : $+ %me 409 $socknick($sockname) :No origin specified
- }
- }
- elseif ($1 == ADMIN) {
- goto admin
- }
- goto toutefin
- }
- if ($1 == VERSION) {
- version $sockname
- }
- elseif ($1 == LUSERS) {
- lusers $sockname
- }
- elseif ($1 == MOTD) {
- motd $sockname
- }
- elseif ($1 == G) {
- if ($1 === G) {
- sw $sockname : $+ %me 999 $socknick($sockname) :<G-FACTION> bouh :þ ! Y te plait mon ircd ? :]
- }
- else {
- sw $sockname : $+ %me 371 $socknick($sockname) :Nan, pas /g, /G !!
- }
- }
- elseif ($1 == BOTMOTD) {
- botmotd $sockname
- }
- elseif ($1 == MODE) {
- unset %destnick
- set %tnick $socknick($sockname)
- /*
- MODE Nick +modes (+snomasks)
- MODE #channel +modes
- MODE #channel +modes Nick
- 1 2 3 4
- Ne pas se baser sur le nombre de tokens pour savoir de quel type de MODE il s'agit
- Il peut en y avoir plus genre avec "+lLk 1 #chan lemotdepasse"
- */
- if ($left($2,1) != $chr(35)) {
- /* On vérifie qu'il ne s'agit pas d'un channel, donc d'un usermode
- $chr(35) = #
- */
- ;Nick auquel on va appliquer le mode (en théorie le même nick que celui qui envoit la commande)
- set %destnick $2
- ;Si le nick ne s'applique pas le mode à lui même
- if (%destnick) {
- if ($3) {
- if (%tnick != %destnick) {
- sw $sockname : $+ %me 502 $socknick($sockname) :Can't change mode for other users
- }
- else {
- applymodesonrequest $sockname $3-
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) MODE :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) MODE :Not enough parameters
- }
- }
- else {
- if ($3) {
- ;Ce sont des chmodes
- ;applymodesonrequest sockname chan modes
- applychmodesonrequest $sockname $2 $3-
- }
- else {
- ;:besancon.fr.epiknet.org 324 G-FACTION #legoodies +ntr
- ;:besancon.fr.epiknet.org 329 G-FACTION #legoodies 1085037574
- sw $sockname : $+ %me 324 $socknick($sockname) $2 + $+ $chmodes($2)
- sw $sockname : $+ %me 329 $socknick($sockname) $2 $creationtime($2)
- }
- }
- }
- elseif ($1 == OPER) {
- if ($3) {
- if ($operexists($2)) {
- if ($goodoperhost($2,$fullhost($sockname))) {
- if ($goodoperpass($2,$3)) {
- set %ircop_ [ $+ [ $socknick($sockname) ] ] $2
- addircoplist $socknick($sockname)
- globops $socknick($sockname) $chr(91) $+ $2 $+ $chr(93) is now an IRCop
- sw $sockname : $+ $$socknick($sockname) MODE $socknick($sockname) : $+ $chr(43) $+ %opermodes
- umodesrv $chr(43) $socknick($sockname) %opermodes
- ;+cjkqvFG
- snomasksrv $chr(43) $socknick($sockname) %opersnomask
- sw $sockname : $+ %me 008 $socknick($sockname) :Server notice mask ( $+ %snomask_ [ $+ [ $socknick($sockname) ] ] $+ )
- sw $sockname : $+ %me 381 $socknick($sockname) :You are now an IRC Operator
- applyumodesoline $sockname
- }
- else {
- sw $sockname : $+ %me 464 $socknick($sockname) :Password incorrect
- globops Failed OPER attempt by $socknick($sockname) ( $+ $fullhost($sockname) $+ ) using UID $2 [FAILEDAUTH]
- }
- }
- else {
- sw $sockname : $+ %me 491 $socknick($sockname) :No O-lines for your host
- globops Failed OPER attempt by $socknick($sockname) ( $+ $fullhost($sockname) $+ ) [unknown oper]
- }
- }
- else {
- sw $sockname : $+ %me 491 $socknick($sockname) :No O-lines for your host
- globops Failed OPER attempt by $socknick($sockname) ( $+ $fullhost($sockname) $+ ) [unknown oper]
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) OPER :Not enough parameters
- }
- }
- elseif ($1 == WHOIS) {
- set %wtnick $socknick($sockname)
- unset %haha
- unset %tttt
- if ($chr(44) !isin $2) {
- if ($3) {
- if (%server_ [ $+ [ $remove($3,$chr(58)) ] ] == %me) {
- set %tttt $remove($3,$chr(58))
- }
- else {
- set %haha $true
- sw $+(gserv.,$passerelle(%server_ [ $+ [ $remove($3,$chr(58)) ] ])) : $+ %wtnick WHOIS $remove($3,$chr(58)) : $+ $remove($3,$chr(58))
- }
- }
- else {
- set %tttt $2
- }
- }
- if ($2) {
- set %nicks %tttt
- set %nbdnicks $gettok(%nicks,0,44)
- var %i 1
- while (%i <= %nbdnicks) {
- set %wnick $gettok(%nicks,%i,44)
- if ($isco(%wnick)) {
- sw $sockname : $+ %me 311 %tnick %wnick %identd_ [ $+ [ %wnick ] ] %host_ [ $+ [ %sockname_ [ $+ [ %wnick ] ] ] ] * : $+ %realname_ [ $+ [ %wnick ] ]
- if ($whoischanlist(%wnick,%wtnick)) {
- ;<- :la-defense.fr.epiknet.org 319 G-FACTION Fonix :#antiboulet #legoodies @#g-faction
- sw $sockname : $+ %me 319 %wtnick %wnick : $+ $ifmatch
- }
- if ((%wnick == %wtnick) || (%ircop_ [ $+ [ %wtnick ] ])) {
- sw $sockname : $+ %me 379 %wtnick %wnick :is using modes $chr(43) $+ %umodes_ [ $+ [ %wnick ] ] $iif(%snomask_ [ $+ [ %wnick ] ],$+($chr(43),$ifmatch),)
- sw $sockname : $+ %me 378 %wtnick %wnick :is connecting from *@ $+ $iif($sock(%sockname_ [ $+ [ %wnick ] ]).ip,$ifmatch,%vraiehost_ [ $+ [ %sockname_ [ $+ [ %wnick ] ] ] ]) $iif($sock(%sockname_ [ $+ [ %wnick ] ]).ip,$ifmatch,)
- }
- if ((%wnick == %wtnick) || (%ircop_ [ $+ [ %wtnick ] ])) {
- if ($sock(%sockname_ [ $+ [ %wnick ] ]).rcvd) {
- sw $sockname : $+ %me 532 %wtnick %wnick :sent $sock(%sockname_ [ $+ [ %wnick ] ]).rcvd bytes
- sw $sockname : $+ %me 533 %wtnick %wnick :received $sock(%sockname_ [ $+ [ %wnick ] ]).sent bytes
- }
- }
- if (r isincs %umodes_ [ $+ [ %wnick ] ]) {
- sw $sockname : $+ %me 307 %wtnick %wnick :is a registered nick
- }
- sw $sockname : $+ %me 312 %wtnick %wnick %server_ [ $+ [ %wnick ] ] : $+ $serv_sdesc(%server_ [ $+ [ %wnick ] ])
- if ($isaway(%wnick)) {
- sw $sockname : $+ %me 301 %wtnick %wnick : $+ %away_ [ $+ [ %sockname_ [ $+ [ %wnick ] ] ] ]
- }
- if ((%ircop_ [ $+ [ %wnick ] ]) || (o isin %umodes_ [ $+ [ %wnick ] ])) {
- if ((o isin %umodes_ [ $+ [ %wnick ] ])) {
- sw $sockname : $+ %me 313 %wtnick %wnick :is an IRC operator
- }
- if (h isincs %umodes_ [ $+ [ %wnick ] ]) {
- sw $sockname : $+ %me 310 %wtnick %wnick :is available for help
- }
- if (%oline. [ $+ [ %ircop_ [ $+ [ %wnick ] ] $+ .swhois ] ]) {
- echo -a 9:)
- sw $sockname : $+ %me 320 %wtnick %wnick : $+ $ifmatch
- }
- else {
- if (%swhois_ [ $+ [ %sockname_ [ $+ [ %wnick ] ] ] ]) {
- sw $sockname : $+ %me 320 %wtnick %wnick : $+ $ifmatch
- }
- }
- }
- }
- else {
- ;<- :besancon.fr.epiknet.org 401 G-FACTION bidule :No such nick/channel
- sw $sockname : $+ %me 401 %wtnick %wnick :No such nick
- }
- if (W isincs %umodes_ [ $+ [ %wnick ] ]) {
- if (%wtnick != %wnick) {
- if ($sock(%sockname_ [ $+ [ %wnick ] ])) {
- ;*** lol (G-FACTION@127.0.0.2) did a /whois on you.
- sw %sockname_ [ $+ [ %wnick ] ] : $+ %me NOTICE %wnick :*** %wtnick ( $+ $gettok($vraiefullhost($sockname),2,33) $+ ) did a /whois on you.
- }
- else {
- ;Cet user est situé sur un autre serveur
- sw $+(gserv.,$passerelle(%server_ [ $+ [ %wnick ] ])) : $+ %me NOTICE %wnick :*** %wtnick ( $+ $gettok($vraiefullhost($sockname),2,33) $+ ) did a /whois on you.
- }
- }
- }
- inc %i
- }
- }
- else {
- sw $sockname : $+ %me 431 %wtnick :No nickname given
- }
- if (!%haha) {
- sw $sockname : $+ %me 318 %wtnick %wnick :End of /WHOIS list.
- }
- }
- elseif ($1 == PRIVMSG) {
- if (!$3) {
- ;<- :besancon.fr.epiknet.org 411 G-FACTION :No recipient given (NOTICE)
- sw $sockname : $+ %me 411 $socknick($sockname) :No recipient given (PRIVMSG)
- halt
- }
- set %dest $2
- set %tmess $right($3-,$calc($len($3-) - 1))
- if ($left(%dest,1) == $chr(35)) {
- ;Si le message est adressé à un chan...
- if ($left(%tmess,1) == $chr(1)) {
- ;Il envoit un ctcp au chan
- if (C isincs $chmodes(%dest)) {
- ;404 G-FACTION[GTASA] #G-FACTION :CTCPs are not permitted in this channel (#G-FACTION)
- sw $sockname : $+ %me 404 $socknick($sockname) %dest :CTCPs are not permitted in this channel ( $+ %dest $+ )
- halt
- }
- }
- privmsg %dest $socknick($sockname) %tmess
- }
- else {
- ;Si le message est adressé à un pseudo...
- if ($isco(%dest)) {
- set %tpvnick $socknick($sockname)
- set %dest_umodes %umodes_ [ $+ [ %dest ] ]
- set %nick_umodes %umodes_ [ $+ [ %tpvnick ] ]
- if (R isincs %umodes_ [ $+ [ %dest ] ]) {
- if (r !isincs %nick_umodes) {
- ;<- :besancon.fr.epiknet.org 486 testR :You must identify to a registered nick to private message G-FACTION
- sw $sockname : $+ %me 486 %tpvnick :You must identify to a registered nick to private message %dest
- halt
- }
- }
- if ($sock(%sockname_ [ $+ [ %dest ] ])) {
- sw %sockname_ [ $+ [ %dest ] ] : $+ %tpvnick PRIVMSG %dest : $+ %tmess
- }
- else {
- if ($sock($+(gserv.,%server_ [ $+ [ %dest ] ]))) {
- sw $+(gserv.,%server_ [ $+ [ %dest ] ]) : $+ %tpvnick PRIVMSG %dest : $+ %tmess
- }
- else {
- set %tsock $+(gserv.,$passerelle(%server_ [ $+ [ %dest ] ]))
- if ($sock(%tsock)) {
- sw %tsock : $+ %tpvnick PRIVMSG %dest : $+ %tmess
- }
- }
- }
- if ($isaway(%dest)) {
- sw $sockname : $+ %me 301 %tpvnick %dest : $+ %away_ [ $+ [ %sockname_ [ $+ [ %dest ] ] ] ]
- }
- }
- else {
- sw $sockname : $+ %me 401 $socknick($sockname) %dest :No such nick/channel
- }
- }
- }
- elseif ($1 == AWAY) {
- if ($2) {
- if ($right($2-,$calc($len($2-) - 1)) != %away_ [ $+ [ $sockname ] ]) {
- set %away_ [ $+ [ $sockname ] ] $left($right($2-,$calc($len($2-) - 1)),%awaylen)
- sw $sockname : $+ %me 306 $socknick($sockname) :You have been marked as being away
- }
- }
- else {
- if (%away_ [ $+ [ $sockname ] ]) {
- unset %away_ [ $+ [ $sockname ] ]
- sw $sockname : $+ %me 305 $socknick($sockname) :You are no longer marked as being away
- }
- }
- }
- elseif ($1 == NOTICE) {
- set %nnick $socknick($sockname)
- set %ndest $2
- if (!$3) {
- sw $sockname : $+ %me 411 $socknick($sockname) :No recipient given (NOTICE)
- halt
- }
- if ($chr(35) !isin %ndest) {
- ;Il s'agit d'un envoi à un user
- set %nmess $right($3-,$calc($len($3-) - 1))
- set %ndest_umodes %umodes_ [ $+ [ %ndest ] ]
- set %nnick_umodes %umodes_ [ $+ [ %nnick ] ]
- if (V isincs %ndest_umodes) {
- set %ncmd PRIVMSG
- }
- else {
- set %ncmd NOTICE
- }
- if ($isco(%ndest)) {
- sw %sockname_ [ $+ [ %ndest ] ] : $+ $fullhost($sockname) %ncmd %ndest : $+ %nmess
- }
- else {
- sw $sockname : $+ %me 401 %nnick %ndest :No such nick/channel
- }
- }
- else {
- ;Il s'agit d'un envoi à un canal
- set %nmess $right($3-,$calc($len($3-) - 1))
- set %nd %ndest
- set %nchans $gettok(%nd,0,44)
- var %o 1
- while (%o <= %nchans) {
- set %ndest $gettok(%nd,%o,44)
- if ($gettok(%ndest,0,35) > 1) {
- ;Des modes ont été spécifiés
- set %nmodes $gettok(%ndest,1,35)
- set %nchan $chr(35) $+ $gettok(%ndest,2-,35)
- }
- else {
- set %nmodes $false
- set %nchan %ndest
- }
- if (T !isincs $chmodes(%nchan)) {
- if ($remove(%nmodes,$chr(38),$chr(126))) {
- var %i 1
- set %nlen $len(%nmodes)
- while (%i <= %nlen) {
- set %nmode $mid(%nmodes,%i,1)
- set %ncf $chanfile(%nchan)
- if (!$exists(%ncf)) {
- goto noticeend
- }
- var %file $gopen(%ncf)
- while ($fread(%file)) {
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- if ($strongerthan($replace($left(%r,1),$chr(64),o,$chr(38),a,$chr(126),q,$chr(43),v,$chr(37),h),$replace(%nmode,$chr(64),o,$chr(38),a,$chr(126),q,$chr(43),v,$chr(37),h))) {
- set %n $right(%r,$calc($len(%r) - 1))
- if ($sock(%sockname_ [ $+ [ %n ] ])) {
- sw %sockname_ [ $+ [ %n ] ] : $+ $fullhost($sockname) NOTICE %nmodes $+ %nchan : $+ %nmess
- }
- else {
- if (%server_ [ $+ [ %n ] ] != %me) {
- sendmultiserver : $+ %nnick NOTICE %nmodes $+ %nchan : $+ %nmess
- }
- }
- }
- }
- }
- .fclose %file
- :noticeend
- inc %i
- }
- }
- else {
- sendchannel %nchan : $+ $fullhost($sockname) NOTICE %nchan : $+ %nmess
- sendmultiserver : $+ %nnick NOTICE %nchan : $+ %nmess
- }
- }
- else {
- ;404 G-FACTION[GTASA] #G-FACTION :NOTICEs are not permitted in this channel (#G-FACTION)
- sw $sockname : $+ %me 404 %nnick %nchan :NOTICEs are not permitted in this channel ( $+ %nchan $+ )
- }
- inc %o
- }
- }
- }
- elseif ($1 == JOIN) {
- /*
- Yeahhhh begining /join command ! ^^
- Il faudra s'occuper des chanmodes i,L,k,s(whois),b
- Prendre en compte le MAXCHANNELS
-
- On va créer une base de données pour les canaux. #chan.nfo
- Dedans, seront stockées les données des modes statics. (ceux qui sont pas +voqa etc...)
- Puis on fera une banlist, protectlist, et exceptlist par canal (pas invites list car ça sert à rien).
- Bien entendu, si l'user joint un canal vide, il doit se retrouver en +o
- Et puis si l'option "apply +nt modes on channel creation" est activée, on l'fait :)
- */
- if ($2) {
- ;maxchannels
- set %tmpchans $whoischanlist($socknick($sockname))
- set %nbdchans $gettok(%tmpchans,0,32)
- if (!%nbdchans) { set %nbdchans 0 }
- if (%nbdchans < %maxchannels) {
- join $sockname $1-
- }
- else {
- ;<- :besancon3.fr.epiknet.org 405 G-FACTION #test33 :You have joined too many channels
- sw $sockname : $+ %me 405 $socknick($sockname) $2 :You have joined too many channels
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- elseif ($1 == NAMES) {
- if ($2) {
- sendnicklist $2 $socknick($sockname)
- }
- else {
- sw $sockname : $+ %me 366 $socknick($sockname) * :End of /NAMES list.
- }
- }
- elseif ($1 == PONG) {
- :ping
- if ($2) {
- set %tpong $remove($2,$chr(58))
- if (%tpong == %ping_ [ $+ [ $sockname ] ]) {
- set %pongdonne_ [ $+ [ $sockname ] ] $true
- }
- }
- else {
- ;<- :besancon.fr.epiknet.org 409 G-FACTION :No origin specified
- sw $sockname : $+ %me 409 $socknick($sockname) :No origin specified
- }
- }
- elseif ($1 == PART) {
- if ($2) {
- set %chans $2
- set %nbdchans $gettok(%chans,0,44)
- var %i 1
- while (%i <= %nbdchans) {
- part $sockname PART $gettok(%chans,%i,44) $3-
- inc %i
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- elseif ($1 == INVITE) {
- ;INVITE Nick #chan
- ; 1 2 3
- if ($3) {
- set %tnick $socknick($sockname)
- set %inick $2
- set %ichan $3
- unset %operoverride
- if (%ircop_ [ $+ [ %tnick ] ]) {
- set %tflags %oline. [ $+ [ %ircop_ [ $+ [ %chnick ] ] ] ] [ $+ [ .flags ] ]
- if (v isincs %tflags) {
- set %operoverride $true
- }
- }
- set %tchmodes $replacecs($chmodes(%ichan),1,N,2,L,3,S,4,C,5,T)
- if ($isco(%inick)) {
- if (($ison(%tnick,%ichan)) || (%operoverride)) {
- if (!$ison(%inick,%ichan)) {
- if ((V !isincs %tchmodes) || (%operoverride)) {
- sw %sockname_ [ $+ [ %inick ] ] : $+ $fullhost($sockname) INVITE %inick : $+ %ichan
- set %invited_ [ $+ [ %tchan ] ] [ $+ [ _ $+ [ %chnick ] ] ] $true
- noticechannel %ichan @ %me %tnick invited %inick into the channel.
- }
- else {
- sw $sockname : $+ %me 518 %tnick :Cannot invite (+V) at channel %ichan
- }
- }
- else {
- sw $sockname : $+ %me 443 %tnick %inick %ichan :is already on channel
- }
- }
- else {
- sw $sockname : $+ %me 442 %tnick %ichan :You're not on that channel
- }
- }
- else {
- sw $sockname : $+ %me 401 %tnick %inick :No such nick/channel
- }
- }
- else {
- sw $sockname : $+ %me 461 %tnick $1 :Not enough parameters
- }
- }
- elseif ($1 == KNOCK) {
- set %knocknick $socknick($sockname)
- set %knockchan $2
- if (!$3) {
- set %knockreason no reason specified
- }
- else {
- set %knockreason $3-
- }
- if ($2) {
- if (!$ison(%knocknick,%knockchan)) {
- set %knockchmodes $replacecs($chmodes(%knockchan),1,N,2,L,3,S,4,C,5,T)
- if (i isincs %knockchmodes) {
- if (K !isincs %knockchmodes) {
- sw $sockname : $+ %me NOTICE %knocknick :Knocked on %knockchan
- noticechannel %knockchan @ %me [Knock] by $fullhost($sockname) ( $+ %knockreason $+ )
- }
- else {
- sw $sockname : $+ %me 480 %knocknick :Cannot knock on %knockchan (No knocks are allowed! (+K))
- }
- }
- else {
- sw $sockname : $+ %me 480 %knocknick :Cannot knock on %knockchan (Channel is not invite only!)
- }
- }
- else {
- sw $sockname : $+ %me 480 %knocknick :Cannot knock on %knockchan (You're already there!)
- }
- }
- else {
- sw $sockname : $+ %me 461 %knocknick $1 :Not enough parameters
- }
- }
- elseif ($1 == KICK) {
- if ($3) {
- kick $2 $socknick($sockname) $3 $right($4-,$calc($len($4-) -1))
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- elseif ($1 == WHO) {
- unset %wdest
- set %wnick $socknick($sockname)
- if ($2) {
- if ($left($2,1) == $chr(43)) {
- ;Il entre un flag
- set %wflag $mid($2,2,1)
- if (%wflag === c) {
- set %wdest $3
- goto channel
- }
- elseif (%wflag === a) {
- ;who +a, donne la liste des tous les users away du serveur
- if ($3) {
- ;La présence d'un nick après le flag annule le flag et fait comme si c'était un /who nick
- set %wdest $3
- goto nick
- }
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if ($isaway(%r)) {
- if (i !isincs %umodes_ [ $+ [ %r ] ]) {
- sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
- }
- }
- }
- .fclose %file
- }
- elseif (%wflag === g) {
- ;who +g <string> donne la liste de tous les users ayant <string> comme RealName
- if ($3) {
- ;Procédure normale.
- set %wdest $3
- if ($chr(42) isin %wdest) {
- ;Alors l'user utilise les wildcards, ce qui est réservé aux IRCops.
- if (%ircop_ [ $+ [ %wnick ] ]) {
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- var %wrealname %realname_ [ $+ [ %r ] ]
- if (%wdest iswm %wrealname) {
- sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
- }
- }
- .fclose %file
- }
- }
- else {
- ;Il a entré un string normal, pas un wildcard, donc pas de restriction
- ;Recherche en tokens
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- set %wrealname %realname_ [ $+ [ %r ] ]
- if ($istok(%wrealname,%wdest,32)) {
- sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
- }
- }
- .fclose %file
- }
- }
- else {
- ghelp who $sockname
- }
- }
- elseif (%wflag === h) {
- ;who +h <host>, <host> en wildcard
- if ($3) {
- set %wdest $3
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- set %whost %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ]
- if (%wdest iswm %whost) {
- sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
- }
- }
- .fclose %file
- }
- else {
- ghelp who $sockname
- }
- }
- elseif (%wflag === m) {
- ;who +m <mode>, a,A,o seulement, pour les non-ircop.
- if ($3) {
- set %wmode $left($3,1)
- ;Le $left sert à éviter que certaines peronnes entrant plusieurs modes puissent feinter (faille)
- if (%wmode isincs oOaANCghRDWnGkKbiBtzZvHWr) {
- if (%wmode !isincs aAo) {
- if (!%ircop_ [ $+ [ %wnick ] ]) {
- goto wend
- }
- }
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- set %wmodes %umodes_ [ $+ [ %r ] ]
- if (%wmode isincs %wmodes) {
- sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
- }
- }
- .fclose %file
- }
- }
- else {
- ghelp who $sockname
- }
- }
- elseif (%wflag === n) {
- ;who +n <nick>, <nick> en wildcard
- if ($3) {
- set %wdest $3
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if (%wdest iswm %r) {
- sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
- }
- }
- .fclose %file
- }
- else {
- ghelp who $sockname
- }
- }
- elseif (%wflag === u) {
- ;who +u <username>, donne la liste des users ayant <username> comme username (identd). Wildcards.
- if ($3) {
- set %wdest $3
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- set %wusername %identd_ [ $+ [ %r ] ]
- if (%wdest iswm %wusername) {
- sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
- }
- }
- .fclose %file
- }
- else {
- ghelp who $sockname
- }
- }
- elseif (%wflag === M) {
- ;who +M, donne la liste de tous les users qui ont des chans communs avec soi
- if ($3) {
- set %wdest $3
- goto nick
- }
- set %wchans1 %chans_ [ $+ [ $sockname ] ]
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- set %wchans2 %chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ]
- if ($comchans(%wchans1,%wchans2)) {
- sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
- }
- }
- .fclose %file
- }
- elseif (%wflag === R) {
- ;who +R, donne la liste de tous les users du serveur, et avec leurs vraies hosts. IRCops only.
- if (%ircop_ [ $+ [ %wnick ] ]) {
- ;%vraiehost_ [ $+ [ $sockname ] ]
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %vraiehost_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
- }
- .fclose %file
- }
- }
- else {
- ghelp who $sockname
- }
- }
- else {
- set %wdest $2
- if ($left(%wdest,1) == $chr(35)) {
- ;Alors il /who #chan
- ;<- :besancon.fr.epiknet.org 352 G-FACTION #my_world LoVeFF leon.epiknet.fr besancon.fr.epiknet.org LeOn Hr :0 LeOn :þ
- :channel
- var %file $gopen($chanfile(%wdest))
- while ($fread(%file)) {
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %tempnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %tempnick %r
- }
- set %tsockname %sockname_ [ $+ [ %tempnick ] ]
- sw $sockname : $+ %me 352 %wnick %wdest %identd_ [ $+ [ %tempnick ] ] %host_ [ $+ [ %tsockname ] ] %server_ [ $+ [ %tempnick ] ] %tempnick $whoattr(%tempnick) :0 %realname_ [ $+ [ %tempnick ] ]
- }
- .fclose %file
- }
- else {
- ;Alors il /who nick
- :nick
- if ($isco(%wdest)) {
- unset %attr
- if ($isaway(%wdest)) {
- set %attr %attr $+ G
- }
- else {
- set %attr %attr $+ H
- }
- if (r isincs %umodes_ [ $+ [ %wdest ] ]) {
- set %attr %attr $+ r
- }
- if (%ircop_ [ $+ [ %wdest ] ]) {
- set %attr %attr $+ $chr(42)
- }
- sw $sockname : $+ %me 352 $socknick($sockname) $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %wdest ] ] ] ],1,32) %identd_ [ $+ [ %wdest ] ] %host_ [ $+ [ %sockname_ [ $+ [ %wdest ] ] ] ] %server_ [ $+ [ %wdest ] ] %wdest %attr :0 %realname_ [ $+ [ %wnick ] ]
- }
- }
- }
- ;<- :besancon.fr.epiknet.org 315 G-FACTION truc :End of /WHO list.
- :wend
- sw $sockname : $+ %me 315 $socknick($sockname) %wdest :End of /WHO list.
- }
- else {
- ;sw $sockname : $+ %me 316 $socknick($sockname) :You cannot /WHO the whole server
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
- }
- .fclose %file
- sw $sockname : $+ %me 315 $socknick($sockname) %wdest :End of /WHO list.
- }
- }
- elseif ($1 == USERHOST) {
- if ($2) {
- set %unick $2
- if (%unick == $socknick($sockname)) {
- set %unick $socknick($sockname)
- ;<- :besancon.fr.epiknet.org 302 G-FACTION :G-FACTION=+~_G-FACTIO@stmartindheres-1-82-225-54-143.fbx.proxad.net
- sw $sockname : $+ %me 302 %unick : $+ %unick $+ =+ $+ $vraiefullhost($sockname)
- }
- else {
- if ($isco(%unick)) {
- if (%ircop_ [ $+ [ $socknick($sockname) ] ]) {
- sw $sockname : $+ %me 302 $socknick($sockname) : $+ %unick $+ =+ $+ $vraiefullhost(%sockname_ [ $+ [ %unick ] ])
- }
- else {
- sw $sockname : $+ %me 302 $socknick($sockname) : $+ %unick $+ =+ $+ $fullhost(%sockname_ [ $+ [ %unick ] ])
- }
- }
- else {
- sw $sockname : $+ %me 302 $socknick($sockname) :
- }
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- elseif ($1 == QUIT) {
- if ($2) {
- set %qmsg $right($2-,$calc($len($2-) - 1))
- }
- else {
- unset %qmsg
- }
- set %quitchans %chans_ [ $+ [ $sockname ] ]
- set %qfullhost $fullhost($sockname)
- set %qnick $socknick($sockname)
- set %gserv %server_ [ $+ [ $socknick($sockname) ] ]
- set %quitraison_ [ $+ [ $sockname ] ] Quit: %qmsg
- sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ $sockname ] ]
- sockclose2 $sockname
- if ($len(%qmsg)) {
- gquit $sockname Quit: %qmsg
- }
- else {
- gquit $sockname Quit:
- }
- }
- elseif ($1 == ISON) {
- if ($2) {
- unset %endisonlist
- if ($3) {
- set %isonlist $2-
- set %isonnum $gettok(%isonlist,0,32)
- var %i 1
- while (%i <= %isonnum) {
- set %tison $gettok(%isonlist,%i,32)
- if ($isco(%tison)) {
- set %endisonlist $addtok(%endisonlist,%tison,32)
- }
- inc %i
- }
- }
- else {
- if ($isco($2)) {
- set %endisonlist $2
- }
- }
- sw $sockname : $+ %me 303 $socknick($sockname) : $+ %endisonlist
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- elseif (($1 == HELP) || ($1 == HELPOP)) {
- ;<- :besancon.fr.epiknet.org 294 G-FACTION :Your help-request has been forwarded to Help Operators
- if ($2) {
- if ($left($2,1) == $chr(63)) {
- if ($2 == $chr(63)) {
- ghelp index $sockname
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** NOTE: As a helpop you have to prefix your text with ? to query the help system, like: /helpop ?usercmds
- halt
- }
- set %hlpstr $right($2,$calc($len($2) - 1))
- if (%hlpstr == index) {
- set %hlpstr error
- }
- ghelp %hlpstr $sockname
- }
- else {
- set %hlpstr $2
- if (%hlpstr == index) {
- set %hlpstr error
- }
- ghelp %hlpstr $sockname
- }
- }
- else {
- ghelp index $sockname
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** NOTE: As a helpop you have to prefix your text with ? to query the help system, like: /helpop ?usercmds
- }
- }
- elseif ($1 == ADMIN) {
- :admin
- admin $sockname
- }
- elseif ($1 == RULES) {
- rules $sockname
- }
- elseif ($1 == VHOST) {
- if ($3) {
- set %vlogin $2
- set %vpass $3
- if ($isvhostlogin(%vlogin)) {
- set %tvhost %vhost_ [ $+ [ %vlogin ] ]
- if ($goodvhosthost(%vlogin,$fullhost($sockname))) {
- if ($vhostlogpass(%vlogin,%vpass)) {
- umodesrv $chr(43) $socknick($sockname) x
- umodesrv $chr(43) $socknick($sockname) t
- set %host_ [ $+ [ $sockname ] ] %tvhost
- sw $sockname : $+ %me MODE $socknick($sockname) :+tx
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** Your vhost is %tvhost
- sendpeoplesnomask v [vhost] %vlogin ( $+ $vraiefullhost($sockname) $+ ) is now using vhost %tvhost
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** [vhost] Login for %vlogin failed - password incorrect
- sendpeoplesnomask v [vhost] Failed login for vhost %vlogin by $vraiefullhost($sockname) - incorrect password
- }
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** [vhost] Login for %vlogin failed - password incorrect
- sendpeoplesnomask v [vhost] Failed login for vhost %vlogin by $vraiefullhost($sockname) - incorrect password
- }
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** [vhost] Login for %vlogin failed - password incorrect
- sendpeoplesnomask v [vhost] Failed login for vhost %vlogin by $vraiefullhost($sockname) - incorrect password
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- elseif ($1 == CREDITS) {
- credits $sockname
- }
- elseif ($1 == INFO) {
- info $sockname
- }
- elseif ($1 == SETNAME) {
- if ($2) {
- if ($len($2-) <= 50) {
- set %realname_ [ $+ [ $socknick($sockname) ] ] $2-
- sw $sockname : $+ %me NOTICE $socknick($sockname) :Your "real name" (GCOS) is now set to be $2- - you have to set it manually to undo it
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetName Error: "Real names" may maximum be 50 characters of length
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- elseif ($1 == WATCH) {
- if ($2) {
- set %watch.pos $positivewatch($2-)
- set %watch.neg $negativewatch($2-)
- ;delwatchedlist $sockname %watch.neg
- ;addwatchedlist $sockname %watch.pos
- var %i 1
- var %o 1
- set %tok1 $gettok(%watch.pos,0,32)
- set %tok2 $gettok(%watch.neg,0,32)
- while (%i <= %tok1) {
- set %twatch $gettok(%watch.pos,%i,32)
- addwatchedlist %sockname_ [ $+ [ %twatch ] ] $socknick($sockname)
- if ($isco(%twatch)) {
- sw $sockname : $+ %me 604 $socknick($sockname) %twatch %identd_ [ $+ [ %twatch ] ] %host_ [ $+ [ %sockname_ [ $+ [ %twatch ] ] ] ] $signon(%sockname_ [ $+ [ %twatch ] ]) :is online
- }
- else {
- sw $sockname : $+ %me 604 $socknick($sockname) %twatch * * 0 :is offline
- }
- inc %i
- }
- while (%o <= %tok2) {
- set %twatch $gettok(%watch.neg,%o,32)
- delwatchedlist %sockname_ [ $+ [ %twatch ] ] $socknick($sockname)
- if ($isco(%twatch)) {
- sw $sockname : $+ %me 602 $socknick($sockname) %twatch %identd_ [ $+ [ %twatch ] ] %host_ [ $+ [ %sockname_ [ $+ [ %twatch ] ] ] ] $signon(%sockname_ [ $+ [ %twatch ] ]) :stopped watching
- }
- else {
- sw $sockname : $+ %me 602 $socknick($sockname) %twatch * * 0 :stopped watching
- }
- inc %o
- }
- }
- else {
- sw $sockname : $+ %me 607 $socknick($sockname) :End of WATCH l
- }
- }
- elseif ($1 == TOPIC) {
- if ($2) {
- if ($3) {
- set %chnick $socknick($sockname)
- set %operoverride $false
- if (%ircop_ [ $+ [ %chnick ] ]) {
- set %tflags %oline. [ $+ [ %ircop_ [ $+ [ %chnick ] ] ] ] [ $+ [ .flags ] ]
- if (v isincs %tflags) {
- set %operoverride $true
- }
- }
- set %tchan $2
- set %tchmodes $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T)
- if (t isincs %tchmodes) {
- if (!$isatleast(h,%chnick,%tchan)) {
- if (!%operoverride) {
- sw $sockname : $+ %me 482 %chnick %tchan :You're not channel operator
- halt
- }
- }
- }
- set %ttopic $right($3-,$calc($len($3-) - 1))
- writeini -n $nfochanfile(%tchan) MISC topic $left(%ttopic,%topiclen)
- writeini -n $nfochanfile(%tchan) MISC ttime $ctime
- writeini -n $nfochanfile(%tchan) MISC tuser %chnick
- sendchannel %tchan : $+ $fullhost($sockname) TOPIC %tchan : $+ $left(%ttopic,%topiclen)
- }
- else {
- if ($ttopic($2)) {
- topic $2 $socknick($sockname)
- }
- else {
- sw $sockname : $+ %me 331 $socknick($sockname) $2 :No topic is set.
- }
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- elseif ($1 == LIST) {
- set %tnick $socknick($sockname)
- sw $sockname : $+ %me 321 %tnick Channel :Users Name
- if (!$exists($chanlistfile)) {
- goto listend
- }
- if ($2) {
- set %option $2
- if ($left(%option,1) == $chr(42)) {
- ;Alors il fait une recherche en wildcards
- set %clf $chanlistfile
- var %file $gopen(%clf)
- while ($fread(%file)) {
- set %tchan $ifmatch
- if (%option iswm %tchan) {
- set %tchmodes $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T)
- if ($replacecs(%tchmodes,s,0,p,0) == %tchmodes) {
- unset %ircop
- if (%ircop_ [ $+ [ %tnick ] ]) {
- set %ircop $true
- }
- if ((s !isincs %tchmodes) || (p !isincs %tchmodes) ($ison(%tnick,%tchan)) || (%ircop)) {
- ;<- :besancon.fr.epiknet.org 322 G-FACTION #besancon 17 :[+ntrSf] bienvenue dans la grotte de l
- sw $sockname : $+ %me 322 %tnick %tchan $lines($chanfile(%tchan)) : $+ $iif(%tchmodes,[+ $+ $replacecs(%tchmodes,1,N,2,L,3,S,4,C,5,T) $+ $chr(93) $ttopic(%tchan),)
- }
- }
- }
- }
- .fclose %file
- }
- elseif (($left(%option,1) == $chr(60)) || ($left(%option,1) == $chr(62))) {
- ;Alors il fait une recherche avec un nombre d'utilisateurs
- var %i 0
- set %clf $chanlistfile
- var %file $gopen(%clf)
- if ($left(%option,1) == $chr(60)) {
- ;<
- set %lsigne neg
- set %larg $gettok(%option,1,60)
- }
- elseif ($left(%option,1) == $chr(62)) {
- ;>
- set %lsigne pos
- set %larg $gettok(%option,1,62)
- }
- while ($fread(%file)) {
- inc %i
- set %tchan $ifmatch
- if (%lsigne == pos) {
- if ($lines($chanfile(%tchan)) > %larg) {
- unset %ircop
- if (%ircop_ [ $+ [ %tnick ] ]) {
- set %ircop $true
- }
- if ((s !isincs $chmodes(%tchan)) || (p !isincs $chmodes(%tchan)) || ($ison(%tnick,%tchan)) || (%ircop)) {
- sw $sockname : $+ %me 322 %tnick %tchan $lines($chanfile(%tchan)) : $+ $iif($chmodes(%tchan),[+ $+ $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T) $+ $chr(93) $ttopic(%tchan),)
- }
- }
- }
- elseif (%lsigne == neg) {
- if ($lines($chanfile(%tchan)) < %larg) {
- unset %ircop
- if (%ircop_ [ $+ [ %tnick ] ]) {
- set %ircop $true
- }
- if ((s !isincs $chmodes(%tchan)) || (p !isincs $chmodes(%tchan)) || ($ison(%tnick,%tchan)) || (%ircop)) {
- sw $sockname : $+ %me 322 %tnick %tchan $lines($chanfile(%tchan)) : $+ $iif($chmodes(%tchan),[+ $+ $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T) $+ $chr(93) $ttopic(%tchan),)
- }
- }
- }
- }
- .fclose %file
- }
- elseif ($left(%option,1) == $chr(33)) {
- set %larg $gettok(%option,1,33)
- set %clf $chanlistfile
- var %file $gopen(%clf)
- while ($fread(%file)) {
- set %tchan $ifmatch
- if (%larg !iswm %tchan) {
- set %tchmodes $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T)
- if ($replacecs(%tchmodes,s,0,p,0) == %tchmodes) {
- ;<- :besancon.fr.epiknet.org 322 G-FACTION #besancon 17 :[+ntrSf] bienvenue dans la grotte de l
- sw $sockname : $+ %me 322 %tnick %tchan $lines($chanfile(%tchan)) :[+ $+ %tchmodes $+ $chr(93) $ttopic(%tchan)
- }
- }
- }
- .fclose %file
- }
- }
- else {
- set %clf $chanlistfile
- var %file $gopen(%clf)
- while ($fread(%file)) {
- set %tchan $ifmatch
- set %tchmodes $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T)
- sw $sockname : $+ %me 322 %tnick %tchan $lines($chanfile(%tchan)) :[+ $+ %tchmodes $+ $chr(93) $ttopic(%tchan)
- }
- .fclose %file
- }
- :listend
- sw $sockname : $+ %me 323 %tnick :End of /LIST
- }
- elseif ($1 == CYCLE) {
- if ($2) {
- part $sockname PART $2 :cycling
- join $sockname JOIN $2
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- elseif ($1 == LINKS) {
- sw $sockname : $+ %me 364 $socknick($sockname) %me %me :0 %me.info
- sw $sockname : $+ %me 365 $socknick($sockname) * :End of /LINKS list.
- }
- elseif ($1 == TIME) {
- sw $sockname : $+ %me 391 $socknick($sockname) %me : $+ $gdate
- }
- elseif ($1 == WHOWAS) {
- if ($2) {
- set %wwnick $2
- if ($exists($whowas.file)) {
- if ($whowas.exists(%wwnick)) {
- if (%ircop_ [ $+ [ $socknick($sockname) ] ]) {
- sw $sockname : $+ %me 314 $socknick($sockname) %wwnick $whowas.vraiehost(%wwnick)
- }
- else {
- sw $sockname : $+ %me 314 $socknick($sockname) %wwnick $whowas.host(%wwnick)
- }
- sw $sockname : $+ %me 312 $socknick($sockname) %wwnick $whowas.server(%wwnick)
- }
- else {
- sw $sockname : $+ %me 406 $socknick($sockname) %wwnick :There was no such nickname
- }
- sw $sockname : $+ %me 369 $socknick($sockname) %wwnick :End of WHOWAS
- }
- else {
- sw $sockname : $+ %me 406 $socknick($sockname) %wwnick :There was no such nickname
- sw $sockname : $+ %me 369 $socknick($sockname) %wwnick :End of WHOWAS
- }
- }
- else {
- sw $sockname : $+ %me 431 $socknick($sockname) :No nickname given
- }
- }
- elseif ($1 == NICK) {
- if ($2) {
- ;<- :besancon.fr.epiknet.org 431 G-FACTION :No nickname given
- set %oldnick $socknick($sockname)
- set %newnick $right($2,$calc($len($2) - 1))
- if (!$correctnickname(%newnick)) {
- sw $sockname : $+ %me 432 %oldnick $2 :Erroneous Nickname: Illegal characters - Not allowed by the G-NORM
- halt
- }
- if (!$isco(%newnick)) {
- set %operoverride $false
- if (%ircop_ [ $+ [ %oldnick ] ]) {
- set %tflags %oline. [ $+ [ %ircop_ [ $+ [ %oldnick ] ] ] ] [ $+ [ .flags ] ]
- if (v isincs %tflags) {
- set %operoverride $true
- }
- }
- if (($nnullepart(%oldnick) == $true) || (%operoverride)) {
- ;Il est libre
- remove debug.txt
- write debug.txt Il est libre !
-
- ;Envoyer une notice à toutes les personnes qui ont le snomask 'n'
- sendpeoplesnomask n *** Notice -- %oldnick ( $+ $gettok($fullhost(%sockname_ [ $+ [ %oldnick ] ]),2,33) $+ ) has changed his/her nickname to %newnick
-
- set %oldfullhost $fullhost($sockname)
- set %realname_ [ $+ [ %newnick ] ] %realname_ [ $+ [ %oldnick ] ]
- set %nick_ [ $+ [ %newnick ] ] %nick_ [ $+ [ %oldnick ] ]
- if (%ircop_ [ $+ [ %oldnick ] ]) {
- set %ircop_ [ $+ [ %newnick ] ] %ircop_ [ $+ [ %oldnick ] ]
- }
- set %snomask_ [ $+ [ %newnick ] ] %snomask_ [ $+ [ %oldnick ] ]
- set %umodes_ [ $+ [ %newnick ] ] %umodes_ [ $+ [ %oldnick ] ]
- set %identd_ [ $+ [ %newnick ] ] %identd_ [ $+ [ %oldnick ] ]
- set %server_ [ $+ [ %newnick ] ] %server_ [ $+ [ %oldnick ] ]
- set %sockname_ [ $+ [ %newnick ] ] %sockname_ [ $+ [ %oldnick ] ]
- set %nick_of_sockname_ [ $+ [ $sockname ] ] %newnick
- unset %realname_ [ $+ [ %oldnick ] ]
- unset %nick_of_sockname_ [ $+ [ %oldnick ] ]
- unset %nick_ [ $+ [ %oldnick ] ]
- unset %ircop_ [ $+ [ %oldnick ] ]
- unset %snomask_ [ $+ [ %oldnick ] ]
- unset %identd_ [ $+ [ %oldnick ] ]
- unset %server_ [ $+ [ %oldnick ] ]
- unset %sockname_ [ $+ [ %oldnick ] ]
- whowas.add.private $sockname
-
- write debug.txt Variables modifiées !
-
- ;Modifier la liste des users du serveur
-
- delservnick %oldnick
- addservnick %newnick
-
- write debug.txt Liste des users du serveur modifiée !
-
- ;Modifier la liste des IRCops
-
- if (%ircop_ [ $+ [ %newnick ] ]) {
- delircoplist %oldnick
- addircoplist %newnick
- }
-
- write debug.txt Liste des IRCops modifiée !
-
- ;Envoi à tous les users du réseau ayant des chans commun avec lui
-
- set %nchans %chans_ [ $+ [ $sockname ] ]
- unset %ghosts
- set %ulf $userslistfile
- var %file $gopen(%ulf)
- var %i 0
- while ($fread(%file)) {
- ;<- :kaline1-reveuse!~ptitchato@EpiK-18A5E41B.adsl.skynet.be NICK :kaline1-nongrague
- inc %i
- set %r $ifmatch
- echo -a r: %r
- if ($comchans(%nchans,%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ])) {
- if ($sock(%sockname_ [ $+ [ %r ] ])) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %oldfullhost NICK : $+ %newnick
- }
- else {
- set %tsock $+(gserv.,$passerelle(%server_ [ $+ [ %r ] ]))
- if ($sock(%tsock)) {
- sw %tsock : $+ %oldnick NICK : $+ %newnick
- }
- else {
- set %ghosts $addtok(%ghosts,%i,32)
- }
- }
- }
- else {
- echo -a passé dans le else...
- if (%r == %newnick) {
- echo -a passé dans le oldnick...
- sw $sockname : $+ %oldfullhost NICK : $+ %newnick
- }
- }
- }
- .fclose %file
-
- write debug.txt While d'envoi de NICK passée !
-
- var %y 1
- set %gtk $gettok(%ghosts,0,32)
- while (%y <= %gtk) {
- write -dl $+ $gettok(%ghosts,%y,32) %ulf
- inc %y
- }
-
- write debug.txt While de ghosts passée !
-
- ;Modifier son nick dans la nicklist de tous les chans où il est
-
- set %nbdchans $numtok(%nchans,32)
- if (%nbdchans) {
- var %o 1
- write debug.txt 1
- while (%o <= %nbdchans) {
- set %ntchan $gettok(%nchans,%o,32)
- write debug.txt 2 ntchan: %ntchan
- set %ncf $chanfile(%ntchan)
- if (!$exists(%ncf)) {
- goto nickend
- }
- var %u 0
- var %file $gopen(%ncf)
- while ($fread(%file)) {
- inc %u
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %tempnick $right(%r,$calc($len(%r) - 1))
- if (%tempnick == %oldnick) {
- write -dl $+ %u %ncf
- write %ncf $left(%r,1) $+ %newnick
- }
- }
- else {
- set %tempnick %r
- if (%tempnick == %oldnick) {
- write -dl $+ %u %ncf
- write %ncf %newnick
- }
- }
- }
- .fclose %file
- set %ntempstsm $readini($nfochanfile(%ntchan),STSM,%oldnick)
- remini $nfochanfile(%ntchan) STSM %oldnick
- writeini -n $nfochanfile(%ntchan) STSM %newnick %ntempstsm
- :nickend
- inc %o
- }
- }
- sendmultiserver : $+ %oldnick NICK : $+ %newnick
- }
- else {
- ;447 G-FACTION[GTASA] :Can not change nickname while on #G-FACTION (+N)
- sw $sockname : $+ %me 447 %oldnick :Can not change nickname while on $ifmatch (+N)
- }
- }
- else {
- ;433 G-FACTION G-FACTION[GTASA] :Nickname is already in use.
- sw $sockname : $+ %me 433 %oldnick :Nickname is already in use.
- }
- }
- else {
- sw $sockname : $+ %me 431 $socknick($sockname) :No nickname given
- }
- }
- elseif ($1 == PING) {
- if ($2) {
- sw $sockname : $+ %me PONG %me : $+ $2
- }
- else {
- sw $sockname : $+ %me 409 $socknick($sockname) :No origin specified
- }
- }
- elseif ($1 == WALLOPS) {
- set %wanick $socknick($sockname)
- if ($2) {
- if (%ircop_ [ $+ [ %wanick ] ]) {
- set %ulf $userslistfile
- var %file $gopen(%ulf)
- while ($fread(%file)) {
- set %r $ifmatch
- if (w isincs %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- sw %sockname_ [ $+ [ %r ] ] : $+ $fullhost($sockname) WALLOPS $2-
- }
- }
- }
- .fclose %file
- sendmultiserver : $+ %wanick WALLOPS $2-
- }
- else {
- sw $sockname : $+ %me 481 %wanick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 461 %wanick $1 :Not enough parameters
- }
- }
- elseif ($1 == GLOBOPS) {
- set %glnick $socknick($sockname)
- set %glmess $right($2-,$calc($len($2-) - 1))
- if ($2) {
- if (%ircop_ [ $+ [ %glnick ] ]) {
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto globopsend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %glnick :*** Global -- from %glnick $+ : %glmess
- }
- }
- .fclose %file
- :globopsend
- }
- else {
- sw $sockname : $+ %me 481 %glnick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 461 %glnick $1 :Not enough parameters
- }
- }
- elseif ($1 == CHATOPS) {
- set %chnick $socknick($sockname)
- set %chmess $2-
- if ($2) {
- if (%ircop_ [ $+ [ %chnick ] ]) {
- set %ilf $ircoplistfile
- if (!$exists(%ilf) {
- goto chatopsend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %chnick :*** ChatOps -- from %chnick $+ : %chmess
- }
- }
- .fclose %ilf
- :chatopsend
- }
- else {
- sw $sockname : $+ %me 481 %chnick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 461 %chnick $1 :Not enough parameters
- }
- }
- elseif ($1 == LOCOPS) {
- set %lonick $socknick($sockname)
- set %lomess $right($2-,$calc($len($2-) - 1))
- if ($2) {
- if (%ircop_ [ $+ [ %lonick ] ]) {
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto locopsend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %lonick :*** LocOps -- from %lonick $+ : %lomess
- }
- }
- }
- .fclose %file
- :locopsend
- }
- else {
- sw $sockname : $+ %me 481 %lonick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 461 %lonick $1 :Not enough parameters
- }
- }
- elseif ($1 == ADCHAT) {
- set %lonick $socknick($sockname)
- set %lomess $2-
- if ($2) {
- if (%ircop_ [ $+ [ %lonick ] ]) {
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto adchatend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (A isin %umodes_ [ $+ [ %r ] ]) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %lonick :*** AdminChat -- from %lonick $+ : %lomess
- }
- }
- .fclose %file
- :adchatend
- }
- else {
- sw $sockname : $+ %me 481 %lonick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 461 %lonick $1 :Not enough parameters
- }
- }
- elseif ($1 == NACHAT) {
- set %lonick $socknick($sockname)
- set %lomess $2-
- if ($2) {
- if (%ircop_ [ $+ [ %lonick ] ]) {
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto nachatend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (N isin %umodes_ [ $+ [ %r ] ]) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %lonick :*** NetAdmin.Chat -- from %lonick $+ : %lomess
- }
- }
- .fclose %file
- :nachatend
- }
- else {
- sw $sockname : $+ %me 481 %lonick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 461 %lonick $1 :Not enough parameters
- }
- }
- elseif ($1 == KILL) {
- set %knick $socknick($sockname)
- if ($3) {
- set %kmess $right($3-,$calc($len($3-) - 1))
- if ($isco($2)) {
- if (%ircop_ [ $+ [ %knick ] ]) {
- set %kflags %oline. [ $+ [ %ircop_ [ $+ [ %knick ] ] ] ] [ $+ [ .flags ] ]
- ;Là on met seulement du local kill puisque les links n'éxistent pas encore
- if (k isin %kflags) {
- var %a $true
- echo -a a
- if (!$sock(%sockname_ [ $+ [ $2 ] ])) {
- if (%server_ [ $+ [ $2 ] ] != %me) {
- var %a $false
- sw gserv. $+ $ifmatch : $+ %knick KILL $2 : $+ %host_ [ $+ [ $sockname ] ] $+ $chr(33) $+ %knick ( $+ %kmess $+ )
- ;:G-FACTION KILL huhut :netadmin.G-SERVER.net!G-FACTION (:p)
- }
- }
- echo -a b
- if (%a) {
- sw %sockname_ [ $+ [ $2 ] ] : $+ $fullhost($sockname) KILL $2 : $+ %knick
- }
- echo -a c
- set %quitchans %chans_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
- set %qfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
- set %qnick $socknick(%sockname_ [ $+ [ $2 ] ])
- set %qserv %server_ [ $+ [ $socknick(%sockname_ [ $+ [ $2 ] ]) ] ]
- set %truc %sockname_ [ $+ [ $2 ] ]
- set %quitraison_ [ $+ [ %truc ] ] $chr(91) $+ %me $+ $chr(93) Local kill by %knick ( $+ %kmess $+ )
- sendpeoplesnomask k *** Notice -- Received KILL message for $fullhost(%truc) from %knick Path: %me $+ ! $+ %knick ( $+ %kmess $+ )
- sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ %truc ] ]
- sockclose2 %truc
- gquit %truc $chr(91) $+ %me $+ $chr(93) Local kill by %knick ( $+ %kmess $+ ) %truc
- }
- else {
- sw $sockname : $+ %me 481 %knick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 481 %knick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 401 %knick $2 :No such nick/channel
- }
- }
- else {
- sw $sockname : $+ %me 461 %knick $1 :Not enough parameters
- }
- }
- elseif ($1 == KLINE) {
- set %knick $socknick($sockname)
- if ($2) {
- if (%ircop_ [ $+ [ %knick ] ]) {
- set %kflags %oline. [ $+ [ %ircop_ [ $+ [ %knick ] ] ] ] [ $+ [ .flags ] ]
- if (b isincs %kflags) {
- if ($left($2,1) != $chr(45)) {
- ;Pour adder une k:line
- ;kline <host ou nick> temps raison
- if ($chr(64) isin $2) {
- if ($left($2,1) == $chr(43)) {
- set %khost $right($2,$calc($len($2) - 1))
- }
- else {
- set %khost $2
- }
- }
- else {
- if ($left($2,1) == $chr(43)) {
- set %khost $right($2,$calc($len($2) - 1))
- }
- else {
- set %khost $2
- }
- if ($isco($2)) {
- set %khost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
- }
- else {
- sw $sockname : $+ %me 401 %knick %khost :No such nick/channel
- halt
- }
- }
- set %tsecs $duration($replace($3,d,d $+ $chr(32),h,h $+ $chr(32),m,m $+ $chr(32),s,s $+ $chr(32)))
- if (!$len($kline.infos(%khost))) {
- if ((%tsecs != 0) && (%tsecs != 0secs) && (%tsecs)) {
- ;Bon format de durée
- ;kline.add host $dctime timetoexpire host_klineur raison
- ; 1 2 3 4 5
- set %tasctime $ctime
- set %treason $iif($len($4-),$4-,no reason)
- kline.add %khost %tasctime %tsecs $fullhost($sockname) %treason
- sendpeoplesnomask G *** K:Line added for %khost on $asctime(%tasctime) GMT (from $fullhost($sockname) to expire at $asctime($calc(%tasctime + %tsecs)) GMT: %treason $+ )
- }
- else {
- ;Permanent k:line !
- set %tasctime $ctime
- set %tsecs 0
- set %treason $iif($len($4-),$4-,no reason)
- kline.add %khost %tasctime 0 $fullhost($sockname) %treason
- sendpeoplesnomask G *** Permanent K:Line added for %khost on $asctime(%tasctime) GMT (from $fullhost($sockname) $+ : %treason $+ )
- }
- }
- else {
- halt
- }
- }
- else {
- ;Il s'agit d'un removal de k:line
- set %khost $right($2,$calc($len($2) - 1))
- if ($chr(64) isin %khost) {
- set %khost %khost
- }
- else {
- if ($isco(%khost)) {
- set %khost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ %khost ] ] ] ]
- }
- else {
- sw $sockname : $+ %me 401 %knick %khost :No such nick/channel
- }
- }
- if ($kline.infos(%khost)) {
- ;Elle existe en effet
- set %kinfos $kline.infos(%khost)
- set %setat $asctime($gettok(%kinfos,1,32))
- set %kreason $gettok(%kinfos,4-,32)
- kline.del %khost
- globops $fullhost($sockname) removed K:Line %khost (set at %setat - reason: %kreason $+ )
- }
- }
- }
- else {
- sw $sockname : $+ %me 481 %knick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 481 %knick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- if (%ircop_ [ $+ [ %knick ] ]) {
- stats K $sockname
- }
- else {
- sw $sockname : $+ %me 481 %knick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- }
- elseif ($1 == GLINE) {
- set %gnick $socknick($sockname)
- if ($2) {
- if (%ircop_ [ $+ [ %gnick ] ]) {
- set %gflags %oline. [ $+ [ %ircop_ [ $+ [ %gnick ] ] ] ] [ $+ [ .flags ] ]
- if (t isincs %gflags) {
- if ($left($2,1) != $chr(45)) {
- ;Pour adder une g:line
- ;gline <host ou nick> temps raison
- if ($chr(64) isin $2) {
- if ($left($2,1) == $chr(43)) {
- set %ghost $right($2,$calc($len($2) - 1))
- }
- else {
- set %ghost $2
- }
- }
- else {
- if ($left($2,1) == $chr(43)) {
- set %ghost $right($2,$calc($len($2) - 1))
- }
- else {
- set %ghost $2
- }
- if ($isco(%ghost)) {
- set %ghost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
- }
- else {
- sw $sockname : $+ %me 401 %gnick %ghost :No such nick/channel
- halt
- }
- }
- set %tsecs $duration($replace($3,d,d $+ $chr(32),h,h $+ $chr(32),m,m $+ $chr(32),s,s $+ $chr(32)))
- if (!$len($gline.infos(%ghost))) {
- if ((%tsecs != 0) && (%tsecs != 0secs) && (%tsecs)) {
- ;Bon format de durée
- ;gline.add host $ctime timetoexpire host_glineur raison
- ; 1 2 3 4 5
- set %tasctime $ctime
- set %treason $iif($len($4-),$4-,no reason)
- gline.add %ghost %tasctime %tsecs $fullhost($sockname) %treason
- sendpeoplesnomask G *** G:Line added for %ghost on $asctime(%tasctime) GMT (from $fullhost($sockname) to expire at $asctime($calc(%tasctime + %tsecs)) GMT: %treason $+ )
- set %quitchans %chans_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
- set %qfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
- set %qnick $socknick(%sockname_ [ $+ [ $2 ] ])
- set %qserv %server_ [ $+ [ $socknick(%sockname_ [ $+ [ $2 ] ]) ] ]
- set %truc %sockname_ [ $+ [ $2 ] ]
- set %quitraison_ [ $+ [ %truc ] ] User has been banned from %network ( $+ %treason $+ )
- sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ %truc ] ]
- sockclose2 %truc
- gquit %truc User has been banned from %network ( $+ %treason $+ ) %truc
- }
- else {
- ;Permanent g:line !
- set %tasctime $ctime
- set %tsecs 0
- set %treason $iif($len($4-),$4-,no reason)
- gline.add %ghost %tasctime %tsecs $fullhost($sockname) %treason
- sendpeoplesnomask G *** Permanent G:Line added for %ghost on $asctime(%tasctime) GMT (from $fullhost($sockname) $+ : %treason $+ )
- set %quitchans %chans_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
- set %qfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
- set %qnick $socknick(%sockname_ [ $+ [ $2 ] ])
- set %qserv %server_ [ $+ [ $socknick(%sockname_ [ $+ [ $2 ] ]) ] ]
- set %truc %sockname_ [ $+ [ $2 ] ]
- set %quitraison_ [ $+ [ %truc ] ] User has been permanently banned from %network ( $+ %treason $+ )
- sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ %truc ] ]
- sockclose2 %truc
- gquit %truc User has been permanently banned from %network ( $+ %treason $+ ) %truc
- }
- }
- else {
- halt
- }
- }
- else {
- ;Il s'agit d'un removal de g:line
- set %ghost $right($2,$calc($len($2) - 1))
- if ($chr(64) isin %ghost) {
- set %ghost %ghost
- }
- else {
- if ($isco(%ghost)) {
- set %ghost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ %ghost ] ] ] ]
- }
- else {
- sw $sockname : $+ %me 401 %gnick %ghost :No such nick/channel
- }
- }
- if ($gline.infos(%ghost)) {
- ;Elle existe en effet
- set %ginfos $gline.infos(%ghost)
- set %setat $asctime($gettok(%ginfos,1,32))
- set %greason $gettok(%ginfos,4-,32)
- gline.del %ghost
- globops $fullhost($sockname) removed G:Line %ghost (set at %setat - reason: %greason $+ )
- }
- }
- }
- else {
- sw $sockname : $+ %me 481 %gnick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 481 %gnick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- if (%ircop_ [ $+ [ %gnick ] ]) {
- stats G $sockname
- }
- else {
- sw $sockname : $+ %me 481 %gnick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- }
- elseif ($1 == STATS) {
- if ($2) {
- stats $2 $sockname
- }
- else {
- statshelp $sockname
- }
- }
- elseif ($1 == ZLINE) {
- set %znick $socknick($sockname)
- if ($2) {
- if (%ircop_ [ $+ [ %znick ] ]) {
- set %zflags %oline. [ $+ [ %ircop_ [ $+ [ %znick ] ] ] ] [ $+ [ .flags ] ]
- if (z isincs %zflags) {
- if ($left($2,1) != $chr(45)) {
- ;Pour adder une k:line
- ;kline <host ou nick> temps raison
- if ($chr(64) isin $2) {
- if ($left($2,1) == $chr(43)) {
- set %zhost $right($2,$calc($len($2) - 1))
- }
- else {
- set %zhost $2
- }
- }
- else {
- if ($left($2,1) == $chr(43)) {
- set %zhost $right($2,$calc($len($2) - 1))
- }
- else {
- set %zhost $2
- }
- if ($isco($2)) {
- set %zhost *@ $+ $sock(%sockname_ [ $+ [ $2 ] ]).ip
- }
- else {
- sw $sockname : $+ %me 401 %znick %zhost :No such nick/channel
- halt
- }
- }
- set %tsecs $duration($replace($3,d,d $+ $chr(32),h,h $+ $chr(32),m,m $+ $chr(32),s,s $+ $chr(32)))
- if (!$len($zline.infos(%zhost))) {
- if ((%tsecs != 0) && (%tsecs != 0secs) && (%tsecs)) {
- ;Bon format de durée
- ;zline.add host $dctime timetoexpire host_zlineur raison
- ; 1 2 3 4 5
- set %tasctime $ctime
- set %treason $iif($len($4-),$4-,no reason)
- zline.add %zhost %tasctime %tsecs $fullhost($sockname) %treason
- sendpeoplesnomask G *** Z:Line added for %zhost on $asctime(%tasctime) GMT (from $fullhost($sockname) to expire at $asctime($calc(%tasctime + %tsecs)) GMT: %treason $+ )
- }
- else {
- ;Permanent z:line !
- set %tasctime $ctime
- set %tsecs 0
- set %treason $iif($len($4-),$4-,no reason)
- zline.add %zhost %tasctime 0 $fullhost($sockname) %treason
- sendpeoplesnomask G *** Permanent Z:Line added for %zhost on $asctime(%tasctime) GMT (from $fullhost($sockname) $+ : %treason $+ )
- }
- }
- else {
- halt
- }
- }
- else {
- ;Il s'agit d'un removal de z:line
- set %zhost $right($2,$calc($len($2) - 1))
- if ($chr(64) isin %zhost) {
- set %zhost %zhost
- }
- else {
- if ($isco(%zhost)) {
- set %zhost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ %zhost ] ] ] ]
- }
- else {
- sw $sockname : $+ %me 401 %znick %zhost :No such nick/channel
- halt
- }
- }
- if ($zline.infos(%zhost)) {
- ;Elle existe en effet
- set %zinfos $zline.infos(%zhost)
- set %setat $asctime($gettok(%zinfos,1,32))
- set %zreason $gettok(%zinfos,4-,32)
- zline.del %zhost
- globops $fullhost($sockname) removed Z:Line %zhost (set at %setat - reason: %zreason $+ )
- }
- }
- }
- else {
- sw $sockname : $+ %me 481 %znick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 481 %znick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- if (%ircop_ [ $+ [ %znick ] ]) {
- stats z $sockname
- }
- else {
- sw $sockname : $+ %me 481 %znick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- }
- elseif ($1 == GZLINE) {
- set %gznick $socknick($sockname)
- if ($2) {
- if (%ircop_ [ $+ [ %gznick ] ]) {
- set %gzflags %oline. [ $+ [ %ircop_ [ $+ [ %gznick ] ] ] ] [ $+ [ .flags ] ]
- if (Z isincs %gzflags) {
- if ($left($2,1) != $chr(45)) {
- ;Pour adder une gz:line
- ;gzline <host ou nick> temps raison
- if ($chr(64) isin $2) {
- if ($left($2,1) == $chr(43)) {
- set %gzhost $right($2,$calc($len($2) - 1))
- }
- else {
- set %gzhost $2
- }
- }
- else {
- if ($left($2,1) == $chr(43)) {
- set %gzhost $right($2,$calc($len($2) - 1))
- }
- else {
- set %gzhost $2
- }
- if ($isco($2)) {
- set %gzhost *@ $+ $sock(%sockname_ [ $+ [ $2 ] ]).ip
- }
- else {
- sw $sockname : $+ %me 401 %gznick %gzhost :No such nick/channel
- halt
- }
- }
- set %tsecs $duration($replace($3,d,d $+ $chr(32),h,h $+ $chr(32),m,m $+ $chr(32),s,s $+ $chr(32)))
- if (!$len($gzline.infos(%gzhost))) {
- if ((%tsecs != 0) && (%tsecs != 0secs) && (%tsecs)) {
- ;Bon format de durée
- ;gzline.add host $ctime timetoexpire host_gzlineur raison
- ; 1 2 3 4 5
- set %tasctime $ctime
- set %treason $iif($len($4-),$4-,no reason)
- gzline.add %gzhost %tasctime %tsecs $fullhost($sockname) %treason
- sendpeoplesnomask G *** Global Z:Line added for %ghost on $asctime(%tasctime) GMT (from $fullhost($sockname) to expire at $asctime($calc(%tasctime + %tsecs)) GMT: %treason $+ )
- set %quitchans %chans_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
- set %qfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
- set %qnick $socknick(%sockname_ [ $+ [ $2 ] ])
- set %qserv %server_ [ $+ [ $socknick(%sockname_ [ $+ [ $2 ] ]) ] ]
- set %truc %sockname_ [ $+ [ $2 ] ]
- set %quitraison_ [ $+ [ %truc ] ] Z:lined ( $+ %treason $+ )
- sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ %truc ] ]
- sockclose2 %truc
- gquit %truc Z:lined ( $+ %treason $+ ) %truc
- }
- else {
- ;Permanent gz:line !
- set %tasctime $ctime
- set %tsecs 0
- set %treason $iif($len($4-),$4-,no reason)
- gzline.add %gzhost %tasctime 0 $fullhost($sockname) %treason
- sendpeoplesnomask G *** Permanent Global Z:Line added for %gzhost on $asctime(%tasctime) GMT (from $fullhost($sockname) $+ : %treason $+ )
- set %quitchans %chans_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
- set %qfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
- set %qnick $socknick(%sockname_ [ $+ [ $2 ] ])
- set %qserv_ [ $+ [ $socknick(%sockname_ [ $+ [ $2 ] ]) ] ]
- set %truc %sockname_ [ $+ [ $2 ] ]
- set %quitraison_ [ $+ [ %truc ] ] Z:lined ( $+ %treason $+ )
- sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ %truc ] ]
- sockclose2 %truc
- gquit %truc Z:lined ( $+ %treason $+ ) %truc
- }
- }
- else {
- halt
- }
- }
- else {
- ;Il s'agit d'un removal de gz:line
- set %gzhost $right($2,$calc($len($2) - 1))
- if ($chr(64) isin %gzhost) {
- set %gzhost %gzhost
- }
- else {
- if ($isco(%gzhost)) {
- set %gzhost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ %gzhost ] ] ] ]
- }
- else {
- sw $sockname : $+ %me 401 %gznick %gzhost :No such nick/channel
- halt
- }
- }
- if ($gzline.infos(%gzhost)) {
- ;Elle existe en effet
- set %gzinfos $gzline.infos(%gzhost)
- set %setat $asctime($gettok(%gzinfos,1,32))
- set %gzreason $gettok(%gzinfos,4-,32)
- gzline.del %gzhost
- globops $fullhost($sockname) removed Global Z:Line %gzhost (set at %setat - reason: %gzreason $+ )
- }
- }
- }
- else {
- sw $sockname : $+ %me 481 %gznick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 481 %gznick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- if (%ircop_ [ $+ [ %gznick ] ]) {
- stats Z $sockname
- }
- else {
- sw $sockname : $+ %me 481 %gznick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- }
- elseif ($1 == SETIDENT) {
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :Your nick!user@host-mask is now (G-FACTION!lol@G-SERVER-5D1944FA) - To disable ident set change it manually by /setident'ing again
- ;SETIDENT <new ident>
- set %identnick $socknick($sockname)
- if (%ircop_ [ $+ [ %identnick ] ]) {
- if ($2) {
- if ($len($2-) <= 10) {
- if ($norme($2)) {
- set %identd_ [ $+ [ $socknick($sockname) ] ] $2
- sw $sockname : $+ %me NOTICE $socknick($sockname) :Your nick!user@host-mask is now $chr(40) $+ $fullhost($sockname) $+ $chr(41) - To disable ident set change it manually by /setident'ing again
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetIdent Error: A username may contain a-z, A-Z, 0-9, '-', '~' & '.' - Please only use them
- }
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetIdent Error: Usernames are limited to 10 characters.
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %identnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == CHGNAME) {
- ;CHGNAME NICK NEWNAME
- set %identnick $socknick($sockname)
- if (%ircop_ [ $+ [ %identnick ] ]) {
- if ($2) {
- if ($isco($2)) {
- if ($3) {
- if ($len($3-) <= 50) {
- set %realname_ [ $+ [ $2 ] ] $3-
- sw $sockname : $+ %me NOTICE $socknick($sockname) : $+ $2 $+ 's "real name" (GCOS) is now set to be $3-
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /ChgName Error: "Real names" may maximum be 50 characters of length
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 401 $socknick($sockname) $2 :No such nick/channel
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %identnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == CHGIDENT) {
- ;CHGIDENT nick newident
- set %identnick $socknick($sockname)
- if (%ircop_ [ $+ [ %identnick ] ]) {
- if ($2) {
- if ($isco($2)) {
- if ($3) {
- if ($len($3-) <= 10) {
- if ($norme($replace($3,$chr(126),))) {
- set %identd_ [ $+ [ $2 ] ] $3
- sw $sockname : $+ %me NOTICE $socknick($sockname) : $+ $2 $+ 's nick!user@host-mask is now $chr(40) $+ $fullhost($sockname) $+ $chr(41)
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /ChgIdent Error: A ident may contain a-z, A-Z, 0-9, '-', '~' & '.' - Please only use them
- }
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetIdent Error: Usernames are limited to 10 characters.
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 401 $socknick($sockname) $2 :No such nick/channel
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %identnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == SETHOST) {
- ;sethost ma-new-host.net
- set %identnick $socknick($sockname)
- if (%ircop_ [ $+ [ %identnick ] ]) {
- if ($2) {
- if ($len($2) <= 63) {
- if ($norme($2)) {
- set %host_ [ $+ [ $sockname ] ] $2
- sw $sockname : $+ %me NOTICE $socknick($sockname) :Your nick!user@host-mask is now $chr(40) $+ %host_ [ $+ [ $sockname ] ] $+ $chr(41) - To disable it type /mode %identnick -x
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetHost Error: A hostname may contain a-z, A-Z, 0-9, '-' & '.' - Please only use them
- }
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetHost Error: Hostnames are limited to 63 characters.
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %identnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == CHGHOST) {
- ;chghost nick la-new-host.net
- set %identnick $socknick($sockname)
- if (%ircop_ [ $+ [ %identnick ] ]) {
- if ($3) {
- if ($isco($2)) {
- if ($len($3) <= 63) {
- if ($norme($3)) {
- set %host_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ] $3
- sw $sockname : $+ %me NOTICE $socknick($sockname) : $+ $2 $+ 's nick!user@host-mask is now $chr(40) $+ %host_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ] $+ $chr(41)
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /ChgHost Error: A hostname may contain a-z, A-Z, 0-9, '-' & '.' - Please only use them
- }
- }
- else {
- sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /ChgHost Error: Hostnames are limited to 63 characters.
- }
- }
- else {
- sw $sockname : $+ %me 401 $socknick($sockname) $2 :No such nick/channel
- }
- }
- else {
- sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %identnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == SDESC) {
- ;-> irc.G-SERVER.net SDESC haha ^^
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :Your "server description" is now set to be haha ^^ - you have to set it manually to undo it
- set %sdescnick $socknick($sockname)
- if (%ircop_ [ $+ [ %sdescnick ] ]) {
- if ($2) {
- set %me.info $2-
- sw $sockname : $+ %me NOTICE %sdescnick :Your "server description" is now set to be $2- - you have to set it manually to undo it
- }
- else {
- sw $sockname : $+ %me 461 %sdescnick $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %sdescnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == DIE) {
- set %dienick $socknick($sockname)
- if (%ircop_ [ $+ [ %dienick ] ]) {
- set %dieflags %oline. [ $+ [ %ircop_ [ $+ [ %dienick ] ] ] ] [ $+ [ .flags ] ]
- if (D isincs %dieflags) {
- if ($2) {
- if ($2 == %diepass) {
- ;-> irc.G-SERVER.net DIE pass
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- Server Terminating by request of G-FACTION
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :Server Terminating. G-FACTION
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :Server Terminating.
- ;Envoyer les notices à tous les IRCops locaux
- set %ilf $userslistfile
- if (!$exists(%ilf)) {
- goto dieend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (%server_ [ $+ [ %r ] ] == %me) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- Server Terminating by request of %dienick
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :Server Terminating. %dienick
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :Server Terminating.
- }
- }
- .fclose %file
- :dieend
- ;Fin
- crashserv
- }
- else {
- ;<- :irc.G-SERVER.net 464 G-FACTION :Password Incorrect
- sw $1 : $+ %me 464 %dienick :Password Incorrect
- }
- }
- else {
- sw $sockname : $+ %me 461 %dienick $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %dienick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 481 %dienick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == RESTART) {
- set %dienick $socknick($sockname)
- if (%ircop_ [ $+ [ %dienick ] ]) {
- set %dieflags %oline. [ $+ [ %ircop_ [ $+ [ %dienick ] ] ] ] [ $+ [ .flags ] ]
- if (R isincs %dieflags) {
- if ($2) {
- if ($2 == %restartpass) {
- ;-> irc.G-SERVER.net RESTART pass
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- Server is Restarting by request of G-FACTION
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- Aieeeee!!! Restarting server... No reason
- ;Envoyer les notices à tous les IRCops locaux
- set %ilf $userslistfile
- if (!$exists(%ilf)) {
- goto restartend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (%server_ [ $+ [ %r ] ] == %me) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- Server is Restarting by request of %dienick
- }
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- Aieeeee!!! Restarting server... $iif($3,$3-,No reason)
- }
- }
- }
- .fclose %file
- :restartend
- ;Fin
- restartserv
- }
- else {
- ;<- :irc.G-SERVER.net 464 G-FACTION :Password Incorrect
- sw $1 : $+ %me 464 %dienick :Password Incorrect
- }
- }
- else {
- sw $sockname : $+ %me 461 %dienick $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %dienick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 481 %dienick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == REHASH) {
- ;rehash
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- G-FACTION is rehashing server config file
- ;<- :irc.G-SERVER.net 382 G-FACTION unrealircd.conf :Rehashing
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- Loading IRCd configuration ..
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- Configuration loaded without any problems ..
- set %rhnick $socknick($sockname)
- if (%ircop_ [ $+ [ %rhnick ] ]) {
- set %rhflags %oline. [ $+ [ %ircop_ [ $+ [ %rhnick ] ] ] ] [ $+ [ .flags ] ]
- if (r isincs %rhflags) {
- sw $sockname : $+ %me 382 %rhnick g-ircd.g :Rehashing
- ;Envoyer la notice à tous les IRCops locaux
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto rehashend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- %rhnick is rehashing server config file
- }
- }
- }
- .fclose %file
- :rehashend
- ;Fin
- rh %rhnick
- }
- else {
- sw $sockname : $+ %me 481 %rhnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 481 %rhnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == LAG) {
- ;<- :irc.G-SERVER.net 461 G-FACTION LAG :Not enough parameters
- ;<- :irc.G-SERVER.net 402 G-FACTION hhh :No such server
- ;<- :irc.G-SERVER.net NOTICE G-FACTION :Lag reply -- irc.G-SERVER.net irc.g-server.net 1108233190
- set %lagnick $socknick($sockname)
- if (%ircop_ [ $+ [ %lagnick ] ]) {
- if ($2) {
- if ($2 == %me) {
- ;Modifier cette condition lors du passage aux links
- sw $sockname : $+ %me NOTICE %lagnick :Lag reply -- %me $2 $ctime
- }
- else {
- sw $sockname : $+ %me 402 %lagnick :No such server
- }
- }
- else {
- sw $sockname : $+ %me 461 %lagnick $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %lagnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == SAJOIN) {
- ;join $sockname $1-
- set %joinnick $socknick($sockname)
- if (%ircop_ [ $+ [ %joinnick ] ]) {
- if ($3) {
- if ($isco($2)) {
- if ($left($3,1) == $chr(35)) {
- join %sockname_ [ $+ [ $2 ] ] JOIN $3
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me NOTICE $2 :*** You were forced to join $3
- ;Envoyer la notice à tous les IRCops locaux
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto sajoinend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- %joinnick used SAJOIN to make $2 join $3
- }
- }
- }
- .fclose %file
- :sajoinend
- ;Fin
- }
- else {
- sw $sockname : $+ %me 403 %joinnick $3 :No such channel
- }
- }
- else {
- sw $sockname : $+ %me 421 %joinnick $2 :No such nick/channel
- }
- }
- else {
- sw $sockname : $+ %me 461 %joinnick $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %joinnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == SAPART) {
- ;join $sockname $1-
- set %joinnick $socknick($sockname)
- if (%ircop_ [ $+ [ %joinnick ] ]) {
- if ($3) {
- if ($isco($2)) {
- if ($left($3,1) == $chr(35)) {
- part %sockname_ [ $+ [ $2 ] ] PART $3
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me NOTICE $2 :*** You were forced to part $3
- ;Envoyer la notice à tous les IRCops locaux
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto sapartend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- %joinnick used SAPART to make $2 part $3
- }
- }
- }
- .fclose %file
- :sapartend
- ;Fin
- }
- else {
- sw $sockname : $+ %me 403 %joinnick $3 :No such channel
- }
- }
- else {
- sw $sockname : $+ %me 421 %joinnick $2 :No such nick/channel
- }
- }
- else {
- sw $sockname : $+ %me 461 %joinnick $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %joinnick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == SAMODE) {
- ;SAMODE #chan +modes-....
- ;applychmodesonrequest $sockname $2 $3-
- set %sanick $socknick($sockname)
- if (%ircop_ [ $+ [ %sanick ] ]) {
- set %saflags %oline. [ $+ [ %ircop_ [ $+ [ %sanick ] ] ] ] [ $+ [ .flags ] ]
- if (a isincs %saflags) {
- if ($3) {
- if ($chanexists($2)) {
- ;:*** Global -- from irc.G-SERVER.net: G-FACTION used SAMODE #G-FACTION (+i )
- ;Envoyer la notice à tous les IRCops locaux
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto samodeend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %sanick :*** Global -- from %me $+ : %sanick used SAMODE $2 ( $+ $3- $+ )
- }
- }
- .fclose %file
- :samodeend
- ;Fin
- applychmodesonrequest $sockname $+ $chr(96) $+ %me $2-
- }
- else {
- sw $sockname : $+ %me 401 %sanick $2 :No such nick/channel
- }
- }
- else {
- sw $sockname : $+ %me 461 %sanick $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %sanick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- sw $sockname : $+ %me 481 %sanick :Permission denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == SHUN) {
- set %snick $socknick($sockname)
- if ($2) {
- if (%ircop_ [ $+ [ %snick ] ]) {
- if ($left($2,1) != $chr(45)) {
- ;Pour adder un shun
- ;shun (+)<host ou nick> temps raison
- if ($chr(64) isin $2) {
- if ($left($2,1) == $chr(43)) {
- set %shost $right($2,$calc($len($2) - 1))
- }
- else {
- set %shost $2
- }
- }
- else {
- if ($left($2,1) == $chr(43)) {
- set %shost $right($2,$calc($len($2) - 1))
- }
- else {
- set %shost $2
- }
- if ($isco(%shost)) {
- set %shost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
- }
- else {
- sw $sockname : $+ %me 401 %snick %shost :No such nick/channel
- halt
- }
- }
- set %tsecs $duration($replace($3,d,d $+ $chr(32),h,h $+ $chr(32),m,m $+ $chr(32),s,s $+ $chr(32)))
- if (!$len($shun.infos(%shost))) {
- if ((%tsecs != 0) && (%tsecs != 0secs)) {
- ;Bon format de durée
- ;shun.add host $ctime timetoexpire host_shuner raison
- ; 1 2 3 4 5
- set %tasctime $ctime
- set %treason $iif($len($4-),$4-,no reason)
- shun.add %shost %tasctime %tsecs $fullhost($sockname) %treason
- sendpeoplesnomask G *** Shun added for %shost on $asctime(%tasctime) GMT (from $fullhost($sockname) to expire at $asctime($calc(%tasctime + %tsecs)) GMT: %treason $+ )
- }
- else {
- ;Permanent shun !
- set %tasctime $ctime
- set %tsecs 0
- set %treason $iif($len($4-),$4-,no reason)
- shun.add %shost %tasctime 0 $fullhost($sockname) %treason
- sendpeoplesnomask G *** Permanent Shun added for %shost on $asctime(%tasctime) GMT (from $fullhost($sockname) $+ : %treason $+ )
- }
- }
- else {
- halt
- }
- }
- else {
- ;Il s'agit d'un removal de shun
- set %shost $right($2,$calc($len($2) - 1))
- if ($chr(64) isin %shost) {
- set %shost %shost
- }
- else {
- if ($isco(%ghost)) {
- set %shost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ %shost ] ] ] ]
- }
- else {
- sw $sockname : $+ %me 401 %snick %shost :No such nick/channel
- }
- }
- if ($shun.infos(%shost)) {
- ;Elle existe en effet
- set %sinfos $shun.infos(%shost)
- set %setat $asctime($gettok(%sinfos,1,32))
- set %sreason $gettok(%sinfos,4-,32)
- shun.del %shost
- globops $fullhost($sockname) removed Shun %shost (set at %setat - reason: %sreason $+ )
- }
- }
- }
- else {
- sw $sockname : $+ %me 481 %snick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- else {
- if (%ircop_ [ $+ [ %snick ] ]) {
- stats s $sockname
- }
- else {
- sw $sockname : $+ %me 481 %snick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- }
- elseif ($1 == TEMPSHUN) {
- ;tempshun (+|-)nickname
- set %tsn $socknick($sockname)
- if (%ircop_ [ $+ [ %tsn ] ]) {
- if ($2) {
- if (($left($2,1) == $chr(43)) || ($left($2,1) == $chr(45))) {
- set %tsign $left($2,1)
- set %toshun $right($2,$calc($len($2) - 1))
- }
- else {
- set %tsign $chr(43)
- set %toshun $2
- }
- if ($isco(%toshun)) {
- if (%tsign == $chr(43)) {
- ;Ajouter %toshun à la liste des temp-shunned
- if (!$shunned(%toshun)) {
- tmpshun.add %toshun
- globops Temporary shun added on user %toshun ( $+ $gettok($vraiefullhost(%sockname_ [ $+ [ %toshun ] ]),2,$asc(!)) $+ ) by %tsn $chr(91) $+ $iif($3-,$3-,no reason) $+ $chr(93)
- }
- else {
- sw $sockname : $+ %me NOTICE %tsn :User ' $+ %toshun $+ ' already shunned
- }
- }
- else {
- ;Supprimer %toshun de la liste des temp-shunned
- if ($shunned(%toshun)) {
- tmpshun.del %toshun
- globops Removed temporary shun on user %toshun ( $+ $gettok($vraiefullhost(%sockname_ [ $+ [ %toshun ] ]),2,$asc(!)) $+ ) by %tsn
- }
- else {
- ;User 'g0d' is not shunned
- sw $sockname : $+ %me NOTICE %tsn :User ' $+ %toshun $+ ' is not shunned
- }
- }
- }
- else {
- sw $sockname : $+ %me 401 %tsn %toshun :No such nick/channel
- }
- }
- else {
- sw $sockname : $+ %me 461 %tsn $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %tsn :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == CONNECT) {
- ;connect server-bloc-name [port]
- set %connectnick $socknick($sockname)
- if (%ircop_ [ $+ [ %connectnick ] ]) {
- if ($2) {
- if (!$3) {
- if (%link_ [ $+ [ $2 ] ] [ $+ [ .port ] ]) {
- ;Ce bloc existe
- if ($len(%link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ]) >= 3) {
- set %tempsockname $+(gserv.,$2)
- sw $sockname : $+ %me NOTICE %connectnick :*** Connecting to $2 $+ $chr(91) $+ %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] $+ ].
- echo -a 4set %connect_ [ $+ [ %tempsockname ] ] $sockname $2 %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ]
- set %connect_ [ $+ [ %tempsockname ] ] $sockname $2 %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ]
- sockopen %tempsockname %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] %link_ [ $+ [ $2 ] ] [ $+ [ .port ] ]
- }
- else {
- sw $sockname : $+ %me NOTICE %connectnick :*** Notice -- Host %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] unknown
- }
- }
- else {
- sw $sockname : $+ %me NOTICE %connectnick :*** Connect: Server $2 is not configured for linking
- }
- }
- else {
- if ($len(%link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ]) >= 3) {
- set %tempsockname $+(gserv.,$2)
- sw $sockname : $+ %me NOTICE %connectnick :*** Connecting to $2 $+ $chr(91) $+ %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] $+ ].
- set %connect_ [ $+ [ %tempsockname ] ] $sockname $2 %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ]
- sockopen %tempsockname %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] $3
- }
- else {
- sw $sockname : $+ %me NOTICE %connectnick :*** Notice -- Host %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] unknown
- }
- }
- }
- else {
- sw $sockname : $+ %me 461 %tsn $1 :Not enough parameters
- }
- }
- else {
- sw $sockname : $+ %me 481 %connectnick :Permission Denied- You do not have the correct IRC operator privileges
- }
- }
- elseif ($1 == MAP) {
- showmap $sockname
- }
- else {
- sw $sockname : $+ %me 421 $socknick($sockname) $1 :Unknown command
- }
- }
- else {
- if ($1 == NICK) {
- set %tnick $2
- if ($correctnickname(%tnick)) {
- if (!$isco(%tnick)) {
- set %sockname_ [ $+ [ %tnick ] ] $sockname
- set %nick_of_sockname_ [ $+ [ $sockname ] ] %tnick
- set %nick_ [ $+ [ %tnick ] ] $true
- }
- else {
- ;<- :besancon.fr.epiknet.org 433 * G-FACTION :Nickname is already in use.
- ;sw $sockname : $+ %me 433 * %tnick :Nickname is already in use.
- sw $sockname ERROR :Closing Link: Nickname is already in use. Please change.
- sockclose2 $sockname
- .timerkill $+ $sockname -m 1 200 /sockclose $sockname
- }
- }
- else {
- sw $sockname ERROR :Closing link: Erroneous Nickname: Illegal characters - Not allowed by the G-NORM
- sockclose2 $sockname
- .timerkill $+ $sockname -m 1 200 /sockclose $sockname
- }
- }
- elseif ($1 == USER) {
- if (%nick_of_sockname_ [ $+ [ $sockname ] ]) {
- ;USER _G-FACTION "" "127.0.0.1" :I'm g0d. g0d is IRC-Master. g0d made IRC on 8° day!
- set %tnick %nick_of_sockname_ [ $+ [ $sockname ] ]
- set %usergiven_ [ $+ [ $sockname ] ] on
- ;.timerusergiven $+ $sockname off
- set %tidentd $2
- set %trealname $5-
- set %ping_ [ $+ [ $sockname ] ] $randping
- set %trealname $right(%trealname,$calc($len(%trealname) - 1))
- set %realname_ [ $+ [ %tnick ] ] %trealname
- set %identd_ [ $+ [ %tnick ] ] %tidentd
- set %server_ [ $+ [ %tnick ] ] %me
- set %reginserver_ [ $+ [ $sockname ] ] $true
- ;if ($isco($socknick($sockname))) {
- ; ;hello $sockname
- ; ;usergiven $sockname
- ;}
- ;else {
- ; sw $sockname ERROR :Closing Link: Nickname is already in use. Please change.
- ; sockclose2 $sockname
- ; .timerkill $+ $sockname -m 1 200 /sockclose $sockname
- ;}
- }
- else {
- }
- }
- else {
- ;:irc.g-neration.com 451 m :You have not registered
- sw $sockname : $+ %me 451 $gettok(%sr,1,32) :You have not registered
- }
- }
- :toutefin
- }
-
- alias nnullepart {
- ;Vérifier si la personne n'est sur aucun canal avec le mode N
- if ($1) {
- set %tmpsn %sockname_ [ $+ [ $1 ] ]
- set %tmpchans %chans_ [ $+ [ %tmpsn ] ]
- set %nbdchans $gettok(%tmpchans,0,32)
- set %nn $true
- var %i 1
- while (%i <= %nbdchans) {
- set %tmpchan $gettok(%tmpchans,%i,32)
- ;echo -a $chmodes(%tmpchan)
- if (N isincs $replacecs($chmodes(%tmpchan),1,N,2,L,3,S,4,C,5,T)) {
- set %nn %tmpchan
- }
- inc %i
- }
- return %nn
- }
- }
-
- alias sendpeoplesnomask {
- ;sendpeoplesnomask snomask message
- ; 1 2
- ;Envoit le message en notice aux personnes ayant le snomask 'snomask'
- if ($2) {
- if (!$exists($userslistfile)) {
- goto sendpeoplesnomaskend
- }
- var %i 1
- var %file $gopen($userslistfile)
- set %error $false
- while ($fread(%file)) {
- set %r $ifmatch
- if ((!$sock(%sockname_ [ $+ [ %r ] ])) && (%server_ [ $+ [ %r ] ] == %me)) {
- echo @sr 12Ghost in userslistfile (sendpeoplesnomask function) nickname: $+ %r -> sockname is not available and this person is on my server...
- set %error %i
- }
- unset %tsnomask
- set %tsnomask %snomask_ [ $+ [ %r ] ]
- ;:irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- R
- if (%tsnomask) {
- if ($1 isincs %tsnomask) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r : $+ $2-
- }
- }
- inc %i
- }
- fclose %file
- if (%error) { write -dl $+ %error $userslistfile }
- :sendpeoplesnomaskend
- }
- }
-
- alias shunfile { return $mircdir $+ System\tshun.db }
-
- alias tmpshun.add {
- if ($1) {
- if (!$exists($shunfile)) {
- goto tmpshunaddend
- }
- var %i 0
- var %file $gopen($shunfile)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if (%r == $1) {
- write -dl $+ %i $shunfile
- .fclose %file
- break
- }
- }
- if ($fopen(%file)) {
- .fclose %file
- }
- :tmpshunaddend
- write $shunfile $1
- }
- }
-
- alias tmpshun.del {
- if ($1) {
- if (!$exists($shunfile)) {
- goto tmpshundelend
- }
- var %i 0
- var %file $gopen($shunfile)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if (%r == $1) {
- write -dl $+ %i $shunfile
- .fclose %file
- break
- }
- }
- if ($fopen(%file)) {
- .fclose %file
- }
- :tmpshundelend
- }
- }
-
- alias shunned {
- if ($1) {
- if (!$exists($shunfile)) {
- goto shunnedend
- }
- var %i 0
- var %file $gopen($shunfile)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if (%r == $1) {
- .fclose %file
- return $true
- }
- }
- .fclose %file
- :shunnedend
- return $false
- }
- }
-
- alias chanexists {
- ;$chanexists(#chan) = $true|$false
- if ($1) {
- ;$chanlistfile : $chanfile(#chan)
- var %i 1
- if (!$exists($chanlistfile)) {
- goto chanexistsend
- }
- var %file $gopen($chanlistfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if (%r == $1) {
- .fclose %file
- return $true
- }
- }
- .fclose %file
- :chanexistsend
- return $false
- }
- }
-
- alias crashserv {
- sockclose *
- exit
- }
- alias restartserv {
- sockclose *
- start
- }
-
- alias norme {
- if ($1) {
- var %lettres abcdefghijklmnopqrstuvwxyz0123456789-.
- var %len $len($1)
- var %i 1
- while (%i <= %len) {
- set %tmplettre $mid($1,%i,1)
- var %o 1
- var %good $false
- while (%o <= 38) {
- if (%tmplettre == $mid(%lettres,%o,1)) {
- var %good $true
- break
- }
- inc %o
- }
- if (!%good) { return $false }
- inc %i
- }
- return $true
- }
- else { return $false }
- }
-
-
-
- alias statshelp {
- ;statshelp sockname
-
- ;À faire...
- }
-
- alias stats {
- ;stats K sockname
- if ($2) {
- if (($1 == K) || ($1 == G) || ($1 == Z)) {
- if ($1 === z) {
- set %kg Z
- }
- elseif ($1 === Z) {
- set %kg GZ
- }
- else {
- set %kg $1
- }
- set %kfile $linesfile
- if (!$exists(%kfile)) {
- goto statsend
- }
- var %file $gopen(%kfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if ($gettok(%r,1,32) == %kg) {
- ;223 G-FACTION K *@127.0.0.8 326571 19031 G-FACTION!~_G-FACTIO@netadmin.g-neration.com :lol
- ; hosttemps restant temps passé host_klineur raison
- ;K *@test.lol 1088798414 2073600 G-FACTION!_G-FACTION@G-IRCD-15873636551896422.mshome.net tg connard
- set %khost $gettok(%r,2,32)
- set %temps.max $calc($gettok(%r,3,32) + $gettok(%r,4,32))
- set %temps.today $ctime
- set %temps.restant $calc(%temps.max - %temps.today)
- set %temps.set $gettok(%r,3,32)
- set %temps.passe $calc(%temps.today - %temps.set)
- if ($gettok(%r,4,32) != 0) {
- sw $2 : $+ %me 223 $socknick($2) $upper(%kg) %khost %temps.restant %temps.passe $gettok(%r,5,32) : $+ $gettok(%r,6-,32)
- }
- else {
- sw $2 : $+ %me 223 $socknick($2) $upper(%kg) %khost 0 %temps.passe $gettok(%r,5,32) : $+ $gettok(%r,6-,32)
- }
- }
- }
- .fclose %file
- :statsend
- }
- sw $2 219 $socknick($2) g :End of /STATS report
- }
- }
-
- alias linesfile {
- return $mircdir $+ System\lines.db
- }
-
- alias kline.add {
- ;kline.add host $ctime timetoexpire host_klineur raison
- ; 1 2 3 4 5
- if ($5) {
- write $linesfile K $1-
- }
- }
-
- alias kline.del {
- if ($1) {
- var %i 0
- set %kfile $linesfile
- if (!$exists(%kfile)) {
- halt
- }
- unset %kline
- unset %r
- var %file $gopen(%kfile)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if ($gettok(%r,1,32) == K) {
- if ($gettok(%r,2,32) == $1) {
- write -dl $+ %i %kfile
- break
- }
- }
- }
- .fclose %file
- }
- }
-
- alias kline.infos {
- if ($1) {
- set %kfile $linesfile
- if (!$exists(%kfile)) {
- goto klineinfosend
- }
- unset %kinfos
- var %file $gopen(%kfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if ($gettok(%r,1,32) == K) {
- if ($gettok(%r,2,32) == $1) {
- set %kinfos $gettok(%r,3-,32)
- }
- }
- }
- .fclose %file
- if (%kinfos) {
- return %kinfos
- }
- }
- :klineinfosend
- }
-
- alias whowas.exists {
- if ($1) {
- set %wwf $whowas.file
- unset %r
- set %wwexists $false
- var %file $gopen(%wwf)
- while ($fread(%file)) {
- set %r $ifmatch
- if ($left(%r,1) == $chr(60)) {
- set %wwwnick $left($gettok(%r,1,60),$calc($len($gettok(%r,1,60)) - 1))
- if (%wwwnick == $1) {
- set %wwexists $true
- }
- }
- }
- .fclose %file
- }
- return %wwexists
- }
-
- alias whowas.file {
- return $mircdir $+ System\whowas.db
- }
-
- alias whowas.host {
- if ($1) {
- set %wwf $whowas.file
- set %watt $false
- unset %wwhost
- unset %r
- set %wwexists $false
- var %file $gopen(%wwf)
- while ($fread(%file)) {
- set %r $ifmatch
- if (!%watt) {
- if ($left(%r,1) == $chr(60)) {
- set %wwwnick $left($gettok(%r,1,60),$calc($len($gettok(%r,1,60)) - 1))
- if (%wwwnick == $1) {
- set %watt $true
- }
- }
- }
- else {
- set %wwitem $gettok(%r,1,61)
- if (%wwitem == host) {
- set %wwhost $gettok(%r,2-,61)
- set %watt $false
- break
- }
- }
- }
- .fclose %file
- }
- return %wwhost
- }
-
- alias whowas.vraiehost {
- if ($1) {
- set %wwf $whowas.file
- set %watt $false
- unset %wwvraiehost
- unset %r
- set %wwexists $false
- var %file $gopen(%wwf)
- while ($fread(%file)) {
- set %r $ifmatch
- if (!%watt) {
- if ($left(%r,1) == $chr(60)) {
- set %wwwnick $left($gettok(%r,1,60),$calc($len($gettok(%r,1,60)) - 1))
- if (%wwwnick == $1) {
- set %watt $true
- }
- }
- }
- else {
- set %wwitem $gettok(%r,1,61)
- if (%wwitem == vraiehost) {
- set %wwvraiehost $gettok(%r,2-,61)
- set %watt $false
- break
- }
- }
- }
- .fclose %file
- }
- return %wwvraiehost
- }
-
- alias whowas.server {
- if ($1) {
- set %wwf $whowas.file
- set %watt $false
- unset %wwserver
- unset %r
- set %wwexists $false
- var %file $gopen(%wwf)
- while ($fread(%file)) {
- set %r $ifmatch
- if (!%watt) {
- if ($left(%r,1) == $chr(60)) {
- set %wwwnick $left($gettok(%r,1,60),$calc($len($gettok(%r,1,60)) - 1))
- if (%wwwnick == $1) {
- set %watt $true
- }
- }
- }
- else {
- set %wwitem $gettok(%r,1,61)
- if (%wwitem == server) {
- set %wwserver $gettok(%r,2-,61)
- set %watt $false
- break
- }
- }
- }
- .fclose %file
- }
- return %wwserver
- }
-
- alias whowas.add.host {
- ;whowas.add.host nick host-
- ; $1 $2
- if ($2) {
- set %wwf $whowas.file
- write %wwf $chr(60) $+ $1 $+ $chr(62)
- write %wwf host= $+ $2-
- }
- }
-
- alias whowas.add.vraiehost {
- ;whowas.add.host nick host-
- ; $1 $2
- if ($2) {
- set %wwf $whowas.file
- write %wwf vraiehost= $+ $2-
- }
- }
-
- alias whowas.add.server {
- ;whowas.add.delete nick server-
- ; $1 $2
- if ($2) {
- set %wwf $whowas.file
- write %wwf server= $+ $2-
- }
- }
-
- alias whowas.add.private {
- if ($1) {
- ;whowas.del $socknick($1)
- whowas.add.host $socknick($1) $fullhost($1) * : $+ %realname_ [ $+ [ $socknick($1) ] ]
- whowas.add.vraiehost $socknick($1) $vraiefullhost($1) * : $+ %realname_ [ $+ [ $socknick($1) ] ]
- whowas.add.server $socknick($1) %me : $+ $asctime
- }
- }
-
- alias whowas.del {
- if ($1) {
- set %wwf $whowas.file
- set %watt $false
- var %i 0
- var %file $gopen(%wwf)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if (!%watt) {
- if ($left(%r,1) == $chr(60)) {
- set %wwwnick $left($gettok(%r,1,60),$calc($len($gettok(%r,1,60)) - 1))
- if (%wwwnick == $1) {
- set %watt $true
- write -dl $+ %i %wwf
- if (%i > 1) {
- dec %i
- }
- }
- }
- }
- else {
- if ($left(%r,1) != $chr(60)) {
- write -dl $+ %i %wwf
- if (%i > 1) {
- dec %i
- }
- }
- else {
- set %watt $false
- break
- }
- }
- }
- .fclose %file
- }
- }
-
- alias servernotice {
- ;servernotice snomask message
- if ($2) {
- set %slines
- set %sucf $userslistfile
- var %file $gopen(%sucf)
- while ($fread(%file)) {
- set %r $ifmatch
- set %tsnomask %snomask_ [ $+ [ %r ] ]
- if ($1 isincs %tsnomask) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r : $+ $2-
- }
- }
- .fclose %file
- }
- }
-
- alias ggmt {
- set %gmt $asctime(zzz)
- set %ggmt $left(%gmt,3) $+ $chr(58) $+ 00
- return %ggmt
- }
-
- alias gdate {
- set %gdate $asctime
- set %gdate $convdate($gettok(%gdate,1,32)) $convdate($gettok(%gdate,2,32)) $gettok(%gdate,3,32) $gettok(%gdate,5,32)
- set %gdate %gdate -- $time(HH:nn) $ggmt
- return %gdate
- }
-
- alias convdate {
- if ($1 == mon) { return Monday }
- elseif ($1 == tue) { return Tuesday }
- elseif ($1 == wed) { return Wednesday }
- elseif ($1 == thu) { return Thursday }
- elseif ($1 == fri) { return Friday }
- elseif ($1 == sat) { return Saturday }
- elseif ($1 == sun) { return Sunday }
-
- elseif ($1 == jan) { return January }
- elseif ($1 == feb) { return February }
- elseif ($1 == mar) { return March }
- elseif ($1 == apr) { return April }
- elseif ($1 == may) { return May }
- elseif ($1 == jun) { return June }
- elseif ($1 == jul) { return Jully }
- elseif ($1 == aug} { return August }
- elseif ($1 == sep) { return September }
- elseif ($1 == oct) { return October }
- elseif ($1 == nov) { return November }
- elseif ($1 == dec) { return December }
- }
-
- alias positivewatch {
- if ($1) {
- var %i 1
- set %pwtok $gettok($1,0,32)
- unset %endpwlist
- while (%i <= %pwtok) {
- set %tpwnick $gettok($1,%i,32)
- if ($left(%tpwnick,1) == $chr(43)) {
- set %endpwlist %endpwlist $right(%tpwnick,$calc($len(%tpwnick) - 1))
- }
- inc %i
- }
- return %endpwlist
- }
- }
-
- alias chanlistfile {
- return $mircdir $+ System\chan.lst
- }
-
- alias addchannellist {
- ;addchannellist #chan
- if ($1) {
- echo @sr 4added $1 un chan list file
- write $chanlistfile $1
- }
- }
-
- alias delchannellist {
- ;delchannelist #chan
- if ($1) {
- set %dfile $chanlistfile
- unset %dline
- var %i 0
- var %file $gopen(%dfile)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if (%r == $1) {
- set %dline %i
- }
- }
- .fclose %file
- if (%dline) {
- echo @sr 4deleted $1 (line %dline $+ ) in %dfile
- write -dl $+ %dline %dfile
- }
- }
- }
-
- alias negativewatch {
- if ($1) {
- var %i 1
- set %nwtok $gettok($1,0,32)
- unset %endnwlist
- while (%i <= %nwtok) {
- set %tnwnick $gettok($1,%i,32)
- if ($left(%tnwnick,1) == $chr(45)) {
- set %endnwlist %endnwlist $right(%tnwnick,$calc($len(%tnwnick) - 1))
- }
- inc %i
- }
- return %endnwlist
- }
- }
-
- alias addwatchedlist {
- if ($2) {
- set %watchedby_ [ $+ [ $1 ] ] $replace(%watchedby_ [ $+ [ $1 ] ],$2,)
- set %watchedby_ [ $+ [ $1 ] ] $addtok(%watchedby_ [ $+ [ $1 ] ],$2,32)
- }
- }
-
- alias delwatchedlist {
- if ($2) {
- set %watchedby_ [ $+ [ $1 ] ] $replace(%watchedby_ [ $+ [ $1 ] ],$2,)
- }
- }
-
- alias signon {
- ;$signon(sockname) retourne le sign on time d'un user
- if ($1) {
- return %signon_ [ $+ [ $1 ] ]
- }
- }
-
- alias credits {
- if ($1) {
- set %cnick $socknick($sockname)
- var %file $gopen(credits.txt)
- while ($fread(%file)) {
- sw $1 : $+ %me 371 %cnick : $+ $ifmatch
- }
- .fclose %file
- sw $1 : $+ %me 371 %cnick :Birth Date: $readini(System\G-IRCD.dat,GlobalVars,creationtime)
- sw $1 : $+ %me 371 %cnick :On-line since $readini(System\G-IRCD.dat,GlobalVars,online)
- sw $1 : $+ %me 374 %cnick :End of /INFO list.
- }
- }
-
- alias info {
- if ($1) {
- sw $1 : $+ %me 371 $socknick($1) :######## G-IRCD 1.0 ########
- sw $1 : $+ %me 371 $socknick($1) :G-IRCD was entierly made by G-FACTION
- sw $1 : $+ %me 371 $socknick($1) :<administrateur@g-neration.com>
- sw $1 : $+ %me 371 $socknick($1) :-
- sw $1 : $+ %me 371 $socknick($1) :Credits - Type /Credits
- sw $1 : $+ %me 371 $socknick($1) :G-IRCD Homepage: http://www.g-neration.com/g-ircd/
- sw $1 : $+ %me 371 $socknick($1) :############################
- sw $1 : $+ %me 371 $socknick($1) :Birth Date: $readini(System\G-IRCD.dat,GlobalVars,creationtime)
- sw $1 : $+ %me 371 $socknick($1) :On-line since $readini(System\G-IRCD.dat,GlobalVars,online)
- sw $1 : $+ %me 374 $socknick($1) :End of /INFO list.
- }
- }
-
- alias isvhostlogin {
- if ($1) {
- if (%vhost_ [ $+ [ $1 ] ]) {
- return $true
- }
- else {
- return $false
- }
- }
- }
-
- alias vhostlogpass {
- ;$vhostlogpass(login,pass)
- if ($2) {
- if (%vhost_ [ $+ [ $1 ] ] [ $+ [ .password ] ] == $2) {
- return $true
- }
- else {
- return $false
- }
- }
- }
-
- alias gquit {
- ;gquit sockname raison
- if ($2) {
- set %qchans %quitchans
- set %qfh %qfullhost
- set %qn %qnick
- set %srv %qserv
- unset %ghosts
- var %i 0
- if (!$exists($userslistfile)) {
- goto gquitend
- }
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- ;;<- :Rockin`Squat!Rockin_Squ@EpiK-3A52AF76.ppp.tiscali.fr QUIT :Quit:
- inc %i
- set %r $ifmatch
- if ($comchans(%qchans,%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ])) {
- if ((%sockname_ [ $+ [ %r ] ]) && (%server_ [ $+ [ %r ] ] == %me)) {
- if ($gettok($2-,$gettok($2-,0,32),32) == $1) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %qfh QUIT : $+ $gettok($2-,1- $+ $calc($gettok($2-,0,32) - 1),32)
- }
- else {
- sw %sockname_ [ $+ [ %r ] ] : $+ %qfh QUIT : $+ $2-
- }
- }
- else {
- set %ghosts $addtok(%ghosts,%i,32)
- }
- }
- }
- .fclose %file
- :gquitendd
- var %y 1
- set %gtk $gettok(%ghosts,0,32)
- while (%y <= %gtk) {
- write -dl $+ $gettok(%ghosts,%y,32) $userslistfile
- inc %y
- }
- delservnick %qnick
- var %o 1
- set %nbdchans $gettok(%qchans,0,32)
- while (%o <= %nbdchans) {
- set %fuckchan $gettok(%qchans,%o,32)
- delchannick %qn %fuckchan
- delnick %fuckchan %qn on
- remini $nfochanfile(%fuckchan) STSM %qnick
- if (!$lines($chanfile(%fuckchan))) {
- .remove $chanfile(%fuckchan)
- .remove $nfochanfile(%fuckchan)
- delchannellist %fuckchan
- log [6CHAN] Channel %fuckchan deleted
- }
- inc %o
- }
- ;<- ERROR :Closing Link: huh[192.168.0.103] (Quit: !!)
- if ($sock($1)) {
- if ($gettok($2-,$gettok($2-,0,32),32) == $1) {
- sw $1 ERROR :Closing Link: %qn $+ $chr(91) $+ $sock($1).ip $+ $chr(93) ( $+ $gettok($2-,1- $+ $calc($gettok($2-,0,32) - 1),32) $+ )
- ;ERROR :Closing Link: Stuff[192.168.0.1] G-FACTION ([irc.g-neration.com] Local kill by G-FACTION (!))
- }
- else {
- sw $1 ERROR :Closing Link: %qn $+ $chr(91) $+ $sock($1).ip $+ $chr(93) (Quit: $2- $+ )
- }
- }
- sockclose $1
- }
- }
-
- on *:signal:G-DNS: {
- if ($left($2,5) != gserv) {
- ;Il s'agit de la résolution pour un user
- if ($1) {
- ;Ca a pu être résolu
- set %vraiehost_ [ $+ [ $2 ] ] $1
- set %host.bak_ [ $+ [ $2 ] ] %hprefix $+ $chr(45) $+ $huhu($md5($gettok($1,1,46))) $+ $chr(46) $+ $gettok($1,2-,46)
- set %host_ [ $+ [ $2 ] ] %hprefix $+ $chr(45) $+ $huhu($md5($gettok($1,1,46))) $+ $chr(46) $+ $gettok($1,2-,46)
- sw %dnssock : $+ %me NOTICE AUTH :*** Found your hostname ( $+ $1 $+ )
- }
- else {
- ;Ca a pas pu être résolu
- set %vraiehost_ [ $+ [ $2 ] ] %ip_ [ $+ [ $2 ] ]
- set %host.bak_ [ $+ [ $2 ] ] $upper($md5(%ip_ [ $+ [ $2 ] ])) $+ $chr(46) $+ %hprefix
- set %host_ [ $+ [ %dnssock ] ] $upper($md5(%ip_ [ $+ [ $2 ] ])) $+ $chr(46) $+ %hprefix
- sw %dnssock : $+ %me NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
- }
- verifylines KG $2
- usergiven $2
- }
- else {
- ;Il s'agit de la résolution pour un serveur
- if ($1) {
- set %serv_vraiehost [ $+ [ %serv_dns ] ] $raddress
- sw %serv_dns : $+ %me NOTICE AUTH :*** Found your hostname
- }
- else {
- set %serv_vraiehost [ $+ [ %serv_dns ] ] %serv_ip_ [ $+ [ %serv_dns ] ]
- sw %serv_dns : $+ %me NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
- }
- }
- }
-
- on 1:DNS: {
- ;### L'ancienne méthode de résolution ! Un monument historique =)
- ;On l'empêche de fonctionner volontairement
- if (0 == 1) {
- if (!%servdns) {
- echo -a dnssock: %dnssock iaddress: $iaddress
- if ($raddress) {
- set %vraiehost_ [ $+ [ %dnssock ] ] $raddress
- set %host.bak_ [ $+ [ %dnssock ] ] %hprefix $+ $chr(45) $+ $huhu($md5($gettok($raddress,1,46))) $+ $chr(46) $+ $gettok($raddress,2-,46)
- set %host_ [ $+ [ %dnssock ] ] %hprefix $+ $chr(45) $+ $huhu($md5($gettok($raddress,1,46))) $+ $chr(46) $+ $gettok($raddress,2-,46)
- sw %dnssock : $+ %me NOTICE AUTH :*** Found your hostname ( $+ $raddress $+ )
- }
- else {
- set %vraiehost_ [ $+ [ %dnssock ] ] %ip_ [ $+ [ %dnssock ] ]
- set %host.bak_ [ $+ [ %dnssock ] ] $upper($md5(%ip_ [ $+ [ %dnssock ] ])) $+ $chr(46) $+ %hprefix
- set %host_ [ $+ [ %dnssock ] ] $upper($md5(%ip_ [ $+ [ %dnssock ] ])) $+ $chr(46) $+ %hprefix
- sw %dnssock : $+ %me NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
- }
- set %servdns $false
- verifylines KG %dnssock
- usergiven %dnssock
- }
- else {
- if ($raddress) {
- set %serv_vraiehost [ $+ [ %serv_dns ] ] $raddress
- sw %serv_dns : $+ %me NOTICE AUTH :*** Found your hostname
- }
- else {
- ;*** Couldn't resolve your hostname; using your IP address instead
- set %serv_vraiehost [ $+ [ %serv_dns ] ] %serv_ip_ [ $+ [ %serv_dns ] ]
- sw %serv_dns : $+ %me NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
- }
- set %servdns $false
- }
- }
- }
-
- alias verifylines {
- if ($2) {
- if ($1 == KG) {
- set %vfhost *@ $+ %vraiehost_ [ $+ [ $2 ] ]
- set %vffile $linesfile
- if (!$exists(%vffile)) {
- goto verifylinesend
- }
- var %file $gopen(%vffile)
- while ($fread(%file)) {
- set %r $ifmatch
- if (($gettok(%r,1,32) == K) || ($gettok(%r,1,32) == G)) {
- if ($gettok(%r,2,32) iswm %vfhost) {
- set %quitchans %chans_ [ $+ [ $2 ] ]
- set %qfullhost $fullhost($2)
- set %qnick $socknick($2)
- set %qserv %server_ [ $+ [ $socknick($2) ] ]
- set %truc $2
- sockclose2 %truc
- ;ERROR :Closing Link: Stuff[192.168.0.1] G-FACTION ([irc.g-neration.com] Local kill by G-FACTION (!))
- sw $2 ERROR :Closing link: $socknick($2) $+ $chr(91) $+ $sock($2).ip $+ $chr(93) ([ $+ %me $+ $chr(93) You are banned from %network ( $+ $gettok(%r,6-,32) $+ ))
- .timersockclose $+ $2 -m 1 200 /sockclose $2
- }
- }
- }
- .fclose %file
- :verifylinesend
- }
- }
- }
-
- alias numlettre {
- if ($1 == 1) { return a }
- elseif ($1 == 2) { return b }
- elseif ($1 == 3) { return c }
- elseif ($1 == 4) { return d }
- elseif ($1 == 5) { return e }
- elseif ($1 == 6) { return f }
- elseif ($1 == 7) { return g }
- elseif ($1 == 8) { return h }
- elseif ($1 == 9) { return i }
- elseif ($1 == 10) { return j }
- elseif ($1 == 11) { return k }
- elseif ($1 == 12) { return l }
- elseif ($1 == 13) { return m }
- elseif ($1 == 14) { return n }
- elseif ($1 == 15) { return o }
- elseif ($1 == 16) { return p }
- elseif ($1 == 17) { return q }
- elseif ($1 == 18) { return r }
- elseif ($1 == 19) { return s }
- elseif ($1 == 20) { return t }
- elseif ($1 == 21) { return u }
- elseif ($1 == 22) { return v }
- elseif ($1 == 23) { return w }
- elseif ($1 == 24) { return x }
- elseif ($1 == 25) { return y }
- elseif ($1 == 26) { return z }
- elseif ($1 == a) { return 1 }
- elseif ($1 == b) { return 2 }
- elseif ($1 == c) { return 3 }
- elseif ($1 == d) { return 4 }
- elseif ($1 == e) { return 5 }
- elseif ($1 == f) { return 6 }
- elseif ($1 == g) { return 7 }
- elseif ($1 == h) { return 8 }
- elseif ($1 == i) { return 9 }
- elseif ($1 == j) { return 10 }
- elseif ($1 == k) { return 10 }
- elseif ($1 == l) { return 12 }
- elseif ($1 == m) { return 13 }
- elseif ($1 == n) { return 14 }
- elseif ($1 == o) { return 15 }
- elseif ($1 == p) { return 16 }
- elseif ($1 == q) { return 17 }
- elseif ($1 == r) { return 18 }
- elseif ($1 == s) { return 19 }
- elseif ($1 == t) { return 20 }
- elseif ($1 == u) { return 21 }
- elseif ($1 == v) { return 22 }
- elseif ($1 == w) { return 23 }
- elseif ($1 == x) { return 24 }
- elseif ($1 == y) { return 25 }
- elseif ($1 == z) { return 26 }
- }
-
- alias galpha {
- if ($1) {
- if ($1 isalpha) {
- return $numlettre($1)
- }
- else {
- return $1
- }
- }
- }
-
- alias admin {
- if ($1) {
- var %i 0
- if (!$exists(admin.nfo)) {
- sw $1 : $+ %me 256 $socknick($1) :Administrative info file not found !
- halt
- }
- sw $1 : $+ %me 256 $socknick($1) :Administrative info about %me
- var %file $gopen(admin.nfo)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if (%i == 1) {
- sw $1 : $+ %me 257 $socknick($1) : $+ %r
- }
- else {
- sw $1 : $+ %me 258 $socknick($1) : $+ %r
- }
- inc %i
- }
- .fclose %file
- }
- }
-
- alias rules {
- if ($1) {
- if (!$exists(ircd.rules)) {
- sw $1 : $+ %me 256 $socknick($1) :Rules file not found !
- halt
- }
- set %rulesnick $socknick($sockname)
- var %file $gopen(ircd.rules)
- sw $1 : $+ %me 308 %rulesnick :- %me Server Rules -
- while ($fread(%file)) {
- set %r $ifmatch
- sw $1 : $+ %me 232 %rulesnick :- %r
- }
- .fclose %file
- sw $1 : $+ %me 309 %rulesnick :End of RULES command.
- }
- }
-
- alias huhu {
- if ($1) {
- unset %str
- var %i 1
- set %hlen $len($1-)
- while (%i <= %hlen) {
- set %hl $mid($1-,%i,1)
- set %str %str $+ $galpha(%hl)
- inc %i
- }
- set %str $calc(%str / 2)
- set %str $left(%str,$calc($len(%str) - 13))
- set %str $calc(%str / 3)
- }
- return $int(%str)
- }
-
- ;sw $1 ERROR :Closing Link: $login($1).login $+ $chr(91) $+ $login($1).ip $+ $chr(93) ( $+ $chr(91) $+ %me $+ $chr(93) Local kill by $2 ( $+ $3- $+ ))
-
- alias isreginserver {
- if ($1) {
- if (%reginserver_ [ $+ [ $1 ] ]) {
- return $true
- }
- else {
- return $false
- }
- }
- }
-
- alias ghelp {
- ;ghelp command sockname
- if ($2) {
- if ($exists(help.cmd)) {
- unset %iscmd
- set %helpnick $socknick($sockname)
- var %file $gopen(help.cmd)
- while ($fread(%file)) {
- set %r $ifmatch
- if (%iscmd) {
- if ($left(%r,4) != cmd:) {
- sw $2 : $+ %me 292 %helpnick : $+ $replace(%r,$eval(%helpchan,0),%helpchan)
- }
- else {
- break
- }
- }
- if ($left(%r,4) == cmd:) {
- if ($gettok(%r,2,58) == $1) {
- set %iscmd $true
- }
- }
- }
- .fclose %file
- if (!%iscmd) {
- .timerhelp $+ $2 -m 1 1 ghelp error $2
- }
- }
- else {
- sw $2 : $+ %me 292 %helpnick :Commands file not found!
- }
- }
- if ($fopen(%file)) {
- .fclose %file
- }
- }
-
- alias comchans {
- ;$comchan(#chan1 #chan2,#chan3 #chan4) return $true ou $false si il y a des chans communs
- if ($2) {
- var %i 1
- set %comchan $false
- set %numtok1 $gettok($1,0,32)
- set %numtok2 $gettok($2,0,32)
- while (%i <= %numtok1) {
- set %ttok $gettok($1,%i,32)
- var %o 1
- while (%o <= %numtok2) {
- if (%ttok == $gettok($2,%o,32)) {
- set %comchan $true
- }
- inc %o
- }
- inc %i
- }
- }
- return %comchan
- }
-
- alias whoattr {
- if ($1) {
- unset %attr
- if ($isaway($1)) {
- set %attr %attr $+ G
- }
- else {
- set %attr %attr $+ H
- }
- if (r isincs %umodes_ [ $+ [ $1 ] ]) {
- set %attr %attr $+ r
- }
- if (%ircop_ [ $+ [ $1 ] ]) {
- set %attr %attr $+ $chr(42)
- }
- }
- return %attr
- }
-
- alias userslistfile {
- return $mircdir $+ System\users.lst
- }
- /*
- <- :G-FACTION!~_G-FACTIO@EpiK-31F5DC38.fbx.proxad.net JOIN :#grenoble
- -> besancon.fr.epiknet.org MODE #grenoble
- <- :besancon.fr.epiknet.org 332 G-FACTION #grenoble :Bienvenue sur le chan de GRENOBLE et de l'isere. | http://www.geocities.com/~grenoble/ | Anniversaire de Le-Telepherique-Fou : 18 février, celui de G-FACTION : le 19, on est nés à un jour prêt !! ^^ | If you wanna be a G-FAN, jump to #G-FACTION | #Grenoble Meeting v2.0 en prép - Qnet rOx =)
- <- :besancon.fr.epiknet.org 333 G-FACTION #grenoble Djoobstil 1081982761
- <- :besancon.fr.epiknet.org 353 G-FACTION = #grenoble :G-FACTION @Clio @Le-Telepherique-fou
- <- :besancon.fr.epiknet.org 366 G-FACTION #grenoble :End of /NAMES list.
- <- :Clio!services@olympe.epiknet.org MODE #grenoble +q G-FACTION
- <- :Clio!services@olympe.epiknet.org MODE #grenoble +o G-FACTION
- <- :Clio!services@olympe.epiknet.org NOTICE G-FACTION :Projet en cours : The Ultimate G-BOT !
- <- :Clio!services@olympe.epiknet.org PRIVMSG #grenoble :[G-FACTION] Putain, comme je dis toujours, dormir ça fatigue. C'est vrai quoi, quand on se lève à midi on a la tête dans le cul, alors que lorsqu'on se lève aux aurores, qu'est-ce qu'on pête la forme !
- <- :besancon.fr.epiknet.org 324 G-FACTION #grenoble +r
- <- :besancon.fr.epiknet.org 329 G-FACTION #grenoble 1086390135
- */
- alias join {
- ;"Sockname" "Le sockread su join"
- ;JOIN #chan[,#chan2,#chan3] [key]
- ; 1 2 3
- set %tsn $1
- set %tsr $2-
- tokenize 32 %tsr
- set %chnick $socknick(%tsn)
- if ($2) {
- ;On s'occupe du cas où la personne ferait un join #chan1,#chan2,#...
- ;Les ',' font chier en mIRC Script, alors on les remplace avec un ';' par exemple (de toute façon un caractère
- ;interdit dans les noms de channel).
- ;Et on gettok tout ça, avec une while...
- set %tempchans $replacecs($2,$chr(44),$chr(59))
- set %nbdchanstojoin $gettok(%tempchans,0,59)
- var %o 1
- while (%o <= %nbdchanstojoin) {
- set %tchan $gettok(%tempchans,%o,59)
- if ($left(%tchan,1) == $chr(35)) {
- if ($correctchanname(%tchan)) {
- set %chanfile $chanfile(%tchan)
- set %nfochanfile $nfochanfile(%tchan)
- set %tchmodes $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T)
- if (i isincs %tchmodes) {
- if (!%invited_ [ $+ [ %tchan ] ] [ $+ [ _ $+ [ %chnick ] ] ]) {
- sw %tsn : $+ %me 473 %chnick %tchan :Cannot join channel (+i)
- goto endofwhile
- }
- else {
- set %invited_ [ $+ [ %tchan ] ] [ $+ [ _ $+ [ %chnick ] ] ] $false
- }
- }
- if (k isincs %tchmodes) {
- if (%tchan == $gettok(%tempchans,1,59)) {
- if ($3 != $readini(%nfochanfile,DYNM,k.arg)) {
- sw %tsn : $+ %me 475 %chnick %tchan :Cannot join channel (+k)
- goto endofwhile
- }
- }
- else {
- sw %tsn : $+ %me 475 %chnick %tchan :Cannot join channel (+k)
- goto endofwhile
- }
- }
- if (O isincs %tchmodes) {
- if (o !isin %umodes_ [ $+ [ %chnick ] ]) {
- sw %tsn : $+ %me 520 %chnick :Cannot join channel (IRCops only)
- goto endofwhile
- }
- }
- if (A isincs %tchmodes) {
- if ((A !isincs %umodes_ [ $+ [ %chnick ] ]) || (N !isincs %umodes_ [ $+ [ %chnick ] ])) {
- sw %tsn : $+ %me 519 %chnick :Cannot join channel (Admin only)
- goto endofwhile
- }
- }
- if (R isincs %tchmodes) {
- if (r !isincs %umodes_ [ $+ [ %chnick ] ]) {
- sw %tsn : $+ %me 477 %chnick %tchan :You need a registered nick to join that channel.
- goto endofwhile
- }
- }
- if (l isincs %tchmodes) {
- if ($lines(%chanfile) >= $readini(%nfochanfile,DYNM,l.arg)) {
- sw %tsn : $+ %me 471 %chnick %tchan :Cannot join channel (+l)
- goto endofwhile
- }
- }
- if ($isbanned(%tchan,%tsn)) {
- sw %tsn : $+ %me 474 %chnick %tchan :Cannot join channel (+b)
- goto endofwhile
- }
- set %tlines $lines(%chanfile)
- set %theonlyone $false
- if (%tlines <= 0) {
- set %theonlyone $true
- }
-
- if (!$ison(%chnick,%tchan)) {
- ;Ajout de l'user au chan, et autres procédures
- addchannick %chnick %tchan
- addnick %tchan %chnick
- sw %tsn : $+ $fullhost(%sockname_ [ $+ [ %chnick ] ]) JOIN : $+ %tchan
- if ($ttopic(%tchan)) {
- topic %tchan %chnick
- }
- sendnicklist %tchan %chnick
- ;Signaler aux autres serveurs, qu'il a rejoint le canal
- ;:G-FACTION JOIN #test
- sendmultiserver : $+ %chnick JOIN %tchan
- if (%theonlyone) {
- if (%ntmode == on) {
- chmodestxsrv $chr(43) %tchan n
- chmodestxsrv $chr(43) %tchan t
- sw %tsn : $+ %me MODE %tchan +nt
- }
- chmodestatussrv $chr(43) %tchan o %chnick
- sw %tsn : $+ %me MODE %tchan +o %chnick
- writeini -n $nfochanfile(%tchan) MISC ctime $ctime
- addchannellist %tchan
- log [6CHAN] Channel %tchan created
- }
- }
- }
- else {
- sw %tsn : $+ %me 403 %chnick %tchan :No such channel
- goto endofwhile
- }
- }
- else {
- sw %tsn : $+ %me 403 %chnick %tchan :No such channel
- goto endofwhile
- }
- :endofwhile
- inc %o
- }
- }
- }
-
- alias topic {
- ;topic #chan nick; sert à envoyer les informations de topic d'un chan à un user
- if ($2) {
- ;<- :besancon.fr.epiknet.org 332 G-FACTION #grenoble :Bienvenue sur le chan de GRENOBLE et de l'isere. | http://www.geocities.com/~grenoble/ | Anniversaire de Le-Telepherique-Fou : 18 février, celui de G-FACTION : le 19, on est nés à un jour prêt !! ^^ | If you wanna be a G-FAN, jump to #G-FACTION | #Grenoble Meeting v2.0 en prép - Qnet rOx =)
- ;<- :besancon.fr.epiknet.org 333 G-FACTION #grenoble Djoobstil 1081982761
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 332 $2 $1 : $+ $ttopic($1)
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 333 $2 $1 $readini($nfochanfile($1),MISC,tuser) $readini($nfochanfile($1),MISC,ttime)
- }
- }
-
- alias ttopic {
- if ($1) {
- return $readini($nfochanfile($1),MISC,topic)
- }
- }
-
- alias part {
- ;"sockname" "Le sockread du part"
- if ($2) {
- set %tsn $1
- set %tsr $2-
- tokenize 32 %tsr
- set %tchan $2
- set %chnick $socknick(%tsn)
- if ($ison(%chnick,%tchan)) {
- unset %partmsg
- delchannick %chnick %tchan
- ;Envoyer aux autres serveurs
- ;:G-FACTION PART #test
- set %partmsg $right($3-,$calc($len($3-) - 1))
- if (%partmsg) {
- sendchannel %tchan : $+ $fullhost(%tsn) PART %tchan : $+ %partmsg
- sendmultiserver : $+ %chnick PART %tchan : $+ %partmsg
- }
- else {
- sendchannel %tchan : $+ $fullhost(%tsn) PART %tchan
- sendmultiserver : $+ %chnick PART %tchan
- }
- delnick %tchan %chnick on
- remini $nfochanfile(%tchan) STSM %chnick
- set %invited_ [ $+ [ %tchan ] ] [ $+ [ _ $+ [ %chnick ] ] ] $false
- if (!$lines($chanfile(%tchan))) {
- .remove $chanfile(%tchan)
- .remove $nfochanfile(%tchan)
- delchannellist %tchan
- log [6CHAN] Channel %tchan deleted
- }
- }
- }
- }
-
- alias noticechannel {
- ;noticechannel %ichan @ Sender Le message
- ; 1 2 3 4-
- if ($3) {
- unset %nsigne
- if (!$exists($chanfile($1))) {
- halt
- }
- var %file $gopen($chanfile($1))
- unset %sender
- while ($fread(%file)) {
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %tempnick $right(%r,$calc($len(%r) - 1))
- set %nsigne $left(%r,1)
- }
- else {
- set %tempnick %r
- set %nsigne NULL
- }
- if (%nsigne == $2) {
- if ($sock(%sockname_ [ $+ [ %tempnick ] ])) {
- set %sender $3
- if (%nsigne == NULL) {
- unset %tnsigne
- }
- else {
- set %tnsigne %nsigne
- }
- sw %sockname_ [ $+ [ %tempnick ] ] : $+ %sender NOTICE %tnsigne $+ $1 : $+ $4-
- }
- }
- }
- .fclose %file
- sendmultiserver : $+ $3 NOTICE $2 $+ $1 : $+ $4-
- }
- }
-
- alias kick {
- ;kick #chan Kicker Kicked Raison
- ; 1 2 3 4
- if ($3) {
- unset %operoverride
- if (%ircop_ [ $+ [ $2 ] ]) {
- set %tflags %oline. [ $+ [ %ircop_ [ $+ [ $2 ] ] ] ] [ $+ [ .flags ] ]
- if (v isincs %tflags) {
- set %operoverride $true
- }
- }
- if ($strongermode($readini($nfochanfile($1),STSM,$2)) === h) {
- if ($isatleast(h,$3,$1)) {
- if (!%operoverride) {
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 484 $2 $1 :Cannot kick protected user $3 $+ .
- goto kickend
- }
- }
- }
- elseif (($strongermode($readini($nfochanfile($1),STSM,$2)) !== h) && ($strongermode($readini($nfochanfile($1),STSM,$2)) !== o) && ($strongermode($readini($nfochanfile($1),STSM,$2)) !== a) && ($strongermode($readini($nfochanfile($1),STSM,$2)) !== q)) {
- if (!%operoverride) {
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 484 $2 $1 :Cannot kick protected user $3 $+ .
- goto kickend
- }
- }
- if ((a isincs $readini($nfochanfile($1),STSM,$3)) || (q isincs $readini($nfochanfile($1),STSM,$3))) {
- if (!%operoverride) {
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 484 $2 $1 :Cannot kick protected user $3 $+ .
- goto kickend
- }
- }
- set %tchmodes $replacecs($chmodes($1),1,N,2,L,3,S,4,C,5,T)
- if (Q isincs %tchmodes) {
- if (!%operoverride) {
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me NOTICE $2 :*** You cannot kick people on $1
- goto kickend
- }
- }
- if (!$4) {
- set %kickraison $2
- }
- else {
- set %kickraison $4-
- }
- delchannick $3 $1
- sendchannel $1 : $+ $fullhost(%sockname_ [ $+ [ $2 ] ]) KICK $1 $3 : $+ $left(%kickraison,%kicklen)
- unset %delnick
- unset %delline
- var %i 0
- var %file $gopen($chanfile($1))
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %delnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %delnick %r
- }
- if (%delnick == $3) {
- set %delline %i
- }
- }
- .fclose %file
- if (%delline) {
- echo @sr 12delete $3 from $1 (line %delline in $chanfile($1) $+ )
- write -dl $+ %delline $chanfile($1)
- }
- remini $nfochanfile($1) STSM $3
- set %invited_ [ $+ [ $1 ] ] [ $+ [ _ $+ [ $3 ] ] ] $false
- if (!$lines($chanfile($1))) {
- .remove $chanfile($1)
- .remove $nfochanfile($1)
- delchannellist $1
- log [6CHAN] Channel $1 deleted
- }
- :kickend
- }
- }
-
-
- alias delchannick {
- ;delchannick Nick Chan
- ; 1 2
- ;sert à supprimer un canal dans la liste des canaux d'une personne
- if ($2) {
- set %dcnsn %sockname_ [ $+ [ $1 ] ]
- set %dcnchans %chans_ [ $+ [ %dcnsn ] ]
- set %chans_ [ $+ [ %dcnsn ] ] $remtok(%chans_ [ $+ [ %dcnsn ] ],$2,32)
- }
- }
-
- alias addchannick {
- if ($2) {
- set %acnsn %sockname_ [ $+ [ $1 ] ]
- set %acnchans %chans_ [ $+ [ %acnsn ] ]
- set %chans_ [ $+ [ %acnsn ] ] $remtok(%chans_ [ $+ [ %acnsn ] ],$2,32)
- set %chans_ [ $+ [ %acnsn ] ] $addtok(%chans_ [ $+ [ %acnsn ] ],$2,32)
- }
- }
-
- alias ison {
- ;$ison(nick,chan)
- if ($2) {
- set %ison $false
- set %ison.sn %sockname_ [ $+ [ $1 ] ]
- set %ison.chans %chans_ [ $+ [ %ison.sn ] ]
- set %ison.nbdchans $gettok(%ison.chans,0,32)
- var %i 1
- while (%i <= %ison.nbdchans) {
- if ($gettok(%ison.chans,%i,32) == $2) {
- set %ison $true
- }
- inc %i
- }
- return %ison
- }
- }
-
- alias whoischanlist {
- ;Donne la liste des chans sur lequel est un user, préfixé des modes
- ;Ex: @#G-FACTION +#scripts
- if ($1) {
- unset %wcl
- set %wcl.nick $1
- set %wcl.sn %sockname_ [ $+ [ %wcl.nick ] ]
- set %wcl.chans %chans_ [ $+ [ %wcl.sn ] ]
- set %wcl.nbdchans $gettok(%wcl.chans,0,32)
- var %i 1
- while (%i <= %wcl.nbdchans) {
- set %wcl.chan $gettok(%wcl.chans,%i,32)
- if ($nickprefix(%wcl.nick,%wcl.chan) != NULL) {
- if ($2) {
- ;On a précisé un deuxième pseudo... donc il faut savoir si le chan est +s, et si le pseudo 2 est aussi sur le chan, ou est IRCop, pour afficher ou non le chan dans la liste
- if ((s isincs $chmodes(%wcl.chan)) || (p isincs $chmodes(%wcl.chan))) {
- if (($ison($2,%wcl.chan)) || (%ircop_ [ $+ [ $2 ] ]) || (o isin %umodes_ [ $+ [ $2 ] ])) {
- set %wcl $addtok(%wcl,$nickprefix(%wcl.nick,%wcl.chan) $+ %wcl.chan,32)
- }
- }
- else {
- set %wcl $addtok(%wcl,$nickprefix(%wcl.nick,%wcl.chan) $+ %wcl.chan,32)
- }
- }
- else {
- set %wcl $addtok(%wcl,$nickprefix(%wcl.nick,%wcl.chan) $+ %wcl.chan,32)
- }
- }
- else {
- if ($2) {
- if ((s isincs $chmodes(%wcl.chan)) || (p isincs $chmodes(%wcl.chan))) {
- if (($ison($2,%wcl.chan)) || (%ircop_ [ $+ [ $2 ] ]) || (o isin %umodes_ [ $+ [ $2 ] ])) {
- set %wcl $addtok(%wcl,%wcl.chan,32)
- }
- }
- else {
- set %wcl $addtok(%wcl,%wcl.chan,32)
- }
- }
- else {
- set %wcl $addtok(%wcl,%wcl.chan,32)
- }
- }
- inc %i
- }
- return %wcl
- }
- }
-
- alias nickprefix {
- ;$nickprefix(nick,chan)
- ;retourne +%@&~
- if ($2) {
- unset %is
- set %chanfile $chanfile($2)
- if (!$exists(%chanfile)) {
- halt
- }
- var %file $gopen(%chanfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %is $left(%r,1)
- set %tnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %is NULL
- set %tnick %r
- }
- if (%tnick == $1) {
- set %result %is
- }
- }
- .fclose %file
- return %result
- }
- }
-
- alias correctchanname {
- if ($1) {
- var %i 1
- set %tlen $len($1)
- if (%tlen <= %chanlen) {
- if ($left($1,1) == $chr(35)) {
- set %correctchanname $true
- while (%i <= %tlen) {
- set %tlettre $mid($1,%i,1)
- if (%tlettre !isin %G-NORME.chan) {
- set %correctchanname $false
- }
- inc %i
- }
- }
- else {
- set %correctchanname $false
- }
- }
- else {
- set %correctchanname $false
- }
- }
- return %correctchanname
- }
-
- alias correctnickname {
- if ($1) {
- var %i 1
- set %tlen $len($1)
- if (%tlen <= %nicklen) {
- set %correctnickname $true
- ;if ($left($1,1) !isin %G-NORME.nick.first) {
- ; set %correctnickname $false
- ;}
- while (%i <= %tlen) {
- set %tlettre $mid($1,%i,1)
- if (%tlettre !isin %G-NORME.nick) {
- set %correctnickname $false
- }
- inc %i
- }
- }
- else {
- set %correctnickname $false
- }
- }
- return %correctnickname
- }
-
- alias isbanned {
- ;$isbanned(#chan,sockname)
- if ($2) {
- set %tfh $fullhost($2)
- set %isbanned $false
- set %tcf $banfile($1))
- if (!$exists(%tcf)) {
- goto isbannedend
- }
- var %file $gopen(%tcf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (%r iswm %tfh) {
- set %isbanned $true
- }
- }
- .fclose %file
- }
- :isbannedend
- return %isbanned
- }
-
- alias r {
- return $readini($1-)
- }
-
- alias chmodes {
- ;$chmodes(#chan) == mntrop
- if ($1) {
- set %t $nfochanfile($1)
- set %len.stxm $len(%stxm)
- set %len.dynm $len(%dynm)
- unset %e
- var %i 1
- var %o 1
- while (%i <= %len.stxm) {
- if ($readini(%t,STXM,$replacecs($mid(%stxm,%i,1),N,1,L,2,S,3,C,4,T,5)) == on) {
- if ($mid(%stxm,%i,1) !isincs %e) {
- set %e %e $+ $mid(%stxm,%i,1)
- }
- }
- inc %i
- }
- while (%o <= %len.dynm) {
- if ($readini(%t,DYNM,$replacecs($mid(%dynm,%o,1),N,1,L,2,S,3,C,4,T,5)) == on) {
- if ($mid(%dynm,%o,1) !isincs %e) {
- set %e %e $+ $mid(%dynm,%o,1)
- }
- }
- inc %o
- }
- return $replacecs(%e,1,N,2,L,3,S,4,C,5,T)
- }
- }
-
- alias chanfile {
- if ($1) {
- return $mircdir $+ System\ $+ $1 $+ .chn
- }
- }
-
- alias creationtime {
- if ($1) {
- return $readini($nfochanfile($1),MISC,ctime)
- }
- }
-
- alias addnick {
- ;addnick chan nick
- ; 1 2
- echo @sr 7Entering ADDNICK function
- echo @sr 71: $1 22: $2
- if ($2) {
- set %tfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
- unset %addnick
- unset %addline
- unset %listnick
- if (!$exists($chanfile($1))) {
- goto next
- }
- var %i 0
- var %file $gopen($chanfile($1))
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- echo @sr 7Line read:12 %r
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %addnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %addnick %r
- }
- ;echo -a 4Addnick:12 %addnick
- if (%addnick == $2) {
- ;echo -a 4Entered addnick if
- set %addline %i
- ;echo -a 4Set addline to:12 %i
- }
- }
- .fclose %file
- if (%addline) {
- echo @sr 7write -dl $+ %addline $chanfile($1) (12on supprime $2 de $1 $+ )
- write -dl $+ %addline $chanfile($1)
- }
- :next
- echo @sr 7write $chanfile($1) $2
- write $chanfile($1) $2
- var %file $gopen($chanfile($1))
- var %o 0
- while ($fread(%file)) {
- inc %o
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %listnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %listnick %r
- }
- if (%listnick != $2) {
- if ($sock(%sockname_ [ $+ [ %listnick ] ])) {
- echo @sr 7Sending JOIN to %listnick
- sw %sockname_ [ $+ [ %listnick ] ] : $+ %tfullhost JOIN : $+ $1
- }
- else {
- if (%server_ [ $+ [ %listnick ] ] == %me) {
- ;Un ghost est repéré dans la nicklist...
- echo @sr 7Ghost repéré ! ( $+ %listnick $+ ) write -dl $+ %o $chanfile($1)
- write -dl $+ %o $chanfile($1)
- ;dec %o
- ;fseek -l %file %o
- }
- }
- }
- }
- .fclose %file
- }
- }
-
- alias delservnick {
- if ($1) {
- var %i 0
- set %dline 0
- set %ucf $userslistfile
- if (!$exists(%ucf)) {
- goto delservnickend
- }
- var %file $gopen(%ucf)
- while ($fread(%file)) {
- inc %i
- var %r $ifmatch
- if (%r == $1) {
- set %dline %i
- }
- }
- .fclose %file
- if (%dline > 0) {
- write -dl $+ %dline %ucf
- }
- :delservnickend
- }
- }
-
- alias addservnick {
- if ($1) {
- if ($lines($userslistfile) <= 500) {
- delservnick $1
- }
- write $userslistfile $1
- }
- }
-
- alias delnick {
- ;delnick chan nick ifquit
- ; 1 2 3
- if ($3) {
- set %tfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
- unset %delnick
- unset %delline
- var %i 0
- if (!$exists($chanfile($1))) {
- echo @G-IRCD 4PROBLEME SERIEUX DANS DELNICK
- goto halt
- }
- var %file $gopen($chanfile($1))
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %delnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %delnick %r
- }
- if (%delnick == $2) {
- set %delline %i
- }
- }
- .fclose %file
- if (%delline) {
- echo @sr 12write -dl $+ %delline $chanfile($1) (on supprime $2 de $1 $+ )
- write -dl $+ %delline $chanfile($1)
- }
- if ($3 != on) {
- var %file $gopen($chanfile($1))
- while ($fread(%file)) {
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %listnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %listnick %r
- }
- if (%listnick != $2) {
- sw %sockname_ [ $+ [ %listnick ] ] : $+ %tfullhost PART : $+ $1
- }
- }
- .fclose %file
- }
- }
- }
-
- alias sendnicklist {
- ;sendnicklist chan nick
- ; 1 2
- if ($2) {
- if (!$exists($chanfile($1))) {
- goto sendnicklistend
- }
- var %file $gopen($chanfile($1))
- unset %nicklist
- unset %nr
- while ($fread(%file)) {
- set %nr $ifmatch
- set %nicklist $addtok(%nicklist,%nr,32)
- if ($gettok(%nicklist,0,32) >= 30) {
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 353 $2 = $1 : $+ %nicklist
- unset %nicklist
- }
- }
- .fclose %file
- if (%nicklist) {
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 353 $2 = $1 : $+ %nicklist
- }
- :sendnicklistend
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 366 $2 $1 :End of /NAMES list.
- }
- }
-
- alias privmsg {
- ;privmsg chan nick message
- ; 1 2 3-
- if ($3) {
- set %tchmodes $replacecs($chmodes($1),1,N,2,L,3,S,4,C,5,T)
- if (!$ison($2,$1)) {
- if (n isincs %tchmodes) {
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 404 $2 $1 :No external channel messages ( $+ $1 $+ )
- goto privmsgend
- }
- }
- set %pfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
- set %message $3-
- if (S isincs %tchmodes) {
- set %message $strip($3-)
- }
- if (c isincs %tchmodes) {
- if ($3- != $strip($3-)) {
- ;Donc y'a des codes couleurs
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 404 $2 $1 :Color is not permitted is this channel ( $+ $1 $+ )
- goto privmsgend
- }
- }
- if (m isincs %tchmodes) {
- if (!$isatleast(v,$2,$1)) {
- sw %sockname_ [ $+ [ $2 ] ] : $+ %me 404 $1 $1 :You need voice (+v) ( $+ $1 $+ )
- goto privmsgend
- }
- }
- if (!$exists($chanfile($1))) {
- goto privmsgend
- }
- var %o 0
- var %file $gopen($chanfile($1))
- while ($fread(%file)) {
- inc %o
- set %r $ifmatch
- if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
- set %tempnick $right(%r,$calc($len(%r) - 1))
- }
- else {
- set %tempnick %r
- }
- if (%tempnick != $2) {
- if ($sock(%sockname_ [ $+ [ %tempnick ] ])) {
- ;echo -a 7sw %sockname_ [ $+ [ %tempnick ] ] $2-
- sw %sockname_ [ $+ [ %tempnick ] ] : $+ %pfullhost PRIVMSG $1 : $+ %message
- }
- else {
- if (%server_ [ $+ [ %tempnick ] ] == %me) {
- ;Ghost repéré...
- write -dl $+ %o $chanfile($1)
- }
- }
- }
- }
- .fclose %file
- :privmsgend
- ;Envoyer le message dans tout le réseau...
- ;:G-FACTION PRIVMSG #G-FACTION :haha
- sendmultiserver : $+ $2 PRIVMSG $1 : $+ $3-
- }
- }
-
- alias gline.add {
- ;gline.add host $ctime timetoexpire host_glineur raison
- ; 1 2 3 4 5
- if ($5) {
- write $linesfile G $1-
- }
- }
-
- alias gline.del {
- if ($1) {
- var %i 0
- set %gfile $linesfile
- if (!$exists(%gfile)) {
- halt
- }
- unset %gline
- unset %r
- var %file $gopen(%gfile)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if ($gettok(%r,1,32) == G) {
- if ($gettok(%r,2,32) == $1) {
- write -dl $+ %i %gfile
- break
- }
- }
- }
- .fclose %file
- }
- }
-
- alias gline.infos {
- if ($1) {
- set %gfile $linesfile
- if (!$exists(%gfile)) {
- goto glineinfosend
- }
- unset %gline
- unset %ginfos
- var %file $gopen(%gfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if ($gettok(%r,1,32) == G) {
- if ($gettok(%r,2,32) == $1) {
- set %ginfos $gettok(%r,3-,32)
- }
- }
- }
- .fclose %file
- if (%ginfos) {
- return %ginfos
- }
- }
- :glineinfosend
- }
-
- alias shun.add {
- ;gline.add host $ctime timetoexpire host_glineur raison
- ; 1 2 3 4 5
- if ($5) {
- write $linesfile s $1-
- }
- }
-
- alias shun.del {
- if ($1) {
- var %i 0
- set %gfile $linesfile
- if (!$exists(%gfile)) {
- halt
- }
- unset %gline
- unset %r
- var %file $gopen(%gfile)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if ($gettok(%r,1,32) == s) {
- if ($gettok(%r,2,32) == $1) {
- write -dl $+ %i %gfile
- .fclose %file
- break
- }
- }
- }
- if ($fopen(%file)) {
- .fclose %file
- }
- }
- }
-
- alias shun.infos {
- if ($1) {
- set %gfile $linesfile
- if (!$exists(%gfile)) {
- goto shuninfosend
- }
- unset %gline
- unset %ginfos
- var %file $gopen(%gfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if ($gettok(%r,1,32) == s) {
- if ($gettok(%r,2,32) == $1) {
- set %ginfos $gettok(%r,3-,32)
- }
- }
- }
- .fclose %file
- if (%ginfos) {
- return %ginfos
- }
- }
- :shuninfosend
- }
-
-
- alias vraiefullhost {
- ;Le $1 est un sockname
- set %thost $socknick($1) $+ ! $+ %identd_ [ $+ [ $socknick($1) ] ] $+ @ $+ %vraiehost_ [ $+ [ $1 ] ]
- return %thost
- }
-
- alias isaway {
- ;Le $1 est un Nick, mais on va le transformer en sockname car %away supporte seulement les socknames
- if ($1) {
- if (%away_ [ $+ [ %sockname_ [ $+ [ $1 ] ] ] ]) {
- return $true
- }
- else {
- return $false
- }
- }
- }
-
- alias isco {
- if ($1) {
- if (%nick_ [ $+ [ $1 ] ]) {
- return $true
- }
- else {
- return $false
- }
- }
- }
-
- alias hello {
- if ($1) {
- addservnick $socknick($1)
- .timerwhowas $+ $1 1 5 /whowas.add.private $1
- log 4Connexion : $socknick($1) ( $+ $vraiefullhost($1) $+ )
- set %connectiontime_ [ $+ [ $1 ] ] $ctime
- ;Envoyer la notice à tous les IRCops locaux
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto helloend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- if (c isincs %snomask_ [ $+ [ %r ] ]) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %lonick :*** Notice -- client connecting on port %port_ [ $+ [ $1 ] ] $+ : $socknick($1) ( $+ $gettok($fullhost($1),2-,$asc(!)) $+ ) [clients]
- ;*** Notice -- Client connecting on port 6667: G-FACTION[GTASA] (G-FACTION@127.0.0.2) [clients]
- }
- }
- }
- }
- .fclose %file
- :helloend
- ;Fin
-
- ;Signaler ce nouvel utilisateur sur tout le réseau (serveurs directement connectés à moi
- ;NICK lolo 2 1108894608 G-FACTION 192.168.0.2 irc.g2.net 0 :G-FACTION is watching you...
- sendmultiserver NICK $socknick($1) 1 %connectiontime_ [ $+ [ $1 ] ] %identd_ [ $+ [ $socknick($1) ] ] %vraiehost_ [ $+ [ $1 ] ] %server_ [ $+ [ $socknick($1) ] ] $hopsfromme($socknick($1)) : $+ %realname_ [ $+ [ $socknick($1) ] ]
- sendmultiserver : $+ $socknick($1) MODE $socknick($1) :+ $+ %umodes_ [ $+ [ $socknick($1) ] ]
- sendmultiserver : $+ $socknick($1) SETHOST %host_ [ $+ [ %sockname_ [ $+ [ $socknick($1) ] ] ] ]
-
- sw $1 : $+ %me 001 $socknick($1) :Welcome to the %network IRC Network $fullhost($1)
- sw $1 : $+ %me 002 $socknick($1) :Your host is %me $+ , running version G-IRCD1.1
- sw $1 : $+ %me 003 $socknick($1) :This server was created %creationtime
- sw $1 : $+ %me 004 $socknick($1) %me G-IRCD1.1 iowghraAsORVSxNCWqBzvdHtGp lvhopsmntikrRcaqOALQbSeKVfMGCuzN
- sw $1 : $+ %me 005 $socknick($1) MAP KNOCK SAFELIST HCN MAXCHANNELS= $+ %maxchannels MAXBANS= $+ %maxbans NICKLEN= $+ %nicklen TOPICLEN= $+ %topiclen KICKLEN= $+ %kicklen MAXTARGETS= $+ %maxtargets AWAYLEN= $+ %awaylen :are supported by this server
- sw $1 : $+ %me 005 $socknick($1) WALLCHOPS WATCH=128 SILENCE=15 MODES=12 CHANTYPES=# PREFIX=(qaohv)~&@%+ CHANMODES=be,kfL,l,psmntirRcOAQKVGCNSMT NETWORK= $+ %network CASEMAPPING=ascii EXTBAN=~,cqr :are supported by this server
- lusers $1
- motd $1
- applymodesonrequest $1 %connmodes
- }
- }
-
- alias motd {
- if ($1) {
- if (!$exists(%motdfile)) {
- sw $1 : $+ %me 372 $socknick($1) :- MOTD file not found!
- goto motdend
- }
- sw $1 : $+ %me 375 $socknick($1) :- %me Message of the Day -
- sw $1 : $+ %me 375 $socknick($1) :- $date $time(HH:nn)
- var %file $gopen(%motdfile)
- while ($fread(%file)) {
- sw $1 : $+ %me 372 $socknick($1) :- $ifmatch
- }
- .fclose %file
- :motdend
- sw $1 : $+ %me 376 $socknick($1) :End of /MOTD command.
- }
- }
-
- alias socknick {
- return %nick_of_sockname_ [ $+ [ $1 ] ]
- }
-
- alias totalchannels {
- return $lines($chanlistfile)
- }
-
- alias totalircop {
- return $lines($ircoplistfile)
- }
-
- alias totalusersserv {
- var %i 0
- if (!$exists($userslistfile)) {
- goto totalusersservend
- }
- var %file $gopen($userslistfile)
- while ($fread(%file)) {
- if (%server_ [ $+ [ $ifmatch ] ] == %me) {
- inc %i
- }
- }
- fclose %file
- :totalusersservend
- return %i
- }
-
- alias totalusersnet {
- ;A changer au moment du développement des links !
- return $totalusersserv
- }
-
- alias maxusers {
- var %n $totalusersserv
- if ((%n > $readini(System\G-IRCD.dat,GlobalVars,maxusers)) || (!$readini(System\G-IRCD.dat,GlobalVars,maxusers))) {
- writeini -n System\G-IRCD.dat GlobalVars maxusers %n
- return %n
- }
- else {
- return $readini(System\G-IRCD.dat,GlobalVars,maxusers)
- }
- }
-
- alias maxusersnet {
- ;A changer au moment du développement des links !
- return $maxusers
- }
-
- alias lusers {
- if ($1) {
- sw $1 : $+ %me 251 $socknick($1) :There are $totalusersnet users and $totalusersnet on 1 servers
- sw $1 : $+ %me 252 $socknick($1) $totalircop :operator(s) online
- sw $1 : $+ %me 254 $socknick($1) $totalchannels :channels formed
- sw $1 : $+ %me 255 $socknick($1) :I have $totalusersserv clients and 1 servers
- sw $1 : $+ %me 265 $socknick($1) :Current Local Users: $totalusersserv Max: $maxusers
- sw $1 : $+ %me 266 $socknick($1) :Current Global Users: $totalusersnet Max: $maxusersnet
- }
- }
-
- alias version {
- if ($1) {
- sw $1 : $+ %me 351 $socknick($1) G-IRCD1.1 %me :FinWXOoZE
- sw $1 : $+ %me 005 $socknick($1) MAP KNOCK SAFELIST HCN MAXCHANNELS= $+ %maxchannels MAXBANS= $+ %maxbans NICKLEN= $+ %nicklen TOPICLEN= $+ %topiclen KICKLEN= $+ %kicklen MAXTARGETS= $+ %maxtargets AWAYLEN= $+ %awaylen :are supported by this server
- sw $1 : $+ %me 005 $socknick($1) WALLCHOPS WATCH=128 SILENCE=15 MODES=12 CHANTYPES=# PREFIX=(qaohv)~&@%+ CHANMODES=be,kfL,l,psmntirRcOAQKVGCNSMT NETWORK= $+ %network CASEMAPPING=ascii EXTBAN=~,cqr :are supported by this server
- }
- }
-
- alias fullhost {
- ;Le $1 est un sockname
- set %thost $socknick($1) $+ ! $+ %identd_ [ $+ [ $socknick($1) ] ] $+ @ $+ %host_ [ $+ [ $1 ] ]
- return %thost
- }
-
- alias validflags {
- if ($1) {
- set %tflags $1
- set %tflags $removecs(%tflags,o,O,a,A,N,C,g,h,R,D,w,n,G,k,K,b,B,t,z,Z,v,H,W,r)
- if (%tflags) { return $false }
- else { return $true }
- }
- }
-
- alias operexists {
- if ($1) {
- if (%oline. [ $+ [ $1 ] ]) {
- return $true
- }
- else { return $false }
- }
- }
-
- alias goodoperpass {
- if ($2) {
- if (%oline. [ $+ [ $1 ] ] [ $+ [ .pass ] ] == $2) {
- return $true
- }
- else {
- return $false
- }
- }
- }
-
- alias goodoperhost {
- ;$goodoperhost(UID,host)
- if ($2) {
- if (%oline. [ $+ [ $1 ] ] [ $+ [ .host ] ] iswm $2) {
- return $true
- }
- else {
- return $false
- }
- }
- }
-
- alias goodvhosthost {
- ;$goodvhosthost(UID,host)
- if ($2) {
- if (%vhost_ [ $+ [ $1 ] ] [ $+ [ .from ] ] iswm $2) {
- return $true
- }
- else {
- return $false
- }
- }
- }
-
- alias gzline.add {
- ;gzline.add host $ctime timetoexpire host_gzlineur raison
- ; 1 2 3 4 5
- if ($5) {
- write $linesfile GZ $1-
- }
- }
-
- alias gzline.del {
- if ($1) {
- var %i 0
- set %gzfile $linesfile
- if (!$exists(%gzfile)) {
- halt
- }
- unset %gzline
- unset %r
- var %file $gopen(%gzfile)
- while ($fread(%file)) {
- inc %i
- set %r $ifmatch
- if ($gettok(%r,1,32) == GZ) {
- if ($gettok(%r,2,32) == $1) {
- write -dl $+ %i %gzfile
- break
- }
- }
- }
- .fclose %file
- }
- }
-
- alias gzline.infos {
- if ($1) {
- set %gzfile $linesfile
- if (!$exists(%gzfile)) {
- goto gzlineinfosend
- }
- unset %gzline
- unset %gzinfos
- var %file $gopen(%gzfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if ($gettok(%r,1,32) == GZ) {
- if ($gettok(%r,2,32) == $1) {
- set %gzinfos $gettok(%r,3-,32)
- }
- }
- }
- .fclose %file
- if (%gzinfos) {
- return %gzinfos
- }
- }
- :gzlineinfosend
- }
-
- alias addircoplist {
- if ($1) {
- unset %iline
- var %i 0
- set %ifile $ircoplistfile
- if (!$exists(%ifile)) {
- goto next
- }
- var %file $gopen(%ifile)
- while ($fread(%file)) {
- inc %i
- if ($gettok($ifmatch,1,32) == $1) {
- set %iline %i
- }
- }
- .fclose %file
- :next
- if (!%iline) {
- write %ifile $1 %ircop_ [ $+ [ $1 ] ]
- }
- else {
- write -dl $+ %iline %ifile
- write %ifile $1 %ircop_ [ $+ [ $1 ] ]
- }
- }
- }
-
- alias ircoplistfile {
- return %sysdir $+ \ircops.lst
- }
-
- alias delircoplist {
- if ($1) {
- unset %iline
- var %i 0
- set %ifile $ircoplistfile
- if (!$exists(%ifile)) {
- goto next
- }
- var %file $gopen(%ifile)
- while ($fread(%file)) {
- inc %i
- if ($gettok($ifmatch,1,32) == $1) {
- set %iline %i
- }
- }
- .fclose %file
- if (%iline) {
- write -dl $+ %iline %ifile
- }
- :next
- }
- }
-
- alias globops {
- set %gfile $userslistfile
- if (!$exists($userslistfile)) {
- goto globopsend
- }
- var %file $gopen(%gfile)
- while ($fread(%file)) {
- set %r $ifmatch
- if (%ircop_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- ;<- :irc.g-neration.com NOTICE huh :*** Global -- from huh: :o
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r : $+ $1-
- }
- }
- }
- .fclose %file
- :globopsend
- }
-
- alias locops {
- ;locops USER MESSAGE-
- if ($2) {
- ;Envoyer la notice à tous les IRCops locaux
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto locopsend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (O isincs %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- if ($1 != %me) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** LocOps -- from $1 $+ : $2-
- }
- else {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r : $+ $2-
- }
- }
- }
- }
- .fclose %file
- :locopsend
- ;Fin
- }
- }
-
- alias rh {
- if ($1) {
- set %rh.user $1
- ;Envoyer la notice à tous les IRCops locaux
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto rhend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- Loading IRCd configuration ..
- }
- }
- }
- .fclose %file
- :rhend
- ;Fin
- }
- else {
- set %rh.user <G-IRCD>
- }
-
- log [4CONFIG] Rehashing server... (2 $+ %rh.user $+ )
-
- set %nicklen 25
- set %chanlen 30
-
- set %G-NORME.chan #abcdefghijklmnopqrstuvwxyz0123456789+~&^âàáäãîïíìöòóôõéèëêuùúûüÿýñ絤£€¡!?¿<>[]`_-{}%$²()\/
- set %G-NORME.nick abcdefghijklmnopqrstuvwxyz0123456789âàáäãîïíìöòóôõéèëêuùúûüÿýñç<>[]`_-{}()^\|
- set %stxm icmnprstACMK1OQRSVT
- set %dynm bekl2
- set %cfgcmds oper me link
- set %sysdir $mircdir $+ System
- set %cmd.oper.lines 4
- set %cmd.me.lines 3
- set %cmd.vhost.lines 3
- set %cmd.link.lines 4
- delserver %me
- .remove $confservs
- unset %incommand
- set %numeric 1
- ;à changer car la prochaine version autorisera les links !
- set %confprob $false
- if (!$1) {
- unset %oline.*
- unset %me*
- unset %link*
- }
-
- if (!$exists(G-IRCD.conf)) {
- set %confprob $true
- log [12CONFIG] Unable to find G-IRCD.conf
- goto rehashend
- }
- if (!$exists(help.cmd)) {
- log [12CONFIG] WARNING: Unable to find help.cmd
- }
-
- var %i 1
- set %clines $lines(G-IRCD.conf)
- while (%i <= %clines) {
- set %r $read(G-IRCD.conf,n,%i)
-
- if (!%incommand) {
- if ($gettok(%r,2,32)) {
- if (($right(%r,1) == $chr(123)) || ($gettok(%r,1,32) == serv_listen)) {
- set %cmdlines 0
- set %incommand $gettok(%r,1-,32)
- }
- else {
- inc %i
- if ($read(G-IRCD.conf,n,%i) == $chr(123)) {
- set %cmdlines 0
- set %incommand $gettok(%r,1-,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing open brace ( $+ %i $+ )
- goto rehashend
- }
- }
- }
- }
-
- else {
- ;On est dans un bloc !
- ;Avant tout, vérifier si c'est pas un }
- if ($gettok(%incommand,1,32) == oper) {
- set %oline. $+ $gettok(%incommand,2,32) $true
- inc %cmdlines
- set %tuser $gettok(%incommand,2,32)
- if ($gettok(%r,1,32) == from) {
- if ($gettok(%r,2,32)) {
- if (@ isin $gettok(%r,2,32)) {
- set %oline. $+ %tuser $+ .host $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Invalid host format for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing parameter for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
- goto rehashend
- }
- }
- elseif ($gettok(%r,1,32) == password) {
- if ($gettok(%r,2,32)) {
- if ($len($gettok(%r,2,32)) >= 6) {
- set %oline. $+ %tuser $+ .pass $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Password too short ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing parameter for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
- goto rehashend
- }
- }
- elseif ($gettok(%r,1,32) == flags) {
- if ($gettok(%r,2,32)) {
- if ($validflags($gettok(%r,2,32))) {
- set %oline. $+ %tuser $+ .flags $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Some of the flags doesn't exist (flags: %tflags $+ ). ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing parameter for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
- goto rehashend
- }
- }
- elseif ($gettok(%r,1,32) == swhois) {
- if ($gettok(%r,2,32)) {
- set %oline. $+ %tuser $+ .swhois $gettok(%r,2-,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing parameter for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- if ($left(%r,1) == $chr(125)) {
- dec %cmdlines
- if (%cmdlines == %cmd. [ $+ [ $gettok(%incommand,1,32) ] ] [ $+ [ .lines ] ] ) {
- unset %incommand
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing, or excessive lines in bloc ' $+ $gettok(%incommand,1,32) $+ '
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- }
- elseif ($gettok(%incommand,1,32) == me) {
- inc %cmdlines
- if ($gettok(%r,1,32) == name) {
- if ($gettok(%r,2,32)) {
- set %me $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- elseif ($gettok(%r,1,32) == info) {
- if ($gettok(%r,2,32)) {
- set %me.info $gettok(%r,2-,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- elseif ($gettok(%r,1,32) == numeric) {
- if ($gettok(%r,2,32)) {
- set %tnumeric $gettok(%r,2,32)
- if (%tnumeric !isalpha) {
- if (%tnumeric >= 1) {
- set %me.numeric %tnumeric
- }
- else {
- set %confprob $true
- log [12CONFIG] Numeric must be > than 1. ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Numeric must be a number. ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing parameter for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- if ($left(%r,1) == $chr(125)) {
- dec %cmdlines
- if (%cmdlines == %cmd. [ $+ [ $gettok(%incommand,1,32) ] ] [ $+ [ .lines ] ] ) {
- write $serverlist %me %me.numeric %me.info
- unset %incommand
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing, or excessive lines in bloc ' $+ $gettok(%incommand,1,32) $+ '
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- }
- elseif ($gettok(%incommand,1,32) == vhost) {
- inc %cmdlines
- if ($gettok(%r,1,32) == vhost) {
- if ($gettok(%r,2,32)) {
- set %vhost_ [ $+ [ $gettok(%incommand,2,32) ] ] $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- elseif ($gettok(%r,1,32) == from) {
- if ($gettok(%r,2,32)) {
- set %vhost_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .from ] ] $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- elseif ($gettok(%r,1,32) == password) {
- if ($gettok(%r,2,32)) {
- if ($len($gettok(%r,2,32)) >= 6) {
- set %vhost_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .password ] ] $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Password too short ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- if ($left(%r,1) == $chr(125)) {
- dec %cmdlines
- if (%cmdlines == %cmd. [ $+ [ $gettok(%incommand,1,32) ] ] [ $+ [ .lines ] ] ) {
- unset %incommand
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing, or excessive lines in bloc ' $+ $gettok(%incommand,1,32) $+ '
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- }
- elseif ($gettok(%incommand,1,32) == link) {
- inc %cmdlines
- if ($gettok(%r,1,32) == ip) {
- if ($gettok(%r,2,32)) {
- set %link_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .ip ] ] $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- elseif ($gettok(%r,1,32) == port) {
- if ($gettok(%r,2,32)) {
- set %link_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .port ] ] $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- elseif ($gettok(%r,1,32) == password-receive) {
- if ($gettok(%r,2,32)) {
- if ($len($gettok(%r,2,32)) >= 6) {
- set %link_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .password_r ] ] $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Password too short ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- elseif ($gettok(%r,1,32) == password-connect) {
- if ($gettok(%r,2,32)) {
- if ($len($gettok(%r,2,32)) >= 6) {
- set %link_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .password_c ] ] $gettok(%r,2,32)
- }
- else {
- set %confprob $true
- log [12CONFIG] Password too short ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- else {
- if ($left(%r,1) == $chr(125)) {
- dec %cmdlines
- if (%cmdlines == %cmd. [ $+ [ $gettok(%incommand,1,32) ] ] [ $+ [ .lines ] ] ) {
- write $confservs $gettok(%incommand,2,32)
- unset %incommand
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing, or excessive lines in bloc ' $+ $gettok(%incommand,1,32) $+ '
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- }
- elseif ($gettok(%incommand,1,32) == serv_listen) {
- inc %cmdlines
- set %tport $gettok(%incommand,2,32)
- if ($len(%tport)) {
- if ($portfree(%tport)) {
- socklisten gserv $+ %tport %tport
- }
- dec %cmdlines
- unset %incommand
- }
- else {
- set %confprob $true
- log [12CONFIG] Missing argument in bloc ' $+ $gettok(%incommand,1,32) $+ '
- goto rehashend
- }
- }
- else {
- set %confprob $true
- log [12CONFIG] Unknown bloc type ' $+ $gettok(%incommand,1,32) $+ '. ( $+ %i $+ )
- goto rehashend
- }
- }
- inc %i
- }
-
- :rehashend
- if (!%confprob) {
- log [4CONFIG] Configuration loaded without any problem
- }
- else {
- log [4CONFIG] Config file could not be loaded...
- }
- if ($1) {
- ;Envoyer la notice à tous les IRCops locaux
- set %ilf $ircoplistfile
- if (!$exists(%ilf)) {
- goto ttend
- }
- var %file $gopen(%ilf)
- while ($fread(%file)) {
- set %r $gettok($ifmatch,1,32)
- if (o isin %umodes_ [ $+ [ %r ] ]) {
- if (%server_ [ $+ [ %r ] ] == %me) {
- if (!%confprob) {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- Configuration loaded without any problems ..
- }
- else {
- sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- There was one or several errors - See log.txt for more information
- }
- }
- }
- }
- .fclose %file
- :ttend
- ;Fin
- }
- }
-
- alias confservs { return $mircdir $+ System\confservs.lst }
-
- on *:socklisten:http: {
- set %httpsock $calc($rand(1,999999) + $ctime)
- sockaccept %httpsock
- sendpage %httpsock
- }
-
- on *:sockread:http: {
- sockread %httpsr
- }
-
- alias sendpage {
- if ($1) {
- var %i 1
- set %httplines $lines(index.htm)
- sw $1 HTTP/1.0 200 OK
- sw $1 Cache-Control: private
- sw $1 Content-Type: text/html
- sw $1 Set-Cookie: PREF=ID=37b5b3f171a73a13:TM=1087929353:LM=1087929353:S=AG7kB9gWNztna9Lc; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/;
- sw $1 Server: GWS/2.1
- sw $1 Content-Length: 2569
- sw $1 Date: huhu :p
- sw $1 Connection: Keep-Alive
- sw $1 $crlf
- ;while (%i <= %httplines) {
- ; sw $1 $read(index.htm,%i)
- ; inc %i
- ;}
- sw $1 <html>
- sw $1 <head>
- sw $1 <meta http-equiv="Content-Language" content="en">
- sw $1 <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
- sw $1 <title>G-IRCD ( $+ %me $+ )</title>
- sw $1 </head>
- sw $1 <body>
- sw $1 <p align="center"><font color="CC0000"><u><b> $+ %me $+ </b></u></font></p><br><br>
- if ($gettok(%ports,0,300) >= 2) {
- set %str.port ports
- }
- else {
- set %str.port port
- }
- sw $1 Listening %str.port %ports $+ <br><br>
- sw $1 Online users : $lines($userslistfile) $+ <br>
- sw $1 Online IRCop's : $lines($ircoplistfile) $+ <br>
- sw $1 Channels created : $lines($chanlistfile) $+ <br><br>
- sw $1 Launched since $readini(System\G-IRCD.dat,GlobalVars,online) $+ <br>
- sw $1 Server created on $readini(System\G-IRCD.dat,GlobalVars,creationtime) $+ <br><br><br><br><br><br>
- sw $1 <p align="center">
- sw $1 <i><font size="2">Running <a href="http://www.g-neration.com/g-ircd/">G-IRCD 1.0</a></font></i><br>
- sw $1 <font size="2"><i>By G-FACTION</i></font></p>
-
- sw $1 </body>
- sw $1 </html>
- sockclose $1
- }
- }
on 1:start: {
if (!$isdir(System)) {
mkdir System
}
echo -s 4Type /start, to start the server
echo -s Please visit http://www.g-neration.com/G-IRCD/
echo -s You can configure the server by editing g-ircd.conf, and by modifying rehash.g
if ($readini(System\G-IRCD.dat,GlobalVars,firststart) != no) {
writeini -n System\G-IRCD.dat GlobalVars creationtime $asctime
writeini -n System\G-IRCD.dat GlobalVars firststart no
}
}
alias cleanup {
var %i 1
set %systemdir $mircdir $+ System\
set %nbdfiles $calc($findfile(%systemdir ,*,0,0,) - 1)
log Cleaning up the database...
while (%i <= %nbdfiles) {
set %tmpfile $findfile(%systemdir ,*,%i,0,)
if (($nopath(%tmpfile) != G-IRCD.dat) && (%tmpfile)) {
log Removing %tmpfile
.remove $shortfn(%tmpfile)
}
inc %i
}
}
alias sw {
set %lastsw sw $1-
echo @sw 12 $+ %lastsw
sockwrite -tn $1 $2-
}
alias log { write log.txt $1- | echo @G-IRCD $1- }
alias randsock { return gircd $+ $rand(a,z) $+ $rand(A,Z) $+ $rand(a,z) $+ $rand(A,Z) $+ $rand(A,Z) $+ $rand(1000,9999) $+ $rand(10,99) $+ $rand(a,z) }
alias randping { return $rand(10,99) $+ $rand(A,Z) $+ $rand(0,9) $+ $rand(A,Z) $+ $rand(A,Z) $+ $rand(A,Z) $+ $rand(0,9) }
alias start {
;Démarrage du serveur
window -e @G-IRCD
;window -e @sr
cleanup
log Removing temporary variables...
unset %*
log Reading configuration for rehash...
rehash
rh
addmap %me 0 %me %me.info
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CHANGER ICI <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
log Server ready to listen to the Internet...
var %i 1
;Boucle servant à mettre en écoute les ports
while (%i <= $gettok(%ports,0,300)) {
set %tport $gettok(%ports,%i,300)
socklisten gircd $+ %i %tport
log 14Listening port : %tport
inc %i
}
log 4Server started !
writeini -n System\G-IRCD.dat GlobalVars online $asctime
}
alias usergiven {
;Alias servant à vérifier si l'user donné (sous forme de sockname) a déjà donné sa commande USER.
if ($1) {
inc %usergiventimes_ [ $+ [ $1 ] ]
if (%usergiventimes_ [ $+ [ $1 ] ] >= 10) {
.timerusergiven $+ $1 off
halt
}
.timerusergiven $+ $1 off
if (%usergiven_ [ $+ [ $1 ] ] == on) {
if (!$isco($socknick($sockname))) {
sw $1 : $+ %me NOTICE %nick_of_sockname_ [ $+ [ $1 ] ] :*** If you are having problems connecting due to ping timeouts, please type /quote pong %ping_ [ $+ [ $1 ] ] or /raw pong %ping_ [ $+ [ $1 ] ] now.
sw $1 : $+ %me NOTICE %nick_of_sockname_ [ $+ [ $1 ] ] :*** %me running version G-IRCD1.1
sw $1 PING : $+ %ping_ [ $+ [ $1 ] ]
.timerping $+ $1 1 %pingfreq /pingverif $1
set %usergiven_ [ $+ [ $1 ] ] off
hello $1
}
else {
sw $1 ERROR :Closing Link: Nickname is already in use. Please change.
sockclose2 $1
.timerkill $+ $1 -m 1 200 /sockclose $1
}
}
else {
;Sinon, on refait appel à cette même fonction dans une seconde, pour voir s'il ne l'a toujours pas donné, et ainsi de suite.
.timerusergiven $+ $1 1 1 /usergiven $1
}
}
}
on *:socklisten:gircd*: {
;On créé un nom aléatoire de socket
set %randsock $randsock
;On l'accepte en lui donnant le nom aléatoire
sockaccept %randsock
;On détermine l'ip du client venant de se connecter
set %ip_ [ $+ [ %randsock ] ] $sock(%randsock).ip
;Vérification du nombre de sessions pour l'ip
if (%sessions_ [ $+ [ %ip_ [ $+ [ %randsock ] ] ] ] >= %slimit) {
log 7Killed %ip_ [ $+ [ %randsock ] ] : Session limit exceeded
sw %randsock ERROR :Closing Link: Session limit exceeded
sockclose2 %randsock
.timerkill $+ %randsock -m 1 200 /sockclose %randsock
}
else {
inc %nbdconnects
set %port_ [ $+ [ %randsock ] ] $sock($sockname).port
inc %sessions_ [ $+ [ %ip_ [ $+ [ %randsock ] ] ] ]
sw %randsock : $+ %me NOTICE AUTH :*** Looking up your hostname...
set %dnssock %randsock
;dns %ip_ [ $+ [ %randsock ] ]
if ($dllcall(G-IRCD.dll,dllcallreturn,GDNS,%ip_ [ $+ [ %randsock ] ] %randsock)) { }
sw %randsock : $+ %me NOTICE AUTH :*** Checking ident...
}
}
alias dllcallreturn { }
on *:sockclose:gircd*: {
log 4Déconnexion : $socknick($sockname) ( $+ $fullhost($sockname) $+ )
set %quitchans %chans_ [ $+ [ $sockname ] ]
set %qfullhost $fullhost($sockname)
set %qnick $socknick($sockname)
set %qserv %server_ [ $+ [ $socknick($sockname) ] ]
set %quitraison_ [ $+ [ $sockname ] ] Quit: Connection reset by peer
sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ $sockname ] ]
sockclose2 $sockname
gquit $sockname Connection reset by peer
}
alias sockclose2 {
if ($1) {
if (%server_ [ $+ [ $socknick($1) ] ] == %me) {
;Envoyer la notice à tous les IRCops locaux
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto sockcloseend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
if (c isincs %snomask_ [ $+ [ %r ] ]) {
if ($socknick($1)) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %lonick :*** Notice -- client exiting: $socknick($1) ( $+ $gettok($fullhost($1),2-,$asc(!)) $+ ) $chr(91) $+ %quitraison_ [ $+ [ $1 ] ] $+ $chr(93)
;*** Notice -- Client exiting: G-FACTION[GTASA] (G-FACTION@127.0.0.2) [Quit: ]
}
}
}
}
}
.fclose %file
:sockcloseend
;Fin
}
whowas.add.private $1
tmpshun.del $socknick($1)
set %sockclosenick $socknick($1)
dec %sessions_ [ $+ [ $sock($1).ip ] ]
unset %connectiontime_ [ $+ [ $1 ] ]
unset %chans_ [ $+ [ $1 ] ]
unset %reginserver_ [ $+ [ $1 ] ]
unset %realname_ [ $+ [ $socknick($1) ] ]
unset %nick_ [ $+ [ $socknick($1) ] ]
if (%ircop_ [ $+ [ $socknick($1) ] ]) {
delircoplist %nick_of_sockname_ [ $+ [ $1 ] ]
}
unset %ircop_ [ $+ [ $socknick($1) ] ]
unset %nick_ [ $+ [ $socknick($1) ] ]
unset %snomask_ [ $+ [ $socknick($1) ] ]
unset %umodes_ [ $+ [ $socknick($1) ] ]
unset %identd_ [ $+ [ $socknick($1) ] ]
unset %server_ [ $+ [ $socknick($1) ] ]
unset %ping_ [ $+ [ $1 ] ]
unset %usergiven_ [ $+ [ $1 ] ]
unset %port_ [ $+ [ $1 ] ]
unset %vraiehost_ [ $+ [ $1 ] ]
unset %sockname_ [ $+ [ $socknick($1) ] ]
unset %nick_of_sockname_ [ $+ [ $1 ] ]
unset %host_ [ $+ [ $1 ] ]
unset %ip_ [ $+ [ $1 ] ]
unset %nick_of_sockname_ [ $+ [ $1 ] ]
delservnick %sockclosenick
}
}
alias pingverif {
if ($1) {
.timerping $+ $1 off
if (%pongdonne_ [ $+ [ $1 ] ]) {
set %pongdonne_ [ $+ [ $1 ] ] $false
set %ping_ [ $+ [ $1 ] ] $randping
sw $1 PING : $+ %ping_ [ $+ [ $1 ] ]
.timerping $+ $1 1 %pingfreq /pingverif $1
}
else {
set %quitchans %chans_ [ $+ [ $1 ] ]
set %qfullhost $fullhost($1)
set %qnick $socknick($1)
set %gserv %server_ [ $+ [ $socknick($1) ] ]
;sw $1 ERROR :Closing Link: Ping timeout
set %quitraison_ [ $+ [ $1 ] ] Quit: Ping Timeout
sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ $1 ] ]
sockclose2 $1
gquit $1 Ping Timeout
;.timerkill $+ $1 -m 1 200 /sockclose $1
}
}
}
alias applymodesonrequest {
if ($2) {
unset %endmodes
set %tnick $socknick($1)
set %tmodes $2
;Chargement des possibles flags de l'users
set %tflags %oline. [ $+ [ %ircop_ [ $+ [ %tnick ] ] ] ] [ $+ [ .flags ] ]
;Analyse des modes qu'envoit le client...
;On regroupe les modes par signe (grâce à $positivemodes et $negativemodes)
set %tmodes.pos $positivemodes(%tmodes)
set %tmodes.neg $negativemodes(%tmodes)
var %i 1
set %len $len(%tmodes)
unset %tumodes
set %tumodes %umodes_ [ $+ [ %tnick ] ]
while (%i <= %len) {
set %tlettre $mid(%tmodes,%i,1)
if (%tlettre isincs %tmodes.pos) {
set %signe $chr(43)
}
elseif (%tlettre isincs %tmodes.neg) {
set %signe $chr(45)
}
if ((%tlettre != $chr(43)) && (%tlettre != $chr(45))) {
if (%signe == $chr(43)) {
if (!$3) {
if (%tlettre isincs %tumodes) {
sw $1 : $+ %me 525 %tnick :You already have this umode ( $+ %tlettre $+ )
goto endwhileumode
}
}
}
if (%signe == $chr(45)) {
if (!$3) {
if (%tlettre !isincs %tumodes) {
sw $1 : $+ %me 526 %tnick :You don't have this umode ( $+ %tlettre $+ )
goto endwhileumode
}
}
}
}
;Commençons par nous occuper des modes que tout le monde peut se foutre
if ((%tlettre === s) || (%tlettre === i) || (%tlettre === w) || (%tlettre === R) || (%tlettre === V)) {
if (%tlettre !== s) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
if (%tlettre === s) {
if ($3) {
set %tsnomask $3
set %tsnomask.pos $positivemodes(%tsnomask)
set %tsnomask.neg $negativemodes(%tsnomask)
;<- :irc.G-SERVER.net 008 G-FACTION :Server notice mask (+cfvGqs)
var %o 1
set %len2 $len(%tsnomask)
while (%o <= %len2) {
set %ttsnomask $mid(%tsnomask,%o,1)
if (%ttsnomask isincs %tsnomask.pos) {
set %signe2 $chr(43)
}
elseif (%ttsnomask isincs %tsnomask.neg) {
set %signe2 $chr(45)
}
set %tttsnomask %snomask_ [ $+ [ %tnick ] ]
;sw $1 : $+ %me 999 %tnick :tttsnomask: %tttsnomask && ttsnomask: %ttsnomask
if ((%ttsnomask != $chr(43)) && (%ttsnomask != $chr(45))) {
if (%signe2 == $chr(43)) {
if (%ttsnomask isincs %tttsnomask) {
sw $1 : $+ %me 527 %tnick :You already have this snomask ( $+ %ttsnomask $+ )
goto endwhilesnomask
}
}
elseif (%signe2 == $chr(45)) {
if (%ttsnomask !isincs %tttsnomask) {
sw $1 : $+ %me 528 %tnick :You don't have this snomask ( $+ %ttsnomask $+ )
goto endwhilesnomask
}
}
}
if ((%ttsnomask === k) || (%ttsnomask === s)) {
;<- :irc.G-SERVER.net 008 G-FACTION :Server notice mask (+cfvGqs)
;sw $1 : $+ %me 999 %tnick :haha1
snomasksrv %signe2 %tnick %ttsnomask
sw $1 : $+ %me 008 %tnick :Server notice mask ( $+ $chr(43) $+ %snomask_ [ $+ [ %tnick ] ] $+ )
}
elseif ((%ttsnomask === c) || (%ttsnomask === j) || (%ttsnomask === n) || (%ttsnomask === q) || (%ttsnomask === v) || (%ttsnomask === G) || (%ttsnomask === F) || (%ttsnomask === o)) {
if (%ttsnomask !== F) {
if (o isin %tumodes) {
snomasksrv %signe2 %tnick %ttsnomask
sw $1 : $+ %me 008 %tnick :Server notice mask ( $+ $chr(43) $+ %snomask_ [ $+ [ %tnick ] ] $+ )
}
else {
sw $1 : $+ %me 523 %tnick :Permission Denied - You do not have the correct IRC Operator privileges for this snomask
}
}
else {
if (o isincs %tumodes) {
snomasksrv %signe2 %tnick %ttsnomask
sw $1 : $+ %me 008 %tnick :Server notice mask ( $+ $chr(43) $+ %snomask_ [ $+ [ %tnick ] ] $+ )
}
else {
sw $1 : $+ %me 523 %tnick :Permission Denied - You do not have the correct IRC Operator privileges for this snomask
}
}
}
else {
if ((%ttsnomask != $chr(43)) && (%ttsnomask != $chr(45))) {
sw $1 : $+ %me 524 %tnick : $+ %ttsnomask : Unknown Snomask
}
}
:endwhilesnomask
inc %o
}
}
if (%signe == $chr(43)) {
if (s !isincs %tumodes) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
}
if (%signe == $chr(45)) {
if (s isincs %tumodes) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
}
}
}
elseif (%tlettre === x) {
if (%signe == $chr(43)) {
set %host_ [ $+ [ $1 ] ] %host.bak_ [ $+ [ $1 ] ]
}
elseif (%signe == $chr(45)) {
set %host_ [ $+ [ $1 ] ] %vraiehost_ [ $+ [ $1 ] ]
}
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
elseif (%tlettre === B) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
botmotd $1
}
;Puis, on s'occupe des modes qui vont demander de se référer à la o:line de l'utilisateur.
elseif ((%tlettre === p) || (%tlettre === H) || (%tlettre === W) || (%tlettre === N) || (%tlettre === o) || (%tlettre === O) || (%tlettre === A) || (%tlettre === C) || (%tlettre === a) || (%tlettre === g)) {
if (o isin %tumodes) {
if (%tlettre === N) {
if (N isincs %tflags) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
else {
sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
}
}
elseif (%tlettre === o) {
if (O isincs %tflags) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
else {
sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
}
}
elseif (%tlettre === O) {
if (o isincs %tflags) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
else {
sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
}
}
elseif (%tlettre === A) {
if (A isincs %tflags) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
else {
sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
}
}
elseif (%tlettre === C) {
if (C isincs %tflags) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
else {
sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
}
}
elseif (%tlettre === a) {
if (a isincs %tflags) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
else {
sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
}
}
elseif (%tlettre === g) {
if (g isincs %tflags) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
else {
sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
}
}
}
else {
;Note : +raw.txt
sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
}
}
elseif (%tlettre === h) {
if (h isincs %tflags) {
set %endmodes %endmodes $+ %signe $+ %tlettre
umodesrv %signe %tnick %tlettre
}
else {
sw $1 : $+ %me 522 :Permission Denied - You do not have the correct IRC Operator privileges for this umode
}
}
/*Memo :
Faire //mode $me -o
Revient à faire : -oOhaANW
Ca n'enleve naturellement pas ceux-ci : +wgsx
*/
else {
if ((%tlettre != $chr(45)) && (%tlettre != $chr(43))) {
sw $1 : $+ %me 501 %tnick : $+ %tlettre : Unknown MODE flag
}
}
:endwhileumode
inc %i
}
if (%endmodes) {
sw $1 : $+ %tnick MODE %tnick : $+ $reconvmodes(%endmodes)
sendmultiserver : $+ %tnick MODE %tnick : $+ $reconvmodes(%endmodes)
}
}
}
alias applyumodesoline {
set %tnick $socknick($1)
unset %ttumodes
set %tumodes %oline. [ $+ [ %ircop_ [ $+ [ %tnick ] ] ] ] [ $+ [ .flags ] ]
if (o isincs %tumodes) {
set %ttumodes %ttumodes $+ O
}
if (O isincs %tumodes) {
set %ttumodes %ttumodes $+ o
}
set %ttumodes %ttumodes $+ $replacecs(%tumodes,a,a,A,A,N,N,C,C,g,g,h,h,w,w,R,,D,,n,,K,,G,,k,,b,,B,,t,,z,,Z,,v,,H,,W,,r,)
umodesrv $chr(43) %tnick %ttumodes
sw $1 : $+ %tnick MODE %tnick : $+ $chr(43) $+ %ttumodes
}
alias gopen {
;made by G-FACTION
var %handle $+(FILE::,$rand($calc($ticks/4*2/5),$ticks))
.fopen %handle $1
if ($fopen(%handle).err) { .fclose %handle | return 0 }
else { return %handle }
}
alias botmotd {
if ($1) {
if ($exists(%botmotdfile)) {
set %botmotdnick $socknick($1)
sw $1 : $+ %me NOTICE %botmotdnick :- %me Bot Message Of The Day -
var %file $gopen(%botmotdfile)
while ($fread(%file)) {
sw $1 : $+ %me NOTICE %botmotdnick :- $+ $ifmatch
}
.fclose %file
sw $1: $+ %me NOTICE %botmotdnick :End of /BOTMOTD command.
}
else {
sw $1 : $+ %me NOTICE %botmotdnick :BOTMOTD File not found
}
}
.fclose %file
}
alias umodesrv {
if ($2) {
if ($1 == $chr(43)) {
set %tumodes $removecs(%umodes_ [ $+ [ $2 ] ],$3)
set %umodes_ [ $+ [ $2 ] ] %tumodes $+ $3
}
elseif ($1 == $chr(45)) {
set %umodes_ [ $+ [ $2 ] ] $removecs(%umodes_ [ $+ [ $2 ] ],$3)
}
}
}
alias snomasksrv {
;signe nick snomask
if ($2) {
if ($1 == $chr(43)) {
set %tsnomask2 $removecs(%snomask_ [ $+ [ $2 ] ],$3)
set %snomask_ [ $+ [ $2 ] ] %tsnomask2 $+ $3
}
elseif ($1 == $chr(45)) {
set %snomask_ [ $+ [ $2 ] ] $removecs(%snomask_ [ $+ [ $2 ] ],$3)
}
}
}
alias positivemodes {
unset %positivemodes
if (($left($1,1) != $chr(45)) && ($left($1,1) != $chr(43))) {
set %tmodes + $+ $1-
}
else { set %tmodes $1- }
set %tmodes - $+ %tmodes
if ($1) {
var %i 1
set %len $len($1-)
set %tokenmodes $gettok(%tmodes,0,43)
while ($calc(%i + 1) <= %tokenmodes) {
set %positivemodes %positivemodes $+ $deltok($gettok(%tmodes,$calc(%i + 1),43),2-,45)
inc %i
}
}
return %positivemodes
}
alias negativemodes {
unset %negativemodes
if (($left($1,1) != $chr(45)) && ($left($1,1) != $chr(43))) {
set %tmodes + $+ $1-
}
else { set %tmodes $1- }
set %tmodes + $+ %tmodes
if ($1) {
var %i 1
set %len $len($1-)
set %tokenmodes $gettok(%tmodes,0,45)
while ($calc(%i + 1) <= %tokenmodes) {
set %negativemodes %negativemodes $+ $deltok($gettok(%tmodes,$calc(%i + 1),45),2-,43)
inc %i
}
}
return %negativemodes
}
alias isatleast {
;$isatleast(mode,nick,chan)
; 1 2 3
;Exemple : $isatleast(h,G-FACTION,#scripts) va retourner $true si je suis op, halfop, ou owner :p
if ($3) {
set %chanfile $chanfile($3)
if (!$exists(%chanfile)) {
goto isatleastend
}
var %file $gopen(%chanfile)
while ($fread(%file)) {
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %is $left(%r,1)
set %tnick $right(%r,$calc($len(%r) - 1))
}
else {
set %is rien
set %tnick %r
}
if (%tnick == $2) {
set %iss %is
}
}
.fclose %file
:isatleastend
if ($1 === o) {
if ((%iss == $chr(64)) || (%iss == $chr(126)) || (%iss == $chr(38))) {
set %isatleast yes
}
else {
set %isatleast no
}
}
elseif ($1 == h) {
if ((%iss == $chr(64)) || (%iss == $chr(126)) || (%iss == $chr(37)) || (%iss == $chr(38))) {
set %isatleast yes
}
else {
set %isatleast no
}
}
elseif ($1 == v) {
if ((%iss == $chr(64)) || (%iss == $chr(126)) || (%iss == $chr(37)) || (%iss == $chr(43)) || (%iss == $chr(38))) {
set %isatleast yes
}
else {
set %isatleast no
}
}
elseif ($1 == q) {
if (%iss == $chr(126)) {
set %isatleast yes
}
else {
set %isatleast no
}
}
elseif ($1 == a) {
if ((%iss == $chr(38)) |- (%iss == $chr(126))) {
set %isatleast yes
}
else {
set %isatleast no
}
}
if (%isatleast == yes) {
return $true
}
else {
return $false
}
}
}
alias strongerthan {
;$strongerthan(a,q) = $false (a pas plus fort que q)
if ($2) {
if ($1 == q) {
return $true
}
elseif ($1 == a) {
if ($2 == q) {
return $false
}
else {
return $true
}
}
elseif ($1 == o) {
if (($2 == a) || ($2 == q)) {
return $false
}
else {
return $true
}
}
elseif ($1 == h) {
if (($2 == o) || ($2 == a) || ($2 == q)) {
return $false
}
else {
return $true
}
}
elseif ($1 == v) {
if (($2 == h) || ($2 == o) || ($2 == a) || ($2 == q)) {
return $false
}
else {
return $true
}
}
elseif ($1 == NULL) {
if ($2 == NULL) {
return $true
}
else {
return $false
}
}
}
}
alias nfochanfile {
if ($1) {
return $mircdir $+ System\ $+ $1 $+ .nfo
}
}
alias chmodestxsrv {
;chmodesrv +- Chan Mode
if ($3) {
if ($1 == $chr(43)) {
set %m $replacecs($3,N,1,S,3,C,4,T,5)
writeini -n $nfochanfile($2) STXM %m on
}
elseif ($1 == $chr(45)) {
set %m $replacecs($3,N,1,S,3,C,4,T,5)
writeini -n $nfochanfile($2) STXM %m off
}
}
}
alias chmodedynsrv {
;chmodedynsrv +- #chan k lepass
; 1 2 3 4
echo -a 10chmodedynsrv $1-
if ($3) {
if ($1 == $chr(43)) {
set %m $replacecs($3,L,2)
writeini -n $nfochanfile($2) DYNM %m on
writeini -n $nfochanfile($2) DYNM %m $+ .arg $4
}
elseif ($1 == $chr(45)) {
set %m $replacecs($3,L,2)
writeini -n $nfochanfile($2) DYNM %m off
}
}
}
alias sendchannel {
;sendchannel #chan Le message... ^^
if ($2) {
var %o 0
if (!$exists($chanfile($1))) {
goto sendchannelend
}
var %file $gopen($chanfile($1))
while ($fread(%file)) {
inc %o
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %tempnick $right(%r,$calc($len(%r) - 1))
}
else {
set %tempnick %r
}
if (($sock(%sockname_ [ $+ [ %tempnick ] ])) && (%server_ [ $+ [ %tempnick ] ] == %me)) {
;echo -a 7sw %sockname_ [ $+ [ %tempnick ] ] $2-
sw %sockname_ [ $+ [ %tempnick ] ] $2-
}
else {
if (!$sock($+(gserv.,$passerelle(%server_ [ $+ [ %tempnick ] ])))) {
;Ghost repéré...
echo @sr 3Ghost repéré, ligne %o de $chanfile($1) supprimée ( $+ $read($chanfile($1),%o) $+ )
write -dl $+ %o $chanfile($1)
}
}
}
.fclose %file
:sendchannelend
}
}
alias chmodestatussrv {
;chmodestatussrv +- Chan Mode Personne
; 1 2 3 4
echo @sr 13Entering chmodestatussrv function
echo @sr 131: $1 2: $2 3: $3 4: $4
if ($4) {
unset %laligne
var %i 0
var %file $gopen($chanfile($2))
while ($fread(%file)) {
inc %i
set %r $ifmatch
;echo -a 2 $+ %r
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %tempnick $right(%r,$calc($len(%r) - 1))
}
else {
set %tempnick %r
}
if (%tempnick == $4) {
;echo -a 4Personne repérée...
set %laligne %i
echo @sr 13Laligne: %laligne
echo @sr 13Personne: %tempnick
}
}
.fclose %file
if (%laligne) {
echo @sr 13chmodestatussrv : delete line : %laligne in $chanfile($2)
write -dl $+ %laligne $chanfile($2)
}
if ($1 == $chr(43)) {
set %tempstsm $readini($nfochanfile($2),STSM,$4)
set %tempstsm $removecs(%tempstsm,$3)
set %tempstsm %tempstsm $+ $3
writeini -n $nfochanfile($2) STSM $4 %tempstsm
echo @sr 13write $chanfile($2) $replace($strongermode(%tempstsm),v,$chr(43),h,$chr(37),o,$chr(64),q,$chr(126),a,$chr(38)) $+ $4
write $chanfile($2) $replace($strongermode(%tempstsm),v,$chr(43),h,$chr(37),o,$chr(64),q,$chr(126),a,$chr(38)) $+ $4
}
elseif ($1 == $chr(45)) {
set %tempstsm $readini($nfochanfile($2),STSM,$4)
set %tempstsm $removecs(%tempstsm,$3)
if (!%tempstsm) { set %tempstsm z }
writeini -n $nfochanfile($2) STSM $4 %tempstsm
set %tstrongermode $strongermode(%tempstsm)
if (%tstrongermode != NULL) {
echo @sr 13write $chanfile($2) $replace(%tstrongermode,v,$chr(43),h,$chr(37),o,$chr(64),q,$chr(126),a,$chr(38),z,) $+ $4
write $chanfile($2) $replace(%tstrongermode,v,$chr(43),h,$chr(37),o,$chr(64),q,$chr(126),a,$chr(38),z,) $+ $4
}
else {
echo @sr 13write $chanfile($2) $4
write $chanfile($2) $4
}
}
}
}
alias strongermode {
;Alias définissant le plus fort mode de ceux proposés, sans l'ordre 'qaohv'
if ($1) {
unset %sm
if ((v isincs $1) && (h !isincs $1) && (o !isincs $1) && (a !isincs $1) && (q !isincs $1)) {
set %sm v
}
elseif ((h isincs $1) && (o !isincs $1) && (a !isincs $1) && (q !isincs $1)) {
set %sm h
}
elseif ((o isincs $1) && (a !isincs $1) && (q !isincs $1)) {
set %sm o
}
elseif ((a isincs $1) && (q !isincs $1)) {
set %sm a
}
elseif (q isincs $1) {
set %sm q
}
else {
set %sm NULL
}
return %sm
}
}
alias reconvmodes {
if ($1) {
var %i 1
unset %endstr
unset %derniersigne
while (%i <= $len($1)) {
set %rmode $mid($1,%i,1)
if ((%rmode == $chr(43)) || (%rmode == $chr(45))) {
if (%rmode != %derniersigne) {
set %derniersigne %rmode
set %endstr %endstr $+ %rmode
}
goto finwhile
}
else {
set %endstr %endstr $+ %rmode
}
:finwhile
inc %i
}
return %endstr
}
}
alias chbanlist {
;chbanlist %chsigne %chchan $quelargument(%i,%chmodes) %chnick $ctime extension(bl par exemple)
;chbanlist + #G-FACTION *lol*!*@* G-FACTION 1108716436 bl
; 1 2 3 4 5 6
echo -a 13 $+ $1-
if ($6) {
echo -a haha
unset %laligne
set %banfile $mirc $+ System\ $+ $2 $+ $chr(46) $+ $6
echo -a 3 $+ %banfile
if (!$exists(%banfile)) {
echo -a mwahaa
goto chbanlistend
}
echo -a 4KJHBZRF
var %i 0
if (($3 == $chr(42)) || ($3 == $chr(33)) || ($3 == $chr(64))) {
echo -a !!!1
set %bmask *!*@*
}
elseif (($chr(64) !isin $3) && ($chr(33) !isin $3) && ($chr(42) !isin $3)) {
echo -a !!!2
set %bmask $3 $+ !*@*
echo -a %bmask :)
}
elseif (($chr(64) !isin $3) && ($chr(33) !isin $3)) {
echo -a !!!5
set %bmask $3 $+ !*@*
}
else {
echo -a !!!4
set %bmask $3
}
var %file $gopen(%banfile)
while ($fread(%file)) {
inc %i
;set %r $read(%banfile,n,%i)
set %r $ifmatch
echo -a $gettok(%r,1,32) == %bmask
if ($gettok(%r,1,32) == %bmask) {
set %laligne %i
}
}
.fclose %file
:chbanlistend
if (%laligne) {
if ($1 == $chr(43)) {
goto chbanlistend2
}
else {
write -dl $+ %laligne %banfile
}
}
if ($1 == $chr(43)) {
if (%bmask != ERROR) {
write %banfile %bmask $4 $5
;<- :G-FACTION!~G-FACTION@EpiK-5A393E5B.fbx.proxad.net MODE #g-faction +b pa!*@*
echo -a sendchannel $2 : $+ $fullhost(%sockname_ [ $+ [ $4 ] ]) MODE $2 $1 $+ $iif($6 == bl,b,e) %bmask
sendchannel $2 : $+ $fullhost(%sockname_ [ $+ [ $4 ] ]) MODE $2 $1 $+ $iif($6 == bl,b,e) %bmask
}
else {
if ($6 == bl) {
set %mot ban
}
elseif ($6 == el) {
set %mot exception
}
sw %sockname_ [ $+ [ $4 ] ] : $+ %me 531 $4 :Invalid %mot mask ( $+ $3 $+ )
halt
}
}
else {
if (%laligne) {
sendchannel $2 : $+ $fullhost(%sockname_ [ $+ [ $4 ] ]) MODE $2 $1 $+ $iif($6 == bl,b,e) %bmask
}
}
:chbanlistend2
}
else { echo -a 4!!!!!!!!!!!!!!!!!!!!!!!!!!! }
}
alias banfile {
if ($1) {
return $mircdir $+ System\ $+ $1 $+ .bl
}
}
alias exceptfile {
if ($1) {
return $mircdir $+ System\ $+ $1 $+ .el
}
}
alias zline.add {
;zline.add host $ctime timetoexpire host_zlineur raison
; 1 2 3 4 5
if ($5) {
write $linesfile Z $1-
}
}
alias zline.del {
if ($1) {
var %i 0
set %zfile $linesfile
if (!$exists(%zfile)) {
halt
}
unset %zline
unset %r
var %file $gopen(%zfile)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if ($gettok(%r,1,32) == Z) {
if ($gettok(%r,2,32) == $1) {
write -dl $+ %i %zfile
break
}
}
inc %i
}
.fclose %file
}
}
alias zline.infos {
if ($1) {
set %zfile $linesfile
if (!$exists(%zfile)) {
goto zlineinfosend
}
unset %zline
unset %zinfos
var %file $gopen(%zfile)
while ($fread(%file)) {
set %r $ifmatch
if ($gettok(%r,1,32) == Z) {
if ($gettok(%r,2,32) == $1) {
set %zinfos $gettok(%r,3-,32)
}
}
}
.fclose %file
if (%zinfos) {
return %zinfos
}
}
:zlineinfosend
}
alias quelargument {
;$quelargument(numero,modes)
; 1 2
;+oooo Nick1 Nick2 Nick3 Nick4
;On veut savoir quel est l'argument du 3ème 'o' par exemple. Ici : Nick3
var %i 1
set %qlen $len($2)
unset %args
unset %quelargument
while (%i <= %qlen) {
set %qmode $mid($2,%i,1)
if (%qmode isincs aqhovbeklL) {
;Si le mode doit comporter un argument
;On incrémente la variable qui compte le nombre d'args
inc %args
}
if (%i == $1) {
set %quelargument $gettok($2,$calc(%args + 1),32)
}
inc %i
}
return %quelargument
}
alias sendbanlist {
;sendbanlist sockname chan
; 1 2
if ($2) {
set %blnick $socknick($1)
set %banfile $banfile($2)
if (!$exists(%banfile)) {
goto sendbanlistend
}
var %file $gopen(%banfile)
while ($fread(%file)) {
set %r $ifmatch
sw $1 : $+ %me 367 %blnick $2 $gettok(%r,1-3,32)
}
.fclose %file
:sendbanlistend
sw $1 : $+ %me 368 %blnick $2 :End of Channel Ban List
}
}
alias sendexceptlist {
;sendbanlist sockname chan
; 1 2
if ($2) {
set %exnick $socknick($1)
set %exceptfile $exceptfile($2)
if (!$exists(%exceptfile)) {
goto sendexceptlistend
}
set %file $gopen(%exceptfile)
while ($fread(%file)) {
set %r $ifmatch
sw $1 : $+ %me 348 %exnick $2 $gettok(%r,1-3,32)
}
.fclose %file
:sendexceptlistend
sw $1 : $+ %me 349 %exnick $2 :End of Channel Exception List
}
}
alias banalreadyexists {
if ($3) {
set %banfile $mircdir $+ System\ $+ $1 $+ . $+ $3
set %bae $false
if (!$exists(%banfile)) {
goto banalreadyexistsend
}
set %file $gopen(%banfile)
while ($fread(%file)) {
set %read $ifmatch
if ($gettok(%read,1,32) == $2) {
set %bae $true
}
}
.fclose %file
:banalreadyexistsend
return %bae
}
}
alias applychmodesonrequest {
;applychmodesonrequest Sockname Chan Modes-
;
; 1 2 3-
if ($3) {
;$sockname $+ $chr(96) $+ %me $2-
set %tsock $gettok($1,1,96)
set %samode $false
if ($gettok($1,2,96)) {
set %chnick $ifmatch
set %samode $true
}
else {
set %chnick $socknick(%tsock)
}
set %chchan $2
set %chmodes $3-
set %chmodes.pos $positivemodes($gettok(%chmodes,1,32))
set %chmodes.neg $negativemodes($gettok(%chmodes,1,32))
var %i 1
unset %endchmodes
unset %endstatusmodes
unset %enddynmodes
unset %chargs
set %chlen $len($3)
set %operoverride $false
if (%ircop_ [ $+ [ %chnick ] ]) {
set %tflags %oline. [ $+ [ %ircop_ [ $+ [ %chnick ] ] ] ] [ $+ [ .flags ] ]
if (v isincs %tflags) {
set %operoverride $true
}
}
while (%i <= %chlen) {
set %chlettre $mid(%chmodes,%i,1)
set %chlettre2 $replacecs($mid(%chmodes,%i,1),N,1,L,2,S,3,C,4,T,5)
if ((%chlettre == $chr(43)) || (%chlettre == $chr(45))) {
;Alors il s'agit d'un + ou -
goto endofchlettrewhile
}
if (%chlettre isincs %chmodes.pos) {
set %chsigne $chr(43)
}
elseif (%chlettre isincs %chmodes.neg) {
set %chsigne $chr(45)
}
;Regroupons par type de mode
if (%chlettre isincs icmnprstACMKNOQRSVT) {
;Ce sont des static modes
;Regroupons par ordre de privileges requis
if (%chsigne == $chr(43)) {
if ($readini($nfochanfile(%chchan),STXM,%chlettre2) == on) {
goto endofchlettrewhile
}
}
elseif (%chsigne == $chr(45)) {
if ($readini($nfochanfile(%chchan),STXM,%chlettre2) != on) {
goto endofchlettrewhile
}
}
if (%chlettre isincs imnt) {
;Ce sont les modes où il faut au moins être halfop pour pouvoir les mettre
if (($isatleast(h,%chnick,%chchan)) || (%operoverride) || (%samode)) {
set %endchmodes %endchmodes $+ %chsigne $+ %chlettre
chmodestxsrv %chsigne %chchan %chlettre
}
else {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
}
elseif (%chlettre isincs scpoCMKNQRSVT) {
;Modes où il faut être au moins op
if (($isatleast(o,%chnick,%chchan)) || (%operoverride) || (%samode)) {
if (%chsigne == $chr(43)) {
if (%chlettre === s) {
if (p isincs $chmodes(%chchan)) {
chmodestxsrv $chr(45) %chchan p
set %endchmodes %endchmodes $+ $chr(45) $+ p
}
}
elseif (%chlettre === p) {
if (s isincs $chmodes(%chchan)) {
chmodestxsrv $chr(45) %chchan s
set %endchmodes %endchmodes $+ $chr(45) $+ s
}
}
}
set %endchmodes %endchmodes $+ %chsigne $+ %chlettre
chmodestxsrv %chsigne %chchan %chlettre
}
else {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
}
elseif (%chlettre === O) {
;Mode uniquement appliquable par les IRCops
if ((o isin %umodes_ [ $+ [ %chnick ] ]) || (%samode)) {
set %endchmodes %endchmodes $+ %chsigne $+ %chlettre
chmodestxsrv %chsigne %chchan %chlettre
}
else {
sw %tsock : $+ %me 529 %chnick %chchan :Opers Only mode (+O) can only be set by IRC Operators.
}
}
elseif (%chlettre === A) {
if ((a isin %umodes_ [ $+ [ %chnick ] ]) || (N isincs %umodes_ [ $+ [ %chnick ] ]) || (%samode)) {
set %endchmodes %endchmodes $+ %chsigne $+ %chlettre
chmodestxsrv %chsigne %chchan %chlettre
}
else {
sw %tsock : $+ %me 530 %chnick %chchan :Admins Only mode (+A) can only be set by Administrators.
}
}
}
elseif (%chlettre isincs vhoaq) {
;Ce sont des status modes
if ($quelargument(%i,%chmodes)) {
if (%chsigne == $chr(43)) {
if (%chlettre isincs $readini($nfochanfile(%chchan),STSM,$quelargument(%i,%chmodes))) {
goto endofchlettrewhile
}
}
elseif (%chsigne == $chr(45)) {
if (%chlettre !isincs $readini($nfochanfile(%chchan),STSM,$quelargument(%i,%chmodes))) {
goto endofchlettrewhile
}
}
write haha.txt juste avant le $eval($ison,0)
if (($ison(%chnick,%chchan)) || (%samode)) {
write haha.txt juste avant le $eval($ison,0) 2
if (!$ison($quelargument(%i,%chmodes),%chchan)) {
write haha.txt dans le ison 2 !
;<- :besancon3.fr.epiknet.org 401 G-FACTION mdr :No such nick/channel
if (!%samode) {
sw %tsock : $+ %me 401 %chnick $quelargument(%i,%chmodes) :No such nick/channel
}
goto hahaha
}
}
else {
;<- :besancon3.fr.epiknet.org 482 G-FACTION #lol :You're not channel operator
if (!%samode) {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
goto hahaha
}
else {
}
if (%chlettre === v) {
if (($isatleast(h,%chnick,%chchan)) || (%operoverride) || (%samode)) {
set %endstatusmodes %endstatusmodes $+ %chsigne $+ %chlettre
chmodestatussrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
set %chargs %chargs $quelargument(%i,%chmodes)
}
else {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
}
elseif (%chlettre === h) {
if (($isatleast(o,%chnick,%chchan)) || (%operoverride) || (%samode)) {
set %endstatusmodes %endstatusmodes $+ %chsigne $+ %chlettre
chmodestatussrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
set %chargs %chargs $quelargument(%i,%chmodes)
}
else {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
}
elseif (%chlettre === o) {
if (($isatleast(o,%chnick,%chchan)) || (%operoverride) || (%samode)) {
set %endstatusmodes %endstatusmodes $+ %chsigne $+ %chlettre
chmodestatussrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
set %chargs %chargs $quelargument(%i,%chmodes)
}
else {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
}
elseif ((%chlettre === a) || (%chlettre === q)) {
if (($isatleast(q,%chnick,%chchan)) || (%operoverride) || (%samode)) {
set %endstatusmodes %endstatusmodes $+ %chsigne $+ %chlettre
chmodestatussrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
set %chargs %chargs $quelargument(%i,%chmodes)
}
else {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
}
:hahaha
}
}
elseif (%chlettre isincs beklL) {
;Alors ce sont des dynamic modes
if (%chlettre === e) {
set %format el
}
elseif (%chlettre === b) {
set %format bl
}
if (%chlettre !isincs eb) {
if (%chsigne == $chr(43)) {
if ($readini($nfochanfile(%chchan),DYNM,%chlettre2) == on) {
if ($readini($nfochanfile(%chchan),DYNM,%chlettre2 $+ .arg) == $quelargument(%i,%chmodes)) {
goto endofchlettrewhile
}
}
}
elseif (%chsigne == $chr(45)) {
if ($readini($nfochanfile(%chchan),DYNM,%chlettre2) != on) {
goto endofchlettrewhile
}
}
}
if ((%chlettre === b) || (%chlettre === e)) {
;Le fichier de banlist d'un canal est #canal.bl
;Le format dans le fichier : Mask Banner ctime
if (!$len($quelargument(%i,%chmodes))) {
if (%chlettre === b) {
sendbanlist %tsock %chchan
goto endofchlettrewhile
}
elseif (%chlettre === e) {
sendexceptlist %tsock %chchan
goto endofchlettrewhile
}
}
if (($isatleast(h,%chnick,%chchan)) || (%operoverride) || (%samode)) {
if ($len($quelargument(%i,%chmodes))) {
;set %enddynmodes %enddynmodes $+ %chsigne $+ %chlettre
chbanlist %chsigne %chchan $quelargument(%i,%chmodes) %chnick $ctime %format
;set %chargs %chargs $quelargument(%i,%chmodes)
}
}
else {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
}
elseif ((%chlettre === k) || (%chlettre === l) || (%chlettre === L)) {
if (%chsigne == $chr(43)) {
if (!$quelargument(%i,%chmodes)) {
goto endofchlettrewhile
}
}
if (%chsigne == $chr(43)) {
if (%chlettre === L) {
if (l isincs $chmodes(%chchan)) {
;974 G-FACTION L :+l must be set
if (!$correctchanname($quelargument(%i,%chmodes))) {
;403 G-FACTION l :No such channel
sw $1 : $+ %me 403 %chnick $quelargument(%i,%chmodes) :No such channel
goto endofchlettrewhile
}
}
else {
sw $1 : $+ %me 974 %chnick L :+l must be set
goto endofchlettrewhile
}
}
}
if (%chlettre === k) {
if (($isatleast(h,%chnick,%chchan)) || (%operoverride) || (%samode)) {
set %enddynmodes %enddynmodes $+ %chsigne $+ %chlettre
chmodedynsrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
set %chargs %chargs $quelargument(%i,%chmodes)
}
else {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
}
elseif (%chlettre === l) {
if (($isatleast(o,%chnick,%chchan)) || (%operoverride) || (%samode)) {
set %enddynmodes %enddynmodes $+ %chsigne $+ %chlettre
chmodedynsrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
set %chargs %chargs $quelargument(%i,%chmodes)
}
else {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
}
elseif (%chlettre === L) {
if (($isatleast(q,%chnick,%chchan)) || (%operoverride) || (%samode)) {
set %enddynmodes %enddynmodes $+ %chsigne $+ %chlettre
chmodedynsrv %chsigne %chchan %chlettre $quelargument(%i,%chmodes)
set %chargs %chargs $quelargument(%i,%chmodes)
}
else {
sw %tsock : $+ %me 482 %chnick %chchan :You're not channel operator
}
}
}
}
else {
;<- :besancon.fr.epiknet.org 472 G-FACTION ^ :is unknown mode char to me
sw %tsock : $+ %me 472 %chnick %chlettre :is unknown mode char to me
}
:endofchlettrewhile
inc %i
}
if (%endchmodes) {
;<- :irc.G-SERVER.net MODE #G-FACTION +i
if (!%samode) {
sendchannel %chchan : $+ $fullhost(%sockname_ [ $+ [ %chnick ] ]) MODE %chchan $reconvmodes(%endchmodes)
sendmultiserver : $+ %chnick MODE %chchan $reconvmodes(%endchmodes)
}
else {
sendchannel %chchan : $+ %me MODE %chchan $reconvmodes(%endchmodes)
sendmultiserver : $+ %me MODE %chchan $reconvmodes(%endchmodes)
}
}
if (%endstatusmodes) {
if (!%samode) {
sendchannel %chchan : $+ $fullhost(%sockname_ [ $+ [ %chnick ] ]) MODE %chchan $reconvmodes(%endstatusmodes) %chargs
sendmultiserver : $+ %chnick MODE %chchan $reconvmodes(%endstatusmodes) %chargs
}
else {
sendchannel %chchan : $+ %me MODE %chchan $reconvmodes(%endstatusmodes) %chargs
sendmultiserver : $+ %me MODE %chchan $reconvmodes(%endstatusmodes) %chargs
}
}
if (%enddynmodes) {
if (!%samode) {
echo -a fonction modes
echo -a sendchannel %chchan : $+ $fullhost(%sockname_ [ $+ [ %chnick ] ]) MODE %chchan $reconvmodes(%enddynmodes) %chargs
sendchannel %chchan : $+ $fullhost(%sockname_ [ $+ [ %chnick ] ]) MODE %chchan $reconvmodes(%enddynmodes) %chargs
sendmultiserver : $+ %chnick MODE %chchan $reconvmodes(%enddynmodes) %chargs
}
else {
sendchannel %chchan : $+ %me MODE %chchan $reconvmodes(%enddynmodes) %chargs
sendmultiserver : $+ %me MODE %chchan $reconvmodes(%enddynmodes) %chargs
}
}
}
}
alias verifyshunlines {
if ($1) {
var %lol $gettok($vraiefullhost($1),2,33)
set %vffile $linesfile
if (!$exists(%vffile)) {
goto tend
}
var %file $gopen(%vffile)
while ($fread(%file)) {
set %r $ifmatch
if ($gettok(%r,1,32) == s) {
if ($gettok(%r,2,32) iswm %lol) {
return $true
}
}
}
.fclose %file
:tend
return $false
}
}
on *:sockread:gircd*: {
sockread %sr
echo @sr $sockname : %nick_of_sockname_ [ $+ [ $sockname ] ] :4 %sr
tokenize 32 %sr
if ($isreginserver($sockname)) {
;Les commandes diverses lorsqu'on a déjà passé la phase auth.
if (($verifyshunlines($sockname)) || ($shunned($socknick($sockname)))) {
if ($1 == PONG) {
if ($2) {
set %tpong $remove($2,$chr(58))
if (%tpong == %ping_ [ $+ [ $sockname ] ]) {
set %pongdonne_ [ $+ [ $sockname ] ] $true
}
}
else {
;<- :besancon.fr.epiknet.org 409 G-FACTION :No origin specified
sw $sockname : $+ %me 409 $socknick($sockname) :No origin specified
}
}
elseif ($1 == ADMIN) {
goto admin
}
goto toutefin
}
if ($1 == VERSION) {
version $sockname
}
elseif ($1 == LUSERS) {
lusers $sockname
}
elseif ($1 == MOTD) {
motd $sockname
}
elseif ($1 == G) {
if ($1 === G) {
sw $sockname : $+ %me 999 $socknick($sockname) :<G-FACTION> bouh :þ ! Y te plait mon ircd ? :]
}
else {
sw $sockname : $+ %me 371 $socknick($sockname) :Nan, pas /g, /G !!
}
}
elseif ($1 == BOTMOTD) {
botmotd $sockname
}
elseif ($1 == MODE) {
unset %destnick
set %tnick $socknick($sockname)
/*
MODE Nick +modes (+snomasks)
MODE #channel +modes
MODE #channel +modes Nick
1 2 3 4
Ne pas se baser sur le nombre de tokens pour savoir de quel type de MODE il s'agit
Il peut en y avoir plus genre avec "+lLk 1 #chan lemotdepasse"
*/
if ($left($2,1) != $chr(35)) {
/* On vérifie qu'il ne s'agit pas d'un channel, donc d'un usermode
$chr(35) = #
*/
;Nick auquel on va appliquer le mode (en théorie le même nick que celui qui envoit la commande)
set %destnick $2
;Si le nick ne s'applique pas le mode à lui même
if (%destnick) {
if ($3) {
if (%tnick != %destnick) {
sw $sockname : $+ %me 502 $socknick($sockname) :Can't change mode for other users
}
else {
applymodesonrequest $sockname $3-
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) MODE :Not enough parameters
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) MODE :Not enough parameters
}
}
else {
if ($3) {
;Ce sont des chmodes
;applymodesonrequest sockname chan modes
applychmodesonrequest $sockname $2 $3-
}
else {
;:besancon.fr.epiknet.org 324 G-FACTION #legoodies +ntr
;:besancon.fr.epiknet.org 329 G-FACTION #legoodies 1085037574
sw $sockname : $+ %me 324 $socknick($sockname) $2 + $+ $chmodes($2)
sw $sockname : $+ %me 329 $socknick($sockname) $2 $creationtime($2)
}
}
}
elseif ($1 == OPER) {
if ($3) {
if ($operexists($2)) {
if ($goodoperhost($2,$fullhost($sockname))) {
if ($goodoperpass($2,$3)) {
set %ircop_ [ $+ [ $socknick($sockname) ] ] $2
addircoplist $socknick($sockname)
globops $socknick($sockname) $chr(91) $+ $2 $+ $chr(93) is now an IRCop
sw $sockname : $+ $$socknick($sockname) MODE $socknick($sockname) : $+ $chr(43) $+ %opermodes
umodesrv $chr(43) $socknick($sockname) %opermodes
;+cjkqvFG
snomasksrv $chr(43) $socknick($sockname) %opersnomask
sw $sockname : $+ %me 008 $socknick($sockname) :Server notice mask ( $+ %snomask_ [ $+ [ $socknick($sockname) ] ] $+ )
sw $sockname : $+ %me 381 $socknick($sockname) :You are now an IRC Operator
applyumodesoline $sockname
}
else {
sw $sockname : $+ %me 464 $socknick($sockname) :Password incorrect
globops Failed OPER attempt by $socknick($sockname) ( $+ $fullhost($sockname) $+ ) using UID $2 [FAILEDAUTH]
}
}
else {
sw $sockname : $+ %me 491 $socknick($sockname) :No O-lines for your host
globops Failed OPER attempt by $socknick($sockname) ( $+ $fullhost($sockname) $+ ) [unknown oper]
}
}
else {
sw $sockname : $+ %me 491 $socknick($sockname) :No O-lines for your host
globops Failed OPER attempt by $socknick($sockname) ( $+ $fullhost($sockname) $+ ) [unknown oper]
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) OPER :Not enough parameters
}
}
elseif ($1 == WHOIS) {
set %wtnick $socknick($sockname)
unset %haha
unset %tttt
if ($chr(44) !isin $2) {
if ($3) {
if (%server_ [ $+ [ $remove($3,$chr(58)) ] ] == %me) {
set %tttt $remove($3,$chr(58))
}
else {
set %haha $true
sw $+(gserv.,$passerelle(%server_ [ $+ [ $remove($3,$chr(58)) ] ])) : $+ %wtnick WHOIS $remove($3,$chr(58)) : $+ $remove($3,$chr(58))
}
}
else {
set %tttt $2
}
}
if ($2) {
set %nicks %tttt
set %nbdnicks $gettok(%nicks,0,44)
var %i 1
while (%i <= %nbdnicks) {
set %wnick $gettok(%nicks,%i,44)
if ($isco(%wnick)) {
sw $sockname : $+ %me 311 %tnick %wnick %identd_ [ $+ [ %wnick ] ] %host_ [ $+ [ %sockname_ [ $+ [ %wnick ] ] ] ] * : $+ %realname_ [ $+ [ %wnick ] ]
if ($whoischanlist(%wnick,%wtnick)) {
;<- :la-defense.fr.epiknet.org 319 G-FACTION Fonix :#antiboulet #legoodies @#g-faction
sw $sockname : $+ %me 319 %wtnick %wnick : $+ $ifmatch
}
if ((%wnick == %wtnick) || (%ircop_ [ $+ [ %wtnick ] ])) {
sw $sockname : $+ %me 379 %wtnick %wnick :is using modes $chr(43) $+ %umodes_ [ $+ [ %wnick ] ] $iif(%snomask_ [ $+ [ %wnick ] ],$+($chr(43),$ifmatch),)
sw $sockname : $+ %me 378 %wtnick %wnick :is connecting from *@ $+ $iif($sock(%sockname_ [ $+ [ %wnick ] ]).ip,$ifmatch,%vraiehost_ [ $+ [ %sockname_ [ $+ [ %wnick ] ] ] ]) $iif($sock(%sockname_ [ $+ [ %wnick ] ]).ip,$ifmatch,)
}
if ((%wnick == %wtnick) || (%ircop_ [ $+ [ %wtnick ] ])) {
if ($sock(%sockname_ [ $+ [ %wnick ] ]).rcvd) {
sw $sockname : $+ %me 532 %wtnick %wnick :sent $sock(%sockname_ [ $+ [ %wnick ] ]).rcvd bytes
sw $sockname : $+ %me 533 %wtnick %wnick :received $sock(%sockname_ [ $+ [ %wnick ] ]).sent bytes
}
}
if (r isincs %umodes_ [ $+ [ %wnick ] ]) {
sw $sockname : $+ %me 307 %wtnick %wnick :is a registered nick
}
sw $sockname : $+ %me 312 %wtnick %wnick %server_ [ $+ [ %wnick ] ] : $+ $serv_sdesc(%server_ [ $+ [ %wnick ] ])
if ($isaway(%wnick)) {
sw $sockname : $+ %me 301 %wtnick %wnick : $+ %away_ [ $+ [ %sockname_ [ $+ [ %wnick ] ] ] ]
}
if ((%ircop_ [ $+ [ %wnick ] ]) || (o isin %umodes_ [ $+ [ %wnick ] ])) {
if ((o isin %umodes_ [ $+ [ %wnick ] ])) {
sw $sockname : $+ %me 313 %wtnick %wnick :is an IRC operator
}
if (h isincs %umodes_ [ $+ [ %wnick ] ]) {
sw $sockname : $+ %me 310 %wtnick %wnick :is available for help
}
if (%oline. [ $+ [ %ircop_ [ $+ [ %wnick ] ] $+ .swhois ] ]) {
echo -a 9:)
sw $sockname : $+ %me 320 %wtnick %wnick : $+ $ifmatch
}
else {
if (%swhois_ [ $+ [ %sockname_ [ $+ [ %wnick ] ] ] ]) {
sw $sockname : $+ %me 320 %wtnick %wnick : $+ $ifmatch
}
}
}
}
else {
;<- :besancon.fr.epiknet.org 401 G-FACTION bidule :No such nick/channel
sw $sockname : $+ %me 401 %wtnick %wnick :No such nick
}
if (W isincs %umodes_ [ $+ [ %wnick ] ]) {
if (%wtnick != %wnick) {
if ($sock(%sockname_ [ $+ [ %wnick ] ])) {
;*** lol (G-FACTION@127.0.0.2) did a /whois on you.
sw %sockname_ [ $+ [ %wnick ] ] : $+ %me NOTICE %wnick :*** %wtnick ( $+ $gettok($vraiefullhost($sockname),2,33) $+ ) did a /whois on you.
}
else {
;Cet user est situé sur un autre serveur
sw $+(gserv.,$passerelle(%server_ [ $+ [ %wnick ] ])) : $+ %me NOTICE %wnick :*** %wtnick ( $+ $gettok($vraiefullhost($sockname),2,33) $+ ) did a /whois on you.
}
}
}
inc %i
}
}
else {
sw $sockname : $+ %me 431 %wtnick :No nickname given
}
if (!%haha) {
sw $sockname : $+ %me 318 %wtnick %wnick :End of /WHOIS list.
}
}
elseif ($1 == PRIVMSG) {
if (!$3) {
;<- :besancon.fr.epiknet.org 411 G-FACTION :No recipient given (NOTICE)
sw $sockname : $+ %me 411 $socknick($sockname) :No recipient given (PRIVMSG)
halt
}
set %dest $2
set %tmess $right($3-,$calc($len($3-) - 1))
if ($left(%dest,1) == $chr(35)) {
;Si le message est adressé à un chan...
if ($left(%tmess,1) == $chr(1)) {
;Il envoit un ctcp au chan
if (C isincs $chmodes(%dest)) {
;404 G-FACTION[GTASA] #G-FACTION :CTCPs are not permitted in this channel (#G-FACTION)
sw $sockname : $+ %me 404 $socknick($sockname) %dest :CTCPs are not permitted in this channel ( $+ %dest $+ )
halt
}
}
privmsg %dest $socknick($sockname) %tmess
}
else {
;Si le message est adressé à un pseudo...
if ($isco(%dest)) {
set %tpvnick $socknick($sockname)
set %dest_umodes %umodes_ [ $+ [ %dest ] ]
set %nick_umodes %umodes_ [ $+ [ %tpvnick ] ]
if (R isincs %umodes_ [ $+ [ %dest ] ]) {
if (r !isincs %nick_umodes) {
;<- :besancon.fr.epiknet.org 486 testR :You must identify to a registered nick to private message G-FACTION
sw $sockname : $+ %me 486 %tpvnick :You must identify to a registered nick to private message %dest
halt
}
}
if ($sock(%sockname_ [ $+ [ %dest ] ])) {
sw %sockname_ [ $+ [ %dest ] ] : $+ %tpvnick PRIVMSG %dest : $+ %tmess
}
else {
if ($sock($+(gserv.,%server_ [ $+ [ %dest ] ]))) {
sw $+(gserv.,%server_ [ $+ [ %dest ] ]) : $+ %tpvnick PRIVMSG %dest : $+ %tmess
}
else {
set %tsock $+(gserv.,$passerelle(%server_ [ $+ [ %dest ] ]))
if ($sock(%tsock)) {
sw %tsock : $+ %tpvnick PRIVMSG %dest : $+ %tmess
}
}
}
if ($isaway(%dest)) {
sw $sockname : $+ %me 301 %tpvnick %dest : $+ %away_ [ $+ [ %sockname_ [ $+ [ %dest ] ] ] ]
}
}
else {
sw $sockname : $+ %me 401 $socknick($sockname) %dest :No such nick/channel
}
}
}
elseif ($1 == AWAY) {
if ($2) {
if ($right($2-,$calc($len($2-) - 1)) != %away_ [ $+ [ $sockname ] ]) {
set %away_ [ $+ [ $sockname ] ] $left($right($2-,$calc($len($2-) - 1)),%awaylen)
sw $sockname : $+ %me 306 $socknick($sockname) :You have been marked as being away
}
}
else {
if (%away_ [ $+ [ $sockname ] ]) {
unset %away_ [ $+ [ $sockname ] ]
sw $sockname : $+ %me 305 $socknick($sockname) :You are no longer marked as being away
}
}
}
elseif ($1 == NOTICE) {
set %nnick $socknick($sockname)
set %ndest $2
if (!$3) {
sw $sockname : $+ %me 411 $socknick($sockname) :No recipient given (NOTICE)
halt
}
if ($chr(35) !isin %ndest) {
;Il s'agit d'un envoi à un user
set %nmess $right($3-,$calc($len($3-) - 1))
set %ndest_umodes %umodes_ [ $+ [ %ndest ] ]
set %nnick_umodes %umodes_ [ $+ [ %nnick ] ]
if (V isincs %ndest_umodes) {
set %ncmd PRIVMSG
}
else {
set %ncmd NOTICE
}
if ($isco(%ndest)) {
sw %sockname_ [ $+ [ %ndest ] ] : $+ $fullhost($sockname) %ncmd %ndest : $+ %nmess
}
else {
sw $sockname : $+ %me 401 %nnick %ndest :No such nick/channel
}
}
else {
;Il s'agit d'un envoi à un canal
set %nmess $right($3-,$calc($len($3-) - 1))
set %nd %ndest
set %nchans $gettok(%nd,0,44)
var %o 1
while (%o <= %nchans) {
set %ndest $gettok(%nd,%o,44)
if ($gettok(%ndest,0,35) > 1) {
;Des modes ont été spécifiés
set %nmodes $gettok(%ndest,1,35)
set %nchan $chr(35) $+ $gettok(%ndest,2-,35)
}
else {
set %nmodes $false
set %nchan %ndest
}
if (T !isincs $chmodes(%nchan)) {
if ($remove(%nmodes,$chr(38),$chr(126))) {
var %i 1
set %nlen $len(%nmodes)
while (%i <= %nlen) {
set %nmode $mid(%nmodes,%i,1)
set %ncf $chanfile(%nchan)
if (!$exists(%ncf)) {
goto noticeend
}
var %file $gopen(%ncf)
while ($fread(%file)) {
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
if ($strongerthan($replace($left(%r,1),$chr(64),o,$chr(38),a,$chr(126),q,$chr(43),v,$chr(37),h),$replace(%nmode,$chr(64),o,$chr(38),a,$chr(126),q,$chr(43),v,$chr(37),h))) {
set %n $right(%r,$calc($len(%r) - 1))
if ($sock(%sockname_ [ $+ [ %n ] ])) {
sw %sockname_ [ $+ [ %n ] ] : $+ $fullhost($sockname) NOTICE %nmodes $+ %nchan : $+ %nmess
}
else {
if (%server_ [ $+ [ %n ] ] != %me) {
sendmultiserver : $+ %nnick NOTICE %nmodes $+ %nchan : $+ %nmess
}
}
}
}
}
.fclose %file
:noticeend
inc %i
}
}
else {
sendchannel %nchan : $+ $fullhost($sockname) NOTICE %nchan : $+ %nmess
sendmultiserver : $+ %nnick NOTICE %nchan : $+ %nmess
}
}
else {
;404 G-FACTION[GTASA] #G-FACTION :NOTICEs are not permitted in this channel (#G-FACTION)
sw $sockname : $+ %me 404 %nnick %nchan :NOTICEs are not permitted in this channel ( $+ %nchan $+ )
}
inc %o
}
}
}
elseif ($1 == JOIN) {
/*
Yeahhhh begining /join command ! ^^
Il faudra s'occuper des chanmodes i,L,k,s(whois),b
Prendre en compte le MAXCHANNELS
On va créer une base de données pour les canaux. #chan.nfo
Dedans, seront stockées les données des modes statics. (ceux qui sont pas +voqa etc...)
Puis on fera une banlist, protectlist, et exceptlist par canal (pas invites list car ça sert à rien).
Bien entendu, si l'user joint un canal vide, il doit se retrouver en +o
Et puis si l'option "apply +nt modes on channel creation" est activée, on l'fait :)
*/
if ($2) {
;maxchannels
set %tmpchans $whoischanlist($socknick($sockname))
set %nbdchans $gettok(%tmpchans,0,32)
if (!%nbdchans) { set %nbdchans 0 }
if (%nbdchans < %maxchannels) {
join $sockname $1-
}
else {
;<- :besancon3.fr.epiknet.org 405 G-FACTION #test33 :You have joined too many channels
sw $sockname : $+ %me 405 $socknick($sockname) $2 :You have joined too many channels
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
elseif ($1 == NAMES) {
if ($2) {
sendnicklist $2 $socknick($sockname)
}
else {
sw $sockname : $+ %me 366 $socknick($sockname) * :End of /NAMES list.
}
}
elseif ($1 == PONG) {
:ping
if ($2) {
set %tpong $remove($2,$chr(58))
if (%tpong == %ping_ [ $+ [ $sockname ] ]) {
set %pongdonne_ [ $+ [ $sockname ] ] $true
}
}
else {
;<- :besancon.fr.epiknet.org 409 G-FACTION :No origin specified
sw $sockname : $+ %me 409 $socknick($sockname) :No origin specified
}
}
elseif ($1 == PART) {
if ($2) {
set %chans $2
set %nbdchans $gettok(%chans,0,44)
var %i 1
while (%i <= %nbdchans) {
part $sockname PART $gettok(%chans,%i,44) $3-
inc %i
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
elseif ($1 == INVITE) {
;INVITE Nick #chan
; 1 2 3
if ($3) {
set %tnick $socknick($sockname)
set %inick $2
set %ichan $3
unset %operoverride
if (%ircop_ [ $+ [ %tnick ] ]) {
set %tflags %oline. [ $+ [ %ircop_ [ $+ [ %chnick ] ] ] ] [ $+ [ .flags ] ]
if (v isincs %tflags) {
set %operoverride $true
}
}
set %tchmodes $replacecs($chmodes(%ichan),1,N,2,L,3,S,4,C,5,T)
if ($isco(%inick)) {
if (($ison(%tnick,%ichan)) || (%operoverride)) {
if (!$ison(%inick,%ichan)) {
if ((V !isincs %tchmodes) || (%operoverride)) {
sw %sockname_ [ $+ [ %inick ] ] : $+ $fullhost($sockname) INVITE %inick : $+ %ichan
set %invited_ [ $+ [ %tchan ] ] [ $+ [ _ $+ [ %chnick ] ] ] $true
noticechannel %ichan @ %me %tnick invited %inick into the channel.
}
else {
sw $sockname : $+ %me 518 %tnick :Cannot invite (+V) at channel %ichan
}
}
else {
sw $sockname : $+ %me 443 %tnick %inick %ichan :is already on channel
}
}
else {
sw $sockname : $+ %me 442 %tnick %ichan :You're not on that channel
}
}
else {
sw $sockname : $+ %me 401 %tnick %inick :No such nick/channel
}
}
else {
sw $sockname : $+ %me 461 %tnick $1 :Not enough parameters
}
}
elseif ($1 == KNOCK) {
set %knocknick $socknick($sockname)
set %knockchan $2
if (!$3) {
set %knockreason no reason specified
}
else {
set %knockreason $3-
}
if ($2) {
if (!$ison(%knocknick,%knockchan)) {
set %knockchmodes $replacecs($chmodes(%knockchan),1,N,2,L,3,S,4,C,5,T)
if (i isincs %knockchmodes) {
if (K !isincs %knockchmodes) {
sw $sockname : $+ %me NOTICE %knocknick :Knocked on %knockchan
noticechannel %knockchan @ %me [Knock] by $fullhost($sockname) ( $+ %knockreason $+ )
}
else {
sw $sockname : $+ %me 480 %knocknick :Cannot knock on %knockchan (No knocks are allowed! (+K))
}
}
else {
sw $sockname : $+ %me 480 %knocknick :Cannot knock on %knockchan (Channel is not invite only!)
}
}
else {
sw $sockname : $+ %me 480 %knocknick :Cannot knock on %knockchan (You're already there!)
}
}
else {
sw $sockname : $+ %me 461 %knocknick $1 :Not enough parameters
}
}
elseif ($1 == KICK) {
if ($3) {
kick $2 $socknick($sockname) $3 $right($4-,$calc($len($4-) -1))
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
elseif ($1 == WHO) {
unset %wdest
set %wnick $socknick($sockname)
if ($2) {
if ($left($2,1) == $chr(43)) {
;Il entre un flag
set %wflag $mid($2,2,1)
if (%wflag === c) {
set %wdest $3
goto channel
}
elseif (%wflag === a) {
;who +a, donne la liste des tous les users away du serveur
if ($3) {
;La présence d'un nick après le flag annule le flag et fait comme si c'était un /who nick
set %wdest $3
goto nick
}
var %file $gopen($userslistfile)
while ($fread(%file)) {
set %r $ifmatch
if ($isaway(%r)) {
if (i !isincs %umodes_ [ $+ [ %r ] ]) {
sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
}
}
}
.fclose %file
}
elseif (%wflag === g) {
;who +g <string> donne la liste de tous les users ayant <string> comme RealName
if ($3) {
;Procédure normale.
set %wdest $3
if ($chr(42) isin %wdest) {
;Alors l'user utilise les wildcards, ce qui est réservé aux IRCops.
if (%ircop_ [ $+ [ %wnick ] ]) {
var %file $gopen($userslistfile)
while ($fread(%file)) {
set %r $ifmatch
var %wrealname %realname_ [ $+ [ %r ] ]
if (%wdest iswm %wrealname) {
sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
}
}
.fclose %file
}
}
else {
;Il a entré un string normal, pas un wildcard, donc pas de restriction
;Recherche en tokens
var %file $gopen($userslistfile)
while ($fread(%file)) {
set %r $ifmatch
set %wrealname %realname_ [ $+ [ %r ] ]
if ($istok(%wrealname,%wdest,32)) {
sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
}
}
.fclose %file
}
}
else {
ghelp who $sockname
}
}
elseif (%wflag === h) {
;who +h <host>, <host> en wildcard
if ($3) {
set %wdest $3
var %file $gopen($userslistfile)
while ($fread(%file)) {
set %r $ifmatch
set %whost %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ]
if (%wdest iswm %whost) {
sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
}
}
.fclose %file
}
else {
ghelp who $sockname
}
}
elseif (%wflag === m) {
;who +m <mode>, a,A,o seulement, pour les non-ircop.
if ($3) {
set %wmode $left($3,1)
;Le $left sert à éviter que certaines peronnes entrant plusieurs modes puissent feinter (faille)
if (%wmode isincs oOaANCghRDWnGkKbiBtzZvHWr) {
if (%wmode !isincs aAo) {
if (!%ircop_ [ $+ [ %wnick ] ]) {
goto wend
}
}
var %file $gopen($userslistfile)
while ($fread(%file)) {
set %r $ifmatch
set %wmodes %umodes_ [ $+ [ %r ] ]
if (%wmode isincs %wmodes) {
sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
}
}
.fclose %file
}
}
else {
ghelp who $sockname
}
}
elseif (%wflag === n) {
;who +n <nick>, <nick> en wildcard
if ($3) {
set %wdest $3
var %file $gopen($userslistfile)
while ($fread(%file)) {
set %r $ifmatch
if (%wdest iswm %r) {
sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
}
}
.fclose %file
}
else {
ghelp who $sockname
}
}
elseif (%wflag === u) {
;who +u <username>, donne la liste des users ayant <username> comme username (identd). Wildcards.
if ($3) {
set %wdest $3
var %file $gopen($userslistfile)
while ($fread(%file)) {
set %r $ifmatch
set %wusername %identd_ [ $+ [ %r ] ]
if (%wdest iswm %wusername) {
sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
}
}
.fclose %file
}
else {
ghelp who $sockname
}
}
elseif (%wflag === M) {
;who +M, donne la liste de tous les users qui ont des chans communs avec soi
if ($3) {
set %wdest $3
goto nick
}
set %wchans1 %chans_ [ $+ [ $sockname ] ]
var %file $gopen($userslistfile)
while ($fread(%file)) {
set %r $ifmatch
set %wchans2 %chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ]
if ($comchans(%wchans1,%wchans2)) {
sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
}
}
.fclose %file
}
elseif (%wflag === R) {
;who +R, donne la liste de tous les users du serveur, et avec leurs vraies hosts. IRCops only.
if (%ircop_ [ $+ [ %wnick ] ]) {
;%vraiehost_ [ $+ [ $sockname ] ]
var %file $gopen($userslistfile)
while ($fread(%file)) {
set %r $ifmatch
sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %vraiehost_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
}
.fclose %file
}
}
else {
ghelp who $sockname
}
}
else {
set %wdest $2
if ($left(%wdest,1) == $chr(35)) {
;Alors il /who #chan
;<- :besancon.fr.epiknet.org 352 G-FACTION #my_world LoVeFF leon.epiknet.fr besancon.fr.epiknet.org LeOn Hr :0 LeOn :þ
:channel
var %file $gopen($chanfile(%wdest))
while ($fread(%file)) {
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %tempnick $right(%r,$calc($len(%r) - 1))
}
else {
set %tempnick %r
}
set %tsockname %sockname_ [ $+ [ %tempnick ] ]
sw $sockname : $+ %me 352 %wnick %wdest %identd_ [ $+ [ %tempnick ] ] %host_ [ $+ [ %tsockname ] ] %server_ [ $+ [ %tempnick ] ] %tempnick $whoattr(%tempnick) :0 %realname_ [ $+ [ %tempnick ] ]
}
.fclose %file
}
else {
;Alors il /who nick
:nick
if ($isco(%wdest)) {
unset %attr
if ($isaway(%wdest)) {
set %attr %attr $+ G
}
else {
set %attr %attr $+ H
}
if (r isincs %umodes_ [ $+ [ %wdest ] ]) {
set %attr %attr $+ r
}
if (%ircop_ [ $+ [ %wdest ] ]) {
set %attr %attr $+ $chr(42)
}
sw $sockname : $+ %me 352 $socknick($sockname) $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %wdest ] ] ] ],1,32) %identd_ [ $+ [ %wdest ] ] %host_ [ $+ [ %sockname_ [ $+ [ %wdest ] ] ] ] %server_ [ $+ [ %wdest ] ] %wdest %attr :0 %realname_ [ $+ [ %wnick ] ]
}
}
}
;<- :besancon.fr.epiknet.org 315 G-FACTION truc :End of /WHO list.
:wend
sw $sockname : $+ %me 315 $socknick($sockname) %wdest :End of /WHO list.
}
else {
;sw $sockname : $+ %me 316 $socknick($sockname) :You cannot /WHO the whole server
var %file $gopen($userslistfile)
while ($fread(%file)) {
set %r $ifmatch
sw $sockname : $+ %me 352 %wnick $gettok(%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ],1,32) %identd_ [ $+ [ %r ] ] %host_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ] %server_ [ $+ [ %r ] ] %r $whoattr(%r) :0 %realname_ [ $+ [ %r ] ]
}
.fclose %file
sw $sockname : $+ %me 315 $socknick($sockname) %wdest :End of /WHO list.
}
}
elseif ($1 == USERHOST) {
if ($2) {
set %unick $2
if (%unick == $socknick($sockname)) {
set %unick $socknick($sockname)
;<- :besancon.fr.epiknet.org 302 G-FACTION :G-FACTION=+~_G-FACTIO@stmartindheres-1-82-225-54-143.fbx.proxad.net
sw $sockname : $+ %me 302 %unick : $+ %unick $+ =+ $+ $vraiefullhost($sockname)
}
else {
if ($isco(%unick)) {
if (%ircop_ [ $+ [ $socknick($sockname) ] ]) {
sw $sockname : $+ %me 302 $socknick($sockname) : $+ %unick $+ =+ $+ $vraiefullhost(%sockname_ [ $+ [ %unick ] ])
}
else {
sw $sockname : $+ %me 302 $socknick($sockname) : $+ %unick $+ =+ $+ $fullhost(%sockname_ [ $+ [ %unick ] ])
}
}
else {
sw $sockname : $+ %me 302 $socknick($sockname) :
}
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
elseif ($1 == QUIT) {
if ($2) {
set %qmsg $right($2-,$calc($len($2-) - 1))
}
else {
unset %qmsg
}
set %quitchans %chans_ [ $+ [ $sockname ] ]
set %qfullhost $fullhost($sockname)
set %qnick $socknick($sockname)
set %gserv %server_ [ $+ [ $socknick($sockname) ] ]
set %quitraison_ [ $+ [ $sockname ] ] Quit: %qmsg
sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ $sockname ] ]
sockclose2 $sockname
if ($len(%qmsg)) {
gquit $sockname Quit: %qmsg
}
else {
gquit $sockname Quit:
}
}
elseif ($1 == ISON) {
if ($2) {
unset %endisonlist
if ($3) {
set %isonlist $2-
set %isonnum $gettok(%isonlist,0,32)
var %i 1
while (%i <= %isonnum) {
set %tison $gettok(%isonlist,%i,32)
if ($isco(%tison)) {
set %endisonlist $addtok(%endisonlist,%tison,32)
}
inc %i
}
}
else {
if ($isco($2)) {
set %endisonlist $2
}
}
sw $sockname : $+ %me 303 $socknick($sockname) : $+ %endisonlist
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
elseif (($1 == HELP) || ($1 == HELPOP)) {
;<- :besancon.fr.epiknet.org 294 G-FACTION :Your help-request has been forwarded to Help Operators
if ($2) {
if ($left($2,1) == $chr(63)) {
if ($2 == $chr(63)) {
ghelp index $sockname
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** NOTE: As a helpop you have to prefix your text with ? to query the help system, like: /helpop ?usercmds
halt
}
set %hlpstr $right($2,$calc($len($2) - 1))
if (%hlpstr == index) {
set %hlpstr error
}
ghelp %hlpstr $sockname
}
else {
set %hlpstr $2
if (%hlpstr == index) {
set %hlpstr error
}
ghelp %hlpstr $sockname
}
}
else {
ghelp index $sockname
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** NOTE: As a helpop you have to prefix your text with ? to query the help system, like: /helpop ?usercmds
}
}
elseif ($1 == ADMIN) {
:admin
admin $sockname
}
elseif ($1 == RULES) {
rules $sockname
}
elseif ($1 == VHOST) {
if ($3) {
set %vlogin $2
set %vpass $3
if ($isvhostlogin(%vlogin)) {
set %tvhost %vhost_ [ $+ [ %vlogin ] ]
if ($goodvhosthost(%vlogin,$fullhost($sockname))) {
if ($vhostlogpass(%vlogin,%vpass)) {
umodesrv $chr(43) $socknick($sockname) x
umodesrv $chr(43) $socknick($sockname) t
set %host_ [ $+ [ $sockname ] ] %tvhost
sw $sockname : $+ %me MODE $socknick($sockname) :+tx
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** Your vhost is %tvhost
sendpeoplesnomask v [vhost] %vlogin ( $+ $vraiefullhost($sockname) $+ ) is now using vhost %tvhost
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** [vhost] Login for %vlogin failed - password incorrect
sendpeoplesnomask v [vhost] Failed login for vhost %vlogin by $vraiefullhost($sockname) - incorrect password
}
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** [vhost] Login for %vlogin failed - password incorrect
sendpeoplesnomask v [vhost] Failed login for vhost %vlogin by $vraiefullhost($sockname) - incorrect password
}
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** [vhost] Login for %vlogin failed - password incorrect
sendpeoplesnomask v [vhost] Failed login for vhost %vlogin by $vraiefullhost($sockname) - incorrect password
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
elseif ($1 == CREDITS) {
credits $sockname
}
elseif ($1 == INFO) {
info $sockname
}
elseif ($1 == SETNAME) {
if ($2) {
if ($len($2-) <= 50) {
set %realname_ [ $+ [ $socknick($sockname) ] ] $2-
sw $sockname : $+ %me NOTICE $socknick($sockname) :Your "real name" (GCOS) is now set to be $2- - you have to set it manually to undo it
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetName Error: "Real names" may maximum be 50 characters of length
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
elseif ($1 == WATCH) {
if ($2) {
set %watch.pos $positivewatch($2-)
set %watch.neg $negativewatch($2-)
;delwatchedlist $sockname %watch.neg
;addwatchedlist $sockname %watch.pos
var %i 1
var %o 1
set %tok1 $gettok(%watch.pos,0,32)
set %tok2 $gettok(%watch.neg,0,32)
while (%i <= %tok1) {
set %twatch $gettok(%watch.pos,%i,32)
addwatchedlist %sockname_ [ $+ [ %twatch ] ] $socknick($sockname)
if ($isco(%twatch)) {
sw $sockname : $+ %me 604 $socknick($sockname) %twatch %identd_ [ $+ [ %twatch ] ] %host_ [ $+ [ %sockname_ [ $+ [ %twatch ] ] ] ] $signon(%sockname_ [ $+ [ %twatch ] ]) :is online
}
else {
sw $sockname : $+ %me 604 $socknick($sockname) %twatch * * 0 :is offline
}
inc %i
}
while (%o <= %tok2) {
set %twatch $gettok(%watch.neg,%o,32)
delwatchedlist %sockname_ [ $+ [ %twatch ] ] $socknick($sockname)
if ($isco(%twatch)) {
sw $sockname : $+ %me 602 $socknick($sockname) %twatch %identd_ [ $+ [ %twatch ] ] %host_ [ $+ [ %sockname_ [ $+ [ %twatch ] ] ] ] $signon(%sockname_ [ $+ [ %twatch ] ]) :stopped watching
}
else {
sw $sockname : $+ %me 602 $socknick($sockname) %twatch * * 0 :stopped watching
}
inc %o
}
}
else {
sw $sockname : $+ %me 607 $socknick($sockname) :End of WATCH l
}
}
elseif ($1 == TOPIC) {
if ($2) {
if ($3) {
set %chnick $socknick($sockname)
set %operoverride $false
if (%ircop_ [ $+ [ %chnick ] ]) {
set %tflags %oline. [ $+ [ %ircop_ [ $+ [ %chnick ] ] ] ] [ $+ [ .flags ] ]
if (v isincs %tflags) {
set %operoverride $true
}
}
set %tchan $2
set %tchmodes $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T)
if (t isincs %tchmodes) {
if (!$isatleast(h,%chnick,%tchan)) {
if (!%operoverride) {
sw $sockname : $+ %me 482 %chnick %tchan :You're not channel operator
halt
}
}
}
set %ttopic $right($3-,$calc($len($3-) - 1))
writeini -n $nfochanfile(%tchan) MISC topic $left(%ttopic,%topiclen)
writeini -n $nfochanfile(%tchan) MISC ttime $ctime
writeini -n $nfochanfile(%tchan) MISC tuser %chnick
sendchannel %tchan : $+ $fullhost($sockname) TOPIC %tchan : $+ $left(%ttopic,%topiclen)
}
else {
if ($ttopic($2)) {
topic $2 $socknick($sockname)
}
else {
sw $sockname : $+ %me 331 $socknick($sockname) $2 :No topic is set.
}
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
elseif ($1 == LIST) {
set %tnick $socknick($sockname)
sw $sockname : $+ %me 321 %tnick Channel :Users Name
if (!$exists($chanlistfile)) {
goto listend
}
if ($2) {
set %option $2
if ($left(%option,1) == $chr(42)) {
;Alors il fait une recherche en wildcards
set %clf $chanlistfile
var %file $gopen(%clf)
while ($fread(%file)) {
set %tchan $ifmatch
if (%option iswm %tchan) {
set %tchmodes $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T)
if ($replacecs(%tchmodes,s,0,p,0) == %tchmodes) {
unset %ircop
if (%ircop_ [ $+ [ %tnick ] ]) {
set %ircop $true
}
if ((s !isincs %tchmodes) || (p !isincs %tchmodes) ($ison(%tnick,%tchan)) || (%ircop)) {
;<- :besancon.fr.epiknet.org 322 G-FACTION #besancon 17 :[+ntrSf] bienvenue dans la grotte de l
sw $sockname : $+ %me 322 %tnick %tchan $lines($chanfile(%tchan)) : $+ $iif(%tchmodes,[+ $+ $replacecs(%tchmodes,1,N,2,L,3,S,4,C,5,T) $+ $chr(93) $ttopic(%tchan),)
}
}
}
}
.fclose %file
}
elseif (($left(%option,1) == $chr(60)) || ($left(%option,1) == $chr(62))) {
;Alors il fait une recherche avec un nombre d'utilisateurs
var %i 0
set %clf $chanlistfile
var %file $gopen(%clf)
if ($left(%option,1) == $chr(60)) {
;<
set %lsigne neg
set %larg $gettok(%option,1,60)
}
elseif ($left(%option,1) == $chr(62)) {
;>
set %lsigne pos
set %larg $gettok(%option,1,62)
}
while ($fread(%file)) {
inc %i
set %tchan $ifmatch
if (%lsigne == pos) {
if ($lines($chanfile(%tchan)) > %larg) {
unset %ircop
if (%ircop_ [ $+ [ %tnick ] ]) {
set %ircop $true
}
if ((s !isincs $chmodes(%tchan)) || (p !isincs $chmodes(%tchan)) || ($ison(%tnick,%tchan)) || (%ircop)) {
sw $sockname : $+ %me 322 %tnick %tchan $lines($chanfile(%tchan)) : $+ $iif($chmodes(%tchan),[+ $+ $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T) $+ $chr(93) $ttopic(%tchan),)
}
}
}
elseif (%lsigne == neg) {
if ($lines($chanfile(%tchan)) < %larg) {
unset %ircop
if (%ircop_ [ $+ [ %tnick ] ]) {
set %ircop $true
}
if ((s !isincs $chmodes(%tchan)) || (p !isincs $chmodes(%tchan)) || ($ison(%tnick,%tchan)) || (%ircop)) {
sw $sockname : $+ %me 322 %tnick %tchan $lines($chanfile(%tchan)) : $+ $iif($chmodes(%tchan),[+ $+ $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T) $+ $chr(93) $ttopic(%tchan),)
}
}
}
}
.fclose %file
}
elseif ($left(%option,1) == $chr(33)) {
set %larg $gettok(%option,1,33)
set %clf $chanlistfile
var %file $gopen(%clf)
while ($fread(%file)) {
set %tchan $ifmatch
if (%larg !iswm %tchan) {
set %tchmodes $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T)
if ($replacecs(%tchmodes,s,0,p,0) == %tchmodes) {
;<- :besancon.fr.epiknet.org 322 G-FACTION #besancon 17 :[+ntrSf] bienvenue dans la grotte de l
sw $sockname : $+ %me 322 %tnick %tchan $lines($chanfile(%tchan)) :[+ $+ %tchmodes $+ $chr(93) $ttopic(%tchan)
}
}
}
.fclose %file
}
}
else {
set %clf $chanlistfile
var %file $gopen(%clf)
while ($fread(%file)) {
set %tchan $ifmatch
set %tchmodes $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T)
sw $sockname : $+ %me 322 %tnick %tchan $lines($chanfile(%tchan)) :[+ $+ %tchmodes $+ $chr(93) $ttopic(%tchan)
}
.fclose %file
}
:listend
sw $sockname : $+ %me 323 %tnick :End of /LIST
}
elseif ($1 == CYCLE) {
if ($2) {
part $sockname PART $2 :cycling
join $sockname JOIN $2
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
elseif ($1 == LINKS) {
sw $sockname : $+ %me 364 $socknick($sockname) %me %me :0 %me.info
sw $sockname : $+ %me 365 $socknick($sockname) * :End of /LINKS list.
}
elseif ($1 == TIME) {
sw $sockname : $+ %me 391 $socknick($sockname) %me : $+ $gdate
}
elseif ($1 == WHOWAS) {
if ($2) {
set %wwnick $2
if ($exists($whowas.file)) {
if ($whowas.exists(%wwnick)) {
if (%ircop_ [ $+ [ $socknick($sockname) ] ]) {
sw $sockname : $+ %me 314 $socknick($sockname) %wwnick $whowas.vraiehost(%wwnick)
}
else {
sw $sockname : $+ %me 314 $socknick($sockname) %wwnick $whowas.host(%wwnick)
}
sw $sockname : $+ %me 312 $socknick($sockname) %wwnick $whowas.server(%wwnick)
}
else {
sw $sockname : $+ %me 406 $socknick($sockname) %wwnick :There was no such nickname
}
sw $sockname : $+ %me 369 $socknick($sockname) %wwnick :End of WHOWAS
}
else {
sw $sockname : $+ %me 406 $socknick($sockname) %wwnick :There was no such nickname
sw $sockname : $+ %me 369 $socknick($sockname) %wwnick :End of WHOWAS
}
}
else {
sw $sockname : $+ %me 431 $socknick($sockname) :No nickname given
}
}
elseif ($1 == NICK) {
if ($2) {
;<- :besancon.fr.epiknet.org 431 G-FACTION :No nickname given
set %oldnick $socknick($sockname)
set %newnick $right($2,$calc($len($2) - 1))
if (!$correctnickname(%newnick)) {
sw $sockname : $+ %me 432 %oldnick $2 :Erroneous Nickname: Illegal characters - Not allowed by the G-NORM
halt
}
if (!$isco(%newnick)) {
set %operoverride $false
if (%ircop_ [ $+ [ %oldnick ] ]) {
set %tflags %oline. [ $+ [ %ircop_ [ $+ [ %oldnick ] ] ] ] [ $+ [ .flags ] ]
if (v isincs %tflags) {
set %operoverride $true
}
}
if (($nnullepart(%oldnick) == $true) || (%operoverride)) {
;Il est libre
remove debug.txt
write debug.txt Il est libre !
;Envoyer une notice à toutes les personnes qui ont le snomask 'n'
sendpeoplesnomask n *** Notice -- %oldnick ( $+ $gettok($fullhost(%sockname_ [ $+ [ %oldnick ] ]),2,33) $+ ) has changed his/her nickname to %newnick
set %oldfullhost $fullhost($sockname)
set %realname_ [ $+ [ %newnick ] ] %realname_ [ $+ [ %oldnick ] ]
set %nick_ [ $+ [ %newnick ] ] %nick_ [ $+ [ %oldnick ] ]
if (%ircop_ [ $+ [ %oldnick ] ]) {
set %ircop_ [ $+ [ %newnick ] ] %ircop_ [ $+ [ %oldnick ] ]
}
set %snomask_ [ $+ [ %newnick ] ] %snomask_ [ $+ [ %oldnick ] ]
set %umodes_ [ $+ [ %newnick ] ] %umodes_ [ $+ [ %oldnick ] ]
set %identd_ [ $+ [ %newnick ] ] %identd_ [ $+ [ %oldnick ] ]
set %server_ [ $+ [ %newnick ] ] %server_ [ $+ [ %oldnick ] ]
set %sockname_ [ $+ [ %newnick ] ] %sockname_ [ $+ [ %oldnick ] ]
set %nick_of_sockname_ [ $+ [ $sockname ] ] %newnick
unset %realname_ [ $+ [ %oldnick ] ]
unset %nick_of_sockname_ [ $+ [ %oldnick ] ]
unset %nick_ [ $+ [ %oldnick ] ]
unset %ircop_ [ $+ [ %oldnick ] ]
unset %snomask_ [ $+ [ %oldnick ] ]
unset %identd_ [ $+ [ %oldnick ] ]
unset %server_ [ $+ [ %oldnick ] ]
unset %sockname_ [ $+ [ %oldnick ] ]
whowas.add.private $sockname
write debug.txt Variables modifiées !
;Modifier la liste des users du serveur
delservnick %oldnick
addservnick %newnick
write debug.txt Liste des users du serveur modifiée !
;Modifier la liste des IRCops
if (%ircop_ [ $+ [ %newnick ] ]) {
delircoplist %oldnick
addircoplist %newnick
}
write debug.txt Liste des IRCops modifiée !
;Envoi à tous les users du réseau ayant des chans commun avec lui
set %nchans %chans_ [ $+ [ $sockname ] ]
unset %ghosts
set %ulf $userslistfile
var %file $gopen(%ulf)
var %i 0
while ($fread(%file)) {
;<- :kaline1-reveuse!~ptitchato@EpiK-18A5E41B.adsl.skynet.be NICK :kaline1-nongrague
inc %i
set %r $ifmatch
echo -a r: %r
if ($comchans(%nchans,%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ])) {
if ($sock(%sockname_ [ $+ [ %r ] ])) {
sw %sockname_ [ $+ [ %r ] ] : $+ %oldfullhost NICK : $+ %newnick
}
else {
set %tsock $+(gserv.,$passerelle(%server_ [ $+ [ %r ] ]))
if ($sock(%tsock)) {
sw %tsock : $+ %oldnick NICK : $+ %newnick
}
else {
set %ghosts $addtok(%ghosts,%i,32)
}
}
}
else {
echo -a passé dans le else...
if (%r == %newnick) {
echo -a passé dans le oldnick...
sw $sockname : $+ %oldfullhost NICK : $+ %newnick
}
}
}
.fclose %file
write debug.txt While d'envoi de NICK passée !
var %y 1
set %gtk $gettok(%ghosts,0,32)
while (%y <= %gtk) {
write -dl $+ $gettok(%ghosts,%y,32) %ulf
inc %y
}
write debug.txt While de ghosts passée !
;Modifier son nick dans la nicklist de tous les chans où il est
set %nbdchans $numtok(%nchans,32)
if (%nbdchans) {
var %o 1
write debug.txt 1
while (%o <= %nbdchans) {
set %ntchan $gettok(%nchans,%o,32)
write debug.txt 2 ntchan: %ntchan
set %ncf $chanfile(%ntchan)
if (!$exists(%ncf)) {
goto nickend
}
var %u 0
var %file $gopen(%ncf)
while ($fread(%file)) {
inc %u
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %tempnick $right(%r,$calc($len(%r) - 1))
if (%tempnick == %oldnick) {
write -dl $+ %u %ncf
write %ncf $left(%r,1) $+ %newnick
}
}
else {
set %tempnick %r
if (%tempnick == %oldnick) {
write -dl $+ %u %ncf
write %ncf %newnick
}
}
}
.fclose %file
set %ntempstsm $readini($nfochanfile(%ntchan),STSM,%oldnick)
remini $nfochanfile(%ntchan) STSM %oldnick
writeini -n $nfochanfile(%ntchan) STSM %newnick %ntempstsm
:nickend
inc %o
}
}
sendmultiserver : $+ %oldnick NICK : $+ %newnick
}
else {
;447 G-FACTION[GTASA] :Can not change nickname while on #G-FACTION (+N)
sw $sockname : $+ %me 447 %oldnick :Can not change nickname while on $ifmatch (+N)
}
}
else {
;433 G-FACTION G-FACTION[GTASA] :Nickname is already in use.
sw $sockname : $+ %me 433 %oldnick :Nickname is already in use.
}
}
else {
sw $sockname : $+ %me 431 $socknick($sockname) :No nickname given
}
}
elseif ($1 == PING) {
if ($2) {
sw $sockname : $+ %me PONG %me : $+ $2
}
else {
sw $sockname : $+ %me 409 $socknick($sockname) :No origin specified
}
}
elseif ($1 == WALLOPS) {
set %wanick $socknick($sockname)
if ($2) {
if (%ircop_ [ $+ [ %wanick ] ]) {
set %ulf $userslistfile
var %file $gopen(%ulf)
while ($fread(%file)) {
set %r $ifmatch
if (w isincs %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
sw %sockname_ [ $+ [ %r ] ] : $+ $fullhost($sockname) WALLOPS $2-
}
}
}
.fclose %file
sendmultiserver : $+ %wanick WALLOPS $2-
}
else {
sw $sockname : $+ %me 481 %wanick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 461 %wanick $1 :Not enough parameters
}
}
elseif ($1 == GLOBOPS) {
set %glnick $socknick($sockname)
set %glmess $right($2-,$calc($len($2-) - 1))
if ($2) {
if (%ircop_ [ $+ [ %glnick ] ]) {
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto globopsend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %glnick :*** Global -- from %glnick $+ : %glmess
}
}
.fclose %file
:globopsend
}
else {
sw $sockname : $+ %me 481 %glnick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 461 %glnick $1 :Not enough parameters
}
}
elseif ($1 == CHATOPS) {
set %chnick $socknick($sockname)
set %chmess $2-
if ($2) {
if (%ircop_ [ $+ [ %chnick ] ]) {
set %ilf $ircoplistfile
if (!$exists(%ilf) {
goto chatopsend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %chnick :*** ChatOps -- from %chnick $+ : %chmess
}
}
.fclose %ilf
:chatopsend
}
else {
sw $sockname : $+ %me 481 %chnick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 461 %chnick $1 :Not enough parameters
}
}
elseif ($1 == LOCOPS) {
set %lonick $socknick($sockname)
set %lomess $right($2-,$calc($len($2-) - 1))
if ($2) {
if (%ircop_ [ $+ [ %lonick ] ]) {
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto locopsend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %lonick :*** LocOps -- from %lonick $+ : %lomess
}
}
}
.fclose %file
:locopsend
}
else {
sw $sockname : $+ %me 481 %lonick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 461 %lonick $1 :Not enough parameters
}
}
elseif ($1 == ADCHAT) {
set %lonick $socknick($sockname)
set %lomess $2-
if ($2) {
if (%ircop_ [ $+ [ %lonick ] ]) {
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto adchatend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (A isin %umodes_ [ $+ [ %r ] ]) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %lonick :*** AdminChat -- from %lonick $+ : %lomess
}
}
.fclose %file
:adchatend
}
else {
sw $sockname : $+ %me 481 %lonick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 461 %lonick $1 :Not enough parameters
}
}
elseif ($1 == NACHAT) {
set %lonick $socknick($sockname)
set %lomess $2-
if ($2) {
if (%ircop_ [ $+ [ %lonick ] ]) {
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto nachatend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (N isin %umodes_ [ $+ [ %r ] ]) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %lonick :*** NetAdmin.Chat -- from %lonick $+ : %lomess
}
}
.fclose %file
:nachatend
}
else {
sw $sockname : $+ %me 481 %lonick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 461 %lonick $1 :Not enough parameters
}
}
elseif ($1 == KILL) {
set %knick $socknick($sockname)
if ($3) {
set %kmess $right($3-,$calc($len($3-) - 1))
if ($isco($2)) {
if (%ircop_ [ $+ [ %knick ] ]) {
set %kflags %oline. [ $+ [ %ircop_ [ $+ [ %knick ] ] ] ] [ $+ [ .flags ] ]
;Là on met seulement du local kill puisque les links n'éxistent pas encore
if (k isin %kflags) {
var %a $true
echo -a a
if (!$sock(%sockname_ [ $+ [ $2 ] ])) {
if (%server_ [ $+ [ $2 ] ] != %me) {
var %a $false
sw gserv. $+ $ifmatch : $+ %knick KILL $2 : $+ %host_ [ $+ [ $sockname ] ] $+ $chr(33) $+ %knick ( $+ %kmess $+ )
;:G-FACTION KILL huhut :netadmin.G-SERVER.net!G-FACTION (:p)
}
}
echo -a b
if (%a) {
sw %sockname_ [ $+ [ $2 ] ] : $+ $fullhost($sockname) KILL $2 : $+ %knick
}
echo -a c
set %quitchans %chans_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
set %qfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
set %qnick $socknick(%sockname_ [ $+ [ $2 ] ])
set %qserv %server_ [ $+ [ $socknick(%sockname_ [ $+ [ $2 ] ]) ] ]
set %truc %sockname_ [ $+ [ $2 ] ]
set %quitraison_ [ $+ [ %truc ] ] $chr(91) $+ %me $+ $chr(93) Local kill by %knick ( $+ %kmess $+ )
sendpeoplesnomask k *** Notice -- Received KILL message for $fullhost(%truc) from %knick Path: %me $+ ! $+ %knick ( $+ %kmess $+ )
sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ %truc ] ]
sockclose2 %truc
gquit %truc $chr(91) $+ %me $+ $chr(93) Local kill by %knick ( $+ %kmess $+ ) %truc
}
else {
sw $sockname : $+ %me 481 %knick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 481 %knick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 401 %knick $2 :No such nick/channel
}
}
else {
sw $sockname : $+ %me 461 %knick $1 :Not enough parameters
}
}
elseif ($1 == KLINE) {
set %knick $socknick($sockname)
if ($2) {
if (%ircop_ [ $+ [ %knick ] ]) {
set %kflags %oline. [ $+ [ %ircop_ [ $+ [ %knick ] ] ] ] [ $+ [ .flags ] ]
if (b isincs %kflags) {
if ($left($2,1) != $chr(45)) {
;Pour adder une k:line
;kline <host ou nick> temps raison
if ($chr(64) isin $2) {
if ($left($2,1) == $chr(43)) {
set %khost $right($2,$calc($len($2) - 1))
}
else {
set %khost $2
}
}
else {
if ($left($2,1) == $chr(43)) {
set %khost $right($2,$calc($len($2) - 1))
}
else {
set %khost $2
}
if ($isco($2)) {
set %khost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
}
else {
sw $sockname : $+ %me 401 %knick %khost :No such nick/channel
halt
}
}
set %tsecs $duration($replace($3,d,d $+ $chr(32),h,h $+ $chr(32),m,m $+ $chr(32),s,s $+ $chr(32)))
if (!$len($kline.infos(%khost))) {
if ((%tsecs != 0) && (%tsecs != 0secs) && (%tsecs)) {
;Bon format de durée
;kline.add host $dctime timetoexpire host_klineur raison
; 1 2 3 4 5
set %tasctime $ctime
set %treason $iif($len($4-),$4-,no reason)
kline.add %khost %tasctime %tsecs $fullhost($sockname) %treason
sendpeoplesnomask G *** K:Line added for %khost on $asctime(%tasctime) GMT (from $fullhost($sockname) to expire at $asctime($calc(%tasctime + %tsecs)) GMT: %treason $+ )
}
else {
;Permanent k:line !
set %tasctime $ctime
set %tsecs 0
set %treason $iif($len($4-),$4-,no reason)
kline.add %khost %tasctime 0 $fullhost($sockname) %treason
sendpeoplesnomask G *** Permanent K:Line added for %khost on $asctime(%tasctime) GMT (from $fullhost($sockname) $+ : %treason $+ )
}
}
else {
halt
}
}
else {
;Il s'agit d'un removal de k:line
set %khost $right($2,$calc($len($2) - 1))
if ($chr(64) isin %khost) {
set %khost %khost
}
else {
if ($isco(%khost)) {
set %khost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ %khost ] ] ] ]
}
else {
sw $sockname : $+ %me 401 %knick %khost :No such nick/channel
}
}
if ($kline.infos(%khost)) {
;Elle existe en effet
set %kinfos $kline.infos(%khost)
set %setat $asctime($gettok(%kinfos,1,32))
set %kreason $gettok(%kinfos,4-,32)
kline.del %khost
globops $fullhost($sockname) removed K:Line %khost (set at %setat - reason: %kreason $+ )
}
}
}
else {
sw $sockname : $+ %me 481 %knick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 481 %knick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
if (%ircop_ [ $+ [ %knick ] ]) {
stats K $sockname
}
else {
sw $sockname : $+ %me 481 %knick :Permission Denied- You do not have the correct IRC operator privileges
}
}
}
elseif ($1 == GLINE) {
set %gnick $socknick($sockname)
if ($2) {
if (%ircop_ [ $+ [ %gnick ] ]) {
set %gflags %oline. [ $+ [ %ircop_ [ $+ [ %gnick ] ] ] ] [ $+ [ .flags ] ]
if (t isincs %gflags) {
if ($left($2,1) != $chr(45)) {
;Pour adder une g:line
;gline <host ou nick> temps raison
if ($chr(64) isin $2) {
if ($left($2,1) == $chr(43)) {
set %ghost $right($2,$calc($len($2) - 1))
}
else {
set %ghost $2
}
}
else {
if ($left($2,1) == $chr(43)) {
set %ghost $right($2,$calc($len($2) - 1))
}
else {
set %ghost $2
}
if ($isco(%ghost)) {
set %ghost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
}
else {
sw $sockname : $+ %me 401 %gnick %ghost :No such nick/channel
halt
}
}
set %tsecs $duration($replace($3,d,d $+ $chr(32),h,h $+ $chr(32),m,m $+ $chr(32),s,s $+ $chr(32)))
if (!$len($gline.infos(%ghost))) {
if ((%tsecs != 0) && (%tsecs != 0secs) && (%tsecs)) {
;Bon format de durée
;gline.add host $ctime timetoexpire host_glineur raison
; 1 2 3 4 5
set %tasctime $ctime
set %treason $iif($len($4-),$4-,no reason)
gline.add %ghost %tasctime %tsecs $fullhost($sockname) %treason
sendpeoplesnomask G *** G:Line added for %ghost on $asctime(%tasctime) GMT (from $fullhost($sockname) to expire at $asctime($calc(%tasctime + %tsecs)) GMT: %treason $+ )
set %quitchans %chans_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
set %qfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
set %qnick $socknick(%sockname_ [ $+ [ $2 ] ])
set %qserv %server_ [ $+ [ $socknick(%sockname_ [ $+ [ $2 ] ]) ] ]
set %truc %sockname_ [ $+ [ $2 ] ]
set %quitraison_ [ $+ [ %truc ] ] User has been banned from %network ( $+ %treason $+ )
sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ %truc ] ]
sockclose2 %truc
gquit %truc User has been banned from %network ( $+ %treason $+ ) %truc
}
else {
;Permanent g:line !
set %tasctime $ctime
set %tsecs 0
set %treason $iif($len($4-),$4-,no reason)
gline.add %ghost %tasctime %tsecs $fullhost($sockname) %treason
sendpeoplesnomask G *** Permanent G:Line added for %ghost on $asctime(%tasctime) GMT (from $fullhost($sockname) $+ : %treason $+ )
set %quitchans %chans_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
set %qfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
set %qnick $socknick(%sockname_ [ $+ [ $2 ] ])
set %qserv %server_ [ $+ [ $socknick(%sockname_ [ $+ [ $2 ] ]) ] ]
set %truc %sockname_ [ $+ [ $2 ] ]
set %quitraison_ [ $+ [ %truc ] ] User has been permanently banned from %network ( $+ %treason $+ )
sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ %truc ] ]
sockclose2 %truc
gquit %truc User has been permanently banned from %network ( $+ %treason $+ ) %truc
}
}
else {
halt
}
}
else {
;Il s'agit d'un removal de g:line
set %ghost $right($2,$calc($len($2) - 1))
if ($chr(64) isin %ghost) {
set %ghost %ghost
}
else {
if ($isco(%ghost)) {
set %ghost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ %ghost ] ] ] ]
}
else {
sw $sockname : $+ %me 401 %gnick %ghost :No such nick/channel
}
}
if ($gline.infos(%ghost)) {
;Elle existe en effet
set %ginfos $gline.infos(%ghost)
set %setat $asctime($gettok(%ginfos,1,32))
set %greason $gettok(%ginfos,4-,32)
gline.del %ghost
globops $fullhost($sockname) removed G:Line %ghost (set at %setat - reason: %greason $+ )
}
}
}
else {
sw $sockname : $+ %me 481 %gnick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 481 %gnick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
if (%ircop_ [ $+ [ %gnick ] ]) {
stats G $sockname
}
else {
sw $sockname : $+ %me 481 %gnick :Permission Denied- You do not have the correct IRC operator privileges
}
}
}
elseif ($1 == STATS) {
if ($2) {
stats $2 $sockname
}
else {
statshelp $sockname
}
}
elseif ($1 == ZLINE) {
set %znick $socknick($sockname)
if ($2) {
if (%ircop_ [ $+ [ %znick ] ]) {
set %zflags %oline. [ $+ [ %ircop_ [ $+ [ %znick ] ] ] ] [ $+ [ .flags ] ]
if (z isincs %zflags) {
if ($left($2,1) != $chr(45)) {
;Pour adder une k:line
;kline <host ou nick> temps raison
if ($chr(64) isin $2) {
if ($left($2,1) == $chr(43)) {
set %zhost $right($2,$calc($len($2) - 1))
}
else {
set %zhost $2
}
}
else {
if ($left($2,1) == $chr(43)) {
set %zhost $right($2,$calc($len($2) - 1))
}
else {
set %zhost $2
}
if ($isco($2)) {
set %zhost *@ $+ $sock(%sockname_ [ $+ [ $2 ] ]).ip
}
else {
sw $sockname : $+ %me 401 %znick %zhost :No such nick/channel
halt
}
}
set %tsecs $duration($replace($3,d,d $+ $chr(32),h,h $+ $chr(32),m,m $+ $chr(32),s,s $+ $chr(32)))
if (!$len($zline.infos(%zhost))) {
if ((%tsecs != 0) && (%tsecs != 0secs) && (%tsecs)) {
;Bon format de durée
;zline.add host $dctime timetoexpire host_zlineur raison
; 1 2 3 4 5
set %tasctime $ctime
set %treason $iif($len($4-),$4-,no reason)
zline.add %zhost %tasctime %tsecs $fullhost($sockname) %treason
sendpeoplesnomask G *** Z:Line added for %zhost on $asctime(%tasctime) GMT (from $fullhost($sockname) to expire at $asctime($calc(%tasctime + %tsecs)) GMT: %treason $+ )
}
else {
;Permanent z:line !
set %tasctime $ctime
set %tsecs 0
set %treason $iif($len($4-),$4-,no reason)
zline.add %zhost %tasctime 0 $fullhost($sockname) %treason
sendpeoplesnomask G *** Permanent Z:Line added for %zhost on $asctime(%tasctime) GMT (from $fullhost($sockname) $+ : %treason $+ )
}
}
else {
halt
}
}
else {
;Il s'agit d'un removal de z:line
set %zhost $right($2,$calc($len($2) - 1))
if ($chr(64) isin %zhost) {
set %zhost %zhost
}
else {
if ($isco(%zhost)) {
set %zhost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ %zhost ] ] ] ]
}
else {
sw $sockname : $+ %me 401 %znick %zhost :No such nick/channel
halt
}
}
if ($zline.infos(%zhost)) {
;Elle existe en effet
set %zinfos $zline.infos(%zhost)
set %setat $asctime($gettok(%zinfos,1,32))
set %zreason $gettok(%zinfos,4-,32)
zline.del %zhost
globops $fullhost($sockname) removed Z:Line %zhost (set at %setat - reason: %zreason $+ )
}
}
}
else {
sw $sockname : $+ %me 481 %znick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 481 %znick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
if (%ircop_ [ $+ [ %znick ] ]) {
stats z $sockname
}
else {
sw $sockname : $+ %me 481 %znick :Permission Denied- You do not have the correct IRC operator privileges
}
}
}
elseif ($1 == GZLINE) {
set %gznick $socknick($sockname)
if ($2) {
if (%ircop_ [ $+ [ %gznick ] ]) {
set %gzflags %oline. [ $+ [ %ircop_ [ $+ [ %gznick ] ] ] ] [ $+ [ .flags ] ]
if (Z isincs %gzflags) {
if ($left($2,1) != $chr(45)) {
;Pour adder une gz:line
;gzline <host ou nick> temps raison
if ($chr(64) isin $2) {
if ($left($2,1) == $chr(43)) {
set %gzhost $right($2,$calc($len($2) - 1))
}
else {
set %gzhost $2
}
}
else {
if ($left($2,1) == $chr(43)) {
set %gzhost $right($2,$calc($len($2) - 1))
}
else {
set %gzhost $2
}
if ($isco($2)) {
set %gzhost *@ $+ $sock(%sockname_ [ $+ [ $2 ] ]).ip
}
else {
sw $sockname : $+ %me 401 %gznick %gzhost :No such nick/channel
halt
}
}
set %tsecs $duration($replace($3,d,d $+ $chr(32),h,h $+ $chr(32),m,m $+ $chr(32),s,s $+ $chr(32)))
if (!$len($gzline.infos(%gzhost))) {
if ((%tsecs != 0) && (%tsecs != 0secs) && (%tsecs)) {
;Bon format de durée
;gzline.add host $ctime timetoexpire host_gzlineur raison
; 1 2 3 4 5
set %tasctime $ctime
set %treason $iif($len($4-),$4-,no reason)
gzline.add %gzhost %tasctime %tsecs $fullhost($sockname) %treason
sendpeoplesnomask G *** Global Z:Line added for %ghost on $asctime(%tasctime) GMT (from $fullhost($sockname) to expire at $asctime($calc(%tasctime + %tsecs)) GMT: %treason $+ )
set %quitchans %chans_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
set %qfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
set %qnick $socknick(%sockname_ [ $+ [ $2 ] ])
set %qserv %server_ [ $+ [ $socknick(%sockname_ [ $+ [ $2 ] ]) ] ]
set %truc %sockname_ [ $+ [ $2 ] ]
set %quitraison_ [ $+ [ %truc ] ] Z:lined ( $+ %treason $+ )
sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ %truc ] ]
sockclose2 %truc
gquit %truc Z:lined ( $+ %treason $+ ) %truc
}
else {
;Permanent gz:line !
set %tasctime $ctime
set %tsecs 0
set %treason $iif($len($4-),$4-,no reason)
gzline.add %gzhost %tasctime 0 $fullhost($sockname) %treason
sendpeoplesnomask G *** Permanent Global Z:Line added for %gzhost on $asctime(%tasctime) GMT (from $fullhost($sockname) $+ : %treason $+ )
set %quitchans %chans_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
set %qfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
set %qnick $socknick(%sockname_ [ $+ [ $2 ] ])
set %qserv_ [ $+ [ $socknick(%sockname_ [ $+ [ $2 ] ]) ] ]
set %truc %sockname_ [ $+ [ $2 ] ]
set %quitraison_ [ $+ [ %truc ] ] Z:lined ( $+ %treason $+ )
sendmultiserver : $+ %qnick QUIT : $+ %quitraison_ [ $+ [ %truc ] ]
sockclose2 %truc
gquit %truc Z:lined ( $+ %treason $+ ) %truc
}
}
else {
halt
}
}
else {
;Il s'agit d'un removal de gz:line
set %gzhost $right($2,$calc($len($2) - 1))
if ($chr(64) isin %gzhost) {
set %gzhost %gzhost
}
else {
if ($isco(%gzhost)) {
set %gzhost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ %gzhost ] ] ] ]
}
else {
sw $sockname : $+ %me 401 %gznick %gzhost :No such nick/channel
halt
}
}
if ($gzline.infos(%gzhost)) {
;Elle existe en effet
set %gzinfos $gzline.infos(%gzhost)
set %setat $asctime($gettok(%gzinfos,1,32))
set %gzreason $gettok(%gzinfos,4-,32)
gzline.del %gzhost
globops $fullhost($sockname) removed Global Z:Line %gzhost (set at %setat - reason: %gzreason $+ )
}
}
}
else {
sw $sockname : $+ %me 481 %gznick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 481 %gznick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
if (%ircop_ [ $+ [ %gznick ] ]) {
stats Z $sockname
}
else {
sw $sockname : $+ %me 481 %gznick :Permission Denied- You do not have the correct IRC operator privileges
}
}
}
elseif ($1 == SETIDENT) {
;<- :irc.G-SERVER.net NOTICE G-FACTION :Your nick!user@host-mask is now (G-FACTION!lol@G-SERVER-5D1944FA) - To disable ident set change it manually by /setident'ing again
;SETIDENT <new ident>
set %identnick $socknick($sockname)
if (%ircop_ [ $+ [ %identnick ] ]) {
if ($2) {
if ($len($2-) <= 10) {
if ($norme($2)) {
set %identd_ [ $+ [ $socknick($sockname) ] ] $2
sw $sockname : $+ %me NOTICE $socknick($sockname) :Your nick!user@host-mask is now $chr(40) $+ $fullhost($sockname) $+ $chr(41) - To disable ident set change it manually by /setident'ing again
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetIdent Error: A username may contain a-z, A-Z, 0-9, '-', '~' & '.' - Please only use them
}
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetIdent Error: Usernames are limited to 10 characters.
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %identnick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == CHGNAME) {
;CHGNAME NICK NEWNAME
set %identnick $socknick($sockname)
if (%ircop_ [ $+ [ %identnick ] ]) {
if ($2) {
if ($isco($2)) {
if ($3) {
if ($len($3-) <= 50) {
set %realname_ [ $+ [ $2 ] ] $3-
sw $sockname : $+ %me NOTICE $socknick($sockname) : $+ $2 $+ 's "real name" (GCOS) is now set to be $3-
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /ChgName Error: "Real names" may maximum be 50 characters of length
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 401 $socknick($sockname) $2 :No such nick/channel
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %identnick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == CHGIDENT) {
;CHGIDENT nick newident
set %identnick $socknick($sockname)
if (%ircop_ [ $+ [ %identnick ] ]) {
if ($2) {
if ($isco($2)) {
if ($3) {
if ($len($3-) <= 10) {
if ($norme($replace($3,$chr(126),))) {
set %identd_ [ $+ [ $2 ] ] $3
sw $sockname : $+ %me NOTICE $socknick($sockname) : $+ $2 $+ 's nick!user@host-mask is now $chr(40) $+ $fullhost($sockname) $+ $chr(41)
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /ChgIdent Error: A ident may contain a-z, A-Z, 0-9, '-', '~' & '.' - Please only use them
}
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetIdent Error: Usernames are limited to 10 characters.
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 401 $socknick($sockname) $2 :No such nick/channel
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %identnick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == SETHOST) {
;sethost ma-new-host.net
set %identnick $socknick($sockname)
if (%ircop_ [ $+ [ %identnick ] ]) {
if ($2) {
if ($len($2) <= 63) {
if ($norme($2)) {
set %host_ [ $+ [ $sockname ] ] $2
sw $sockname : $+ %me NOTICE $socknick($sockname) :Your nick!user@host-mask is now $chr(40) $+ %host_ [ $+ [ $sockname ] ] $+ $chr(41) - To disable it type /mode %identnick -x
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetHost Error: A hostname may contain a-z, A-Z, 0-9, '-' & '.' - Please only use them
}
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /SetHost Error: Hostnames are limited to 63 characters.
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %identnick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == CHGHOST) {
;chghost nick la-new-host.net
set %identnick $socknick($sockname)
if (%ircop_ [ $+ [ %identnick ] ]) {
if ($3) {
if ($isco($2)) {
if ($len($3) <= 63) {
if ($norme($3)) {
set %host_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ] $3
sw $sockname : $+ %me NOTICE $socknick($sockname) : $+ $2 $+ 's nick!user@host-mask is now $chr(40) $+ %host_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ] $+ $chr(41)
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /ChgHost Error: A hostname may contain a-z, A-Z, 0-9, '-' & '.' - Please only use them
}
}
else {
sw $sockname : $+ %me NOTICE $socknick($sockname) :*** /ChgHost Error: Hostnames are limited to 63 characters.
}
}
else {
sw $sockname : $+ %me 401 $socknick($sockname) $2 :No such nick/channel
}
}
else {
sw $sockname : $+ %me 461 $socknick($sockname) $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %identnick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == SDESC) {
;-> irc.G-SERVER.net SDESC haha ^^
;<- :irc.G-SERVER.net NOTICE G-FACTION :Your "server description" is now set to be haha ^^ - you have to set it manually to undo it
set %sdescnick $socknick($sockname)
if (%ircop_ [ $+ [ %sdescnick ] ]) {
if ($2) {
set %me.info $2-
sw $sockname : $+ %me NOTICE %sdescnick :Your "server description" is now set to be $2- - you have to set it manually to undo it
}
else {
sw $sockname : $+ %me 461 %sdescnick $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %sdescnick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == DIE) {
set %dienick $socknick($sockname)
if (%ircop_ [ $+ [ %dienick ] ]) {
set %dieflags %oline. [ $+ [ %ircop_ [ $+ [ %dienick ] ] ] ] [ $+ [ .flags ] ]
if (D isincs %dieflags) {
if ($2) {
if ($2 == %diepass) {
;-> irc.G-SERVER.net DIE pass
;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- Server Terminating by request of G-FACTION
;<- :irc.G-SERVER.net NOTICE G-FACTION :Server Terminating. G-FACTION
;<- :irc.G-SERVER.net NOTICE G-FACTION :Server Terminating.
;Envoyer les notices à tous les IRCops locaux
set %ilf $userslistfile
if (!$exists(%ilf)) {
goto dieend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (%server_ [ $+ [ %r ] ] == %me) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- Server Terminating by request of %dienick
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :Server Terminating. %dienick
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :Server Terminating.
}
}
.fclose %file
:dieend
;Fin
crashserv
}
else {
;<- :irc.G-SERVER.net 464 G-FACTION :Password Incorrect
sw $1 : $+ %me 464 %dienick :Password Incorrect
}
}
else {
sw $sockname : $+ %me 461 %dienick $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %dienick :Permission denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 481 %dienick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == RESTART) {
set %dienick $socknick($sockname)
if (%ircop_ [ $+ [ %dienick ] ]) {
set %dieflags %oline. [ $+ [ %ircop_ [ $+ [ %dienick ] ] ] ] [ $+ [ .flags ] ]
if (R isincs %dieflags) {
if ($2) {
if ($2 == %restartpass) {
;-> irc.G-SERVER.net RESTART pass
;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- Server is Restarting by request of G-FACTION
;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- Aieeeee!!! Restarting server... No reason
;Envoyer les notices à tous les IRCops locaux
set %ilf $userslistfile
if (!$exists(%ilf)) {
goto restartend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (%server_ [ $+ [ %r ] ] == %me) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- Server is Restarting by request of %dienick
}
if (o isin %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- Aieeeee!!! Restarting server... $iif($3,$3-,No reason)
}
}
}
.fclose %file
:restartend
;Fin
restartserv
}
else {
;<- :irc.G-SERVER.net 464 G-FACTION :Password Incorrect
sw $1 : $+ %me 464 %dienick :Password Incorrect
}
}
else {
sw $sockname : $+ %me 461 %dienick $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %dienick :Permission denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 481 %dienick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == REHASH) {
;rehash
;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- G-FACTION is rehashing server config file
;<- :irc.G-SERVER.net 382 G-FACTION unrealircd.conf :Rehashing
;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- Loading IRCd configuration ..
;<- :irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- Configuration loaded without any problems ..
set %rhnick $socknick($sockname)
if (%ircop_ [ $+ [ %rhnick ] ]) {
set %rhflags %oline. [ $+ [ %ircop_ [ $+ [ %rhnick ] ] ] ] [ $+ [ .flags ] ]
if (r isincs %rhflags) {
sw $sockname : $+ %me 382 %rhnick g-ircd.g :Rehashing
;Envoyer la notice à tous les IRCops locaux
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto rehashend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- %rhnick is rehashing server config file
}
}
}
.fclose %file
:rehashend
;Fin
rh %rhnick
}
else {
sw $sockname : $+ %me 481 %rhnick :Permission denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 481 %rhnick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == LAG) {
;<- :irc.G-SERVER.net 461 G-FACTION LAG :Not enough parameters
;<- :irc.G-SERVER.net 402 G-FACTION hhh :No such server
;<- :irc.G-SERVER.net NOTICE G-FACTION :Lag reply -- irc.G-SERVER.net irc.g-server.net 1108233190
set %lagnick $socknick($sockname)
if (%ircop_ [ $+ [ %lagnick ] ]) {
if ($2) {
if ($2 == %me) {
;Modifier cette condition lors du passage aux links
sw $sockname : $+ %me NOTICE %lagnick :Lag reply -- %me $2 $ctime
}
else {
sw $sockname : $+ %me 402 %lagnick :No such server
}
}
else {
sw $sockname : $+ %me 461 %lagnick $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %lagnick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == SAJOIN) {
;join $sockname $1-
set %joinnick $socknick($sockname)
if (%ircop_ [ $+ [ %joinnick ] ]) {
if ($3) {
if ($isco($2)) {
if ($left($3,1) == $chr(35)) {
join %sockname_ [ $+ [ $2 ] ] JOIN $3
sw %sockname_ [ $+ [ $2 ] ] : $+ %me NOTICE $2 :*** You were forced to join $3
;Envoyer la notice à tous les IRCops locaux
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto sajoinend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- %joinnick used SAJOIN to make $2 join $3
}
}
}
.fclose %file
:sajoinend
;Fin
}
else {
sw $sockname : $+ %me 403 %joinnick $3 :No such channel
}
}
else {
sw $sockname : $+ %me 421 %joinnick $2 :No such nick/channel
}
}
else {
sw $sockname : $+ %me 461 %joinnick $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %joinnick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == SAPART) {
;join $sockname $1-
set %joinnick $socknick($sockname)
if (%ircop_ [ $+ [ %joinnick ] ]) {
if ($3) {
if ($isco($2)) {
if ($left($3,1) == $chr(35)) {
part %sockname_ [ $+ [ $2 ] ] PART $3
sw %sockname_ [ $+ [ $2 ] ] : $+ %me NOTICE $2 :*** You were forced to part $3
;Envoyer la notice à tous les IRCops locaux
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto sapartend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- %joinnick used SAPART to make $2 part $3
}
}
}
.fclose %file
:sapartend
;Fin
}
else {
sw $sockname : $+ %me 403 %joinnick $3 :No such channel
}
}
else {
sw $sockname : $+ %me 421 %joinnick $2 :No such nick/channel
}
}
else {
sw $sockname : $+ %me 461 %joinnick $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %joinnick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == SAMODE) {
;SAMODE #chan +modes-....
;applychmodesonrequest $sockname $2 $3-
set %sanick $socknick($sockname)
if (%ircop_ [ $+ [ %sanick ] ]) {
set %saflags %oline. [ $+ [ %ircop_ [ $+ [ %sanick ] ] ] ] [ $+ [ .flags ] ]
if (a isincs %saflags) {
if ($3) {
if ($chanexists($2)) {
;:*** Global -- from irc.G-SERVER.net: G-FACTION used SAMODE #G-FACTION (+i )
;Envoyer la notice à tous les IRCops locaux
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto samodeend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %sanick :*** Global -- from %me $+ : %sanick used SAMODE $2 ( $+ $3- $+ )
}
}
.fclose %file
:samodeend
;Fin
applychmodesonrequest $sockname $+ $chr(96) $+ %me $2-
}
else {
sw $sockname : $+ %me 401 %sanick $2 :No such nick/channel
}
}
else {
sw $sockname : $+ %me 461 %sanick $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %sanick :Permission denied- You do not have the correct IRC operator privileges
}
}
else {
sw $sockname : $+ %me 481 %sanick :Permission denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == SHUN) {
set %snick $socknick($sockname)
if ($2) {
if (%ircop_ [ $+ [ %snick ] ]) {
if ($left($2,1) != $chr(45)) {
;Pour adder un shun
;shun (+)<host ou nick> temps raison
if ($chr(64) isin $2) {
if ($left($2,1) == $chr(43)) {
set %shost $right($2,$calc($len($2) - 1))
}
else {
set %shost $2
}
}
else {
if ($left($2,1) == $chr(43)) {
set %shost $right($2,$calc($len($2) - 1))
}
else {
set %shost $2
}
if ($isco(%shost)) {
set %shost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ $2 ] ] ] ]
}
else {
sw $sockname : $+ %me 401 %snick %shost :No such nick/channel
halt
}
}
set %tsecs $duration($replace($3,d,d $+ $chr(32),h,h $+ $chr(32),m,m $+ $chr(32),s,s $+ $chr(32)))
if (!$len($shun.infos(%shost))) {
if ((%tsecs != 0) && (%tsecs != 0secs)) {
;Bon format de durée
;shun.add host $ctime timetoexpire host_shuner raison
; 1 2 3 4 5
set %tasctime $ctime
set %treason $iif($len($4-),$4-,no reason)
shun.add %shost %tasctime %tsecs $fullhost($sockname) %treason
sendpeoplesnomask G *** Shun added for %shost on $asctime(%tasctime) GMT (from $fullhost($sockname) to expire at $asctime($calc(%tasctime + %tsecs)) GMT: %treason $+ )
}
else {
;Permanent shun !
set %tasctime $ctime
set %tsecs 0
set %treason $iif($len($4-),$4-,no reason)
shun.add %shost %tasctime 0 $fullhost($sockname) %treason
sendpeoplesnomask G *** Permanent Shun added for %shost on $asctime(%tasctime) GMT (from $fullhost($sockname) $+ : %treason $+ )
}
}
else {
halt
}
}
else {
;Il s'agit d'un removal de shun
set %shost $right($2,$calc($len($2) - 1))
if ($chr(64) isin %shost) {
set %shost %shost
}
else {
if ($isco(%ghost)) {
set %shost *@ $+ %vraiehost_ [ $+ [ %sockname_ [ $+ [ %shost ] ] ] ]
}
else {
sw $sockname : $+ %me 401 %snick %shost :No such nick/channel
}
}
if ($shun.infos(%shost)) {
;Elle existe en effet
set %sinfos $shun.infos(%shost)
set %setat $asctime($gettok(%sinfos,1,32))
set %sreason $gettok(%sinfos,4-,32)
shun.del %shost
globops $fullhost($sockname) removed Shun %shost (set at %setat - reason: %sreason $+ )
}
}
}
else {
sw $sockname : $+ %me 481 %snick :Permission Denied- You do not have the correct IRC operator privileges
}
}
else {
if (%ircop_ [ $+ [ %snick ] ]) {
stats s $sockname
}
else {
sw $sockname : $+ %me 481 %snick :Permission Denied- You do not have the correct IRC operator privileges
}
}
}
elseif ($1 == TEMPSHUN) {
;tempshun (+|-)nickname
set %tsn $socknick($sockname)
if (%ircop_ [ $+ [ %tsn ] ]) {
if ($2) {
if (($left($2,1) == $chr(43)) || ($left($2,1) == $chr(45))) {
set %tsign $left($2,1)
set %toshun $right($2,$calc($len($2) - 1))
}
else {
set %tsign $chr(43)
set %toshun $2
}
if ($isco(%toshun)) {
if (%tsign == $chr(43)) {
;Ajouter %toshun à la liste des temp-shunned
if (!$shunned(%toshun)) {
tmpshun.add %toshun
globops Temporary shun added on user %toshun ( $+ $gettok($vraiefullhost(%sockname_ [ $+ [ %toshun ] ]),2,$asc(!)) $+ ) by %tsn $chr(91) $+ $iif($3-,$3-,no reason) $+ $chr(93)
}
else {
sw $sockname : $+ %me NOTICE %tsn :User ' $+ %toshun $+ ' already shunned
}
}
else {
;Supprimer %toshun de la liste des temp-shunned
if ($shunned(%toshun)) {
tmpshun.del %toshun
globops Removed temporary shun on user %toshun ( $+ $gettok($vraiefullhost(%sockname_ [ $+ [ %toshun ] ]),2,$asc(!)) $+ ) by %tsn
}
else {
;User 'g0d' is not shunned
sw $sockname : $+ %me NOTICE %tsn :User ' $+ %toshun $+ ' is not shunned
}
}
}
else {
sw $sockname : $+ %me 401 %tsn %toshun :No such nick/channel
}
}
else {
sw $sockname : $+ %me 461 %tsn $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %tsn :Permission Denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == CONNECT) {
;connect server-bloc-name [port]
set %connectnick $socknick($sockname)
if (%ircop_ [ $+ [ %connectnick ] ]) {
if ($2) {
if (!$3) {
if (%link_ [ $+ [ $2 ] ] [ $+ [ .port ] ]) {
;Ce bloc existe
if ($len(%link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ]) >= 3) {
set %tempsockname $+(gserv.,$2)
sw $sockname : $+ %me NOTICE %connectnick :*** Connecting to $2 $+ $chr(91) $+ %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] $+ ].
echo -a 4set %connect_ [ $+ [ %tempsockname ] ] $sockname $2 %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ]
set %connect_ [ $+ [ %tempsockname ] ] $sockname $2 %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ]
sockopen %tempsockname %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] %link_ [ $+ [ $2 ] ] [ $+ [ .port ] ]
}
else {
sw $sockname : $+ %me NOTICE %connectnick :*** Notice -- Host %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] unknown
}
}
else {
sw $sockname : $+ %me NOTICE %connectnick :*** Connect: Server $2 is not configured for linking
}
}
else {
if ($len(%link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ]) >= 3) {
set %tempsockname $+(gserv.,$2)
sw $sockname : $+ %me NOTICE %connectnick :*** Connecting to $2 $+ $chr(91) $+ %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] $+ ].
set %connect_ [ $+ [ %tempsockname ] ] $sockname $2 %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ]
sockopen %tempsockname %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] $3
}
else {
sw $sockname : $+ %me NOTICE %connectnick :*** Notice -- Host %link_ [ $+ [ $2 ] ] [ $+ [ .ip ] ] unknown
}
}
}
else {
sw $sockname : $+ %me 461 %tsn $1 :Not enough parameters
}
}
else {
sw $sockname : $+ %me 481 %connectnick :Permission Denied- You do not have the correct IRC operator privileges
}
}
elseif ($1 == MAP) {
showmap $sockname
}
else {
sw $sockname : $+ %me 421 $socknick($sockname) $1 :Unknown command
}
}
else {
if ($1 == NICK) {
set %tnick $2
if ($correctnickname(%tnick)) {
if (!$isco(%tnick)) {
set %sockname_ [ $+ [ %tnick ] ] $sockname
set %nick_of_sockname_ [ $+ [ $sockname ] ] %tnick
set %nick_ [ $+ [ %tnick ] ] $true
}
else {
;<- :besancon.fr.epiknet.org 433 * G-FACTION :Nickname is already in use.
;sw $sockname : $+ %me 433 * %tnick :Nickname is already in use.
sw $sockname ERROR :Closing Link: Nickname is already in use. Please change.
sockclose2 $sockname
.timerkill $+ $sockname -m 1 200 /sockclose $sockname
}
}
else {
sw $sockname ERROR :Closing link: Erroneous Nickname: Illegal characters - Not allowed by the G-NORM
sockclose2 $sockname
.timerkill $+ $sockname -m 1 200 /sockclose $sockname
}
}
elseif ($1 == USER) {
if (%nick_of_sockname_ [ $+ [ $sockname ] ]) {
;USER _G-FACTION "" "127.0.0.1" :I'm g0d. g0d is IRC-Master. g0d made IRC on 8° day!
set %tnick %nick_of_sockname_ [ $+ [ $sockname ] ]
set %usergiven_ [ $+ [ $sockname ] ] on
;.timerusergiven $+ $sockname off
set %tidentd $2
set %trealname $5-
set %ping_ [ $+ [ $sockname ] ] $randping
set %trealname $right(%trealname,$calc($len(%trealname) - 1))
set %realname_ [ $+ [ %tnick ] ] %trealname
set %identd_ [ $+ [ %tnick ] ] %tidentd
set %server_ [ $+ [ %tnick ] ] %me
set %reginserver_ [ $+ [ $sockname ] ] $true
;if ($isco($socknick($sockname))) {
; ;hello $sockname
; ;usergiven $sockname
;}
;else {
; sw $sockname ERROR :Closing Link: Nickname is already in use. Please change.
; sockclose2 $sockname
; .timerkill $+ $sockname -m 1 200 /sockclose $sockname
;}
}
else {
}
}
else {
;:irc.g-neration.com 451 m :You have not registered
sw $sockname : $+ %me 451 $gettok(%sr,1,32) :You have not registered
}
}
:toutefin
}
alias nnullepart {
;Vérifier si la personne n'est sur aucun canal avec le mode N
if ($1) {
set %tmpsn %sockname_ [ $+ [ $1 ] ]
set %tmpchans %chans_ [ $+ [ %tmpsn ] ]
set %nbdchans $gettok(%tmpchans,0,32)
set %nn $true
var %i 1
while (%i <= %nbdchans) {
set %tmpchan $gettok(%tmpchans,%i,32)
;echo -a $chmodes(%tmpchan)
if (N isincs $replacecs($chmodes(%tmpchan),1,N,2,L,3,S,4,C,5,T)) {
set %nn %tmpchan
}
inc %i
}
return %nn
}
}
alias sendpeoplesnomask {
;sendpeoplesnomask snomask message
; 1 2
;Envoit le message en notice aux personnes ayant le snomask 'snomask'
if ($2) {
if (!$exists($userslistfile)) {
goto sendpeoplesnomaskend
}
var %i 1
var %file $gopen($userslistfile)
set %error $false
while ($fread(%file)) {
set %r $ifmatch
if ((!$sock(%sockname_ [ $+ [ %r ] ])) && (%server_ [ $+ [ %r ] ] == %me)) {
echo @sr 12Ghost in userslistfile (sendpeoplesnomask function) nickname: $+ %r -> sockname is not available and this person is on my server...
set %error %i
}
unset %tsnomask
set %tsnomask %snomask_ [ $+ [ %r ] ]
;:irc.G-SERVER.net NOTICE G-FACTION :*** Notice -- R
if (%tsnomask) {
if ($1 isincs %tsnomask) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r : $+ $2-
}
}
inc %i
}
fclose %file
if (%error) { write -dl $+ %error $userslistfile }
:sendpeoplesnomaskend
}
}
alias shunfile { return $mircdir $+ System\tshun.db }
alias tmpshun.add {
if ($1) {
if (!$exists($shunfile)) {
goto tmpshunaddend
}
var %i 0
var %file $gopen($shunfile)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if (%r == $1) {
write -dl $+ %i $shunfile
.fclose %file
break
}
}
if ($fopen(%file)) {
.fclose %file
}
:tmpshunaddend
write $shunfile $1
}
}
alias tmpshun.del {
if ($1) {
if (!$exists($shunfile)) {
goto tmpshundelend
}
var %i 0
var %file $gopen($shunfile)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if (%r == $1) {
write -dl $+ %i $shunfile
.fclose %file
break
}
}
if ($fopen(%file)) {
.fclose %file
}
:tmpshundelend
}
}
alias shunned {
if ($1) {
if (!$exists($shunfile)) {
goto shunnedend
}
var %i 0
var %file $gopen($shunfile)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if (%r == $1) {
.fclose %file
return $true
}
}
.fclose %file
:shunnedend
return $false
}
}
alias chanexists {
;$chanexists(#chan) = $true|$false
if ($1) {
;$chanlistfile : $chanfile(#chan)
var %i 1
if (!$exists($chanlistfile)) {
goto chanexistsend
}
var %file $gopen($chanlistfile)
while ($fread(%file)) {
set %r $ifmatch
if (%r == $1) {
.fclose %file
return $true
}
}
.fclose %file
:chanexistsend
return $false
}
}
alias crashserv {
sockclose *
exit
}
alias restartserv {
sockclose *
start
}
alias norme {
if ($1) {
var %lettres abcdefghijklmnopqrstuvwxyz0123456789-.
var %len $len($1)
var %i 1
while (%i <= %len) {
set %tmplettre $mid($1,%i,1)
var %o 1
var %good $false
while (%o <= 38) {
if (%tmplettre == $mid(%lettres,%o,1)) {
var %good $true
break
}
inc %o
}
if (!%good) { return $false }
inc %i
}
return $true
}
else { return $false }
}
alias statshelp {
;statshelp sockname
;À faire...
}
alias stats {
;stats K sockname
if ($2) {
if (($1 == K) || ($1 == G) || ($1 == Z)) {
if ($1 === z) {
set %kg Z
}
elseif ($1 === Z) {
set %kg GZ
}
else {
set %kg $1
}
set %kfile $linesfile
if (!$exists(%kfile)) {
goto statsend
}
var %file $gopen(%kfile)
while ($fread(%file)) {
set %r $ifmatch
if ($gettok(%r,1,32) == %kg) {
;223 G-FACTION K *@127.0.0.8 326571 19031 G-FACTION!~_G-FACTIO@netadmin.g-neration.com :lol
; hosttemps restant temps passé host_klineur raison
;K *@test.lol 1088798414 2073600 G-FACTION!_G-FACTION@G-IRCD-15873636551896422.mshome.net tg connard
set %khost $gettok(%r,2,32)
set %temps.max $calc($gettok(%r,3,32) + $gettok(%r,4,32))
set %temps.today $ctime
set %temps.restant $calc(%temps.max - %temps.today)
set %temps.set $gettok(%r,3,32)
set %temps.passe $calc(%temps.today - %temps.set)
if ($gettok(%r,4,32) != 0) {
sw $2 : $+ %me 223 $socknick($2) $upper(%kg) %khost %temps.restant %temps.passe $gettok(%r,5,32) : $+ $gettok(%r,6-,32)
}
else {
sw $2 : $+ %me 223 $socknick($2) $upper(%kg) %khost 0 %temps.passe $gettok(%r,5,32) : $+ $gettok(%r,6-,32)
}
}
}
.fclose %file
:statsend
}
sw $2 219 $socknick($2) g :End of /STATS report
}
}
alias linesfile {
return $mircdir $+ System\lines.db
}
alias kline.add {
;kline.add host $ctime timetoexpire host_klineur raison
; 1 2 3 4 5
if ($5) {
write $linesfile K $1-
}
}
alias kline.del {
if ($1) {
var %i 0
set %kfile $linesfile
if (!$exists(%kfile)) {
halt
}
unset %kline
unset %r
var %file $gopen(%kfile)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if ($gettok(%r,1,32) == K) {
if ($gettok(%r,2,32) == $1) {
write -dl $+ %i %kfile
break
}
}
}
.fclose %file
}
}
alias kline.infos {
if ($1) {
set %kfile $linesfile
if (!$exists(%kfile)) {
goto klineinfosend
}
unset %kinfos
var %file $gopen(%kfile)
while ($fread(%file)) {
set %r $ifmatch
if ($gettok(%r,1,32) == K) {
if ($gettok(%r,2,32) == $1) {
set %kinfos $gettok(%r,3-,32)
}
}
}
.fclose %file
if (%kinfos) {
return %kinfos
}
}
:klineinfosend
}
alias whowas.exists {
if ($1) {
set %wwf $whowas.file
unset %r
set %wwexists $false
var %file $gopen(%wwf)
while ($fread(%file)) {
set %r $ifmatch
if ($left(%r,1) == $chr(60)) {
set %wwwnick $left($gettok(%r,1,60),$calc($len($gettok(%r,1,60)) - 1))
if (%wwwnick == $1) {
set %wwexists $true
}
}
}
.fclose %file
}
return %wwexists
}
alias whowas.file {
return $mircdir $+ System\whowas.db
}
alias whowas.host {
if ($1) {
set %wwf $whowas.file
set %watt $false
unset %wwhost
unset %r
set %wwexists $false
var %file $gopen(%wwf)
while ($fread(%file)) {
set %r $ifmatch
if (!%watt) {
if ($left(%r,1) == $chr(60)) {
set %wwwnick $left($gettok(%r,1,60),$calc($len($gettok(%r,1,60)) - 1))
if (%wwwnick == $1) {
set %watt $true
}
}
}
else {
set %wwitem $gettok(%r,1,61)
if (%wwitem == host) {
set %wwhost $gettok(%r,2-,61)
set %watt $false
break
}
}
}
.fclose %file
}
return %wwhost
}
alias whowas.vraiehost {
if ($1) {
set %wwf $whowas.file
set %watt $false
unset %wwvraiehost
unset %r
set %wwexists $false
var %file $gopen(%wwf)
while ($fread(%file)) {
set %r $ifmatch
if (!%watt) {
if ($left(%r,1) == $chr(60)) {
set %wwwnick $left($gettok(%r,1,60),$calc($len($gettok(%r,1,60)) - 1))
if (%wwwnick == $1) {
set %watt $true
}
}
}
else {
set %wwitem $gettok(%r,1,61)
if (%wwitem == vraiehost) {
set %wwvraiehost $gettok(%r,2-,61)
set %watt $false
break
}
}
}
.fclose %file
}
return %wwvraiehost
}
alias whowas.server {
if ($1) {
set %wwf $whowas.file
set %watt $false
unset %wwserver
unset %r
set %wwexists $false
var %file $gopen(%wwf)
while ($fread(%file)) {
set %r $ifmatch
if (!%watt) {
if ($left(%r,1) == $chr(60)) {
set %wwwnick $left($gettok(%r,1,60),$calc($len($gettok(%r,1,60)) - 1))
if (%wwwnick == $1) {
set %watt $true
}
}
}
else {
set %wwitem $gettok(%r,1,61)
if (%wwitem == server) {
set %wwserver $gettok(%r,2-,61)
set %watt $false
break
}
}
}
.fclose %file
}
return %wwserver
}
alias whowas.add.host {
;whowas.add.host nick host-
; $1 $2
if ($2) {
set %wwf $whowas.file
write %wwf $chr(60) $+ $1 $+ $chr(62)
write %wwf host= $+ $2-
}
}
alias whowas.add.vraiehost {
;whowas.add.host nick host-
; $1 $2
if ($2) {
set %wwf $whowas.file
write %wwf vraiehost= $+ $2-
}
}
alias whowas.add.server {
;whowas.add.delete nick server-
; $1 $2
if ($2) {
set %wwf $whowas.file
write %wwf server= $+ $2-
}
}
alias whowas.add.private {
if ($1) {
;whowas.del $socknick($1)
whowas.add.host $socknick($1) $fullhost($1) * : $+ %realname_ [ $+ [ $socknick($1) ] ]
whowas.add.vraiehost $socknick($1) $vraiefullhost($1) * : $+ %realname_ [ $+ [ $socknick($1) ] ]
whowas.add.server $socknick($1) %me : $+ $asctime
}
}
alias whowas.del {
if ($1) {
set %wwf $whowas.file
set %watt $false
var %i 0
var %file $gopen(%wwf)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if (!%watt) {
if ($left(%r,1) == $chr(60)) {
set %wwwnick $left($gettok(%r,1,60),$calc($len($gettok(%r,1,60)) - 1))
if (%wwwnick == $1) {
set %watt $true
write -dl $+ %i %wwf
if (%i > 1) {
dec %i
}
}
}
}
else {
if ($left(%r,1) != $chr(60)) {
write -dl $+ %i %wwf
if (%i > 1) {
dec %i
}
}
else {
set %watt $false
break
}
}
}
.fclose %file
}
}
alias servernotice {
;servernotice snomask message
if ($2) {
set %slines
set %sucf $userslistfile
var %file $gopen(%sucf)
while ($fread(%file)) {
set %r $ifmatch
set %tsnomask %snomask_ [ $+ [ %r ] ]
if ($1 isincs %tsnomask) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r : $+ $2-
}
}
.fclose %file
}
}
alias ggmt {
set %gmt $asctime(zzz)
set %ggmt $left(%gmt,3) $+ $chr(58) $+ 00
return %ggmt
}
alias gdate {
set %gdate $asctime
set %gdate $convdate($gettok(%gdate,1,32)) $convdate($gettok(%gdate,2,32)) $gettok(%gdate,3,32) $gettok(%gdate,5,32)
set %gdate %gdate -- $time(HH:nn) $ggmt
return %gdate
}
alias convdate {
if ($1 == mon) { return Monday }
elseif ($1 == tue) { return Tuesday }
elseif ($1 == wed) { return Wednesday }
elseif ($1 == thu) { return Thursday }
elseif ($1 == fri) { return Friday }
elseif ($1 == sat) { return Saturday }
elseif ($1 == sun) { return Sunday }
elseif ($1 == jan) { return January }
elseif ($1 == feb) { return February }
elseif ($1 == mar) { return March }
elseif ($1 == apr) { return April }
elseif ($1 == may) { return May }
elseif ($1 == jun) { return June }
elseif ($1 == jul) { return Jully }
elseif ($1 == aug} { return August }
elseif ($1 == sep) { return September }
elseif ($1 == oct) { return October }
elseif ($1 == nov) { return November }
elseif ($1 == dec) { return December }
}
alias positivewatch {
if ($1) {
var %i 1
set %pwtok $gettok($1,0,32)
unset %endpwlist
while (%i <= %pwtok) {
set %tpwnick $gettok($1,%i,32)
if ($left(%tpwnick,1) == $chr(43)) {
set %endpwlist %endpwlist $right(%tpwnick,$calc($len(%tpwnick) - 1))
}
inc %i
}
return %endpwlist
}
}
alias chanlistfile {
return $mircdir $+ System\chan.lst
}
alias addchannellist {
;addchannellist #chan
if ($1) {
echo @sr 4added $1 un chan list file
write $chanlistfile $1
}
}
alias delchannellist {
;delchannelist #chan
if ($1) {
set %dfile $chanlistfile
unset %dline
var %i 0
var %file $gopen(%dfile)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if (%r == $1) {
set %dline %i
}
}
.fclose %file
if (%dline) {
echo @sr 4deleted $1 (line %dline $+ ) in %dfile
write -dl $+ %dline %dfile
}
}
}
alias negativewatch {
if ($1) {
var %i 1
set %nwtok $gettok($1,0,32)
unset %endnwlist
while (%i <= %nwtok) {
set %tnwnick $gettok($1,%i,32)
if ($left(%tnwnick,1) == $chr(45)) {
set %endnwlist %endnwlist $right(%tnwnick,$calc($len(%tnwnick) - 1))
}
inc %i
}
return %endnwlist
}
}
alias addwatchedlist {
if ($2) {
set %watchedby_ [ $+ [ $1 ] ] $replace(%watchedby_ [ $+ [ $1 ] ],$2,)
set %watchedby_ [ $+ [ $1 ] ] $addtok(%watchedby_ [ $+ [ $1 ] ],$2,32)
}
}
alias delwatchedlist {
if ($2) {
set %watchedby_ [ $+ [ $1 ] ] $replace(%watchedby_ [ $+ [ $1 ] ],$2,)
}
}
alias signon {
;$signon(sockname) retourne le sign on time d'un user
if ($1) {
return %signon_ [ $+ [ $1 ] ]
}
}
alias credits {
if ($1) {
set %cnick $socknick($sockname)
var %file $gopen(credits.txt)
while ($fread(%file)) {
sw $1 : $+ %me 371 %cnick : $+ $ifmatch
}
.fclose %file
sw $1 : $+ %me 371 %cnick :Birth Date: $readini(System\G-IRCD.dat,GlobalVars,creationtime)
sw $1 : $+ %me 371 %cnick :On-line since $readini(System\G-IRCD.dat,GlobalVars,online)
sw $1 : $+ %me 374 %cnick :End of /INFO list.
}
}
alias info {
if ($1) {
sw $1 : $+ %me 371 $socknick($1) :######## G-IRCD 1.0 ########
sw $1 : $+ %me 371 $socknick($1) :G-IRCD was entierly made by G-FACTION
sw $1 : $+ %me 371 $socknick($1) :<administrateur@g-neration.com>
sw $1 : $+ %me 371 $socknick($1) :-
sw $1 : $+ %me 371 $socknick($1) :Credits - Type /Credits
sw $1 : $+ %me 371 $socknick($1) :G-IRCD Homepage: http://www.g-neration.com/g-ircd/
sw $1 : $+ %me 371 $socknick($1) :############################
sw $1 : $+ %me 371 $socknick($1) :Birth Date: $readini(System\G-IRCD.dat,GlobalVars,creationtime)
sw $1 : $+ %me 371 $socknick($1) :On-line since $readini(System\G-IRCD.dat,GlobalVars,online)
sw $1 : $+ %me 374 $socknick($1) :End of /INFO list.
}
}
alias isvhostlogin {
if ($1) {
if (%vhost_ [ $+ [ $1 ] ]) {
return $true
}
else {
return $false
}
}
}
alias vhostlogpass {
;$vhostlogpass(login,pass)
if ($2) {
if (%vhost_ [ $+ [ $1 ] ] [ $+ [ .password ] ] == $2) {
return $true
}
else {
return $false
}
}
}
alias gquit {
;gquit sockname raison
if ($2) {
set %qchans %quitchans
set %qfh %qfullhost
set %qn %qnick
set %srv %qserv
unset %ghosts
var %i 0
if (!$exists($userslistfile)) {
goto gquitend
}
var %file $gopen($userslistfile)
while ($fread(%file)) {
;;<- :Rockin`Squat!Rockin_Squ@EpiK-3A52AF76.ppp.tiscali.fr QUIT :Quit:
inc %i
set %r $ifmatch
if ($comchans(%qchans,%chans_ [ $+ [ %sockname_ [ $+ [ %r ] ] ] ])) {
if ((%sockname_ [ $+ [ %r ] ]) && (%server_ [ $+ [ %r ] ] == %me)) {
if ($gettok($2-,$gettok($2-,0,32),32) == $1) {
sw %sockname_ [ $+ [ %r ] ] : $+ %qfh QUIT : $+ $gettok($2-,1- $+ $calc($gettok($2-,0,32) - 1),32)
}
else {
sw %sockname_ [ $+ [ %r ] ] : $+ %qfh QUIT : $+ $2-
}
}
else {
set %ghosts $addtok(%ghosts,%i,32)
}
}
}
.fclose %file
:gquitendd
var %y 1
set %gtk $gettok(%ghosts,0,32)
while (%y <= %gtk) {
write -dl $+ $gettok(%ghosts,%y,32) $userslistfile
inc %y
}
delservnick %qnick
var %o 1
set %nbdchans $gettok(%qchans,0,32)
while (%o <= %nbdchans) {
set %fuckchan $gettok(%qchans,%o,32)
delchannick %qn %fuckchan
delnick %fuckchan %qn on
remini $nfochanfile(%fuckchan) STSM %qnick
if (!$lines($chanfile(%fuckchan))) {
.remove $chanfile(%fuckchan)
.remove $nfochanfile(%fuckchan)
delchannellist %fuckchan
log [6CHAN] Channel %fuckchan deleted
}
inc %o
}
;<- ERROR :Closing Link: huh[192.168.0.103] (Quit: !!)
if ($sock($1)) {
if ($gettok($2-,$gettok($2-,0,32),32) == $1) {
sw $1 ERROR :Closing Link: %qn $+ $chr(91) $+ $sock($1).ip $+ $chr(93) ( $+ $gettok($2-,1- $+ $calc($gettok($2-,0,32) - 1),32) $+ )
;ERROR :Closing Link: Stuff[192.168.0.1] G-FACTION ([irc.g-neration.com] Local kill by G-FACTION (!))
}
else {
sw $1 ERROR :Closing Link: %qn $+ $chr(91) $+ $sock($1).ip $+ $chr(93) (Quit: $2- $+ )
}
}
sockclose $1
}
}
on *:signal:G-DNS: {
if ($left($2,5) != gserv) {
;Il s'agit de la résolution pour un user
if ($1) {
;Ca a pu être résolu
set %vraiehost_ [ $+ [ $2 ] ] $1
set %host.bak_ [ $+ [ $2 ] ] %hprefix $+ $chr(45) $+ $huhu($md5($gettok($1,1,46))) $+ $chr(46) $+ $gettok($1,2-,46)
set %host_ [ $+ [ $2 ] ] %hprefix $+ $chr(45) $+ $huhu($md5($gettok($1,1,46))) $+ $chr(46) $+ $gettok($1,2-,46)
sw %dnssock : $+ %me NOTICE AUTH :*** Found your hostname ( $+ $1 $+ )
}
else {
;Ca a pas pu être résolu
set %vraiehost_ [ $+ [ $2 ] ] %ip_ [ $+ [ $2 ] ]
set %host.bak_ [ $+ [ $2 ] ] $upper($md5(%ip_ [ $+ [ $2 ] ])) $+ $chr(46) $+ %hprefix
set %host_ [ $+ [ %dnssock ] ] $upper($md5(%ip_ [ $+ [ $2 ] ])) $+ $chr(46) $+ %hprefix
sw %dnssock : $+ %me NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
}
verifylines KG $2
usergiven $2
}
else {
;Il s'agit de la résolution pour un serveur
if ($1) {
set %serv_vraiehost [ $+ [ %serv_dns ] ] $raddress
sw %serv_dns : $+ %me NOTICE AUTH :*** Found your hostname
}
else {
set %serv_vraiehost [ $+ [ %serv_dns ] ] %serv_ip_ [ $+ [ %serv_dns ] ]
sw %serv_dns : $+ %me NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
}
}
}
on 1:DNS: {
;### L'ancienne méthode de résolution ! Un monument historique =)
;On l'empêche de fonctionner volontairement
if (0 == 1) {
if (!%servdns) {
echo -a dnssock: %dnssock iaddress: $iaddress
if ($raddress) {
set %vraiehost_ [ $+ [ %dnssock ] ] $raddress
set %host.bak_ [ $+ [ %dnssock ] ] %hprefix $+ $chr(45) $+ $huhu($md5($gettok($raddress,1,46))) $+ $chr(46) $+ $gettok($raddress,2-,46)
set %host_ [ $+ [ %dnssock ] ] %hprefix $+ $chr(45) $+ $huhu($md5($gettok($raddress,1,46))) $+ $chr(46) $+ $gettok($raddress,2-,46)
sw %dnssock : $+ %me NOTICE AUTH :*** Found your hostname ( $+ $raddress $+ )
}
else {
set %vraiehost_ [ $+ [ %dnssock ] ] %ip_ [ $+ [ %dnssock ] ]
set %host.bak_ [ $+ [ %dnssock ] ] $upper($md5(%ip_ [ $+ [ %dnssock ] ])) $+ $chr(46) $+ %hprefix
set %host_ [ $+ [ %dnssock ] ] $upper($md5(%ip_ [ $+ [ %dnssock ] ])) $+ $chr(46) $+ %hprefix
sw %dnssock : $+ %me NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
}
set %servdns $false
verifylines KG %dnssock
usergiven %dnssock
}
else {
if ($raddress) {
set %serv_vraiehost [ $+ [ %serv_dns ] ] $raddress
sw %serv_dns : $+ %me NOTICE AUTH :*** Found your hostname
}
else {
;*** Couldn't resolve your hostname; using your IP address instead
set %serv_vraiehost [ $+ [ %serv_dns ] ] %serv_ip_ [ $+ [ %serv_dns ] ]
sw %serv_dns : $+ %me NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
}
set %servdns $false
}
}
}
alias verifylines {
if ($2) {
if ($1 == KG) {
set %vfhost *@ $+ %vraiehost_ [ $+ [ $2 ] ]
set %vffile $linesfile
if (!$exists(%vffile)) {
goto verifylinesend
}
var %file $gopen(%vffile)
while ($fread(%file)) {
set %r $ifmatch
if (($gettok(%r,1,32) == K) || ($gettok(%r,1,32) == G)) {
if ($gettok(%r,2,32) iswm %vfhost) {
set %quitchans %chans_ [ $+ [ $2 ] ]
set %qfullhost $fullhost($2)
set %qnick $socknick($2)
set %qserv %server_ [ $+ [ $socknick($2) ] ]
set %truc $2
sockclose2 %truc
;ERROR :Closing Link: Stuff[192.168.0.1] G-FACTION ([irc.g-neration.com] Local kill by G-FACTION (!))
sw $2 ERROR :Closing link: $socknick($2) $+ $chr(91) $+ $sock($2).ip $+ $chr(93) ([ $+ %me $+ $chr(93) You are banned from %network ( $+ $gettok(%r,6-,32) $+ ))
.timersockclose $+ $2 -m 1 200 /sockclose $2
}
}
}
.fclose %file
:verifylinesend
}
}
}
alias numlettre {
if ($1 == 1) { return a }
elseif ($1 == 2) { return b }
elseif ($1 == 3) { return c }
elseif ($1 == 4) { return d }
elseif ($1 == 5) { return e }
elseif ($1 == 6) { return f }
elseif ($1 == 7) { return g }
elseif ($1 == 8) { return h }
elseif ($1 == 9) { return i }
elseif ($1 == 10) { return j }
elseif ($1 == 11) { return k }
elseif ($1 == 12) { return l }
elseif ($1 == 13) { return m }
elseif ($1 == 14) { return n }
elseif ($1 == 15) { return o }
elseif ($1 == 16) { return p }
elseif ($1 == 17) { return q }
elseif ($1 == 18) { return r }
elseif ($1 == 19) { return s }
elseif ($1 == 20) { return t }
elseif ($1 == 21) { return u }
elseif ($1 == 22) { return v }
elseif ($1 == 23) { return w }
elseif ($1 == 24) { return x }
elseif ($1 == 25) { return y }
elseif ($1 == 26) { return z }
elseif ($1 == a) { return 1 }
elseif ($1 == b) { return 2 }
elseif ($1 == c) { return 3 }
elseif ($1 == d) { return 4 }
elseif ($1 == e) { return 5 }
elseif ($1 == f) { return 6 }
elseif ($1 == g) { return 7 }
elseif ($1 == h) { return 8 }
elseif ($1 == i) { return 9 }
elseif ($1 == j) { return 10 }
elseif ($1 == k) { return 10 }
elseif ($1 == l) { return 12 }
elseif ($1 == m) { return 13 }
elseif ($1 == n) { return 14 }
elseif ($1 == o) { return 15 }
elseif ($1 == p) { return 16 }
elseif ($1 == q) { return 17 }
elseif ($1 == r) { return 18 }
elseif ($1 == s) { return 19 }
elseif ($1 == t) { return 20 }
elseif ($1 == u) { return 21 }
elseif ($1 == v) { return 22 }
elseif ($1 == w) { return 23 }
elseif ($1 == x) { return 24 }
elseif ($1 == y) { return 25 }
elseif ($1 == z) { return 26 }
}
alias galpha {
if ($1) {
if ($1 isalpha) {
return $numlettre($1)
}
else {
return $1
}
}
}
alias admin {
if ($1) {
var %i 0
if (!$exists(admin.nfo)) {
sw $1 : $+ %me 256 $socknick($1) :Administrative info file not found !
halt
}
sw $1 : $+ %me 256 $socknick($1) :Administrative info about %me
var %file $gopen(admin.nfo)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if (%i == 1) {
sw $1 : $+ %me 257 $socknick($1) : $+ %r
}
else {
sw $1 : $+ %me 258 $socknick($1) : $+ %r
}
inc %i
}
.fclose %file
}
}
alias rules {
if ($1) {
if (!$exists(ircd.rules)) {
sw $1 : $+ %me 256 $socknick($1) :Rules file not found !
halt
}
set %rulesnick $socknick($sockname)
var %file $gopen(ircd.rules)
sw $1 : $+ %me 308 %rulesnick :- %me Server Rules -
while ($fread(%file)) {
set %r $ifmatch
sw $1 : $+ %me 232 %rulesnick :- %r
}
.fclose %file
sw $1 : $+ %me 309 %rulesnick :End of RULES command.
}
}
alias huhu {
if ($1) {
unset %str
var %i 1
set %hlen $len($1-)
while (%i <= %hlen) {
set %hl $mid($1-,%i,1)
set %str %str $+ $galpha(%hl)
inc %i
}
set %str $calc(%str / 2)
set %str $left(%str,$calc($len(%str) - 13))
set %str $calc(%str / 3)
}
return $int(%str)
}
;sw $1 ERROR :Closing Link: $login($1).login $+ $chr(91) $+ $login($1).ip $+ $chr(93) ( $+ $chr(91) $+ %me $+ $chr(93) Local kill by $2 ( $+ $3- $+ ))
alias isreginserver {
if ($1) {
if (%reginserver_ [ $+ [ $1 ] ]) {
return $true
}
else {
return $false
}
}
}
alias ghelp {
;ghelp command sockname
if ($2) {
if ($exists(help.cmd)) {
unset %iscmd
set %helpnick $socknick($sockname)
var %file $gopen(help.cmd)
while ($fread(%file)) {
set %r $ifmatch
if (%iscmd) {
if ($left(%r,4) != cmd:) {
sw $2 : $+ %me 292 %helpnick : $+ $replace(%r,$eval(%helpchan,0),%helpchan)
}
else {
break
}
}
if ($left(%r,4) == cmd:) {
if ($gettok(%r,2,58) == $1) {
set %iscmd $true
}
}
}
.fclose %file
if (!%iscmd) {
.timerhelp $+ $2 -m 1 1 ghelp error $2
}
}
else {
sw $2 : $+ %me 292 %helpnick :Commands file not found!
}
}
if ($fopen(%file)) {
.fclose %file
}
}
alias comchans {
;$comchan(#chan1 #chan2,#chan3 #chan4) return $true ou $false si il y a des chans communs
if ($2) {
var %i 1
set %comchan $false
set %numtok1 $gettok($1,0,32)
set %numtok2 $gettok($2,0,32)
while (%i <= %numtok1) {
set %ttok $gettok($1,%i,32)
var %o 1
while (%o <= %numtok2) {
if (%ttok == $gettok($2,%o,32)) {
set %comchan $true
}
inc %o
}
inc %i
}
}
return %comchan
}
alias whoattr {
if ($1) {
unset %attr
if ($isaway($1)) {
set %attr %attr $+ G
}
else {
set %attr %attr $+ H
}
if (r isincs %umodes_ [ $+ [ $1 ] ]) {
set %attr %attr $+ r
}
if (%ircop_ [ $+ [ $1 ] ]) {
set %attr %attr $+ $chr(42)
}
}
return %attr
}
alias userslistfile {
return $mircdir $+ System\users.lst
}
/*
<- :G-FACTION!~_G-FACTIO@EpiK-31F5DC38.fbx.proxad.net JOIN :#grenoble
-> besancon.fr.epiknet.org MODE #grenoble
<- :besancon.fr.epiknet.org 332 G-FACTION #grenoble :Bienvenue sur le chan de GRENOBLE et de l'isere. | http://www.geocities.com/~grenoble/ | Anniversaire de Le-Telepherique-Fou : 18 février, celui de G-FACTION : le 19, on est nés à un jour prêt !! ^^ | If you wanna be a G-FAN, jump to #G-FACTION | #Grenoble Meeting v2.0 en prép - Qnet rOx =)
<- :besancon.fr.epiknet.org 333 G-FACTION #grenoble Djoobstil 1081982761
<- :besancon.fr.epiknet.org 353 G-FACTION = #grenoble :G-FACTION @Clio @Le-Telepherique-fou
<- :besancon.fr.epiknet.org 366 G-FACTION #grenoble :End of /NAMES list.
<- :Clio!services@olympe.epiknet.org MODE #grenoble +q G-FACTION
<- :Clio!services@olympe.epiknet.org MODE #grenoble +o G-FACTION
<- :Clio!services@olympe.epiknet.org NOTICE G-FACTION :Projet en cours : The Ultimate G-BOT !
<- :Clio!services@olympe.epiknet.org PRIVMSG #grenoble :[G-FACTION] Putain, comme je dis toujours, dormir ça fatigue. C'est vrai quoi, quand on se lève à midi on a la tête dans le cul, alors que lorsqu'on se lève aux aurores, qu'est-ce qu'on pête la forme !
<- :besancon.fr.epiknet.org 324 G-FACTION #grenoble +r
<- :besancon.fr.epiknet.org 329 G-FACTION #grenoble 1086390135
*/
alias join {
;"Sockname" "Le sockread su join"
;JOIN #chan[,#chan2,#chan3] [key]
; 1 2 3
set %tsn $1
set %tsr $2-
tokenize 32 %tsr
set %chnick $socknick(%tsn)
if ($2) {
;On s'occupe du cas où la personne ferait un join #chan1,#chan2,#...
;Les ',' font chier en mIRC Script, alors on les remplace avec un ';' par exemple (de toute façon un caractère
;interdit dans les noms de channel).
;Et on gettok tout ça, avec une while...
set %tempchans $replacecs($2,$chr(44),$chr(59))
set %nbdchanstojoin $gettok(%tempchans,0,59)
var %o 1
while (%o <= %nbdchanstojoin) {
set %tchan $gettok(%tempchans,%o,59)
if ($left(%tchan,1) == $chr(35)) {
if ($correctchanname(%tchan)) {
set %chanfile $chanfile(%tchan)
set %nfochanfile $nfochanfile(%tchan)
set %tchmodes $replacecs($chmodes(%tchan),1,N,2,L,3,S,4,C,5,T)
if (i isincs %tchmodes) {
if (!%invited_ [ $+ [ %tchan ] ] [ $+ [ _ $+ [ %chnick ] ] ]) {
sw %tsn : $+ %me 473 %chnick %tchan :Cannot join channel (+i)
goto endofwhile
}
else {
set %invited_ [ $+ [ %tchan ] ] [ $+ [ _ $+ [ %chnick ] ] ] $false
}
}
if (k isincs %tchmodes) {
if (%tchan == $gettok(%tempchans,1,59)) {
if ($3 != $readini(%nfochanfile,DYNM,k.arg)) {
sw %tsn : $+ %me 475 %chnick %tchan :Cannot join channel (+k)
goto endofwhile
}
}
else {
sw %tsn : $+ %me 475 %chnick %tchan :Cannot join channel (+k)
goto endofwhile
}
}
if (O isincs %tchmodes) {
if (o !isin %umodes_ [ $+ [ %chnick ] ]) {
sw %tsn : $+ %me 520 %chnick :Cannot join channel (IRCops only)
goto endofwhile
}
}
if (A isincs %tchmodes) {
if ((A !isincs %umodes_ [ $+ [ %chnick ] ]) || (N !isincs %umodes_ [ $+ [ %chnick ] ])) {
sw %tsn : $+ %me 519 %chnick :Cannot join channel (Admin only)
goto endofwhile
}
}
if (R isincs %tchmodes) {
if (r !isincs %umodes_ [ $+ [ %chnick ] ]) {
sw %tsn : $+ %me 477 %chnick %tchan :You need a registered nick to join that channel.
goto endofwhile
}
}
if (l isincs %tchmodes) {
if ($lines(%chanfile) >= $readini(%nfochanfile,DYNM,l.arg)) {
sw %tsn : $+ %me 471 %chnick %tchan :Cannot join channel (+l)
goto endofwhile
}
}
if ($isbanned(%tchan,%tsn)) {
sw %tsn : $+ %me 474 %chnick %tchan :Cannot join channel (+b)
goto endofwhile
}
set %tlines $lines(%chanfile)
set %theonlyone $false
if (%tlines <= 0) {
set %theonlyone $true
}
if (!$ison(%chnick,%tchan)) {
;Ajout de l'user au chan, et autres procédures
addchannick %chnick %tchan
addnick %tchan %chnick
sw %tsn : $+ $fullhost(%sockname_ [ $+ [ %chnick ] ]) JOIN : $+ %tchan
if ($ttopic(%tchan)) {
topic %tchan %chnick
}
sendnicklist %tchan %chnick
;Signaler aux autres serveurs, qu'il a rejoint le canal
;:G-FACTION JOIN #test
sendmultiserver : $+ %chnick JOIN %tchan
if (%theonlyone) {
if (%ntmode == on) {
chmodestxsrv $chr(43) %tchan n
chmodestxsrv $chr(43) %tchan t
sw %tsn : $+ %me MODE %tchan +nt
}
chmodestatussrv $chr(43) %tchan o %chnick
sw %tsn : $+ %me MODE %tchan +o %chnick
writeini -n $nfochanfile(%tchan) MISC ctime $ctime
addchannellist %tchan
log [6CHAN] Channel %tchan created
}
}
}
else {
sw %tsn : $+ %me 403 %chnick %tchan :No such channel
goto endofwhile
}
}
else {
sw %tsn : $+ %me 403 %chnick %tchan :No such channel
goto endofwhile
}
:endofwhile
inc %o
}
}
}
alias topic {
;topic #chan nick; sert à envoyer les informations de topic d'un chan à un user
if ($2) {
;<- :besancon.fr.epiknet.org 332 G-FACTION #grenoble :Bienvenue sur le chan de GRENOBLE et de l'isere. | http://www.geocities.com/~grenoble/ | Anniversaire de Le-Telepherique-Fou : 18 février, celui de G-FACTION : le 19, on est nés à un jour prêt !! ^^ | If you wanna be a G-FAN, jump to #G-FACTION | #Grenoble Meeting v2.0 en prép - Qnet rOx =)
;<- :besancon.fr.epiknet.org 333 G-FACTION #grenoble Djoobstil 1081982761
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 332 $2 $1 : $+ $ttopic($1)
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 333 $2 $1 $readini($nfochanfile($1),MISC,tuser) $readini($nfochanfile($1),MISC,ttime)
}
}
alias ttopic {
if ($1) {
return $readini($nfochanfile($1),MISC,topic)
}
}
alias part {
;"sockname" "Le sockread du part"
if ($2) {
set %tsn $1
set %tsr $2-
tokenize 32 %tsr
set %tchan $2
set %chnick $socknick(%tsn)
if ($ison(%chnick,%tchan)) {
unset %partmsg
delchannick %chnick %tchan
;Envoyer aux autres serveurs
;:G-FACTION PART #test
set %partmsg $right($3-,$calc($len($3-) - 1))
if (%partmsg) {
sendchannel %tchan : $+ $fullhost(%tsn) PART %tchan : $+ %partmsg
sendmultiserver : $+ %chnick PART %tchan : $+ %partmsg
}
else {
sendchannel %tchan : $+ $fullhost(%tsn) PART %tchan
sendmultiserver : $+ %chnick PART %tchan
}
delnick %tchan %chnick on
remini $nfochanfile(%tchan) STSM %chnick
set %invited_ [ $+ [ %tchan ] ] [ $+ [ _ $+ [ %chnick ] ] ] $false
if (!$lines($chanfile(%tchan))) {
.remove $chanfile(%tchan)
.remove $nfochanfile(%tchan)
delchannellist %tchan
log [6CHAN] Channel %tchan deleted
}
}
}
}
alias noticechannel {
;noticechannel %ichan @ Sender Le message
; 1 2 3 4-
if ($3) {
unset %nsigne
if (!$exists($chanfile($1))) {
halt
}
var %file $gopen($chanfile($1))
unset %sender
while ($fread(%file)) {
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %tempnick $right(%r,$calc($len(%r) - 1))
set %nsigne $left(%r,1)
}
else {
set %tempnick %r
set %nsigne NULL
}
if (%nsigne == $2) {
if ($sock(%sockname_ [ $+ [ %tempnick ] ])) {
set %sender $3
if (%nsigne == NULL) {
unset %tnsigne
}
else {
set %tnsigne %nsigne
}
sw %sockname_ [ $+ [ %tempnick ] ] : $+ %sender NOTICE %tnsigne $+ $1 : $+ $4-
}
}
}
.fclose %file
sendmultiserver : $+ $3 NOTICE $2 $+ $1 : $+ $4-
}
}
alias kick {
;kick #chan Kicker Kicked Raison
; 1 2 3 4
if ($3) {
unset %operoverride
if (%ircop_ [ $+ [ $2 ] ]) {
set %tflags %oline. [ $+ [ %ircop_ [ $+ [ $2 ] ] ] ] [ $+ [ .flags ] ]
if (v isincs %tflags) {
set %operoverride $true
}
}
if ($strongermode($readini($nfochanfile($1),STSM,$2)) === h) {
if ($isatleast(h,$3,$1)) {
if (!%operoverride) {
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 484 $2 $1 :Cannot kick protected user $3 $+ .
goto kickend
}
}
}
elseif (($strongermode($readini($nfochanfile($1),STSM,$2)) !== h) && ($strongermode($readini($nfochanfile($1),STSM,$2)) !== o) && ($strongermode($readini($nfochanfile($1),STSM,$2)) !== a) && ($strongermode($readini($nfochanfile($1),STSM,$2)) !== q)) {
if (!%operoverride) {
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 484 $2 $1 :Cannot kick protected user $3 $+ .
goto kickend
}
}
if ((a isincs $readini($nfochanfile($1),STSM,$3)) || (q isincs $readini($nfochanfile($1),STSM,$3))) {
if (!%operoverride) {
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 484 $2 $1 :Cannot kick protected user $3 $+ .
goto kickend
}
}
set %tchmodes $replacecs($chmodes($1),1,N,2,L,3,S,4,C,5,T)
if (Q isincs %tchmodes) {
if (!%operoverride) {
sw %sockname_ [ $+ [ $2 ] ] : $+ %me NOTICE $2 :*** You cannot kick people on $1
goto kickend
}
}
if (!$4) {
set %kickraison $2
}
else {
set %kickraison $4-
}
delchannick $3 $1
sendchannel $1 : $+ $fullhost(%sockname_ [ $+ [ $2 ] ]) KICK $1 $3 : $+ $left(%kickraison,%kicklen)
unset %delnick
unset %delline
var %i 0
var %file $gopen($chanfile($1))
while ($fread(%file)) {
inc %i
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %delnick $right(%r,$calc($len(%r) - 1))
}
else {
set %delnick %r
}
if (%delnick == $3) {
set %delline %i
}
}
.fclose %file
if (%delline) {
echo @sr 12delete $3 from $1 (line %delline in $chanfile($1) $+ )
write -dl $+ %delline $chanfile($1)
}
remini $nfochanfile($1) STSM $3
set %invited_ [ $+ [ $1 ] ] [ $+ [ _ $+ [ $3 ] ] ] $false
if (!$lines($chanfile($1))) {
.remove $chanfile($1)
.remove $nfochanfile($1)
delchannellist $1
log [6CHAN] Channel $1 deleted
}
:kickend
}
}
alias delchannick {
;delchannick Nick Chan
; 1 2
;sert à supprimer un canal dans la liste des canaux d'une personne
if ($2) {
set %dcnsn %sockname_ [ $+ [ $1 ] ]
set %dcnchans %chans_ [ $+ [ %dcnsn ] ]
set %chans_ [ $+ [ %dcnsn ] ] $remtok(%chans_ [ $+ [ %dcnsn ] ],$2,32)
}
}
alias addchannick {
if ($2) {
set %acnsn %sockname_ [ $+ [ $1 ] ]
set %acnchans %chans_ [ $+ [ %acnsn ] ]
set %chans_ [ $+ [ %acnsn ] ] $remtok(%chans_ [ $+ [ %acnsn ] ],$2,32)
set %chans_ [ $+ [ %acnsn ] ] $addtok(%chans_ [ $+ [ %acnsn ] ],$2,32)
}
}
alias ison {
;$ison(nick,chan)
if ($2) {
set %ison $false
set %ison.sn %sockname_ [ $+ [ $1 ] ]
set %ison.chans %chans_ [ $+ [ %ison.sn ] ]
set %ison.nbdchans $gettok(%ison.chans,0,32)
var %i 1
while (%i <= %ison.nbdchans) {
if ($gettok(%ison.chans,%i,32) == $2) {
set %ison $true
}
inc %i
}
return %ison
}
}
alias whoischanlist {
;Donne la liste des chans sur lequel est un user, préfixé des modes
;Ex: @#G-FACTION +#scripts
if ($1) {
unset %wcl
set %wcl.nick $1
set %wcl.sn %sockname_ [ $+ [ %wcl.nick ] ]
set %wcl.chans %chans_ [ $+ [ %wcl.sn ] ]
set %wcl.nbdchans $gettok(%wcl.chans,0,32)
var %i 1
while (%i <= %wcl.nbdchans) {
set %wcl.chan $gettok(%wcl.chans,%i,32)
if ($nickprefix(%wcl.nick,%wcl.chan) != NULL) {
if ($2) {
;On a précisé un deuxième pseudo... donc il faut savoir si le chan est +s, et si le pseudo 2 est aussi sur le chan, ou est IRCop, pour afficher ou non le chan dans la liste
if ((s isincs $chmodes(%wcl.chan)) || (p isincs $chmodes(%wcl.chan))) {
if (($ison($2,%wcl.chan)) || (%ircop_ [ $+ [ $2 ] ]) || (o isin %umodes_ [ $+ [ $2 ] ])) {
set %wcl $addtok(%wcl,$nickprefix(%wcl.nick,%wcl.chan) $+ %wcl.chan,32)
}
}
else {
set %wcl $addtok(%wcl,$nickprefix(%wcl.nick,%wcl.chan) $+ %wcl.chan,32)
}
}
else {
set %wcl $addtok(%wcl,$nickprefix(%wcl.nick,%wcl.chan) $+ %wcl.chan,32)
}
}
else {
if ($2) {
if ((s isincs $chmodes(%wcl.chan)) || (p isincs $chmodes(%wcl.chan))) {
if (($ison($2,%wcl.chan)) || (%ircop_ [ $+ [ $2 ] ]) || (o isin %umodes_ [ $+ [ $2 ] ])) {
set %wcl $addtok(%wcl,%wcl.chan,32)
}
}
else {
set %wcl $addtok(%wcl,%wcl.chan,32)
}
}
else {
set %wcl $addtok(%wcl,%wcl.chan,32)
}
}
inc %i
}
return %wcl
}
}
alias nickprefix {
;$nickprefix(nick,chan)
;retourne +%@&~
if ($2) {
unset %is
set %chanfile $chanfile($2)
if (!$exists(%chanfile)) {
halt
}
var %file $gopen(%chanfile)
while ($fread(%file)) {
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %is $left(%r,1)
set %tnick $right(%r,$calc($len(%r) - 1))
}
else {
set %is NULL
set %tnick %r
}
if (%tnick == $1) {
set %result %is
}
}
.fclose %file
return %result
}
}
alias correctchanname {
if ($1) {
var %i 1
set %tlen $len($1)
if (%tlen <= %chanlen) {
if ($left($1,1) == $chr(35)) {
set %correctchanname $true
while (%i <= %tlen) {
set %tlettre $mid($1,%i,1)
if (%tlettre !isin %G-NORME.chan) {
set %correctchanname $false
}
inc %i
}
}
else {
set %correctchanname $false
}
}
else {
set %correctchanname $false
}
}
return %correctchanname
}
alias correctnickname {
if ($1) {
var %i 1
set %tlen $len($1)
if (%tlen <= %nicklen) {
set %correctnickname $true
;if ($left($1,1) !isin %G-NORME.nick.first) {
; set %correctnickname $false
;}
while (%i <= %tlen) {
set %tlettre $mid($1,%i,1)
if (%tlettre !isin %G-NORME.nick) {
set %correctnickname $false
}
inc %i
}
}
else {
set %correctnickname $false
}
}
return %correctnickname
}
alias isbanned {
;$isbanned(#chan,sockname)
if ($2) {
set %tfh $fullhost($2)
set %isbanned $false
set %tcf $banfile($1))
if (!$exists(%tcf)) {
goto isbannedend
}
var %file $gopen(%tcf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (%r iswm %tfh) {
set %isbanned $true
}
}
.fclose %file
}
:isbannedend
return %isbanned
}
alias r {
return $readini($1-)
}
alias chmodes {
;$chmodes(#chan) == mntrop
if ($1) {
set %t $nfochanfile($1)
set %len.stxm $len(%stxm)
set %len.dynm $len(%dynm)
unset %e
var %i 1
var %o 1
while (%i <= %len.stxm) {
if ($readini(%t,STXM,$replacecs($mid(%stxm,%i,1),N,1,L,2,S,3,C,4,T,5)) == on) {
if ($mid(%stxm,%i,1) !isincs %e) {
set %e %e $+ $mid(%stxm,%i,1)
}
}
inc %i
}
while (%o <= %len.dynm) {
if ($readini(%t,DYNM,$replacecs($mid(%dynm,%o,1),N,1,L,2,S,3,C,4,T,5)) == on) {
if ($mid(%dynm,%o,1) !isincs %e) {
set %e %e $+ $mid(%dynm,%o,1)
}
}
inc %o
}
return $replacecs(%e,1,N,2,L,3,S,4,C,5,T)
}
}
alias chanfile {
if ($1) {
return $mircdir $+ System\ $+ $1 $+ .chn
}
}
alias creationtime {
if ($1) {
return $readini($nfochanfile($1),MISC,ctime)
}
}
alias addnick {
;addnick chan nick
; 1 2
echo @sr 7Entering ADDNICK function
echo @sr 71: $1 22: $2
if ($2) {
set %tfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
unset %addnick
unset %addline
unset %listnick
if (!$exists($chanfile($1))) {
goto next
}
var %i 0
var %file $gopen($chanfile($1))
while ($fread(%file)) {
inc %i
set %r $ifmatch
echo @sr 7Line read:12 %r
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %addnick $right(%r,$calc($len(%r) - 1))
}
else {
set %addnick %r
}
;echo -a 4Addnick:12 %addnick
if (%addnick == $2) {
;echo -a 4Entered addnick if
set %addline %i
;echo -a 4Set addline to:12 %i
}
}
.fclose %file
if (%addline) {
echo @sr 7write -dl $+ %addline $chanfile($1) (12on supprime $2 de $1 $+ )
write -dl $+ %addline $chanfile($1)
}
:next
echo @sr 7write $chanfile($1) $2
write $chanfile($1) $2
var %file $gopen($chanfile($1))
var %o 0
while ($fread(%file)) {
inc %o
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %listnick $right(%r,$calc($len(%r) - 1))
}
else {
set %listnick %r
}
if (%listnick != $2) {
if ($sock(%sockname_ [ $+ [ %listnick ] ])) {
echo @sr 7Sending JOIN to %listnick
sw %sockname_ [ $+ [ %listnick ] ] : $+ %tfullhost JOIN : $+ $1
}
else {
if (%server_ [ $+ [ %listnick ] ] == %me) {
;Un ghost est repéré dans la nicklist...
echo @sr 7Ghost repéré ! ( $+ %listnick $+ ) write -dl $+ %o $chanfile($1)
write -dl $+ %o $chanfile($1)
;dec %o
;fseek -l %file %o
}
}
}
}
.fclose %file
}
}
alias delservnick {
if ($1) {
var %i 0
set %dline 0
set %ucf $userslistfile
if (!$exists(%ucf)) {
goto delservnickend
}
var %file $gopen(%ucf)
while ($fread(%file)) {
inc %i
var %r $ifmatch
if (%r == $1) {
set %dline %i
}
}
.fclose %file
if (%dline > 0) {
write -dl $+ %dline %ucf
}
:delservnickend
}
}
alias addservnick {
if ($1) {
if ($lines($userslistfile) <= 500) {
delservnick $1
}
write $userslistfile $1
}
}
alias delnick {
;delnick chan nick ifquit
; 1 2 3
if ($3) {
set %tfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
unset %delnick
unset %delline
var %i 0
if (!$exists($chanfile($1))) {
echo @G-IRCD 4PROBLEME SERIEUX DANS DELNICK
goto halt
}
var %file $gopen($chanfile($1))
while ($fread(%file)) {
inc %i
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %delnick $right(%r,$calc($len(%r) - 1))
}
else {
set %delnick %r
}
if (%delnick == $2) {
set %delline %i
}
}
.fclose %file
if (%delline) {
echo @sr 12write -dl $+ %delline $chanfile($1) (on supprime $2 de $1 $+ )
write -dl $+ %delline $chanfile($1)
}
if ($3 != on) {
var %file $gopen($chanfile($1))
while ($fread(%file)) {
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %listnick $right(%r,$calc($len(%r) - 1))
}
else {
set %listnick %r
}
if (%listnick != $2) {
sw %sockname_ [ $+ [ %listnick ] ] : $+ %tfullhost PART : $+ $1
}
}
.fclose %file
}
}
}
alias sendnicklist {
;sendnicklist chan nick
; 1 2
if ($2) {
if (!$exists($chanfile($1))) {
goto sendnicklistend
}
var %file $gopen($chanfile($1))
unset %nicklist
unset %nr
while ($fread(%file)) {
set %nr $ifmatch
set %nicklist $addtok(%nicklist,%nr,32)
if ($gettok(%nicklist,0,32) >= 30) {
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 353 $2 = $1 : $+ %nicklist
unset %nicklist
}
}
.fclose %file
if (%nicklist) {
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 353 $2 = $1 : $+ %nicklist
}
:sendnicklistend
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 366 $2 $1 :End of /NAMES list.
}
}
alias privmsg {
;privmsg chan nick message
; 1 2 3-
if ($3) {
set %tchmodes $replacecs($chmodes($1),1,N,2,L,3,S,4,C,5,T)
if (!$ison($2,$1)) {
if (n isincs %tchmodes) {
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 404 $2 $1 :No external channel messages ( $+ $1 $+ )
goto privmsgend
}
}
set %pfullhost $fullhost(%sockname_ [ $+ [ $2 ] ])
set %message $3-
if (S isincs %tchmodes) {
set %message $strip($3-)
}
if (c isincs %tchmodes) {
if ($3- != $strip($3-)) {
;Donc y'a des codes couleurs
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 404 $2 $1 :Color is not permitted is this channel ( $+ $1 $+ )
goto privmsgend
}
}
if (m isincs %tchmodes) {
if (!$isatleast(v,$2,$1)) {
sw %sockname_ [ $+ [ $2 ] ] : $+ %me 404 $1 $1 :You need voice (+v) ( $+ $1 $+ )
goto privmsgend
}
}
if (!$exists($chanfile($1))) {
goto privmsgend
}
var %o 0
var %file $gopen($chanfile($1))
while ($fread(%file)) {
inc %o
set %r $ifmatch
if (($left(%r,1) == $chr(64)) || ($left(%r,1) == $chr(37)) || ($left(%r,1) == $chr(43)) || ($left(%r,1) == $chr(38)) || ($left(%r,1) == $chr(126))) {
set %tempnick $right(%r,$calc($len(%r) - 1))
}
else {
set %tempnick %r
}
if (%tempnick != $2) {
if ($sock(%sockname_ [ $+ [ %tempnick ] ])) {
;echo -a 7sw %sockname_ [ $+ [ %tempnick ] ] $2-
sw %sockname_ [ $+ [ %tempnick ] ] : $+ %pfullhost PRIVMSG $1 : $+ %message
}
else {
if (%server_ [ $+ [ %tempnick ] ] == %me) {
;Ghost repéré...
write -dl $+ %o $chanfile($1)
}
}
}
}
.fclose %file
:privmsgend
;Envoyer le message dans tout le réseau...
;:G-FACTION PRIVMSG #G-FACTION :haha
sendmultiserver : $+ $2 PRIVMSG $1 : $+ $3-
}
}
alias gline.add {
;gline.add host $ctime timetoexpire host_glineur raison
; 1 2 3 4 5
if ($5) {
write $linesfile G $1-
}
}
alias gline.del {
if ($1) {
var %i 0
set %gfile $linesfile
if (!$exists(%gfile)) {
halt
}
unset %gline
unset %r
var %file $gopen(%gfile)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if ($gettok(%r,1,32) == G) {
if ($gettok(%r,2,32) == $1) {
write -dl $+ %i %gfile
break
}
}
}
.fclose %file
}
}
alias gline.infos {
if ($1) {
set %gfile $linesfile
if (!$exists(%gfile)) {
goto glineinfosend
}
unset %gline
unset %ginfos
var %file $gopen(%gfile)
while ($fread(%file)) {
set %r $ifmatch
if ($gettok(%r,1,32) == G) {
if ($gettok(%r,2,32) == $1) {
set %ginfos $gettok(%r,3-,32)
}
}
}
.fclose %file
if (%ginfos) {
return %ginfos
}
}
:glineinfosend
}
alias shun.add {
;gline.add host $ctime timetoexpire host_glineur raison
; 1 2 3 4 5
if ($5) {
write $linesfile s $1-
}
}
alias shun.del {
if ($1) {
var %i 0
set %gfile $linesfile
if (!$exists(%gfile)) {
halt
}
unset %gline
unset %r
var %file $gopen(%gfile)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if ($gettok(%r,1,32) == s) {
if ($gettok(%r,2,32) == $1) {
write -dl $+ %i %gfile
.fclose %file
break
}
}
}
if ($fopen(%file)) {
.fclose %file
}
}
}
alias shun.infos {
if ($1) {
set %gfile $linesfile
if (!$exists(%gfile)) {
goto shuninfosend
}
unset %gline
unset %ginfos
var %file $gopen(%gfile)
while ($fread(%file)) {
set %r $ifmatch
if ($gettok(%r,1,32) == s) {
if ($gettok(%r,2,32) == $1) {
set %ginfos $gettok(%r,3-,32)
}
}
}
.fclose %file
if (%ginfos) {
return %ginfos
}
}
:shuninfosend
}
alias vraiefullhost {
;Le $1 est un sockname
set %thost $socknick($1) $+ ! $+ %identd_ [ $+ [ $socknick($1) ] ] $+ @ $+ %vraiehost_ [ $+ [ $1 ] ]
return %thost
}
alias isaway {
;Le $1 est un Nick, mais on va le transformer en sockname car %away supporte seulement les socknames
if ($1) {
if (%away_ [ $+ [ %sockname_ [ $+ [ $1 ] ] ] ]) {
return $true
}
else {
return $false
}
}
}
alias isco {
if ($1) {
if (%nick_ [ $+ [ $1 ] ]) {
return $true
}
else {
return $false
}
}
}
alias hello {
if ($1) {
addservnick $socknick($1)
.timerwhowas $+ $1 1 5 /whowas.add.private $1
log 4Connexion : $socknick($1) ( $+ $vraiefullhost($1) $+ )
set %connectiontime_ [ $+ [ $1 ] ] $ctime
;Envoyer la notice à tous les IRCops locaux
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto helloend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
if (c isincs %snomask_ [ $+ [ %r ] ]) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %lonick :*** Notice -- client connecting on port %port_ [ $+ [ $1 ] ] $+ : $socknick($1) ( $+ $gettok($fullhost($1),2-,$asc(!)) $+ ) [clients]
;*** Notice -- Client connecting on port 6667: G-FACTION[GTASA] (G-FACTION@127.0.0.2) [clients]
}
}
}
}
.fclose %file
:helloend
;Fin
;Signaler ce nouvel utilisateur sur tout le réseau (serveurs directement connectés à moi
;NICK lolo 2 1108894608 G-FACTION 192.168.0.2 irc.g2.net 0 :G-FACTION is watching you...
sendmultiserver NICK $socknick($1) 1 %connectiontime_ [ $+ [ $1 ] ] %identd_ [ $+ [ $socknick($1) ] ] %vraiehost_ [ $+ [ $1 ] ] %server_ [ $+ [ $socknick($1) ] ] $hopsfromme($socknick($1)) : $+ %realname_ [ $+ [ $socknick($1) ] ]
sendmultiserver : $+ $socknick($1) MODE $socknick($1) :+ $+ %umodes_ [ $+ [ $socknick($1) ] ]
sendmultiserver : $+ $socknick($1) SETHOST %host_ [ $+ [ %sockname_ [ $+ [ $socknick($1) ] ] ] ]
sw $1 : $+ %me 001 $socknick($1) :Welcome to the %network IRC Network $fullhost($1)
sw $1 : $+ %me 002 $socknick($1) :Your host is %me $+ , running version G-IRCD1.1
sw $1 : $+ %me 003 $socknick($1) :This server was created %creationtime
sw $1 : $+ %me 004 $socknick($1) %me G-IRCD1.1 iowghraAsORVSxNCWqBzvdHtGp lvhopsmntikrRcaqOALQbSeKVfMGCuzN
sw $1 : $+ %me 005 $socknick($1) MAP KNOCK SAFELIST HCN MAXCHANNELS= $+ %maxchannels MAXBANS= $+ %maxbans NICKLEN= $+ %nicklen TOPICLEN= $+ %topiclen KICKLEN= $+ %kicklen MAXTARGETS= $+ %maxtargets AWAYLEN= $+ %awaylen :are supported by this server
sw $1 : $+ %me 005 $socknick($1) WALLCHOPS WATCH=128 SILENCE=15 MODES=12 CHANTYPES=# PREFIX=(qaohv)~&@%+ CHANMODES=be,kfL,l,psmntirRcOAQKVGCNSMT NETWORK= $+ %network CASEMAPPING=ascii EXTBAN=~,cqr :are supported by this server
lusers $1
motd $1
applymodesonrequest $1 %connmodes
}
}
alias motd {
if ($1) {
if (!$exists(%motdfile)) {
sw $1 : $+ %me 372 $socknick($1) :- MOTD file not found!
goto motdend
}
sw $1 : $+ %me 375 $socknick($1) :- %me Message of the Day -
sw $1 : $+ %me 375 $socknick($1) :- $date $time(HH:nn)
var %file $gopen(%motdfile)
while ($fread(%file)) {
sw $1 : $+ %me 372 $socknick($1) :- $ifmatch
}
.fclose %file
:motdend
sw $1 : $+ %me 376 $socknick($1) :End of /MOTD command.
}
}
alias socknick {
return %nick_of_sockname_ [ $+ [ $1 ] ]
}
alias totalchannels {
return $lines($chanlistfile)
}
alias totalircop {
return $lines($ircoplistfile)
}
alias totalusersserv {
var %i 0
if (!$exists($userslistfile)) {
goto totalusersservend
}
var %file $gopen($userslistfile)
while ($fread(%file)) {
if (%server_ [ $+ [ $ifmatch ] ] == %me) {
inc %i
}
}
fclose %file
:totalusersservend
return %i
}
alias totalusersnet {
;A changer au moment du développement des links !
return $totalusersserv
}
alias maxusers {
var %n $totalusersserv
if ((%n > $readini(System\G-IRCD.dat,GlobalVars,maxusers)) || (!$readini(System\G-IRCD.dat,GlobalVars,maxusers))) {
writeini -n System\G-IRCD.dat GlobalVars maxusers %n
return %n
}
else {
return $readini(System\G-IRCD.dat,GlobalVars,maxusers)
}
}
alias maxusersnet {
;A changer au moment du développement des links !
return $maxusers
}
alias lusers {
if ($1) {
sw $1 : $+ %me 251 $socknick($1) :There are $totalusersnet users and $totalusersnet on 1 servers
sw $1 : $+ %me 252 $socknick($1) $totalircop :operator(s) online
sw $1 : $+ %me 254 $socknick($1) $totalchannels :channels formed
sw $1 : $+ %me 255 $socknick($1) :I have $totalusersserv clients and 1 servers
sw $1 : $+ %me 265 $socknick($1) :Current Local Users: $totalusersserv Max: $maxusers
sw $1 : $+ %me 266 $socknick($1) :Current Global Users: $totalusersnet Max: $maxusersnet
}
}
alias version {
if ($1) {
sw $1 : $+ %me 351 $socknick($1) G-IRCD1.1 %me :FinWXOoZE
sw $1 : $+ %me 005 $socknick($1) MAP KNOCK SAFELIST HCN MAXCHANNELS= $+ %maxchannels MAXBANS= $+ %maxbans NICKLEN= $+ %nicklen TOPICLEN= $+ %topiclen KICKLEN= $+ %kicklen MAXTARGETS= $+ %maxtargets AWAYLEN= $+ %awaylen :are supported by this server
sw $1 : $+ %me 005 $socknick($1) WALLCHOPS WATCH=128 SILENCE=15 MODES=12 CHANTYPES=# PREFIX=(qaohv)~&@%+ CHANMODES=be,kfL,l,psmntirRcOAQKVGCNSMT NETWORK= $+ %network CASEMAPPING=ascii EXTBAN=~,cqr :are supported by this server
}
}
alias fullhost {
;Le $1 est un sockname
set %thost $socknick($1) $+ ! $+ %identd_ [ $+ [ $socknick($1) ] ] $+ @ $+ %host_ [ $+ [ $1 ] ]
return %thost
}
alias validflags {
if ($1) {
set %tflags $1
set %tflags $removecs(%tflags,o,O,a,A,N,C,g,h,R,D,w,n,G,k,K,b,B,t,z,Z,v,H,W,r)
if (%tflags) { return $false }
else { return $true }
}
}
alias operexists {
if ($1) {
if (%oline. [ $+ [ $1 ] ]) {
return $true
}
else { return $false }
}
}
alias goodoperpass {
if ($2) {
if (%oline. [ $+ [ $1 ] ] [ $+ [ .pass ] ] == $2) {
return $true
}
else {
return $false
}
}
}
alias goodoperhost {
;$goodoperhost(UID,host)
if ($2) {
if (%oline. [ $+ [ $1 ] ] [ $+ [ .host ] ] iswm $2) {
return $true
}
else {
return $false
}
}
}
alias goodvhosthost {
;$goodvhosthost(UID,host)
if ($2) {
if (%vhost_ [ $+ [ $1 ] ] [ $+ [ .from ] ] iswm $2) {
return $true
}
else {
return $false
}
}
}
alias gzline.add {
;gzline.add host $ctime timetoexpire host_gzlineur raison
; 1 2 3 4 5
if ($5) {
write $linesfile GZ $1-
}
}
alias gzline.del {
if ($1) {
var %i 0
set %gzfile $linesfile
if (!$exists(%gzfile)) {
halt
}
unset %gzline
unset %r
var %file $gopen(%gzfile)
while ($fread(%file)) {
inc %i
set %r $ifmatch
if ($gettok(%r,1,32) == GZ) {
if ($gettok(%r,2,32) == $1) {
write -dl $+ %i %gzfile
break
}
}
}
.fclose %file
}
}
alias gzline.infos {
if ($1) {
set %gzfile $linesfile
if (!$exists(%gzfile)) {
goto gzlineinfosend
}
unset %gzline
unset %gzinfos
var %file $gopen(%gzfile)
while ($fread(%file)) {
set %r $ifmatch
if ($gettok(%r,1,32) == GZ) {
if ($gettok(%r,2,32) == $1) {
set %gzinfos $gettok(%r,3-,32)
}
}
}
.fclose %file
if (%gzinfos) {
return %gzinfos
}
}
:gzlineinfosend
}
alias addircoplist {
if ($1) {
unset %iline
var %i 0
set %ifile $ircoplistfile
if (!$exists(%ifile)) {
goto next
}
var %file $gopen(%ifile)
while ($fread(%file)) {
inc %i
if ($gettok($ifmatch,1,32) == $1) {
set %iline %i
}
}
.fclose %file
:next
if (!%iline) {
write %ifile $1 %ircop_ [ $+ [ $1 ] ]
}
else {
write -dl $+ %iline %ifile
write %ifile $1 %ircop_ [ $+ [ $1 ] ]
}
}
}
alias ircoplistfile {
return %sysdir $+ \ircops.lst
}
alias delircoplist {
if ($1) {
unset %iline
var %i 0
set %ifile $ircoplistfile
if (!$exists(%ifile)) {
goto next
}
var %file $gopen(%ifile)
while ($fread(%file)) {
inc %i
if ($gettok($ifmatch,1,32) == $1) {
set %iline %i
}
}
.fclose %file
if (%iline) {
write -dl $+ %iline %ifile
}
:next
}
}
alias globops {
set %gfile $userslistfile
if (!$exists($userslistfile)) {
goto globopsend
}
var %file $gopen(%gfile)
while ($fread(%file)) {
set %r $ifmatch
if (%ircop_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
;<- :irc.g-neration.com NOTICE huh :*** Global -- from huh: :o
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r : $+ $1-
}
}
}
.fclose %file
:globopsend
}
alias locops {
;locops USER MESSAGE-
if ($2) {
;Envoyer la notice à tous les IRCops locaux
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto locopsend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (O isincs %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
if ($1 != %me) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** LocOps -- from $1 $+ : $2-
}
else {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r : $+ $2-
}
}
}
}
.fclose %file
:locopsend
;Fin
}
}
alias rh {
if ($1) {
set %rh.user $1
;Envoyer la notice à tous les IRCops locaux
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto rhend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- Loading IRCd configuration ..
}
}
}
.fclose %file
:rhend
;Fin
}
else {
set %rh.user <G-IRCD>
}
log [4CONFIG] Rehashing server... (2 $+ %rh.user $+ )
set %nicklen 25
set %chanlen 30
set %G-NORME.chan #abcdefghijklmnopqrstuvwxyz0123456789+~&^âàáäãîïíìöòóôõéèëêuùúûüÿýñ絤£€¡!?¿<>[]`_-{}%$²()\/
set %G-NORME.nick abcdefghijklmnopqrstuvwxyz0123456789âàáäãîïíìöòóôõéèëêuùúûüÿýñç<>[]`_-{}()^\|
set %stxm icmnprstACMK1OQRSVT
set %dynm bekl2
set %cfgcmds oper me link
set %sysdir $mircdir $+ System
set %cmd.oper.lines 4
set %cmd.me.lines 3
set %cmd.vhost.lines 3
set %cmd.link.lines 4
delserver %me
.remove $confservs
unset %incommand
set %numeric 1
;à changer car la prochaine version autorisera les links !
set %confprob $false
if (!$1) {
unset %oline.*
unset %me*
unset %link*
}
if (!$exists(G-IRCD.conf)) {
set %confprob $true
log [12CONFIG] Unable to find G-IRCD.conf
goto rehashend
}
if (!$exists(help.cmd)) {
log [12CONFIG] WARNING: Unable to find help.cmd
}
var %i 1
set %clines $lines(G-IRCD.conf)
while (%i <= %clines) {
set %r $read(G-IRCD.conf,n,%i)
if (!%incommand) {
if ($gettok(%r,2,32)) {
if (($right(%r,1) == $chr(123)) || ($gettok(%r,1,32) == serv_listen)) {
set %cmdlines 0
set %incommand $gettok(%r,1-,32)
}
else {
inc %i
if ($read(G-IRCD.conf,n,%i) == $chr(123)) {
set %cmdlines 0
set %incommand $gettok(%r,1-,32)
}
else {
set %confprob $true
log [12CONFIG] Missing open brace ( $+ %i $+ )
goto rehashend
}
}
}
}
else {
;On est dans un bloc !
;Avant tout, vérifier si c'est pas un }
if ($gettok(%incommand,1,32) == oper) {
set %oline. $+ $gettok(%incommand,2,32) $true
inc %cmdlines
set %tuser $gettok(%incommand,2,32)
if ($gettok(%r,1,32) == from) {
if ($gettok(%r,2,32)) {
if (@ isin $gettok(%r,2,32)) {
set %oline. $+ %tuser $+ .host $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Invalid host format for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Missing parameter for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
goto rehashend
}
}
elseif ($gettok(%r,1,32) == password) {
if ($gettok(%r,2,32)) {
if ($len($gettok(%r,2,32)) >= 6) {
set %oline. $+ %tuser $+ .pass $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Password too short ( $+ %i $+ )
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Missing parameter for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
goto rehashend
}
}
elseif ($gettok(%r,1,32) == flags) {
if ($gettok(%r,2,32)) {
if ($validflags($gettok(%r,2,32))) {
set %oline. $+ %tuser $+ .flags $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Some of the flags doesn't exist (flags: %tflags $+ ). ( $+ %i $+ )
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Missing parameter for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
goto rehashend
}
}
elseif ($gettok(%r,1,32) == swhois) {
if ($gettok(%r,2,32)) {
set %oline. $+ %tuser $+ .swhois $gettok(%r,2-,32)
}
else {
set %confprob $true
log [12CONFIG] Missing parameter for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
goto rehashend
}
}
else {
if ($left(%r,1) == $chr(125)) {
dec %cmdlines
if (%cmdlines == %cmd. [ $+ [ $gettok(%incommand,1,32) ] ] [ $+ [ .lines ] ] ) {
unset %incommand
}
else {
set %confprob $true
log [12CONFIG] Missing, or excessive lines in bloc ' $+ $gettok(%incommand,1,32) $+ '
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
}
elseif ($gettok(%incommand,1,32) == me) {
inc %cmdlines
if ($gettok(%r,1,32) == name) {
if ($gettok(%r,2,32)) {
set %me $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
elseif ($gettok(%r,1,32) == info) {
if ($gettok(%r,2,32)) {
set %me.info $gettok(%r,2-,32)
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
elseif ($gettok(%r,1,32) == numeric) {
if ($gettok(%r,2,32)) {
set %tnumeric $gettok(%r,2,32)
if (%tnumeric !isalpha) {
if (%tnumeric >= 1) {
set %me.numeric %tnumeric
}
else {
set %confprob $true
log [12CONFIG] Numeric must be > than 1. ( $+ %i $+ )
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Numeric must be a number. ( $+ %i $+ )
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Missing parameter for ' $+ $gettok(%r,1,32) $+ ' line. ( $+ %i $+ )
goto rehashend
}
}
else {
if ($left(%r,1) == $chr(125)) {
dec %cmdlines
if (%cmdlines == %cmd. [ $+ [ $gettok(%incommand,1,32) ] ] [ $+ [ .lines ] ] ) {
write $serverlist %me %me.numeric %me.info
unset %incommand
}
else {
set %confprob $true
log [12CONFIG] Missing, or excessive lines in bloc ' $+ $gettok(%incommand,1,32) $+ '
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
}
elseif ($gettok(%incommand,1,32) == vhost) {
inc %cmdlines
if ($gettok(%r,1,32) == vhost) {
if ($gettok(%r,2,32)) {
set %vhost_ [ $+ [ $gettok(%incommand,2,32) ] ] $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
elseif ($gettok(%r,1,32) == from) {
if ($gettok(%r,2,32)) {
set %vhost_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .from ] ] $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
elseif ($gettok(%r,1,32) == password) {
if ($gettok(%r,2,32)) {
if ($len($gettok(%r,2,32)) >= 6) {
set %vhost_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .password ] ] $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Password too short ( $+ %i $+ )
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
else {
if ($left(%r,1) == $chr(125)) {
dec %cmdlines
if (%cmdlines == %cmd. [ $+ [ $gettok(%incommand,1,32) ] ] [ $+ [ .lines ] ] ) {
unset %incommand
}
else {
set %confprob $true
log [12CONFIG] Missing, or excessive lines in bloc ' $+ $gettok(%incommand,1,32) $+ '
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
}
elseif ($gettok(%incommand,1,32) == link) {
inc %cmdlines
if ($gettok(%r,1,32) == ip) {
if ($gettok(%r,2,32)) {
set %link_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .ip ] ] $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
elseif ($gettok(%r,1,32) == port) {
if ($gettok(%r,2,32)) {
set %link_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .port ] ] $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
elseif ($gettok(%r,1,32) == password-receive) {
if ($gettok(%r,2,32)) {
if ($len($gettok(%r,2,32)) >= 6) {
set %link_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .password_r ] ] $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Password too short ( $+ %i $+ )
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
elseif ($gettok(%r,1,32) == password-connect) {
if ($gettok(%r,2,32)) {
if ($len($gettok(%r,2,32)) >= 6) {
set %link_ [ $+ [ $gettok(%incommand,2,32) ] ] [ $+ [ .password_c ] ] $gettok(%r,2,32)
}
else {
set %confprob $true
log [12CONFIG] Password too short ( $+ %i $+ )
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
else {
if ($left(%r,1) == $chr(125)) {
dec %cmdlines
if (%cmdlines == %cmd. [ $+ [ $gettok(%incommand,1,32) ] ] [ $+ [ .lines ] ] ) {
write $confservs $gettok(%incommand,2,32)
unset %incommand
}
else {
set %confprob $true
log [12CONFIG] Missing, or excessive lines in bloc ' $+ $gettok(%incommand,1,32) $+ '
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc line ' $+ $gettok(%r,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
}
elseif ($gettok(%incommand,1,32) == serv_listen) {
inc %cmdlines
set %tport $gettok(%incommand,2,32)
if ($len(%tport)) {
if ($portfree(%tport)) {
socklisten gserv $+ %tport %tport
}
dec %cmdlines
unset %incommand
}
else {
set %confprob $true
log [12CONFIG] Missing argument in bloc ' $+ $gettok(%incommand,1,32) $+ '
goto rehashend
}
}
else {
set %confprob $true
log [12CONFIG] Unknown bloc type ' $+ $gettok(%incommand,1,32) $+ '. ( $+ %i $+ )
goto rehashend
}
}
inc %i
}
:rehashend
if (!%confprob) {
log [4CONFIG] Configuration loaded without any problem
}
else {
log [4CONFIG] Config file could not be loaded...
}
if ($1) {
;Envoyer la notice à tous les IRCops locaux
set %ilf $ircoplistfile
if (!$exists(%ilf)) {
goto ttend
}
var %file $gopen(%ilf)
while ($fread(%file)) {
set %r $gettok($ifmatch,1,32)
if (o isin %umodes_ [ $+ [ %r ] ]) {
if (%server_ [ $+ [ %r ] ] == %me) {
if (!%confprob) {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- Configuration loaded without any problems ..
}
else {
sw %sockname_ [ $+ [ %r ] ] : $+ %me NOTICE %r :*** Notice -- There was one or several errors - See log.txt for more information
}
}
}
}
.fclose %file
:ttend
;Fin
}
}
alias confservs { return $mircdir $+ System\confservs.lst }
on *:socklisten:http: {
set %httpsock $calc($rand(1,999999) + $ctime)
sockaccept %httpsock
sendpage %httpsock
}
on *:sockread:http: {
sockread %httpsr
}
alias sendpage {
if ($1) {
var %i 1
set %httplines $lines(index.htm)
sw $1 HTTP/1.0 200 OK
sw $1 Cache-Control: private
sw $1 Content-Type: text/html
sw $1 Set-Cookie: PREF=ID=37b5b3f171a73a13:TM=1087929353:LM=1087929353:S=AG7kB9gWNztna9Lc; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/;
sw $1 Server: GWS/2.1
sw $1 Content-Length: 2569
sw $1 Date: huhu :p
sw $1 Connection: Keep-Alive
sw $1 $crlf
;while (%i <= %httplines) {
; sw $1 $read(index.htm,%i)
; inc %i
;}
sw $1 <html>
sw $1 <head>
sw $1 <meta http-equiv="Content-Language" content="en">
sw $1 <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
sw $1 <title>G-IRCD ( $+ %me $+ )</title>
sw $1 </head>
sw $1 <body>
sw $1 <p align="center"><font color="CC0000"><u><b> $+ %me $+ </b></u></font></p><br><br>
if ($gettok(%ports,0,300) >= 2) {
set %str.port ports
}
else {
set %str.port port
}
sw $1 Listening %str.port %ports $+ <br><br>
sw $1 Online users : $lines($userslistfile) $+ <br>
sw $1 Online IRCop's : $lines($ircoplistfile) $+ <br>
sw $1 Channels created : $lines($chanlistfile) $+ <br><br>
sw $1 Launched since $readini(System\G-IRCD.dat,GlobalVars,online) $+ <br>
sw $1 Server created on $readini(System\G-IRCD.dat,GlobalVars,creationtime) $+ <br><br><br><br><br><br>
sw $1 <p align="center">
sw $1 <i><font size="2">Running <a href="http://www.g-neration.com/g-ircd/">G-IRCD 1.0</a></font></i><br>
sw $1 <font size="2"><i>By G-FACTION</i></font></p>
sw $1 </body>
sw $1 </html>
sockclose $1
}
}
Conclusion
Téléchargez le zip au lieu de recopier le code ;)
Update (18/02/2005):
G-IRCD1.1 - Zip mis à jour
Historique
- 16 février 2005 19:36:01 :
- 18 février 2005 13:16:31 :
- 24 août 2006 21:59:42 :
- J'ai juste voulu savoir ce que ça faisait de copier pas loin de 7000 lignes =)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice CRéATION D'UNE BASE DE DONNéE SOUS SQL AZURECRéATION D'UNE BASE DE DONNéE SOUS SQL AZURE par junarnoalg
Sans rentrer dans les détails, je me propose ici de faire un rapide tour de ce que propose SQL Azure.
SQL Azure est avant tout un service d'hébergement de base de données relationnelles construit sur SQL Server. Il permet aux entreprises d...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : ON RAWMODERE : ON RAWMODE par WorldDMT
Cliquez pour lire la suite par WorldDMT AVERTISSMENT ET KIKKAVERTISSMENT ET KIKK par mouhcine951990
Cliquez pour lire la suite par mouhcine951990
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|