Proxy Web Chat — File Browser
ProxyWebChatv2.75 / ProxyWebChatv2.75 / Webchat / webchat.mrc
webchat.mrc — 61.44 KB — Download this file
; Proxy Web Chat en français, version 2.75 (c) Averell 2003-2006
; SystÚme permettant de faire du chat irc temps réel en passant par une page web, sans applette java.
; Inspirateurs: Internet Chat Systems ( http://www.chatsystems.com ) dont j'ai rippé les codes html
; Testé sous mirc 6.03 (besoin de gérer les hash-tables et les expressions réguliÚres)
; Testé avec Internet Explorer 6
on 1:socklisten:chatsys: webopen $sockname
on 1:sockread:web*: webread $sockname
on 1:sockclose:web*: closeweb $sockname
on 1:sockopen:irc*: ircopen $sockname
on 1:sockread:irc*: ircread $sockname
on 1:sockclose:irc*: closeirc $sockname
; identd stuff... Merci Ă DixRoue
on *:socklisten:identd:{ sockaccept $+(identd.,$ticks) | sockclose identd }
on *:sockread:identd.*:{ sockread %a | tokenize 32 %a | if ($numtok($1-,44) == 2) && ($+($1,$3) isnum) { sockwrite -n $sockname $3 , $1 :USERID:UNIX:WebChat | sockclose $sockname } | unset %a }
alias writeirc {
if ($sock(irc $+ $1).name == $null) { return }
sockwrite -n irc $+ $1 $2-
%g = $asc($gettok($2-,2,32))
if ( $2 == privmsg && %g != 35 && %g != 38 ) {
aline -ph 2 @priv $+ $1 $2-
}
else {
aline -ph 2 @chat $+ $1 $2-
}
}
alias closeirc {
var %cook = $right($1,$calc($len($1)-3))
println $1 0 <script> parent.fermetout(); alert(" $+ $liremess(53) $+ "); window.top.location.href="/"; </script>
aline -ph 4 @Webchat Fermeture (inopinée?) d'un socket irc
window -c @chat $+ %cook
window -c @priv $+ %cook
hfree hirc $+ %cook
hfree priv $+ %cook
}
alias fermesi {
var %chat
%chat = $hget(hirc $+ $1,CHAT)
if ($1 != $null && $sock(%chat).name == $null ) { writeirc $1 QUIT : $+ %quitte }
}
alias closeweb {
var %cook = $hget(in $+ $1,cookie)
aline -ph 2 @Webchat Fermeture du socket web $1
unset % $+ pos $+ $sockname
.timer 1 5 /fermesi %cook
}
alias webopen {
var %walea
%walea = web $+ $ticks $+ $rand(1,1000) | sockaccept %walea
}
alias webread2 {
var %temp
sockread -f %temp | echo 4 -s %temp toto
}
alias webread {
var %fic, %para, %temp, %rien, %time
sockread %temp
set %fic $null
set %para $null
if ( %writelog == oui ) {
%time = $iif( $regex(%temp,/^(get|post|head|connect )/i) == 1 ,$time,$chr(9))
if ( $asc(%time) != 9 ) { write Webchat/logs/log.txt - ( $+ $sock($1).ip $+ ) }
write Webchat/logs/log.txt %time $iif(%temp == $null,(crlf),%temp)
}
if ( %temp != $null ) {
if ( $regex(%temp , /^get ([^? ]+)(\?\S+)?/i ) == 1 ) { set %fic $regml(1) | set %para $regml(2)
set %rien $regsub(%para,/^\?/,,%para)
if (%fic == / || %fic == /index.htm) { %fic = /index.html }
sockmark $1 %fic | aline -ph 1 @Webchat $time : Get de %fic et ?= %para ( $sock($1).ip )
hmake in $+ $1 }
elseif ( $regex(%temp , /^post ([^? ]+)(\?\S+)?/i ) == 1 ) { set %fic $regml(1) | set %para $regml(2)
set %rien $regsub(%para,/^\?/,,%para)
sockmark $1 %fic
aline -ph 1 @Webchat $time Post de %fic et ?= %para ( $sock($1).ip )
hadd -m in $+ $1 post 0 }
if ( /index isin %fic ) { hadd in $+ $1 cookie $ticks }
if ( %para != $null ) { hadd in $+ $1 para %para }
}
else {
; %temp est nul
if ( $hget(in $+ $1,post) == 0 ) {
; Fin de POST atteinte , la variable suit
sockread -f %temp
if (%writelog == oui) { write Webchat/logs/log.txt $chr(9) %temp }
aline -ph 3 @Webchat Posté: %temp ( $sock($1).ip )
hadd in $+ $1 post %temp | parse $1 %temp
}
set %fic $sock($1).mark
if (!$exists(Webchat $+ %fic)) {
aline -ph 6 @Webchat Page 404: %fic ( $sock($1).ip )
sockwrite -n $1 HTTP/1.1 404 Not Found
sockwrite -n $1 Keep-Alive: timeout=15, max=100
sockwrite -n $1 Connection: Keep-Alive
sockwrite -n $1 Content-Type: text/html
sockwrite -n $1
sockwrite -n $1 <HEAD><TITLE>Le fichier demandé n'a pas été trouvé.</TITLE></HEAD><BODY><H1>Erreur 404</H1>Le fichier demandé n'a pas été trouvé.<P></BODY>
hfree in $+ $1 | sockclose $1
halt
}
sockwrite -n $1 HTTP/1.1 200 $iif(.gif isin %fic || .wav isin %fic || .swf isin %fic || .jpg isin %fic,OK,OK)
sockwrite -n $1 Connection: Keep-Alive
sockwrite -n $1 Server: WebChat/1.0
if ( .gif isin %fic ) {
sockwrite -n $1 Cache-control: public
sockwrite -n $1 Content-type: image/gif
sockwrite -n $1 Content-Length: $file(webchat $+ %fic).size
}
elseif ( .jpg isin %fic ) {
sockwrite -n $1 Cache-control: public
sockwrite -n $1 Content-type: image/jpeg
sockwrite -n $1 Content-Length: $file(webchat $+ %fic).size
}
elseif ( .wav isin %fic ) {
sockwrite -n $1 Content-Length: $file(webchat $+ %fic).size
sockwrite -n $1 Cache-control: public
sockwrite -n $1 Content-type: audio/x-wav
; echo 3 -s wave (une belle saleté)
}
elseif ( .swf isin %fic ) {
sockwrite -n $1 Content-Length: $file(webchat $+ %fic).size
sockwrite -n $1 Cache-control: public
sockwrite -n $1 Content-type: application/x-shockwave-flash
}
else {
; sockwrite -n $1 Cache-Control: no-cache, no-store, private
; sockwrite -n $1 Pragma: no-cache
sockwrite -n $1 Content-type: text/html
}
if (index.htm isin %fic ) {
set %cook $rand(1000,10000)
sockwrite -n $1 Set-cookie: ID= $+ %cook
}
sockwrite -n $1
if ( .gif isin %fic || .jpg isin %fic || .wav isin %fic || .swf isin %fic ) {
litimage $1 %fic }
else { traitehtml $1 %fic }
}
}
alias litpage {
var %i,%N,%nick,%userhost,%chan,%cook,%temp,%modes,%putain,%j
if ($sock($1).name == $null ) { return }
%cook = $hget(in $+ $1,cookie)
set %nick $hget(hirc $+ %cook,NICK)
set %chan $hget(hirc $+ %cook,CHAN)
set %userhost $hget(hirc $+ %cook,USERHOST)
set %modes $hget(hirc $+ %cook,MODES)
hadd in $+ $1 nicklist %nicklist
hadd in $+ $1 nick %nick
hadd in $+ $1 canal %chan
hadd in $+ $1 userhost %userhost
hadd in $+ $1 modes %modes
hadd in $+ $1 canaux $canaux(0)
hadd in $+ $1 serveurs $serveurs(0)
hadd in $+ $1 slaps $slaps(0)
hadd in $+ $1 commandes $commandes(0)
hadd in $+ $1 changenom $liremess(37)
hadd in $+ $1 nickvalide $liremess(51)
hadd in $+ $1 joindreserv $joindreserv
%j = 1
while ( %j <= %NVar ) {
%putain = $gettok(%variables,%j,32)
hadd in $+ $1 %putain $variables(%putain)
inc %j
}
set %i 0 | set %N $lines(Webchat $+ $2)
while ( %i < %N ) {
inc %i
set %temp $read -nl $+ %i Webchat $+ $2
if (%temp != $null && !$subst-($1,%temp)) { sockwrite -n $1 $subst($1,%temp) }
else { sockwrite -n $1 }
}
if ( .cgi !isin $2 ) { sockclose $1 | hfree in $+ $1 }
}
alias litimage {
; bread Webchat $+ $sock($sockname).mark 0 4096 &a
; sockwrite $1 &a
; set % $+ pos $+ $1 $bvar(&a,0)
set % $+ pos $+ $1 0
}
on 1:sockwrite:web*:{
set %pos $eval($+(%,pos,$sockname),2)
if (%pos == $null || $sock($sockname).name == $null) { halt }
if ($sock($sockname).sq == 0) {
set %fichier Webchat $+ $sock($sockname).mark
if ($file(%fichier).size > %pos) {
bread %fichier %pos 4096 &a
sockwrite $sockname &a
inc % $+ pos $+ $sockname $bvar(&a,0)
}
else { unset % $+ pos $+ $sockname | .timer 1 1 sockclose $sockname }
; | .timer 1 1 sockclose $sockname
}
}
alias subst {
var %toto, %mimi, %exp, %rien, %zaza
%toto = $2-
%exp = /\$([a-zA-Z]+)/
while ( $regex(SUB,%toto,%exp) == 1 ) {
%mimi = $regml(SUB,1)
%zaza = $iif($1 == 0,$getvariable(%mimi),$hget(in $+ $1,%mimi))
%zaza = $replace(%zaza,$chr(36),$chr(29),\,$chr(30))
%rien = $regsub(SUB,%toto,%exp,%zaza,%toto)
%toto = $replace(%toto,$chr(29),$chr(36),$chr(30),\)
}
return %toto
}
alias subst- {
var %toto, %mimi, %exp, %rien, %zaza, %N, %i
%toto = $2-
%exp = /\$(_[a-zA-Z]+)/
if ( $regex(%toto,%exp) == 1 ) {
%mimi = $regml(1)
%N = $hget(%mimi,N)
%i = 1
while ( %i <= %N ) {
sockwrite -n $1 $hget(%mimi,C $+ %i)
inc %i
}
return $true
}
return $false
}
alias parse {
var %toto, %mimi, %momo, %exp, %exp1, %exp2, %rien, %i, %N
%toto = $2-
%exp = /([^&]+)(&|$)/
%exp1 = /([^=]+)=(.*)/
%exp2 = /%([A-Z0-9]{2})/e
%i = 1
%N = $gettok(%toto,0,38)
while ( %i <= %N ) {
%mimi = $gettok(%toto,%i,38)
%rien = $regex(%mimi,%exp1)
%momo = $regml(1)
%mimi = $regml(2)
if ($right(%momo,1) == _ ) {
%momo = $left(%momo,$calc($len(%momo)-1))
}
else {
%rien = $regsub(%mimi,/\+/ge,$chr(32),%mimi)
%mimi = $replace(%mimi,% $+ 24,$)
%mimi = $replace(%mimi,% $+ 5C,\)
; Obligé de faire ça a cause d'un putain de bug de mirc (le $ et le \ ne triggent pas dans un regsub)
while ( $regex(%mimi,%exp2) == 1 ) {
%rien = $regsub(%mimi,%exp2,$chr($hex($regml(1))),%mimi)
}
}
if ( %mimi ) { hadd in $+ $1 %momo %mimi }
inc %i
}
}
alias hex {
var %a, %b
%a = $left($1,1) | %b = $right($1,1)
if ($asc(%a) > 64 ) { %a = $calc($asc(%a) - 55) }
if ($asc(%b) > 64 ) { %b = $calc($asc(%b) - 55) }
return $calc(%a * 16 + %b)
}
alias ircopen {
var %nick, %user
if ($sockerr > 0) { sockclose web* | halt }
%cook = $right($1,$calc($len($1)-3))
%nick = $hget(hirc $+ %cook,NICK)
%user = webchat
sockwrite -n $1 NICK %nick
sockwrite -n $1 USER %user %user %user :WebChat $variables(ver)
aline -ph 4 @Webchat Ouverture d'un socket irc! ( $1 )
}
alias ircread {
var %cook, %chan, %me, %temp, %chat, %ban
%cook = $right($1,$calc($len($1)-3))
%chan = $hget(hirc $+ %cook,CHAN)
%me = $hget(hirc $+ %cook,NICK)
%ban = $hget(hirc $+ %cook,BAN)
if ( $sockerr > 0 ) { echo 4 -s ERREUR DE MERDE | halt }
sockread %temp
if ( %temp != $null ) {
%g = $asc($gettok(%temp,3,32))
if ( $gettok(%temp,2,32) == privmsg && %g != 35 && %g != 38 ) {
aline -ph 1 @priv $+ %cook %temp
}
else { aline -ph 1 @chat $+ %cook %temp }
}
if ( $left(%temp,4) == PING ) { sockwrite -n $1 PONG $gettok(%temp,2,32) | return }
if ( $regex($gettok(%temp,2,32),/(376|422)/) == 1 && $hget(hirc,%cook) == $null ) {
; ca passe...
sockwrite -n $1 USERHOST %me
}
elseif ( $regex(%temp,/^\S+ 302 \S+ :([^=]+)=\+(.+)$/) == 1 ) {
if ( $hget(hirc,%cook) == $null ) {
hadd -m hirc %cook oui
hadd hirc $+ %cook USERHOST $regml(2)
%chat = $hget(hirc $+ %cook,SIGNON)
litpage %chat $sock(%chat).mark }
else {
; il s'agit d'un ban
%ban = $iif(%ban == $null,1,%ban)
sockwrite -n $1 MODE %chan +b $mask($regml(1) $+ ! $+ $regml(2),%ban)
.timer 1 %bantime /sockwrite -n $1 MODE %chan -b $mask($regml(1) $+ ! $+ $regml(2),%ban)
}
}
elseif ( $regex(%temp,/^:(\S+) join :?(.+)$/i) == 1 ) {
if ( $gettok($regml(1),1,33) == %me ) {
hadd hirc $+ %cook CHAN $regml(2)
hadd hirc $+ %cook JOIN $regml(2)
writeirc %cook MODE $regml(2)
println $1 6 <script> parent.topic("\
printmirc $1 1
println $1 6 "); </script>
}
print $1 %temp
}
elseif ( $regex(%temp,/^:(\S+) nick :?(.+)$/i) == 1 ) {
if ( $gettok($regml(1),1,33) == %me ) {
hadd hirc $+ %cook NICK $regml(2)
}
print $1 %temp
}
elseif ( $regex(%temp,/^:(\S+) mode (\S+) \S+$/i) == 1 ) {
writeirc %cook MODE $regml(2)
print $1 %temp
}
elseif ( $regex(%temp,/^:\S+ 432/) == 1 && $hget(hirc,%cook) == $null) {
sockclose -n irc $+ %cook
%chat = $hget(hirc $+ %cook,SIGNON)
sockwrite -n %chat <head><title>Error!!</title></head><body bgcolor= $+ %fond $+ ><center><h2><br> $+ $liremess(38) $+ <br><br><a href=/> $+ $liremess(39) $+ </a></h2></body>
; nickname interdit!
sockclose %chat
}
elseif ( $regex(%temp,/^:\S+ 433 (\S+)/) == 1 && $hget(hirc,%cook) == $null) {
sockclose -n irc $+ %cook
%chat = $hget(hirc $+ %cook,SIGNON)
sockwrite -n %chat <head><title>Error!!</title></head><body bgcolor= $+ %fond $+ ><center><h2><br> $regml(1) $+ : $liremess(40) $+ <br><br><a href=/> $+ $liremess(41) $+ </a></h2></body>
sockclose %chat
; nickname deja pris!
}
elseif ( $regex(%temp,/^error (.+)/i) == 1) {
sockclose -n irc $+ %cook
%chat = $hget(hirc $+ %cook,SIGNON)
println $1 0 <script>alert(" $+ $liremess(42) $+ \n $+ $regml(1) $+ "); window.top.location.href="/"; </script>
sockwrite -n %chat <head><title>Error!!</title></head><body bgcolor= $+ %fond $+ ><center><h2><br> $+ $liremess(43) $+ <br><br> <font color=red> $regml(1) </font><br><br><a href=/> $+ $liremess(44) $+ </a></h2></body>
sockclose %chat
}
else { print $1 %temp }
}
alias traitement {
var %cook = $hget(in $+ $1,cookie)
var %texte = $hget(in $+ $1,C)
var %chan = $hget(hirc $+ %cook,CHAN)
var %nick = $hget(hirc $+ %cook,NICK)
if ( $regex(%texte,/^\/names (\S+)/i) == 1 ) {
if ( $regml(1) == * ) { writeirc %cook NAMES %chan }
else { writeirc %cook NAMES $regml(1) }
return $true
}
elseif ( $regex(%texte,/^\/(m|msg) (\S+) (.+)$/i) == 1 ) {
if ( %restrict == oui && !$isonchat($regml(2),irc $+ %cook) && $regml(2) != %chan) {
println irc $+ %cook 0 <font color=blue> %texte $+ : $liremess(54) </font>
}
else {
println irc $+ %cook 1 <font color=black face="courier new" size=2> -> * $+ $regml(2) $+ * $smiley($regml(3)) </font>
writeirc %cook PRIVMSG $regml(2) : $+ $regml(3)
jedis irc $+ %cook $regml(2) $regml(3) }
return $true
}
elseif ( $regex(%texte,/^\/(n|notice) (\S+) (.+)$/i) == 1 ) {
if ( %restrict == oui && !$isonchat($regml(2),irc $+ %cook) && $regml(2) != %chan ) {
println irc $+ %cook 0 <font color=blue> %texte $+ : $liremess(54) </font>
}
else {
println irc $+ %cook 1 <font color=black face="courier new" size=2> -> - $+ $regml(2) $+ - $smiley($regml(3)) </font>
writeirc %cook NOTICE $regml(2) : $+ $regml(3) }
return $true
}
elseif ( $regex(%texte,/^\/me (.+)$/i) == 1 ) {
println irc $+ %cook 1 <font color= $+ %moi face="courier new" size=2> * %nick $smiley($regml(1)) </font>
writeirc %cook PRIVMSG %chan :ACTION $regml(1) $+
return $true
}
elseif ( $regex(%texte,/^\/(w|whois) (.+)$/i) == 1 ) {
writeirc %cook WHOIS $regml(2)
return $true
}
elseif ( $regex(%texte,/^\/join ([^,\$]+)$/i) == 1 ) {
if ( ( %changechan != oui || %restrict == oui ) && $regml(1) != %chan && $regml(1) != * ) {
println irc $+ %cook 0 <font color=blue> %texte $+ : $liremess(28) </font>
if ($3 == 1) litpage $1 $2
}
else {
writeirc %cook PART %chan
if ( $regml(1) == * ) { writeirc %cook JOIN %chan }
else { writeirc %cook JOIN $regml(1) }
}
return $true
}
elseif ( $regex(%texte,/^\/j ([^,\$]+)$/i) == 1 ) {
if ( ( %changechan != oui || %restrict == oui ) && $chr(35) $+ $regml(1) != %chan && $regml(1) != * ) {
println irc $+ %cook 0 <font color=blue> %texte $+ : $liremess(28) </font>
if ($3 == 1) litpage $1 $2
}
else {
writeirc %cook PART %chan
if ( $regml(1) == * ) { writeirc %cook JOIN %chan }
else { writeirc %cook JOIN $chr(35) $+ $regml(1) }
}
return $true
}
elseif ( $regex(%texte,/^\/invite (\S+) (\S+)$/i) == 1 ) {
if ( %restrict == oui ) { println irc $+ %cook 0 <font color=blue> %texte $+ : $liremess(54) </font>
}
else {
if ( $regml(2) == * ) { writeirc %cook INVITE $regml(1) %chan }
else { writeirc %cook INVITE $regml(1) $regml(2) }
}
return $true
}
elseif ( $regex(%texte,/^\/nick ([\w-]+)$/i) == 1 ) {
if ( %changenick != oui ) {
println irc $+ %cook 0 <font color=blue> %texte $+ : $liremess(29) </font>
if ($3 == 1) litpage $1 $2
}
else {
writeirc %cook NICK : $+ $regml(1)
}
return $true
}
elseif ( $regex(%texte,/^\/(q|query) (\S+)$/i) == 1 ) {
if ( %restrict == oui && !$isonchat($regml(2),irc $+ %cook) && $regml(2) != %chan) {
println irc $+ %cook 0 <font color=blue> %texte $+ : $liremess(54) </font>
}
else {
%nick = $regml(2)
%id = $assigne(irc $+ %cook,%nick)
%nick = $replace(%nick,\,\\,",\")
println irc $+ %cook 6 <script> parent.parle(" $+ %nick $+ ", $+ %id $+ ); </script>
}
return $true
}
elseif ( $regex(%texte,/^\/list ?(.*)$/i) == 1 ) {
if ($gettok($regml(1),1,32) == -min ) {
writeirc %cook LIST > $+ $gettok($regml(1),2,32)
}
elseif ($gettok($regml(1),1,32) == -max ) {
writeirc %cook LIST < $+ $gettok($regml(1),2,32)
}
else { writeirc %cook LIST $regml(1) }
return $true
}
elseif ( $regex(%texte,/^\/topic (\S+) ?(.*)$/i) == 1 ) {
if ($regml(2) != $null) { writeirc %cook TOPIC $regml(1) : $+ $regml(2) }
elseif ($regml(1) == %chan || $regml(1) == *) { writeirc %cook TOPIC %chan }
return $true
}
elseif ( $regex(%texte,/^\/ping (\S+)?$/i) == 1 ) {
println irc $+ %cook 1 <font color=red> -> $chr(91) $+ $regml(1) $+ $chr(93) PING </font>
writeirc %cook PRIVMSG $regml(1) : $+ PING $ctime $+
return $true
}
elseif ( $regex(%texte,/^\/ctcp (\S+) (\S+)( .+)?$/i) == 1 ) {
println irc $+ %cook 1 <font color=red> -> $chr(91) $+ $regml(1) $+ $chr(93) $upper($regml(2)) $regml(3) </font>
if ( $regml(3) == $null ) { writeirc %cook PRIVMSG $regml(1) : $+ $upper($regml(2)) $+ }
else { writeirc %cook PRIVMSG $regml(1) : $+ $upper($regml(2)) $regml(3) $+ }
return $true
}
elseif ( $regex(%texte,/^\/ban (\S+) ?(\d+)?$/i) == 1 ) {
hadd hirc $+ %cook BAN $regml(2)
writeirc %cook USERHOST $regml(1)
return $true
}
elseif ( $regex(%texte,/^\/away ?(.*)$/i) == 1 ) {
if ($regml(1) != $null ) {
writeirc %cook AWAY : $+ $regml(1) }
else { writeirc %cook AWAY }
return $true
}
elseif ( $regex(%texte,/^\/raw (.+)$/i) == 1 && %raws == oui ) {
writeirc %cook $regml(1)
println irc $+ %cook 0 <font color=black> %texte -> Serveur: $regml(1) </font>
return $true
}
}
alias traitehtml {
var %cook, %nick, %chan, %temp, %N, %i, %texte, %chat, %liste, %modes, %newmode, %net
parse $1 $hget(in $+ $1,para)
%cook = $hget(in $+ $1,cookie)
if ( %cook == $null ) {
%cook = $hget(session,$longip($sock($1).ip))
hadd -m in $+ $1 cookie %cook
}
else {
hadd -m session $longip($sock($1).ip) %cook
}
if ( /signon isin $2 ) {
%cook = $hget(in $+ $1,cookie)
if ( %cook == $null ) { sockwrite -n $1 <body bgcolor=#c0c0c0><center><h2><br> $liremess(52) </h2></center></body> | sockclose $1 | halt }
window -heSkl12 @chat $+ %cook
window -hek @priv $+ %cook
set %window @chat $+ %cook
if ( $hget(hirc,%cook) != $null ) {
; la session existe dĂ©jĂ
hadd hirc $+ %cook SIGNON $1
litpage $1 $2
}
else {
%nick = $hget(in $+ $1,N)
%chan = $hget(in $+ $1,C)
%net = $hget(in $+ $1,NET)
hmake hirc $+ %cook
hmake priv $+ %cook
hmake id $+ %cook
hadd hirc $+ %cook NICK %nick
hadd hirc $+ %cook CHAN %chan
hadd hirc $+ %cook SIGNON $1
hadd hirc $+ %cook SERV %net
hadd in $+ $1 serveur $serveurs(%net,1)
sockclose identd | if ($portfree(113)) socklisten identd 113
sockopen irc $+ %cook $serveurs(%net,2) $serveurs(%net,3)
}
}
elseif ( /chat isin $2 ) {
%cook = $hget(in $+ $1,K)
%chan = $hget(hirc $+ %cook,CHAN)
hadd hirc $+ %cook CHAT $1
litpage $1 $2
set %i 0 | set %N $lines(Webchat/logs/chat $+ %cook $+ .htm)
if ( %N == $null ) { %N = -1 }
while ( %i < %N ) {
inc %i
set %temp $read -nl $+ %i Webchat/logs/chat $+ %cook $+ .htm
sockwrite -nt $1 %temp
}
}
elseif ( /menu isin $2 ) {
; Le menu est le dernier fichier Ă s'afficher
%cook = $hget(in $+ $1,cookie)
%chan = $hget(hirc $+ %cook,CHAN)
if ( $hget(hirc $+ %cook,MENU) == $null ) {
writeirc %cook JOIN %chan
; Ne joindre le chan qu'au 1er appel
}
hadd hirc $+ %cook MENU $1
litpage $1 $2
}
elseif ( /querycontrol isin $2 ) {
%cook = $hget(in $+ $1,cookie)
%texte = $hget(in $+ $1,C)
%K = $hget(in $+ $1,K)
%nick = $hget(hirc $+ %cook,NICK)
%qui = $hget(priv $+ %cook,%K)
if ( %texte == $null ) {
litpage $1 $2
%N = $lines(Webchat/logs/priv $+ %K $+ .htm)
%i = 1
sockwrite -n $1 <script> doc= parent.querychatwin.document;
while ( %i <= %N ) {
%mes = $read -nl $+ %i Webchat/logs/priv $+ %K $+ .htm
%mes = $replace(%mes,\,\\,",\",',\')
sockwrite -n $1 doc.writeln(" $+ %mes $+ ");
inc %i
}
sockwrite -n $1 doc.writeln("<a name=bas></a>");
sockwrite -n $1 doc.writeln("<scr"+"ipt> window.location='#bas'; </scr"+"ipt>"); </script>
sockclose $1 | hfree in $+ $1
}
else {
; texte pas nul
if ( $asc(%texte) != 47 ) {
; cas d'un message simple
writeirc %cook PRIVMSG %qui : $+ %texte
jedis irc $+ %cook %qui %texte
}
else {
if ( $regex(%texte,/^\/me (.+)$/i) == 1 ) {
writeirc %cook PRIVMSG %qui :ACTION $regml(1) $+
jeluidis irc $+ %cook %qui $regml(1)
}
elseif ( $regex(%texte,/^\/ping (\S+)?$/i) == 1 ) {
println irc $+ %cook 1 <font color=red> -> $chr(91) $+ $iif($regml(1) == *,%qui,$regml(1)) $+ $chr(93) PING </font>
writeirc %cook PRIVMSG $iif($regml(1) == *,%qui,$regml(1)) : $+ PING $ctime $+
}
elseif ( $regex(%texte,/^\/(w|whois) (\S+)?$/i) == 1 ) {
writeirc %cook WHOIS $iif($regml(2) == *,%qui,$regml(2))
}
elseif (!$traitement($1,$2,0)) {
sendpriv irc $+ %cook %qui 12 $+ %texte $+ : $liremess(36)
}
; C'est une erreur!
}
litpage $1 $2
sockclose $1 | hfree in $+ $1
}
}
elseif ( /control isin $2 ) {
%cook = $hget(in $+ $1,cookie)
%texte = $hget(in $+ $1,C)
%chan = $hget(hirc $+ %cook,CHAN)
%nick = $hget(hirc $+ %cook,NICK)
if ( %texte != $null && $asc(%texte) != 47 ) {
println irc $+ %cook 1 <font color= $+ %moi face="courier new" size=2> < $+ $prefix(%nick,irc $+ %cook) $+ > $smiley(%texte) </font>
writeirc %cook PRIVMSG %chan : $+ %texte
}
else {
if ($traitement($1,$2,1)) { }
elseif ( $regex(%texte,/^\/kick (\S+) (\S+) ?(.*)$/i) == 1 ) {
if ( $regml(1) == * ) { writeirc %cook KICK %chan $regml(2) : $+ $regml(3) }
else { writeirc %cook KICK $regml(1) $regml(2) : $+ $regml(3) }
}
elseif ( $regex(%texte,/^\/k (\S+) ?(.*)$/i) == 1 ) {
writeirc %cook KICK %chan $regml(1) : $+ $regml(2)
}
elseif ( $regex(%texte,/^\/mode (\S+) (\S+) ?(.*)$/i) == 1 ) {
if ( $regml(1) == * ) { writeirc %cook MODE %chan $regml(2) $regml(3) }
else { writeirc %cook MODE $regml(1) $regml(2) $regml(3) }
%newmode = $regml(2)
}
elseif ( $regex(%texte,/^\/op (.+)$/i) == 1 ) {
writeirc %cook MODE %chan +ooo $regml(1)
}
elseif ( $regex(%texte,/^\/dop (.+)$/i) == 1 ) {
writeirc %cook MODE %chan -ooo $regml(1)
}
elseif ( $regex(%texte,/^\/quit ?(.*)$/i) == 1 ) {
println irc $+ %cook 0 <font color=FF0000> $+ $liremess(45) $+ </font>
println irc $+ %cook 0 <P><CENTER><FONT SIZE=2><A HREF=http://mircscriptsfrfm.com/webchat TARGET=webchat><IMG SRC=../image/mscriptayo.gif BORDER=0 alt=" $+ $liremess(46) $+ ">
println irc $+ %cook 0 $liremess(46) $+ </A></FONT></CENTER><BR><BR>
println irc $+ %cook 0 <FONT COLOR=0000FF>Signoff: %nick (<A TARGET=USERURL HREF="http://www.mircscriptsfrfm.com">http://www.mircscriptsfrfm.com</A>)</FONT>
sockclose $hget(hirc $+ %cook,CHAT)
sockwrite -n $1 <body bgcolor= $+ %fond $+ ><script> parent.fermetout(); </script><center><a href=/ target=_top><h2> $+ $liremess(47 ) $+ </a></h2></center></body> | sockclose $1
writeirc %cook QUIT : $+ $iif($regml(1) == $null,%quitte,$regml(1))
halt
}
elseif ( %texte != $null ) {
println irc $+ %cook 0 <font color=blue> %texte $+ : $liremess(30) </font>
litpage $1 $2
; Commande interdite
}
}
if ( $sock(irc $+ %cook).name == $null ) { sockwrite -n $1 <body><script> parent.fermetout(); alert(" $+ $liremess(55) $+ "); window.top.location.href="/"; </script></body> | sockclose $1 | halt }
if ( $hget(hirc $+ %cook,MENU) != $null && $regex(%texte,/^\/(join #|j |nick [\w-]+|mode #\S+ \S+$)/i) == 0 ) { litpage $1 $2 }
else { hadd hirc $+ %cook CONTROL $1 | .timer 1 5 litpage $1 $2 }
}
else { litpage $1 $2 }
}
alias println {
; socket_irc, indicateur, texte
; indic = 0 si pas d'heure + <br> au bout (pas de </font> )
; indic = 1 si heure + <br> + </font>
; indic = 2 si pas d'heure sans <br> (pas de </font>)
; indic = 3 si heure sans <br> et sans </font> Ă la fin
; si ligne commencant par <script> alors pas de <br>
; rajouter 4 si on veut pas ecrire dans le log
var %cook, %chat, %chan, %nick, %br, %time, %time2, %d2
%d2 = $2
if ( $2 > 3 ) { %d2 = $calc($2 - 4) }
%cook = $right($1,$calc($len($1)-3))
%chat = $hget(hirc $+ %cook,CHAT)
if ( $sock(%chat).name == $null ) return
%chan = $hget(hirc $+ %cook,CHAN)
%nick = $hget(hirc $+ %cook,NICK)
%br = $iif($left($3,4) != <SCR && $2 < 2, <br> )
%time = <font color=darkgray size=2 face="courier new">[ $+ $left($time,5) $+ ]
%time2 = </font>
if ( %d2 == 0 || %d2 == 2 ) { %time = $null | %time2 = $null }
if ( %d2 == 3 ) { %time2 = $null }
sockwrite -nt %chat %time $3- $+ %br %time2
if ( $2 < 4 ) { write Webchat/logs/chat $+ %cook $+ .htm %time $3- $+ %br %time2 }
if ( %br != $null ) {
sockwrite -n %chat <SCRIPT>do_scrolldown();</SCRIPT>
}
}
alias validecontrol {
var %control
%control = $hget(hirc $+ $1,CONTROL)
if ( %control != $null ) {
litpage %control $sock(%control).mark
hdel hirc $+ $1 CONTROL
}
}
alias print {
var %cook, %chat, %chan, %chan2, %nick, %temp, %userhost, %me, %mess, %ism, %liste, %knick, %newnick, %modes, %ctcp, %signe
%cook = $right($1,$calc($len($1)-3))
%chat = $hget(hirc $+ %cook,CHAT)
if ( $sock(%chat).name == $null ) return
%chan = $hget(hirc $+ %cook,CHAN)
%me = $hget(hirc $+ %cook,NICK)
%temp = $2-
if ( $regex(%temp,/^:\S+ 353 \S+ \S (\S+) :(.+)$/) == 1 ) {
%chan2 = $regml(1)
%liste = $regml(2)
%ism = $hget(hirc $+ %cook,LISTE)
println $1 0 <font color=red> $+ $liremess(1,%chan2,%liste) </font>
if ( %chan == %chan2 ) {
if ( %ism == $null ) { hadd hirc $+ %cook LISTE oui | %ism = 1 }
else { %ism = 0 }
addmembers %ism $1 %chan %liste
}
; Chatteurs sur
}
elseif ( $regex(%temp,/^:\S+ 366 \S+ (\S+)/) == 1 && $regml(1) == %chan) {
hdel hirc $+ %cook LISTE
sendmembers 1 $1 $regml(1)
}
elseif ( $regex(%temp,/^:\S+ 332 \S+ \S+ :(.+)$/) == 1 ) {
println $1 2 <font color= $+ %modecol $+ > $+ $liremess(2)
%liste = $regml(1)
printmirc $1 0 $regml(1)
println $1 0 </font>
println $1 6 <script> parent.topic("\
printmirc $1 1 %liste
println $1 6 "); </script>
; ThĂšme canal
}
elseif ( $regex(%temp,/^:\S+ 333 \S+ \S+ (\S+) (\S+)$/) == 1 ) {
println $1 0 <font color= $+ %modecol $+ > $+ $liremess(3,$regml(1),$date($regml(2)),$time($regml(2))) </font>
; ThĂšme mis par
}
elseif ( $regex(%temp,/^:\S+ 311 \S+ (\S+) (\S+) (\S+) \* ?:?(.+)?$/) == 1 ) {
%mess = $smiley($regml(4))
%nick = $regml(1)
println $1 0 -
println $1 0 <font color=black> $+ $liremess(4,$regml(1),$regml(2),$regml(3),%mess) </font>
sendpriv $1 $regml(1) $liremess(4,$regml(1),$regml(2),$regml(3),$regml(4))
; machin is truc@bidule
; 3 raws de /whois
}
elseif ( $regex(%temp,/^:\S+ 319 \S+ (\S+) :(.+)?$/) == 1 ) {
set %canal $regml(2)
%canal = $replace(%canal,~,@,&,@)
println $1 0 <font color=black> $+ $liremess(5,$regml(1),$smiley(%canal)) </font>
sendpriv $1 $regml(1) $liremess(5,$regml(1),$regml(2))
; machin sur les canaux
}
elseif ( $regex(%temp,/^:\S+ 312 \S+ (\S+) (\S+) ?:?(.+)?$/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(6,$regml(1),$regml(2),$regml(3)) </font>
sendpriv $1 $regml(1) $liremess(6,$regml(1),$regml(2),$regml(3))
; machin sur le serveur
}
elseif ( $regex(%temp,/^:\S+ 301 \S+ (\S+) :(.+)?$/) == 1 ) {
%nick = $regml(1)
%mess = $regml(2)
println $1 2 <font color=black> $+ $liremess(31,%nick) </font>
printmirc $1 0 %mess
println $1 0 </font>
sendpriv $1 %nick $liremess(31,%nick) %mess
; machin est away
}
elseif ( $regex(%temp,/^:\S+ 306/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(32) </font>
; vous ĂȘtes away
}
elseif ( $regex(%temp,/^:\S+ 305/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(33) </font>
; vous n'ĂȘtes plus away
}
elseif ( $regex(%temp,/^:\S+ (318|368|323|321)/) == 1 ) {
println $1 0 -
; délimiteur de whois, de ban ou de list
}
elseif ( $regex(%temp,/^:\S+ 421 \S+ (\S+)/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(34,$regml(1)) </font>
; commande inconnue
}
elseif ( $regex(%temp,/^:\S+ 322 \S+ (\S+) (\d+) :?(.+)?/) == 1 ) {
println $1 2 <font color=black><b> $+ $liremess(7,$smiley($regml(1)),$regml(2)) </b> :
printmirc $1 0 $regml(3)
println $1 0 </font>
; canal listé avec son topic
}
elseif ( $regex(%temp,/^:\S+ 472 \S+ \S+ (\S+)/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(8,$regml(1)) </font>
validecontrol %cook
; mode inconnu
}
elseif ( $regex(%temp,/^:\S+ 482 \S+ (\S+)/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(9,$regml(1)) </font>
validecontrol %cook
; pas op!
}
elseif ( $regex(%temp,/^:\S+ 401 \S+ (\S+)/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(10,$regml(1)) </font>
sendpriv $1 $regml(1) $liremess(10,$regml(1))
validecontrol %cook
; no such nick
}
elseif ( $regex(%temp,/^:\S+ 404 \S+ (\S+)/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(11,$regml(1)) </font>
; cannot send
}
elseif ( $regex(%temp,/^:\S+ (471|473|474|475) \S+ (\S+) :?(.+)$/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(12,$regml(2),$regml(3)) </font>
validecontrol %cook
; Les 4 raws anti-join (+b, +i,+l, +k)
}
elseif ( $regex(%temp,/^:\S+ 324 \S+ (\S+) (\S+)/) == 1 ) {
hadd hirc $+ %cook MODES $regml(2)
validecontrol %cook
; Retour de /mode #, qui est effectué lorsqu'on joint un canal ou lors d'un changement de mode
}
elseif ( $regex(%temp,/^:\S+ 433 \S+ (\S+)/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(13,$regml(1)) </font>
validecontrol %cook
; nick dejĂ pris
}
elseif ( $regex(%temp,/^:\S+ 341 \S+ (\S+) (\S+)/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(14,$regml(1),$regml(2)) </font>
; nick vient d'etre invité
}
elseif ( $regex(%temp,/^:\S+ 443 \S+ (\S+) (\S+)/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(15,$regml(1),$regml(2)) </font>
; nick est deja sur le canal
}
elseif ( $regex(%temp,/^:\S+ 367 \S+ \S+ (\S+) (\S+) (\S+)/) == 1 ) {
println $1 0 <font color=black> $+ $liremess(35,$regml(1),$regml(2),$date($regml(3)),$time($regml(3))) </font>
validecontrol %cook
; liste bannis
; Fin du traitement des raws
}
elseif ( $regex(%temp,/^:\S+ (\d+) \S+ ?(.*)/) == 1 && %raws == oui ) {
println $1 0 <font color=red> Raw $regml(1) $+ : $regml(2) </font>
}
elseif ( $regex(%temp,/^:(\S+) join :?(.+)$/i) == 1 ) {
%nick = $gettok($regml(1),1,33)
%userhost = $gettok($regml(1),2,33)
%chan = $regml(2)
if ( %nick != %me ) {
println $1 1 <font color= $+ %join $+ > $+ $liremess(16,%nick,%userhost,%chan) </font>
addmember 0 $1 %chan %nick | addni %nick $1 }
else { println $1 1 <font color= $+ %join $+ > $+ $liremess(17,%chan) </font> }
; join de canal
}
elseif ( $regex(%temp,/^:(\S+) part :?(\S+)( .+)?$/i) == 1 ) {
%nick = $gettok($regml(1),1,33)
%userhost = $gettok($regml(1),2,33)
%chan = $regml(2)
%mess = $regml(3)
%ism = $regsub(%mess,/^ :/,,%mess)
if ( %nick == %me ) {
println $1 1 <font color= $+ %join $+ > $+ $liremess(18,%chan,$iif(%ism == 1,( $+ %mess $+ ) )) </font>
println $1 4 <SCRIPT>remove_all_members(" $+ %chan $+ ")</SCRIPT>
}
else {
println $1 3 <font color= $+ %join $+ > $+ $liremess(19,%nick,%userhost,%chan )
if (%ism == 1) { printmirc $1 0 ( $+ %mess $+ )
}
println $1 0 </font></font>
delmember $1 %chan %nick | remni %nick $1
}
; part de canal
}
elseif ( $regex(%temp,/^:(\S+) quit( .+)?$/i) == 1 ) {
%nick = $gettok($regml(1),1,33)
%userhost = $gettok($regml(1),2,33)
%mess = $regml(2)
%ism = $regsub(%mess,/^ :/,,%mess)
println $1 3 <font color= $+ %quit $+ > $+ $liremess(20,%nick,%userhost)
if (%ism == 1) { printmirc $1 0 ( $+ %mess $+ )
}
println $1 0 </font></font>
delmember $1 %chan %nick | remni %nick $1
; nick a quitté
}
elseif ( $regex(%temp,/^:(\S+) kick (\S+) (\S+)( .+)?$/i) == 1 ) {
%nick = $gettok($regml(1),1,33)
%userhost = $gettok($regml(1),2,33)
%chan = $regml(2)
%knick = $regml(3)
%mess = $regml(4)
%ism = $regsub(%mess,/^ :/,,%mess)
if ( %knick == %me ) {
println $1 3 <b><font color= $+ %kick $+ > $+ $liremess(21,%nick) </b>
if (%ism == 1) { printmirc $1 0 ( $+ %mess $+ ) }
println $1 0 </font></font>
println $1 4 <SCRIPT>remove_all_members(" $+ %chan $+ ")</SCRIPT>
}
else {
println $1 3 <font color= $+ %kick $+ > $+ $liremess(22,%knick,%nick)
if (%ism == 1) { printmirc $1 0 ( $+ %mess $+ ) }
println $1 0 </font></font>
delmember $1 %chan %knick | remni %knick $1
}
; got kicked
}
elseif ( $regex(%temp,/^:(\S+) privmsg (\S+) :(.*)$/i) == 1 ) {
%nick = $gettok($regml(1),1,33)
%userhost = $gettok($regml(1),2,33)
%chan = $regml(2)
%mess = $regml(3)
if ( $asc(%chan) == 35 || $asc(%chan) == 38 ) {
; Cas public
if ($regsub(%mess,/^action/i,,%mess) == 1 ) {
; Cas du /me
%mess = $left(%mess,$calc($len(%mess)-1))
println $1 3 <font color= $+ %action face="courier new" size=2> * $prefix(%nick,$1)
printmirc $1 0 %mess
println $1 0 </font></font>
}
elseif ($regsub(%mess,/^([^ ]+)/,,%mess) == 1 ) {
; Cas du /ctcp canal
%mess = $left(%mess,$calc($len(%mess)-1))
%ctcp = $regml(1)
if ( %ctcp == PING ) { gereping $1 %nick %mess | %mess = $null }
elseif ( %ctcp == version ) { gereversion $1 %nick %mess }
println $1 3 <font color=red face="courier new" size=2> $chr(91) $+ $prefix(%nick,$1) $+ : $+ %chan $upper(%ctcp) $+ $chr(93)
printmirc $1 0 %mess
println $1 0 </font></font>
}
else {
println $1 3 <font color= $+ %reg face="courier new" size=2> < $+ $prefix(%nick,$1) $+ >
printmirc $1 0 %mess
println $1 0 </font></font> }
}
else {
; Cas privé
if ($regsub(%mess,/^action/i,,%mess) == 1 ) {
; Cas du /me
%mess = $left(%mess,$calc($len(%mess)-1))
if ( %echo == oui ) {
println $1 3 <font color= $+ %action face="courier new" size=2> * $+ %nick $+ *
printmirc $1 0 %mess
println $1 0 </font></font>
}
ilmedit $1 %nick %mess
}
elseif ($regsub(%mess,/^([^ ]+)/,,%mess) == 1 ) {
; Cas du /ctcp nick
%mess = $left(%mess,$calc($len(%mess)-1))
%ctcp = $regml(1)
if ( %ctcp == PING ) { gereping $1 %nick %mess | %mess = $null }
elseif ( %ctcp == version ) { gereversion $1 %nick %mess }
println $1 3 <font color=red face="courier new" size=2> $chr(91) $+ %nick $upper(%ctcp) $+ $chr(93)
printmirc $1 0 %mess
println $1 0 </font></font>
}
else {
if ( %echo == oui ) {
println $1 3 <font color=darkred face="courier new" size=2> * $+ %nick $+ *
printmirc $1 0 %mess
println $1 0 </font></font>
}
ildit $1 %nick %mess
}
}
}
elseif ( $regex(%temp,/^:(\S+) notice (\S+) :(.*)$/i) == 1 ) {
%nick = $gettok($regml(1),1,33)
%userhost = $gettok($regml(1),2,33)
%chan = $regml(2)
%mess = $regml(3)
if ( $asc(%chan) == 35 || $asc(%chan) == 38 ) {
; Notice public
println $1 3 <font color=darkred face="courier new" size=2> - $+ $prefix(%nick,$1) $+ : $+ %chan $+ -
printmirc $1 0 %mess
println $1 0 </font></font>
noticer $1 5- $+ %nick $+ : $+ %chan - %mess
}
else {
; Notice privé
if ($regsub(%mess,/^([^ ]+)/,,%mess) == 1 ) {
%mess = $left(%mess,$calc($len(%mess)-1))
%ctcp = $regml(1)
if ( %ctcp == PING ) { %mess = $gerepreply($1,%nick,%mess) }
println $1 3 <font color=red face="courier new" size=2><b> $chr(91) $+ %nick $upper(%ctcp) reply $+ $chr(93) </b>
printmirc $1 0 %mess
println $1 0 </font></font>
sendpriv $1 %nick 4[ $+ %nick $upper(%ctcp) reply $+ ] %mess
}
else {
println $1 3 <font color=darkred face="courier new" size=2> - $+ %nick $+ -
printmirc $1 0 %mess
println $1 0 </font></font>
noticer $1 5- $+ %nick $+ - %mess
}
}
}
elseif ( $regex(%temp,/^:(\S+) mode (\S+) (\S+)( .+)?$/i) == 1 ) {
%nick = $gettok($regml(1),1,33)
%userhost = $gettok($regml(1),2,33)
%chan = $regml(2)
%modes = $regml(3)
%liste = $regml(4)
%liste = $right(%liste,$calc($len(%liste)-1))
println $1 1 <font color= $+ %modecol $+ > $+ $liremess(23,%nick,%modes,%liste) </font>
println $1 4 $domodes(%chan,%modes,%liste,$1)
; changement de mode
}
elseif ( $regex(%temp,/^:(\S+) nick :(\S+)/i) == 1 ) {
%nick = $gettok($regml(1),1,33)
%userhost = $gettok($regml(1),2,33)
%newnick = $regml(2)
if ( %newnick == %me ) {
println $1 1 <font color= $+ %cnick $+ > $+ $liremess(24,%newnick) </font>
validecontrol %cook
}
else {
println $1 1 <font color= $+ %cnick $+ > $+ $liremess(25,%nick,%newnick) </font>
}
changepriv $1 %nick %newnick
%signe = $signe(%nick,$1) | remni %nick $1 | addni %signe $+ %newnick $1
%nick = $replace(%nick,\,\\)
%nick = $replace(%nick,",\")
%newnick = $replace(%newnick,\,\\)
%newnick = $replace(%newnick,",\")
println $1 4 <SCRIPT> change_member(" $+ %chan $+ "," $+ %nick $+ "," $+ %newnick $+ " $+ ) </SCRIPT>
; changement de nick
}
elseif ( $regex(%temp,/^:(\S+) topic (\S+) :(.+)?$/i) == 1 ) {
%nick = $gettok($regml(1),1,33)
%userhost = $gettok($regml(1),2,33)
%chan = $regml(2)
%liste = $regml(3)
println $1 3 <font color= $+ %modecol $+ > $+ $liremess(26,%nick)
printmirc $1 0 %liste
println $1 0 </font></font>
println $1 6 <script> parent.topic("\
printmirc $1 1 %liste
println $1 6 "); </script>
; change le thĂšme
}
elseif ( $regex(%temp,/^:(\S+) invite \S+ (\S+)?$/i) == 1 ) {
%nick = $gettok($regml(1),1,33)
%userhost = $gettok($regml(1),2,33)
%chan = $regml(2)
println $1 1 <font color= $+ %cnick $+ > $+ $liremess(27,%nick,$smiley(%chan)) </font>
; invitation
}
}
alias domodes {
; canal, modes, liste
var %i, %N, %modes, %c, %temp, %nick
%N = $gettok($3-,0,32)
%i = 1
%modes = $sepmode($2)
%temp = <SCRIPT>
while ( %i <= %N ) {
%c = $mid(%modes,$calc(%i * 2 - 1),2)
%nick = $gettok($3-,%i,32)
%nick = $replace(%nick,\,\\)
%nick = $replace(%nick,",\")
if ( %c == +o ) { set %temp %temp $+ add_op(" $+ $1 $+ "," $+ %nick $+ "); | remni %nick $4 | addni @ $+ %nick $4 }
elseif ( %c == -o ) { set %temp %temp $+ remove_op(" $+ $1 $+ "," $+ %nick $+ "); | remni %nick $4 | addni %nick $4 }
elseif ( %c == +h ) { set %temp %temp $+ add_he(" $+ $1 $+ "," $+ %nick $+ ");
if ($signe(%nick,$4) != @ ) { remni %nick $4 | addni % $+ %nick $4 } }
elseif ( %c == -h ) { set %temp %temp $+ remove_he(" $+ $1 $+ "," $+ %nick $+ ");
if ($signe(%nick,$4) != @ ) { remni %nick $4 | addni %nick $4 } }
elseif ( %c == +v ) { set %temp %temp $+ add_vo(" $+ $1 $+ "," $+ %nick $+ ");
if ($signe(%nick,$4) != @ && $signe(%nick,$4) != % ) { remni %nick $4 | addni + $+ %nick $4 } }
elseif ( %c == -v ) { set %temp %temp $+ remove_vo(" $+ $1 $+ "," $+ %nick $+ ");
if ($signe(%nick,$4) != @ && $signe(%nick,$4) != % ) { remni %nick $4 | addni %nick $4 } }
inc %i
}
%temp = %temp </SCRIPT>
return %temp
}
alias addmembers {
%cook = $right($2,$calc($len($2)-3))
var %N = $gettok($4-,0,32)
var %i = 1
if ( $1 == 1 ) { dline -l @chat $+ %cook 1- }
while ( %i <= %N ) {
aline -l @chat $+ %cook $gettok($4-,%i,32)
inc %i
}
}
alias sendmembers {
; reset, socket, canal, liste nicks
var %temp, %i, %N, %nick, %op
var %cook = $right($2,$calc($len($2)-3))
%temp = <SCRIPT> remove_all_members(" $+ $3 $+ ");
%N = $line(@chat $+ %cook,0,1)
%i = 1
while ( %i <= %N ) {
%nick = $line(@chat $+ %cook,%i,1)
%nick = $replace(%nick,\,\\)
%nick = $replace(%nick,",\")
%nick = $replace(%nick,~,@,&,@)
set %temp %temp $+ app_member(" $+ $3 $+ "," $+ %nick $+ ");
if ( $len(%temp) > 800 ) { %temp = %temp </SCRIPT> | println $2 4 %temp | %temp = <SCRIPT> }
inc %i
}
%temp = %temp </SCRIPT>
println $2 4 %temp
}
alias addmember {
; reset, socket, canal, liste nicks
var %temp, %i, %N, %nick, %op
var %cook = $right($2,$calc($len($2)-3))
%nick = $4
%nick = $replace(%nick,\,\\)
%nick = $replace(%nick,",\")
set %temp <script> add_member(" $+ $3 $+ "," $+ %nick $+ ");
%temp = %temp </SCRIPT>
println $2 4 %temp
}
alias delmember {
; socket, canal, nick
var %temp, %i, %N, %nick, %op, %remop
%nick = $3
%nick = $replace(%nick,\,\\)
%nick = $replace(%nick,",\")
%temp = <SCRIPT> remove_member(" $+ $2 $+ "," $+ %nick $+ "); </SCRIPT>
println $1 4 %temp
}
alias sepmode {
var %N, %temp, %temp1, %temp2, %i
%N = $len($1) | %i = 1 | %temp = + | set %temp1 $null
while ( %i <= %N ) {
%temp2 = $mid($1,%i,1)
if ( %temp2 == + ) %temp = +
elseif ( %temp2 == - ) %temp = -
else %temp1 = %temp1 $+ %temp $+ %temp2
inc %i }
return %temp1
}
alias nettoie /unset %file* %stop* %packet* %pos*
alias ppp sockclose irc*
alias ouvreserv {
var %j, %putain
%cgras = $chr(2)
%csoul = $chr(31)
%cinve = $chr(22)
%ccoul = $chr(3)
%cnorm = $chr(15)
%gras = 0
%souligne = 0
%couleur = 0
%inverse = 0
echo 4 -s *** (Re)Hashing...
set %col white black darkblue darkgreen red darkred darkmagenta orange yellow lightgreen darkcyan cyan blue magenta gray darkgray
chatrehash
%variables = $getvariable(0)
%j = 1
%NVar = $gettok(%variables,0,32)
while ( %j <= %NVar ) {
%putain = $gettok(%variables,%j,32)
hadd -m variable %putain $getvariable(%putain)
inc %j
}
%systemport = $variables(port)
%changechan = $variables(changechan)
%restrict = $variables(chanrestrict)
%changenick = $variables(changenick)
%couleurs = $variables(couleurs)
%bantime = $variables(dureeban)
%writelog = $variables(logs)
%urls = $variables(clickurls)
%raws = $variables(raw)
%nicklist = $variables(listenicks)
%quitte = $variables(quitmess)
%signes = $variables(prefixe)
%echo = $variables(echopriv)
%fond = $variables(backcolor)
%kick = $variables(kickcol)
%join = $variables(joincol)
%quit = $variables(quitcol)
%action = $variables(actioncol)
%moi = $variables(mecol)
%modecol = $variables(modecol)
%cnick = $variables(nickcol)
%reg = $variables(regul)
if ( $regex(%bantime,/^\d+$/) == 0 ) { %bantime = 60 }
elseif ( %bantime < 1 ) { %bantime = 60 }
%N = $lines(Webchat/smiles/smileys.ini)
%i = 1
while (%i <= %N ) {
%rien = $regex($read -nl $+ %i Webchat/smiles/smileys.ini,/^(\S+)\s+(.+)$/)
hadd -m smiles S $+ %i $regml(1)
hadd smiles F $+ %i <img src=../smiles/ $+ $regml(2) $+ >
inc %i
}
hadd smiles N %N
if (!$portfree(%systemport)) { echo 2 -s *** $liremess(48,%systemport) }
else {
socklisten chatsys %systemport | echo 4 -s *** $liremess(49) | window -h @Webchat | titlebar @Webchat (Ne pas fermer cette fenĂȘtre)
}
}
alias fermeserv {
.timer off | sockclose irc* | sockclose web* | sockclose chatsys | nettoie | echo 4 -s *** $liremess(50)
}
on 1:load: { if ($Version < 6.01) { echo 2 -a *** You must have mirc 6.01 or more to use this addon. (Download mirc on www.mirc.co.uk) | .timerunl 1 1 /unload -rs webchat.mrc | halt }
unload -rs script.mrc
installe
}
alias installe {
var %reponse
%reponse = $?!="Would you like to install the french version?"
if ( %reponse == $true ) {
.copy -o Webchat/franco/*.* Webchat/
.disable #anglo
.enable #franco
echo 4 -s L'installation est terminée!
echo 4 -s Lis le fichier d'aide aide.txt pour toute question concernant cet addon
echo 4 -s et pense a modifier le fichier config.ini. VoilĂ :)
}
else {
.copy -o Webchat/anglo/*.* Webchat/
.disable #franco
.enable #anglo
echo 4 -s Installation complete!
echo 4 -s Read the file help.txt in the webchat folder for any question regarding this addon
echo 4 -s and don't forget to modify the file config.ini. Enjoy :)
}
}
on 1:start: {
echo 12 -s Proxy Web Chat v 2.75 bilingual version - by Averell (2003-2006)
}
#franco off
menu menubar {
Proxy Web Chat
.Ouvrir proxy: ouvreserv
.Fermer proxy: fermeserv
.Configuration: run Webchat/config.ini
.Aide: run Webchat/aide.txt
}
#franco end
#anglo on
menu menubar {
Proxy Web Chat
.Open proxy: ouvreserv
.Close proxy: fermeserv
.Configuration: run Webchat/config.ini
.Help: run Webchat/help.txt
}
#anglo end
alias printmirc {
var %exp, %rien, %texte, %html, %temp
var %cook, %chat, %chan, %nick, %br, %time, %time2, %i, %N
var %putain = />\s/g
; $2 = 0 en mode html, 1 en mode javascript , 2 pour ecrire dans tous les logs privés
; >2 en mode privé (log sur %cook)
%cook = $right($1,$calc($len($1)-3))
%chat = $hget(hirc $+ %cook,CHAT)
if ( $sock(%chat).name == $null ) return
%temp = $replace($3-,$chr(36),$chr(27),\,$chr(28))
%texte = $smiley(%temp)
if (%couleurs != oui ) { %texte = $strip(%texte) }
%exp = /(||||)(\d+)?(,\d+)?/e
while ( $regex(%texte,%exp) == 1 ) {
if ($len(%texte) > 500 ) {
%html = $left(%texte,$calc($regml(1).pos - 1))
%texte = $right(%texte,$calc($len(%texte) - $len(%html)))
%rien = $regsub(%html,/> /g,> ,%html)
if ( %html != $null ) {
%html = $replace(%html,$chr(27),$chr(36),$chr(28),\)
if ( $2 != 0 ) {
%html2 = %html
%html = $replace(%html,\,\\,",\")
%html = %html $+ \
if ( $2 > 2 ) { write Webchat/logs/priv $+ $2 $+ .htm %html2 }
elseif ($2 == 2 ) {
%N = $hget(id $+ %cook,N)
%i = 1
while ( %i <= %N ) {
write Webchat/logs/priv $+ $hget(id $+ %cook,C $+ %i) $+ .htm %texte2
inc %i
}
}
}
println $1 $iif($2 == 0,2,6) %html
}
}
%rien = $regsub(%texte,%exp,$traitemirc($regml(1),$regml(2),$regml(3)),%texte)
}
%rien = $regsub(%texte,/> /g,> ,%texte)
%texte = %texte $+ $normal
%texte = $replace(%texte,$chr(27),$chr(36),$chr(28),\)
if ( $2 != 0 ) {
%texte2 = %texte
%texte = $replace(%texte,\,\\,",\")
%texte = %texte $+ \
if ( $2 > 2 ) { write Webchat/logs/priv $+ $2 $+ .htm %texte2 }
elseif ($2 == 2 ) {
%N = $hget(id $+ %cook,N)
%i = 1
while ( %i <= %N ) {
write Webchat/logs/priv $+ $hget(id $+ %cook,C $+ %i) $+ .htm %texte2
inc %i
}
}
}
println $1 $iif($2 == 0,2,6) %texte
}
alias couleur {
var %supp, %font, %d2, %rien, %exp, %S, %un, %deux
%exp = /^,/
if ($1 == $null && $2 == $null) {
%S = $null
%i = 0
while ( %i < %couleur ) { %S = %S $+ </font> | inc %i }
set %couleur 0
return %S
}
%font = $iif(%couleur > 0,</font>)
%font = $null
inc %couleur
if ($2 == $null && $asc($1) != 44) { return %font $+ <font color= $+ $gettok(%col,$calc(($1 % 16) + 1),32) $+ > }
%d2 = $iif($asc($1) == 44,$1,$2)
%rien = $regsub(%d2,%exp,,%d2)
%supp = $iif($1 != $null, color= $+ $gettok(%col,$calc(($1 % 16) + 1),32) $+ >,>)
return %font $+ <font style="background-color: $+ $gettok(%col,$calc((%d2 % 16) + 1),32) $+ ;" %supp
}
alias gras {
%gras = $calc(1 - %gras)
return $iif(%gras > 0,<b>,</b>)
}
alias souligne {
%souligne = $calc(1 - %souligne)
return $iif(%souligne > 0,<u>,</u>)
}
alias inverse {
%inverse = $calc(1 - %inverse)
if ( %inverse > 0 ) { return <font style="background-color:black;" color=white> }
else return </font>
}
alias normal {
var %i, %S
%i = 0
%S = $null
while ( %i < $calc(%couleur + %inverse) ) { %S = %S $+ </font> | inc %i }
if ( %gras > 0 ) { %S = %S $+ </b> }
if ( %souligne > 0 ) { %S = %S $+ </u> }
%gras = 0
%souligne = 0
%couleur = 0
%inverse = 0
return %S
}
alias traitemirc {
; return
if ($1 == %cgras) { return $gras $+ $2 $+ $3 }
elseif ($1 == %csoul) { return $souligne $+ $2 $+ $3 }
elseif ($1 == %cinve) { return $inverse $+ $2 $+ $3 }
elseif ($1 == %cnorm) { return $normal $+ $2 $+ $3 }
elseif ($1 == %ccoul) { return $couleur($2, $3) }
}
alias smiley {
var %i, %N
var %exp1 = /(http:\/\/\S+)/e
var %exp2 = /(^|[^a-zA-Z\/])(www\.\S+)/e
var %exp3 = /(^|[ @+%*])(#\S+)/
var %texte = $1-
%texte = $replace(%texte,&,&)
%texte = $replace(%texte,<,<)
%texte = $replace(%texte,$chr(36),$chr(26))
%N = $hget(smiles,N)
%i = 1
while ( %i <= %N) {
%texte = $replace(%texte,$hget(smiles,S $+ %i),$hget(smiles,F $+ %i) )
inc %i
}
if ( %urls == oui ) {
while ( $regex(URL,%texte,%exp1) == 1 && $len(%texte) < 600) {
%rien = $regsub(URL,%texte,%exp1,$urleval($regml(URL,1)),%texte)
}
while ( $regex(URL,%texte,%exp2) == 1 && $len(%texte) < 600) {
%rien = $regsub(URL,%texte,%exp2, $regml(URL,1) $+ $urleval($regml(URL,2)),%texte)
}
%texte = $replace(%texte,$chr(29),http,$chr(30),www)
}
if ( %changechan == oui && %restrict != oui ) {
while ( $regex(URL,%texte,%exp3) == 1 && $len(%texte) < 600) {
%rien = $regsub(URL,%texte,%exp3,$regml(URL,1) $+ $chaneval($regml(URL,2)),%texte)
}
%texte = $replace(%texte,$chr(29),$chr(35))
}
%texte = $replace(%texte,$chr(26),$chr(36))
return %texte
}
alias chaneval {
var %chan = $replace($1,$chr(35),% $+ 23)
%chan = $replace(%chan,&,% $+ 26)
%chan = $replace(%chan,+,% $+ 2B)
var %texte = <a href=/html/menu.html?C= $+ %chan target=menu> $+ $1 $+ </a>
return $replace(%texte,$chr(35),$chr(29))
}
alias urleval {
var %h = $iif($left($1,4) != http,http://)
var %d1 = $strip($1-)
%rien = $regsub(URL,%d1,/(\W+)$/,,%d1)
var %texte = <a href= $+ %h $+ %d1 target=_blank> $+ %d1 $+ </a> $+ $regml(URL,1)
return $replace(%texte,http,$chr(29),www,$chr(30))
}
alias chatrehash {
var %N, %i, %x, %c
%c = 1
%N = $lines(Webchat/config.ini)
%i = 1
while ( %i <= %N ) {
%x = $read -nl $+ %i Webchat/config.ini
if ( %x != $null && $left(%x,1) != ; ) {
hadd -m config C $+ %c %x | hadd config C %c
inc %c
}
inc %i
}
}
alias serveurs {
var %temp, %N, %i, %j
%temp = $null
%N = $hget(config,C)
%i = 1
%j = 1
while ( %i <= %N ) {
if ( $regex($hget(config,C $+ %i),/^(\w[^:]*):\s*([\w.-]+):(\d+)/)) {
if ( $1 == 0 ) { %temp = %temp <option value= $+ %j $+ > $+ $regml(1) }
elseif ( $1 == %j ) { %temp = $regml($calc($2 + 0)) }
inc %j
}
inc %i
}
return %temp
}
alias canaux {
var %temp, %N, %i, %j
%temp = $null
%N = $hget(config,C)
%i = 1
%j = 1
while ( %i <= %N ) {
if ( $regex($hget(config,C $+ %i),/^(#\S+)/)) {
if ( $1 == 0 ) { %temp = %temp <option> $+ $regml(1) }
elseif ( $1 == %j ) { %temp = $regml(1) }
inc %j
}
inc %i
}
return %temp
}
alias slaps {
var %temp, %N, %i, %j
%temp = <option> Liste d'actions
%N = $hget(config,C)
%i = 1
%j = 0
while ( %i <= %N ) {
if ( $regex($hget(config,C $+ %i),/^\.([^:]+):(.+)$/)) {
%temp = <option value=" $+ $subst(0,$regml(2)) $+ "> $+ $subst(0,$regml(1))
inc %j
hadd -m _slaps C $+ %j %temp
; if ( $1 == %j ) { return %temp }
}
inc %i
}
hadd _slaps N %j
return %j
}
alias commandes {
var %temp, %N, %i, %j
%temp = <option> Commandes
%N = $hget(config,C)
%i = 1
%j = 0
while ( %i <= %N ) {
if ( $regex($hget(config,C $+ %i),/^\/([^:]+): *(.+)$/)) {
%temp = <option value=' $+ $subst(0,$regml(2)) $+ '> $+ $subst(0,$regml(1))
inc %j
hadd -m _commandes C $+ %j %temp
; if ( $1 == %j ) { return %temp }
}
inc %i
}
hadd _commandes N %j
return %j
}
alias getvariable {
var %temp, %N, %i,%truc
%N = $hget(config,C)
%temp = $null
%i = 1
while ( %i <= %N ) {
if ( $regex(VAR,$hget(config,C $+ %i),/^\$([^=]+)=(.+)$/)) {
%truc = $gettok($regml(VAR,1),1,32)
if ($1 == 0) { %temp = %temp %truc }
if ( $1 == %truc ) { return $subst(0,$regml(VAR,2)) }
}
inc %i
}
if ($1 == 0) { return %temp }
}
alias variables {
return $hget(variable,$1)
}
alias joindreserv {
var %local, %distant, %ircport, %irchost
%irchost = $variables(irchost)
%ircport = $variables(ircport)
%local = <script> document.writeln('<B>IRC CLIENTS: '+document.location.hostname+' <i>port %ircport $+ </i></b><br>'); </script>
%distant = <B>IRC CLIENTS: %irchost <i>port %ircport $+ </i></b><br>
if ( %irchost == $null || %irchost == null ) { return }
return $iif(%irchost == localhost || %irchost == 127.0.0.1,%local,%distant)
}
alias gereping {
sockwrite -nt $1 NOTICE $2 :PING $3 $+
}
alias gereversion {
sockwrite -nt $1 NOTICE $2 :VERSION $variables(version) $+
}
alias gerepreply {
return $duration($calc($ctime - $3))
}
alias liremess {
var %temp
var %d1- = $chr(36) $+ 1-
var %d1 = $chr(36) $+ 1
var %d2- = $chr(36) $+ 2-
var %d2 = $chr(36) $+ 2
var %d3- = $chr(36) $+ 3-
var %d3 = $chr(36) $+ 3
var %d4- = $chr(36) $+ 4-
var %d4 = $chr(36) $+ 4
%temp = $read -nl $+ $1 Webchat/messages.ini
%temp = $replace(%temp,%d1-,$2-,%d1,$2,%d2-,$3-,%d2,$3,%d3-,$4-,%d3,$4,%d4-,$5-,%d4,$5)
return %temp
}
alias assigne {
var %cook = $right($1,$calc($len($1)-3))
var %size = $hget(id $+ %cook,N)
if ( %size == $null ) { %size = 0 }
; socket, nick . Retourne l'id
var %x = $hget(priv $+ %cook,$2)
if ( %x == $null ) {
%x = $ticks
hadd priv $+ %cook $2 %x
hadd priv $+ %cook %x $2
inc %size
hadd id $+ %cook N %size
hadd id $+ %cook C $+ %size %x
}
return %x
}
alias changepriv {
var %cook2 = $right($1,$calc($len($1)-3))
var %cook = $hget(priv $+ %cook2,$2)
if ( %cook == $null ) { return }
hdel priv $+ %cook2 $2
hadd priv $+ %cook2 $3 %cook
hadd priv $+ %cook2 %cook $3
write Webchat/logs/priv $+ %cook $+ .htm <font color= $+ %cnick $+ >* $2 $liremess(37) $3 </font><br>
}
alias sendpriv {
var %cook2 = $right($1,$calc($len($1)-3))
if ($hget(priv $+ %cook2,$2) == $null ) { return }
var %cook = $assigne($1,$2)
println $1 6 <script> parent.jedis( $+ %cook $+ ,"\
printmirc $1 %cook $3-
println $1 6 "); </script>
write Webchat/logs/priv $+ %cook $+ .htm <br>
}
alias ildit {
var %time = $left($time,5)
var %cook = $assigne($1,$2)
var %nick = $replace($2,\,\\,",\")
println $1 6 <script> parent.ildit(" $+ %nick $+ ", $+ %cook $+ ,"<font face='courier new' size=2 color= $+ %reg $+ ><font color=darkgray>[ $+ %time $+ ]</font> <b>< $+ %nick $+ ></b> \
write Webchat/logs/priv $+ %cook $+ .htm <font face='courier new' size=2 color= $+ %reg $+ ><font color=darkgray>[ $+ %time $+ ]</font> <b>< $+ $2 $+ ></b>
printmirc $1 %cook $3-
println $1 6 </font>"); </script>
write Webchat/logs/priv $+ %cook $+ .htm </font><br>
}
alias ilmedit {
var %time = $left($time,5)
var %cook = $assigne($1,$2)
var %nick = $replace($2,\,\\,",\")
println $1 6 <script> parent.ildit(" $+ %nick $+ ", $+ %cook $+ ,"<font face='courier new' size=2><font color=darkgray>[ $+ %time $+ ]</font><font color= $+ %action $+ > * %nick \
write Webchat/logs/priv $+ %cook $+ .htm <font face='courier new' size=2><font color=darkgray>[ $+ %time $+ ]</font><font color= $+ %action $+ > * $2
printmirc $1 %cook $3-
println $1 6 </font></font>"); </script>
write Webchat/logs/priv $+ %cook $+ .htm </font></font><br>
}
alias jedis {
var %time = $left($time,5)
var %cook = $assigne($1,$2)
var %cook2 = $right($1,$calc($len($1)-3))
var %me = $hget(hirc $+ %cook2,NICK)
println $1 6 <script> parent.jedis( $+ %cook $+ ,"<font face='courier new' size=2><font color=darkgray>[ $+ %time $+ ]</font> <b><font color= $+ %moi $+ >< $+ %me $+ ></b> \
write Webchat/logs/priv $+ %cook $+ .htm <font face='courier new' size=2><font color=darkgray>[ $+ %time $+ ]</font> <font color= $+ %moi $+ ><b>< $+ %me $+ ></b>
printmirc $1 %cook $3-
println $1 6 </font></font>"); </script>
write Webchat/logs/priv $+ %cook $+ .htm </font></font><br>
}
alias jeluidis {
var %time = $left($time,5)
var %cook = $assigne($1,$2)
var %cook2 = $right($1,$calc($len($1)-3))
var %me = $hget(hirc $+ %cook2,NICK)
println $1 6 <script> parent.jedis( $+ %cook $+ ,"<font face='courier new' size=2><font color=darkgray>[ $+ %time $+ ]</font><font color= $+ %moi $+ > * %me \
write Webchat/logs/priv $+ %cook $+ .htm <font face='courier new' size=2><font color=darkgray>[ $+ %time $+ ]</font><font color= $+ %moi $+ > * %me
printmirc $1 %cook $3-
println $1 6 </font></font>"); </script>
write Webchat/logs/priv $+ %cook $+ .htm </font></font><br>
}
alias noticer {
var %time = $left($time,5)
var %cook
var %cook2 = $right($1,$calc($len($1)-3))
var %i = 1
var %N = $hget(id $+ %cook2,N)
while ( %i <= %N ) {
%cook = $hget(id $+ %cook2,C $+ %i)
write Webchat/logs/priv $+ %cook $+ .htm <font face='courier new' size=2><font color=darkgray>[ $+ %time $+ ]</font>
inc %i
}
println $1 6 <script> parent.notice("<font face='courier new' size=2><font color=darkgray>[ $+ %time $+ ]</font> \
printmirc $1 2 $2-
println $1 6 </font>"); </script>
%i = 1
while ( %i <= %N ) {
%cook = $hget(id $+ %cook2,C $+ %i)
write Webchat/logs/priv $+ %cook $+ .htm </font><br>
inc %i
}
}
alias addni {
var %cook = $right($2,$calc($len($2)-3))
var %NomWin @chat $+ %cook
aline -l %NomWin $1
}
alias remni remnick $1 $2 | remnick @ $+ $1 $2 | remnick % $+ $1 $2 | remnick + $+ $1 $2
alias remnick {
var %cook = $right($2,$calc($len($2)-3))
var %NomWin @chat $+ %cook
var %i = 1
:next
if ( %i > $line(%NomWin,0,1)) goto fin2
%temp = $line(%NomWin,%i,1))
if ( $1 == %temp ) goto fin
inc %i
goto next
:fin
dline -l %NomWin %i
:fin2
}
alias signe {
var %cook = $right($2,$calc($len($2)-3))
var %NomWin = @chat $+ %cook
var %i = 1
var %temp, %signe, %signe1, %c
set %signe $null
set %signe1 $null
:next
if ( %i > $line(%NomWin,0,1)) goto fin2
%temp = $line(%NomWin,%i,1))
%c = $left(%temp,1)
if ( %c != @ && %c != % && %c != + ) { set %nick1 %temp | set %signe1 $null }
else { set %signe1 %c | set %nick1 $right(%temp,$calc($len(%temp) - 1)) }
if ( $1 == %nick1 ) goto fin
inc %i
goto next
:fin
%signe = %signe1
:fin2
return %signe
}
alias isonchat {
var %cook = $right($2,$calc($len($2)-3))
var %NomWin = @chat $+ %cook
var %i = 1
var %temp, %nick1, %c
set %trouve $false
:next
if ( %i > $line(%NomWin,0,1)) goto fin2
%temp = $line(%NomWin,%i,1))
%c = $left(%temp,1)
if ( %c != @ && %c != % && %c != +) { set %nick1 %temp }
else { set %nick1 $right(%temp,$calc($len(%temp) - 1)) }
if ( $1 == %nick1 ) { set %trouve $true | goto fin2 }
inc %i
goto next
:fin2
return %trouve
}
alias prefix return $iif(%signes == oui,$signe($1,$2) $+ $1,$1)