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
}