File Server v1.1 — File Browser
FileServerv1.1 / FileServerv1.1 / fserv2.mrc
fserv2.mrc — 11.13 KB — Download this file
on 1:join:#: {
if %joinad == on && $group(#fserve) == on && $nick != $me && $chan != #mirc {
if $group(#ratio).status == on notice $nick $+ %color2 $+ Welcome, you may enter my file server by typing: $+ %color3 %command $+ %color2 $+ Ratio: $+ %color3 1: $+ %ratio
else notice $nick $+ %color2 $+ Welcome, you may enter my file server by typing: $+ %color3 %command
}
}
menu @Fserve Setup {
dclick window -c @Fserve Setup
Activate Fserve
.On:activate | .enable #fserve | setup
.Off:activate | .disable #fserve | setup
Fserve Toggles
.Fserve Mode
..Custom:window -c @Fserve Setup | custom
..Normal:.disable #custom | unset %description.popup | setup
.Ratio
..On:.enable #ratio | setup
..Off:.disable #ratio | setup
.Join Ad
..On:set %joinad on | setup
..Off:set %joinad off | setup
.Valid Files
..Add: {
set %type $$?="Please enter a new type to add"
set %validfiles [ [ %validfiles ] $+ , $+ [ $chr(32) ] $+ [ %type ] ]
unset %type
setup
}
..New list:set %validfiles $$?="File types you wish to accept (*.* for all)" | setup
.Strange Chars
..Add: {
set %type $$?="Please enter a new character to deny"
set %characters [ [ %characters ] $+ [ $chr(32) ] $+ [ %type ] ]
unset %type
setup
}
..New list:set %characters $$?="Please enter new invalid file characters" | setup
Fserve Setup
.Trigger command:%command = $$?="Enter a new fserve trigger word ex:!music" | setup
.Fserve directory: {
%directory = $$?="Please enter a new file directory for fserving:"
:back
if $exists(%directory) == $false { set %directory $$?="Invalid directory, Please re-enter (ex: c:\midi)" | goto back }
setup
if $group(#custom).status == on {
window -c @Fserve Setup
activatecustom
}
}
.Welcome file:%welcome = $dir="Select a Welcome file" $mircdir | setup
.Starting Credits:%free.credits = $$?="How many free credits offered?" | setup
.Ratio:%ratio = $$?="What byte ratio would you like? Use 2 for 1:2" | setup
.Max Sends: {
%maxgets = $$?="# of downloads allowed per user at a time"
:start
if %maxgets > 100 { set %maxgets $$?="Error: only 100 allowed maximum" | goto start }
setup
}
.Max Gets:%maxsends = $$?="# of files each person can send you at one time" | setup
Top Downloads
.Set number to record: {
set %max.top $$?="Record how many files in Top Download listing"
.remove $mircdirdata\top.ini
echo %color2 -s Rebuilding top download list
echo %color2 -s [ $+ %color1 $+ This may take a while $+ %color2 $+ ]
if $window(@Top Downloads).state == normal window -c @Top Downloads
redo.toplist
setup
}
.Display top downloads: {
display.top
halt
}
.-
.Reset download stats:.remove $mircdirdata\download.ini | .remove $mircdirdata\top.ini
%description.popup
.Add description:des
.Edit descriptions:run $mircdirdata\describe.ini
-
Close Setup:window -c @Fserve Setup
}
alias display.top for 1 %max.top top.downloads.echo
alias top.downloads.echo {
unset %stat
if ($exists($mircdirdata\top.ini)) set %stat $read -l $+ %loop $mircdirdata\top.ini
set %window @Top Downloads
if $window(%window).state == $null {
window %window 2 140 240 222 %window Arial bold 12
set %start -1
:loop
if %start > %max.top goto next
aline %window 0-
inc %start
goto loop
:next
inc %start
rline %window %start $+ %color3 $+ =========== $+ %color4 End of List $+ %color3 $+ ===========
rline %window 1 $+ %color3 $+ ===== $+ %color4 $+ Top %max.top downloaded files $+ %color3 $+ ======
}
else window %window $window(%window).x $window(%window).y 240 222 %window Arial bold 12
set %position %loop + 1
if %stat == $null rline %window %position $+ %color1 $+ [ $+ %loop $+ ] $+ %color2 None
else {
set %filename $gettok(%stat,1,32)
set %downloads $gettok(%stat,2,32)
if %downloads > 1 rline %window %position $+ %color1 $+ [ $+ %loop $+ ] $+ %color3 $nopath(%filename) $+ %color2 $+ with $+ %color1 %downloads $+ %color2 $+ downloads
else rline %window %position $+ %color1 $+ [ $+ %loop $+ ] $+ %color3 $nopath(%filename) $+ %color2 $+ with $+ %color1 %downloads $+ %color2 $+ download
}
}
alias redo.toplist {
if %max.top < $lines($mircdirdata\top.ini) {
set %start %max.top + 1
for %start $lines($mircdirdata\top.ini) write -dl $+ %loop $mircdirdata\top.ini
goto end
}
set %lcv 2
set %stop $lines($mircdirdata\download.ini)
:loop
if %lcv > %stop goto end
set %line $read -l $+ %lcv $mircdirdata\download.ini
add.file $gettok(%line,1,61) $gettok(%line,2,61)
inc %lcv
goto loop
:end
echo %color2 -s Sorting of top $+ %color1 %max.top $+ %color2 $+ downloaded files is complete
echo 2 -s -
}
menu @Top Downloads {
dclick window -c @Top Downloads
Set number to record: {
set %max.top $$?="Record how many files in Top Download listing"
.remove $mircdirdata\top.ini
echo %color2 -s Rebuilding top download list
echo %color2 -s [ $+ %color1 $+ This may take a while $+ %color2 $+ ]
if $window(@Top Downloads).state == normal window -c @Top Downloads
redo.toplist
display.top
}
Display top downloads: {
display.top
}
Reset download stats:.remove $mircdirdata\download.ini | .remove $mircdirdata\top.ini | for 1 %max.top top.downloads.echo
-
Close Window:window -c @Top Downloads
}
alias activate {
if %command == $null { set %command $$?="Please enter your trigger command ex:!music" }
if %directory == $null {
set %directory $$?="Please enter an fserve directory ex: c:\music"
:again
if $exists(%directory) != $true { set %directory $$?="Invalid fserve directory, please reenter" | goto again }
else {
if $group(#custom).status == on {
window -c @Fserve Setup
activatecustom
}
}
}
if $group(#fserve) == off set %joinad off
}
alias gets {
set %result 0
set %loops 1
:loop
if %loops > $send(0) goto end
if $send(%loops) == $$1 inc %result
inc %loops
goto loop
:end
return %result
}
alias sends {
set %result 0
set %loops 1
:loop
if %loops > $get(0) goto end
if $get(%loops) == $$1 inc %result
inc %loops
goto loop
:end
return %result
}
ctcp 1:dcc send: {
if $sends($nick) >= %maxsends {
if $fserv($nick).status == active msg = $+ $nick $+ %color2 $+ Sorry, limit of $+ %color1 %maxsends $+ %color2 $+ file transfers per person has been exceeded.
else .notice $nick $+ %color2 $+ Sorry, limit of $+ %color1 %maxsends $+ %color2 $+ file transfers per person has been exceeded
halt
}
elseif $group(#ratio).status == on {
if $lof($findfile(%directory,$parm3,1)) == $parm6 {
if $fserv($nick).status == active msg = $+ $nick $+ %color2 $+ Sorry, the file you have sent already exists on this drive at: $+ %color1 $findfile(%directory,$parm3,1)
else .notice $nick $+ %color2 $+ Sorry, the file you have sent already exists on this drive at: $+ %color1 $findfile(%directory,$parm3,1)
halt
}
elseif $lof($findfile($getdir,$parm3,1)) == $parm6 || $lof($findfile($mididir,$parm3,1)) == $parm6 || $lof($findfile($wavedir,$parm3,1)) == $parm6 {
if $fserv($nick).status == active msg = $+ $nick $+ %color2 $+ Sorry, file $+ %color1 $parm3 $+ %color2 $+ already exists on this drive.
else .notice $nick $+ %color2 $+ Sorry, $+ %color1 $parm3 $+ %color2 $+ already exists on this drive.
halt
}
elseif $left(1,$parm3) isin %characters {
if $fserv($nick).status == active {
msg = $+ $nick $+ %color2 $+ [ $+ %color1 $+ $parm3 $+ $+ %color2 $+ ] is an unacceptable file.
msg = $+ $nick $+ %color2 $+ File names may not begin with these characters: $+ %color1 %characters
}
else {
.notice $nick $+ %color2 $+ [ $+ %color1 $+ $parm3 $+ $+ %color2 $+ ] is an unacceptable file.
.notice $nick $+ %color2 $+ File names may not begin with these characters: $+ %color1 %characters
}
halt
}
elseif $right(3,$parm3) isin %validfiles || %validfiles == *.* {
set %nothing done
}
else {
if $fserv($nick).status == active {
msg = $+ $nick $+ %color2 $+ [ $+ %color1 $+ $parm3 $+ $+ %color2 $+ ] is an unacceptable file type.
msg = $+ $nick $+ %color2 $+ Only these file types will be accepted: $+ %color1 %validfiles
}
else {
.notice $nick $+ %color2 $+ [ $+ %color1 $+ $parm3 $+ $+ %color2 $+ ] is an unacceptable file type.
.notice $nick $+ %color2 $+ Only these file types will be accepted: $+ %color1 %validfiles
}
halt
}
}
}
ctcp 1:fserve:.notice $nick $chr(1) $+ Fserve Access command $+ %command $+ Ratio is 1: $+ %ratio $h2(%color2) $v(4,%color1)
menu @Info Center {
dclick window -c @Info Center
New User:info $$?="Display information for what nick?"
-
Change Credits
.Add Credits:set %% $gettok($line(@Info Center,2),5,32) | add %% $$?="Give [ %% ] how many credits?" | info %%
.Remove Credits:set %% $gettok($line(@Info Center,2),5,32) | del %% $$?="Take away how many credits?" | info %%
.Clear Credits:set %% $gettok($line(@Info Center,2),5,32) | delete %% | info %%
Unlimited Credits
.On:set %% $gettok($line(@Info Center,2),5,32) | delete %% | add %% Unlimited | info %%
.Off:set %% $gettok($line(@Info Center,2),5,32) | delete %% | info %%
Ban Access
.On:set %% $gettok($line(@Info Center,2),5,32) | delete %% | add %% Banned | info %%
.Off:set %% $gettok($line(@Info Center,2),5,32) | delete %% | info %%
-
Close:window -c $active
}
alias info {
set %window @Info Center
.timer350 0 1 checkinfo
if $window(%window).state == $null window %window 200 100 216 124 @Info Center Arial bold 12
else window %window $window(%window).x $window(%window).y 216 124 @Info Center Arial bold 12
if $line(%window,0) == 0 for 1 6 aline -c0 %window -
rline %window 1 $+ %color3 $+ ========== $+ %color4 $+ User info $+ $+ %color3 $+ ==========
rline %window 2 $+ %color2 User info for: $+ %color1 $1
rline %window 3 $+ %color2 Fserve Credits: $+ %color1 $byte.credits($1)
rline %window 4 $+ %color2 Files Uploaded: $+ %color1 $uploads($1)
rline %window 5 $+ %color2 Files Downloaded: $+ %color1 $downloads($1)
rline %window 6 $+ %color3 $+ ===== $+ %color4 $+ Right click for options $+ %color3 $+ =====
unset %window
}
alias checkinfo {
if $window(@Info Center).state != $null {
set %Info.Center $gettok($line(@Info Center,2),5,32)
set %Info.Credits $gettok($line(@Info Center,3),4,32)
set %Info.Uploads $gettok($line(@Info Center,4),4,32)
set %Info.Downloads $gettok($line(@Info Center,5),4,32)
if $byte.credits($gettok($line(@Info Center,2),5,32)) != %Info.Credits || $uploads($gettok($line(@Info Center,2),5,32)) != %Info.Uploads || $downloads($gettok($line(@Info Center,2),5,32)) != %Info.Downloads { info $gettok($line(@Info Center,2),5,32) }
}
else .timer350 off
}