SQ-Script — File Browser
SQ-Scriptv3.5 / SQ-Scriptv3.5 / SQ-Script / sq-script.mrc
sq-script.mrc — 242.56 KB — Download this file
;version 3.5 built 5
;best viewed on font: fixedsys :)
;#######################################################################################
;# SQ-Script #
;# http://SQ-Script.tech.nu - http://SQ-Script.cjb.net #
;# Do only distribute the original ZIP/RAR-file #
;# Please read the readme for help on this script #
;# #
;# To configure just use ctrl+F1 or rightclick in any channel #
;# Don't touch anything below ! #
;#######################################################################################
; General;No variable refers to accounts not managed by SQ-Script#You do not need to leave spaces between the normal text and a variables of SQ-script# Example: My server on ^IP:^port#Avoid using the semicolon, it will cause a the text to be splitted into two lines (same as ENTER)#Regular identifiers from the mIRC scripting language will also be evaluated !#Recommendation: Make a constant use of the preview buttons, but don't forget to use "Apply" afterwards#Although none of the variables is case sensitive you should preserve the case for better overview# #If you still need some variable tell me, so I'll add it
; IP;Your current IP resolved by mIRC#Example: My current IP is ^IP #=> My current IP is 127.0.0.1#If ^IP is a network-IP you might need to setup the mIRC-settings right:#Connect => Local Info#Set "on connect always get" Local Host and IP to enabled#Set "Lookup method" to SERVER# #This variable is the same as $IP it only bares the advantage of all SQ-Script variables
; Port;The port your server is listening to#Example: My Server is listening on port ^port #=> My Server is listening on port 21#This variable is always equal to the port that SQ-script uses to log to your server#If you decide to change your servers port you need to run selfconfiguration again #or enter the new value in the menu
; nick;The nick calling your trigger or @find#Example: You are ^nick and used my trigger #=> You are chatty and used my trigger #This works only in the triggers (ftp,stats) and @find#Whenever you use it somewhere else it returns your nick
; loggedup;The number of users currently logged to your server for upload#Example: There are currently ^loggedup uploaders on my server #=> There are currently 3 uploaders on my server#This refers to the total number of useraccounts created by SQ-script
; loggeddown;The number of users currently logged to your server for download#Example: There are currently ^loggeddown downloaders on my server #=> There are currently 3 downloaders on my server#This refers to the total number of useraccounts created by SQ-script
; logged;The total number of users currently logged to your server#Example: There are currently ^logged users on my server #=> There are currently 3 users on my server#This refers to the total number of users not regarding wether SQ-script made the account or not#Note that SQ-script will never count itself though it also logs in at the server as a user
; maxuserup;The maximum number of upload accounts SQ-script will create#Example: I can have up to ^maxuserup uploaders#=> I can have up to 2 uploaders#it returns the value you entered in the FTP server tab in SQ menu
; maxuserdown;The maximum number of download accounts SQ-script will create#Example: I can serve for up to ^maxuserdown downloaders#=> I can serve for up to 2 downloaders#it returns the value you entered in the FTP server tab in SQ menu
; users;Displays the nicks of all users on your server#Example: Right now there is ^users on my server #=> Right now there is chatty, hacker, overlord on my server#This variable will always return in the format: user, user, ..., user #this variable tries to keep up with netsplits,# meaning if someone got lost in an netsplit it will still return his nick#if nobody is on your server it returns <nobody>
; userup;Displays the nicks of users uploading on your server#Example: Right now there is ^userup uploading to my server #=> Right now there is hacker uploading to my server#This variable will always return in the format: user, user, ..., user #this variable tries to keep up with netsplits,# meaning if someone got lost in an netsplit it will still return his nick#if nobody is on your server it returns <nobody>
; userdown;Displays the nicks of users downloading on your server#Example: Right now there is ^userdown downloading from my server #=> Right now there is chatty, overlord downloading from my server#This variable will always return in the format: user, user, ..., user #this variable tries to keep up with netsplits,# meaning if someone got lost in an netsplit it will still return his nick#if nobody is on your server it returns <nobody>
; list;The triggertext to request your files list#Example: You can get my complete list of files by typing ^list#=> You can get my complete list of files by typing /msg <yournick> !filelist#This returns the trigger to request your fileslist used in @find#it is equal to the setting in the SQ-script menu
; trigger;The triggertext that displays your site info#Example: Get the information to access my site with ^trigger#=>Get the information to access my site with !siteinfo#This returns the setting you made in the SQ-script menu#NOTE: If you enabled listen for /ctcp <yournick> this variable will include it
; SYSuptime;The time your system is running since last reboot#Example: My PC has been up for ^SYSuptime#=> My PC has been up for 5days 10hrs 57mins 15secs#
; recorduptime;Your longest uptime period logged by SQ-script#Example: The longest period Wincrap didn't hang up was ^recorduptime#=> The longest period Wincrap didn't hang up was 1wk 4days 13hrs 46mins#Of course this will only return the longest uptime of your system since SQ-script was installed#for output format see mIRC help on $duration
; recorddownload;Displays the best download speed an the nick logged by SQ-script#Example: The download was ^recorddownload#=> The fastest download was 1,7kBytes/s by Mantaray#It always returns the fastest download in format: <speed> kBytes/s by <nick>#if nobody downloaded since you were using SQ-script it returns not set yet
; recordupload;Displays the best upload speed an the nick logged by SQ-script#Example: The upload was ^recordupload#=> The fastest upload was 8,3kBytes/s by Overmind#The same usage as ^bestdownload
; SQ;The version of SQ-script running on your mIRC#Example: I'm a proud user of SQ-script v^SQ #=> I'm a proud user of SQ-script v2.85#Examples may be used :)
; ServingFiles;The number of files found in your fileslist#Example: I have ^ServingFiles files to download from my server#=> I have 163 files to download from my server#it only returns the right value if you made your filelist with SQ-script#else it returns the number of lines of your current fileslist for @find
; ServingData;The amount of data of the files found in your fileslist#Example: I have ^ServingData to download from my server#=> I have 70,8MB to download from my server#it only returns the right value if you made your filelist with SQ-script#else it returns 0
; matches;The number of matches that were found on the "@find filename" request#Example: I found ^matches files that matched your @find request#=>I found 3 files that matched your @find request#This only works on the @find message else it returns 0
; searchword;The searchword that was used in "@find searchword"#Example: Wuhahah ! You were looking for ^searchword#=> Wuhahah ! You were looking for *smurfs*#as ^matches only works in the @find message else it returns No @find used
; @findresults;This shows the results of an @find request#Multi-line example:# I have found these files for your request:#^@findresults#That's all i have.#=>#I have found these files for your request:#D:\games\UT\maps\ShOwDoWn.umod#That's all i have# #^@findresults must stand alone in one line, no colors, bolds,etc.#If it is not used in an @find request it returns <@findresults>#If it does not appear in the @find message no results will be shown at all
; accountomat;This enables the account creation engine in SQ#Multi-line example:#Welcome to my server#^accountomat#ftp://^login:^password@^ip:^port/#=>Welcome to my server#SQ-script will now ask you some questions to create an account for you#Please enter what you want to do on my server [upload/download]# (user answers) upload#You are required to use this host to log in: user.host.isp.com#Account was successfully created. You have 2minutes to log in#ftp://SQ1:sfefs@235.3.45.3:21/# #The part after this variable will only be displayed if an account was successfully created#Login and Password are generated by SQ-script and are shown in the ^login and ^password variables#If not used in a trigger or previewed it returns <accountmaker>
; bandwidthdown;This displays your current downstream bandwidth usage#Example: There are ^bandwidthdown kb/s of my 80kb/s downstream used#=> There are 42,507 kb/s of my 80kb/s downstream used#it does only count the amount used by accounts made by SQ-Script# #Remeber:Downstream = way from the internet down to your PC
; bandwidthup;This displays your current upstream bandwidth usage#Example: There are ^bandwidthup kb/s of my 12kb/s upstream used#=> There are 10,302 kb/s of my 12kb/s upstream used#it does only count the amount used by accounts made by SQ-Script# #Remeber:UPstream = way from your PC UP to the internet
; NewOnServer;Displays radnom selection from new stuff on server#Example: I have ^NewOnServer brandnew on my server#=> I have UT: ToTaLdEsTrUcTiOn.umod brandnew on my server#You must set up the messages first using the button below
; ConnectionsUp;The number of connections to your server sinc it is running#Example: I had ^connectionsUp people looking at my server since it is running#=> I had 34 people looking at my server since it is running#This is a variable set by the server. It must be enabled in the SQ-script menu#it always starts at 1
; Connections24;The number of connections to your server in the last 24 hours#Example There were ^connections24 people on my server today#=> There were 5 people on my server today#This is a variable set by the server. It must be enabled in the SQ-script menu
; ServerUptimeMM;The minutes your server is running#Example: My Server is running the ^ServerUptimeDD.day for ^ServerUptimeHH hours and ^ServerUptimeMM minutes#=> My Server is running the 11.day for 2hours and 7 minutes#This is a variable set by the server. It must be enabled in the SQ-script menu
; ServerUptimeHH;The hours your server is running#Example: My Server is running the ^ServerUptimeDD.day for ^ServerUptimeHH hours and ^ServerUptimeMM minutes#=> My Server is running the 11.day for 2hours and 7 minutes#This is a variable set by the server. It must be enabled in the SQ-script menu
; ServerUptimeDD;The number of days your server is running#Example: My Server is running the ^ServerUptimeDD.day for ^ServerUptimeHH hours and ^ServerUptimeMM minutes#=> My Server is running the 11.day for 2hours and 7 minutes#This is a variable set by the server. It must be enabled in the SQ-script menu
; ServerUptimetotal;The time your server has been running since installation#Example: My Server has been running ^ServerUptimetotal since I installed it#=> My Server has been running 2d08:51:37 since i installed it#This is a variable set by the server. It must be enabled in the SQ-script menu
; serverUP;The amount of data uploaded to your server since installation#Example: Generous people uploaded ^serverUP since I installed my server#=> Generous people uploaded 3,01G since i installed my server#This variable autoadjusts its length to 3 digits plus suffix#This is a variable set by the server. It must be enabled in the SQ-script menu
; serverDOWN;The amount of data downloaded from your server since installation#Example: ^serverDown has been downloaded since i installed my server#=> 24.3G have been downloaded since i installed my server#same rules as ^serverUP
; serverMOVED;The the amount of data moved by your server since installation#Example: My server moved ^servermoved since i installed it#=>My server moved 214G since i installed it#Always returns ^serverUP + ^serverDown#same rules as ^serverUP
; SstartUP;The amount of data uploaded to your server since the server is running#Example: My server has recieved ^SstartUP since it is running#=> My server has recieved 530KB since it is running#same rules as ^serverUP
; SstartDOWN;The amount of data downloaded from your server since the server is running#Example: I have served ^SstartDown since i started the server#=> I have served 2,60G since i started the server#same rules as ^serverUP
; SstartMOVED;The amount of data moved by your server since the server is running#Example: My server has moved ^SstartMoved since it is running#=> My server has moved 23MB since it is running#same rules as ^serverMoved
; SstartFILESup;The amount of files uploaded to your server sonce it is runnging#Example: People have uploaded ^SstartFILESup files since i started the server#=> People have uploaded 3 files since i started the server#This is a variable set by the server. It must be enabled in the SQ-script menu
; SstartFILESdown;The amount of files downloaded from your server since it is running#Example: I have served ^SstartFILESdown files since i started the server#=> I have served 706 files since i started the server#same rules as ^SstartFILESup
; SstartFILESmoved;The amount of files moved by your server since it is running#Example: My server has handled ^SstartFILESmoved since it is running#=> My server has handled 708 files since it is running# always returns ^SstartFILESup + ^SstartFILESdown#same rules as ^SstartFILESup
; serverversion;Returns the version of your server#Example: I'm running ^serverversion#=> I'm running BulletProof FTP Server v2.15#This Variable is set by the server and must be enabled in the SQ-script menu else it returns nothing
; RAM;Returns your RAM total#Example: My computer has ^RAM RAM#=> My computer has 127MB RAM#same rules as ^serverversion
; CPU;Returns information about your CPU#My hamster in his wheel is ^CPU#=> My hamster in his wheel is 1xIntel Pentium III 597 Mhz#same rules as ^serverversion
; OSversion;Returns inforation about your operating system#My computer is infected with ^OSversion#=> My computer is infected with Windows 98 4.10 A#same rules as ^serverversion# #Comment: My system hang up upon writing this example :(
; diskfree[drive];Returns how much free space you have on the specified fixed drive#Example: You can fill up to ^diskfree[d] on my D drive#=> You can fill up to 766MB on my D drive#If you do not specify a fixed drive it returns not available#This variable is refreshed every 60secs
; disksize[drive];Returns the size of the specified fixed drive#Example: My C drive is ^disksize[c] big#=> My C drive is 81MB big#same rules as ^discfree[drive]
; diskfill[drive];Returns the amount of data stored on the specified drive#Example: I'm serving ^diskfill[d] from my D drive#=> I'm serving 23.6G from my D drive#always returns ^disksize[drive] - ^diskfree[drive]#same rules as ^diskfree[drive]
; diskfreetotal;Returns how much free space you have on all fixed drives together#Example: I have ^diskfreetotal free on drives#=> I have 506KB free on my drives#same rules as ^diskfree[drive]
; disksizetotal;Returns the total available size of your fixed drives#Example: My total diskspace is ^disksizetotal#=> My total diskspace is 129G#same rules ^diskfree[drive]
; diskfilltotal;Returns the total amount of data on all your fixed drives#Example: I have ^diskfilltotal junk on my drives#=> I have 128G junk on my drives#same rules as ^diskfree[drive]
; downloads24h;Returns the amount of data downloaded over the last 24h#Example: I have served ^downloads24h during the last 24h#=> I have served 24.3MB during the last 24h#The same works with ^downloads168h and ^downloads720h which is one week and one month
; uploads24h;Returns the amount of data uploaded over the last 24h#Example: I got uploaded ^uploads24h during the last 24h#=> I got uploaded 24.3MB during the last 24h#The same works with ^uploads168h and ^uploads720h which is one week and one month
;##################################Debug Help##################################
alias sq.version {
var %vers = $read(" $+ $script $+ ",1)
return $gettok(%vers,2,32) $+ . $+ $gettok(%vers,4,32)
}
;##################################Menu Section##################################
Menu Channel,status,menubar,query,chat {
-
$iif(!$sq.get(sq.lock) && !$sq.get(lock),SQ-Script)
.$iif($sq.get(sq.newversion),Update Script):sq.checkupdate
.Menu (Ctrl+F1):SQ.menu
.$iif($sq.istok(eggdrop.channel,$chan) && $me isreg $chan,OP/Voice me):SQ.automode $chan
.$iif($away && $server,Back):SQ.away
.$iif(!$away && $server,Away):SQ.away
.Play Sound:SQ.sound
.Open Telnet:sq.telnet
.$iif($sq.istok(request.channel,$active),Request files):{
var %tempchan = $active
window -dhk0oCl36 +bt @SQ-req 300 300 297 100
renwin @SQ-req @SQ-request Click to force requesting
var %count = 1
while (%count <= $sq.num(request.address)) {
if ($ial($sq.tok(request.address,%count)).nick ison %tempchan) { aline -l @SQ-request $ial($sq.tok(request.address,%count)).nick $+ }
elseif ($sq.tok(request.nick,%count) ison %tempchan) { aline -l @SQ-request $sq.tok(request.nick,%count) $+ }
inc %count 1
}
}
.Sound Control (F12):dialog -mdo vol vol
.$iif($chan && $sq.get(@find.status),Search):sq.searchfiles $chan
}
menu @SQ-request {
lbclick:{
var %nick = $strip($sline(@SQ-request,1))
if ($sq.istok(request.nick,$strip($sline(@SQ-request,1)))) {
sq.requestall %nick
}
else {
var %count = 1
while (%count <= $sq.num(request.address)) {
echo -st $sq.tok(request.address,%count) iswm $address(%nick,5)
if ($sq.tok(request.address,%count) iswm $address(%nick,5)) {
sq.requestall %nick
break
}
inc %count 1
}
}
window -c @SQ-request
}
}
menu nicklist,query {
$iif($ini($sq.dir $+ SQftp.log,$address($1,3),0) && !$sq.get(sq.lock) && !$sq.get(lock),Display FTP history):sq.ftplogview
$iif($fline(@sq-hidden,$address($1,1) $+ *,0),Connect to FTP):sq.net.connect $1
}
menu @SQ-Script! {
lbclick:{ if ($sq.get(sq.lock) || $sq.get(lock)) { halt } | sq.set 60 lb.selected $1 | sq.set 60 lb.nick $sq.tok(ftpnick,$sq.get(lb.selected)) }
$iif($sq.get(sq.newversion),Update Script):sq.checkupdate
$iif(!$sq.get(sq.lock) && !$mouse.lb,Menu (Crtl + F1)):SQ.menu
$iif(!$sq.get(sq.lock) && !$mouse.lb && $away && $server,Back):SQ.away
$iif(!$sq.get(sq.lock) && !$mouse.lb && !$away && $server,Away):SQ.away
$iif(!$sq.get(sq.lock) && !$mouse.lb && $sq.get(ftp.status),Update Userlist (Crtl + F5)):SQ.ftp.check
$iif(!$sq.get(sq.lock) && !$sq.get(ftp.status) && $sq.get(ftp.configured),Connect to server):SQ.ftp.check
$iif(!$sq.get(sq.lock) && !$mouse.lb,Sound Control (F12)):dialog -mdo vol vol
$iif(!$sq.get(sq.lock) && $mouse.lb && $sq.get(lb.selected),$sq.tok(ftpnick,$sq.get(lb.selected))):clipboard $sq.tok(ftpnick,$sq.get(lb.selected))
$iif(!$sq.get(sq.lock) && $mouse.lb && $sq.get(lb.selected),$sq.tok(ftpip,$sq.get(lb.selected))):clipboard $sq.tok(ftpip,$sq.get(lb.selected))
$iif(!$sq.get(sq.lock) && $mouse.lb && $sq.get(lb.selected),$sq.tok(ftphost,$sq.get(lb.selected))):clipboard $sq.tok(ftphost,$sq.get(lb.selected))
$iif(!$sq.get(sq.lock) && !$mouse.lb,sfv-Checker):dialog -m sq.sfvlog sq.sfvlog
-
$iif(!$sq.get(sq.lock) && $mouse.lb && $SQ.get(lb.selected),Summary):sq.summary $sq.get(lb.selected)
$iif(!$sq.get(sq.lock) && $mouse.lb && $sq.get(lb.selected),Kick):{
sq.delaccount $remove($sq.tok(ftpaccount,$sq.get(lb.selected)),SQ) You just got kicked
sq.sysmsg Kicked user from server. Please wait until screen is updated
.timerSQ.event -o 1 10 sq.event
}
$iif(!$sq.get(sq.lock) && $mouse.lb && $sq.get(lb.selected),Ban):{
sq.delaccount $remove($sq.tok(ftpaccount,$sq.get(lb.selected)),SQ) You just got banned
sq.ftp.deny $sq.get(lb.nick)
sq.sysmsg Baned user from server. Please wait while updateing screen
.timerSQ.event -o 1 10 sq.event
}
$iif(!$sq.get(sq.lock) && $mouse.lb && $sq.get(lb.selected),Ignore and Ban):{
ignore $sq.get(lb.nick) 1
sq.delaccount $remove($sq.tok(ftpaccount,$sq.get(lb.selected)),SQ) You just got banned/ignored
}
$iif(!$sq.get(sq.lock) && $mouse.lb && $comchan($sq.get(lb.nick),0) && $sq.get(ftpip),IRC options):
.Query:query $sq.get(lb.nick)
.CTCP
..Ping:ctcp $sq.get(lb.nick) ping
..Time:ctcp $sq.get(lb.nick) time
..Version:ctcp $sq.get(lb.nick) version
.DCC
..Send:dcc send $sq.get(lb.nick)
..Chat:dcc chat $sq.get(lb.nick)
.Userinfo:uwho $sq.get(lb.nick)
.DNS:dns $sq.get(lb.nick)
$iif(!$sq.get(sq.lock),Display FTP history):sq.ftplogview
$iif(!$sq.get(sq.lock) && !$mouse.lb && !$sq.get(lock),Open Telnet):sq.telnet
$iif(!$sq.get(sq.lock) && !$mouse.lb && !$sq.get(lock),Lock SQ-script):sq.lock $input(Enter a key to lock SQ-script. $crlf $+ To unlock enter that key in the SQ log window,1,SQ LOCK)
$iif(!$sq.get(sq.lock) && !$mouse.lb,Force Scriptupdate):{ sq.checkupdate | sq.set forceupdate 1 }
}
alias SQ.menu {
if ($dialog(sq)) { dialog -v sq }
elseif (!$sq.get(sq.lock) && !$sq.get(lock)) {
if ($calc($ctime - $sq.get(lastupdate)) > 86400) {
sq.set lastupdate $ctime
sq.checkupdate
}
sq.set temptime $ticks
SQ.sysmsg Calling menu.....
if ($SQ.get(window.state) == normal) { window -a @SQ-Script! }
if (!$dialog(SQ)) { dialog -dmr SQ SQ }
}
}
on *:close:@SQ-script!:{ .timerreopen 1 1 sq.reopen }
alias sq.reopen { SQ.sysmsg Please don't close this window | sq.event }
alias cF1 { sq.menu }
alias cF5 { sq.event }
;#########################################Misc section################################################
alias SQ.away {
if (!$server) { halt }
if ($away) && ($1 != recon) {
if (!$SQ.get(away.silent)) {
var %tempcount = 1
while (%tempcount <= $chan(0)) {
if ($chan(%tempcount) !isin $SQ.get(away.exclude) && !$sq.istok(request.channel,$chan(%tempcount))) { describe $chan(%tempcount) is back from: $awaymsg (gone for $duration($awaytime) $+ ) }
inc %tempcount
}
}
.away
resetidle
}
elseif (!$away) && ($1 == recon) { .away $SQ.get(msg.away) }
else {
if (!$away) && ($1 == autoaway) { sq.set msg.away Autoaway after $SQ.get(away.autoaway.time) minutes idle | sq.set away.autoaway.status $true }
elseif (!$away) && (!$1) { sq.set msg.away $$input(Enter your awayreason,1,Away,sleep) }
.away $sq.get(msg.away)
if (!$SQ.get(away.silent)) {
var %tempcount = 1
while (%tempcount <= $chan(0)) {
if ($chan(%tempcount) !isin $SQ.get(away.exclude) && !$sq.istok(request.channel,$chan(%tempcount))) { describe $chan(%tempcount) is now away: $sq.get(msg.away) (gone $asctime(HH:nn) $+ ) }
inc %tempcount 1
}
}
sq.set away.time $ctime
}
}
raw 305:*:{
sq.del away.time msg.away
SQ.sysmsg You're set to back from away
haltdef
}
raw 306:*:{
if ($sq.get(away.tray)) { showmirc -t }
SQ.sysmsg You're set to away
haltdef
}
alias SQ.sound {
var %tempsound = $$sfile($mircdir $+ Sounds\,Choose the sound you want to play,Play)
var %message $input(Enter a message to the sound,1,OK)
sound $active %tempsound %message
}
on *:getfail:*.*:{
if ($sq.istok(soundrequestfile,$nopath($filename))) {
.remove $filename
sq.rem soundrequestfile $nopath($filename)
}
}
on *:input:*:{
if (/* !iswm $1-) {
if ($away && $sq.get(away.autoaway.status)) { sq.away }
elseif ($away && @ !isin $active) { echo $active 5,9Don't forget to cancel your away ! }
if (@Telnet-* iswm $active) {
if ($sq.get(sq.lock) || $sq.get(lock)) { halt }
if (/* !iswm $1-) {
if ($sq.istok(eggdrop.nick,$remove($active,@Telnet-))) { var %remote = $sq.findtok(eggdrop.nick,$remove($active,@Telnet-)) }
else { var %remote = $remove($active,@Telnet-) }
if ($sock(sq.telnet $+ %remote)) {
sq.writetelnet %remote $1-
}
else { echo -am Not connected to remote }
halt
}
}
if ($active == @SQ-script!) {
if ($1- == $sq.get(sq.lock) || $1- == $sq.get(lock)) {
sq.sysmsg SQ-script unlocked
sq.del sq.lock
sq.del lock
halt
}
elseif ($sq.get(sq.lock) || $sq.get(lock)) { halt }
if ($sq.get(ftp.status) && $sq.get(ftp.configured) == G6) {
var %nick = $sq.findtok(ftpnick,$1)
if (!%nick) { sq.sysmsg Cannot send msg to $1 (not found on server) }
else {
sq.ftp.tell $sq.tok(ftpaccount,%nick) prvcht $2-
sq.sysmsg -> $+ $1 $+ <- $2-
}
}
elseif ($sq.get(ftp.status) && $sq.get(ftp.configured) == Raiden) {
sq.set ftpdirect 1
sockwrite -n sq.ftp $1-
}
else { sq.sysmsg Cannot send msg (not connected) }
halt
}
elseif ($sq.get(gimick)) { say $sq.gimick($1-) | haltdef }
}
}
on *:open:?:*:{
if (!$away && $SQ.get(sound.onquery)) {
if (!$sq.istok(request.nick,$nick) && !$sq.istok(request.address,$address($nick,3)) && !$sq.get(soundplaying)) {
if ($sq.get(sound.silence)) {
var %start = $sq.get(sound.silence.begin),%stop = $sq.get(sound.silence.stop)
if ( %start < %stop ) && ($asctime(HH) > %start && $asctime(HH) < %stop) { halt }
elseif ( %start > %stop ) && ($asctime(HH) > %start || $asctime(HH) < %stop) { halt }
}
if (!$sq.get(queryflood)) { .timerSQ.sound 1 3 .splay " $+ $SQ.get(sound.query) $+ " }
else { .timersq.sound off }
sq.set 5 queryflood 1
sq.set 20 soundplaying $nick
}
}
elseif ($away && $SQ.get(away.time) && $sq.get(away.notice)) { .notice $nick I'm currently away: $awaymsg (gone for $duration($awaytime) $+ ) }
}
on *:active:?:{
if ($active == $sq.get(soundplaying)) {
.timerSQ.sound off
splay stop
}
}
;##################################CTCP-FloodProtection & Sound#################################
ctcp *:*:*:{
if ($sq.istok(noflood.ctcp.ignore,$1)) { halt }
if ($1 != dcc) && ($1 != Sound) && ($SQ.get(floodprot) == 1) { sq.inc floodprot }
elseif ($1 != dcc) && ($1 != Sound) && ($SQ.get(floodprot) == 2) { sq.inc floodprot | .ignore -ut60 $nick 4 }
elseif ($1 != dcc) && ($1 != Sound) && ($SQ.get(floodprot) == 3) {
.ignore -tknu60 * | echo $active | echo -at 5,9 SQ-Script Floodprotection activated by $nick with $1 ! All ctcps,colors and notices will be blocked | echo $active | sq.del floodprot | halt
}
elseif ($1 != dcc) && ($1 != Sound) && ($SQ.get(noflood.protecttime) != 0) { sq.set $SQ.get(noflood.protecttime) floodprot 1 }
if ($away) && ($1 != dcc) && ($SQ.get(status.ctcpblock)) { haltdef }
elseif ($away) && ($1 == dcc) && ($SQ.get(status.dccblock)) { haltdef }
if ($1 == FTP && $longip($2) && $3) {
if (!$SQ.get(trigger.status) || $sq.istok(ftp.denynick,$nick) || $sq.istok(ftp.denyaddress,$address($nick,3))) { halt }
if ($sq.get(triggerbusy)) { .notice $nick I'm busy right now with $gettok($sq.get(triggerbusy),1,32) $+ . Please wait }
elseif (!$SQ.get(ftp.status)) { .notice $nick FTP is down...sorry }
else {
var %count = 1,%found = 0,%type
while (%count <= $comchan($nick,0) && !%found) {
sq.set tempchan $comchan($nick,%count)
if ($SQ.get(msg.triggerO $+ $sq.get(tempchan)) && $nick isop $sq.get(tempchan)) { %found = 1 | %type = O }
elseif ($sq.get(msg.triggerV $+ $sq.get(tempchan)) && $nick isvo $sq.get(tempchan)) { %found = 1 | %type = V }
elseif ($sq.get(msg.triggerR $+ $sq.get(tempchan)) && $nick isreg $sq.get(tempchan)) { %found = 1 | %type = R }
elseif ($sq.get(msg.triggerA $+ $sq.get(tempchan))) { %found = 1 | %type = A }
inc %count 1
}
if (!%found) {
sq.del tempchan
.notice $nick You may not use this trigger
halt
}
if ($3 == download) {
if ($sq.gotaccount) {
.notice $nick You may only have one account. Aborting account creation
sq.del tempchan
halt
}
var %var = $remove($sq.tok(msg.trigger $+ %type $+ $+ $sq.get(tempchan),1),>)
if ($sq.get(ftp.maxuserdown) <= $sq.ftpdownloaders || ($gettok(%var,6,47) && $gettok(%var,6,47) <= $sq.ftpdownloaders)) {
.notice $nick Sorry downloads are full. try again later
sq.del tempchan
halt
}
}
elseif ($3 == upload) {
if ($sq.get(ftp.maxuserUP) <= $sq.ftpuploaders) {
.notice $nick Sorry uploads are full. try again later
sq.del tempchan
halt
}
}
sq.set triggerbusy $nick $sq.get(tempchan) %type $3
sq.accountomat $nick $2 $4
}
halt
}
elseif ($1 == $sq.get(trigger.ftp) && $sq.get(trigger.ctcp)) {
if (!$SQ.get(trigger.status) || $sq.istok(ftp.denynick,$nick) || $sq.istok(ftp.denyaddress,$address($nick,3))) { halt }
if ($sq.get(triggerbusy)) { .notice $nick I'm busy right now with $gettok($sq.get(triggerbusy),1,32) $+ . Please wait }
elseif (!$SQ.get(ftp.status)) { .notice $nick FTP is down...sorry }
else {
var %count = 1,%found = 0
while (%count <= $comchan($nick,0) && !%found) {
sq.set tempchan $comchan($nick,%count)
if ($SQ.get(msg.triggerO $+ $sq.get(tempchan)) && $nick isop $sq.get(tempchan)) { %found = 1 | sq.trigger O }
elseif ($sq.get(msg.triggerV $+ $sq.get(tempchan)) && $nick isvo $sq.get(tempchan)) { %found = 1 | sq.trigger V }
elseif ($sq.get(msg.triggerR $+ $sq.get(tempchan)) && $nick isreg $sq.get(tempchan)) { %found = 1 | sq.trigger R }
elseif ($sq.get(msg.triggerA $+ $sq.get(tempchan))) { %found = 1 | sq.trigger A }
inc %count 1
}
if (!%found) { .notice $nick You may not use this trigger }
}
halt
}
elseif ($sq.get(@find.ctcp) && $1 == @find) {
if (!$2) { return }
var %count = 1
while (%count <= $sock(sq.@find*,0)) {
sockwrite -n $sock(sq.@find*,%count) $comchan($nick,1) $nick $2-
inc %count 1
}
dec %count 1
if (%count > 1) { .notice $nick Looking up %count servers }
halt
}
if ($1-2 == DCC SEND) {
if ($sq.istok(request.address,$address($nick,3))) { var %tmpnick = $sq.tok(request.nick,$sq.findtok(request.address,$address($nick,3))) }
elseif ($sq.istok(request.nick,$nick)) { var %tmpnick = $nick }
if (%tmpnick) {
SQ.request $nick
var %file = $remove($gettok($3-,$calc($numtok($3-,32) -3),32),"),%nickpath = $replace(%tmpnick,<,_,>,_,:,_,\,_,/,_,|,_,*,_,?,_)
var %path = $getdir(" $+ %file $+ ")
if ($isfile(" $+ %path $+ complete\ $+ %nickpath $+ \ $+ %file $+ ")) {
var %line = $read($sq.request.accfile(%tmpnick),w,* $+ $replace(%file,$chr(95),*,$chr(32),*) $+ *)
if ($readn) { write -l $+ $readn $sq.request.accfile(%tmpnick) <success> ! $+ %tmpnick %file }
halt
}
}
}
if ($1 == sound) {
if ($sq.get(sound.silence)) {
var %start = $sq.get(sound.silence.begin),%stop = $sq.get(sound.silence.stop)
if ( %start < %stop ) && ($asctime(HH) > %start && $asctime(HH) < %stop) {
echo 3 -t $target < $+ $nick $+ > $1 $+ : $2 (silenced) $3-
halt
}
elseif ( %start > %stop ) && ($asctime(HH) > %start || $asctime(HH) < %stop) {
echo 3 -t $target < $+ $nick $+ > $1 $+ : $2 (silenced) $3-
halt
}
}
if ($away || $sq.get(sound.block) || !$appactive) { halt }
if (!$3) {
echo 4 -t $target < $+ $nick $+ > $1 $+ : $2
if ($target != $active) { echo 4 -at < $+ $nick $+ / $+ $target $+ > $1 $+ : $2 }
if ($isfile(" $+ $getdir(" $+ $2 $+ ") $+ $2 $+ ")) {
if ($appactive) { splay " $+ $getdir(" $+ $2 $+ ") $+ $2 $+ " }
haltdef
}
else {
if (!$sq.istok(soundrequestfiles,$nopath($filename))) {
if (!$away) && ($SQ.get(sound.request)) { .msg $nick ! $+ $nick $2 | sq.add soundrequestfile $nopath($2) }
elseif ($away) && ($SQ.get(sound.request)) && ($SQ.get(status.dccblock)) { .msg $nick ! $+ $nick $2 | sq.add soundrequestfile $nopath($2) }
}
haltdef
}
}
}
}
;##################################@find Section##################################
alias sq.@findchecksockets {
if (!$sock(sq.@srv) && $portfree(17000)) { sq.del @find.connection | socklisten sq.@srv 17000 }
if (!$sock(sq.searchbot) && $sq.get(@find.connection.host)) { sockopen sq.searchbot $sq.get(@find.connection.host) 17000 | .timersq.search 1 10 sockclose sq.searchbot }
if (!$sq.get(@find.connection.host)) { sq.sysmsg 4Cannot connect to @find server: No IP given }
}
on *:socklisten:sq.@srv:{
var %rand = $rand(1,65535)
while ($sq.istok(@find.connection,%rand)) { %rand = $rand(1,65535) }
sockaccept sq.@find $+ %rand
var %ip = $sock(sq.@find $+ %rand).ip
if (%ip != 127.0.0.1 && %ip != $ip) { sq.sysmsg @find server accepted client from %ip }
}
on *:text:@find *:#:{
if ($sq.get(@find.ctcp) || !$2 || $len($1-) < 9) { return }
var %count = 1
while (%count <= $sock(sq.@find*,0)) {
sockwrite -n $sock(sq.@find*,%count) $comchan($nick,1) $nick $2-
inc %count 1
}
dec %count 1
if (%count > 1) { .notice $nick Looking up %count servers }
}
on *:text:!list:#:{
if ($sq.get(ftp.!list) && $istok($sq.get(trigger.bannerchannel),$chan,44)) { .notice $nick $SQ.SetVariables($replace($sq.get(msg.banner),$chr(44),::)) 3 $+ $chr(443) $+ SQ $+ - $+ Script $+ $chr(427) }
}
on *:sockclose:sq.@find*:{ sq.deltok @find.connection $sq.findtok(@find.connection,$remove($sockname,@find)) }
on *:sockopen:sq.searchbot:{
if ($sockerr == 3) { sq.sysmsg No @find server running on $sq.get(@find.connection.host) }
elseif ($sockerr) { sq.sysmsg Could not connect to @find server }
else { .timersq.search off | sq.sysmsg Connection to @find server established }
}
on *:sockclose:sq.searchbot:{ sq.sysmsg Connection to @find server lost }
on *:sockread:sq.searchbot:{
if (!$SQ.get(@find.status) || !$SQ.get(@find.fileslist) || !$SQ.get(trigger.files)) { return }
var %text
sockread %text
var %chan = $gettok(%text,1,32),%nick = $gettok(%text,2,32),%searched = $gettok(%text,3-,32)
if (%nick == $me) { return }
if ($comchan(%nick,0) > 1) {
var %n = 1
while (%n <= $comchan(%nick,0)) {
%chan = $comchan(%nick,%n)
if ($istok($sq.get(@find.channel),%chan,44)) { break }
inc %n 1
}
}
if (!$istok($sq.get(@find.channel),%chan,44)) { return }
if (!$SQ.get(@findbusy)) {
sq.set 40 @findbusy $true
sq.set 40 @findrequester %nick
set -u0 %@findsearchword * $+ $replace(%searched,$chr(32),$chr(42)) $+ *
filter -ffc " $+ $SQ.get(@find.fileslist) $+ " SQ.tempfiles.txt %@findsearchword
if ($filtered == 0) {
sq.del @findbusy @findrequester
.remove SQ.tempfiles.txt
}
elseif ($filtered > $SQ.get(@find.fileshits)) {
.msg $SQ.get(@findrequester) Too many hits on 4 $+ %@findsearchword $+ ( $+ $filtered matches $+ ) !
if (!$sq.get(@find.sendmatches)) { .msg $SQ.get(@findrequester) Better get my fileslist on $SQ.get(trigger.files) }
else {
var %file = Matches-SearchID $+ $rand(1,65535) $+ .txt
while ($isfile($sq.dir $+ %file)) { %file = Matches-SearchID $+ $rand(1,65535) $+ .txt }
.copy SQ.tempfiles.txt $SQ.dir $+ %file
if ($lock(dll)) {
sq.sysmsg Could not compress @find results. Please enable the use of DLLs in the mIRC options
.dcc send $SQ.get(@findrequester) $sq.dir $+ %file
.timer -o 1 300 .remove $sq.dir $+ %file
}
elseif ($dll($sq.dir $+ ngzipn.dll,zip,$sq.dir $+ %file)) {
%file = %file $+ .gz
.dcc send $SQ.get(@findrequester) %file
.timer -o 1 300 .remove $sq.dir $+ %file
}
.msg $SQ.get(@findrequester) The matches will be sent to you as a file called %file $+ , please accept it. (use winzip to unpack)
}
if ($sq.get(@find.verbose)) { SQ.sysmsg Search for 5 $+ %@findsearchword $+ by 5 $+ $SQ.get(@findrequester) $+ has been flooded with 4 $+ $filtered $+ matches! }
sq.del @findbusy @findrequester
.remove SQ.tempfiles.txt
}
else {
set -u0 %@findhits $filtered
var %tempcount = 1
if ($sq.get(@find.verbose)) { SQ.sysmsg Search for 5 $+ %@findsearchword $+ by 5 $+ $SQ.get(@findrequester) $+ has been finished with 5 $+ $filtered $+ match(es)! }
while (%tempcount <= $sq.num(msg.@find)) {
if ($sq.tok(msg.@find,%tempcount) != ^@findresults) { .msg $sq.get(@findrequester) $SQ.SetVariables($replace($sq.tok(msg.@find,%tempcount),$chr(44),::)) }
else { sq.set @findline %tempcount | .play $SQ.get(@findrequester) SQ.tempfiles.txt 1500 | break }
inc %tempcount 1
}
if (%tempcount > $sq.num(msg.@find)) { .remove SQ.tempfiles.txt | sq.del @findbusy @findrequester @findline }
}
else { sq.del @findbusy }
}
else { .notice %nick 4SQ-script is busy with @find request from $SQ.get(@findrequester) $+ . Please wait }
}
on *:playend:{
if (SQ.tempfiles.txt == $nopath($filename)) {
.remove SQ.tempfiles.txt
var %tempcount = $sq.get(@findline)
inc %tempcount 1
while (%tempcount <= $sq.num(msg.@find)) {
.msg $sq.get(@findrequester) $SQ.SetVariables($replace($sq.tok(msg.@find,%tempcount),$chr(44),::))
inc %tempcunt 1
}
sq.del @findbusy @findrequester @findline
}
}
;##################################ON DNS###################################
on *:dns:{
if ($iaddress) {
if ($len($sq.get(hostlist)) >= 800) { sq.del hostlist dnslist }
if (!$sq.istok(dnslist,$iaddress)) {
sq.set dnslist $addtok($sq.get(hostlist),$iaddress,59)
if ($naddress) { sq.add hostlist $naddress }
else { sq.add hostlist $iaddress }
}
if ($sq.istok(dnslist,$iaddress) && !$sq.istok(hostlist,$nadress)) { sq.set hostlist $puttok($sq.get(hostlist),$naddress,$sq.findtok(dnslist,$iaddress),59) }
if ($sq.istok(tempegg,$nick)) {
var %count = $sq.findtok(tempegg,$nick)
var %action1 = $gettok($sq.tok(tempeggaction,%count),1,32)
var %action2 = $gettok($sq.tok(tempeggaction,%count),2,32)
sq.rem tempegg $nick
sq.set tempeggaction $remtok($sq.get(tempeggaction),%action1 %action2,1,59)
if ($iaddress == $gettok($sq.tok(eggdrop.ip,%action1),1,58)) {
if (%action2 == chat) {
var %active = $active
sq.app tempchat %action1
.dcc chat $sq.tok(eggdrop.nick,%action1)
if ($window(%active)) { window -a %active }
}
elseif (%action2 == telnet) { sq.telnet %action1 }
elseif (%action == msg) { .msg $nick voice $sq.decrypt(@,$sq.tok(eggdrop.pass,%action1)) }
}
else { sq.sysmsg 4 $+ $nick $+ 's (eggdrop) resolved IP did did not match saved IP }
}
}
}
alias sq.listhost { return $iif($longip($1) && $sq.istok(dnslist,$1),$true,$false) }
alias sq.dnsip {
if (@ isin $1) { var %host = $mid($1,$calc($pos($1,@) +1)) }
else { var %host = $1 }
if ($longip(%host)) { return %host }
else { return $sq.tok(dnslist,$sq.findtok(hostlist,%host)) }
}
alias sq.dnshost { return $sq.tok(hostlist,$sq.findtok(dnslist,$1)) }
alias sq.iplookup {
sockopen sq.checkip checkip.dyndns.org 80
.timersq.checkip 1 15 sockclose sq.checkip
}
on *:sockopen:sq.checkip:{
.timersq.checkip off
if ($sockerr) { return }
write -c temp.txt
sockwrite -n $sockname GET / HTTP/1.0
sockwrite -n $sockname Accept: */*
sockwrite -n $sockname Host: checkip.dyndns.org
sockwrite -n $sockname
}
on *:sockread:sq.checkip:{
sockread 4096 &d
while ($sockbr) {
bwrite temp.txt -1 -1 &d
sockread 4096 &d
}
}
on *:sockclose:sq.checkip:{
sq.set currentip $gettok($read(temp.txt,12),4,32)
.remove temp.txt
}
alias sq.ip { return $sq.get(currentip) }
;##################################Loader Section#################################
alias SQ.loadscript {
if (!$sq.get(tempbusy)) {
var %sel *.ini,*.mrc
var %tempscript = $$sfile($mircdir $+ %sel,Choose the Script you want to load !,Load)
sq.set 5 tempbusy $true
.load -rs " $+ %tempscript $+ "
SQ.sysmsg " $+ $nopath(%tempscript) $+ " has been loaded !
if ($dialog(SQ)) {
var %tempcount = 1
var %counter = 1
while (%tempcount <= $script(0)) { if (sq-script !isin $script(%tempcount)) { did -o SQ 428 %counter $nopath($script(%tempcount)) | inc %counter 1 } | inc %tempcount 1 }
}
}
}
;##################################Stats Section#################################
alias SQ.stats {
var %tempcount = 1
while (%tempcount <= $sq.num(msg.stat)) {
var %tempmsg = $SQ.SetVariables($replace($sq.tok(msg.stat,%tempcount),$chr(44),::))
if ($nick) { .msg $nick %tempmsg }
else { say %tempmsg }
inc %tempcount 1
}
}
on *:connect:{
if ($hget(sq.temps)) { hfree SQ.temps | hmake sq.temps 50 }
If ($SQ.get(msg.away)) { SQ.away recon }
.mode $me +i
.timer 1 20 SQ.banner
sq.iplookup
var %n = 1
while (%n <= $sq.num(request.channel)) {
.timer 1 $calc(%n * 10) sq.requestjoin $sq.tok(request.channel,%n)
inc %n 1
}
}
on *:disconnect:{
hsave -bo SQ.messages $sq.dir $+ SQ-hash.dat
hsave -o sq.uploads $sq.dir $+ SQuploads.dat
hsave -o sq.downloads $sq.dir $+ SQdownloads.dat
}
on *:load:{
url -n http://sq-script.tech.nu/readme.htm
}
on *:start:{
if ($version < 6.14) {
echo 4 -s Your mIRC is too old to run SQ-Script. Please update to 6.14 or higher
echo 4 -s SQ-Script will be unloaded.
.timer 1 1 .unload -rs " $+ $script $+ "
return
}
if (!$isfile($sq.dir $+ Squirrel.jpg)) { var %incomplete = 1 }
if (!$isfile($sq.dir $+ ngzipn.dll)) { var %incomplete = 1 }
if (%incomplete) {
echo 4 -s Please unpack all files from the original archive.
echo 4 -s SQ-Script will be unloaded.
.timer 1 1 .unload -rs " $+ $script $+ "
return
}
.ctcps on | .ignore on | .ial on | .raw on | .pdcc on
if (!$hget(sq.uploads)) { hmake SQ.uploads 20 }
if (!$hget(sq.downloads)) { hmake SQ.downloads 100 }
if (!$hget(sq.messages)) { hmake SQ.messages 10 }
if (!$hget(sq.temps)) { hmake sq.temps 50 }
if (!$hget(sq.vars)) {
hmake sq.vars 50
sq.ini2hash
}
if ($isfile($sq.dir $+ SQ-hash.dat)) { hload -b SQ.messages $sq.dir $+ SQ-hash.dat }
if ($isfile($sq.dir $+ SQdownloads.dat)) { hload SQ.downloads $sq.dir $+ SQdownloads.dat }
if ($isfile($sq.dir $+ SQuploads.dat)) { hload SQ.uploads $sq.dir $+ SQuploads.dat }
.echo -q $findfile($sq.dir,Matches-SearchID*,0,.remove $+(",$1-,"))
.echo -q $findfile($sq.dir,SQ.tempfiles*,0,.remove $+(",$1-,"))
.echo -q $findfile($sq.dir,* Fileslist *,0,.remove $+(",$1-,"))
var %num = 1,%time = $calc($ctime -604800)
while (%num <= $hget(sq.downloads,0).item) {
var %var = $hget(sq.downloads,%num).item
if (%var < %time) { hdel sq.downloads %var }
else { inc %num 1 }
}
var %num = 1
while (%num <= $hget(sq.uploads,0).item) {
var %var = $hget(sq.uploads,%num).item
if (%var < %time) { hdel sq.uploads %var }
else { inc %num 1 }
}
.timer -o 1 2 SQ.event
if ($SQ.get(window.state) == normal) { window -al15e @SQ-script! 200 200 700 400 }
else { window -al15dh @SQ-script! 200 200 700 400 }
sq.sysmsg SQ-Script v $+ $sq.version running....
if ($sq.get(sq.lock)) { sq.sysmsg SQ-script is locked | sq.set lock $sq.get(sq.lock) }
if ($server) { sq.iplookup | sq.banner }
if ($sq.get(sound.winamp.wakeup)) { .timersq.wakeup -o $sq.get(sound.winamp.hour) $+ : $+ $sq.get(sound.winamp.minutes) 1 1 sq.wakeup }
}
on *:Exit:{
hsave -bo SQ.messages $sq.dir $+ SQ-hash.dat
hsave -o sq.uploads $sq.dir $+ SQuploads.dat
hsave -o sq.downloads $sq.dir $+ SQdownloads.dat
if ($sq.get(lock)) { sq.set sq.lock $sq.get(lock) }
if ($sq.get(ftp.status) && $sq.get(ftp.killserver)) { SQ.runftp -EXIT }
}
;##################################ON TEXT Section#########################################
on ^*:text:$($sq.get(trigger.stat)):?:{ if ($SQ.get(stat.status)) { SQ.stats | haltdef } }
on *:text:!free &:#:{
if ($1 == !free && $sq.get(ftp.!free)) {
if ($2 == download && $sq.setvariables(^freedown)) { .notice $nick I can accept $sq.setvariables(^freedown) more users for download on $sq.get(trigger.ftp) }
elseif ($2 == upload && $sq.setvariables(^freeup)) { .notice $nick I can accept $sq.setvariables(^freeup) more users for upload on $sq.get(trigger.ftp) }
}
}
on *:text:$($SQ.get(trigger.FTP)):#:{
if (!$sq.get(trigger.ctcp) && $SQ.get(trigger.status) && !$sq.istok(ftp.denynick,$nick) && !$sq.istok(ftp.denyaddress,$address($nick,3))) {
if ($sq.get(triggerbusy)) { .notice $nick I'm busy right now with $gettok($sq.get(triggerbusy),1,32) $+ . Please wait }
elseif (!$SQ.get(ftp.status)) { .notice $nick FTP is down...sorry }
elseif ($SQ.get(msg.triggerO $+ $chan) && $nick isop $chan) { sq.trigger O }
elseif ($sq.get(msg.triggerV $+ $chan) && $nick isvo $chan) { sq.trigger V }
elseif ($sq.get(msg.triggerR $+ $chan) && $nick isreg $chan) { sq.trigger R }
elseif ($sq.get(msg.triggerA $+ $chan)) { sq.trigger A }
else { .notice $nick You may not use this trigger }
}
}
on *:text:$($SQ.get(trigger.files)):#:{
if (!$isfile($sq.get(@find.fileslist))) { return }
var %name = $me Fileslist [ $+ $asctime($file($sq.get(@find.fileslist)).mtime,dd.mm.yy) $+ ].txt.gz
if ($lock(dll)) {
sq.sysmsg Could not compress Fileslist. Please enable the use of DLLs in the mIRC options
.dcc send $nick $sq.get(@find.fileslist)
}
elseif ($isfile($+(",$sq.dir,%name,"))) {
.notice $nick Sending you %name (Use WinZIP to unpack)3»SQ-Script«
.dcc send $nick $+(",$sq.dir,%name,")
.timerremovefileslist -o 1 300 .remove $+(",$sq.dir,%name,")
}
elseif ($dll($sq.dir $+ ngzipn.dll,zip,$sq.get(@find.fileslist))) {
.rename $sq.get(@find.fileslist) $+ .gz $+(",$sq.dir,%name,")
.notice $nick Sending you %name (Use WinZIP to unpack)3»SQ-Script«
.dcc send $nick $+(",$sq.dir,%name,")
.timerremovefileslist -o 1 300 .remove $+(",$sq.dir,%name,")
}
}
on *:text:$(* $+ $me $+ *):#:{
if ($len($me) <= 4 && (!$istok($remove($strip($1-),@,+),$me,32) || $me != $mid($1,$calc($int($calc($len($remove($1,:)) /2 - $len($me) /2)) +1),$len($me))) || »SQ-Script« isin $strip($1-)) { return }
if ($istok($sq.get(sq.notifier.nolisten),$chan,44)) { return }
if ($sq.istok(request.nick,$nick) || $sq.istok(request.address,$address($nick,3))) {
if ($sq.istok(request.address,$address($nick,3))) { var %num = $sq.findtok(request.address,$address($nick,3)) }
else { var %num = $sq.findtok(request.nick,$nick) }
if ($sq.tok(request.chan,%num) != $chan) { return }
echo # $+ $timestamp < $+ $nick $+ > $1-
var %silent = 1
}
if (($chan != $active || !$appactive) && !$away) {
if ($SQ.get(sq.notifier)) {
var %active = $active
sq.set messengerchan $chan
window -dh0roap +Lsb @SQ-Messenger 0 0 480 23
.timerSQ.close.messenger -o 1 7 window -c @SQ-Messenger
drawfill @sq-messenger $gettok($SQ.get(color.notifier),2,44) 5 0 0 480 23
drawtext -c @SQ-Messenger $gettok($SQ.get(color.notifier),1,44) fixedsys 9 1 0 480 23 You were mentioned by $nick in $chan
if ($appactive && $window(%active) && !$gettok(%active,2,32)) { window -a %active }
elseif ($gettok(%active,2,32)) { window -a " $+ %active $+ " }
}
if ($SQ.get(sound.onnick)) { .splay " $+ $SQ.get(sound.nick) $+ " }
}
var %temptext = 4 $+ $me $+
if ($away && $nick !isin $SQ.get(notelist) && $SQ.get(away.time) && $sq.get(away.notice) && !%silent) {
.notice $nick I'm currently away: $awaymsg (gone for $duration($awaytime) $+ )
sq.set 300 notelist $addtok($SQ.get(notelist),$nick,59)
}
if ($away) && ($SQ.get(sq.messenger) == AWAY) { SQ.sysmsg ( $+ $nick $+ / $+ $chan $+ ) $replace($1-,$me,%temptext) }
elseif ($SQ.get(sq.messenger) == ALWAYS) { SQ.sysmsg ( $+ $nick $+ / $+ $chan $+ ) $replace($1-,$me,%temptext) }
}
menu @sq-messenger {
sclick:{
window -a $sq.get(messengerchan)
.timerSQ.close.messenger -o 1 0 window -c @SQ-Messenger
splay stop
}
rclick:{
window -a $sq.get(messengerchan)
.timerSQ.close.messenger -o 1 0 window -c @SQ-Messenger
splay stop
}
}
;#########################################Trigger section##############################################
alias sq.unsettriggerbusy {
if ($sq.get(triggerbusy)) {
if ($sock(sq.dcc)) sockclose sq.dcc
if ($sock(sq.chat)) sockclose sq.chat
sq.del triggerbusy breakpoint
}
}
alias sq.dcc {
if ($sock(sq.dcc) || $sock(sq.chat)) { return }
if ($sq.get(trigger.chatport)) {
if ($sq.get(trigger.chatport) isnum) {
var %port = $sq.get(trigger.chatport)
}
else {
var %port = $rand( [ $replace($sq.get(trigger.chatport),$chr(45),$chr(44)) ] )
}
}
else {
var %port = $rand(50000,65000)
}
while (!$portfree(%port)) {
if ($sq.get(trigger.chatport) == %port) {
sq.sysmsg 4Error opening port %port to establish a DCC CHAT connection to $1
sq.sysmsg 4Please fix your settings.
.notice $1 Some connection error occured. Please wait until this problem has been fixed.
return
}
else {
if ($sq.get(trigger.chatport)) {
if ($sq.get(trigger.chatport) isnum) {
var %port = $sq.get(trigger.chatport)
}
else {
var %port = $rand( [ $replace($sq.get(trigger.chatport),$chr(45),$chr(44)) ] )
}
}
else {
var %port = $rand(50000,65000)
}
}
}
socklisten sq.dcc %port
.msg $1 $chr(1) $+ DCC CHAT chat $longip($ip) %port $+ $chr(1)
.notice $1 You have a DCC CHAT pending. timeout in 60secs
.timersq.dcc_close 1 60 sockclose sq.dcc
}
on *:socklisten:sq.dcc:{
sockaccept sq.chat
sockclose sq.dcc
.timersq.dcc_close off
.timerunsetbusy -o 1 120 sq.unsettriggerbusy $scriptline
var %chan = $gettok($sq.get(triggerbusy),2,32),%type = $gettok($sq.get(triggerbusy),3,32)
var %tempcount = 2
while (%tempcount <= $sq.num(msg.trigger $+ %type $+ $+ %chan)) {
if (^accountomat isin $sq.tok(msg.trigger $+ %type $+ $+ %chan,%tempcount)) { sq.set breakpoint %tempcount %chan %type | break }
sq.chatmsg $SQ.SetVariables($replace($sq.tok(msg.trigger $+ %type $+ $+ %chan,%tempcount),$chr(44),::))
inc %tempcount 1
}
if (!$sq.get(breakpoint)) { sq.unsettriggerbusy $scriptline }
else {
var %point = $gettok($sq.get(breakpoint),1,32)
sq.chatmsg $sq.setvariables($replace($sq.tok(msg.trigger $+ %type $+ $+ %chan,%point),^accountomat,Please enter what you want to do on my server [upload/download],$chr(44),::))
}
}
on *:sockread:sq.chat:{
if ($sockerr > 0) return
var %temp,%nick = $gettok($sq.get(triggerbusy),1,32)
sockread %temp
if (download isin %temp) {
if ($sq.gotaccount(%nick)) {
sq.chatmsg You may only have one account. Aborting account creation
sq.unsettriggerbusy $scriptline
return
}
var %point = $gettok($sq.get(breakpoint),1,32),%chan = $gettok($sq.get(breakpoint),2,32),%type = $gettok($sq.get(breakpoint),3,32)
var %var = $remove($sq.tok(msg.trigger $+ %type $+ $+ %chan,1),>)
if ($sq.get(ftp.maxuserdown) <= $sq.ftpdownloaders || ($gettok(%var,6,47) && $gettok(%var,6,47) <= $sq.ftpdownloaders)) {
sq.chatmsg $sq.setvariables($replace($sq.tok(msg.trigger $+ %type $+ $+ %chan,%point),^accountomat,Sorry downloads are full. try again later,$chr(44),::))
sq.unsettriggerbusy $scriptline
return
}
var %text = $replace($sq.tok(msg.trigger $+ %type $+ $+ %chan,%point),$chr(44),$chr(1))
if ($sq.get(ftp.restricthost)) { sq.chatmsg $sq.setvariables($replace(%text,^accountomat,You are required to use this IP to log in: $sock($sockname).ip,$chr(44),::)) }
sq.set triggerbusy $sq.get(triggerbusy) download
sq.accountomat %nick $sock($sockname).ip
sq.unsettriggerbusy $scriptline
return
}
elseif (upload isin %temp) {
var %point = $gettok($sq.get(breakpoint),1,32),%chan = $gettok($sq.get(breakpoint),2,32),%type = $gettok($sq.get(breakpoint),3,32)
if ($sq.get(ftp.maxuserUP) <= $sq.ftpuploaders) {
sq.chatmsg $sq.setvariables($replace($sq.tok(msg.trigger $+ %type $+ $+ %chan,%point),^accountomat,Sorry uploads are full. try again later,$chr(44),::))
sq.unsettriggerbusy $scriptline
return
}
var %text = $replace($sq.tok(msg.trigger $+ %type $+ $+ %chan,%point),$chr(44),$chr(1))
if ($sq.get(ftp.restricthost)) { sq.chatmsg $sq.setvariables($replace(%text,^accountomat,You are required to use this IP to log in: $sock($sockname).ip,$chr(44),::)) }
sq.set triggerbusy $sq.get(triggerbusy) upload
sq.accountomat %nick $sock($sockname).ip
sq.unsettriggerbusy $scriptline
return
}
}
alias sq.chatmsg {
if (!$sock(sq.chat)) { return }
sockwrite -n sq.chat $1-
}
on *:sockclose:sq.chat:{
sq.del triggerbusy breakpoint
.timerunsetbusy off
}
alias sq.trigger {
var %chan = $iif($sq.get(tempchan),$sq.get(tempchan),$chan)
sq.del tempchan
sq.set triggerbusy $nick %chan $1
.timerunsetbusy -o 1 90 sq.unsettriggerbusy $scriptline
sq.dcc $nick
}
alias sq.accountomat {
var %pass,%count = 1
var %point = $gettok($sq.get(breakpoint),1,32),%chan = $gettok($sq.get(triggerbusy),2,32),%type = $gettok($sq.get(breakpoint),3,32)
while (%count < 6) {
%pass = %pass $+ $rand(a,z)
inc %count 1
}
if ($3) { %pass = $3 }
var %var = $remove($sq.tok(msg.trigger $+ $gettok($sq.get(triggerbusy),3,32) $+ $+ $gettok($sq.get(triggerbusy),2,32),1),>)
if ($gettok($sq.get(triggerbusy),4,32) == upload) {
var %group = $sq.get(ftp.uploadgroup),%minspeed = 0,%slowcounter = 0,%limitfiles = 0,%limitmb = 0
}
else {
var %group = $gettok(%var,3,58)
var %minspeed = $gettok($gettok(%var,2,58),1,47)
var %slowcounter = $gettok($gettok(%var,2,58),2,47)
var %limitfiles = $gettok(%var,4,58)
var %limitMB = $gettok(%var,5,58)
}
if (!$sq.get(ftp.restricthost)) { var %host = * }
else { var %host = $2 }
var %result = $sq.makeaccount($1,%pass,%host,%group,%chan,%minspeed,%slowcounter,%limitfiles,%limitMB)
if ($gettok(%result,1,32)) {
if (%point) {
sq.chatmsg $replace($sq.tok(msg.trigger $+ %type $+ $+ %chan,%point),^accountomat,Account was successfully created. You have $sq.get(ftp.nouser) minutes to login)
sq.set ftplogin SQ $+ %result
sq.set ftppass %pass
var %tempcount = %point
inc %tempcount 1
while (%tempcount <= $sq.num(msg.trigger $+ %type $+ $+ %chan)) {
sq.chatmsg $SQ.SetVariables($replace($sq.tok(msg.trigger $+ %type $+ $+ %chan,%tempcount),$chr(44),::))
inc %tempcount 1
}
;sq.chatmsg 14Closing session in 30 secs
}
else {
.notice $1 Account was successfully created. You have $sq.get(ftp.nouser) minutes to login
.notice $1 ftp:// $+ SQ $+ %result $+ : $+ %pass $+ @ $+ $iif($sq.get(currentip),$sq.get(currentip),$ip) $+ : $+ $sq.setvariables(^port) $+ /
.timer 1 1 sq.del triggerbusy breakpoint
}
SQ.sysmsg An account for $gettok($sq.get(triggerbusy),4,32) has been successfully created for $1 on %chan
}
else {
.notice $1 An error occured while account creation. An errorlog has been created. Sorry for this inconvenience
sq.sysmsg 4Error on account creation for $nick $+ : $gettok(%result,2-,32)
sq.sysmsg 4This often happens when you didn't associate an ICR group with a group on your server
sq.sysmsg 4 $1 - %pass - $2 - %group - %chan - %minspeed - %slowcounter - %limitfiles - %limitMB
sq.sysmsg 4 NICK - PASS - ADDRESS - GROUP - CHAN - MINSPEED - SLOWCOUNT - FILELIMIT - MBLIMIT
}
sq.del ftplogin ftppass
}
on ^*:text:&:?:{
if (!$sq.get(querytext)) {
if ($sq.noquerytext($1-)) { haltdef }
}
else { sq.del querytext }
}
alias sq.noquerytext {
if ($1 == $SQ.get(trigger.files)) {
if (!$isfile($sq.get(@find.fileslist))) { return }
var %name = $me Fileslist [ $+ $asctime($file($sq.get(@find.fileslist)).mtime,dd.mm.yy) $+ ].txt.gz
if ($lock(dll)) {
sq.sysmsg Could not compress Fileslist. Please enable the use of DLLs in the mIRC options
.dcc send $nick $sq.get(@find.fileslist)
}
elseif ($isfile($+(",$sq.dir,%name,"))) {
.notice $nick Sending you %name 3»SQ-Script«
.dcc send $nick $+(",$sq.dir,%name,")
.timerremovefileslist -o 1 300 .remove $+(",$sq.dir,%name,")
}
elseif ($dll($sq.dir $+ ngzipn.dll,zip,$sq.get(@find.fileslist))) {
.rename $sq.get(@find.fileslist) $+ .gz $+(",$sq.dir,%name,")
.notice $nick Sending you %name 3»SQ-Script«
.dcc send $nick $+(",$sq.dir,%name,")
.timerremovefileslist -o 1 300 .remove $+(",$sq.dir,%name,")
}
return 1
}
elseif ($sq.get(trigger.stat) == $1- && $SQ.get(stat.status)) { SQ.stats $nick | return 1 }
}
alias SQ.banner {
if ($SQ.get(trigger.bannerstatus) && $SQ.get(trigger.bannerchannel) && $SQ.get(trigger.bannerdelay) isnum && $SQ.get(msg.banner) && $server) {
var %counter = 1
if (($sq.get(trigger.bannershow) && $sq.get(trigger.status)) || !$sq.get(trigger.bannershow)) {
while (%counter <= $numtok($sq.get(trigger.bannerchannel),44)) {
if ($me ison $gettok($SQ.get(trigger.bannerchannel),%counter,44)) {
var %tempcount = 1
while (%tempcount < $sq.num(msg.banner)) {
msg $gettok($SQ.get(trigger.bannerchannel),%counter,44) $SQ.SetVariables($replace($sq.tok(msg.banner,%tempcount),$chr(44),::))
inc %tempcount
}
msg $gettok($SQ.get(trigger.bannerchannel),%counter,44) $SQ.SetVariables($replace($sq.tok(msg.banner,%tempcount),$chr(44),::)) 3 $+ $chr(443) $+ SQ $+ - $+ Script $+ $chr(427)
}
else { SQ.sysmsg You are not on channel: $gettok($SQ.get(trigger.bannerchannel),%counter,44) | SQ.sysmsg FTP-add will not be sent there ! }
inc %counter 1
}
}
.timerSQ.banner 1 $sq.get(trigger.bannerdelay) SQ.banner
}
elseif ($dialog(SQ)) {
did -u SQ 515
did -o SQ 515 1 OFF
sq.set ftp.bannerstatus $false
}
}
;#################################Configuartion Section#############################
alias SQ.serverconfig {
.disable #bpftp
.disable #raidenftpd
sq.set configuringftp $true
sq.set ftp.configured $false
if ($sock(sq.ftp)) { sockclose SQ.ftp }
.timersq.ftp.check off
var %step = 1
Sq.sysmsg Starting FTPserver configuration with mIRC $version
SQ.sysmsg Step %step $+ : Set FTPserver-directory
inc %step 1
var %tempfile = $+(",$$sfile(c:\*.exe,Choose the servers EXE files,OK),")
if (G6FTPsrv.exe isin %tempfile) {
SQ.sysmsg Checking version
var %version = $shortfn($nofile(%tempfile) $+ version.txt)
if ($isfile(%version)) {
var %read = $read(%version,s,Version)
if (%read >= 2.15) {
SQ.sysmsg Found server BPFTPsrv Version %read
.echo -q $input(Please disable the password encryption now if used $+ $chr(44) else all existing accounts will become useless afterwards ! $crlf $crlf $+ Make shure the server is NOT running when clicking on OK,4,Warning)
.enable #bpftp
}
else {
SQ.sysmsg Version check failed. Check the Developers Site www.bpftpserver.com for updates. Aborting
return
}
}
else {
sq.sysmsg Could not check version.txt for version information. Aborting
return
}
}
elseif (RaidenFTPd.exe isin %tempfile) {
SQ.sysmsg Checking version
var %version = $shortfn($nofile(%tempfile) $+ Whatsnew.txt)
if ($isfile(%version)) {
var %read = $read(%version,1)
if ($gettok(%read,2,32) > 2.2 || ($gettok(%read,2,32) == 2.2 && $gettok(%read,4,32) >= 1285)) {
SQ.sysmsg Found server RaidenFTPd %read
.enable #raidenftpd
}
else {
SQ.sysmsg Version check failed. Check the Developers Site www.raidenftpd.com for updates. Aborting
return
}
}
else {
sq.sysmsg Could not check whatsnew.txt for version information. Aborting
return
}
}
else {
sq.sysmsg Unsupported server
return
}
sq.set ftp.directory $nofile(%tempfile)
SQ.FTPsetup %step
sq.menu
}
;#####################################Event section############################################
alias SQ.event {
.timerSQ.event -o 1 60 SQ.event
sq.setnickcolors
if ($sq.get(ftp.configured)) { sq.ftp.check minutepassed }
if ($SQ.get(away.autoaway.status) && $idle >= $calc($SQ.get(away.autoaway.time) * 60) && !$away) { SQ.away autoaway }
if ($away && !$sq.get(msg.away)) { sq.set msg.away $awaymsg }
if ($asctime($calc($ctime - $file($sq.get(@find.fileslist)).mtime),dd) > $sq.get(@find.fileslist.refresh) && $sq.get(@find.fileslist.refreshstatus)) { sq.fileslist.refresh }
if ($sq.get(sq.nickkeeper) && $me != $readini($mircini,mirc,nick)) { .nick $readini($mircini,mirc,nick) }
sq.setstats
sq.checkoldnos
sq.@findchecksockets
}
;####################################General alias section#####################################
raw 433:*:if ($sq.get(sq.nickkeeper)) && ($me != $readini($mircini,mirc,nick)) { haltdef }
alias sq.process {
dline -l @SQ-script! 1-
var %count = 1
while (%count <= $ini($sq.dir $+ SQftp.log,0)) {
var %address = $ini($sq.dir $+ SQftp.log,%count)
if ($ial(%address,1)) { .cnick $ial(%address,1).nick $sq.get(color.beenonftp) }
inc %count 1
}
%count = 1
while (%count <= $sq.num(ftpip)) {
var %account = $mid($sq.tok(ftpaccount,%count),3),%ip = $sq.tok(ftpip,%count),%action = $sq.tok(ftpaction,%count),%speed = $sq.tok(ftpspeed,%count),%time = $sq.tok(ftptime,%count),%nick = $sq.tok(ftpnick,%count),%netsplit = $sq.tok(ftpnetsplit,%count)
var %chan = $sq.tok(ftpchan,%count),%ident = $sq.tok(ftpident,%count),%minspeed = $sq.tok(ftpminspeed,%count),%slow = $sq.tok(ftpslow,%count),%burc = $null
var %failedup = $sq.tok(ftpfailedup,%count),%filesup = $sq.tok(ftpfilesup,%count),%filesdown = $sq.tok(ftpfilesdown,%count),%kbup = $sq.tok(ftpkbup,%count),%kbdown = $sq.tok(ftpkbdown,%count)
var %slowcounter = $sq.tok(ftpslowcounter,%count),%limitfiles = $sq.tok(ftplimitfiles,%count),%limitMB = $sq.tok(ftplimitMB,%count)
if (%nick !ison %chan) { %burc = %burc $+ }
if (%failedup > 0) { var %burc = %burc $+ }
if (%netsplit > $sq.get(ftp.netsplit) && %nick !ison %chan && %action != uploading) {
sq.sysmsg %nick was removed from server for not comming back to %chan within $sq.get(ftp.netsplit) mins
sq.delaccount %account You should have stayed in %chan
inc %count 1
continue
}
elseif (%limitmb && %kbdown > $calc(%limitMB * 1024)) {
sq.sysmsg %nick was removed from server for exceeding downloadlimit of %limitMB MB
sq.delaccount %account Download limit of %limitMB MB exceeded
inc %count 1
continue
}
elseif (%limitfiles && %filesdown > %limitfiles) {
sq.sysmsg %nick was removed from server for exceeding downloadlimit of %limitfiles files
sq.delaccount %account Download limit of %limitfiles files exceeded
inc %count 1
continue
}
elseif (%slow > %slowcounter) {
sq.ftp.tell %account Time is up you snail. Get a faster connection next time !
sq.sysmsg %nick has been removed from server for beeing to slow ( $+ %speed kb/s $+ ) %slow times in a row
sq.delaccount %account
inc %count 1
continue
}
elseif (%speed < %minspeed && %action == Downloading) {
if (!$fline(@SQ-script!,* $+ $mid($asctime(HH:nn),1,4) $+ * $+ %nick is $lower(%action) with*,1)) { SQ.sysmsg %nick is $lower(%action) with4 %speed kBytes/s }
%burc = %burc $+ $+ $SQ.get(color.downloading.slow)
rline -l @SQ-script! %count %burc $+ $+ %nick
.cnick %nick $SQ.get(color.downloading.slow)
}
elseif (%action == Downloading) {
%burc = %burc $+ $+ $SQ.get(color.downloading.ok)
rline -l @SQ-script! %count %burc $+ $+ %nick
.cnick %nick $SQ.get(color.downloading.ok)
}
elseif (%action == idle) || (%action == logged) {
if ($calc($ctime - %time) < 60) { window -g1 @SQ-script! }
%burc = %burc $+ $+ $SQ.get(color.idle)
rline -l @SQ-script! %count %burc $+ $+ %nick
.cnick %nick $SQ.get(color.idle)
}
elseif (%action == uploading) {
%burc = %burc $+ $+ $SQ.get(color.uploading)
rline -l @SQ-script! %count %burc $+ $+ %nick
.cnick %nick $SQ.get(color.uploading)
}
inc %count 1
}
}
;###################################alias section####################################
alias sq.ini2hash {
if (!$isfile($sq.dir $+ sq-script.ini)) {
sq.sysmsg Could not find existing config file. Loading defaults (on new load this is ok)
sq.setdefault
}
else {
var %count1 = 1,%count2 = 1,%ini = " $+ $sq.dir $+ SQ-script.ini $+ ",%section,%item
while ($ini(%ini,%count1)) {
%section = $ini(%ini,%count1)
%count2 = 1
while ($ini(%ini,%count1,%count2)) {
%item = $ini(%ini,%count1,%count2)
hadd -m sq.vars %section $+ . $+ %item $readini(%ini,n,%section,%item)
inc %count2 1
}
inc %count1 1
}
}
}
alias sq.set {
if ($len($2-) > 850) { echo 4 -ta SQ-script Critical var-length for: $1 $len($2-) }
if ($sq.get(updateonly) && $sq.get($1) != $null) { return }
if ($istok(away.color.sq.eggdrop.window.ftp.@find.sound.trigger.request.noflood.stat,$gettok($1,1,46),46)) {
if ($2- == $null) { sq.del $1 }
elseif ($2- != $sq.get($1)) {
writeini $sq.dir $+ SQ-script.ini $gettok($1,1,46) $gettok($1,2-,46) $2-
hadd -m sq.vars $1 $2-
}
}
elseif ($istok(msg,$gettok($1,1,46),46)) { hadd -m SQ.messages $gettok($1,2-,46) $2- }
elseif ($1 isnum) { hadd -mu [ $+ [ $1 ] ] SQ.temps $2 $3- }
else { hadd -m SQ.temps $1 $2- }
}
alias sq.inc {
if ($istok(away.color.sq.eggdrop.window.ftp.@find.sound.trigger.request.noflood.stat,$gettok($1,1,46),46)) {
hinc sq.vars $1 1
writeini $sq.dir $+ SQ-script.ini $gettok($1,1,46) $gettok($1,2-,46) $sq.get($1)
}
else { hinc SQ.temps $1 $iif($2-,$2-,1) }
}
alias sq.min {
return $iif($1 < $2,$1,$2)
}
alias sq.dec {
if ($istok(away.color.sq.eggdrop.window.ftp.@find.sound.trigger.request.noflood.stat,$gettok($1,1,46),46)) {
hdec sq.vars $1 1
writeini $sq.dir $+ SQ-script.ini $gettok($1,1,46) $gettok($1,2-,46) $sq.get($1)
}
else { hdec SQ.temps $1 $2- }
}
alias sq.app { sq.set $1 $sq.get($1) $+ ; $+ $2- }
alias sq.tok { return $gettok($sq.get($1),$2,59) }
alias sq.num { return $numtok($sq.get($1),59) }
alias sq.findtok {
if (!$3) { return $findtok($sq.get($1),$2,1,59) }
else { return $findtok($sq.get($1),$2,$3,59) }
}
alias sq.istok { return $istok($sq.get($1),$2,59) }
alias sq.add { sq.set $1 $addtok($sq.get($1),$2,59) }
alias sq.deltok { sq.set $1 $deltok($sq.get($1),$2,59) }
alias sq.rem { sq.set $1 $remtok($sq.get($1),$2,1,59) }
alias sq.put { sq.set $1 $puttok($sq.get($1),$2,$3,59) }
alias sq.get {
if ($istok(away.stat.color.sq.eggdrop.window.ftp.@find.sound.trigger.request.noflood,$gettok($1,1,46),46)) {
return $hget(sq.vars,$1)
}
elseif ($istok(msg,$gettok($1,1,46),46)) { return $hget(SQ.messages,$gettok($1,2-,46)) }
else { return $hget(SQ.temps,$1) }
}
alias sq.del {
var %delcounter = 1
while (%delcounter <= $0) {
if ($chr(42) isin $gettok($1-,%delcounter,32)) { hdel -w sq.temps $gettok($1-,%delcounter,32) }
elseif ($istok(away.color.stat.sq.eggdrop.window.ftp.@find.sound.trigger.request.noflood,$gettok($gettok($1-,%delcounter,32),1,46),46)) {
hdel sq.vars $ [ $+ [ %delcounter ] ]
remini $sq.dir $+ SQ-script.ini $gettok($gettok($1-,%delcounter,32),1,46) $gettok($gettok($1-,%delcounter,32),2-,46)
}
elseif ($istok(msg,$gettok($gettok($1-,%delcounter,32),1,46),46)) {
hdel SQ.messages $gettok($gettok($1-,%delcounter,32),2-,46)
}
else { hdel SQ.temps $gettok($1-,%delcounter,32) }
inc %delcounter 1
}
}
alias sq.info {
var %temp,%count = 1
while ($chan(%count)) { %temp = $addtok(%temp,$chan(%count),59) | inc %count }
return $me $network $server %temp
}
alias SQ.sysmsg {
if (!$window(@SQ-script!)) {
if ($sq.get(window.state) == desktop) {
window -al15dh @SQ-script! 200 200 700 400
}
else { window -l15e @SQ-script! 200 200 700 400 }
}
else { background -x @SQ-Script! }
if ($1 == -f) { echo $SQ.get(color.logging) -fi8 @SQ-script! 9,5[ $+ $asctime(HH:nn) $+ ] $1- }
echo $SQ.get(color.logging) -ni8 @SQ-script! 9,5[ $+ $asctime(HH:nn) $+ ] $1-
}
alias sq.encrypt {
var %count = 1
var %text = $2-
%count = 1
while (%count <= $len(%text)) {
if ($asc($mid(%text,%count,1)) == 32) {
%text = $mid(%text,1,$calc(%count -1)) $+ $mid(%text,$calc(%count -1),1) $+ $mid(%text,$calc(%count +1),1) $+ $mid(%text,$calc(%count +1))
}
inc %count 1
}
if ($1 == @) { var %tmpseed = $mid($file($mircexe).ctime,3,7) }
else {
while (%count <= $len($1)) {
var %tmpseed = %tmpseed $+ $asc($mid($1,%count,1))
inc %count 1
}
}
%tmpseed = $right(%tmpseed,19)
var %temp = $null
while ($len(%temp) <= $len(%text)) {
%tmpseed = $remove($abs($cos($remove($abs($log(%tmpseed)),0))),.)
%temp = %temp $+ $remove(%tmpseed,0)
}
%tmpseed = %temp
%count = 1
while (%count <= $len(%text)) {
if ($isbit($mid(%tmpseed,%count,1),$mid(%tmpseed,$calc(%count + 1),1))) { var %temptext = %temptext $+ $chr($calc($asc($mid(%text,%count,1)) + $mid(%tmpseed,%count,1))) }
else { var %temptext = %temptext $+ $chr($calc($asc($mid(%text,%count,1)) - $mid(%tmpseed,%count,1)))
}
inc %count 1
}
return $replace(%temptext,;,$chr(1))
}
alias sq.decrypt {
if ($1 == @) { var %tmpseed = $mid($file($mircexe).ctime,3,7) }
else {
var %count = 1
while (%count <= $len($1)) {
var %tmpseed = %tmpseed $+ $asc($mid($1,%count,1))
inc %count
}
}
%tmpseed = $right(%tmpseed,19)
var %temp = $null
while ($len(%temp) < $len($2-)) {
%tmpseed = $remove($abs($cos($remove($abs($log(%tmpseed)),0))),.)
%temp = %temp $+ $remove(%tmpseed,0)
}
%tmpseed = %temp
var %text = $replace($2-,$chr(1),;)
var %count = 1
while (%count <= $len(%text)) {
if ($isbit($mid(%tmpseed,%count,1),$mid(%tmpseed,$calc(%count + 1),1))) { var %temptext = %temptext $+ $replace($chr($calc($asc($mid(%text,%count,1)) - $mid(%tmpseed,%count,1))),$chr(32),$chr(1)) }
else { var %temptext = %temptext $+ $replace($chr($calc($asc($mid(%text,%count,1)) + $mid(%tmpseed,%count,1))),$chr(32),$chr(1)) }
inc %count 1
}
var %out = $replace(%temptext,$chr(1),$chr(32))
%count = 1
while (%count < $len(%out)) {
if ($mid(%out,%count,1) == $mid(%out,$calc(%count -1),1)) && ($mid(%out,$calc(%count +1),1) == $mid(%out,$calc(%count +2),1)) && ($mid(%out,$calc(%count +1),1) != $mid(%out,%count,1)) {
%out = $mid(%out,1,$calc(%count -1)) $mid(%out,$calc(%count +2))
}
inc %count 1
}
return %out
}
alias sq.setstats {
if ($ticks > $calc($SQ.get(stat.ticksrecord) +0)) { sq.set stat.ticksrecord $ticks }
sq.set stat.disk.free ;
sq.set stat.disk.size ;
var %tempdrive = 99
while (%tempdrive < 120 && $disk($chr(%tempdrive $+ :)).type == fixed) {
sq.app stat.disk.free $disk($chr(%tempdrive $+ :)).free
sq.app stat.disk.size $disk($chr(%tempdrive $+ :)).size
inc %tempdrive 1
}
sq.set stat.disk.num $calc(%tempdrive - 99)
}
alias sq.setnickcolors {
while ($cnick(1)) { .cnick -r $cnick(1) }
if ($sq.get(gimick)) {
var %count = 1
while (%count <= $ial(*,0)) {
.cnick $ial(*,%count) $gettok(3.5.7.9.10,$rand(1,5),46)
inc %count 1
}
}
}
alias sq.reminisection {
window -h @sq.tmp
loadbuf @sq.tmp $1
var %n = $fline(@sq.tmp,$chr(91) $+ $2 $+ $chr(93),1)
dline @sq.tmp %n
while ($chr(91) $+ * $+ $chr(93) !iswm $line(@sq.tmp,%n) && %n <= $line(@sq.tmp,0)) {
dline @sq.tmp %n
}
savebuf @sq.tmp $1
window -c @sq.tmp
}
alias SQ.SetVariables {
var %tempmsg = $1-
%tempmsg = $replace(%tempmsg,::,$chr(44))
if ($1- == ^@findresults) { %tempmsg = <@findresults> }
while (^diskfill[ isin %tempmsg) {
var %tempdisk = $asc($mid($mid(%tempmsg,$calc($pos(%tempmsg,^diskfill[) + 10)),1,$calc($pos($mid(%tempmsg,$calc($pos(%tempmsg,^diskfill[) + 10)),]) -1)))
if (%tempdisk < 89) && (%tempdisk > 66) { var %tempdisk = $calc(%tempdisk - 66) }
else { var %tempdisk = $calc(%tempdisk - 98) }
if (%tempdisk > $sq.get(stat.disk.num)) { %tempmsg = $replace(%tempmsg,^diskfill[ $+ $chr($calc(%tempdisk + 98)) $+ ],<not available>) }
else { %tempmsg = $replace(%tempmsg,^diskfill[ $+ $chr($calc(%tempdisk + 98)) $+ ],$bytes($calc($sq.tok(stat.disk.size,%tempdisk) - $sq.tok(stat.disk.free,%tempdisk)),3).suf) }
}
while (^diskfree[ isin %tempmsg) {
var %tempdisk = $asc($mid($mid(%tempmsg,$calc($pos(%tempmsg,^diskfree[) + 10)),1,$calc($pos($mid(%tempmsg,$calc($pos(%tempmsg,^diskfree[) + 10)),]) -1)))
if (%tempdisk < 89) && (%tempdisk > 66) { var %tempdisk = $calc(%tempdisk - 66) }
else { var %tempdisk = $calc(%tempdisk - 98) }
if (%tempdisk > $sq.get(stat.disk.num)) { %tempmsg = $replace(%tempmsg,^diskfree[ $+ $chr($calc(%tempdisk + 98)) $+ ],<not available>) }
else { %tempmsg = $replace(%tempmsg,^diskfree[ $+ $chr($calc(%tempdisk + 98)) $+ ],$bytes($sq.tok(stat.disk.free,%tempdisk),3).suf) }
}
while (^disksize[ isin %tempmsg) {
var %tempdisk = $asc($mid($mid(%tempmsg,$calc($pos(%tempmsg,^disksize[) + 10)),1,$calc($pos($mid(%tempmsg,$calc($pos(%tempmsg,^disksize[) + 10)),]) -1)))
if (%tempdisk < 89) && (%tempdisk > 66) { var %tempdisk = $calc(%tempdisk - 66) }
else { var %tempdisk = $calc(%tempdisk - 98) }
if (%tempdisk > $sq.get(stat.disk.num)) { %tempmsg = $replace(%tempmsg,^disksize[ $+ $chr($calc(%tempdisk + 98)) $+ ],<not available>) }
else { %tempmsg = $replace(%tempmsg,^disksize[ $+ $chr($calc(%tempdisk + 98)) $+ ],$bytes($sq.tok(stat.disk.size,%tempdisk),3).suf) }
}
if (^diskfreetotal isin %tempmsg) {
var %counter = 1
while (%counter <= $sq.get(stat.disk.num)) { var %tmp.msg = $calc(%tmp.msg + $sq.tok(stat.disk.free,%counter)) | inc %counter 1 }
%tempmsg = $replace(%tempmsg,^diskfreetotal,$bytes(%tmp.msg,3).suf)
}
if (^disksizetotal isin %tempmsg) {
var %counter = 1
unset %tmp.msg
while (%counter <= $sq.get(stat.disk.num)) { var %tmp.msg = $calc(%tmp.msg + $sq.tok(stat.disk.size,%counter)) | inc %counter 1 }
%tempmsg = $replace(%tempmsg,^disksizetotal,$bytes(%tmp.msg,3).suf)
}
if (^diskfilltotal isin %tempmsg) {
var %counter = 1
unset %tmp.msg
while (%counter <= $sq.get(stat.disk.num)) {
var %tmp.msg = $calc(%tmp.msg + $sq.tok(stat.disk.size,%counter) - $sq.tok(stat.disk.free,%counter))
inc %counter 1
}
%tempmsg = $replace(%tempmsg,^diskfilltotal,$bytes(%tmp.msg,3).suf)
}
if (!$nick) { %tempmsg = $replace(%tempmsg,^nick,$me) }
else { %tempmsg = $replace(%tempmsg,^nick,$nick) }
if (^matches isin %tempmsg && %@findhits) { %tempmsg = $replace(%tempmsg,^matches,%@findhits) }
elseif (^matches isin %tempmsg) { %tempmsg = $replace(%tempmsg,^matches,0) }
if (^searchword isin %tempmsg) && (%@findsearchword) { %tempmsg = $replace(%tempmsg,^searchword,%@findsearchword) }
elseif (^searchword isin %tempmsg) { %tempmsg = $replace(%tempmsg,^searchword,(No @find used)) }
if (^users isin %tempmsg) {
var %tmp.count = 1
unset %tmp.msg
while (%tmp.count <= $sq.num(ftpnick)) {
if ($numtok(%tmp.msg,32) > 0) { var %tmp.msg = %tmp.msg $+ $chr(44) }
var %tmp.msg = %tmp.msg $sq.tok(ftpnick,%tmp.count)
inc %tmp.count 1
}
if (%tmp.msg) { %tempmsg = $replace(%tempmsg,^users,%tmp.msg) }
else { %tempmsg = $replace(%tempmsg,^users,<nobody>) }
}
if (^userup isin %tempmsg) {
var %tmp.count = 1
var %acc = $sq.ftpuploaders(1)
unset %tmp.msg
while (%tmp.count <= $sq.num(ftpnick)) {
if ($numtok(%tmp.msg,32) > 0 && $istok(%acc,$sq.tok(ftpaccount,%tmp.count),59)) { var %tmp.msg = %tmp.msg $+ $chr(44) }
if ($istok(%acc,$sq.tok(ftpaccount,%tmp.count),59)) { var %tmp.msg = %tmp.msg $sq.tok(ftpnick,%tmp.count) }
inc %tmp.count 1
}
if (%tmp.msg) { %tempmsg = $replace(%tempmsg,^userup,%tmp.msg) }
else { %tempmsg = $replace(%tempmsg,^userup,<nobody>) }
}
if (^userdown isin %tempmsg) {
var %tmp.count = 1
var %acc = $sq.ftpdownloaders(1)
unset %tmp.msg
while (%tmp.count <= $sq.num(ftpnick)) {
if ($numtok(%tmp.msg,32) > 0 && $istok(%acc,$sq.tok(ftpaccount,%tmp.count),59)) { var %tmp.msg = %tmp.msg $+ $chr(44) }
if ($istok(%acc,$sq.tok(ftpaccount,%tmp.count),59)) { var %tmp.msg = %tmp.msg $sq.tok(ftpnick,%tmp.count) }
inc %tmp.count 1
}
if (%tmp.msg) { %tempmsg = $replace(%tempmsg,^userdown,%tmp.msg) }
else { %tempmsg = $replace(%tempmsg,^userdown,<nobody>) }
}
if (^newonserver isin %tempmsg) {
var %file = $sq.dir $+ sq.NoS.txt
if ($sq.get(newonservercount) >= $lines(%file)) { sq.set newonservercount 1 }
elseif ($sq.get(ftp.nosrand)) { sq.set newonservercount $rand(1,$lines(%file)) }
else { sq.inc newonservercount }
var %line = $gettok($read(%file,$sq.get(newonservercount)),2-,59)
%tempmsg = $replace(%tempmsg,^newonserver,$iif(%line,%line,<nothing new>))
}
if (^downloads24h isin %tempmsg) {
var %num = 1,%time = $calc($ctime -86400),%data = 0
if (!$hget(sq.downloads)) { hmake sq.downloads 20 }
while (%num <= $hget(sq.downloads,0).item) {
var %var = $hget(sq.downloads,%num).item
if (%var >= %time) { inc %data $hget(sq.downloads,%var) }
inc %num 1
}
%tempmsg = $replace(%tempmsg,^downloads24h,$bytes($calc(%data *1024),3).suf)
}
if (^downloads168h isin %tempmsg) {
var %num = 1,%time = $calc($ctime -604800),%data = 0
if (!$hget(sq.downloads)) { hmake sq.downloads 20 }
while (%num <= $hget(sq.downloads,0).item) {
var %var = $hget(sq.downloads,%num).item
if (%var >= %time) { inc %data $hget(sq.downloads,%var) }
inc %num 1
}
%tempmsg = $replace(%tempmsg,^downloads168h,$bytes($calc(%data *1024),3).suf)
}
if (^downloads720h isin %tempmsg) {
var %num = 1,%time = $calc($ctime -2592000),%data = 0
if (!$hget(sq.downloads)) { hmake sq.downloads 20 }
while (%num <= $hget(sq.downloads,0).item) {
var %var = $hget(sq.downloads,%num).item
if (%var >= %time) { inc %data $hget(sq.downloads,%var) }
inc %num 1
}
%tempmsg = $replace(%tempmsg,^downloads720h,$bytes($calc(%data *1024),3).suf)
}
if (^uploads24h isin %tempmsg) {
var %num = 1,%time = $calc($ctime -86400),%data = 0
if (!$hget(sq.downloads)) { hmake sq.downloads 20 }
while (%num <= $hget(sq.uploads,0).item) {
var %var = $hget(sq.uploads,%num).item
if (%var >= %time) { inc %data $hget(sq.uploads,%var) }
inc %num 1
}
%tempmsg = $replace(%tempmsg,^uploads24h,$bytes($calc(%data *1024),3).suf)
}
if (^uploads168h isin %tempmsg) {
var %num = 1,%time = $calc($ctime -604800),%data = 0
if (!$hget(sq.downloads)) { hmake sq.uploads 20 }
while (%num <= $hget(sq.uploads,0).item) {
var %var = $hget(sq.uploads,%num).item
if (%var >= %time) { inc %data $hget(sq.uploads,%var) }
inc %num 1
}
%tempmsg = $replace(%tempmsg,^uploads168h,$bytes($calc(%data *1024),3).suf)
}
if (^uploads720h isin %tempmsg) {
var %num = 1,%time = $calc($ctime -2592000),%data = 0
if (!$hget(sq.downloads)) { hmake sq.uploads 20 }
while (%num <= $hget(sq.uploads,0).item) {
var %var = $hget(sq.uploads,%num).item
if (%var >= %time) { inc %data $hget(sq.uploads,%var) }
inc %num 1
}
%tempmsg = $replace(%tempmsg,^uploads720h,$bytes($calc(%data *1024),3).suf)
}
%tempmsg = $replace(%tempmsg,^bandwidthdown,$calc($sq.get(ftpbandwidthup) +0))
%tempmsg = $replace(%tempmsg,^bandwidthup,$calc($sq.get(ftpbandwidthdown) +0))
%tempmsg = $replace(%tempmsg,^maxuserup,$sq.get(ftp.maxuserup))
%tempmsg = $replace(%tempmsg,^maxuserdown,$sq.get(ftp.maxuserdown))
%tempmsg = $replace(%tempmsg,^freeup,$calc($sq.get(ftp.maxuserup) - $sq.ftpuploaders))
%tempmsg = $replace(%tempmsg,^freedown,$calc($sq.get(ftp.maxuserdown) - $sq.ftpdownloaders))
%tempmsg = $replace(%tempmsg,^port,$sq.get(ftp.port))
%tempmsg = $replace(%tempmsg,^SQ,$sq.version)
%tempmsg = $replace(%tempmsg,^list,/msg $me $SQ.get(trigger.files))
%tempmsg = $replace(%tempmsg,^ServingFiles,$lines($SQ.get(@find.fileslist)))
%tempmsg = $replace(%tempmsg,^ServingData,$iif($sq.get(stat.servingdata),$bytes($sq.get(stat.servingdata),3).suf,0))
%tempmsg = $replace(%tempmsg,^loggedup,$sq.ftpuploaders)
%tempmsg = $replace(%tempmsg,^loggeddown,$sq.ftpdownloaders)
%tempmsg = $replace(%tempmsg,^logged,$SQ.get(ftplogged))
%tempmsg = $replace(%tempmsg,^IP,$iif($sq.get(currentip),$sq.get(currentip),$ip))
%tempmsg = $replace(%tempmsg,^accountomat,<accountmaker>)
%tempmsg = $replace(%tempmsg,^runHH,$asctime($calc($ticks / 1000 + $timezone),HH))
%tempmsg = $replace(%tempmsg,^runMM,$asctime($calc($ticks / 1000 + $timezone),nn))
%tempmsg = $replace(%tempmsg,^runSS,$asctime($calc($ticks / 1000 + $timezone),ss))
%tempmsg = $replace(%tempmsg,^runDD,$asctime($calc($ticks / 1000 + $timezone),dd))
%tempmsg = $replace(%tempmsg,^runMO,$asctime($calc($ticks / 1000 + $timezone),mm))
%tempmsg = $replace(%tempmsg,^recorduptime,$duration($calc($SQ.get(stat.ticksrecord) / 1000),2))
%tempmsg = $replace(%tempmsg,^recorddownload,$sq.get(stat.bestdownload))
%tempmsg = $replace(%tempmsg,^recordupload,$sq.get(stat.bestupload))
%tempmsg = $replace(%tempmsg,^trigger,$iif($sq.get(trigger.ctcp),/ctcp $me $SQ.get(trigger.ftp),$SQ.get(trigger.ftp)))
%tempmsg = $replace(%tempmsg,^connectionsup,$SQ.get(stat.call))
%tempmsg = $replace(%tempmsg,^connections24,$SQ.get(stat.c24h))
%tempmsg = $replace(%tempmsg,^serveruptimeMM,$SQ.get(stat.suptimenn))
%tempmsg = $replace(%tempmsg,^serveruptimeHH,$SQ.GET(stat.suptimehh))
%tempmsg = $replace(%tempmsg,^serveruptimeDD,$SQ.get(stat.suptimedd))
%tempmsg = $replace(%tempmsg,^serveruptimetotal,$SQ.get(stat.suptimetotal))
%tempmsg = $replace(%tempmsg,^serverup,$SQ.get(stat.sup))
%tempmsg = $replace(%tempmsg,^serverdown,$SQ.get(stat.sdown))
%tempmsg = $replace(%tempmsg,^servermoved,$SQ.get(stat.sall))
%tempmsg = $replace(%tempmsg,^sstartup,$SQ.get(stat.upup))
%tempmsg = $replace(%tempmsg,^sstartdown,$SQ.get(stat.updown))
%tempmsg = $replace(%tempmsg,^sstartmoved,$SQ.get(stat.upall))
%tempmsg = $replace(%tempmsg,^sstartFILESup,$SQ.get(stat.upfilesup))
%tempmsg = $replace(%tempmsg,^sstartFILESdown,$SQ.get(stat.upfilesdown))
%tempmsg = $replace(%tempmsg,^sstartFILESmoved,$SQ.get(stat.upfilesall))
%tempmsg = $replace(%tempmsg,^serverversion,$SQ.get(stat.g6version))
%tempmsg = $replace(%tempmsg,^sysuptime,$duration($calc($ticks /1000)))
%tempmsg = $replace(%tempmsg,^login,$iif($sq.get(ftplogin),$sq.get(ftplogin),LOGIN))
%tempmsg = $replace(%tempmsg,^password,$iif($sq.get(ftppass),$sq.get(ftppass),PASSWORD))
%tempmsg = $replace(%tempmsg,^RAM,$SQ.get(stat.ram))
%tempmsg = $replace(%tempmsg,^CPU,$SQ.get(stat.cpu))
%tempmsg = $replace(%tempmsg,^OSversion,$iif($SQ.get(stat.osver),$SQ.get(stat.osver),$OS))
return $eval(%tempmsg,2)
}
alias sq.gimick {
var %count = 1,%buf,%txt = $strip($replace($1,$chr(32),$chr(1))),%color = $iif($2,$2,3 5 7 9 10)
while (%count <= $len(%txt) && %count < 150) {
%buf = %buf $+ $+ $gettok(%color,$rand(1,$numtok(%color,32)),32) $+ $+ $mid(%txt,%count,1)
inc %count 1
}
return $replace(%buf,$chr(1),$chr(32))
}
alias sq.seconds {
var %secs
inc %secs $calc($gettok($1,1,58) *3600)
inc %secs $calc($gettok($1,2,58) *60)
inc %secs $gettok($1,3,58)
return %secs
}
alias sq.dir { return $shortfn($scriptdir) }
;############################################sfv checker#############################################
alias sq.sfvchecker {
var %count = 1,%dir = $nofile($1),%result,%checked
while (%count <= $lines(" $+ $1 $+ ")) {
%read = $read(" $+ $1 $+ ",%count)
if ($mid(%read,1,1) != $chr(59) && $len($gettok(%read,$numtok(%read,32),32)) == 8) {
var %file = %dir $+ $gettok(%read,1- $+ $calc($numtok(%read,32) -1),32)
inc %checked 1
if ($istok($2,%checked,59) || ($isfile(" $+ %file $+ ") && $crc(" $+ %file $+ ") == $gettok(%read,$numtok(%read,32),32))) {
if ($isfile(" $+ %file $+ -missing")) { .remove " $+ %file $+ -missing" }
if ($isfile(" $+ %file $+ -incomplete")) { .remove " $+ %file $+ -incomplete" }
%result = %result 0 $+ %count
}
elseif ($isfile(" $+ %file $+ ")) {
if ($isfile(" $+ %file $+ -missing")) { .remove " $+ %file $+ -missing" }
if (!$isfile(" $+ %file $+ -incomplete")) { write -c " $+ %file $+ -incomplete" }
%result = %result 1 $+ %count
}
else {
if (!$isfile(" $+ %file $+ -missing")) { write -c " $+ %file $+ -missing" }
if ($isfile(" $+ %file $+ -incomplete")) { .remove " $+ %file $+ -incomplete" }
%result = %result 2 $+ %count
}
}
inc %count 1
}
return %result
}
alias sq.lock {
if ($1) {
sq.set sq.lock $1
sq.set lock $1
sq.sysmsg SQ-script locked
}
}
alias sq.sfvmonitor {
if (!$sq.get(ftp.usesfv)) { return }
var %tempcount = 1,%address
while (%tempcount <= $ini($sq.dir $+ SQsfvmonitor.log,0)) {
var %sect = $ini($sq.dir $+ SQsfvmonitor.log,%tempcount),%address = $readini($sq.dir $+ SQsfvmonitor.log,%sect,address),%lastfile = $readini($sq.dir $+ SQsfvmonitor.log,%sect,sfvfile),%ok,%nick = $readini($sq.dir $+ SQsfvmonitor.log,%sect,nick)
if ($ial(%address,1) || $ial($mask(%address,3),1) || %nick) {
while ($readini($sq.dir $+ SQsfvmonitor.log,%sect,%count)) {
if (uploaded successfully ! isin $readini($sq.dir $+ SQsfvmonitor.log,%sect,%count)) { %ok = $addtok(%ok,%count,59) }
inc %count 1
}
%count = 1
var %result = $sq.sfvchecker(%lastfile,%ok),%count = 1,%dirty = 0,%nick = $iif($ial(%address,1).nick,$ial(%address,1).nick,%nick),%dir = $nofile(%lastfile)
while (%count <= $numtok(%result,32)) {
var %status = $mid($gettok(%result,%count,32),1,1),%line = $mid($gettok(%result,%count,32),2),%checked = $read(" $+ %lastfile $+ ",%line)
if (%status == 0) { writeini -n $sq.dir $+ SQsfvmonitor.log %sect %count " $+ $mid(%checked,1,$calc($len(%checked) -9)) $+ " uploaded successfully ! }
elseif (%status == 1) { writeini -n $sq.dir $+ SQsfvmonitor.log %sect %count " $+ $mid(%checked,1,$calc($len(%checked) -9)) $+ " (CRC failed) | inc %dirty }
else { writeini -n $sq.dir $+ SQsfvmonitor.log %sect %count " $+ $mid(%checked,1,$calc($len(%checked) -9)) $+ " (File not found) | inc %dirty }
inc %count 1
}
if (!%dirty) {
var %n = $finddir(%dir,FileStatus *,1,.rmdir " $+ $1- $+ ")
sq.sysmsg %nick successfully uploaded all files to $nofile(%lastfile) $+ . All CRC ok
$sq.reminisection($sq.dir $+ SQsfvmonitor.log,%sect)
if ($isdir(" $+ $gettok(%dir,1-,92) - INCOMPLETE")) { rmdir " $+ $gettok(%dir,1-,92) - INCOMPLETE" }
dec %tempcount 1
}
else {
dec %count
var %percent = $int($calc((%count - %dirty) / %count * 100))
var %n = $finddir(%dir,FileStatus *,1,.rmdir " $+ $1- $+ ")
mkdir " $+ %dir $+ FileStatus $chr(91) $+ $str($chr(35),$int($calc(%percent /5))) $+ $str(_,$calc(20- $int($calc(%percent /5)))) $+ $chr(93) %percent $+ $chr(37) OK"
if (!$isdir(" $+ $gettok(%dir,1-,92) - INCOMPLETE")) { mkdir " $+ $gettok(%dir,1-,92) - INCOMPLETE" }
}
}
inc %tempcount 1
}
}
alias sq.checkoldnos {
if (!$sq.get(status.deloldnos)) { return }
var %count = 1,%file = $sq.dir $+ sq.NoS.txt
While (%count <= $Lines(%file)) {
var %line = $read(%file,%count)
if ($calc($ctime - $gettok(%line,1,59)) > $sq.seconds($sq.get(trigger.nosdelage) $+ :00:00)) { write -d $+ %count %file }
else { inc %count }
}
}
;#####################################Default settings#####################################
alias SQ.setdefault {
.disable #bpftp
.disable #raidenftpd
if ($hget(sq.messages)) { hfree sq.messages | hmake SQ.messages 10 }
sq.set msg.@find I found ^matches match(es) on ^searchword in my Database!My siteinfo on ^trigger / My fileslist on ^list;^@findresults
sq.set noflood.ctcp.ignore SLOTS;MP3;MPG;AVI;ASF;MPEG | sq.set color.idle 1 | sq.set color.uploading 3 | sq.set color.downloading.ok 12
sq.set color.downloading.slow 4 | sq.set trigger.bannerchannel #advertize_here | sq.set trigger.bannerdelay 3600
sq.set msg.banner Login to my FTP with ^trigger (or whatever text you like) | sq.set trigger.ftp ! $+ $me
sq.set trigger.files ! $+ $me $+ -list | sq.set trigger.stat !stats $me | sq.set @find.channel #chan | sq.set @find.fileshits 20
sq.set color.logging 3 | sq.set color.notifier 5,9 | sq.set stat.refresh 60 | sq.set away.autoaway.time 15
sq.set noflood.protecttime 3 | sq.set away.exclude #noawaymsg | sq.set ftp.netsplit 20 | sq.set ftp.nouser 5
sq.set ftp.maxuserup 2 | sq.set ftp.maxuserdown 2 | sq.set trigger.status 0 | sq.set ftp.status 0
sq.set @find.status 0 | sq.set stat.status 0 | sq.set trigger.bannerstatus 0 | sq.set ftp.login 0
sq.set away.silent $true | sq.set sound.request $true | sq.set away.autoaway.status 0 | sq.set noflood.dccblock $true
sq.set noflood.ctcpblock $true | sq.set ftp.startserver 1 | sq.set away.tray $true | sq.set ftp.killserver 0
sq.set sq.nickkeeper 0 | sq.set stat.status.ftp 0 | sq.set ftp.deloldlog $true | sq.set ftp.!free $true
sq.set sound.onquery 0 | sq.set window.backgrnd 0 | sq.set sound.onnick 0 | sq.set sq.notifier 1
sq.set eggdrop.status 0 | sq.set eggdrop.fastrevenge 0 | sq.set eggdrop.kickondeopme 0
sq.set eggdrop.protect.kick 0 | sq.set eggdrop.reop 0 | sq.set eggdrop.banondeopme 0 | sq.set eggdrop.protect.ban 0
sq.set eggdrop.protect 0 | sq.set eggdrop.formodes 0 | sq.set eggdrop.keepcon $true | sq.set eggdrop.onlycon 0
sq.set sq.messenger Away | sq.set window.state normal | sq.set ftp.port 23 | sq.set trigger.ctcp 0
sq.set ftp.sqlogin SQ-script | sq.set ftp.sqpass SQ-script | sq.set request.status 0 | sq.set ftp.configured 0
sq.set ftp.directory 0 | sq.set msg.stat My PC is running the ^runDD.day for ^runHH:^runMM:^runSS | sq.set @find.ctcp 0
sq.del @find.fileslist | sq.set status.fileslists.refresh 7
sq.set @find.fileslist.refresh 0 | write -c $sq.dir $+ sq.NoS.txt | sq.set trigger.nosdelage 48
sq.set ftp.removeoldnos 0 | sq.set away.notice 0 | sq.set color.beenonftp 3 | sq.set @find.fileslist.refresh 7
sq.set ftp.maxservstatus 0 | sq.set ftp.maxserv 5120 | sq.set sound.silence.begin 22 | sq.set sound.silence.stop 8 | sq.set ftp.restricthost 1
sq.set sound.winamp.hour 8 | sq.set sound.winamp.minutes 0 | sq.set @find.connection.host 127.0.0.1 | sq.set noflood.spam.ignore *http:*;*sex*;*girls*
sq.set trigger.chatport 50000-65000
if ($isfile($sq.dir $+ mask.conf)) {
var %count = 1,%file = $sq.dir $+ mask.conf
while (%count <= $ini(%file,default,0)) {
$readini(%file,default,%count)
inc %count 1
}
}
if ($dialog(sq)) { sq.loaddialog 1 }
}
;########################################Checkupdate######################################################
alias sq.checkupdate {
if ($sock(sq.checkupdate)) { return }
.timersq.checkupdate 1 10 sockclose sq.checkupdate
sockopen sq.checkupdate jumpins.dyndns.org 80
if ($1 == get && $lock(dll)) {
sq.sysmsg You cannot use "hot update". Please enable the use of DLL's in the mIRC options
return
}
if ($1) { sq.set 60 getupdate $1 }
}
on *:sockopen:sq.checkupdate:{
.timersq.checkupdate off
if ($sockerr) { return }
sq.set checkupdate 0
if ($sq.get(getupdate) == get) {
window -a @SQ-script!
write -c $sq.dir $+ new.sq-script.mrc.gz
.remove $sq.dir $+ new.sq-script.mrc
sockwrite -n $sockname GET /scripts/sq-script.mrc.gz HTTP/1.0 $sq.info $sq.version
sockwrite -n $sockname Accept: */*
sockwrite -n $sockname Host: jumpins.dyndns.org
sockwrite -n $sockname
sq.sysmsg downloading update, please wait
window -aCpdoh +lef @sq-download 1 1 110 60
drawfill @sq-download 15 15 1 1
drawtext @sq-download 1 arial 12 10 3 Filesize:
}
else {
write -c $sq.dir $+ tempversion.txt
sockwrite -n $sockname GET /version.txt HTTP/1.0 $sq.info $sq.version
sockwrite -n $sockname Accept: */*
sockwrite -n $sockname Host: jumpins.dyndns.org
sockwrite -n $sockname
}
}
on *:sockread:sq.checkupdate:{
if (!$sq.get(checkupdate)) {
var %header
sockread %header
while ($sockbr) {
if (Content-length: * iswm %header) {
sq.set downloadlength $gettok(%header,2,32)
if ($window(@sq-download)) { drawtext @sq-download 1 arial 12 10 3 Filesize: $bytes($sq.get(downloadlength),3).suf }
}
if (* !iswm %header) {
sq.set checkupdate 1
sq.set downloadoffset $sock($sockname).rcvd
break
}
sockread %header
}
}
else {
sockread &d
while ($sockbr) {
if ($sq.get(getupdate) == get) {
bwrite $sq.dir $+ new.sq-script.mrc.gz -1 &d
var %done = $round($calc(100 * ($sock($sockname).rcvd - $sq.get(downloadoffset)) / $sq.get(downloadlength)),1)
drawrect -f @sq-download 12 15 1 20 %done 40
}
else { bwrite $sq.dir $+ tempversion.txt -1 &d }
sockread &d
}
}
}
on *:sockclose:sq.checkupdate:{
sq.del checkupdate
window -c @sq-download
if ($sq.get(getupdate) == get) {
sq.del getupdate
if ($isfile($sq.dir $+ ngzipn.dll)) { sq.sysmsg Using $dll($sq.dir $+ nGZIPn,version,0) }
else { sq.sysmsg Could not find nGZIPn.dll in SQ-Script directory, cannot decompress new version | return }
if ($dll($sq.dir $+ ngzipn.dll,unzip,$sq.dir $+ new.sq-script.mrc)) { sq.sysmsg Update was successfully decompressed }
else { sq.sysmsg Error on decompressing update | return }
var %version = $read($sq.dir $+ new.sq-script.mrc,1)
.remove $sq.dir $+ new.sq-script.mrc.gz
if ($remove($gettok(%version,2,32),.) $+ . $+ $gettok(%version,4,32) >= $remove($gettok($sq.version,1-2,46),.) $+ . $+ $gettok($sq.version,3,46)) {
sq.sysmsg Applying update, please wait
.timersq.updated 1 2 sq.updated $sq.version
.remove " $+ $script $+ "
.rename $sq.dir $+ new.sq-script.mrc " $+ $script $+ "
.reload -rs " $+ $script $+ "
}
else {
sq.sysmsg Downloaded version is not newer than current version, aborting update
.remove $sq.dir $+ new.sq-script.mrc
}
}
else {
if (!$sq.get(newversion)) { .timersq.latest -m 1 100 sq.latest $read($sq.dir $+ tempversion.txt,1) }
.remove $sq.dir $+ tempversion.txt
}
}
alias sq.updated {
if ($1 <= $sq.version) {
sq.sysmsg SQ-Script was successfully updated to $sq.version
sq.del sq.newversion
}
else { sq.sysmsg Something went wrong on updateing from $1- to $sq.version }
}
alias sq.latest {
if ($1 != $sq.version && !$sq.get(newversion)) {
sq.set sq.newversion 1
sq.sysmsg There is a new Version of SQ-Script available from www.sq-script.tech.nu : $1-
sq.sysmsg Your Version is: $sq.version
if ($input(There is a newer Version than yours. $+ $crlf $+ Do you want to update ?,yi,Update)) {
if ($dialog(sq)) { dialog -x sq }
sq.set getupdate get
.timer 1 1 sq.checkupdate get
}
}
elseif ($sq.get(forceupdate)) {
.timer 1 1 sq.checkupdate get
sq.del forceupdate
}
else { sq.del getupdate sq.newversion }
}
menu @sq-download {
sclick:{
window -c @sq-download
sq.sysmsg 4Download aborted. Please get the update manually from http://sq-script.tech.nu
sockclose sq.checkupdate
.remove $sq.dir $+ new.sq-script.mrc.gz
}
}
;###################################Dialog Section#######################################
dialog SQ {
title SQ-Script $sq.version
option dbu
size -1 -1 294 300
tab "Trigger/@Find", 1, 1 1 292 280
tab "Stats", 3
tab "Misc", 4
tab "FTP server",5
tab "Messenger/DCC request",6
tab "Eggdrop",2
link "WWW",98, 17 287 20 18
button "Ok",99, 49 282 61 18, ok
button "Apply",97, 110 282 61 18
button "Undo",96, 171 282 61 18
button "Cancel",95, 232 282 62 18, cancel
list 94,1 1 1 1,hide
list 93,1 1 1 1,hide
box "",92,1 279 48 21
;tab1 -------------------------------------------------------------------------------------------------------------------------------------------------------
text "Connect to FTPserver",100,190 26 55 10, tab 1
check "OFF",101,245 25 20 10, tab 1 push
text "on the channel",102,108 67 60 10, tab 1
combo 103,150 66 40 40, drop size tab 1
box "FTP",104, 10 17 278 135, tab 1
text "Connection to FTP",105, 20 26 45 10, tab 1
radio "OFFline",106, 70 25 30 10, tab 1
check "Verbose @find matches",107 ,200 265 65 10,tab 1
text "Trigger Status",108, 102 26 40 10, tab 1
check "OFF",109, 140 25 20 10, tab 1 push
text "Triggermsg for",110,18 67 60 10, tab 1
combo 111, 62 66 40 40, drop size tab 1
edit "",112, 65 40 60 10, tab 1 autohs
text "Your FTP-Trigger:",113, 15 41 45 10, tab1
edit "",114, 175 40 60 10, tab 1 autohs
text "Your List-Trigger:",115, 130 41 42 10, tab 1
box "Trigger message",116, 12 55 274 93, tab 1
edit "",117, 15 82 270 52, tab 1 multi return autovs vsbar autohs limit 800
check "",118,200 137 80 7,tab 1
text "! Don't touch the <Header>-line !",119,200 68 85 10,tab 1
text "Chat port",120, 20 136 25 10,tab 1
edit "50000-65000",121, 45 135 40 10,tab 1
box "@find",124, 10 153 278 122, tab 1
text "@find-Status",125, 15 207 40 10, tab 1
check "OFF",126, 50 205 20 10, tab 1 push
text "Your Files-list:",127, 15 220 40 10, tab 1
button "files-list",128, 50 218 140 10, tab 1
text "Channels, @find is working in; separate with comma ('',''):",129, 15 230 75 20, tab 1
edit "@find-channels",130, 90 233 95 10, tab1 autohs
text "Number of matches to be displayed:",131 , 15 247 90 10, tab 1
text "",132,102 247 6 10,center tab 1
icon 133, 200 195 80 80, [ $shortfn([ $scriptdir $+ SQuirrel.jpg ]) ] , 1 , tab 1 noborder
button "Preview Triggermsg as sysmsg",134, 90 136 100 10, tab 1
edit "",135, 15 160 270 42, tab 1 multi return autovs vsbar autohs limit 800
button "Preview @findmsg as sysmsg",136, 90 205 100 10, tab 1
button "Make list",137,135 246 40 10, tab 1
scroll "",138,107 246 10 10, range 50 tab 1
check "Send matches as txt-file if exceedes limit",139,15 257 106 7,tab 1
check "Connect to @find server",140,125 258 63 15,tab 1 push
check "",141,15 265 105 8,tab 1
;tab3-----------------------------------------------------------------------------------------------
box "Server- and PC-statistics",301, 10 20 280 258, tab 3
text "Stats-trigger Status",302, 20 35 50 10, tab 3
check "OFF",303, 70 33 20 10, tab 3 push
text "Enter stats-trigger",304, 100 35 50 10, tab3
combo 305, 85 50 60 100, tab 3 drop size
list 306, 13 70 270 80, tab 3
text "Choose a variable",307, 20 51 60 10, tab 3
button "Setup ^NewOnServer Variable",308,20 150 100 10, tab 3
text "mins",309, 83 260 15 10, tab 3
text "",310,210 35 60 14,tab 3
button "Preview as system-msg",321, 130 229 100 10, tab 3
edit "",322, 13 170 270 55, tab 3 multi return autovs autohs vsbar
text "You can send this text above to the active window by typing /sq.stats",323, 20 230 100 20, tab 3
check "Enable Server- and PC-stat variables (only BPFTPserver)",324, 20 248 150 10, tab 3
text "Refresh every",325, 30 260 40 10, tab 3
text "",326,65 260 9 10, tab 3 center
edit "!stats",327, 150 34 60 10, tab 3
scroll "",328,72 258 10 10,tab 3 range 180
;tab4-----------------------------------------------------------------------------------------------------------------
box "Misc Settings",401, 10 20 280 258, tab 4
button "Reset all values to default",402,20 85 80 15, tab 4
text "Color for users been on server",403 , 20 225 100 10, tab 4
button "Load Script",404, 20 35 80 15, tab 4
edit "3",405, 100 224 10 10, tab 4 center
button "Unload SQ-Script",406, 20 60 80 15, tab 4
check "Minimize mIRC to tray on away",407,20 120 120 10, tab 4
text "Set the security level of the CTCP-floodprotection (10 = Paranoid / 1 = overconfident / 0 = OFF)",408, 13 105 125 14, tab 4
text "",409, 140 109 10 10, tab 4 center
edit "#channel",410, 120 130 60 10, tab 4 autohs
check "Silent away - else excluded channels :",411, 20 130 100 10, tab 4
check "Request Sounds",412, 20 140 60 10, tab 4
check "Block DCCs while away (Will disable soundrequests, too)",413, 20 150 160 10, tab 4
check "Block CTCPs while away",414, 20 160 100 10, tab 4
check "Enable Nickkeeper",415, 20 180 80 10, tab 4
check "Enable >!free upload/download< lookup",416,20 170 120 10, tab 4
check "Send away notice if someone mentiones your nick",417,20 190 140 10, tab 4
check "Play this Sound, if someone opens a query to you:",418, 20 210 130 10, tab 4
button "",419,150 210 100 10, tab 4
text "Color for users idle on server",420 , 20 235 100 10, tab 4
edit "1,0",421, 100 234 10 10, tab 4 center
text "Color for users uploading",422, 20 245 100 10, tab 4
edit "11,0",423, 100 244 10 10, tab 4 center
text "Color for users downloading",424, 20 255 100 10, tab 4
edit "7,0",425, 100 254 10 10, tab 4 center
text "Color for users beeing too slow",426, 20 265 100 10, tab 4
edit "4,0",427, 100 264 10 10, tab 4 center
list 428, 120 40 60 40, tab 4 hsbar
button "Unload Script",429, 120 72 60 20, tab 4
text "Other loaded scripts:",430, 120 30 60 10, tab 4
check "Enable Auto-away after",431, 20 200 70 10, tab 4
text "",432, 88 201 9 10, tab 4 center
scroll "",433,95 199 10 10,tab 4 range 180
text "minutes",434, 107 201 30 7, tab 4
text "Ignore CTCP:",435, 120 230 40 10, tab 4
edit "",436, 160 229 50 10, tab 4
button "Add to CTCP-ignore-list -=>",437, 120 240 90 10, tab 4
list 438, 220 229 60 45, tab 4 autovs
text "Doubleclick on any item to remove it from the list",439, 120 255 60 15, tab 4
scroll "",440,150 107 10 10,tab 4 range 10
box "MusicWakeUp",441,186 30 102 70,tab 4
check "Wake me up at",442,190 40 47 10,tab 4
text "00",443,237 42 7 10,tab 4 right
scroll "",444,246 40 7 10,tab 4 range 23
text ":",445,254 42 2 10,tab 4
text "00",446,256 42 7 10,tab 4 center
scroll "",447,265 40 7 10,tab 4 range 59
check "Exclude weekends",448,190 50 60 10,tab 4
combo 449,190 60 95 40,tab 4 drop size
check "Music is getting louder",450,190 75 70 10,tab 4
button "Reset player location",451,205 85 70 10,tab 4
box "",452,15 218 100 58,tab 4
box "",453,117 218 171 58,tab 4
box "Spamblocker",454, 186 102 102 107,tab 4
check "Enable Spamblocker",456, 190 110 60 10,tab 4
text "Enter a text you want to be blocked from your query. You can use wildcards",457,190 120 90 21,tab 4
edit "",458,190 145 90 10,tab 4
Button "Add to SpamList",459, 190 155 90 10,tab 4
list 460, 190 165 90 44,tab 4 autovs
;tab5-------------------------------------------------------------------------------------------------------------
box "FTP server integration",500, 10 20 280 255, tab 5
text "for",501,81 140 10 10, tab 5
button "Setup FTP server integration",502, 90 30 100 20, tab 5
box "Account settings",503,13 115 130 80, tab 5
text "Choose IRCgroup:",504,17 125 50 10, tab 5
combo 505,65 124 70 40, tab 5 drop size
text "Minimum kbytes/s",506,17 140 50 10, tab 5
edit "",507,65 139 15 10, tab 5 center
text "Associated FTPgroup:",508,17 155 55 10, tab 5
combo 509,70 154 50 40, tab 5 drop size
text "Below you can enter any message to advertize in channels. You can use all variables provided by SQ-Script",510, 20 200 270 10, tab 5
edit "",511, 15 210 270 20, tab 5 hsbar autohs multi autovs limit 300
text "How many secs should be between each addvertizing:",512, 13 245 140 10, tab 5
edit "3600",513, 145 243 20 10, tab 5
text "Ad Status",514, 233 244 25 10, tab 5 right
check "OFF",515, 259 243 20 10, tab 5 push
text "Enter all channels you want to advertize in separate with comma ('','')",516, 15 255 100 20, tab 5
edit "#",517, 120 258 160 10, tab 5 autohs
button "Preview ad as sysmsg",525, 20 232 100 10, tab 5
edit "localhost",526, 190 113 40 10, tab 5 center read
edit "",527, 232 113 20 10, tab 5 center read
text ":",528, 230 115 2 10, tab 5
text "IP:Port =",529, 165 114 25 10, tab 5
text "Login/Pass =",530, 155 129 35 10, tab 5
edit "",531, 190 128 29 10, tab 5 center read
text "/",532, 220 129 3 10, tab 5
edit "",533, 224 128 29 10, tab 5 center read
box "Server settings for SQ-script",534, 150 103 120 40, tab 5
text "SQ-script Banlist",535,150 145 60 10, tab 5
list 536, 150 155 130 48, tab 5 hsbar
edit "",539,92 139 15 10, tab 5 center
text "Netsplit timeout:",540, 13 86 40 10, tab 5
text "",541,60 86 9 10, tab 5 center
text "mins",542,82 86 13 10, tab 5
check "Start FTP server when needed",543, 13 65 100 10, tab 5 disabled
check "Close FTP server when closing mIRC",544, 13 75 110 10, tab 5 disabled
text "times",545,109 140 15 10, tab 5
text "No-User timeout",546,13 96 40 10, tab 5
text "",547,60 96 9 7, tab 5 center
text "mins",548,82 96 13 10, tab 5
text "Max users upload:",549,13 106 45 10, tab 5
text "",550,58 106 6 10, tab 5 center
text "Limit transfer",551,17 170 40 10, tab 5
edit "",552,60 168 20 10, tab 5 right
text "files",553,81 170 10 10, tab 5
edit "",554,100 168 20 10, tab 5 right
text "MBytes",555,121 170 20 10, tab 5
check "Delete old FTP logfiles",556,13 55 100 10, tab 5
text "Max users download:",557,76 106 51 10, tab 5
text "",558,128 106 6 10, tab 5 center
text "Max Users",559,17 183 40 10, tab 5
edit "",560,60 181 15 10, tab 5 center
scroll "",561,70 84 10 10,tab 5 range 60
scroll "",562,70 94 10 10,tab 5 range 10
scroll "",563,64 104 10 10,tab 5 range 50
scroll "",564,135 104 10 10,tab 5 range 50
check "Enable speedlimit for serving",565,150 55 77 10,tab 5 disabled
edit "",566,230 55 25 10,tab 5 center disabled
text "bytes/s",567,256 57 20 10,tab 5
check "Display changed speedlimit to users",568,150 65 100 10, tab 5 disabled
check "Show ad only when Trigger is enabled",569,185 232 100 10, tab 5
check "Listen for !list",570,185 243 45 10,tab 5
check "Restrict login to IRC-host",571, 150 75 100 10,tab 5 disabled
check "Enable sfv-check for uploads",572, 150 85 100 10,tab 5 disabled
;tab 6-----------------------------------------------------------------------------
box "Messenger Settings",601, 10 20 280 120, tab 6
check "Enable Notifier",602, 20 35 60 10, tab 6
check "Enable Logging",604, 20 55 48 10, tab 6 3state
text "Whenever your nick was mentioned while away the line will be logged in the SQ-Script window",605, 100 55 130 14, tab 6
check "Show @SQ-Script window as separate window in Taskbar",606, 20 95 180 10, tab 6
text "Enter a value for the logging color",608, 20 70 100 10, tab 6
edit "",609, 105 69 10 10, tab 6 center
check "Play this Sound, if someone mentiones your nick:",610, 20 115 127 10, tab 6
button "",611,150 114 100 10, tab 6
text "Enter colorcode for notifierwindow:",612, 100 30 90 10, tab 6
edit "",613, 205 29 15 10, tab 6 center
text "(OFF)",614, 70 56 30 10, tab 6
box "DCC requests",615, 10 145 280 130, tab 6
text "Choose the channel where to request files:",616, 12 155 115 10, tab 6
combo 617, 20 164 65 60, tab 6 size drop
text "Choose the nick you want to request from:",618, 12 175 115 10, tab 6
combo 619, 20 184 65 40, tab 6 size drop
text "How many files are allowed in queue:",620 , 12 195 110 10, tab 6
edit "0",621, 20 204 20 10, tab 6 center
text "Choose the requests list",622, 12 214 160 10, tab 6
button "Requests-list",623, 12 233 59 15, tab 6
check "START REQUESTING NOW",625, 125 250 120 20, tab 6 push
text "Request only *.",628, 20 223 40 10, tab 6
edit "zip",629, 57 221 20 10, tab 6 left
text "files",630, 78 223 20 10, tab 6
list 624, 125 155 160 95,tab 6 size hsbar
button "Add to list",631, 72 233 50 15, tab 6
button "Edit MaxQue",632,250 250 35 20,tab 6 disabled
check "Don't log sucessfull receipts",633,20 252 80 10,tab 6
check "Autojoin Channels on connect",634,20 262 100 10,tab 6
text "Do not listen on channels (komma limited)",635,100 40 100 10,tab6
edit "#nolisten",636,205 39 80 10,tab 6
;tab6/2----------------------------------------------------------------------------------------------------------
box "Eggdrop Tools",200,10 20 280 258, tab 2
text "Eggdrop Tools Status",201,13 35 60 10,tab 2
check "OFF",202,70 33 20 10, tab 2 push
text "Eggdrops list: (doubleclick to remove)",203,20 50 100 10, tab 2
list 204,13 60 270 90,tab 2
text "Channel",205,15 150 50 10, tab 2
combo 206,15 160 50 50, tab 2 drop
text "Nick",207,70 150 40 10,tab2
combo 208,70 160 50 50, tab 2 drop
text "Method",211,130 150 40 10,tab 2
combo 212,130 160 40 40,tab 2 drop
text "Login",213, 175 150 40 10,tab 2
edit "",214, 175 160 40 11, tab 2
text "Password",215,220 150 40 10, tab 2
edit "", 216, 220 160 40 11, tab 2 pass
text "Rating",217, 265 150 22 10, tab 2
combo 218,265 160 22 40, tab 2 drop
button "Add to List" 219, 13 175 275 10, tab 2
check "Keep permanent connection to chat/telnet bots",220,20 190 125 10, tab 2
check "On deop/kick/ban you reop immediately",221,20 200 120 10,tab 2
check "Revenge: Kick first",222,30 210 100 10, tab 2
check "Revenge: Ban first",223,30 220 100 10, tab 2
check "Protect eggdrops against deop/kick/ban",225,20 240 120 10, tab 2
check "Revenge: Kick bad user first",226,30 250 100 10, tab 2
check "Revenge: Ban bad user first",227,30 260 100 10,tab 2
check "Make all mode changes via chat/telnet",228,150 190 120 10, tab 2
check "Choose fastest method for revenge",229,160 200 100 10,tab 2
check "Connect only (no OP)",230,150 220 100 10, tab 2
}
;##########################################init section######################################################
alias sq.setscroll {
if ($did < 100 || $did == 402) {
var %counter = 1
did -r sq 93
while (%counter <= $0) {
var %var = $gettok($ [ $+ [ %counter ] ],4,59),%text = $gettok($ [ $+ [ %counter ] ],1,59),%scroll = $gettok($ [ $+ [ %counter ] ],2,59),%range = $gettok($ [ $+ [ %counter ] ],3,59)
did -r sq %text
did -o sq %text 1 $sq.get(%var)
did -c sq %scroll $calc(%range - $sq.get(%var))
did -a sq 93 %scroll %text %range %var
inc %counter 1
}
}
else {
var %count = 1
while (%count <= $did(sq,93).lines && $gettok($did(sq,93,%count).text,1,32) != $did) { inc %count 1 }
if (%count > $did(sq,93).lines) { return }
var %range = $gettok($did(sq,93,%count).text,3,32),%text = $gettok($did(sq,93,%count).text,2,32)
did -o sq %text 1 $calc(%range - $did($did).sel)
}
}
alias sq.tokdialog {
var %tempcount = 1
while (%tempcount <= $0) {
did -r SQ $gettok($gettok($1-,%tempcount,32),1,59)
didtok SQ $gettok($gettok($1-,%tempcount,32),1,59) 59 $sq.get($gettok($gettok($1-,%tempcount,32),2,59))
inc %tempcount 1
}
}
alias sq.wdialog {
var %tempcount = 1
while (%tempcount <= $0) {
did -o SQ $gettok($gettok($1-,%tempcount,32),1,59) 1 $sq.get($gettok($gettok($1-,%tempcount,32),2,59))
inc %tempcount 1
}
}
alias sq.setbutton {
var %tempcount = 1
while (%tempcount <= $0) {
if ($sq.get($gettok($gettok($1-,%tempcount,32),2,59))) {
did -c SQ $gettok($gettok($1-,%tempcount,32),1,59)
if ($gettok($gettok($1-,%tempcount,32),3,59)) {
did -o SQ $gettok($gettok($1-,%tempcount,32),1,59) 1 ON
}
}
else {
did -u SQ $gettok($gettok($1-,%tempcount,32),1,59)
if ($gettok($gettok($1-,%tempcount,32),3,59)) {
did -o SQ $gettok($gettok($1-,%tempcount,32),1,59) 1 OFF
}
}
inc %tempcount 1
}
}
alias sq.filltok {
var %count = 1
while (%count <= $0) {
did -r sq $gettok($gettok($1-,%count,32),1,59)
var %tempcount = 2
while (%tempcount <= $numtok($gettok($1-,%count,32),59)) {
did -o sq $gettok($gettok($1-,%count,32),1,59) $calc(%tempcount - 1) $gettok($gettok($1-,%count,32),%tempcount,59)
inc %tempcount 1
}
inc %count 1
}
}
on *:dialog:SQ:init:0:{ sq.loaddialog }
on *:dialog:SQ:sclick:96:{ sq.loaddialog }
alias sq.loaddialog {
sq.setscroll 132;138;50;@find.fileshits 326;328;180;stat.refresh 432;433;181;away.autoaway.time 409;440;10;noflood.protecttime 541;561;60;ftp.netsplit 547;562;10;ftp.nouser 550;563;50;ftp.maxuserup 558;564;50;ftp.maxuserdown 443;444;23;sound.winamp.hour 446;447;59;sound.winamp.minutes
sq.tokdialog 135;msg.@find 322;msg.stat 438;noflood.ctcp.ignore 460;noflood.spam.ignore
sq.wdialog 421;color.idle 423;color.uploading 425;color.downloading.ok 427;color.downloading.slow 405;color.beenonftp 121;trigger.chatport
sq.wdialog 517;trigger.bannerchannel 513;trigger.bannerdelay 511;msg.banner 112;trigger.ftp 114;trigger.files 327;trigger.stat
sq.wdialog 130;@find.channel 609;color.logging 613;color.notifier 410;away.exclude 566;ftp.maxserv 636;sq.notifier.nolisten
sq.setbutton 109;trigger.status;ON 126;@find.status;ON 303;stat.status;ON 515;trigger.bannerstatus;ON 101;ftp.login;ON 140;@find.connect 569;trigger.bannershow
sq.setbutton 411;away.silent 412;sound.request 431;away.autoaway.status 413;noflood.dccblock 414;noflood.ctcpblock 543;ftp.startserver 139;@find.sendmatches 634;request.autojoin
sq.setbutton 544;ftp.killserver 415;sq.nickkeeper 324;stat.status.ftp 556;ftp.deloldlog 416;ftp.!free 565;ftp.maxservstatus 568;sq.setmaxserv 141;@find.ctcp 633;request.log
sq.setbutton 418;sound.onquery 610;sound.onnick 602;sq.notifier 407;away.tray 417;away.notice 442;sound.winamp.wakeup 448;sound.winamp.weekend 456;noflood.spamblock
sq.setbutton 202;eggdrop.status;ON 229;eggdrop.fastrevenge 222;eggdrop.kickondeopme 226;eggdrop.protect.kick 221;eggdrop.reop 450;sound.winamp.loud 570;ftp.!list 571;ftp.restricthost 572;ftp.usesfv
sq.setbutton 223;eggdrop.banondeopme 227;eggdrop.protect.ban 225;eggdrop.protect 228;eggdrop.formodes 220;eggdrop.keepcon 230;eggdrop.onlycon 118;trigger.ctcp 107;@find.verbose
if ($sq.get(ftp.status)) { did -o sq 106 1 ONline | did -c sq 106 }
if ($sq.get(ftp.configured) == G6) { did -e sq 565,566,568,543,544,324,571,572 }
did -e sq 617 | ;did -b 141,118
did -b Sq 619,621,629,623,631,208,212,214,216,218,219,509
did -r sq 305,306,214,216,617,619,206,208,214,216,624,204,507,117,539,536,552,554,509,560
did -m sq 507,539,552,554,560,117
did -u sq 509,505
did -o sq 118,141 1 Listen for /ctcp $me
did -o sq 310 1 The trigger only listenes for /msg $me
if ($sq.get(request.status)) {
did -o SQ 625 1 Requests in progress
did -c sq 625
}
else { did -o SQ 625 1 START REQUESTING NOW }
if ($SQ.get(sq.messenger) == Away) { did -c SQ 604 | did -o SQ 614 1 (AWAY) }
elseif ($SQ.get(sq.messenger) != OFF) { did -uc SQ 604 | did -o SQ 614 1 (ALWAYS) }
if ($SQ.get(window.state) == desktop) { did -c SQ 606 }
var %tempcount = 1
var %counter = 1
while (%tempcount <= $script(0)) { if (sq-script !isin $script(%tempcount)) { did -o SQ 428 %counter $nopath($script(%tempcount)) | inc %counter 1 } | inc %tempcount 1 }
didtok sq 449 59 Playlist;Radiostation; $+ $sq.get(sound.winamp.play)
did -c sq 449 3
if ($SQ.get(@find.fileslist)) {
did -o sq 94 1 $SQ.get(@find.fileslist)
did -o SQ 128 1 $nopath($longfn($did(94,1).text))
}
else {
did -o sq 94 1 0
did -o SQ 128 1 Choose Fileslist
}
if ($SQ.get(sound.nick)) {
did -o sq 94 2 $SQ.get(sound.nick)
did -o SQ 611 1 $nopath($longfn($did(94,2).text))
}
else {
did -o sq 94 2 0
did -o SQ 611 1 Choose soundfile
}
if ($sq.get(sound.query)) {
did -o sq 94 3 $sq.get(sound.query)
did -o SQ 419 1 $nopath($longfn($did(94,3).text))
}
else {
did -o sq 94 3 0
did -o SQ 419 1 Choose soundfile
}
if ($sq.get(ftp.configured)) { sq.wdialog 527;ftp.port 531;ftp.sqlogin 533;ftp.sqpass }
else { did -h SQ 526,527,528,529,530,531,532,533,534 }
did -o sq 306 1
didtok SQ 306 35 $gettok($read($script,n,13),2,59)
var %count = 1
while (%count <= $chan(0)) { did -i sq 617,206 1 $chan(%count) | inc %count 1 }
unset %tempcount
set -u0 %tempcount 1
while (%tempcount <= $sq.num(request.nick)) {
sq.getslash 624 request nick address channel maxqueue count
inc %tempcount 1
}
did -z sq 624
.echo -q $findfile($sq.dir,SQrequest.*.txt,0,sq.checkoldreq $1-)
var %count = 13
while ($read($script,%count)) {
did -o sq 305 $calc(%count -12) $gettok($read($script,%count),1,59)
inc %count 1
}
set -u0 %tempcount 1
while (%tempcount <= $sq.num(eggdrop.nick)) {
sq.getslash 204 eggdrop channel nick ip address method login pass rating
inc %tempcount 1
}
did -c sq 305 1
sq.filltok 218;1st;2nd;3rd 111;OP;Voice;Regular;All 509; $+ $sq.ftpgroups
%count = 1
while (%count <= $hmatch(sq.messages,trigger*,0)) {
var %chan = $addtok(%chan,$gettok($hmatch(sq.messages,trigger*,%count),3,1),59)
inc %count 1
}
%count = 1
while (%count <= $chan(0)) {
var %chan = $addtok(%chan,$chan(%count),59)
inc %count 1
}
did -r sq 103,505
didtok sq 103 59 %chan
var %count = 1,%tok
while (%count <= $hmatch(sq.messages,trigger*,0)) {
var %txt = $hmatch(sq.messages,trigger*,%count)
if ($gettok(%txt,2,1) == O) { %tok = %tok $+ ; $+ OP }
elseif ($gettok(%txt,2,1) == V) { %tok = %tok $+ ; $+ Voice }
elseif ($gettok(%txt,2,1) == R) { %tok = %tok $+ ; $+ Regular }
elseif ($gettok(%txt,2,1) == A) { %tok = %tok $+ ; $+ All }
%tok = %tok on $gettok(%txt,3,1) $+ ;
inc %count 1
}
didtok sq 505 59 %tok
did -a sq 505 upload
%count = 1
while (%count <= $sq.num(ftp.denynick)) {
did -o sq 536 %count $sq.tok(ftp.denynick,%count) ( $+ $sq.tok(ftp.denyaddress,%count) $+ )
inc %count 1
}
if ($isfile($sq.dir $+ mask.conf)) {
var %count = 1,%file = $sq.dir $+ mask.conf
while (%count <= $ini(%file,menu,0)) {
$readini(%file,menu,%count)
inc %count 1
}
}
if ($sq.get(temptime)) { SQ.sysmsg Loaded in: $calc($ticks - $sq.get(temptime)) msecs }
sq.del temptime
}
alias sq.getslash {
var %count = 4
var %temptext = $sq.tok($2 $+ . $+ $3,%tempcount)
while (%count <= $0) {
%temptext = %temptext $+ / $+ $sq.tok($2 $+ . $+ $ [ $+ [ %count ] ],%tempcount)
inc %count 1
}
did -o sq $1 %tempcount %temptext
}
;#####################################OK Button############################
on *:dialog:sq:sclick:99:{ sq.savedialog }
on *:dialog:sq:sclick:97:{ sq.savedialog | sq.loaddialog | sq.sysmsg Settings applied }
alias sq.untokdialog {
var %tempcount = 1
while (%tempcount <= $0) {
sq.set $gettok($gettok($1-,%tempcount,32),2,59) $didtok(SQ,$gettok($gettok($1-,%tempcount,32),1,46),59)
inc %tempcount 1
}
}
alias sq.rdialog {
var %tempcount = 1
while (%tempcount <= $0) {
sq.set $gettok($gettok($1-,%tempcount,32),2,59) $sq.txt($gettok($gettok($1-,%tempcount,32),1,59))
inc %tempcount 1
}
}
alias sq.getbutton {
var %tempcount = 1
while (%tempcount <= $0) {
sq.set $gettok($gettok($1-,%tempcount,32),2,59) $did(SQ,$gettok($gettok($1-,%tempcount,32),1,59)).state
inc %tempcount 1
}
}
alias sq.savedialog {
if ($did(565).state != $sq.get(ftp.maxservstatus) && $sq.get(ftp.configured)) { sq.setmaxserv $did(565).state }
sq.untokdialog 135;msg.@find 322;msg.stat 438;noflood.ctcp.ignore 460;noflood.spam.ignore
sq.rdialog 421;color.idle 423;color.uploading 425;color.downloading.ok 427;color.downloading.slow 405;color.beenonftp 566;ftp.maxserv
sq.rdialog 517;trigger.bannerchannel 513;trigger.bannerdelay 511;msg.banner 112;trigger.ftp 114;trigger.files 327;trigger.stat
sq.rdialog 130;@find.channel 132;@find.fileshits 609;color.logging 613;color.notifier 326;stat.refresh 432;away.autoaway.time
sq.rdialog 410;away.exclude 541;ftp.netsplit 547;ftp.nouser 550;ftp.maxuserup 558;ftp.maxuserdown 409;noflood.protecttime
sq.rdialog 443;sound.winamp.hour 446;sound.winamp.minutes 449;sound.winamp.play 636;sq.notifier.nolisten 121;trigger.chatport
sq.getbutton 109;trigger.status;ON 126;@find.status;ON 303;stat.status;ON 515;trigger.bannerstatus;ON 101;ftp.login 139;@find.sendmatches 569;trigger.bannershow 107;@find.verbose
sq.getbutton 411;away.silent 412;sound.request 431;away.autoaway.status 413;noflood.dccblock 414;noflood.ctcpblock 543;ftp.startserver 407;away.tray 140;@find.connect
sq.getbutton 544;ftp.killserver 415;sq.nickkeeper 324;stat.status.ftp 556;ftp.deloldlog 416;ftp.!free 565;ftp.maxservstatus 568;sq.setmaxserv 141;@find.ctcp 633;request.log
sq.getbutton 418;sound.onquery 610;sound.onnick 602;sq.notifier 202;eggdrop.status 417;away.notice 442;sound.winamp.wakeup 448;sound.winamp.weekend 570;ftp.!list 571;ftp.restricthost 572;ftp.usesfv
sq.getbutton 202;eggdrop.status 229;eggdrop.fastrevenge 222;eggdrop.kickondeopme 226;eggdrop.protect.kick 221;eggdrop.reop 450;sound.winamp.loud 456;noflood.spamblock
sq.getbutton 223;eggdrop.banondeopme 227;eggdrop.protect.ban 225;eggdrop.protect 228;eggdrop.formodes 220;eggdrop.keepcon 230;eggdrop.onlycon 118;trigger.ctcp 634;request.autojoin
if ($did(SQ,604).state == 1) { sq.set sq.messenger Away }
elseif ($did(SQ,604).state == 0) { sq.set sq.messenger OFF }
else { sq.set sq.messenger Always }
if ($did(SQ,606).state == 1) { sq.set window.state desktop }
else { sq.set window.state normal }
sq.del eggdrop.channel eggdrop.nick eggdrop.address eggdrop.method eggdrop.login eggdrop.pass eggdrop.rating eggdrop.ip
unset %tempcount
set -u0 %tempcount 1
while (%tempcount <= $did(sq,204).lines) {
sq.writeegg channel 1
sq.writeegg nick 2
sq.writeegg ip 3
sq.writeegg address 4
sq.writeegg method 5
sq.writeegg login 6
sq.writeegg pass 7
sq.writeegg rating 8
inc %tempcount 1
}
if ($sq.get(ftp.configured)) { sq.rdialog 527;ftp.port 531;ftp.sqlogin 533;ftp.sqpass }
sq.del request.nick request.address request.channel request.maxqueue request.count
set -u0 %tempcount 1
while (%tempcount <= $did(SQ,624).lines) {
sq.writereq nick 1
sq.writereq address 2
sq.writereq channel 3
sq.writereq maxqueue 4
sq.writereq count 5
inc %tempcount 1
}
if ($sq.get(newrequest) && $sq.get(request.status) && $did(SQ,625).state == 1) {
var %count = 1
while (%count <= $sq.num(newrequest)) {
if ($sq.istok(request.nick,$sq.tok(newrequest,%count))) { sq.requestall $sq.tok(newrequest,%count) }
inc %count 1
}
}
if (!$sq.get(request.status) && $did(SQ,625).state == 1) {
sq.set request.status 1
var %count = 1
while (%count <= $sq.num(request.nick)) {
var %tempcount = 1
while (%tempcount <= $sq.tok(request.maxqueue,%count)) {
SQ.request $sq.tok(request.nick,%count)
inc %tempcount 1
sq.put request.count $calc($sq.tok(request.count,%count) +1) %count
}
inc %count 1
}
}
elseif ($did(SQ,625).state == 0) { sq.set request.status 0 }
if ($sq.txt(103) && $sq.txt(111) && $sq.txt(117)) {
if (<Header* !iswm $didtok(sq,117,59)) { sq.set msg.trigger $+ $mid($sq.txt(111),1,1) $+ $+ $did(103).text <Header>; $+ $didtok(sq,117,59) }
else { sq.set msg.trigger $+ $mid($sq.txt(111),1,1) $+ $+ $did(103).text $didtok(sq,117,59) }
}
elseif ($sq.txt(103) && $sq.txt(111) && !$sq.txt(117)) {
sq.del msg.trigger $+ $mid($sq.txt(111),1,1) $+ $+ $did(103).text
}
if ($sq.txt(505) && $sq.txt(507) isnum && $sq.txt(539) isnum && $sq.txt(509) && $sq.txt(552) isnum && $sq.txt(554) isnum && $sq.txt(560) isnum) {
if ($sq.txt(505) == upload) {
sq.set ftp.uploadgroup $sq.txt(509)
}
else {
var %txt = msg.trigger $+ $mid($sq.txt(505),1,1) $+ $+ $gettok($sq.txt(505),3,32)
sq.set %txt $puttok($sq.get(%txt),<Header: $+ $sq.txt(507) $+ / $+ $sq.txt(539) $+ : $+ $sq.txt(509) $+ : $+ $sq.txt(552) $+ : $+ $sq.txt(554) $+ : $+ $sq.txt(560) $+ >,1,59)
}
}
sq.set @find.fileslist $did(94,1).text
sq.set sound.query $did(94,3).text
sq.set sound.nick $did(94,2).text
.echo -q $findfile($sq.dir,SQrequest.*.txt,0,sq.checkoldreq $1-)
sq.del newrequest
hsave -bo SQ.messages $sq.dir $+ SQ-hash.dat
if ($sq.get(sound.winamp.wakeup)) { .timersq.wakeup -o $sq.get(sound.winamp.hour) $+ : $+ $sq.get(sound.winamp.minutes) 1 1 sq.wakeup }
else { .timersq.wakeup off }
}
alias sq.writereq {
sq.set request. $+ $1 $sq.get(request. $+ $1) $+ ; $+ $gettok($did(SQ,624,%tempcount).text,$2,47)
}
alias sq.writeegg {
sq.set eggdrop. $+ $1 $sq.get(eggdrop. $+ $1) $+ ; $+ $gettok($did(SQ,204,%tempcount).text,$2,47)
}
alias sq.txt {
return $did(sq,$1).text
}
;#####################################did section##############################
alias sq.status {
if ($did($did).state == 1) { did -o SQ $did 1 ON }
else { did -o SQ $did 1 OFF }
}
alias sq.preview {
var %tempcount = 1
while (%tempcount <= $numtok($didtok(sq,$1,59),59)) {
SQ.sysmsg $SQ.SetVariables($replace($gettok($didtok(sq,$1,59),%tempcount,59),$chr(44),::))
inc %tempcount 1
}
}
on *:dialog:sq:scroll:*:{
sq.setscroll
}
on *:dialog:sq:sclick:*:{
if ($did == 5) {
did -r sq 505
var %count = 1,%tok
while (%count <= $hmatch(sq.messages,trigger*,0)) {
var %txt = $hmatch(sq.messages,trigger*,%count)
if ($gettok(%txt,2,1) == O) { %tok = %tok $+ ; $+ OP }
elseif ($gettok(%txt,2,1) == V) { %tok = %tok $+ ; $+ Voice }
elseif ($gettok(%txt,2,1) == R) { %tok = %tok $+ ; $+ Regular }
elseif ($gettok(%txt,2,1) == A) { %tok = %tok $+ ; $+ All }
%tok = %tok on $gettok(%txt,3,1) $+ ;
inc %count 1
}
didtok sq 505 59 %tok
did -a sq 505 upload
}
elseif ($did == 140) {
if ($did(140).state) {
var %remote = $input(Enter the address of the remote host,1)
if (!%remote) { did -u sq 140 | sq.set @find.connection.host 127.0.0.1 }
else { sq.set @find.connection.host %remote }
dialog -v sq
}
else { sq.set @find.connection.host 127.0.0.1 }
if ($sock(sq.searchbot)) { sockclose sq.searchbot }
}
elseif ($did == 451) {
sq.del sound.winamp.location
did -u sq 442
}
elseif ($did == 442) {
if (!$did(442).state || $isfile($sq.get(sound.winamp.location))) { return }
sq.set sound.winamp.location $$sfile(c:\*.exe,Please select the players exe file)
dialog -v sq
}
elseif ($did == 449) {
if ($did(449).sel == 1) {
var %sel = *.pls,*.m3u
var %playlist = " $+ $sfile($mircdir $+ %sel) $+ "
did -oc sq 449 3 %playlist
}
else {
var %station = $input(Please enter the URL for the radio-station,1,ok)
did -oc sq 449 3 %station
}
dialog -v sq
}
elseif ($did == 505) {
if ($sq.txt(505) == upload) {
did -o sq 507,539,552,554,560 1 0
did -m sq 507,539,552,554,560
did -ce sq 509 $findtok($sq.ftpgroups,$sq.get(ftp.uploadgroup),1,59)
}
else {
did -n sq 507,539,552,554,560
var %txt = $remove($sq.tok(msg.trigger $+ $mid($sq.txt(505),1,1) $+ $+ $gettok($sq.txt(505),3,32),1),>)
did -r sq 507,539,552,554,560
did -ue sq 509
IF ($sq.txt(505)) {
if ($gettok(%txt,2,58)) {
did -o sq 507 1 $gettok($gettok(%txt,2,58),1,47)
did -o sq 539 1 $gettok($gettok(%txt,2,58),2,47)
did -o sq 552 1 $gettok(%txt,4,58)
did -o sq 554 1 $gettok(%txt,5,58)
did -o sq 560 1 $gettok(%txt,6,58)
}
else { did -o sq 507,552,554,560 1 0 | did -o sq 539 1 3 }
did -c sq 509 $findtok($sq.ftpgroups,$gettok(%txt,3,58),1,59)
}
else {
did -m sq 507,539,552,554,560
did -b sq 509
}
}
}
elseif ($did == 111 || $did == 103) {
if ($sq.txt(111) && $sq.txt(103)) {
did -rn sq 117
didtok sq 117 59 $sq.get(msg.trigger $+ $mid($sq.txt(111),1,1) $+ $+ $did(103).text)
}
else { did -m sq 117 }
}
elseif ($did == 324) {
if ($sq.get(ftp.configured) == G6) {
var %tmpfile = $+(",$sq.get(ftp.directory),stat.mdl,")
if ($did(sq,324).state == 1) {
write -c %tmpfile ;%call;%c24h;%servermins;%serverhours;%serverdays;%servertotuptime
write %tmpfile ;%serverkbup;%serverkbdown;%serverkball
write %tmpfile ;%sessionkbup;%sessionkbdown;%sessionkball;%sessionfilesup;%sessionfilesdown;%sessionfilesall
write %tmpfile ;%serverversion;%PCproc;%PCram;%osver
sq.ftp.stat.update
}
else { .remove %tmpfile }
}
else { did -u sq 324 }
}
elseif ($did == 206) {
did -efr sq 208
while ($did(sq,208).lines < $nick($sq.txt($did),0,o)) {
did -o sq 208 $calc($did(sq,208).lines + 1) $nick($sq.txt($did),$calc($did(sq,208).lines + 1),o)
}
}
elseif ($did == 208) { sq.filltok 212;Chat;Telnet | did -ef sq 212 | .dns $sq.txt(208) | .userhost $sq.txt(208) }
elseif ($did == 212) { did -re sq 214,216 }
elseif ($did == 218) { did -ef sq 219 }
elseif ($did == 219) {
if ($did(sq,204).lines >= 8) { .echp -aq $input(SQ-script supports currently only up to 8 eggdrops,4,Error) | sq.menu }
elseif ($sq.txt(212) != telnet) {
did -o sq 204 $calc($did(sq,204).lines + 1) $sq.txt(206) $+ / $+ $sq.txt(208) $+ / $+ $sq.dnsip($address($sq.txt(208),1)) $+ / $+ $address($sq.txt(208),1) $+ / $+ $sq.txt(212) $+ / $+ $sq.txt(214) $+ / $+ $sq.encrypt(@,$sq.txt(216)) $+ / $+ $sq.txt(218)
did -b sq 208,212,214,216,218,219
did -f sq 204
}
else {
var %tempport = $input(Please enter port number for telnet connection,1,Telnet)
if (%tempport isnum) {
did -o sq 204 $calc($did(sq,204).lines + 1) $sq.txt(206) $+ / $+ $sq.txt(208) $+ / $+ $sq.dnshost($address($sq.txt(208),1)) $+ : $+ %tempport $+ / $+ $address($sq.txt(208),1) $+ / $+ $sq.txt(212) $+ / $+ $sq.txt(214) $+ / $+ $sq.encrypt(@,$sq.txt(216)) $+ / $+ $sq.txt(218)
did -b sq 208,212,214,216,218,219
did -f sq 204
}
}
}
elseif ($did == 402) {
if ($input(Do you want to reset all settings from SQ-script to default ? You cannot undo this operation !,8,Question)) { sq.setdefault }
sq.menu
}
elseif ($did == 137) { if (!$dialog(sq.list)) { dialog -drom sq.list sq.list } }
elseif ($istok(109.126.202.303.101,$did,46)) { sq.status }
elseif ($did == 515) {
sq.status
if ($did(SQ,515).state == 0) { .timerSQ.banner off }
else { .timersq.banner 1 $sq.get(trigger.bannerdelay) sq.banner }
}
elseif ($did == 604) {
if ($did(604).state == 1) { did -o SQ 614 1 (AWAY) }
elseif ($did(604).state == 0) { did -o SQ 614 1 (OFF) }
else { did -o SQ 614 1 (ALWAYS) }
}
elseif ($did == 606) {
if ($did(606).state == 1) { sq.set window.state desktop | window -c @SQ-Script! | SQ.sysmsg changed window state }
else { sq.set window.state normal | window -c @SQ-Script! | SQ.sysmsg changed window state }
}
elseif ($did == 437) {
var %temptext = $addtok($didtok(SQ,438,59),$sq.txt(436),59)
did -r SQ 438,436
didtok sq 438 59 %temptext
}
elseif ($did == 459) {
var %temptext = $addtok($didtok(SQ,460,59),$sq.txt(458),59)
did -r SQ 460,458
didtok sq 460 59 %temptext
}
elseif ($did == 128) {
did -o sq 94 1 $shortfn($sfile($mircdir $+ *.txt,Choose your fileslist,USE))
did -o SQ 128 1 $nopath($longfn($did(94,1).text))
if (!$did(94,1).text) { did -o sq 128 1 Choose fileslist }
}
elseif ($did == 419) {
did -o sq 94 3 $shortfn($sfile($mircdir $+ Sounds\,Choose your Querysound,USE))
did -o SQ 419 1 $nopath($longfn($did(94,3).text))
if (!$did(94,3).text) { did -o sq 419 1 Choose soundfile }
}
elseif ($did == 611) {
did -o sq 94 2 $shortfn($sfile($mircdir $+ Sounds\,Choose your Notifysound,USE))
did -o SQ 611 1 $nopath($longfn($did(94,4).text))
if (!$did(94,4).text) { did -o SQ 611 1 Choose soundfile }
}
elseif ($did == 321) { sq.preview 322 }
elseif ($did == 404) { SQ.loadscript SQ }
elseif ($did == 406) {
if (!$input(Really unload ?,8,Unload Script)) { sq.menu | return }
dialog -x SQ
sockclose SQ.ftp
.timerSQ.* off
if ($input(Do you want to erase all settings $+ $chr(44) too?,8,Erase settings)) {
.remove $sq.dir $+ SQ-script.ini
.remove $sq.dir $+ SQ-hash.dat
hfree sq.vars
hfree sq.messages
hfree sq.temps
}
else { hsave -bo SQ.messages $sq.dir $+ SQ-hash.dat }
window -c @SQ-script!
.timer 1 1 echo -at 4SQ-script has been unloaded successfully
.timer 1 2 echo -at 4Please email me at JumpinS@gmx.net to solve the problems you had. Thank you
.unload -rs " $+ $script $+ "
}
elseif ($did == 134) { sq.preview 117 }
elseif ($did == 136) { sq.preview 135 }
elseif ($did == 502) {
if ($lock(run)) { .echo -q $input(You disabled the /run command for scripts. This is an essential part for SQ-script to communicate with the server. $crlf $+ Please enable it and try again.,4,Error) | sq.menu | return }
sq.savedialog
dialog -x SQ
SQ.serverconfig
}
elseif ($did == 133) {
sq.sysmsg $decode(TWFueSB0aGFua3MgdG86,m)
sq.sysmsg $decode(H2JFRG1hbh8gYXMgbXkgYmVzdCBhbmQgbW9zdCBjb25maWRlbnQgYmV0YSB0ZXN0ZXI=,m)
sq.sysmsg $decode(H3IwMHRiMHkfIGZvciBhbGwgdGhlIGtub3dsZWRnZSBoZSBzaGFyZWQgd2l0aCBtZQ==,m)
sq.sysmsg $decode(H3N3ZWsfIGZvciBlbmNvdXJhZ2luZyBtZSB0byBzdGFydCBzY3JpcHRpbmc=,m)
sq.sysmsg $decode(H0RlbW9uR2F3ZB8gZm9yIGhpcyBwYXRpZW5jZSBvbiB0cm91Ymxlc2hvb3Rpbmc=,m)
sq.sysmsg $decode(YW5kIHRoZSB3d3cubWlyY3NjcmlwdHMub3JnIHRlYW0gZm9yIHRoZWlyIGdyZWF0IHNpdGU=,m)
if (!$sq.get(gimick)) {
sq.sysmsg $sq.gimick($decode(U1FVSVJSRUxTREFZIQ==,m))
sq.set gimick $true
}
else { sq.del gimick }
.timer 1 1 sq.event
}
elseif ($did == 305) { did -r sq 306 | did -o sq 306 1 | didtok SQ 306 35 $gettok($read($script,n,$calc($did(305).sel +12)),2,59) }
elseif ($did == 525) { sq.preview 511 }
elseif ($did == 429) {
if ($SQ.get(unloadbusy)) || (!$did(428).sel) { return }
sq.set 5 unloadbusy $true
var %count = 1
While ($did(428).seltext !isin $script(%count)) && (%count <= $script(0)) { inc %count }
if (!$input(Do you really want to unload [ $nopath($script(%count)) ] ?,8,Unload Script)) { return }
sq.menu
SQ.sysmsg " $+ $nopath($script(%count)) $+ " has been unloaded
.unload -rs " $+ $script(%count) $+ "
unset %count
if ($dialog(SQ)) {
var %tempcount = 1
var %counter = 1
did -r SQ 428
while (%tempcount <= $script(0)) { if (sq-script !isin $script(%tempcount)) { did -o SQ 428 %counter $nopath($script(%tempcount)) | inc %counter 1 } | inc %tempcount 1 }
}
}
elseif ($did == 617) {
var %tempcount = 1
did -ref SQ 619
while (%tempcount <= $nick($sq.txt(617),0)) {
did -o SQ 619 %tempcount $nick($sq.txt(617),%tempcount)
inc %tempcount 1
}
}
elseif ($did == 619) {
did -e SQ 629,623,621
}
elseif ($did == 623) {
if ($sq.txt(629) == $null || $chr(42) isin $sq.txt(629) || $chr(63) isin $sq.txt(629)) { .echo -q $input(Filetype may not be blank or contain wildcards,wo,Error) | sq.menu }
else {
if ($getdir(*. $+ $sq.txt(629)) == $getdir) { .echo -q $input(Please specify an own DCC GET folder for $sq.txt(629) files in the mIRC options (DCC->Folders) and disable sort by nickname,wo,Warning) }
var %temp.file = " $+ $$sfile($getdir(*.txt) $+ *.txt,Choose your requests list,Read) $+ "
if ($lines(%temp.file) > 1000 && !$input(The list you chose contains very large amount of data. $crlf $crlf $+ This will cause mIRC to freeze for a while and you might become disconnected from IRC! $crlf $crlf $+ Load anyways ?,wy,Warning)) {
dialog -v sq
return
}
dialog -v sq
did -o SQ 623 1 $nopath($longfn(%temp.file))
window -adohpC +Ltfe @PleaseWait -1 -1 300 100
drawtext @PleaseWait 1 Arial 40 20 10 Please Wait
drawtext @PleaseWait 1 Arial 16 20 55 Checking for requestable files...
SQ.sysmsg Reading requests file, this may take a while....
window -h @sq.temp
window -h @sq.temp2
filter -fwc %temp.file @sq.temp ! $+ $sq.txt(619) $+ * $+ . $+ $sq.txt(629) $+ *
var %last = $remove($gettok($line(@sq.temp,1),$numtok($line(@sq.temp,1),32),32),.)
var %tempcount = 1,%text,%line,%file,%existed = 0
window -h @sq.temp3
var %Nick = $replace($sq.txt(619),<,_,>,_,:,_,\,_,/,_,|,_,*,_,?,_)
%text = $line(@sq.temp,1)
if ($filtered) { var %filepath = $getdir($left(%text,$pos(%text,. $+ $sq.txt(629))) $+ $sq.txt(629)) }
if ($filtered && $isdir(%filepath $+ complete\ $+ %nick)) {
clear @PleaseWait
drawtext @PleaseWait 1 Arial 40 20 10 Please Wait
drawtext @PleaseWait 1 Arial 16 20 55 Found existing downloads folder. Skipping exiting files...
.echo -q $findfile(%filepath $+ complete\ $+ %nick,*,0,1,aline @sq.temp3 $1-)
}
var %stepping = $calc($line(@sq.temp,0) / 300 /2)
var %counter = 0,%size = 0
clear @PleaseWait
while (%tempcount <= $line(@sq.temp,0)) {
inc %counter 1
if (%counter > %stepping) {
%counter = 0
inc %size 2
drawrect -f @pleasewait 12 1 0 0 %size 100
drawtext @PleaseWait 1 Arial 40 20 10 Please Wait
drawtext @PleaseWait 1 Arial 16 20 55 Writing requests list...
}
%text = $line(@sq.temp,%tempcount)
%line = $left(%text,$pos(%text,. $+ $sq.txt(629))) $+ $sq.txt(629)
%file = $gettok(%Line,2-,32)
if (!$fline(@sq.temp3,* $+ $replace(%file,$chr(32),*,_,*) $+ *,1)) { aline @sq.temp2 %line }
else { inc %existed 1 }
inc %tempcount 1
}
window -c @PleaseWait
if (!$line(@sq.temp2,0)) {
SQ.sysmsg Could not find any files to request from $sq.txt(619) on $sq.txt(617)
did -o SQ 623 1 Choose requests file
.remove $sq.request.accfile($sq.txt(619))
did -b SQ 631
}
else {
SQ.sysmsg Done. Found $line(@sq.temp2,0) out of $filtered files to request ( $+ %existed already existed)
did -ef SQ 631
}
savebuf @sq.temp2 $sq.request.accfile($sq.txt(619))
window -c @sq.temp
window -c @sq.temp2
window -c @temp
.whois $sq.txt(619)
}
}
elseif ($did == 625) {
if ($did(625).state == 1) {
sq.set request.status 1
did -o SQ 625 1 Requests in progress
var %chan = 1
while (%chan <= $chan(0)) {
var %count = 1
while (%count <= $sq.num(request.nick)) {
if ($sq.tok(request.nick,%count) ison $chan(%chan)) && ($sq.tok(request.channel,%count) == $chan(%chan)) { .timer 1 $rand(0,30) sq.request $sq.tok(request.nick,%count) }
elseif ($sq.tok(request.channel,%count) == $chan) { .timer 1 $rand(0,30) sq.request $sq.tok(request.nick,%count) }
inc %count 1
}
inc %chan 1
} }
else {
sq.set request.status 0
did -o SQ 625 1 START REQUESTING NOW
}
}
elseif ($did == 308) { dialog -omdr sq.newonserver sq.newonserver }
elseif ($did == 98) { url -n http://sq-script.tech.nu/ }
elseif ($did == 631) {
if ($did(sq,624).lines >= 13) { .echo -q $input(SQ-script does only support up to 13 requests at once right now,4,Error) | sq.menu }
else {
did -b SQ 623
if ($sq.txt(619) !ison $sq.txt(617) || !$sq.txt(617) || $sq.txt(621) !isnum || !$sq.txt(623) || $address($sq.txt(619),3) $+ * iswm $SQ.get(request.address)) {
;did -b SQ 621,629,619
;did -ef SQ 617
sq.sysmsg Some error encountered. Check your settings.
echo -a $sq.txt(619) !ison $sq.txt(617) || $sq.txt(617) || $sq.txt(621) !isnum || $sq.txt(623) || $address($sq.txt(619),3) $+ * iswm $SQ.get(request.address)
if (!$address($sq.txt(619),3)) { sq.sysmsg Perform a /whois lookup on the chosen nick and try again }
}
else {
did -oz sq 624 $calc($did(sq,624).lines + 1) $sq.txt(619) $+ / $+ $address($sq.txt(619),3) $+ / $+ $sq.txt(617) $+ / $+ $sq.txt(621) $+ / $+ 1
sq.add newrequest $sq.txt(619)
}
}
}
elseif ($did == 624) {
did -e sq 632
}
elseif ($did == 632 && $did(624).sel) {
var %temp = $input(Please enter the new limit for the serverqueue,1,Edit Queue limit,$sq.tok(request.maxqueue,$did(624).sel))
dialog -v sq
if (0) { }
if (%temp) {
sq.put request.maxqueue %temp $did(624).sel
set -u0 %tempcount 1
while (%tempcount <= $sq.num(request.nick)) {
sq.getslash 624 request nick address channel maxqueue count
inc %tempcount 1
}
}
}
}
On *:dialog:SQ:dclick:*:{
if ($did == 204) {
var %temptext = $deltok($didtok(SQ,204,59),$did(sq,204).sel,59)
did -r sq 204
didtok sq 204 59 %temptext
}
elseif ($did == 438) {
var %temptext = $deltok($didtok(SQ,438,59),$did(sq,438).sel,59)
did -r sq 438
didtok sq 438 59 %temptext
}
elseif ($did == 460) {
var %temptext = $deltok($didtok(SQ,460,59),$did(sq,460).sel,59)
did -r sq 460
didtok sq 460 59 %temptext
}
elseif ($did == 133) { url -n http://SQ-script.tech.nu }
elseif ($did == 624) {
var %temptext = $deltok($didtok(SQ,624,59),$did(624).sel,59)
did -r sq 624
didtok SQ 624 59 %temptext
did -z sq 624
}
elseif ($did == 536) {
var %count = 1,%num = $did(536).sel
sq.deltok ftp.denynick %num
sq.deltok ftp.denyaddress %num
did -r sq 536
while (%count <= $sq.num(ftp.denynick)) {
did -o sq 536 %count $sq.tok(ftp.denynick,%count) ( $+ $sq.tok(ftp.denyaddress,%count) $+ )
inc %count 1
}
}
}
on *:dialog:sq:edit:*:{
if ($did == 214 || $did == 216) { did -e sq 218 }
}
;#############################DCC request section#####################################
alias SQ.remove.request {
var %count = $sq.findtok(request.nick,$1)
sq.deltok request.nick %count
sq.deltok request.channel %count
sq.deltok request.address %count
sq.deltok request.maxqueue %count
sq.deltok request.count %count
if ($dialog(sq)) {
did -r SQ 624
while (%tempcount <= $sq.num(request.nick)) {
did -oz SQ 624 $sq.tok(request.nick,%tempcount) $+ / $+ $sq.tok(request.address,%tempcount) $+ / $+ $sq.tok(request.channel,%tempcount) $+ / $+ $sq.tok(request.maxqueue,%tempcount) $+ / $+ $sq.tok(request.count,%tempcount)
inc %tempcount 1
}
}
}
alias sq.requestjoin {
if ($me !ison $1) { join $1 }
}
alias sq.requestall {
var %count = 1,%subcount = 1,%regnick
if ($chr(35) isin $1) {
while (%count <= $sq.num(request.channel)) {
if ($sq.tok(request.channel,%count) == $1) {
.timersq.req $+ %count $sq.min($lines($sq.request.accfile(%regnick)),$sq.tok(request.maxqueue,%count)) $calc(40 + %count) sq.request $sq.tok(request.nick,%count)
}
inc %count 1
}
}
elseif (@ isin $1) {
while (%count <= $sq.num(request.nick)) {
%regnick = $sq.tok(request.nick,%count)
if ($sq.tok(request.address,%count) iswm $1) { .timersq.req $+ %count $sq.min($lines($sq.request.accfile(%regnick)),$sq.tok(request.maxqueue,%count)) 40 sq.request %regnick }
inc %count 1
}
}
else {
if ($sq.findtok(request.nick,$1)) {
%count = $sq.findtok(request.nick,$1)
%regnick = $sq.tok(request.nick,%count)
.timersq.req $+ %count $sq.min($lines($sq.request.accfile(%regnick)),$sq.tok(request.maxqueue,%count)) 40 sq.request $1
}
if ($sq.tok(request.maxqueue,%count) == 0) { sq.set req $+ %count 0 }
}
}
alias SQ.request {
if ($SQ.get(request.status)) {
if ($sq.istok(request.nick,$1)) { var %tmppnt = $sq.findtok(request.nick,$1) }
elseif ($sq.istok(request.address,$address($1,3))) { var %tmppnt = $sq.findtok(request.address,$address($1,3)) }
var %line = $sq.tok(request.count,%tmppnt)
var %regnick = $sq.tok(request.nick,%tmppnt),%true = 1,%currentnick = $ial($sq.tok(request.address,%tmppnt),1).nick
if (!%currentnick) { %currentnick = $1 }
if ($timer(sq.req $+ %tmppnt)) {
sq.inc req $+ %tmppnt
if ($sq.get(req $+ %tmppnt) > $lines($sq.request.accfile(%regnick))) { .timersq.req $+ %tmppnt off }
}
while (%true) {
var %tempread = $read($sq.request.accfile(%regnick),s,! $+ %regnick,%line)
if (%tempread && $isfile($sq.request.file(%tmppnt,$replace(%tempread,$chr(32),$chr(95)),$scriptline))) {
sq.sysmsg File > $+ %tempread $+ < from $1 already exists. Skipped....
write -l $+ $readn $sq.request.accfile(%regnick) <success> $read($sq.request.accfile(%regnick),$readn)
inc %line 1
if (%line > $lines($sq.request.accfile(%regnick)) && %true != 2) {
if ($timer(sq.req $+ %tmppnt).reps == 0) { .timersq.req $+ %tmppnt off }
%line = 1
%true = 2
}
elseif (%line > $lines($sq.request.accfile(%regnick)) && %true == 2) { %true = 0 | %tempread = $null }
}
else { %true = 0 }
}
%line = $readn
if (%tempread && %currentnick ison $sq.tok(request.channel,%tmppnt)) {
msg $sq.tok(request.channel,%tmppnt) ! $+ %currentnick %tempread
;3 $+ $chr(443) $+ AutoRequest by SQ-Script $+ $chr(427)
inc %line 1
sq.set request.count $puttok($SQ.get(request.count),%line,%tmppnt,59)
}
elseif (%currentnick ison $sq.tok(request.channel,%tmppnt)) {
filter -xffc $sq.request.accfile(%regnick) tempfiles.txt <success>*
iF ($timer(sq.skipreq $+ %tmppnt)) { .timersq.skipreq $+ %tmppnt off }
if ($Filtered == 0) {
SQ.sysmsg Finished requesting all files from %regnick
msg $sq.tok(request.channel,%tmppnt) @ $+ %currentnick $+ -remove
window -g1 @SQ-script!
SQ.remove.request %regnick 1
.remove tempfiles.txt
.remove $sq.request.accfile(%regnick)
}
else {
.remove $sq.request.accfile(%regnick)
.rename tempfiles.txt $sq.request.accfile(%regnick)
sq.set request.count $puttok($SQ.get(request.count),1,%tmppnt,59)
var %text = $read($sq.request.accfile(%regnick),w,!*)
if (!%text) {
sq.sysmsg only failed requests are left for %currentnick
sq.sysmsg better check $sq.request.accfile(%regnick)
}
elseif ($sq.tok(request.maxqueue,%tmppnt) == 0) { sq.set req $+ %tmppnt $filtered }
elseif (!$timer(sq.skipreq $+ %tmppnt)) { .timersq.rerequest 1 10 sq.request $1 }
sq.sysmsg Finished requesting list from %regnick $+ . Proceeding failed DCCs...
sq.sysmsg Files left: $filtered
if ($timer(sq.req $+ %tmppnt)) { sq.dec req $+ %tmppnt }
}
}
else {
var %delay = $timer(sq.req $+ %tmppnt).delay
.timersq.req $+ %tmppnt off
if (%delay < 3000) { .timersq.req $+ %tmppnt $sq.min($lines($sq.request.accfile(%regnick)),$sq.tok(request.maxqueue,%tmppnt)) $calc(%delay * 10) sq.request %regnick }
}
}
}
alias sq.request.file {
var %nickpath = $replace($sq.tok(request.nick,$1),<,_,>,_,:,_,\,_,/,_,|,_,*,_,?,_),%path = $getdir($2)
if (%path) {
if (!$isdir(" $+ %path $+ complete $+ ")) { mkdir " $+ %path $+ complete $+ " }
if (!$isdir(" $+ %path $+ complete\ $+ %nickpath $+ ")) { mkdir " $+ %path $+ complete\ $+ %nickpath $+ " }
}
return " $+ %path $+ complete\ $+ %nickpath $+ \ $+ $nopath($2) $+ "
}
on *:filercvd:*:{
if ($sq.istok(soundrequestfile,$nopath($filename))) {
sq.rem soundrequestfile $nopath($filename)
}
if ($sq.istok(request.address,$address($nick,3))) { var %tmpnick = $sq.tok(request.nick,$sq.findtok(request.address,$address($nick,3))) }
elseif ($sq.istok(request.nick,$nick)) { var %tmpnick = $nick }
if (%tmpnick) {
var %count = $sq.findtok(request.nick,%tmpnick),%file = $nopath($filename)
var %line = $read($sq.request.accfile(%tmpnick),w,* $+ $replace(%file,$chr(95),*,$chr(32),*) $+ *)
if (!$readn) { return }
if (!$sq.get(request.log)) {
SQ.sysmsg Successfull DCC get %file from $nick
SQ.sysmsg Files done: $round($calc($readn / $lines($sq.request.accfile(%tmpnick)) * 100),1) $+ $chr(37)
window -g2 @SQ-script!
}
if (!$isfile($sq.request.file(%count,$filename,$scriptline))) { .rename " $+ $filename $+ " $sq.request.file(%count,$filename,$scriptline) }
else {
sq.sysmsg %file has not been copied to complete dir. Already existed
.remove " $+ $filename $+ "
}
write -l $+ $readn $sq.request.accfile(%tmpnick) <success> ! $+ %tmpnick %file
if (!$read($sq.request.accfile(%tmpnick),s,! $+ %tmpnick)) { sq.request $nick }
}
}
on *:join:#:{
if ($nick == $me && $sq.istok(eggdrop.channel,$chan)) { .timer 1 1 sq.automode $chan }
if ($sq.istok(request.channel,$chan)) {
if ($nick == $me) { .timer 1 60 sq.requestall $chan }
elseif ($sq.istok(request.nick,$nick) || $sq.istok(request.address,$address($nick,3))) { sq.requestall $nick }
}
}
on *:nick:{
if ($sq.istok(request.channel,$chan) && !$sq.istok(request.address,$address($newnick,3)) && $sq.istok(request.nick,$newnick)) {
.timer 1 30 sq.requestall $newnick
}
}
on ^*:open:?:*:{
if ($1- == $sq.get(trigger.stat)) { if ($SQ.get(stat.status)) { SQ.stats } | haltdef }
if (!$2) {
sq.set 1 querytext 1
if ($sq.noquerytext($1-)) { haltdef }
}
if ($sq.get(noflood.spamblock)) {
var %count = 1
while (%count <= $sq.num(noflood.spam.ignore)) {
if ($sq.tok(noflood.spam.ignore,%count) iswm $1-) { haltdef }
inc %count 1
}
}
sq.request.info $1-
}
on ^*:notice:*:?:{
if (!$sq.request.info($1-) && $sq.findtok(request.address,$address($nick,3)) || $sq.findtok(request.nick,$nick)) {
if ($sq.istok(request.nick,$nick)) { var %pos = $sq.findtok(request.nick,$nick) }
elseif ($sq.istok(request.address,$address($nick,3))) { var %pos = $sq.findtok(request.address,$address($nick,3)) }
echo 14 -t $sq.tok(request.channel,%pos) < $+ $nick $+ > $strip($1-)
haltdef
}
if ($sq.get(noflood.spamblock)) {
var %count = 1
while (%count <= $sq.num(noflood.spam.ignore)) {
if ($sq.tok(noflood.spam.ignore,%count) iswm $1-) { haltdef }
inc %count 1
}
}
}
on ^*:text:*:?:sq.request.info $1-
alias sq.request.info {
if (You already have isin $1- || You are already isin $1- || not accepting requests isin $1- || too slow isin $1- || I don't have isin $1- || maxed out isin $1- || check your spelling isin $1- || maximum number of files isin $1-) {
if ($sq.istok(request.address,$address($nick,3))) { var %tmpnick = $sq.tok(request.nick,$sq.findtok(request.address,$address($nick,3))) }
elseif ($sq.istok(request.nick,$nick)) { var %tmpnick = $nick }
if (%tmpnick) {
var %tmppnt = $sq.findtok(request.nick,%tmpnick)
if (not accepting requests isin $1- || maxed out isin $1-) {
.timersq.request $+ %tmpnick 1 1800 SQ.request $nick
sq.put request.count $calc($sq.tok(request.count,%tmppnt) -1) %tmppnt
.timersq.req $+ %tmppnt off
var %notshow = 1
}
elseif (too slow !isin $1-) {
if (I don't have isin $1- || check your spelling isin $1- ) {
var %pos = $calc($sq.tok(request.count,%tmppnt) +1)
var %line = $read($sq.request.accfile(%tmpnick),%pos)
%line = $+(*,$replace($gettok($mid(%line,$pos(%line,!,1)),2-,32),$chr(32),*),*)
while (%pos > $calc($sq.tok(request.count,%tmppnt) -20) && %line !iswm $1-) {
dec %pos 1
%line = $read($sq.request.accfile(%tmpnick),%pos)
%line = $+(*,$replace($gettok($mid(%line,$pos(%line,!,1)),2-,32),$chr(32),*),*)
}
sq.sysmsg error getting $gettok($read($sq.request.accfile(%tmpnick),%pos),2-,32) from $nick
write -l $+ %pos $sq.request.accfile(%tmpnick) <error> $read($sq.request.accfile(%tmpnick),%pos)
var %counter = 1
while ($timer(sq.fail $+ %tmpnick).reps < %counter) { inc %counter 1 }
.timersq.fail $+ %tmpnick %counter 20 sq.request %tmpnick
var %notshow = 1
}
elseif (*you*already*have*.*queue* iswm $strip($1-)) {
if ($sq.tok(request.maxqueue,%tmppnt) == 0) { sq.put request.maxqueue $sq.get(req $+ %tmppnt) %tmppnt }
elseif ($sq.tok(request.count,%tmppnt) != 1) { .timersq.skipreq $+ %tmppnt 1 10 sq.request %tmpnick }
var %notshow = 1
}
else {
if ($timer(sq.req $+ %tmppnt) && $sq.get(req $+ %tmppnt)) {
sq.dec req $+ %tmppnt
if ($sq.tok(request.maxqueue,%tmppnt) == 0) { sq.put request.maxqueue $sq.get(req $+ %tmppnt) %tmppnt }
sq.sysmsg Reached queue limit for $nick after $sq.get(req $+ %tmppnt) files
sq.del req $+ %tmppnt
}
.timersq.req $+ %tmppnt $+ * off
sq.put request.count $calc($sq.tok(request.count,%tmppnt) -1) %tmppnt
}
if (!%notshow) { echo 14 -t $sq.tok(request.channel,$sq.findtok(request.nick,%tmpnick)) < $+ $Nick $+ > $strip($1-) }
}
if (!%notshow) { sq.sysmsg 14 $+ $nick $strip($1-) }
haltdef
return 1
}
}
}
alias sq.checkoldreq {
if (!$sq.istok(request.nick,$sq.request.accname($1)) && !$sq.istok(newrequest,$sq.request.accname($1))) {
if ($input(Found old requests queue for $sq.request.accname($1) $+ . $crlf $+ Do you want to remove all unsuccessful requests ?,8)) {
var %line = 1,%file,%pos
window -h @temp
window -h @temp2
filter -ffx $1 temp.temp <success>*
loadbuf @temp2 temp.temp
%file = $read($1,s,! $+ $sq.request.accname($1))
.echo -q $findfile($getdir(%file),*,0,1,aline @temp $1-)
while (%line <= $line(@temp,0)) {
%pos = 0
%file = $nopath($line(@temp,%line))
if ($fline(@temp2,* $+ $replace($nopath(%file),$chr(95),$chr(42)) $+ *)) {
.remove -b " $+ $line(@temp,%line) $+ "
sq.sysmsg Removed %file
}
inc %line 1
}
window -c @temp
window -c @temp2
.remove temp.temp
}
sq.sysmsg Finished clearing up requests
.remove $1-
}
}
alias sq.request.accfile { return $sq.dir $+ SQrequest. $+ $replace($1,\,§1§,/,§2§,:,§3§,*,§4§,?,§5§,",§6§,<,§8§,>,§9§,|,§0§) $+ .txt }
alias sq.request.accname { return $gettok($nopath($replace($1,§1§,\,§2§,/,§3§,:,§4§,*,§5§,?,§6§,",§8§,<,§9§,>,§0§,|)),2,46) }
;###########################################Fileslister Section##########################################
dialog SQ.list {
title SQ-Script $sq.version FILESLIST MAKER
option dbu
size -1 -1 300 100
button "OK",1,130 88 40 10, ok
button "Cancel",100, 172 88 40 10, cancel
text "Choose the directories you're serving files from.",2, 5 5 140 10
text "SQ-script will add all files from this directory recursively. If you mounted other directories to your servers filesystem, you can add them, too.",3, 5 15 140 21
text "To remove an item from the list simply doubleclick on it",4, 5 35 140 10
button "Add directory",5, 10 45 60 10
list 6, 160 10 130 80
check "Refresh Fileslist every",7, 5 60 65 10
edit "2",8, 70 60 10 10, center
text "days",9, 81 62 20 10
check "Include filesizes",10,5 70 65 10
text "Put this in front of each filename:",11,5 83 80 10
edit "",12,86 82 30 10
}
on *:dialog:sq.list:init:0:{
didtok sq.list 6 59 $sq.get(ftp.directories)
did -o sq.list 8 1 $sq.GET(@find.fileslist.refresh)
did -o sq.list 12 1 $sq.get(msg.fileslist.header)
if ($sq.get(@find.fileslist.includesize)) { did -c sq.list 10 }
if ($SQ.get(@find.fileslist.refreshstatus)) { did -c SQ.list 7 }
dialog -o sq.list
}
on *:dialog:sq.list:dclick:6:{
var %temptext = $deltok($didtok(SQ.list,6,59),$did(sq.list,6).sel,59)
did -r sq.list 6
didtok sq.list 6 59 %temptext
}
on *:dialog:sq.list:sclick:5:{
var %dir = $sdir(c:,Choose a directory)
if (%dir) {
dialog -n sq.list
if ($input(Do you want to list all files $+ $chr(44) else only directories will be listed,8,List Files)) { var %temptext = $addtok($didtok(sq.list,6,59),%dir,59) }
else { var %temptext = $addtok($didtok(sq.list,6,59),onlydirs %dir,59) }
dialog -o sq.list
did -r SQ.list 6
didtok sq.list 6 59 %temptext
}
}
on *:dialog:sq.list:sclick:1:{
sq.set @find.fileslist.refreshstatus $did(sq.list,7).state
sq.set @find.fileslist.includesize $did(sq.list,10).state
sq.set @find.fileslist.refresh $did(sq.list,8).text
sq.set msg.fileslist.header $did(sq.list,12).text
sq.set ftp.directories $didtok(sq.list,6,59)
sq.fileslist.refresh
}
alias sq.fileslist.refresh {
if ($dialog(sq)) {
did -o sq 94 1 $sq.dir $+ sq.fileslist.txt
did -o SQ 128 1 $nopath($longfn($did(sq,94,1).text))
}
sq.set @find.fileslist $sq.dir $+ sq.fileslist.txt
if ($isfile($sq.dir $+ sq.fileslist.txt)) { .remove $sq.dir $+ sq.fileslist.txt }
sq.del stat.servingdata
sq.sysmsg Writing Fileslist, please wait.....
if ($active != @SQ-script!) { echo 3 -ta Writing Fileslist, please wait..... }
write $sq.dir $+ sq.fileslist.txt Created at $asctime(HH:nn) on $date
var %tempcount = 1
while (%tempcount <= $sq.num(ftp.directories)) {
if ($gettok($sq.tok(ftp.directories,%tempcount),1,32) != onlydirs) { .echo -q $findfile($sq.tok(ftp.directories,%tempcount),*.*,0,sq.writefileslist $1- ) }
else { .echo -q $finddir($gettok($sq.tok(ftp.directories,%tempcount),2-,32),*,0,write $sq.dir $+ sq.fileslist.txt $sq.get(msg.fileslist.header) $1-) }
inc %tempcount 1
}
sq.sysmsg Writing fileslist done. Files/directories found: $lines($sq.dir $+ sq.fileslist.txt) $iif($bytes($sq.get(stat.servingdata),3).suf,in $bytes($sq.get(stat.servingdata),3).suf)
if ($active != @SQ-script!) { echo 3 -ta Writing fileslist done. Files/directories found: $lines($sq.dir $+ sq.fileslist.txt) $iif($bytes($sq.get(stat.servingdata),3).suf,in $bytes($sq.get(stat.servingdata),3).suf) }
}
alias sq.writefileslist {
var %size = $file($1-).size,%ext1 = $gettok($1-,$numtok($1-,46),46),%ext2 = $gettok($1-,$calc($numtok($1-,46) -1),46)
sq.set stat.servingdata $calc($sq.get(stat.servingdata) + %size)
if (r?? iswm %ext1 && $mid(%ext1,2) isnum) || (part* iswm %ext2 && %ext2 != part1) { return }
if ($sq.get(@find.fileslist.includesize)) {
write $sq.dir $+ sq.fileslist.txt $sq.get(msg.fileslist.header) $1- $bytes(%size,3).suf $iif(%ext2 == part1 || %ext1 == rar,Other multipart volumes are not listed)
}
else { write $sq.dir $+ sq.fileslist.txt $sq.get(msg.fileslist.header) $1- }
}
;#####################################sfv-checker logviewer###################################
dialog sq.sfvlog {
size -1 -1 300 200
option dbu
title SQ-Script sfv-checker log
button "Close",1,90 188 20 10, ok
list 2,3 20 40 150,hsbar size
list 3,45 15 250 170,vsbar size
text "Doubleclick to remove item",4,3 3 40 14
text "Doubleclick to copy to clipboard",5,50 5 100 10
}
on *:dialog:sq.sfvlog:init:0:sq.sfvloginit
alias sq.sfvloginit {
var %count = 1
while (%count <= $ini($sq.dir $+ SQsfvmonitor.log,0)) {
did -a sq.sfvlog 2 $ini($sq.dir $+ SQsfvmonitor.log,%count)
inc %count 1
}
did -c sq.sfvlog 1
%count = 1
var %sect = $ini($sq.dir $+ SQsfvmonitor.log,1)
while (%count <= $ini($sq.dir $+ SQsfvmonitor.log,1,0)) {
var %var = $ini($sq.dir $+ SQsfvmonitor.log,1,%count)
did -a sq.sfvlog 3 $readini($sq.dir $+ SQsfvmonitor.log,%sect,%var)
inc %count 1
}
did -z sq.sfvlog 2,3
}
on *:dialog:sq.sfvlog:sclick:2:{
did -r sq.sfvlog 3
var %count = 1
while (%count <= $ini($sq.dir $+ SQsfvmonitor.log,$did(2,1).sel,0)) {
did -a sq.sfvlog 3 $readini($sq.dir $+ SQsfvmonitor.log,$ini($sq.dir $+ SQsfvmonitor.log,$did(2,1).sel),$ini($sq.dir $+ SQsfvmonitor.log,$did(2,1).sel,%count))
inc %count 1
}
did -z sq.sfvlog 3
}
on *:dialog:sq.sfvlog:dclick:2:{
$sq.reminisection($sq.dir $+ SQsfvmonitor.log,$ini($sq.dir $+ SQsfvmonitor.log,$did(2,1).sel))
did -r sq.sfvlog 2,3
sq.sfvloginit
}
on *:dialog:sq.sfvlog:dclick:3:{
clipboard $did(3).seltext
}
;#########################################New on server#############################################
dialog sq.newonserver {
size -1 -1 185 150
option dbu
title SQ-Script Setup ^NewOnServer
button "OK",1,70 138 40 10, ok
text "Enter the text you want as your ^NewOnServer variable",2,3 3 140 10
edit "",3,3 15 180 10,limit 80
button "Add from filename",4,5 30 60 10
button "Add from dir-name",5,70 30 60 10
button "Add to list",6,140 30 40 10
list 7,3 43 180 56,sort size
text "Doubleclick to remove entry",8,3 100 100 7
check "Automatically remove items older than",9,5 108 100 10
text "",10,108 110 9 10,right
scroll "",11,116 106 10 13, range 167
text "Hours",12,128 110 15 10
check "Randomize",13,5 118 100 10
}
on *:dialog:sq.newonserver:init:0:{ sq.newonserverinit }
alias sq.newonserverinit {
did -r sq.newonserver 7
var %file = $sq.dir $+ sq.NoS.txt,%count = $lines(%file)
while (%count > 0) {
var %line = $read(%file,%count)
did -i sq.newonserver 7 1 < $+ $duration($calc($ctime - $gettok(%line,1,59)),2) $+ > $gettok(%line,2-,59)
dec %count 1
}
did -o sq.newonserver 10 1 $sq.get(trigger.nosdelage)
did -c sq.newonserver 11 $calc(168- $sq.get(trigger.nosdelage))
if ($sq.get(ftp.nosrand)) { did -c sq.newonserver 13 }
if ($sq.get(ftp.removeoldnos)) { did -c sq.newonserver 9 }
did -z sq.newonserver 7
}
on *:dialog:sq.newonserver:sclick:*:{
var %file = $sq.dir $+ sq.NoS.txt
if ($did == 4) { did -a sq.newonserver 3 $nopath($$sfile(C:,Choose a file)) }
elseif ($did == 5) {
var %dir = $$sdir(C:,Choose a directory)
did -a sq.newonserver 3 $gettok(%dir,$numtok(%dir,92),92)
}
elseif ($did == 6 && $did(3).text) {
write %file $ctime $+ ; $+ $did(3).text
did -r sq.newonserver 3,7
sq.newonserverinit
}
elseif ($did == 9) {
sq.set ftp.removeoldnos $did(9).state
}
elseif ($did == 13) {
sq.set ftp.nosrand $did(13).state
}
}
on *:dialog:sq.newonserver:scroll:11:{
sq.set trigger.nosdelage $calc(168- $did(11).sel)
did -o sq.newonserver 10 1 $sq.get(trigger.nosdelage)
}
on *:dialog:sq.newonserver:dclick:7:{
write -dl $+ $did(7,1).sel $sq.dir $+ sq.NoS.txt
sq.newonserverinit
}
;############################################Sound Control############################################
alias f12 { dialog -mdo vol vol }
dialog vol {
title VOLUME
option dbu
size $int($calc($dbuw * 450)) $int($calc($dbuh * 210)) 50 135
Scroll "WAVE",2, 5 13 10 80,range 65535
button "",1,1 1 0 0,cancel hide
check "No Sounds",3, 5 102 40 8,push
text "",4,0 95 20 7, center
scroll "MIDI",5,32 13 10 80,range 65535
text "",6,24 95 30 7,center
text "Wave/MP3",9,0 3 30 10
text "MIDI",10,32 3 20 10
check "Time of silence:",11,2 112 45 7
edit "",12,4 122 10 10,right
text ":00 to",13,15 123 15 10
edit "",14,30 122 10 10,right
text ":00",15,41 123 10 7
}
on *:dialog:vol:init:0:{
did -c vol 2 $calc(65535 - $vol(wave))
did -o vol 4 1 $round($calc($vol(wave) / 65535 *100),2) $+ $chr(37)
did -c vol 5 $calc(65535 - $vol(midi))
did -o vol 6 1 $round($calc($vol(midi) / 65535 *100),2) $+ $chr(37)
if ($sq.get(sound.silence)) { did -c vol 11 }
if ($sq.get(sound.block)) { did -c vol 3 }
did -o vol 12 1 $sq.get(sound.silence.begin)
did -o vol 14 1 $sq.get(sound.silence.stop)
}
on *:dialog:vol:scroll:*:{
if ($did == 2) {
vol -p $calc(65535 - $did($did).sel)
did -o vol 4 1 $round($calc((65535 - $did(vol,2).sel) / 65535 *100),2) $+ $chr(37)
}
elseif ($did == 5) {
vol -m $calc(65535 - $did($did).sel)
did -o vol 6 1 $round($calc((65535 - $did(vol,5).sel) / 65535 *100),2) $+ $chr(37)
}
}
on *:dialog:vol:sclick:*:{
if ($did == 3) {
if ($did($did).state) {
splay stop
sq.set sound.block 1
}
else { sq.set sound.block 0 }
}
if ($did == 11) { sq.set sound.silence $did($did).state }
}
on *:dialog:vol:edit:*:{
sq.set sound.silence.begin $did(vol,12).text
sq.set sound.silence.stop $did(vol,14).text
}
;####################################Eggdrops section################################
alias sq.sorteggs {
if ($sq.istok(eggdrop.channel,$1)) {
var %tempcount = 1
while ($sq.findtok(eggdrop.channel,$1,%tempcount)) {
var %temptok1 = $addtok(%temptok1,$sq.findtok(eggdrop.channel,$1,%tempcount),59)
inc %tempcount 1
}
var %temptext = 1st;2nd;3rd
var %count = 1
while (%count <= $numtok(%temptext,59)) {
var %tempcount = 1
while (%tempcount <= $numtok(%temptok1,59)) {
if ($sq.tok(eggdrop.rating,$gettok(%temptok1,%tempcount,59)) == $gettok(%temptext,%count,59)) {
var %temptok = $addtok(%temptok,$gettok(%temptok1,%tempcount,59),59)
}
inc %tempcount 1
}
inc %count 1
}
}
return %temptok
}
alias sq.automode {
if ($sq.get(eggdrop.status)) {
var %tempeggs = $sq.sorteggs($1)
var %count = 1
while (%count <= $sq.num(connection.eggdrop)) {
if ($istok(%tempeggs,$sq.tok(connection.eggdrop,%count),59)) { var %con = %count }
inc %count 1
}
if (!%con) {
var %tempcount = 1
while (%tempcount <= $numtok(%tempeggs,59)) {
if ($sq.tok(eggdrop.nick,$gettok(%tempeggs,%tempcount,59)) isop $1) {
.userhost $sq.tok(eggdrop.nick,$gettok(%tempeggs,%tempcount,59))
sq.eggconnect $gettok(%tempeggs,%tempcount,59) $sq.tok(eggdrop.method,$gettok(%tempeggs,%tempcount,59)) $sq.tok(eggdrop.nick,$gettok(%tempeggs,%tempcount,59))
break
}
inc %tempcount 1
}
if (%tempcount > $numtok(%tempeggs,59)) { echo 4 -ta SQ-script could not find a bot to perform commands | sq.del revenge revengechan }
}
else {
if ($sq.tok(eggdrop.method,%con) == chat) { .msg = $+ $sq.tok(eggdrop.nick,%con) .op $me $sq.tok(eggdrop.channel,%con) }
elseif ($sq.tok(eggdrop.method,%con) == telnet) { sq.writetelnet %con .op $me $sq.tok(eggdrop.channel,%con) }
}
}
}
alias sq.eggconnect {
sq.app tempegg $3
sq.app tempeggaction $1 $2
.dns $3
}
on *:chat:*:{
if ($sq.istok(chatdrop,$sq.findtok(eggdrop.nick,$nick))) {
var %num = $sq.findtok(eggdrop.nick,$nick)
if (Enter your password. isin $1-) {
echo =$nick ***Hidden***
.msg =$nick $sq.decrypt(@,$sq.tok(eggdrop.pass,%num))
}
elseif ($sq.tok(eggdrop.login,%num) joined the party line isin $1-) {
var %egg = $sq.findtok(eggdrop.nick,$nick)
while ($sq.istok(revengechan,$sq.tok(eggdrop.channel,%egg))) {
var %count = $sq.findtok(revengechan,$sq.tok(eggdrop.channel,%egg))
sq.writetelnet $1 $sq.tok(revenge,%count)
sq.deltok revenge %count
sq.deltok revengechan %count
}
if (!$sq.get(eggdrop.onlycon)) { .msg =$nick .op $me $sq.tok(eggdrop.channel,%num) }
else {
if (!$sq.get(eggdrop.keepcon)) { .msg =$nick .quit | close -c $nick }
else { sq.add connection.eggdrop $sq.findtok(eggdrop.nick,$nick) | echo =$nick SQ-Script: Keeping connection to bot }
sq.rem chatdrop %num
}
}
elseif (Gave op to $me isin $1-) {
if (!$sq.get(eggdrop.keepcon)) { .msg =$nick .quit | close -c $nick }
else { sq.add connection.eggdrop $sq.findtok(eggdrop.nick,$nick) | echo =$nick SQ-Script: Keeping connection to bot }
sq.rem chatdrop %num
}
}
}
on *:close:=:{
if ($sq.istok(connection.eggdrop,$sq.findtok(eggdrop.nick,$nick))) {
var %num = $sq.findtok(eggdrop.nick,$nick)
sq.rem chat.eggdrop %num,1
sq.rem chatdrop %num
sq.rem tempchat %num
sq.rem connection.eggdrop %num
}
}
on *:open:=:{
if ($sq.istok(tempchat,$sq.findtok(eggdrop.nick,$nick))) {
var %num = $sq.findtok(eggdrop.nick,$nick)
sq.rem tempchat %num
sq.app chatdrop %num
}
}
;####################################SQ TELNET#######################################
alias sq.telnet {
if ($1) { sockopen sq.telnet $+ $1 $replace($sq.tok(eggdrop.ip,$1),$chr(58),$chr(32)) | .timernotelnet 1 15 sq.closetelnet $1 | sq.app telnetbot $1 }
else {
var %tempaddress = $replace($$input(Please enter an IP:Port to establish Telnet connection,1,Telnet),$chr(58),$chr(32))
if ($longip($gettok(%tempaddress,1,32)) && $gettok(%tempaddress,2,32) isnum) && ($chr(46) isin %tempaddress) {
sockopen sq.telnet $+ $gettok(%tempaddress,1,32) %tempaddress
.timernotelnet 1 15 sq.closetelnet $gettok(%tempaddress,1,58)
}
else { echo 3 -a Invalid Telnet format. Use NumericIP:Port }
}
}
alias sq.closetelnet {
if ($1 isnum) { sq.sysmsg Telnet connect attempt to Eggdrop $sq.tok(eggdrop.nick,$remove($sockname,sq.telnet)) timed out after 15sec }
else { sq.sysmsg Telnet connect attempt to $remove($sockname,sq.telnet) timed out after 15sec. }
sockclose sq.telnet $+ $1
sq.rem telnetbot $1
}
On *:sockclose:SQ.telnet*:{
var %remote = $remove($sockname,sq.telnet)
if (!$timer(notelnet $+ %remote)) {
if (%remote isnum) {
echo @Telnet- $+ $sq.tok(eggdrop.nick,%remote) Eggdrop $sq.tok(eggdrop.nick,%remote) closed telnet connection
sq.rem connection.eggdrop %remote
}
else { echo @Telnet- $+ %remote %remote closed telnet connection. }
}
else {
if (%remote isnum) { sq.sysmsg Eggdrop $sq.tok(eggdrop.nick,%remote) refused telnet connection }
else { sq.sysmsg %remote refused telnet connection. }
.timernotelnet $+ %remote off
}
}
on *:sockopen:SQ.telnet*:{
var %remote = $remove($sockname,sq.telnet)
if ($sockerr == 3) { sq.sysmsg Error on establishing Telnet connection. No remote on $sock($sockname).ip $+ : $+ $sock($sockname).port | sq.rem telnetbot $1 }
elseif ($sockerr != 0) { sq.sysmsg Error on establishing Telnet connection. Check all settings and start over | sq.rem telnetbot $1 }
elseif (%remote isnum) { window -en @Telnet- $+ $sq.tok(eggdrop.nick,%remote) | echo @Telnet- $+ $sq.tok(eggdrop.nick,%remote) Connection established, waiting for answer }
else { window -ea @Telnet- $+ %remote | echo @Telnet- $+ %remote Connection established }
.timernotelnet off
}
on *:close:@Telnet-*:{
if ($sq.istok(eggdrop.nick,$remove($target,@Telnet-))) { var %remote = $sq.findtok(eggdrop.nick,$remove($target,@Telnet-)) }
else { var %remote = $remove($target,@Telnet-) }
sockclose sq.telnet $+ %remote
if ($sq.istok(connection.eggdrop,$sq.findtok(eggdrop.nick,%remote))) {
sq.rem connection.eggdrop $sq.findtok(eggdrop.nick,%remote)
}
}
on *:sockread:sq.telnet*:{
if ($sockerr != 0) { sq.sysmsg Error on recieving Telnet. Check all settings and start over | sq.rem telnetbot $1 }
var %temptext = $null
var %remote = $remove($sockname,sq.telnet)
sockread %temptext
%temptext = $replace(%temptext,$chr(32),$chr(3) $+ $chr(32))
if (%remote isnum) {
%temptext = $sq.telnetfilter(%temptext)
%nick = $sq.tok(eggdrop.nick,%remote)
echo -tf @Telnet- $+ %nick < $+ %nick $+ > %temptext
if ($sq.istok(telnetbot,%remote)) { sq.eggdroptelnet %remote %temptext }
}
else { echo -t @Telnet- $+ %remote %temptext }
}
alias sq.eggdroptelnet {
if (nickname. isin $2-) {
sq.writetelnet $1 $sq.tok(eggdrop.login,$1)
}
elseif (*Enter*your*password.* iswm $2-) {
var %remote = $sq.tok(eggdrop.nick,$1)
sockwrite -n sq.telnet $+ $1 $sq.decrypt(@,$sq.tok(eggdrop.pass,$1))
echo -mt @Telnet- $+ %remote < $+ $me $+ > ***Hidden***
}
elseif (* $+ $sq.tok(eggdrop.login,$1) $+ *joined*the*party*line.* iswm $2-) {
while ($sq.istok(revengechan,$sq.tok(eggdrop.channel,$1))) {
var %count = $sq.findtok(revengechan,$sq.tok(eggdrop.channel,$1))
sq.writetelnet $1 $sq.tok(revenge,%count)
sq.deltok revenge %count
sq.deltok revengechan %count
}
if (!$sq.get(eggdrop.onlycon)) { sq.writetelnet $1 .op $me $sq.tok(eggdrop.channel,$1) }
else {
if (!$sq.get(eggdrop.keepcon)) { sq.writetelnet $1 .quit | .timer 1 1 .close @Telnet- $+ $sq.tok(eggdrop.nick,$1) }
else { sq.add connection.eggdrop $1 | echo @Telnet- $+ $sq.tok(eggdrop.nick,$1) SQ-Script: Keeping connection to bot }
sq.rem telnetbot $1
}
}
elseif (*Gave*op*to* $+ $me $+ *on* $+ $sq.tok(eggdrop.channel,$1) $+ * iswm $2-) {
if (!$sq.get(eggdrop.keepcon)) { sq.writetelnet $1 .quit | .timer 1 1 .close @Telnet- $+ $sq.tok(eggdrop.nick,$1) }
else { sq.add connection.eggdrop $1 | echo @Telnet- $+ $sq.tok(eggdrop.nick,$1) SQ-Script: Keeping connection to bot }
sq.rem telnetbot $1
}
}
alias sq.telnetfilter {
var %text = $remove($1-,ÿû,ÿü)
%text = $replace(%text,[1m,,[0m,)
return %text
}
alias sq.writetelnet {
if ($1 isnum) { var %remote = $sq.tok(eggdrop.nick,$1) }
else { var %remote = $1 }
if ($sock(sq.telnet $+ $1)) { sockwrite -n sq.telnet $+ $1 $2- | echo -mt @Telnet- $+ %remote < $+ $me $+ > $2- }
elseif ($chat($sq.tok(eggdrop.nick,$1),1)) { msg = $+ $sq.tok(eggdrop.nick,$1) $2- }
}
;####################################ON CHANGE##################################
on *:deop:#:{
if ($nick != $me) {
if ($opnick == $me && $sq.get(eggdrop.reop) && $sq.istok(eggdrop.channel,$chan)) {
var %count = 1
while ($sq.tok(eggdrop.channel,$gettok($sq.get(connection.eggdrop),%count,59)) != $chan) {
if (%count > $sq.num(connection.eggdrop)) { break }
inc %count 1
}
if (%count <= $sq.num(connection.eggdrop)) {
var %eggi = $sq.tok(connection.eggdrop,%count)
if ($sq.get(eggdrop.kickondeopme) && $sq.get(eggdrop.banondeopme)) { sq.writetelnet %eggi .kickban $chan $nick SQ-script:Bad idea deoping $me }
elseif ($sq.get(eggdrop.kickondeopme)) { sq.writetelnet %eggi .kick $chan $nick SQ-script:Bad idea deoping $me }
elseif ($sq.get(eggdrop.banondeopme)) { sq.writetelnet %eggi .+ban $address($nick,3) $chan SQ-script:Bad idea deoping $me }
if ($sq.get(eggdrop.reop)) { sq.writetelnet %eggi .op $me $sq.tok(eggdrop.channel,%eggi) }
}
else {
if ($sq.get(eggdrop.kickondeopme) && $sq.get(eggdrop.banondeopme)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .kickban $chan $nick SQ-script:Bad idea deoping $me,59)
sq.set revengechan $puttok($sq.get(revengechan),$chan,$wildtok($sq.get(revenge),%eggi .kickban $chan $nick *,1,59),59)
}
elseif ($sq.get(eggdrop.kickondeopme)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .kick $chan $nick SQ-script:Bad idea deoping $me,59)
sq.set revengechan $puttok($sq.get(revengechan),$chan,$wildtok($sq.get(revenge),%eggi .kick $chan $nick *,1,59),59)
}
elseif ($sq.get(eggdrop.banondeopme)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .+ban $address($nick,3) $chan SQ-script:Bad idea deoping $me,59)
sq.set revengechan $puttok($sq.get(revengechan),$chan,$wildtok($sq.get(revenge),%eggi .+ban $address($nick,3) $chan *,1,59),59)
}
sq.automode $chan
}
}
elseif ($sq.istok(eggdrop.address,$address($opnick,1))) {
sq.eggdrop.protect $opnick $nick $chan
}
}
}
on *:kick:#:{
if ($nick != $me) {
if ($knick == $me && $sq.get(eggdrop.reop) && $sq.istok(eggdrop.channel,$chan)) {
var %count = 1
while ($sq.tok(eggdrop.channel,$gettok($sq.get(connection.eggdrop),%count,59)) != $chan) {
if (%count > $sq.num(connection.eggdrop)) { break }
inc %count 1
}
if (%count <= $sq.num(connection.eggdrop)) {
var %eggi = $sq.tok(connection.eggdrop,%count)
if ($sq.get(eggdrop.kickondeopme) && $sq.get(eggdrop.banondeopme)) { sq.writetelnet %eggi .kickban $chan $nick SQ-script:Bad idea kicking $me }
elseif ($sq.get(eggdrop.kickondeopme)) { sq.writetelnet %eggi .kick $chan $nick SQ-script:Bad idea kicking $me }
elseif ($sq.get(eggdrop.banondeopme)) { sq.writetelnet %eggi .+ban $address($nick,3) $chan SQ-script:Bad idea kicking $me }
}
else {
if ($sq.get(eggdrop.kickondeopme) && $sq.get(eggdrop.banondeopme)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .kickban $chan $nick SQ-script:Bad idea kicking $me,59)
sq.set revengechan $puttok($sq.get(revengechan),$chan,$wildtok($sq.get(revenge),%eggi .kickban $chan $nick *,1,59),59)
}
elseif ($sq.get(eggdrop.kickondeopme)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .kick $chan $nick SQ-script:Bad idea kicking $me,59)
sq.set revengechan $puttok($sq.get(revengechan),$chan,$wildtok($sq.get(revenge),%eggi .kick $chan $nick *,1,59),59)
}
elseif ($sq.get(eggdrop.banondeopme)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .+ban $address($nick,3) $chan SQ-script:Bad idea kicking $me,59)
sq.set revengechan $puttok($sq.get(revengechan),$chan,$wildtok($sq.get(revenge),%eggi .+ban $address($nick,3) $chan *,1,59),59)
}
}
join $chan
}
if ($sq.istok(eggdrop.address,$address($knick,1))) {
sq.eggdrop.protect $knick $nick $chan
}
}
}
on *:ban:#:{
if ($nick != $me) {
if ($me isop $chan && (($sq.get(eggdrop.formodes) && $sq.get(eggdrop.fastrevenge)) || !$sq.get(eggdrop.formodes))) {
if ($banmask iswm $address($me,5)) {
.mode $chan -b $banmask
if ($sq.get(eggdrop.kickondeopme)) { .kick $chan $nick }
if ($sq.get(eggdrop.banondeopme)) { .mode $chan +b $address($nick,3) }
}
elseif ($wildtok($sq.get(eggdrop.address),$mask($banmask,1),1,59) && $wildtok($sq.get(eggdrop.nick),$gettok($mask($banmask,7),1,33),1,59)) {
var %count = 1
while (%count <= $sq.num(eggdrop.address)) {
if ($banmask iswm $sq.tok(eggdrop.nick,%count) $+ $mid($sq.tok(eggdrop.address,%count),2)) { var %victim = %count }
inc %count 1
}
if (%victim) {
.mode $chan -b $banmask
sq.eggdrop.protect $sq.tok(eggdrop.nick,%victim) $nick $chan
}
}
}
elseif ($sq.istok(eggdrop.channel,$chan) && $banmask iswm $address($me,6)) {
var %count = 1
while ($sq.tok(eggdrop.channel,$gettok($sq.get(connection.eggdrop),%count,59)) != $chan) {
if (%count > $sq.num(connection.eggdrop)) { break }
inc %count 1
}
if (%count <= $sq.num(connection.eggdrop)) {
var %eggi = $sq.tok(connection.eggdrop,%count)
sq.writetelnet %eggi .-ban $banmask $chan
if ($sq.get(eggdrop.kickondeopme) && $sq.get(eggdrop.banondeopme)) { sq.writetelnet %eggi .kickban $chan $nick SQ-script:Bad idea banning $me }
elseif ($sq.get(eggdrop.kickondeopme)) { sq.writetelnet %eggi .kick $chan $nick SQ-script:Bad idea banning $me }
elseif ($sq.get(eggdrop.banondeopme)) { sq.writetelnet %eggi .+ban $address($nick,3) $chan SQ-script:Bad idea banning $me }
}
else {
if ($sq.get(eggdrop.kickondeopme) && $sq.get(eggdrop.banondeopme)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .kickban $chan $nick SQ-script:Bad idea bannning $me,59)
sq.set revengechan $puttok($sq.get(revengechan),$chan,$wildtok($sq.get(revenge),%eggi .kickban $chan $nick *,1,59),59)
}
elseif ($sq.get(eggdrop.kickondeopme)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .kick $chan $nick SQ-script:Bad idea banning $me,59)
sq.set revengechan $puttok($sq.get(revengechan),$chan,$wildtok($sq.get(revenge),%eggi .kick $chan $nick *,1,59),59)
}
elseif ($sq.get(eggdrop.banondeopme)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .+ban $address($nick,3) $chan SQ-script:Bad idea banning $me,59)
sq.set revengechan $puttok($sq.get(revengechan),$chan,$wildtok($sq.get(revenge),%eggi .+ban $address($nick,3) $chan *,1,59),59)
}
join $chan
}
}
}
}
;#####################################Eggdrop protect##############################
alias sq.eggdrop.protect {
var %count = 1
while (%count <= $sq.num(connection.eggdrop)) {
if ($sq.tok(eggdrop.channel,$gettok($sq.get(connection.eggdrop),%count,59)) != $3 && $sq.tok(eggdrop.nick,$gettok($sq.get(connection.eggdrop),%count,59)) isop $3 ) { break }
inc %count 1
}
if (%count <= $sq.num(connection.eggdrop)) {
var %eggi = $sq.tok(connection.eggdrop,%count)
if (!$sq.get(eggdrop.fastrevenge) && $sq.get(eggdrop.formodes)) {
if ($sq.get(eggdrop.protect.kick) && $sq.get(eggdrop.protect.ban)) { sq.writetelnet %eggi .kickban $3 $2 SQ-script:Don't touch $1 }
elseif ($sq.get(eggdrop.protect.kick)) { sq.writetelnet %eggi .kick $3 $2 SQ-script:Don't touch $1 }
elseif ($sq.get(eggdrop.protect.ban)) { sq.writetelnet %eggi .+ban $address($2,3) $3 SQ-script:Don't touch $1 }
}
}
elseif ($me isop $3) {
if ($sq.get(eggdrop.protect.kick)) { .kick $3 $2 SQ-script:Don't touch $1 }
if ($sq.get(eggdrop.protect.ban)) { .mode $3 +b $address($2,3) }
if ($sq.get(eggdrop.protect) && $1 ison $3) { .mode $3 +o $1 }
}
elseif ($numtok($sq.sorteggs($3),59) > 1) {
if ($sq.get(eggdrop.protect.kick) && $sq.get(eggdrop.protect.ban)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .kickban $3 $2 SQ-script:Don't touch $1,59)
sq.set revengechan $puttok($sq.get(revengechan),$3,$wildtok($sq.get(revenge),%eggi .kickban $3 $2 *,1,59),59)
}
elseif ($sq.get(eggdrop.protect.kick)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .kick $3 $2 SQ-script:Don't touch $1,59)
sq.set revengechan $puttok($sq.get(revengechan),$3,$wildtok($sq.get(revenge),%eggi .kick $3 $2 *,1,59),59)
}
elseif ($sq.get(eggdrop.protect.ban)) {
sq.set revenge $addtok($sq.get(revenge),%eggi .+ban $address($2,3) $3 SQ-script:Don't touch $1,59)
sq.set revengechan $puttok($sq.get(revengechan),$3,$wildtok($sq.get(revenge),%eggi .+ban $address($2,3) $3 *,1,59),59)
}
sq.automode $3
}
}
;##############################################Winamp Wakeup##########################################
alias sq.wakeup {
if ($sq.get(sound.winamp.weekend) && ($asctime(ddd) == sun || $asctime(ddd) == sat)) { return }
window -aophdx +d @winamp 1 1 200 200
drawtext -b @winamp 4 0 Arial 88 300 300 WAKE UP!
sq.set volmp3 $vol(mp3)
sq.set volall $vol(master)
if (!$isfile($shortfn($sq.get(sound.winamp.play)))) { run " $+ $sq.get(sound.winamp.location) $+ " $sq.get(sound.winamp.play) }
else { run $shortfn($sq.get(sound.winamp.play)) }
if ($sq.get(sound.winamp.loud)) { .timersq.inc -o 1 20 sq.incvolume }
if ($sq.get(sound.winamp.wakeup)) { .timer 1 120 .timersq.wakeup -o $sq.get(sound.winamp.hour) $+ : $+ $sq.get(sound.winamp.minutes) 1 1 sq.wakeup }
}
alias sq.incvolume {
if ($calc($vol(mp3) +500) <= 65535) { vol -p $calc($vol(mp3) +500) | .timersq.inc -o 1 1 sq.incvolume }
elseif ($calc($vol(master) +500) <= 65535) { vol -v $calc($vol(master) +500) | .timersq.inc -o 1 1 sq.incvolume }
else { .timer 1 300 sq.stopwakeup }
}
menu @winamp {
sclick:sq.stopwakeup
rclick:sq.stopwakeup
dclick:sq.stopwakeup
}
alias sq.stopwakeup {
window -c @winamp
vol -p $sq.get(volmp3)
vol -v $sq.get(volall)
.timersq.inc off
}
alias sq.searchfiles {
dialog -m sq.search sq.search
}
dialog sq.search {
title Search
size -1 -1 100 61
option dbu
button "Search",1,55 50 40 10,ok
button "Cancel",2,5 50 40 10,cancel
edit "Enter String to search for",3,5 5 90 10
combo 4,5 20 40 30,drop
combo 5,55 20 40 100,drop disabled
}
on *:dialog:sq.search:init:0:{
didtok sq.search 4 44 /msg,/ctcp
did -c sq.search 4 1
var %count = 1,%nicks
while (%count <= $nick($active,0,a,r)) { %nicks = $addtok(%nicks,$nick($active,%count,a,r),44) | inc %count 1 }
didtok sq.search 5 44 %nicks
did -c sq.search 5 1
if ($isfile($sq.dir $+ mask.conf)) {
var %count = 1,%file = $sq.dir $+ mask.conf
while (%count <= $ini(%file,search $active,0)) {
$readini(%file,search $active,%count)
inc %count 1
}
}
}
on *:dialog:sq.search:sclick:4:{
if ($did(4).text = /msg) { did -b sq.search 5 }
else { did -e sq.search 5 }
}
on *:dialog:sq.search:sclick:1:{
if ($did(4).text == /msg) { .msg $active @find $did(3).text }
else { .ctcp $did(5).text @find $did(3).text }
}
;#############################################SQ-net##############################################
on *:text:*»SQ-Script«*:#:{
if (!$window(@sq-hidden)) { window -hn +L @sq-hidden }
if (!$fline(@sq-hidden,$address($nick,1) $+ *,1)) { aline @sq-hidden $address($nick,1) $ctime }
else { rline @sq-hidden $fline(@sq-hidden,$address($nick,1) $+ *,1) $address($nick,1) $ctime }
sq.cleanhidden
}
alias sq.cleanhidden {
var %n = 1
while (%n <= $line(@sq-hidden,0)) {
if ($calc($ctime - $gettok($line(@sq-hidden,%n),2,32)) > 7200) { dline @sq-hidden %n }
else { inc %n }
}
}
alias sq.net.connect {
sq.set netnick $1
dialog -m sq.net sq.net
}
dialog sq.net {
Title "Connect to FTP"
size -1 -1 140 80
option dbu
button "Create",1,45 69 25 10,ok
text "",2,5 5 130 10
combo 3,20 15 50 30,drop
text "Your Internet IP is",4,5 35 50 10
edit "",5,55 34 49 10
button "Cancel",6, 75 69 25 10,cancel
text "Desired password:",7,5 50 50 10
edit "",8,55 49 30 10
}
on *:dialog:sq.net:init:0:{
did -o sq.net 2 1 Create an account on $sq.get(netnick) $+ 's FTPserver for:
didtok sq.net 3 44 download,upload
did -c sq.net 3 1
did -o sq.net 5 1 $iif($sq.get(currentip),$sq.get(currentip),$ip)
}
on *:dialog:sq.net:sclick:1:.ctcp $sq.get(netnick) FTP $did(5).text $did(3).text $did(8).text
;#################################################################################################
;##############################################FTP-modules########################################
;#################################################################################################
dialog sq.summary {
button "",3,1 1 1 1,ok hide
size -1 -1 160 65
title "Summary"
option dbu
edit "",2,0 0 160 65,multi read
}
on *:dialog:sq.summary:init:0:{
did -o sq.summary 2 1 Action: $sq.tok(ftpaction,$sq.get(summarynum))
did -o sq.summary 2 2 Speed: $sq.tok(ftpspeed,$sq.get(summarynum)) kBytes/s
did -o sq.summary 2 3 data uploaded: $bytes($calc($sq.tok(ftpkbup,$sq.get(summarynum)) * 1024),3).suf
did -o sq.summary 2 4 data downloaded: $bytes($calc($sq.tok(ftpkbdown,$sq.get(summarynum)) * 1024),3).suf
did -o sq.summary 2 5 Files uploaded: $sq.tok(ftpfilesup,$sq.get(summarynum))
did -o sq.summary 2 6 Files downloaded: $sq.tok(ftpfilesdown,$sq.get(summarynum))
did -o sq.summary 2 7 Connected for: $duration($calc($ctime - $sq.tok(ftptime,$sq.get(summarynum))),2)
did -o sq.summary 2 8 Last File accessed:
did -o sq.summary 2 9 $iif($sq.tok(ftplastaccess,$sq.get(summarynum)),$nopath($sq.tok(ftplastaccess,$sq.get(summarynum))),none)
dialog -t sq.summary Summary for $sq.tok(ftpnick,$sq.get(summarynum))
sq.del summarynum
did -f sq.summary 3
}
alias SQ.summary {
if ($dialog(sq.summary)) { dialog -x sq.summary }
sq.set summarynum $1
dialog -odm sq.summary sq.summary
}
alias sq.ftplogview {
dialog -md sq.logviewer sq.logviewer
}
dialog sq.logviewer {
title "FTP-logviewer"
option dbu
size -1 -1 300 300
list 1,10 15 60 270,hsbar size auto
list 2,75 15 210 270,hsbar extsel size auto
menu "Action",3
item "Remove Selected",4
item break,7
item "Purge list",5
item "Remove All",6
text "Doubleclick on item to remove",8,15 2 50 13
button "Click to copy item into clipboard",9,100 5 160 10
}
on *:dialog:sq.logviewer:init:0:{
sq.logviewer.writetopic
}
alias sq.logviewer.writetopic {
var %n = 1,%file = $sq.dir $+ sqftp.log,%topic
did -r sq.logviewer 1,2
while (%n <= $ini(%file,0)) {
%topic = $ini(%file,%n)
if ($readini(%file,%topic,nick)) { did -a sq.logviewer 1 $readini(%file,%topic,nick) }
else { did -a sq.logviewer 1 %topic }
inc %n 1
}
}
on *:dialog:sq.logviewer:sclick:9:{
var %n = 1,%text
while (%n <= $did(2,0).sel) {
%text = %text $+ $did(2,$did(2,%n).sel).text $+ $crlf
inc %n 1
}
clipboard %text
}
on *:dialog:sq.logviewer:sclick:1:{
var %n = 1,%file = $sq.dir $+ sqftp.log,%topic = $ini(%file,$did(1).sel)
did -r sq.logviewer 2
did -a sq.logviewer 2 Address = $readini(%file,%topic,address)
did -a sq.logviewer 2 Nick = $readini(%file,%topic,nick)
did -a sq.logviewer 2 Channel = $readini(%file,%topic,chan)
did -a sq.logviewer 2 Last Log = $readini(%file,%topic,lastlog)
did -a sq.logviewer 2 Downloaded = $bytes($calc($readini(%file,%topic,totaldownkb) * 1024),3).suf
did -a sq.logviewer 2 Uploaded = $bytes($calc($readini(%file,%topic,totalupkb) * 1024),3).suf
did -a sq.logviewer 2 Last IP = $readini(%file,%topic,lastip)
while ($readini(%file,%topic,upload $+ %n)) {
did -a sq.logviewer 2 Upload $+ %n = $readini(%file,%topic,upload $+ %n)
inc %n 1
}
while ($readini(%file,%topic,download $+ %n)) {
did -a sq.logviewer 2 Download $+ %n = $readini(%file,%topic,download $+ %n)
inc %n 1
}
did -z sq.logviewer 2
}
on *:dialog:sq.logviewer:menu:4:{
if (!$did(1).sel) { return }
var %file = $sq.dir $+ sqftp.log
$sq.reminisection(%file,$ini(%file,$did(1).sel))
sq.logviewer.writetopic
}
on *:dialog:sq.logviewer:dclick:1:{
var %file = $sq.dir $+ sqftp.log
$sq.reminisection(%file,$ini(%file,$did(1).sel))
sq.logviewer.writetopic
}
on *:dialog:sq.logviewer:menu:5:{
if (!$input(This will remove every entry from the list with no transfers,wy,FTPlog Purge)) { return }
var %file = $sq.dir $+ sqftp.log,%n = 1,%a = 0
while (%n <= $ini(%file,0)) {
if (!$readini(%file,$ini(%file,%n),download1) && !$readini(%file,$ini(%file,%n),upload1)) { $sq.reminisection(%file,$ini(%file,%n)) | inc %a 1 }
else { inc %n 1 }
}
sq.logviewer.writetopic
.echo -q $input(Removed %a items from list,o,FTPlog Purge)
}
on *:dialog:sq.logviewer:menu:6:{
if (!$input(This will remove all items from list,wy,FTPlog Purge)) { return }
write -c $sq.dir $+ sqftp.log
sq.logviewer.writetopic
}
;#############################################################################################################
;#################################################BPFTPserver#################################################
;#############################################################################################################
#bpftp on
alias SQ.makeaccount {
var %user = $+(",$sq.get(ftp.directory),users.ini,")
var %group = $+(",$sq.get(ftp.directory),groups.ini,")
if ($9 == $null) { return $false Missing Parameters }
if (!$ini(%group,$4)) { return $false Group $5 does not exist }
var %num = 1
while ($ini(%user,SQ $+ %num)) { inc %num 1 }
var %account = SQ $+ %num
writeini -n %user %account Info_Name $1
$sq.writeini(%user,%account,Login,%account)
$sq.writeini(%user,%account,Pass,$2)
$sq.writeini(%user,%account,IP0,+ $+ $3)
$sq.writeini(%user,%account,GroupName,$4)
$sq.writeini(%user,%account,Info_city,$5)
$sq.writeini(%user,%account,EnableGroup,1)
$sq.writeini(%user,%account,AllowNoop,0)
$sq.writeini(%user,%account,EnableMaxConPerIP,1)
$sq.writeini(%user,%account,MaxConPerIp,$iif($sq.get(ftp.uploadgroup) == $4,0,1))
$sq.writeini(%user,%account,UseGroupHomedir,1)
$sq.writeini(%user,%account,By-Pass_MaxUser,1)
$sq.writeini(%user,%account,RelativePath,1)
$sq.writeini(%user,%account,Info_Notes,0)
$sq.writeini(%user,%account,Info_fax,$8 $+ / $+ $9)
$sq.writeini(%user,%account,info_address,$address($1,1))
$sq.writeini(%user,%account,info_Email,$6 $+ / $+ $7)
$sq.writeini(%user,%account,info_PhoneHome,0)
$sq.writeini(%user,%account,info_PhoneWork,0)
$sq.writeini(%user,%account,EnableSiteChat,1)
$sq.writeini(%user,%account,filesup,0)
$sq.writeini(%user,%account,filesdown,0)
$sq.writeini(%user,%account,kbup,0)
$sq.writeini(%user,%account,kbdown,0)
$sq.writeini(%user,%account,failedup,0)
$sq.writeini(%user,%account,lastfile,none)
if ($sq.get(ftp.maxservstatus)) { sq.adjustspeed }
sq.runftp -reload
return %num
}
alias sq.gotaccount {
var %temp = 1,%user = $+(",$sq.get(ftp.directory),users.ini,"),%nick = $iif($1,$1,$nick)
while (%temp <= $ini(%user,0)) {
if ($remove($ini(%user,%temp),SQ) isnum && $readini(%user,$ini(%user,%temp),info_address) == $address(%nick,1) || $readini(%user,$ini(%user,%temp),Info_name) == %nick && $readini(%user,$ini(%user,%temp),GroupName) != $sq.get(ftp.uploadgroup)) {
return 1
}
inc %temp 1
}
}
alias sq.delaccount {
var %user = $+(",$sq.get(ftp.directory),users.ini,"),%num = 1
if ($1 !isnum) {
while ($readini(%user,SQ $+ %num,info_address) != $1) {
inc %num 1
if (%num > $ini(%user,0)) { return $false no such user }
}
%num = $ini(%user,%num)
}
else { %num = $1 }
if ($2) { sq.ftp.tell %num $2- }
else { sq.sysmsg Account number %num was closed without reason. Check if this was done willingly }
$sq.reminisection(%user,SQ $+ %num)
if ($sq.get(ftp.maxservstatus)) { sq.adjustspeed }
.timersq.delaccount 1 1 sq.runftp -reload
return $true
}
alias sq.countaccounts {
var %user = $+(",$sq.get(ftp.directory),users.ini,")
var %temp = 1,%acc
while (%temp <= $ini(%user,0)) {
if ($remove($ini(%user,%temp),SQ) isnum) { inc %acc 1 }
inc %temp 1
}
return %acc
}
alias sq.ftpuploaders {
var %user = $+(",$sq.get(ftp.directory),users.ini,")
var %temp = 1,%acc
while (%temp <= $ini(%user,%temp)) {
if ($remove($ini(%user,%temp),SQ) isnum && $readini(%user,$ini(%user,%temp),groupname) == $sq.get(ftp.uploadgroup)) {
if ($1) { %acc = %acc $+ ; $+ $ini(%user,%temp) }
else { inc %acc 1 }
}
inc %temp 1
}
if (!$1) { %acc = $calc(%acc +0) }
return %acc
}
alias sq.ftpdownloaders {
var %user = $+(",$sq.get(ftp.directory),users.ini,")
var %temp = 1,%acc
while (%temp <= $ini(%user,0)) {
if ($remove($ini(%user,%temp),SQ) isnum && $readini(%user,$ini(%user,%temp),groupname) != $sq.get(ftp.uploadgroup)) {
if ($1) { %acc = %acc $+ ; $+ $ini(%user,%temp) }
else { inc %acc 1 }
}
inc %temp 1
}
if (!$1) { %acc = $calc(%acc +0) }
return %acc
}
alias SQ.FTPsetup {
var %step = $1,%user = $+(",$sq.get(ftp.directory),users.ini,"),%ftpini = $+(",$sq.get(ftp.directory),FTPsrv.ini,")
if (!$isfile(%ftpini)) {
sq.sysmsg Could not find FTPsrv.ini. This should not happen, let's pray everything's ok.
Sq.sysmsg Lookup for %ftpini failed
}
if (!$isfile(%user)) {
write -c %user
SQ.sysmsg Could not find existing Users.ini. Creating New
sq.sysmsg Lookup for %user failed
}
if ($sock(sq.ftp)) { sockclose sq.ftp }
SQ.sysmsg Step %step $+ : Reading port setting
inc %step 1
if ($readini(%ftpini,n,FTPserver,Port) isnum) {
SQ.sysmsg Found Port $readini(%ftpini,n,FTPserver,Port)
sq.set ftp.port $readini(%ftpini,n,FTPserver,Port)
}
else { sq.set ftp.port 21 | SQ.sysmsg Could not find port, asuming 21 }
SQ.sysmsg Step %step $+ : Setting auto-activate server on serverstart to ON and disabling drives scan for fast startup
inc %step 1
writeini -n %ftpini Ftpserver autostart 1
writeini -n %ftpini FTPserver ScanDrivesAtStartup 0
SQ.sysmsg Step %step $+ : Disabling multiple instances to avoid complications
inc %step 1
writeini -n %ftpini ftpserver AllowMultipleInstance 0
SQ.sysmsg Step %step $+ : Setting IP-resolve to ON else SQ-Script will not be able to resolve nicks
inc %step 1
writeini -n %ftpini ftpserver IP_resolve 1
SQ.sysmsg Step %step $+ : Setting case sensivity and encryption for Login and Password to OFF (You have been warned)
inc %step 1
writeini -n %ftpini FTPserver Login_Insensitive 1
writeini -n %ftpini FTPserver Password_Insensitive 1
writeini -n %ftpini FTPserver Password_Encrypt 0
SQ.sysmsg Step %step $+ : Setting Log options
inc %step 1
writeini -n %ftpini LogFile LogFileMethod 1
writeini -n %ftpini LogFile TriedConnection 0
writeini -n %ftpini LogFile Connection 1
writeini -n %ftpini LogFile Disconnection 0
writeini -n %ftpini LogFile MakeDir 1
writeini -n %ftpini LogFile Upload 1
writeini -n %ftpini LogFile UploadClose 1
writeini -n %ftpini LogFile Download 1
writeini -n %ftpini LogFile DownloadClose 1
writeini -n %ftpini LogFile ChgDir 1
writeini -n %ftpini LogFile CmdDele 1
writeini -n %ftpini LogFile ShowServerAnswer 0
writeini -n %ftpini LogFile ShowClientCommand 0
writeini -n %ftpini LogFile LogPath FTP.log
writeini -n %ftpini LogFile LogIPList0 127.0.0.1
writeini -n %ftpini LogScreen UseCustomSyntax 0
writeini -n %ftpini LogScreen UseStdSyntax 1
writeini -n %ftpini LogScreen ShowServerAnswer 0
writeini -n %ftpini LogScreen ShowClientCommand 0
sq.sysmsg Hiding SQ-script from FTP logs
writeini -n %ftpini LogScreen LogIPMethod 2
writeini -n %ftpini LogScreen ApplyIPLoggingRulesTo 0
writeini -n %ftpini LogScreen LogIPList0 127.0.0.1
inc %step 1
SQ.sysmsg Step %step $+ : Setting minimize to tray on startup to ON
inc %step 1
writeini -n %ftpini FTPserver TrayOnStartup 1
SQ.sysmsg Step %step $+ : Checking all other accounts and groups
inc %step 1
var %counter = 1
while (%counter <= $ini(%user,0)) {
var %temptext = $ini(%user,%counter)
if (%temptext != SQ-Script) {
if ($chr(32) isin %temptext) {
SQ.sysmsg SQ-Script will mess-up if accountnames contain spaces, like %temptext
SQ.sysmsg SQ-Script will replace all spaces by "-"
write -s $+ $chr(91) $+ %temptext $+ $chr(93) %user $replace(%temptext,$chr(32),$chr(45))
%temptext = $ini(%user,%counter)
}
SQ.sysmsg Found account %temptext
if ($readini(%user,%temptext,EnableSITECHAT) != 1) {
writeini -n %user %temptext EnableSITECHAT 1
SQ.sysmsg Enabling SiteChat for account %temptext to send messages
}
}
inc %counter 1
}
if ($sq.ftpgroups < 2 && $input(You do not have enough groups defined for BPFTP. $crlf $+ To properly use SQ-script's abilities you need at least two,4)) { }
sq.sysmsg Step %step $+ : Setting up log to file options on server
inc %step 1
writeini -n %ftpini logfile upload 1
writeini -n %ftpini logfile uploadclose 1
writeini -n %ftpini logfile download 1
writeini -n %ftpini logfile downloadclose 1
writeini -n %ftpini logfile makedir 1
writeini -n %ftpini logfile logfilemethod 1
writeini -n %ftpini logfile logpath FTP.log
writeini -n %ftpini logscreen usestdsyntax 1
writeini -n %ftpini logscreen usecustomsyntax 0
writeini -n %ftpini ftpserver loggingtofile 1
writeini -n %ftpini logfile ShowServerAnswer 0
writeini -n %ftpini logfile ShowClientCommand 0
writeini -n %ftpini logfile TriedConnection 0
writeini -n %ftpini logfile Connection 1
writeini -n %ftpini logfile Disconnection 0
SQ.sysmsg Please read in the help about this
SQ.sysmsg Step %step $+ : Writing SQ-account into ini without rights
inc %step 1
writeini -n %user SQ-script login SQ-script
writeini -n %user SQ-script pass SQ-script
writeini -n %user SQ-script By-Pass_MaxUser 1
writeini -n %user SQ-script MaxConPerIp 1
writeini -n %user SQ-script MaxUsers 1
writeini -n %user SQ-script Timeoutenabled 0
SQ.sysmsg Step %step $+ : Enabling SITE CHAT and SITE WHO for SQ-Script
inc %step 1
writeini -n %user SQ-script EnableSITECHAT 1
writeini -n %user SQ-script EnableSITEWHO 1
SQ.sysmsg Step %step $+ : Setting C:\ as HomeDir as it exists on most Windows PCs. Change it, if you want to.
inc %step 1
writeini -n %user SQ-script Dir0 C:\
writeini -n %user SQ-script Attr0 -----L--
SQ.sysmsg Step %STEP $+ : Restricting Login to SQ-Script account to localhost
inc %step 1
writeini -n %user SQ-script IP0 +127.0.0.1
SQ.sysmsg Step %Step $+ : Connecting to server
sq.set ftp.configured G6
inc %step 1
if ($sq.get(ftp.startserver)) {
sq.set ftp.login $true
.timer 1 1 SQ.FTP.check
}
else {
sq.sysmsg You disabled the start of the server, when needed.
sq.sysmsg Please start the server now and connect to it via rightclick menu
}
SQ.sysmsg Step %step $+ : Cleaning up
inc %step 1
sq.del configuringftp
sq.set ftp.sqlogin SQ-script
sq.set ftp.sqpass SQ-script
SQ.sysmsg Self-configuration completed in %step steps
echo @SQ-script!
SQ.sysmsg SQ-Script will try to stay always connected to your server
SQ.sysmsg If SQ-script does not login automatically you can force it with the rightclick menu.
SQ.sysmsg SQ-script updates the userlist every 60secs so don't worry if the users shown in mirc do not always match the ones on your server. Your can force manual update by using the rightclick menu.
}
alias sq.ftpaccounts {
var %count = 1,%user = $+(",$sq.get(ftp.directory),Users.ini,"),%acc
while (%count <= $ini(%user,0)) {
%acc = $addtok(%acc,$ini(%user,%count),59)
inc %count 1
}
return %acc
}
alias sq.ftpgroups {
var %count = 1,%group = $+(",$sq.get(ftp.directory),Groups.ini,"),%acc
while (%count <= $ini(%group,0)) {
%acc = $addtok(%acc,$ini(%group,%count),59)
inc %count 1
}
if ($chr(32) isin %acc) { sq.sysmsg 4One of your groups in BPFTPserver contains spaces, please remove it else you will get errors }
return %acc
}
alias SQ.runFTP {
if ($1- == - && $isdir($+(",$sq.get(ftp.directory),Administrative Tools,")) && $sq.get(ftp.sysservice)) {
Sq.sysmsg SQ-Script starting Bulletproof FTP server system service
run $+(",$sq.get(ftp.directory),Administrative Tools\Start BPFTPServer Service.bat,")
}
if ($1 != -exit) { sq.set serverqueue $addtok($sq.get(serverqueue),$1,59) }
else { run $+(",$sq.get(ftp.directory),G6FTPsrv.exe -exit,") }
if (!$timer(sq.serverqueue)) { sq.buffer }
}
alias SQ.buffer {
if ($sq.get(serverread) && $isfile($sq.dir $+ ini.queue)) {
sq.del serverread
sq.writeini queue
.timersq.serverqueue 1 1 SQ.buffer
}
else {
if ($gettok($sq.get(serverqueue),1,59) == -reload) {
.echo -q $findfile($+(",$sq.get(ftp.directory),"),Users.ini*.bak,0,1,.remove $+(",$1-,"))
.echo -q $findfile($+(",$sq.get(ftp.directory),"),Groups.ini*.bak,0,1,.remove $+(",$1-,"))
sq.set serverread 1
}
else { sq.del serverread }
if ($sq.get(serverqueue)) {
if ($isfile($+(",$sq.get(ftp.directory),G6FTPsrv.exe,"))) { run $+(",$sq.get(ftp.directory),G6FTPsrv.exe,") $gettok($sq.get(serverqueue),1,59) }
else { sq.del ftp.configured | return }
sq.set serverqueue $deltok($sq.get(serverqueue),1,59)
.timersq.serverqueue 1 3 SQ.buffer
}
}
}
alias SQ.collectinfo {
if (SQ-script !isin $1 && 200-SQ* iswm $1) {
var %user = $+(",$sq.get(ftp.directory),users.ini,"),%server = $+(",$sq.get(ftp.directory),FTPsrv.ini,")
if (?M iswm $5 ) || (?.m. iswm $5) {
var %ip = $gettok($7,1,47)
var %host = $gettok($7,2,47)
var %action = $9,%speed = $replace($11,$chr(44),.)
if (?M iswm $5) { var %time = $ctime($gettok($3,2,47) $+ / $+ $gettok($3,1,47) $+ / $+ $gettok($3,3,47) $4) }
else { var %time = $ctime($3 $4) }
if ($5 == PM || $5 == p.m.) { inc %time 43200 }
}
else {
var %ip = $gettok($6,1,47)
var %host = $gettok($6,2,47)
var %action = $8,%speed = $replace($10,$chr(44),.),%time = $ctime($replace($3,.,/) $4)
}
var %account = $mid($1,5)
var %chan = $readini(%user,%account,info_city)
var %realnick = $readini(%user,%account,Info_Name)
var %slow = $readini(%user,%account,info_PhoneWork)
var %netsplit = $readini(%user,%account,info_PhoneHome)
var %minspeed = $gettok($readini(%user,%account,Info_Email),1,47),%bandwidthup = $calc($sq.get(ftpbandwidthup) +0),%bandwidthdown = $calc($sq.get(ftpbandwidthdown) +0)
var %slowcounter = $gettok($readini(%user,%account,Info_Email),2,47),%lastsize
var %address = $readini(%user,%account,info_address),%sect = $mask(%address,3)
var %filesup = $readini(%user,%account,filesup),%filesdown = $readini(%user,%account,filesdown),%kbup = $readini(%user,%account,kbup),%kbdown = $readini(%user,%account,kbdown)
var %limitfiles = $gettok($readini(%user,%account,info_fax),1,47),%limitMB = $gettok($readini(%user,%account,info_fax),2,47),%failedup = $readini(%user,%account,failedup)
var %lastfile = $readini(%user,%account,lastfile),%totaldown = $calc($readini($sq.dir $+ SQftp.log,%sect,TotaldownKB) +0),%totalup = $calc($readini($sq.dir $+ SQftp.log,%sect,TotalupKB) +0)
var %lastdirection = $gettok(%lastfile,1,32),%lasttime = $gettok(%lastfile,2,32),%lastsize = $gettok(%lastfile,3,32),%lastspeed = $gettok(%lastfile,4,32)
var %lastfile = $gettok(%lastfile,5-,32),%lastaccess = %lastfile
if (%slowcounter && %action == downloading) {
var %temp = %slow
if (%speed < %minspeed) { inc %slow 1 }
elseif (%action == downloading) { %slow = 0 }
if (%slow != %temp) { $sq.writeini(%user,%account,info_PhoneWork,%slow) }
}
if ($ial(%address,1).nick) { var %nick = $ial(%address,1).nick }
elseif ($ial(*!*@ $+ %host,1).nick) { var %nick = $ial(*!*@ $+ %host,1).nick }
elseif ($ial(*!*@ $+ %IP,1).nick) { var %nick = $ial(*!*@ $+ %IP,1).nick }
else { var %nick = %realnick }
var %temp = %netsplit
if (%nick !ison %chan) { inc %netsplit 1 }
else { %netsplit = 0 }
if (%netsplit != %temp) { $sq.writeini(%user,%account,info_PhoneHome,%netsplit) }
$sq.writeini(%user,%account,info_notes,0)
if (!$ini($sq.dir $+ SQftp.log,%sect) && (%action == downloading || %action == uploading)) {
writeini -n $sq.dir $+ SQftp.log %sect nick %nick
writeini -n $sq.dir $+ SQftp.log %sect address %address
writeini -n $sq.dir $+ SQftp.log %sect chan %chan
}
if ($readini(%server,logscreen,usestdsyntax) && $readini(%server,ftpserver,loggingtofile)) {
.echo -q $findfile($+(",$sq.get(ftp.directory),"),FTP*.log,0,sq.getlog $shortfn($1-))
if ($isdir($+(",$sq.get(ftp.directory),logs,"))) { .echo -q $findfile($+(",$sq.get(ftp.directory),logs,"),FTP*.log,0,sq.getlog $shortfn($1-)) }
var %log = $sq.get(ftp.log),%line = $sq.get(ftp.logline),%read,%count
while (%line < $lines(%log)) {
inc %line 1
%read = $read(%log,w,* %account *,%line)
if (!$readn) {
if (!%lastfile) {
%lastfile = none
%lastsize = none
%lastspeed = none
%lastdirection = none
%lastaccess = none
}
break
}
else { %line = $readn }
sq.readlog %read
if ($sq.get(return)) {
%lastfile = $gettok($sq.get(return),2,47)
%lastsize = $replace($gettok($gettok($sq.get(return),4,47),1,32),$chr(44),.)
%lastspeed = $replace($gettok($gettok($sq.get(return),5,47),1,32),$chr(44),.)
%lasttime = $sq.seconds($gettok($sq.get(return),3,47))
%lastdirection = $gettok($sq.get(return),1,47)
%lastaccess = %lastfile
if (!$ini($sq.dir $+ SQftp.log,%sect)) {
writeini -n $sq.dir $+ SQftp.log %sect nick %nick
writeini -n $sq.dir $+ SQftp.log %sect address %address
writeini -n $sq.dir $+ SQftp.log %sect chan %chan
}
if (%lastdirection == down) {
inc %filesdown 1
inc %kbdown %lastsize
%count = 1
while ($ini($sq.dir $+ SQftp.log,%sect,download $+ %count)) { inc %count 1 }
Writeini -n $sq.dir $+ SQftp.log %sect download $+ %count %lastfile
if (%lastspeed > $calc($gettok($SQ.get(stat.bestdownload),1,32) + 0)) { sq.set stat.bestdownload %lastspeed kBytes/s by %nick }
inc %totaldown %lastsize
hadd -m sq.downloads $ctime %lastsize
}
elseif (%lastdirection == up) {
inc %filesup 1
inc %kbup %lastsize
%count = 1
while ($ini($sq.dir $+ SQftp.log,%sect,upload $+ %count)) { inc %count 1 }
writeini -n $sq.dir $+ SQftp.log %sect upload $+ %count %lastfile
inc %totalup %lastsize
if (%lastspeed > $calc($gettok($SQ.get(stat.bestdupload),1,32) + 0)) { sq.set stat.bestupload %lastspeed kBytes/s by %nick }
if (*.sfv iswm %lastfile) {
var %sec = $replace($nopath(%lastfile),$chr(32),_)
writeini -n $sq.dir $+ SQsfvmonitor.log %sec nick %nick
writeini -n $sq.dir $+ SQsfvmonitor.log %sec chan %chan
writeini -n $sq.dir $+ SQsfvmonitor.log %sec directory $nofile(%lastfile)
writeini -n $sq.dir $+ SQsfvmonitor.log %sec sfvfile %lastfile
writeini -n $sq.dir $+ SQsfvmonitor.log %sec ip %ip
writeini -n $sq.dir $+ SQsfvmonitor.log %sec address %address
writeini -n $sq.dir $+ SQsfvmonitor.log %sec time $date $time
sq.sysmsg 4new sfv-checker results for %nick are available.
sq.sfvmonitor
}
elseif ($ini($sq.dir $+ SQsfvmonitor.log,0)) { .timersq.sfvmonitor 1 3 sq.sfvmonitor }
hadd -m sq.uploads $ctime %lastsize
}
elseif (%lastdirection == failedup) {
inc %failedup 1
%count = 1
while ($ini($sq.dir $+ SQftp.log,%sect,upload $+ %count)) { inc %count 1 }
Writeini -n $sq.dir $+ SQftp.log %sect failedup $+ %count %lastfile
}
}
elseif ($gettok($sq.get(return2),1,47) == made dir) {
sq.sysmsg $+ %nick $remove($sq.get(return2),/)
}
elseif ($gettok($sq.get(return2),1,47) == started) {
%lastaccess = $gettok($sq.get(return2),3,47)
%lastdirection = $gettok($sq.get(return2),2,47)
%lastfile = %lastaccess
}
}
}
else { sq.sysmsg Please enable logging to file in the FTP server and use standart syntax | halt }
if ($ini($sq.dir $+ SQftp.log,%sect) && (%action == downloading || %action == uploading)) {
writeini -n $sq.dir $+ SQftp.log %sect lastlog $date $time
writeini -n $sq.dir $+ SQftp.log %sect TotaldownKB %totaldown
writeini -n $sq.dir $+ SQftp.log %sect TotalupKB %totalup
writeini -n $sq.dir $+ SQftp.log %sect lastip %ip
}
if (%filesup !isnum) { %filesup = 0 }
if (%filesdown !isnum) { %filesdown = 0 }
if (%kbup !isnum) { %kbup = 0 }
if (%kbdown !isnum) { %kbdown = 0 }
if (%failedup !isnum) { %failedup = 0 }
$sq.writeini(%user,%account,filesup,%filesup)
$sq.writeini(%user,%account,filesdown,%filesdown)
$sq.writeini(%user,%account,kbup,%kbup)
$sq.writeini(%user,%account,kbdown,%kbdown)
$sq.writeini(%user,%account,failedup,%failedup)
%lastspeed = %speed
if (%lastfile) { $sq.writeini(%user,%account,lastfile,%lastdirection $calc(%lasttime +0) $calc(%lastsize +0) %lastspeed %lastfile) }
else { $sq.writeini(%user,%account,lastfile,none) }
if (%lasttime > 5) {
if (%lastdirection == down) { inc %bandwidthdown %lastspeed }
elseif (%lastdirection == up || %lastdirection == failedup) { inc %bandwidthup %lastspeed }
}
else {
if (%action == downloading) { inc %bandwidthdown %speed }
if (%action == uploading) { inc %bandwidthup %speed }
}
sq.set ftpbandwidthup %bandwidthup
sq.set ftpbandwidthdown %bandwidthdown
sq.app ftpident $mid($gettok(%address,1,64),3)
sq.app ftplastdirection %lastdirection
sq.app ftplastaccess %lastaccess
sq.app ftplastspeed %lastspeed
sq.app ftplastsize %lastsize
sq.app ftplasttime %lasttime
sq.app ftptotalkbup %totalup
sq.app ftptotalkbdown %totaldown
sq.app ftpfailedup %failedup
sq.app ftplastfile %lastfile
sq.app ftplimitfiles %limitfiles
sq.app ftplimitMB %limitMB
sq.app ftpnick %nick
sq.app ftpminspeed %minspeed
sq.app ftpslowcounter %slowcounter
sq.app ftpchan %chan
sq.app ftpslow %slow
sq.app ftpnetsplit %netsplit
sq.app ftpaccount %account
sq.app ftpspeed %speed
sq.app ftptime %time
sq.app ftpaction %action
sq.app ftpip %ip
sq.app ftphost %host
sq.app ftpkbup %kbup
sq.app ftpkbdown %kbdown
sq.app ftpfilesdown %filesdown
sq.app ftpfilesup %filesup
sq.del return return2
}
}
alias sq.readlog {
sq.del return return2
if (?M !iswm $4) && (?.m. !iswm $4) {
if ($8-9 == finished downloading) {
sq.set return down $+ / $+ $mid($10-,2,$calc($pos($10-,' - $chr(40),1) -2)) $replace($remove($gettok($10-,$pos($10-,',0),39),$chr(40),$chr(41)),-,/)
}
elseif ($8-9 == finished uploading) {
sq.set return up $+ / $+ $mid($10-,$calc($pos($10-,' in ',1) +6),$calc($pos($10-,' - $chr(40),1) -6 - $pos($10-,' in ',1))) $+ $mid($10-,2,$calc($pos($10-,' in ',1) -2)) $replace($remove($gettok($10-,$pos($10-,',0),39),$chr(40),$chr(41)),-,/)
}
elseif ($8-9 == aborted uploading) {
sq.set return failedup $+ / $+ $gettok($mid($10-,1,$pos($10-,',$pos($10-,',0))),1,39) $replace($remove($gettok($10-,$pos($10-,',0),39),$chr(40),$chr(41)),-,/)
}
elseif ($8-9 == started downloading) {
sq.set return2 $8 $+ / $+ $9 $+ / $+ $gettok($mid($10-,1,$pos($10-,',$pos($10-,',0))),1,39)
}
elseif ($8-9 == started uploading) {
sq.set return2 $8 $+ / $+ $9 $+ / $+ $mid($12-,2,$calc($len($12-) -3)) $+ $gettok($mid($10-,1,$pos($10-,',$pos($10-,',0))),1,39)
}
elseif ($8-9 == made dir) {
sq.set return2 $8-9 $+ / $+ $10-
}
}
else {
if ($9-10 == finished downloading) {
sq.set return down $+ / $+ $mid($11-,2,$calc($pos($11-,' - $chr(40),1) -2)) $replace($remove($gettok($11-,$pos($11-,',0),39),$chr(40),$chr(41)),-,/)
}
elseif ($9-10 == finished uploading) {
sq.set return up $+ / $+ $mid($11-,$calc($pos($11-,' in ',1) +6),$calc($pos($11-,' - $chr(40),1) -6 - $pos($11-,' in ',1))) $+ $mid($11-,2,$calc($pos($11-,' in ',1) -2)) $replace($remove($gettok($11-,$pos($11-,',0),39),$chr(40),$chr(41)),-,/)
}
elseif ($9-10 == aborted uploading) {
sq.set return failedup $+ / $+ $gettok($mid($11-,1,$pos($11-,',$pos($11-,',0))),1,39) $replace($remove($gettok($11-,$pos($11-,',0),39),$chr(40),$chr(41)),-,/)
}
elseif ($9-10 == started downloading) {
sq.set return2 $9 $+ / $+ $10 $+ / $+ $gettok($mid($11,1,$pos($11-,',$pos($11-,',0))),1,39)
}
elseif ($9-10 == started uploading) {
sq.set return2 $9 $+ / $+ $10 $+ / $+ $mid($13-,2,$calc($len($13-) -3)) $+ $gettok($mid($11-,1,$pos($11-,',$pos($11-,',0))),1,39)
}
elseif ($9-10 == made dir) {
sq.set return2 $8-9 $+ / $+ $11-
}
}
}
alias sq.getlog {
if ($file($1-).ctime > $calc($file($sq.get(ftp.log)).ctime +0)) {
if ($sq.get(ftp.deloldlog) && $sq.get(ftp.log)) { .remove $sq.get(ftp.log) }
sq.set ftp.log $1-
sq.set ftp.logline 1
}
elseif ($file($1-).ctime < $calc($file($sq.get(ftp.log)).ctime +0) && $sq.get(ftp.deloldlog)) { .remove $1- }
}
alias SQ.sockclose {
sockclose SQ.ftp
SQ.sysmsg Error: Connect-attempt timed out after 15sec
window -g1 @SQ-script!
}
on *:sockopen:SQ.ftp:{
if ($sockerr) { sq.set ftp.status 0 }
else { sq.del noserverrunning }
if ($sockerr == 3 && !$SQ.get(noconnect)) {
if ($sq.get(ftp.startserver)) {
sq.sysmsg No Server on specified IP and Port found. SQ-script will try to start server.
SQ.runftp -
.timersq.ftp.check 1 10 SQ.ftp.check
sq.set 20 noconnect $true
}
elseif (!$sq.get(noserverrunning)) {
sq.sysmsg No Server found on specified IP and Port. Please check if server is running and try to connect again.
.timernoconnect off
sq.set noserverrunning 1
}
}
elseif ($sockerr == 3) {
var %ftpini = $+(",$sq.get(ftp.directory),FTPsrv.ini,"),%port = $readini(%ftpini,n,FTPserver,Port)
if (%port != $sq.get(ftp.port)) {
sq.sysmsg The port setting in BPFTPserver did not match the saved value. Fixed
sq.set ftp.port %port
sq.sysmsg trying to reconnect with new settings
.timersq.ftp.check 1 2 sq.ftp.check
}
else { sq.sysmsg Error: Connection could not be established. Check Firewall settings and retry. }
.timernoconnect off
sq.del noconnect
}
.timernoconnect off
}
on *:sockread:SQ.ftp:{
sockread -f %tempread
SQ.ftpread %tempread
}
alias SQ.ftpread {
if ($sock(SQ.ftp)) {
if ($1 == 220) { sockwrite -n SQ.ftp USER $SQ.get(ftp.sqlogin) }
elseif ($1 == 331) { sockwrite -n SQ.ftp PASS $SQ.get(ftp.sqpass) }
elseif ($1 == 230) {
.timernoconnect off
SQ.sysmsg Login successful
sq.set ftp.status 1
sockwrite -n SQ.ftp PWD
if ($dialog(SQ)) { did -c SQ 106 | did -o SQ 106 1 ON }
}
elseif ($1 == 257) { sockwrite -n SQ.ftp Type A }
elseif ($1- == 200 Type set to A.) { sockwrite -n SQ.ftp site who }
elseif ($1 == 530) || ($1 == 421) || ($1 == 503) {
SQ.sysmsg An error occured ! Please check the settings in BPFTPserver.
SQ.sysmsg Errormsg: $2-
sq.set ftp.status 0
sockclose sq.ftp
}
elseif (200-* iswm $1) {
if (200-Site == $1) { sq.set ftplogged $calc($5 - 1) }
elseif (200-ID != $1 && 200-SQ-* !iswm $1) { SQ.collectinfo $1- }
}
elseif ($1- == 200 End of SITE WHO) {
var %user = $+(",$sq.get(ftp.directory),users.ini,"),%count = 1
while (%count <= $ini(%user,0) && $1) {
if ($remove($ini(%user,%count),SQ) isnum) {
if ($ini(%user,%count,0) < 10) { $sq.reminisection(%user,$ini(%user,%count)) }
var %var = $calc($readini(%user,$ini(%user,%count),Info_Notes) +0)
if (%var < $sq.get(ftp.nouser)) { $sq.writeini(%user,$ini(%user,%count),Info_Notes,$calc(%var +1)) }
else { sq.delaccount $remove($ini(%user,%count),SQ) No user timeout exceeded. Please contact the owner because this should not be visible }
}
inc %count 1
}
SQ.process
sq.set ftp.logline $lines($sq.get(ftp.log))
}
elseif (214* iswm $1 && SQ* iswm $2) { sq.sysmsg ( $+ $sq.tok(ftpnick,$findtok($sq.get(ftpaccount),$2,1,59)) $+ ) $6- }
}
unset %tempread
}
On *:sockclose:SQ.ftp:{
sq.set ftp.status 0
if ($timer(noconnect)) { sq.sysmsg Server refused connection. Check settings ! | .timernoconnect off }
else {
sq.sysmsg Server quitted connection without warning
sq.sysmsg assuming server runtime error (happens sometimes). Restarting server
sq.runftp -
.timer 1 3 sq.ftp.check
}
}
alias sq.ftp.check {
sq.del ftp*
if ($SQ.get(ftp.configured) && $sq.get(ftp.login)) {
if (!$sock(SQ.ftp)) {
dline -l @SQ-script! 1-
if ($sq.get(noserverrunning) && !$1 || !$sq.get(noserverrunning)) {
sq.del noserverrunning
sq.sysmsg Establishing connection to server
}
.timernoconnect 1 15 SQ.sockclose
sockopen SQ.FTP localhost $SQ.get(ftp.port)
}
elseif ($sock(SQ.ftp)) { sockwrite -n SQ.ftp SITE who }
if ($sq.get(stat.status.ftp)) {
if ($sq.get(stat.count) >= $sq.get(stat.refresh)) { sq.ftp.stat.update | sq.set stat.count 1 }
else { sq.inc stat.count 1 }
}
sq.dec ftplogged
.echo -q $findfile($+(",$sq.get(ftp.directory),"),*.bak,0,.remove $1-)
}
Elseif ($sq.get(ftp.login)) {
sq.sysmsg You did not run the FTP setup for SQ-Script yet
dline -l @SQ-script! 1-
}
else { dline -l @SQ-script! 1- }
}
alias sq.ftp.deny {
while ($len($sq.get(ftp.denyaddress)) > 900) { sq.set ftp.denyaddress $deltok($sq.get(ftp.denyaddress),$numtok($sq.get(ftp.denynick),59),59) }
sq.set ftp.denynick $instok($sq.get(ftp.denynick),$1,1,59)
sq.set ftp.denyaddress $instok($sq.get(ftp.denyaddress),$address($1,3),1,59)
}
alias sq.ftp.tell {
if ($sock(sq.ftp)) {
if ($2 == prvcht) {
if ($1 !isnum) { sockwrite -n sq.ftp SITE CHAT $3- (To reply use: SITE CHAT SQ-script <text>) }
else { sockwrite -n sq.ftp SITE CHAT SQ $+ $3- (To reply use: SITE CHAT SQ-script <text>) }
}
else {
if ($1 !isnum) { sockwrite -n sq.ftp SITE CHAT $1- }
else { sockwrite -n sq.ftp SITE CHAT SQ $+ $1- }
}
}
}
;##############################################Stats section#################################################
alias sq.ftp.stat.update {
sq.runftp -stat
.timersq.readstat 1 4 sq.ftp.stat.read
}
alias sq.ftp.stat.read {
var %temptxt = $read($+(",$sq.get(ftp.directory),stat.top,"),1)
sq.set stat.call $gettok(%temptxt,1,59)
sq.set stat.c24h $gettok(%temptxt,2,59)
sq.set stat.suptimenn $gettok(%temptxt,3,59)
sq.set stat.suptimeHH $gettok(%temptxt,4,59)
sq.set stat.suptimedd $gettok(%temptxt,5,59)
sq.set stat.suptimetotal $gettok(%temptxt,6,59)
var %temptxt = $read($+(",$sq.get(ftp.directory),stat.top,"),2)
sq.set stat.sup $bytes($calc($remove($left($gettok(%temptxt,1,59),$calc($len($gettok(%temptxt,1,59)) -2)),$chr(44),.) *1024),3).suf
sq.set stat.sdown $bytes($calc($remove($left($gettok(%temptxt,2,59),$calc($len($gettok(%temptxt,2,59)) -2)),$chr(44),.) *1024),3).suf
sq.set stat.sall $bytes($calc($remove($left($gettok(%temptxt,3,59),$calc($len($gettok(%temptxt,3,59)) -2)),$chr(44),.) *1024),3).suf
var %temptxt = $read($+(",$sq.get(ftp.directory),stat.top,"),3)
sq.set stat.upup $bytes($calc($remove($left($gettok(%temptxt,1,59),$calc($len($gettok(%temptxt,1,59)) -2)),$chr(44),.) *1024),3).suf
sq.set stat.updown $bytes($calc($remove($left($gettok(%temptxt,2,59),$calc($len($gettok(%temptxt,2,59)) -2)),$chr(44),.) *1024),3).suf
sq.set stat.upall $bytes($calc($remove($left($gettok(%temptxt,3,59),$calc($len($gettok(%temptxt,3,59)) -2)),$chr(44),.) *1024),3).suf
sq.set stat.upfilesup $gettok(%temptxt,4,59)
sq.set stat.upfilesdown $gettok(%temptxt,5,59)
sq.set stat.upfilesall $gettok(%temptxt,6,59)
var %temptxt = $read($+(",$sq.get(ftp.directory),stat.top,"),4)
sq.set stat.g6version $gettok(%temptxt,1,59)
sq.set stat.CPU $gettok(%temptxt,2,59)
sq.set stat.Ram $bytes($calc($replace($remove($gettok(%temptxt,3,59),.),$chr(44),.) * 1024),3).suf
sq.set stat.osver $gettok(%temptxt,4,59)
}
alias sq.writeini {
if ($2 && !$ini($1,$2)) { return }
if ($sq.get(serverread)) { write $sq.dir $+ ini.queue $1- }
elseif ($1 == queue) {
var %count = 1
while (%count <= $lines($sq.dir $+ ini.queue)) {
if ($ini($1,$2)) { writeini $read($sq.dir $+ ini.queue,%count) }
inc %count 1
}
.remove $sq.dir $+ ini.queue
}
elseif ($0 >= 4) {
writeini -n $1-
}
else { sq.sysmsg 4ERROR for writeini in $script in $scriptline $+ : $1- }
}
alias sq.adjustspeed {
var %user = $+(",$sq.get(ftp.directory),users.ini,"),%count = 1
while (%count <= $ini(%user,0)) {
if ($istok($sq.ftpdownloaders(1),$ini(%user,%count),59)) {
$sq.writeini(%user,$ini(%user,%count),MaxSpeedEnabled,1)
$sq.writeini(%user,$ini(%user,%count),MaxSpeedRcv,$int($calc($sq.get(ftp.maxserv) / $sq.ftpdownloaders)))
$sq.writeini(%user,$ini(%user,%count),MaxSpeedSnd,999999)
if ($sq.get(ftp.maxspeed.tell)) { sq.ftp.tell $ini(%user,%count) Speedlimit is now $calc($sq.get(ftp.maxserv) / $sq.ftpdownloaders) bytes/s }
}
inc %count 1
}
}
alias sq.setmaxserv {
if ($1) { sq.adjustspeed }
else {
var %user = $+(",$sq.get(ftp.directory),users.ini,"),%count = 1
while ($ini(%user,%count)) {
if ($istok($sq.ftpdownloaders(1),$ini(%user,%count),59)) {
$sq.writeini(%user,$ini(%user,%count),MaxSpeedEnabled,0)
}
inc %count 1
}
}
sq.runftp -reload
}
#bpftp end
;##########################################################################################################################
;############################################## RaidenFTPd ################################################################
;##########################################################################################################################
#raidenftpd off
alias SQ.FTPsetup {
var %step = $1,%ftpini = $shortfn($sfile($+(",$sq.get(ftp.directory),*.ftpd,"),Please select your FTP config file))
var %user = $readini(%ftpini,ftpd,usrfile),%error = 0
if (!$readini(%ftpini,ftpd,log)) { sq.sysmsg Please enable logging and make it cycle daily for better performance. Aborting | %error = 1 }
if ($readini(%ftpini,ftpd,encrypt_log)) { sq.sysmsg Please do not encrypt the logfile. Aborting | %error = 1 }
if ($readini(%ftpini,ftpd,ipchk) != 1) { sq.sysmsg Please enable IP checking before login. Aborting | %error = 1 }
if (!$readini(%ftpini,ftpd,DNS_LOOKUP)) { sq.sysmsg Please enable IP resolving. Aborting | %error = 1 }
if (!$read(%user,w,SQ-script:0*)) { sq.sysmsg Please create a useraccount as described in the readme. Aborting | %error = 1 }
if (%error) { sq.del configuringftp ftp.configured | .timer 1 1 .disable #raidenftpd | halt }
if ($readini(%ftpini,ftpd,logname) != daily) { sq.sysmsg Please make the logfile cycle daily for better performance. }
sq.set ftp.port $iif($readini(%ftpini,ftpd,listen_port),$readini(%ftpini,ftpd,listen_port),21)
sq.set ftp.configured Raiden
.timer 1 1 SQ.FTP.check
sq.del configuringftp
sq.set stat.status.ftp 0
sq.set ftp.killserver 0
sq.set ftp.startserver 0
sq.set ftp.sqlogin SQ-script
sq.set ftp.sqpass SQ-script
SQ.sysmsg SQ-Script will try to stay always connected to your server
SQ.sysmsg If SQ-script does not login automatically you can force it with the rightclick menu.
SQ.sysmsg SQ-script updates the userlist every 60secs so don't worry if the users shown in mirc do not always match the ones on your server. Your can force manual update by using the rightclick menu.
}
alias sq.ftp.check {
sq.del ftp*
if ($SQ.get(ftp.configured) && $sq.get(ftp.login)) {
if (!$sock(SQ.ftp)) {
dline -l @SQ-script! 1-
if ($sq.get(noserverrunning) && !$1 || !$sq.get(noserverrunning)) {
sq.del noserverrunning
sq.sysmsg Establishing connection to server
}
.timernoconnect 1 15 SQ.sockclose
sockopen SQ.FTP localhost $SQ.get(ftp.port)
}
elseif ($sock(SQ.ftp)) { sq.del ftpdirect | sockwrite -n SQ.ftp SITE xwho }
sq.dec ftplogged
}
Elseif ($sq.get(ftp.login)) {
sq.sysmsg You did not run the FTP setup for SQ-Script yet
dline -l @SQ-script! 1-
}
else { dline -l @SQ-script! 1- }
}
alias SQ.sockclose {
sockclose SQ.ftp
SQ.sysmsg Error: Connect-attempt timed out after 15sec
window -g1 @SQ-script!
}
on *:sockopen:SQ.ftp:{
if ($sockerr) { sq.set ftp.status 0 }
if ($sockerr == 3 && !$SQ.get(noconnect)) {
sq.sysmsg No Server found on specified IP and Port. Please check if server is running and try to connect again.
}
elseif ($sockerr == 3) {
sq.sysmsg Error: Connection could not be established. Check Firewall settings and retry.
}
.timernoconnect off
}
on *:sockread:SQ.ftp:{
sockread -f %tempread
;sq.sysmsg - %tempread
if ($sq.get(ftpdirect)) { SQ.sysmsg %tempread }
else { SQ.ftpread %tempread }
}
alias SQ.ftpread {
if ($sock(SQ.ftp)) {
if ($1 == 220 && $2 != .) { sockwrite -n SQ.ftp USER $SQ.get(ftp.sqlogin) }
elseif ($1 == 331) { sockwrite -n SQ.ftp PASS $SQ.get(ftp.sqpass) }
elseif ($1 == 230) {
.timernoconnect off
SQ.sysmsg Login successful
sq.set ftp.status 1
sq.del ftpdirect
sockwrite -n SQ.ftp Site xwho
if ($dialog(SQ)) { did -c SQ 106 | did -o SQ 106 1 ON }
}
elseif ($1 == 530) || ($1 == 421) || ($1 == 503) {
SQ.sysmsg An error occured ! Please check the settings in the FTPserver.
SQ.sysmsg Errormsg: $2-
sq.set ftp.status 0
sockclose sq.ftp
}
elseif (220-[ == $1) { sq.set ftplogged $calc($2 - 1) }
elseif (220-|* iswm $1) {
if (220-| $+ $chr(40) == $1) {
sq.set templogin $3
sq.set tempgroup $4
sq.set tempaction $remove($5-,|)
}
elseif ($longip($remove($1,220-|))) {
sq.collectinfo $1-
sq.del templogin tempgroup tempaction
}
}
elseif ($1- == 220 .) {
var %user = $sq.dir $+ FTPusers.ini,%count = 1
while (%count <= $ini(%user,0) && $1) {
if ($remove($ini(%user,%count),SQ) isnum) {
var %var = $calc($readini(%user,$ini(%user,%count),no_user) +0)
if (%var < $sq.get(ftp.nouser)) { writeini %user $ini(%user,%count) no_user $calc(%var +1) }
else { sq.delaccount $remove($ini(%user,%count),SQ) }
}
inc %count 1
}
SQ.process
sq.set ftp.logline $lines($sq.get(ftp.log))
}
}
unset %tempread
}
On *:sockclose:SQ.ftp:{
sq.set ftp.status 0
if ($timer(noconnect)) { sq.sysmsg Server refused connection. Check settings ! | .timernoconnect off }
sq.sysmsg Connection to Server lost
}
alias SQ.collectinfo {
if ($remove($1,220-|) != 127.0.0.1 && SQ* iswm $sq.get(templogin)) {
var %user = $sq.dir $+ ftpusers.ini
var %ip = $remove($1,220-|)
var %host = $2
if ($gettok($sq.get(tempaction),1,32) == RETR) { var %action = Downloading }
elseif ($gettok($sq.get(tempaction),1,32) == APP) { var %action = Uploading }
elseif ($gettok($sq.get(tempaction),1,32) == STOR) { var %action = Uploading }
else { var %action = idle }
if (%action != idle) { var %speed = $calc($remove($gettok($sq.get(tempaction),$numtok($sq.get(tempaction),32),32),k/s) * 1024) }
else { var %speed = 0 }
var %account = $sq.get(templogin)
var %time = $readini(%user,%account,time)
var %chan = $readini(%user,%account,channel)
var %realnick = $readini(%user,%account,realnick)
var %slow = $readini(%user,%account,slow)
var %netsplit = $readini(%user,%account,netsplit)
var %minspeed = $readini(%user,%account,minspeed),%bandwidthup = $calc($sq.get(ftpbandwidthup) +0),%bandwidthdown = $calc($sq.get(ftpbandwidthdown) +0)
var %slowcounter = $readini(%user,%account,slowcounter),%lastsize
var %address = $readini(%user,%account,address),%sect = $mask(%address,3)
var %filesup = $readini(%user,%account,filesup),%filesdown = $readini(%user,%account,filesdown),%kbup = $readini(%user,%account,kbup),%kbdown = $readini(%user,%account,kbdown)
var %limitfiles = $readini(%user,%account,limitfiles),%limitMB = $readini(%user,%account,limitMB),%failedup = $readini(%user,%account,failedup)
var %lastfile = $readini(%user,%account,lastfile),%totaldown = $calc($readini($sq.dir $+ SQftp.log,%sect,TotaldownKB) +0),%totalup = $calc($readini($sq.dir $+ SQftp.log,%sect,TotalupKB) +0)
var %lastdirection = $gettok(%lastfile,1,32),%lasttime = $gettok(%lastfile,2,32),%lastsize = $gettok(%lastfile,3,32),%lastspeed = $gettok(%lastfile,4,32)
var %lastfile = $gettok(%lastfile,5-,32),%lastaccess = %lastfile
if (%slowcounter && %action == downloading) {
var %temp = %slow
if (%speed < %minspeed) { inc %slow 1 }
elseif (%action == downloading) { %slow = 0 }
if (%slow != %temp) { writeini %user %account slow %slow }
}
if ($ial(%address,1).nick) { var %nick = $ial(%address,1).nick }
elseif ($ial(*!*@ $+ %host,1).nick) { var %nick = $ial(*!*@ $+ %host,1).nick }
elseif ($ial(*!*@ $+ %IP,1).nick) { var %nick = $ial(*!*@ $+ %IP,1).nick }
else { var %nick = %realnick }
var %temp = %netsplit
if (%nick !ison %chan) { inc %netsplit 1 }
else { %netsplit = 0 }
if (%netsplit != %temp) { writeini %user %account netsplit %netsplit }
writeini %user %account no_user 0
if (!$ini($sq.dir $+ SQftp.log,%sect) && (%action == downloading || %action == uploading)) {
writeini -n $sq.dir $+ SQftp.log %sect nick %nick
writeini -n $sq.dir $+ SQftp.log %sect address %address
writeini -n $sq.dir $+ SQftp.log %sect chan %chan
}
$findfile($+(",$sq.get(ftp.directory),log,"),*.log,0,sq.getlog $shortfn($1-))
var %log = $sq.get(ftp.log),%line = $sq.get(ftp.logline),%read,%count
while (%line < $lines(%log)) {
inc %line 1
%read = $read(%log,s,%ip,%line)
if (!$readn) {
if (!%lastfile) {
%lastfile = none
%lastsize = none
%lastspeed = none
%lastdirection = none
%lastaccess = none
}
break
}
else { %line = $readn }
sq.readlog %read
if ($sq.get(return)) {
%lastfile = $gettok($sq.get(return),2,47)
%lastsize = $replace($gettok($gettok($sq.get(return),4,47),1,32),$chr(44),.)
%lastspeed = $replace($gettok($gettok($sq.get(return),5,47),1,32),$chr(44),.)
%lasttime = $sq.seconds($gettok($sq.get(return),3,47))
%lastdirection = $gettok($sq.get(return),1,47)
if (!$ini($sq.dir $+ SQftp.log,%sect)) {
writeini -n $sq.dir $+ SQftp.log %sect nick %nick
writeini -n $sq.dir $+ SQftp.log %sect address %address
writeini -n $sq.dir $+ SQftp.log %sect chan %chan
}
if (%lastdirection == down) {
inc %filesdown 1
inc %kbdown %lastsize
%count = 1
while ($ini($sq.dir $+ SQftp.log,%sect,download $+ %count)) { inc %count 1 }
Writeini -n $sq.dir $+ SQftp.log %sect download $+ %count %lastfile
if (%lastspeed > $calc($gettok($SQ.get(stat.bestdownload),1,32) + 0)) { sq.set stat.bestdownload %lastspeed kBytes/s by %nick }
inc %totaldown %lastsize
hadd -m sq.downloads $ctime %lastsize
}
elseif (%lastdirection == up) {
inc %filesup 1
inc %kbup %lastsize
%count = 1
while ($ini($sq.dir $+ SQftp.log,%sect,upload $+ %count)) { inc %count 1 }
writeini -n $sq.dir $+ SQftp.log %sect upload $+ %count %lastfile
inc %totalup %lastsize
if (%lastspeed > $calc($gettok($SQ.get(stat.bestdupload),1,32) + 0)) { sq.set stat.bestupload %lastspeed kBytes/s by %nick }
if (*.sfv iswm %lastfile) {
writeini -n $sq.dir $+ SQsfvmonitor.log $nopath(%lastfile) nick %nick
writeini -n $sq.dir $+ SQsfvmonitor.log $nopath(%lastfile) chan %chan
writeini -n $sq.dir $+ SQsfvmonitor.log $nopath(%lastfile) directory $nofile(%lastfile)
writeini -n $sq.dir $+ SQsfvmonitor.log $nopath(%lastfile) sfvfile %lastfile
writeini -n $sq.dir $+ SQsfvmonitor.log $nopath(%lastfile) ip %ip
writeini -n $sq.dir $+ SQsfvmonitor.log $nopath(%lastfile) address %address
writeini -n $sq.dir $+ SQsfvmonitor.log $nopath(%lastfile) time $date $time
sq.sysmsg 4new sfv-checker results for %nick are available.
sq.sfvmonitor
}
hadd -m sq.uploads $ctime %lastsize
}
}
elseif ($gettok($sq.get(return2),1,47) == made dir) {
sq.sysmsg $+ %nick $remove($sq.get(return2),/)
}
}
if ($ini($sq.dir $+ SQftp.log,%sect) && (%action == downloading || %action == uploading)) {
writeini -n $sq.dir $+ SQftp.log %sect lastlog $date $time
writeini -n $sq.dir $+ SQftp.log %sect TotaldownKB %totaldown
writeini -n $sq.dir $+ SQftp.log %sect TotalupKB %totalup
writeini -n $sq.dir $+ SQftp.log %sect lastip %ip
}
if (%filesup !isnum) { %filesup = 0 }
if (%filesdown !isnum) { %filesdown = 0 }
if (%kbup !isnum) { %kbup = 0 }
if (%kbdown !isnum) { %kbdown = 0 }
if (%failedup !isnum) { %failedup = 0 }
writeini %user %account filesup %filesup
writeini %user %account filesdown %filesdown
writeini %user %account kbup %kbup
writeini %user %account kbdown %kbdown
writeini %user %account failedup %failedup
if (%action != idle) {
%speed = $remove($gettok($remove($sq.get(tempaction),|),$numtok($remove($sq.get(tempaction),|),32),32),k/s)
%lastfile = $gettok($remove($sq.get(tempaction),|),2- $+ $calc($numtok($remove($sq.get(tempaction),|),32) -1),32)
%lastsize = 0
%lastdirection = $iif(%action == Downloading,Down,Up)
%lastaccess = %lastfile
}
%lastspeed = %speed
if (%lastfile) { writeini %user %account lastfile %lastdirection $calc(%lasttime +0) $calc(%lastsize +0) %lastspeed %lastfile }
else { writeini %user %account lastfile none }
if (%lasttime > 5) {
if (%lastdirection == down) { inc %bandwidthdown %lastspeed }
elseif (%lastdirection == up || %lastdirection == failedup) { inc %bandwidthup %lastspeed }
}
else {
if (%action == downloading) { inc %bandwidthdown %speed }
if (%action == uploading) { inc %bandwidthup %speed }
}
sq.set ftpbandwidthup %bandwidthup
sq.set ftpbandwidthdown %bandwidthdown
sq.app ftpident $mid($gettok(%address,1,64),3)
sq.app ftplastdirection %lastdirection
sq.app ftplastaccess %lastaccess
sq.app ftplastspeed %lastspeed
sq.app ftplastsize %lastsize
sq.app ftplasttime %lasttime
sq.app ftptotalkbup %totalup
sq.app ftptotalkbdown %totaldown
sq.app ftpfailedup %failedup
sq.app ftplastfile %lastfile
sq.app ftplimitfiles %limitfiles
sq.app ftplimitMB %limitMB
sq.app ftpnick %nick
sq.app ftpminspeed %minspeed
sq.app ftpslowcounter %slowcounter
sq.app ftpchan %chan
sq.app ftpslow %slow
sq.app ftpnetsplit %netsplit
sq.app ftpaccount %account
sq.app ftpspeed %speed
sq.app ftptime %time
sq.app ftpaction %action
sq.app ftpip %ip
sq.app ftphost %host
sq.app ftpkbup %kbup
sq.app ftpkbdown %kbdown
sq.app ftpfilesdown %filesdown
sq.app ftpfilesup %filesup
sq.del return
}
}
alias sq.readlog {
sq.del return return2
var %time = $calc($gettok($gettok($5-,2,34),1,32) /1024 / $gettok($gettok($5-,2,34),1,32))
if ($4 == r) {
sq.set return down $+ / $+ $replace($gettok($5-,1,34),/,\) $+ / $+ $asctime($calc($timezone + %time),HH:nn:ss) $+ / $+ $calc($gettok($gettok($5-,2,34),1,32) /1024) KB $+ / $+ $gettok($gettok($5-,2,34),2,32) KBytes/s
}
elseif ($4 == w) {
sq.set return up $+ / $+ $replace($gettok($5-,1,34),/,\) $+ / $+ $asctime($calc($timezone + %time),HH:nn:ss) $+ / $+ $calc($gettok($gettok($5-,2,34),1,32) /1024) KB $+ / $+ $gettok($gettok($5-,2,34),2,32) KBytes/s
}
elseif ($4 == m) {
sq.set return2 Made Dir / $+ $replace($gettok($5-,1,34),/,\)
}
}
alias sq.getlog {
echo 5 -st $1-
if ($file($1-).ctime > $calc($file($sq.get(ftp.log)).ctime +0)) {
if ($sq.get(ftp.deloldlog) && $sq.get(ftp.log)) { .remove $sq.get(ftp.log) }
sq.set ftp.log $1-
sq.set ftp.logline 1
}
elseif ($file($1-).ctime < $calc($file($sq.get(ftp.log)).ctime +0) && $sq.get(ftp.deloldlog)) { .remove $1- }
}
alias SQ.makeaccount {
var %user = $sq.dir $+ FTPusers.ini
if ($9 == $null) { return $false Missing Parameters }
var %num = 1
while ($ini(%user,SQ $+ %num)) { inc %num 1 }
var %account = SQ $+ %num
sockwrite -n sq.ftp site adduser %account $2 $4 $3
.timer 1 2 sockwrite -n sq.ftp site chratio %account 0
writeini -n %user %account realnick $1
writeini -n %user %account Login %account
writeini -n %user %account Pass $2
writeini -n %user %account IP0 + $+ $3
writeini -n %user %account GroupName $4
writeini -n %user %account channel $5
writeini -n %user %account no_user 0
writeini -n %user %account limitfiles $8
writeini -n %user %account limitMB $9
writeini -n %user %account address $address($1,1)
writeini -n %user %account slowcounter $7
writeini -n %user %account minspeed $6
writeini -n %user %account netsplit 0
writeini -n %user %account slowcounter 0
writeini -n %user %account filesup 0
writeini -n %user %account filesdown 0
writeini -n %user %account kbup 0
writeini -n %user %account kbdown 0
writeini -n %user %account failedup 0
writeini -n %user %account lastfile none
writeini -n %user %account time $ctime
return %num
}
alias sq.gotaccount {
var %temp = 1,%user = $sq.dir $+ FTPusers.ini
while (%temp <= $ini(%user,0)) {
if ($remove($ini(%user,%temp),SQ) isnum && $readini(%user,$ini(%user,%temp),address) == $address($nick,1) || $readini(%user,$ini(%user,%temp),realnick) == $nick && $readini(%user,$ini(%user,%temp),GroupName) != $sq.get(ftp.uploadgroup)) {
return 1
}
inc %temp 1
}
}
alias sq.delaccount {
var %user = $sq.dir $+ FTPusers.ini,%num = 1
if ($1 !isnum) {
while ($readini(%user,SQ $+ %num,address) != $1) {
inc %num 1
if (%num > $ini(%user,0)) { return $false no such user }
}
%num = $ini(%user,%num)
}
else { %num = $1 }
$sq.reminisection(%user,SQ $+ %num)
sockwrite -n sq.ftp site kick SQ $+ %num
.timer 1 2 sockwrite -n sq.ftp site deluser SQ $+ %num
return $true
}
alias sq.countaccounts {
var %user = $sq.dir $+ FTPusers.ini
var %temp = 1,%acc
while (%temp <= $ini(%user,0)) {
if ($remove($ini(%user,%temp),SQ) isnum) { inc %acc 1 }
inc %temp 1
}
return %acc
}
alias sq.ftpuploaders {
var %user = $sq.dir $+ FTPusers.ini
var %temp = 1,%acc
while (%temp <= $ini(%user,%temp)) {
if ($remove($ini(%user,%temp),SQ) isnum && $readini(%user,$ini(%user,%temp),groupname) == $sq.get(ftp.uploadgroup)) {
if ($1) { %acc = %acc $+ ; $+ $ini(%user,%temp) }
else { inc %acc 1 }
}
inc %temp 1
}
if (!$1) { %acc = $calc(%acc +0) }
return %acc
}
alias sq.ftpdownloaders {
var %user = $sq.dir $+ FTPusers.ini
var %temp = 1,%acc
while (%temp <= $ini(%user,0)) {
if ($remove($ini(%user,%temp),SQ) isnum && $readini(%user,$ini(%user,%temp),groupname) != $sq.get(ftp.uploadgroup)) {
if ($1) { %acc = %acc $+ ; $+ $ini(%user,%temp) }
else { inc %acc 1 }
}
inc %temp 1
}
if (!$1) { %acc = $calc(%acc +0) }
return %acc
}
alias sq.ftpaccounts {
var %count = 1,%user = $sq.dir $+ FTPUsers.ini,%acc
while (%count <= $ini(%user,0)) {
%acc = $addtok(%acc,$ini(%user,%count),59)
inc %count 1
}
return %acc
}
alias sq.ftpgroups { return IRCdownload;IRCupload }
#raidenftpd end