aIRC — File Browser
aIRCv0.8.69 / aIRCv0.8.69 / addons / irc1.mrc
irc1.mrc — 27.05 KB — Download this file
;/**********************************************************************
; *
; * aIRC
; * IRC Client file 1
; *
; **********************************************************************/
;
;
;
alias _irc.load { }
alias _irc.unload {
if ($sock(IRC*)) || ($sock(DCCSEND*)) || ($sock(DCCÂ SEND*)) || ($sock(DCCCHAT*)) || ($sock(DCCÂ CHAT*)) || ($sock(DCCÂ GET*)) {
error.a Please close all IRC and DCC sessions before you try to uninstall the IRC Client.
return 1
}
}
alias _irc.addonver { return 1.0 }
dialog _irc.dialog {
size -1 -1 115 157
title "IRC Client [/irc]"
option dbu
box "Server",1000,5 5 105 55
text "Server:",1001,10 15 25 10
edit "",1002,35 13 70 10,autohs
text "Port:",1003,10 30 25 10
edit "",1004,35 28 70 10,autohs
text "Password:",1005,10 45 25 10
edit "",1006,35 43 70 10,autohs
box "User",1010,5 65 105 70
text "&Full Name:",1011,10 75 25 10
edit "",1012,35 73 70 10,autohs
text "E-&Mail:",1013,10 90 25 10
edit "",1014,35 88 70 10,autohs
text "&Nickname:",1015,10 105 25 10
edit "",1016,35 103 70 10,autohs
text "&Alt Nick:",1017,10 120 25 10
edit "",1018,35 118 70 10,autohs
button "Help",2991,5 140 30 15,disable
button "Connect!",2992,43 140 30 15,ok
button "Cancel",2993,80 140 30 15,cancel
}
alias _irc.dialog { _dialog -m _irc.dialog _irc.dialog }
ON *:DIALOG:_irc.dialog:*:*:{
if ($devent == init) { _mdx.init $_icofile(ircclient.ico,$scriptdir) }
elseif ($devent == sclick) && ($did == 2992) {
if ($did(2992).enabled) {
var %d = $dname,%server = $did(%d,1002,1),%port = $did(%d,1004,1),%pass = $did(%d,1006,1),%name = $did(%d,1012,1),%email = $did(%d,1014,1),%nick = $did(%d,1016,1),%anick = $did(%d,1018,1)
_dummy $_irc.connect(%server,%port,%pass,%name,%email,%nick,%anick)
}
else { halt }
}
_irc.rdialog
}
alias irc {
var %d = _irc.dialog,%server,%port,%pass,%name,%email,%nick,%anick,%tnick1,%tnick2
_getlocalip irc $1-
if ($result) { return }
%server = $1
tokenize 32 $2 $3-
if ($_not($_isint($1))) { tokenize 32 $int($_minio(5,11)) $1- }
%port = $1
%nick = $2
%name = $remove($_mini(mirc,user),$chr(9))
if (%name == $null) { %name = airc }
if ($_mini(mirc,email) != $null) { %email = $ifmatch }
else { %email = airc@mail.com }
%tnick1 = $mnick
%tnick2 = $anick
if (%nick != $null) {
if (%tnick1 != %nick) { %anick = %tnick1 }
else { %anick = %tnick2 }
_dummy $_irc.connect(%server,%port,%pass,%name,%email,%nick,%anick)
}
else {
if (%server == $null) { %server = $gettok($_mini(mirc,host),2,58) }
%nick = %tnick1
%anick = %tnick2
_dialog -m %d %d
did -o %d 1002 1 %server
did -o %d 1004 1 %port
did -o %d 1006 1 %pass
did -o %d 1012 1 %name
did -o %d 1014 1 %email
did -o %d 1016 1 %nick
did -o %d 1018 1 %anick
_irc.rdialog
}
}
alias _irc.connect {
var %server = $1,%port = $2,%pass = $3,%name = $remove($4,$chr(9)),%email = $5,%nick = $6,%anick = $7,%i = 1,%tmp
if (%pass == $null) { %pass = $null }
if ($remove(%email,$chr(9)) != $null) { %email = $ifmatch }
else { %email = airc@mail.com }
if (%name == $null) { %name = airc }
while ($sock(IRC [ $+ [ %i ] ] )) { inc %i }
if ($window(@Status [ $+ [ %i ] ] ) == $null) { _irc.openwin status @Status $+ %i }
echo2 $colour(info) -it @Status $+ %i $^*** Connecting to %server ( $+ %port $+ )
%tmp = +irc.*. $+ %i
unset % [ $+ [ %tmp ] ]
sockopen IRC $+ %i %server %port
sockmark IRC $+ %i %nick $+ $chr(9) $+ %server $+ $chr(9) $+ $null $+ $chr(9) $+ 0 $+ $chr(9) $+ $iif(%pass != $null,%pass,$null) $+ $chr(9) $+ %name $+ $chr(9) $+ $iif(%email != $null,%email,%email) $+ $chr(9) $+ $iif(%anick != $null,%anick,$null) $+ $chr(9) $+ _
}
alias _irc.rdialog {
var %d = _irc.dialog
if ($dialog(%d) == $null) { return }
if ($_not($_ishost($did(%d,1002,1)))) || ($_not($_isint($did(%d,1004,1)))) || ($_text($did(%d,1012,1)) == $null) || ($_text($did(%d,1014,1)) == $null) || ($_text($did(%d,1016,1)) == $null) { did -b %d 2992 }
else { did -e %d 2992 }
}
alias _irc.ircnum {
if ($sockname) && ($2 == $null) { return $remove($gettok($sockname,1-2,160),$remove($gettok($sockname,1-2,160),1,2,3,4,5,6,7,8,9)) }
if (@Status* iswm $1) { return $remove($1,@Status) }
if (@CH_* iswm $1) { return $remove($gettok($1,1,160),@CH_) }
if (@Q_* iswm $1) { return $remove($gettok($1,1,160),@Q_) }
if (@DCCÂ CHAT* iswm $1) { return $remove($gettok($1,1-2,160),@DCCÂ CHAT) }
if (@DCCÂ SEND* iswm $1) { return $remove($gettok($1,1-2,160),@DCCÂ SEND) }
if (@DCCÂ GET* iswm $1) { return $remove($gettok($1,1-2,160),@DCCÂ GET) }
if (@Status* iswm $active) { return $remove($active,@Status) }
if (@CH_* iswm $active) { return $remove($gettok($active,1,160),@CH_) }
if (@Q_* iswm $active) { return $remove($gettok($active,1,160),@Q_) }
if (@DCCÂ CHAT* iswm $active) { return $remove($gettok($active,1-2,160),@DCCÂ CHAT) }
if (@DCCÂ SEND* iswm $active) { return $remove($gettok($active,1-2,160),@DCCÂ SEND) }
if (@DCCÂ GET* iswm $active) { return $remove($gettok($active,1-2,160),@DCCÂ GET) }
}
alias _irc.ircnums {
if ($1) { return IRC $+ $_irc.ircnum($1) }
return IRC $+ $_irc.ircnum
}
alias _irc.active { return $gettok($active,2,160) }
alias _irc.ischan { return $iif(@CH_* iswm $1,1,0) }
alias _irc.isquery { return $iif(@Q_* iswm $1,1,0) }
alias _irc.linick {
if ($fline($2,$1,1,1)) || ($fline($2,+ [ $+ [ $1 ] ] ,1,1)) || ($fline($2,@ [ $+ [ $1 ] ] ,1,1)) || ($fline($2,. [ $+ [ $1 ] ] ,1,1)) { return $ifmatch }
}
alias _irc.Wisowner { return $iif(1.* iswm $line($2,$_irc.linick($1,$2),1),1,0) }
alias _irc.Wisop {
var %t = $line($2,$_irc.linick($1,$2),1)
return $iif(2@* iswm %t || 1.* iswm %t,1,0)
}
alias _irc.Wisvo { return $iif(3+* iswm $line($2,$_irc.linick($1,$2),1),1,0) }
alias _irc.snicks {
if (@CH_* !iswm $active) { return }
if ($sline($active,0) == 0) { return }
if ($sline($active,0) == 1) { return $remove($strip($sline($active,1)),.,@,+) }
var %t = 1,%f
while ($sline($active,%t) != $null) {
%f = %f $ifmatch
inc %t
}
return $replace($remove($strip(%f),.,@,+),$chr(32),$chr(44))
}
alias _irc.chanickopvoice {
var %nick = $1,%chanwin = $2,%flags = _
if ($_irc.linick(%nick,%chanwin)) {
%nick = $strip($line(%chanwin,$ifmatch,1))
if (.* iswm %nick) { %flags = %flags $+ . }
if (@* iswm %nick) { %flags = %flags $+ @ }
if (+* iswm %nick) { %flags = %flags $+ + }
}
return %flags
}
alias _irc.prefixnick {
var %nick = $1,%chanwin = $2
if ($_minio(2,30)) {
if ($_irc.linick(%nick,%chanwin)) { return $strip($line(%chanwin,$ifmatch,1)) }
}
return %nick
}
alias _irc.chanmembers2title {
var %win = $1,%members,%title
if ($window(%win)) {
var %members = $line(%win,0,1),%title = $gettok($window(%win).title,2-,32)
if (%title != $null) && ([+*] * !iswm %title) && ([+*]: * !iswm %title) { titlebar %win [ $+ %members $+ ]: %title }
else { titlebar %win [[ $+ %members $+ ]] %title }
}
}
alias _irc.param { return $_parameter($1,1,IRC Client [/irc],$2,$3,$4) }
alias _irc.busynick { _irc.busynick2 $1 $2 $_parameter($null,0,IRC Client [/irc],1,$remove($2,"),Somebody is using the nick [ $remove($2,") ] <COMMA> please choose another:) }
alias _irc.busynick2 {
if ($3 == $null) { _irc.busynick $1 $2 }
else {
sockwrite -n $1 NICK $3
sockmark $1 $puttok($sock($1).mark,$3,1,9)
}
}
alias _irc.badnick { _irc.badnick2 $1 $2 $_parameter($null,0,IRC Client [/irc],1,$remove($2,"),Invalid nick: [ $remove($2,") ] <COMMA> please choose another:) }
alias _irc.badnick2 {
if ($3 == $null) { _irc.busynick $1 $2 }
else {
sockwrite -n $1 NICK $3
sockmark $1 $puttok($sock($1).mark,$3,1,9)
}
}
alias _irc.sw {
var %sock = IRC $+ $_irc.ircnum
if ($sock(%sock)) {
sockwrite -n %sock $1-
}
}
alias _irc.checkquery {
var %t = @Q_ $+ $_irc.ircnum $+ Â $+ $gettok($1,1,33),%t2
if ($window(%t)) {
if ($2 != $null) {
%t2 = @Q_ $+ $_irc.ircnum $+ Â $+ $2
renwin %t %t2
%:echo = echo2 $colour(nick) -it %t2
%::flags = c
^nick
}
titlebar $iif($2,%t2,%t) ( $+ $gettok($1,2,33) $+ )
}
}
alias _irc.mequit {
var %i = $window(0),%win,%tmp,%ch = @CH_ $+ $1,%qy = @Q_ $+ $1
while (%i) {
%win = $window(%i)
if ($gettok(%win,1,160) == %ch) || ($gettok(%win,1,160) == %qy) {
close -@ %win
}
dec %i
}
%tmp = +irc.*. $+ $1
unset % [ $+ [ %tmp ] ]
.timer $+ %tmp off
%win = @Status $+ $1
var %string
if ($2- != $null) { %string = [[ $+ $2- $+ ]] }
if ($window(%win)) { echo2 $colour(info) -eit %win $^*** Disconnected %string }
else { info.a Disconnected IRC Session $1 %string }
}
alias _irc.mmode {
var %i = 1
tokenize 32 $1 $2 $replace($3-,$chr(44),$chr(32))
while ($gettok($3-,%i,32)) {
_irc.sw MODE $1 $left($2,1) $+ $str($right($2,1),$numtok($gettok($3-, [ %i $+ - $+ [ $calc(%i + 3) ] ] ,32),32)) $gettok($3-, [ %i $+ - $+ [ $calc(%i + 3) ] ] ,32)
inc %i 4
}
}
alias _irc.usermode {
var %win
if ($_not($1)) { tokenize 32 $_irc.ircnum $2- }
if ($_not($_isint($1))) { return }
%win = @Status $+ $1
if ($window(%win) == $null) { return }
return $right($left($gettok($window(%win).title,2,32),-1),-1)
}
;
;;
;
; $_irc.chan(session|0 or $null for autodetect,N/chan).[property]
; properties: topic, mode, key, limit, ial, win
;
alias _irc.chan {
var %chan,%wwildcard,%win,%modes,%m,%tmp,%title,%topic,%members,%tmode
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%wwildcard = @CH_ $+ $1 $+ Â *
if ($2 != $null) {
if ($2 isnum) {
if ($2 <= 0) { return $window(%wwildcard,0) }
else { %win = $window(%wwildcard,$2) }
}
elseif (%wwildcard iswm $2) { %win = $2 }
elseif ($_ischan($2)) { %chan = $2 }
}
elseif (%wwildcard iswm $active) { %win = $active }
if (%chan == $null) && (%win != $null) { %chan = $gettok(%win,2,160) }
%win = @CH_ $+ $1 $+ $chr(160) $+ %chan
if ($window(%win) == $null) { return }
if ($prop == $null) { return %chan }
if ($prop == win) { return %win }
if ($prop == status) { return joined }
if ($prop == ial) { return $false }
%title = $window(%win).title
tokenize 32 %title
%members = $remove($1,[,],:)
if (*]: iswm $1) || ([* !iswm $2) { var %modes,%topic = $2- }
elseif (*]: iswm $2) || (*] iswm $2) { var %modes = $2,%topic = $3- }
elseif (k isincs $2) && (l isincs $2) { var %modes = $2-4,%topic = $5- }
elseif (k isincs $2) || (l isincs $2) { var %modes = $2-3,%topic = $4- }
else { }
if ($prop == topic) { return %topic }
if (*]: iswm %modes) { %modes = $left(%modes,-2) }
elseif (*] iswm %modes) { %modes = $left(%modes,-1) }
if ([+* iswm %modes) { %modes = $right(%modes,-2) }
elseif ([* iswm %modes) { %modes = $right(%modes,-1) }
%tmode = $gettok(%modes,1,32)
%modes = + $+ %tmode $gettok(%modes,2-,32)
if ($prop == mode) {
if (%tmode == $null) { return }
return %modes
}
%m = $gettok(%modes,1,32)
if ($prop == key) {
if (k isincs %m) {
if (l !isincs %m) || ($pos(%m,k) < $pos(%m,l)) { return $gettok(%modes,2,32) }
return $gettok(%modes,3,32)
}
}
if ($prop == limit) {
if (l isincs %m) {
if (k !isincs %m) || ($pos(%m,l) < $pos(%m,k)) { return $gettok(%modes,2,32) }
return $gettok(%modes,3,32)
}
}
}
;
;;
;
; $_irc.query(session|0 or $null for autodetect,N/query).[property]
; properties: address, win
;
alias _irc.query {
var %query,%wwildcard,%win
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%wwildcard = @Q_ $+ $1 $+ Â *
if ($2 != $null) {
if ($2 isnum) {
if ($2 <= 0) { return $window(%wwildcard,0) }
else { %win = $window(%wwildcard,$2) }
}
elseif (%wwildcard iswm $2) { %win = $2 }
else { %query = $2 }
}
elseif (%wwildcard iswm $active) { %win = $active }
if (%query == $null) && (%win != $null) { %query = $gettok(%win,2,160) }
%win = @Q_ $+ $1 $+ $chr(160) $+ %query
if ($window(%win) == $null) { return }
if ($prop == $null) { return %query }
if ($prop == win) { return %win }
if ($prop == address) { return $remove($window(%win).title,$chr(40),$chr(41))) }
}
;
;;
;
; $_irc.chat(session|0 or $null for autodetect,N/chat).[property]
; properties: ip, status, win
;
alias _irc.chat {
var %chat,%wwildcard,%win,%sock1,%sock2
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%wwildcard = @DCCÂ CHAT $+ $1 $+ Â *
if ($2 != $null) {
if ($2 isnum) {
if ($2 <= 0) { return $window(%wwildcard,0) }
else { %win = $window(%wwildcard,$2) }
}
elseif (%wwildcard iswm $2) { %win = $2 }
else { %chat = $2 }
}
elseif (%wwildcard iswm $active) { %win = $active }
if (%chat == $null) && (%win != $null) { %chat = $gettok(%win,3,160) }
%win = @DCCÂ CHAT $+ $1 $+ $chr(160) $+ %chat
if ($window(%win) == $null) { return }
if ($prop == $null) { return %chat }
if ($prop == win) { return %win }
if ($prop == ip) { return $remove($window(%win).title,$chr(40),$chr(41))) }
if ($prop == status) {
%sock1 = $remove(%win,@)
%sock2 = $replace(%sock1,DCCÂ CHAT,DCCCHAT)
if ($sock(%sock2)) { return waiting }
if ($sock(%sock1)) { return active }
return inactive
}
}
;
;;
;
; $_irc.ison(session|0 or $null for autodetect,nick,channel)
;
alias _irc.ison {
var %win
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%win = @CH_ $+ $1 $+ $chr(160) $+ $3
if ($window(%win) == $null) { return 0 }
if ($_irc.linick($2,%win)) { return 1 }
return 0
}
;
;;
;
; $_irc.isowner(session|0 or $null for autodetect,nick,channel)
;
alias _irc.isowner {
var %win
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%win = @CH_ $+ $1 $+ $chr(160) $+ $3
if ($window(%win) == $null) { return 0 }
return $_irc.Wisowner($2,%win)
}
;
;;
;
; $_irc.isop(session|0 or $null for autodetect,nick,channel)
;
alias _irc.isop {
var %win
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%win = @CH_ $+ $1 $+ $chr(160) $+ $3
if ($window(%win) == $null) { return 0 }
return $_irc.Wisop($2,%win)
}
;
;;
;
; $_irc.isvo(session|0 or $null for autodetect,nick,channel)
;
alias _irc.isvo {
var %win
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%win = @CH_ $+ $1 $+ $chr(160) $+ $3
if ($window(%win) == $null) { return 0 }
return $_irc.Wisvo($2,%win)
}
;
;;
;
; $_irc.comchan(session|0 or $null for autodetect,nick,N)
;
alias _irc.comchan {
var %i,%chan,%c
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%i = $_irc.chan($1,0)
while (%i) {
%chan = $_irc.chan($1,%i)
if ($_irc.ison($1,$2,%chan)) {
inc %c
if (%c == $3) { return %chan }
}
dec %i
}
if ($3 == 0) { return %c }
}
;
;;
;
; $_irc.idle(session|0 or $null for autodetect)
;
alias _irc.idle {
var %s,%idlem
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%idlem = %+irc.idlem. [ $+ [ $1 ] ]
if (%idlem) {
if ($ctime > %idlem) { return $round($calc($ctime - %idlem),0) }
}
return 0
}
;
;;
;
; $_irc.away(session|0 or $null for autodetect)
;
alias _irc.away {
var %s
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%s = IRC $+ $1
if (a isincs $_sockmark(%s,9)) { return $true }
return $false
}
;
;;
;
; $_irc.me(session|0 or $null for autodetect)
;
alias _irc.me {
var %s
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%s = IRC $+ $1
return $_sockmark(%s,1)
}
;
;;
;
; $_irc.server(session|0 or $null for autodetect)
;
alias _irc.server {
var %s
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%s = IRC $+ $1
return $_sockmark(%s,3)
}
;
;;
;
; $_irc._server(session|0 or $null for autodetect)
;
alias _irc._server {
var %s
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%s = IRC $+ $1
return $_sockmark(%s,2)
}
;
;;
;
; $_irc.nick(session|0 or $null for autodetect,chan,N/nick)
;
alias _irc.nick {
var %win
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%win = @CH_ $+ $1 $+ $chr(160) $+ $2
if ($window(%win) == $null) { return }
if ($3 == 0) { return $line(%win,0,1) }
if ($_isint($3)) { return $remove($strip($line(%win,$3,1)),.,@,+) }
if ($_irc.linick($3,%win)) { return $3 }
}
;
;;
;
; $_irc.snick(session|0 or $null for autodetect,chan,N)
;
alias _irc.snick {
var %win
if ($1 == 0) || ($1 == $null) { tokenize 32 $_irc.ircnum $2- }
if ($1 !isnum) { return }
%win = @CH_ $+ $1 $+ $chr(160) $+ $2
if ($window(%win) == $null) { return }
if ($3 == 0) {
if ($sline(%win,0)) { return $ifmatch }
return 0
}
if ($remove($strip($sline(%win,$3)),.,@,+) != $null) { return $ifmatch }
}
;
;;
;
; /_irc.togglechanmodes <chan> <mode>
;
alias _irc.togglechanmodes {
var %m = $gettok($_irc.chan(0,$1).mode,1,32)
if ($2 === k) {
if (k isincs %m) { _irc.com MODE $1 -k $_irc.chan(0,$1).key }
else { _irc.com MODE $1 +k $_param(1,$null,Channel key:)) }
}
elseif ($2 === l) {
if (l isincs %m) { _irc.com MODE $1 -l }
else { _irc.com MODE $1 +l $_param(isint,$null,Max users in channel:) }
}
else { _irc.com MODE $1 $iif($2 isincs %m,-,+) $+ $2 }
}
;
;;
;
; /_irc.askdccchatrequest
; 1 - local nick
; 2 - dcc socket name
; 3 - remote nick
; 4 - remote site
; 5 - remote IP
; 6 - remote port
; 7 - dcc window name
; 8 - IRC session socket name
;
alias _irc.askdccchatrequest {
var %i,%d,%r
while (1) {
inc %i
%d = irc.askdccchatrequest $+ %i
if ($dialog(%d) == $null) { break }
}
unset %c.irc.askdccchatrequest.*
%c.irc.askdccchatrequest.nick = $3
%c.irc.askdccchatrequest.addy = ( $+ $4 $+ )
showmirc -s
%r = $dialog(%d,irc.askdccchatrequest,-4)
if (%r == chat) {
sockopen $2 $5 $6-
sockmark $2 $3 $+ $chr(9) $+ $1 $+ $chr(9) $+ $7 $+ $chr(9) $+ $8 $+ $chr(9) $+ 0
_irc.openwin.chat $2
}
}
dialog irc.askdccchatrequest {
title "aIRC DCC Chat"
size -1 -1 122 60
option dbu
text %c.irc.askdccchatrequest.nick,10,2 6 119 10,center
text %c.irc.askdccchatrequest.addy,20,2 14 119 10,center
box "",30,2 0 118 24
text "Wants to chat with you.",40,3 30 119 10,center
button "Chat!",100,17 41 27 13,ok
button "Cancel",101,48 41 27 13,cancel
button "Ignore",102,79 41 27 13
edit "chat",200,100 100 100 100,autohs hide result
}
ON *:DIALOG:irc.askdccchatrequest*:init:0:{
_mdx.init $_icofile(question.ico)
unset %c.irc.askdccchatrequest.*
did -b $dname 102
}
ON *:DIALOG:irc.askdccchatrequest*:sclick:101:{
did -o $dname 200 1 cancel
dialog -k $dname
}
ON *:DIALOG:irc.askdccchatrequest*:sclick:102:{
did -o $dname 200 1 ignore
dialog -k $dname
}
alias _irc.askdccsendfile {
var %f = $$dir="File to send:" *.*
if (%f != $null) { _irc.com dcc send $1 $remove(%f,$chr(34)) }
}
alias _irc.send {
if ($calc($_sockmark($1,7) + $_sockmark($1,8)) >= $_sockmark($1,4)) {
var %sockname = $1
_irc.send.rwin $1
_irc.send.rcwin $1 DCC Send completed
if ($_minio(0,17)) { beep }
if ($_minio(2,13)) {
close -@ $_sockmark($1,2)
tokenize 9 $sock($1).mark
var %time = $calc($ctime - $3),%cps = $round($calc($8 / %time),0)
if ($_not(%cps)) { %cps = 0 }
_irc.lechol.s $colour(ctcp) DCC Send of $nopath($1) to $6 completed ( $+ $_duratio(%time) %cps $+ cps)
}
sockclose %sockname
}
else {
bread " $+ $_sockmark($1,1) $+ " $calc($_sockmark($1,7) + $_sockmark($1,8)) $_minio(0,21) &irc.send
sockwrite $1 &irc.send
sockmark $1 $puttok($sock($1).mark,$calc($_sockmark($1,8) + $bvar(&irc.send,0)),8,9)
_irc.send.rwin $1
}
}
;
;;
;
; /_irc.send.rwin <socket>
;
alias _irc.send.rwin {
tokenize 9 $sock($1).mark
if ($window($2) == $null) { return }
var %time = $calc($ctime - $3),%cps = $round($calc($8 / %time),0),%left
if ($8 = 0) { %left = n/a }
elseif ($round($calc(($4 - $7 - $8) / %cps),0)) { %left = $_duratio($ifmatch) }
else { %left = 0s }
if ($_not(%cps)) { %cps = 0 }
if ($line($2,0) == 0) {
aline $colour(ctcp) $2 DCC Send session
aline $2
aline $2 To: $+ $6
aline $2 File: $+ $nopath($1)
aline $2 Size: $+ $4
aline $2
aline $colour(info2) $2 Time: $+ $_duratio(%time) $+ $chr(9) $+ $+ $colour(info) $+ Sent: $+ $8
aline $colour(info2) $2 Left: $+ %left $+ $chr(9) $+ $+ $colour(info) $+ Ack: $+ 0
aline $colour(info2) $2 Cps: $+ %cps $+ $chr(9) $+ $+ $colour(info) $+ Perc: $+ $_percent($calc($7 + $8),$4)
aline $2
aline $colour(ctcp) $2
aline $colour(ctcp) $2
}
else {
rline $colour(info2) $2 7 Time: $+ $_duratio(%time) $+ $chr(9) $+ $+ $colour(info) $+ Sent: $+ $8
rline $colour(info2) $2 8 Left: $+ %left $+ $chr(9) $+ $+ $colour(info) $+ Ack: $+ 0
rline $colour(info2) $2 9 Cps: $+ %cps $+ $chr(9) $+ $+ $colour(info) $+ Perc: $+ $_percent($calc($7 + $8),$4)
}
}
;
;;
;
; /_irc.send.rcwin <socket> <text>
;
alias _irc.send.rcwin {
var %text = $2-
tokenize 9 $sock($1).mark
if ($window($2) == $null) { return }
if ($line($2,0) == 0) { _irc.send.rwin $1 }
var %l11 = $strip($line($2,11)),%l12 = $strip($line($2,12))
if (%l11 == $null) { rline $colour(ctcp) $2 11 %text }
else {
if (%l12 != $null) { rline $colour(ctcp) $2 11 $ifmatch }
rline $colour(ctcp) $2 12 %text
}
}
;
;;
;
; /_irc.send.chtimer <socket> <counter>
;
alias _irc.send.chtimer {
var %win = $_sockmark($1,2)
.timer $+ $1 off
if ($window(%win) == $null) { return }
_irc.send.rwin $1
if ($calc($ctime - $_sockmark($1,3)) == $_minio(2,11)) { _irc.send.rcwin $1 DCC Send timed out... }
else { .timer $+ $1 -mo 1 500 _irc.send.chtimer $1 }
}
;
;;
;
; /_irc.get.rwin <socket>
;
alias _irc.get.rwin {
var %bytes = $sock($1).rcvd
tokenize 9 $sock($1).mark
if ($window($2) == $null) { return }
var %time = $calc($ctime - $3),%cps = $round($calc(%bytes / %time),0),%left
if (%bytes = 0) { %left = n/a }
elseif ($round($calc(($4 - $7 - %bytes) / %cps),0)) { %left = $_duratio($ifmatch) }
else { %left = 0s }
if ($_not(%cps)) { %cps = 0 }
if ($line($2,0) == 0) {
aline $colour(ctcp) $2 DCC Get session
aline $2
aline $2 From: $+ $6
aline $2 File: $+ $nopath($1)
aline $2 Size: $+ $4
aline $2
aline $colour(info2) $2 Time: $+ $_duratio(%time) $+ $chr(9) $+ $+ $colour(info) $+ Sent: $+ %bytes
aline $colour(info2) $2 Left: $+ %left $+ $chr(9) $+ $+ $colour(info) $+ Cps: $+ %cps
aline $colour(info2) $2 Perc: $+ $_percent($calc($7 + %bytes),$4)
aline $2
aline $colour(ctcp) $2
aline $colour(ctcp) $2
}
else {
rline $colour(info2) $2 7 Time: $+ $_duratio(%time) $+ $chr(9) $+ $+ $colour(info) $+ Sent: $+ %bytes
rline $colour(info2) $2 8 Left: $+ %left $+ $chr(9) $+ $+ $colour(info) $+ Cps: $+ %cps
rline $colour(info2) $2 9 Perc: $+ $_percent($calc($7 + %bytes),$4)
}
}
;
;;
;
; /_irc.get.rcwin <socket> <text>
;
alias _irc.get.rcwin {
var %text = $2-
tokenize 9 $sock($1).mark
if ($window($2) == $null) { return }
if ($line($2,0) == 0) { _irc.get.rwin $1 }
var %l11 = $strip($line($2,11)),%l12 = $strip($line($2,12))
if (%l11 == $null) { rline $colour(ctcp) $2 11 %text }
else {
if (%l12 != $null) { rline $colour(ctcp) $2 11 $ifmatch }
rline $colour(ctcp) $2 12 %text
}
}
;
;;
;
; /_irc.get.chtimer <socket> <counter>
;
alias _irc.get.chtimer {
var %win = $_sockmark($1,2)
.timer $+ $1 off
if ($window(%win) == $null) { return }
_irc.get.rwin $1
if ($calc($ctime - $_sockmark($1,3)) == $_minio(2,11)) { _irc.get.rcwin $1 DCC Get timed out... }
else { .timer $+ $1 -mo 1 500 _irc.get.chtimer $1 }
}
;
;;
;
; /_irc.askdccsendrequest1
; 1 - local file
; 2 - dcc get window
; 3 - $ctime (start)
; 4 - file size
; 5 - IRC session socket
; 6 - remote nick
; 7 - transfer beginsfrom byte ... (0 for the complete file)
; 8 - Current byte in transfer
; 9 - local file 1=not erased 0=erased
; 10 - 1=resume 0=no resume
; 11 - remote IP
; 12 - remote port
; 13 - remote site
; 14 - open window minimized
;
alias _irc.askdccsendrequest1 {
var %i,%d,%r
while (1) {
inc %i
%d = irc.askdccsendrequest1 $+ %i
if ($dialog(%d) == $null) { break }
}
unset %c.irc.askdccsendrequest1.*
%c.irc.askdccsendrequest1.nick = $gettok($1-,6,9)
%c.irc.askdccsendrequest1.addy = $gettok($1-,13,9)
%c.irc.askdccsendrequest1.f = $gettok($1-,1,9)
%c.irc.askdccsendrequest1.file = File: $nopath($gettok($1-,1,9))
%c.irc.askdccsendrequest1.size = Size: $gettok($1-,4,9)
%c.irc.askdccsendrequest1.mini = $gettok($1-,14,9)
showmirc -s
%r = $dialog(%d,irc.askdccsendrequest1,-4)
if ($gettok(%r,1,32) == accept) { _irc.dccget $puttok($puttok($1-,$gettok(%r,3-,32),1,9),$gettok(%r,2,32),14,9) }
}
dialog irc.askdccsendrequest1 {
title "aIRC DCC Get"
size -1 -1 156 82
option dbu
text %c.irc.askdccsendrequest1.nick,10,3 6 119 10,center
text %c.irc.askdccsendrequest1.addy,20,3 14 119 10,center
box "",30,3 0 120 24
text "Wants to send you the following file:",40,5 29 116 10,center
text %c.irc.askdccsendrequest1.file,50,10 39 117 10
text %c.irc.askdccsendrequest1.size,60,8 47 117 10
text "Save As:",70,4 60 100 10
button "Accept",200,127 3 27 13,ok
button "Cancel",210,127 19 27 13,cancel
button "Ignore",220,127 35 27 13
check "Minimize",230,125 53 30 10
edit "",240,3 67 136 11
button "?",250,142 67 11 10
edit "accept",400,3 67 136 11,autohs hide result
}
ON *:DIALOG:irc.askdccsendrequest1*:init:0:{
_mdx.init $_icofile(question.ico)
var %f = %c.irc.askdccsendrequest1.f
if (%c.irc.askdccsendrequest1.mini) { did -c $dname 230 }
if ($nopath(%f) != %f) && ($_fixfilename(%f,f) != $null) { %f = $_fixfilename(%f,f) }
else { %f = $getdir($nopath(%f)) $+ $nopath(%f) }
did -o $dname 240 1 %f
unset %c.irc.askdccsendrequest1.*
did -b $dname 220,250
}
ON *:DIALOG:irc.askdccsendrequest1*:sclick:200:{
if ($did(400) == accept) {
var %f = $did(240)
if ($nopath(%f) == %f) { %f = $getdir(%f) $+ %f }
%f = $_fixfilename(%f)
if (%f == $null) {
^playthemesound ERROR
did -f $dname 240
halt
}
did -o $dname 400 1 accept $did(230).state %f
}
dialog -k $dname
}
ON *:DIALOG:irc.askdccsendrequest1*:sclick:210:{
did -o $dname 400 1 cancel
dialog -k $dname
}
ON *:DIALOG:irc.askdccsendrequest1*:sclick:220:{
did -o $dname 400 1 ignore
dialog -k $dname
}