multi-fserve — File Browser
multi-fservev1.011 / multi-fservev1.011 / fserve.mrc
fserve.mrc — 119.39 KB — Download this file
; multi-fserve[v1.011]
; to load this script, type
; //load -rs $findfile(c:\,fserve.mrc,1)
; see changes.txt for a list of revisions
; visit http://nuncio.hypermart.net for the latest version
on 1:load: {
window @initial
clear @initial
aline $colour(info) @initial $fserve_version
aline $colour(back) @initial -
echo @initial This is a one-time window with some info for new users.
echo @initial Most fserve setup options can be reached through the menubar item $+ $remove( [ $readini [ $readini [ $mircini ] pfiles n4 ] bpopup n0 ] ,&) $+ and submenu fserve.
aline $colour(back) @initial -
echo @initial Channel-specific options can be reached by right-clicking in the channel window.
aline $colour(back) @initial -
echo @initial If you're stuck or simply need clarification on some point, it's recommended you read the file fserve_h.txt or visit $fserve_version $+ 's official webpage at http://nuncio.hypermart.net
aline $colour(back) @initial -
echo @initial Just so it's cleared up, this fserve is not designed to be colorful or glitzy. The colors included are function related. The display is meant to be clean and compliant w/ the restraints and color configurations of all mIRC users.
aline $colour(back) @initial -
echo @initial If you desperately need help, you can email me at nuncio_gen@hotmail.com
}
on 1:start: {
set %fserves $readini fserve.ini main servers
set %pointer $gettok(%fserves,0,32)
:continue_fserve_scan
if (%pointer < 1) { goto fserve_scan_complete }
set %fserve $gettok(%fserves,%pointer,32) $+ .ini
remini %fserve users
dec %pointer 1
goto continue_fserve_scan
:fserve_scan_complete
unset %fserves %pointer %fserve
remini fserve.ini sockets
if ($window(@initial) == $null) { ugly_titlebar_thing }
}
menu menubar {
&fserve
.&users { users_window }
.&stats { files_window }
.-
.&configure { config_fserve }
.&advertisement construction { config_adverts }
}
alias f7 { users_window }
alias f8 { files_window }
alias sf7 {
set %ip $sock(fserve_*_*,$sock(fserve_*_*,0)).ip
set %info $readini fserve.ini sockets %ip
set %fserve $deltok($deltok($gettok(%info,1,32),1,95),$gettok($deltok($gettok(%info,1,32),1,95),0,95),95)
set %temp $gettok(%info,2,32) %ip %fserve
unset %fserve %info %ip
if (%temp) { full_user_info %temp }
else { echo $colour(info) -a *** no matching user }
}
alias config_fserve {
unset %fserve
if ($left($1,3) == ) { set %fserve $remove($1,) | set %fserve.d %fserve $+ _data }
set %parms $2-
if ($1 == [add) {
; add new fserve
set %servers $readini fserve.ini main servers
set %new $$?="enter name of new fserve"
if (%new == fserve) { unset %servers %new | unset %parms | goto skip_create }
set %servers $addtok(%servers,$gettok( [ %new ] ,1,32),32)
writeini fserve.ini main servers %servers
writeini fserve.ini [ [ %new ] $+ _data ] description no description
writeini fserve.ini [ [ %new ] $+ _data ] password password
writeini fserve.ini [ [ %new ] $+ _data ] directory $mircdir
writeini fserve.ini [ [ %new ] $+ _data ] trigger ! $+ %new
writeini fserve.ini [ [ %new ] $+ _data ] max.users 1
writeini fserve.ini [ [ %new ] $+ _data ] max.gets 1
writeini fserve.ini [ [ %new ] $+ _data ] ratio 0
writeini fserve.ini [ [ %new ] $+ _data ] credits 0
writeini fserve.ini [ [ %new ] $+ _data ] file.types *.wav *.jpeg *.jpg *.gif
writeini fserve.ini [ [ %new ] $+ _data ] time.out 300
.remove [ [ %new ] $+ .ini ]
unset %fserve %parms %new
}
:skip_create
if ($gettok(%parms,1,32) == description) { writeini fserve.ini %fserve.d description $fserve_inifilter(in [ $replace($$?="enter new description",$chr(44),$chr(255)) ] ) }
if ($gettok(%parms,1,32) == admin) { writeini fserve.ini %fserve.d password $$?="enter new admin password" }
if ($gettok(%parms,1,32) == directory) { writeini fserve.ini %fserve.d directory $$sdir="select directory" [ $readini fserve.ini [ %fserve.d ] directory ] | .remove [ [ %fserve ] $+ .ini ] }
if ($gettok(%parms,1,32) == trigger) { writeini fserve.ini %fserve.d trigger $$?="enter new trigger" }
if ($gettok(%parms,1,32) == max && $gettok(%parms,2,32) == users) { writeini fserve.ini %fserve.d max.users $$?="enter max users (0 for no limit)" }
if ($gettok(%parms,1,32) == max && $gettok(%parms,2,32) == gets) { writeini fserve.ini %fserve.d max.gets $$?="enter max gets per user (0 for no limit)" }
if ($gettok(%parms,1,32) == ratio) { writeini fserve.ini %fserve.d ratio $$?="enter new byte ratio (0 for no ratio) [1:?]" }
if ($gettok(%parms,1,32) == initial) { writeini fserve.ini %fserve.d credits $$?="enter new initial byte credits" }
if ($gettok(%parms,1,32) == idle) { writeini fserve.ini %fserve.d time.out $$?="enter idle timeout in seconds (0 for no timeout)" }
if ($gettok(%parms,1,32) == type) { writeini fserve.ini %fserve.d [ r. $+ [ $gettok(%parms,3,32) ] ] $$?="enter ratio for file type $gettok(%parms,3,32) (0 for default) [1:?]" }
if ($gettok(%parms,1,32) == [add) {
set %file.types $readini fserve.ini %fserve.d file.types
set %file.types $addtok(%file.types,$gettok($$?="enter new file type",1,32),32)
writeini fserve.ini %fserve.d file.types %file.types
unset %file.types
}
if ($gettok(%parms,1,32) == greeting) { writeini fserve.ini %fserve.d greet $$dir [ $readini fserve.ini [ %fserve.d ] directory ] }
if ($gettok(%parms,1,32) == [compile) { flushini fserve.ini | compile_dirstruct [ $readini fserve.ini %fserve.d directory ] }
window -l @fserve @fserve
clear @fserve
titlebar @fserve %fserve
if (%fserve == $null) {
if ( [ $readini -n fserve.ini main servers ] != $null) {
aline $colour(info) @fserve choose fserve to configure
aline $colour(info) @fserve to delete an fserve, select it and right click
aline $colour(list) @fserve -
}
else { aline $colour(info) @fserve you have no fserves configured }
set %fserves $readini fserve.ini main servers
set %pointer $gettok(%fserves,0,32)
:test_fserves_complete
if (%pointer < 1) { goto list_fserves_complete }
aline $colour(high) @fserve $+ $gettok(%fserves,%pointer,32) - [ $fserve_inifilter(out [ $readini fserve.ini [ [ $gettok(%fserves,%pointer,32) ] $+ _data ] description ] ) ]
dec %pointer 1
goto test_fserves_complete
:list_fserves_complete
aline $colour(list) @fserve -
aline $colour(high) @fserve [add new fserve]
}
if (%fserve != $null) {
aline $colour(high) @fserve description : $fserve_inifilter(out [ $readini fserve.ini [ %fserve.d ] description ] )
aline $colour(high) @fserve admin password : $readini fserve.ini %fserve.d password
aline $colour(list) @fserve -
aline $colour(high) @fserve directory : $readini fserve.ini %fserve.d directory
aline $colour(high) @fserve trigger : $readini fserve.ini %fserve.d trigger
set %max.users $readini fserve.ini %fserve.d max.users
if ( [ $readini fserve.ini %fserve.d max.users ] == 0) { set %max.users no limit }
aline $colour(high) @fserve max users : %max.users
set %max.gets $readini fserve.ini %fserve.d max.gets
if ( [ $readini fserve.ini %fserve.d max.gets ] == 0) { set %max.gets no limit }
aline $colour(high) @fserve max gets per user : %max.gets
set %ratio [1: $+ $readini fserve.ini %fserve.d ratio $+ $chr(93)
if ( [ $readini fserve.ini %fserve.d ratio ] == 0) { set %ratio full leech }
aline $colour(high) @fserve ratio : %ratio
aline $colour(high) @fserve initial credits : $readini fserve.ini %fserve.d credits
aline $colour(list) @fserve -
set %time.out $duration( [ $readini fserve.ini [ %fserve.d ] time.out ] )
if ( [ $readini fserve.ini %fserve.d time.out ] == 0) { set %time.out no time out }
aline $colour(high) @fserve idle timeout : %time.out
set %file.types $readini fserve.ini %fserve.d file.types
aline $colour(list) @fserve -
if (%file.types != $null) {
aline $colour(info) @fserve accepted file types
set %pointer $gettok(%file.types,0,32)
:inc_filetypes
set %ratio $readini fserve.ini %fserve.d [ r. $+ [ $gettok(%file.types,%pointer,32) ] ]
if (%ratio) { set %ratio ratio[1: $+ %ratio $+ $chr(93) }
else { unset %ratio | remini fserve.ini %fserve.d [ r. $+ [ $gettok(%file.types,%pointer,32) ] ] }
aline $colour(other) @fserve type : $gettok(%file.types,%pointer,32) %ratio
dec %pointer 1
if (%pointer > 0) { goto inc_filetypes }
aline $colour(info) @fserve to remove a file type, select it and right-click
}
else {
aline $colour(info) @fserve there are currently no accepted file types
}
aline $colour(high) @fserve [add file type]
aline $colour(list) @fserve -
set %greeting.file $readini fserve.ini %fserve.d greet
if (%greeting.file == $null) { set %greeting.file no greeting file }
aline $colour(high) @fserve greeting file : %greeting.file
if ($exists( [ [ %fserve ] $+ .ini ] ) == $true) { aline $colour(info) @fserve subdirectory structure compiled }
else { aline $colour(high) @fserve [compile subdirectory structure] }
aline $colour(list) @fserve -
aline $colour(high) @fserve [complete]
unset %ratio %max.users %file.types %pointer %greeting.file
if (%parms == [complete]) { .timer -m 1 1 config_fserve }
}
unset %fserves %fserve %parms %servers %fserve.d
}
menu @fserve {
dclick {
if ($window(@fserve).title != $null) { config_fserve $+ $window(@fserve).title $sline($active,1) }
else { config_fserve $sline($active,1) }
}
$del_fserve {
set %fserve $remove($gettok($sline($active,1),1,32),)
set %servers $remtok( [ $readini fserve.ini main servers ] ,%fserve,1,32)
if ($exists( [ [ %fserve ] $+ .ini ] ) == $true) { .remove [ [ %fserve ] $+ .ini ] }
if (%servers != $null) { writeini fserve.ini main servers %servers }
else { remini fserve.ini main servers }
remini fserve.ini [ [ %fserve ] $+ _data ]
unset %fserve %servers
config_fserve
}
$del_filetype {
set %file.types $readini fserve.ini [ [ $window($active).title ] $+ _data ] file.types
set %file.types $remtok(%file.types,$gettok($sline($active,1),3,32),1,32)
remini fserve.ini [ [ $window($active).title ] $+ _data ] [ r. $+ [ $gettok($sline($active,1),3,32) ] ]
if (%file.types != $null) { writeini fserve.ini [ [ $window($active).title ] $+ _data ] file.types %file.types }
else { remini fserve.ini [ [ $window($active).title ] $+ _data ] file.types }
unset %file.types
config_fserve $+ $window($active).title
}
$del_greeting(no greeting file) {
remini fserve.ini [ [ $window($active).title ] $+ _data ] greet
config_fserve $+ $window($active).title
}
-
$del_greeting(edit greeting file) {
run notepad [ $readini fserve.ini [ [ $window($active).title ] $+ _data ] greet ]
config_fserve $+ $window($active).title
}
}
alias del_fserve { if ($left($sline($active,1),3) == ) { return delete fserve : $remove($gettok($sline($active,1),1,32),) } }
alias del_filetype { if ($window($active).title != $null && $left($sline($active,1),4) == type) { return delete file type : $gettok($sline($active,1),3,32) } }
alias del_greeting { if ($window($active).title != $null && $left($sline($active,1),8) == greeting && $gettok($sline($active,1),4,32) != no) { return $1- } }
alias compile_dirstruct {
set %fserve $window($active).title
titlebar @fserve please wait... (compiling)
if ($exists( [ [ %fserve ] $+ .ini ] ) == $true) { .remove [ [ %fserve ] $+ .ini ] }
write -c [ [ %fserve ] $+ .ini ]
set %pointer 1
:continue_dir_build
set %f $nofile($findfile($1-,*,%pointer))
if (%f != $null) {
set %dir $remove(%f,$1-)
if (%dir != $null && %dir. [ $+ [ $replace($replace($replace(%dir,$chr(32),ÿ),$chr(91),þ),$chr(93),ý) ] ] == $null) {
if ($gettok(%dir,0,92) > 1) {
set %subdir %dir
:continue_tree_chop
set %subdir $deltok(%subdir,$gettok(%subdir,0,92),92) $+ \
if (%dir. [ $+ [ $replace($replace($replace(%subdir,$chr(32),ÿ),$chr(91),þ),$chr(93),ý) ] ] == $null && %subdir != \) {
set %sub.d subdir_ $+ $deltok(%subdir,$gettok(%subdir,0,92),92)
set %subdirs $readini [ [ %fserve ] $+ .ini ] %sub.d dirs
inc %subdirs 1
writeini [ [ %fserve ] $+ .ini ] %sub.d dirs %subdirs
writeini [ [ %fserve ] $+ .ini ] %sub.d [ subdir $+ [ %subdirs ] ] $gettok(%subdir,$gettok(%subdir,0,92),92)
titlebar @fserve DIR : $gettok(%subdir,$gettok(%subdir,0,92),92) (compiling)
set %dir. [ $+ [ $replace($replace($replace(%subdir,$chr(32),ÿ),$chr(91),þ),$chr(93),ý) ] ] 1
goto continue_tree_chop
}
}
set %sub.d subdir_ $+ $deltok(%dir,$gettok(%dir,0,92),92)
set %subdirs $readini [ [ %fserve ] $+ .ini ] %sub.d dirs
set %t.pointer %subdirs
inc %subdirs 1
writeini [ [ %fserve ] $+ .ini ] %sub.d dirs %subdirs
writeini [ [ %fserve ] $+ .ini ] %sub.d [ subdir $+ [ %subdirs ] ] $gettok(%dir,$gettok(%dir,0,92),92)
titlebar @fserve DIR : $gettok(%dir,$gettok(%dir,0,92),92) (compiling)
set %dir. [ $+ [ $replace($replace($replace(%dir,$chr(32),ÿ),$chr(91),þ),$chr(93),ý) ] ] 1
}
inc %pointer 1
goto continue_dir_build
}
titlebar @fserve %fserve
unset %pointer %dir %dir.* %subdir %subdirs %sub.d
}
alias config_adverts {
window -el @adverts @adverts
unset %advert
if ($left($1,3) == ) { set %advert $strip($1) | set %parms $2- }
else { set %parms $1- }
if ($gettok(%parms,1,32) == [add) {
set %adverts $readini fserve.ini main adverts
set %adverts $addtok(%adverts,$$?="enter label for new advert",32)
writeini fserve.ini main adverts %adverts
unset %adverts
}
clear @adverts
if (%advert == $null) {
if ( $gettok( [ $readini fserve.ini main adverts ] ,1,32) == $null) { aline $colour(info) @adverts no advertisements configured }
else {
aline $colour(info) @adverts choose advert to configure
aline $colour(info) @adverts to delete an advert, select it and right click
aline $colour(list) @adverts -
set %adverts $readini fserve.ini main adverts
set %pointer $gettok(%adverts,0,32)
:dec_adverts
aline $colour(high) @adverts $+ $gettok(%adverts,%pointer,32)
dec %pointer 1
if (%pointer > 0) { goto dec_adverts }
}
aline $colour(list) @adverts -
aline $colour(high) @adverts [add new advert]
}
else {
if (%parms == [enclosers]) { show_fserve_advert_build enclosers %advert }
if (%parms == [tokens]) { show_fserve_advert_build tokens %advert }
if (%parms == [clear]) { remini fserve.ini [ advert_ $+ [ $window(@adverts).title ] ] }
if (%parms == [complete]) { .timer -m 1 1 titlebar @adverts | .timer -m 1 1 config_adverts }
titlebar @adverts %advert
editbox @adverts $fserve_inifilter(out [ $readini fserve.ini [ advert_ $+ [ %advert ] ] text ] )
aline $colour(high) @adverts [enclosers]
aline $colour(high) @adverts [tokens]
aline $colour(list) @adverts -
aline $colour(info) @adverts preview( $+ $gettok( [ $readini fserve.ini main servers ] ,1,32) $+ ) : $fserve_advert( [ $window(@adverts).title ] [ $gettok( [ $readini fserve.ini main servers ] ,1,32) ] )
aline $colour(high) @adverts [clear]
aline $colour(list) @adverts -
aline $colour(high) @adverts [complete]
}
}
menu @adverts {
dclick {
if ($window($active).title) { config_adverts $+ $window($active).title $sline($active,1) }
else { config_adverts $sline($active,1) }
}
$del_advert {
set %adverts $readini fserve.ini main adverts
set %adverts $remtok(%adverts, [ $remove($sline($active,1),) ] ,1,32)
if (%adverts != $null) { writeini fserve.ini main adverts %adverts }
else { remini fserve.ini main adverts }
unset %adverts
config_adverts
}
$edit_advert(advert text) { }
-
$edit_advert(encloser)
.none { add_encloser $window($active).title none }
.-
.'%% fade
..violet { add_encloser $window($active).title '%% 1 }
..cold { add_encloser $window($active).title '%% 2 }
..hot { add_encloser $window($active).title '%% 3 }
..marine { add_encloser $window($active).title '%% 4 }
..earthy { add_encloser $window($active).title '%% 5 }
..deep earthy { add_encloser $window($active).title '%% 6 }
.<> fade
..violet { add_encloser $window($active).title <> 1 }
..cold { add_encloser $window($active).title <> 2 }
..hot { add_encloser $window($active).title <> 3 }
..marine { add_encloser $window($active).title <> 4 }
..earthy { add_encloser $window($active).title <> 5 }
..deep earthy { add_encloser $window($active).title <> 6 }
.bracket fade
..violet { add_encloser $window($active).title bracket 1 }
..cold { add_encloser $window($active).title bracket 2 }
..hot { add_encloser $window($active).title bracket 3 }
..marine { add_encloser $window($active).title bracket 4 }
..earthy { add_encloser $window($active).title bracket 5 }
..deep earthy { add_encloser $window($active).title bracket 6 }
$edit_advert(add token)
.fserve name { add_token $window($active).title fserve }
.description of fserve { add_token $window($active).title description }
.trigger { add_token $window($active).title trigger }
.ratio { add_token $window($active).title ratio }
.initial credits { add_token $window($active).title initial }
.current users { add_token $window($active).title current }
.max users { add_token $window($active).title max }
-
$edit_advert(clear) {
remini fserve.ini [ advert_ $+ [ $window($active).title ] ] text
config_adverts $+ $window($active).title
}
}
alias del_advert {
if ($left($sline($active,1),3) == ) { return delete advert : $remove($sline($active,1),) }
}
alias edit_advert {
if ($window($active).title) { return $1- }
}
on 1:input:@adverts: {
if ($window($active).title != $null) {
set %temp $replace($1-,$chr(44),$chr(255))
set %temp $fserve_inifilter(in [ %temp ] )
writeini fserve.ini [ advert_ $+ [ $window($active).title ] ] text %temp
config_adverts $+ $window($active).title
halt
}
}
alias show_fserve_advert_build {
window -l @advert_options @advert_options
clear @advert_options
titlebar @advert_options $1-
if ($1 == enclosers) {
aline $colour(high) @advert_options '%% fade
aline $colour(high) @advert_options <> fade
aline $colour(high) @advert_options bracket fade
}
if ($1 == encloser_'%%) {
aline $colour(high) @advert_options $encloser('%% 1 violet) !'%% 1
aline $colour(high) @advert_options $encloser('%% 2 cold) !'%% 2
aline $colour(high) @advert_options $encloser('%% 3 hot) !'%% 3
aline $colour(high) @advert_options $encloser('%% 4 marine) !'%% 4
aline $colour(high) @advert_options $encloser('%% 5 earthy) !'%% 5
aline $colour(high) @advert_options $encloser('%% 6 deep earthy) !'%% 6
}
if ($1 == encloser_<>) {
aline $colour(high) @advert_options $encloser(<> 1 violet) !<> 1
aline $colour(high) @advert_options $encloser(<> 2 cold) !<> 2
aline $colour(high) @advert_options $encloser(<> 3 hot) !<> 3
aline $colour(high) @advert_options $encloser(<> 4 marine) !<> 4
aline $colour(high) @advert_options $encloser(<> 5 earthy) !<> 5
aline $colour(high) @advert_options $encloser(<> 6 deep earthy) !<> 6
}
if ($1 == encloser_bracket) {
aline $colour(high) @advert_options $encloser(bracket 1 violet) !bracket 1
aline $colour(high) @advert_options $encloser(bracket 2 cold) !bracket 2
aline $colour(high) @advert_options $encloser(bracket 3 hot) !bracket 3
aline $colour(high) @advert_options $encloser(bracket 4 marine) !bracket 4
aline $colour(high) @advert_options $encloser(bracket 5 earthy) !bracket 5
aline $colour(high) @advert_options $encloser(bracket 6 deep earthy) !bracket 6
}
if ($1 == tokens) {
aline $colour(high) @advert_options fserve name
aline $colour(high) @advert_options description of fserve
aline $colour(high) @advert_options trigger
aline $colour(high) @advert_options ratio
aline $colour(high) @advert_options initial credits
aline $colour(high) @advert_options current users
aline $colour(high) @advert_options max users
}
}
menu @advert_options {
dclick {
if ($gettok($window($active).title,1,32) == enclosers) { show_fserve_advert_build [ encloser_ $+ [ $gettok($sline($active,1),1,32) ] ] $gettok($window($active).title,2,32) }
if ($left($gettok($window($active).title,1,32),9) == encloser_) {
set %encloser $gettok($sline($active,1),2,33)
if (%encloser != $null) {
add_encloser $gettok($window($active).title,2,32) %encloser
}
unset %encloser
}
if ($gettok($window($active).title,1,32) == tokens) {
add_token $gettok($window($active.title),2,32) $gettok($sline($active,1),1,32)
}
}
}
alias add_encloser {
if ($2 == none) {
remini fserve.ini [ advert_ $+ [ $1 ] ] encloser
}
else {
writeini fserve.ini [ advert_ $+ [ $1 ] ] encloser $2-
}
config_adverts $+ $1
}
alias add_token {
set %temp $readini fserve.ini [ advert_ $+ [ $1 ] ] text
set %temp %temp ! $+ $2 $+ !
writeini fserve.ini [ advert_ $+ [ $1 ] ] text %temp
unset %temp
config_adverts $+ $1
}
alias encloser {
set %temp $1-
if ($1 == '%%) {
if ($2 == 1) { set %temp 13,0'%0,13%,6,13'%13,6%,2,6'%6,2%,1,2'%2,1%,0,1 $3- 2,1'%1,2%,6,2'%2,6%,13,6'%6,13%,0,13'%13,0%, }
if ($2 == 2) { set %temp 11,0'%0,11%,12,11'%11,12%,2,12'%12,2%,1,2'%2,1%,0,1 $3- 2,1'%1,2%,12,2'%2,12%,11,12'%12,11%,0,11'%11,0%, }
if ($2 == 3) { set %temp 8,0'%0,8%,4,8'%8,4%,5,4'%4,5%,1,5'%5,1%,0,1 $3- 5,1'%1,5%,4,5'%5,4%,8,4'%4,8%,0,8'%8,0%, }
if ($2 == 4) { set %temp 15,0'%0,15%,14,15'%15,14%,10,14'%14,10%,0,10 $3- 14,10'%10,14%,15,14'%14,15%,0,15'%15,0%, }
if ($2 == 5) { set %temp 9,0'%0,9%,3,9'%9,3%,5,3'%3,5%,0,5 $3- 3,5'%5,3%,9,3'%3,9%,0,9'%9,0%, }
if ($2 == 6) { set %temp 9,0'%0,9%,3,9'%9,3%,5,3'%3,5%,1,5'%5,1%,0,1 $3- 5,1'%1,5%,3,5'%5,3%,9,3'%3,9%,0,9'%9,0%, } }
if ($1 == <>) {
if ($2 == 1) { set %temp 13,0<0,13>6,13<13,6>2,6<6,2>1,2<2,1>0,1 $3- 2,1<1,2>6,2<2,6>13,6<6,13>0,13<13,0> }
if ($2 == 2) { set %temp 11,0<0,11>12,11<11,12>2,12<12,2>1,2<2,1>0,1 $3- 2,1<1,2>12,2<2,12>11,12<12,11>0,11<11,0> }
if ($2 == 3) { set %temp 8,0<0,8>4,8<8,4>5,4<4,5>1,5<5,1>0,1 $3- 5,1<1,5>4,5<5,4>8,4<4,8>0,8<8,0> }
if ($2 == 4) { set %temp 15,0<0,15>14,15<15,14>10,14<14,10>0,10 $3- 14,10<10,14>15,14<14,15>0,15<15,0> }
if ($2 == 5) { set %temp 9,0<0,9>3,9<9,3>5,3<3,5>0,5 $3- 3,5<5,3>9,3<3,9>0,9<9,0> }
if ($2 == 6) { set %temp 9,0<0,9>3,9<9,3>5,3<3,5>1,5<5,1>0,1 $3- 5,1<1,5>3,5<5,3>9,3<3,9>0,9<9,0> }
}
if ($1 == bracket) {
if ($2 == 1) { set %temp 13,0[0,13[6,13[13,6[2,6[6,2[1,2[2,1[0,1 $3- 2,1]1,2]6,2]2,6]13,6]6,13]0,13]13,0] }
if ($2 == 2) { set %temp 11,0[0,11[12,11[11,12[2,12[12,2[1,2[2,1[0,1 $3- 2,1]1,2]12,2]2,12]11,12]12,11]0,11]11,0] }
if ($2 == 3) { set %temp 8,0[0,8[4,8[8,4[5,4[4,5[1,5[5,1[0,1 $3- 5,1]1,5]4,5]5,4]8,4]4,8]0,8]8,0] }
if ($2 == 4) { set %temp 15,0[0,15[14,15[15,14[10,14[14,10[0,10 $3- 14,10]10,14]15,14]14,15]0,15]15,0] }
if ($2 == 5) { set %temp 9,0[0,9[3,9[9,3[5,3[3,5[0,5 $3- 3,5]5,3]9,3]3,9]0,9]9,0] }
if ($2 == 6) { set %temp 9,0[0,9[3,9[9,3[5,3[3,5[1,5[5,1[0,1 $3- 5,1]1,5]3,5]5,3]9,3]3,9]0,9]9,0] }
}
return %temp
}
alias fserve_advert {
set %fserve $2 $+ _data
unset %temp
set %advert.d advert_ $+ $1
set %temp $readini -n fserve.ini [ %advert.d ] text
set %temp $fserve_inifilter(out [ %temp ] )
set %description $readini fserve.ini %fserve description
set %trigger $readini fserve.ini %fserve trigger
set %max.users $readini fserve.ini %fserve max.users
if (%max.users == 0) { set %max.users no limit }
set %ratio $readini fserve.ini %fserve ratio
if (%ratio == 0) { set %ratio full leech }
else { set %ratio 1: $+ %ratio }
set %credits $readini fserve.ini %fserve credits
set %file.types $readini fserve.ini %fserve file.types
set %temp $replace(%temp,!fserve!,$left(%fserve,$calc($len(%fserve) - 5)))
set %description $replace($fserve_inifilter(out [ %description ] ),$chr(44),$chr(255))
set %temp $replace(%temp,!current!,$calc( [ $readini [ [ $2 ] $+ .ini ] users total ] ))
set %temp $replace(%temp,!description!,%description)
set %temp $replace(%temp,!trigger!,%trigger)
set %temp $replace(%temp,!max!,%max.users)
set %temp $replace(%temp,!ratio!,%ratio)
set %temp $replace(%temp,!initial!,%credits)
set %temp $replace(%temp,!file!,%file.types)
set %temp $replace(%temp,$chr(44),$chr(255))
set %encloser $readini fserve.ini %advert.d encloser
if (%encloser != $null) { set %temp $encloser( [ %encloser ] [ %temp ] ) }
set %temp $replace(%temp,$chr(255),$chr(44))
unset %encloser %advert.d %fserve %description %trigger %max.users %ratio %credits %file.types
return %temp
}
alias fserve_inifilter {
set %f.temp $2-
set %bad.chars $chr(123) $chr(124) $chr(125) $chr(91) $chr(93) $chr(22) $chr(2) $chr(31) $chr(3) $chr(15) $chr(44)
set %convert 255
set %f.pointer $gettok(%bad.chars,0,32)
:dec_again
if ($1 == out) { set %f.temp $replace(%f.temp,$chr(%convert),$gettok(%bad.chars,%f.pointer,32)) }
if ($1 == in) { set %f.temp $replace(%f.temp,$gettok(%bad.chars,%f.pointer,32), $chr(%convert)) }
dec %f.pointer 1
dec %convert 1
if (%f.pointer > 0) { goto dec_again }
unset %f.pointer %convert %bad.chars
return %f.temp
}
ctcp 1:version:*: { .ctcpreply $nick version $fserve_version $chr(91) $+ $gettok( [ $readini fserve.ini main servers ] ,0,32) $+ : $+ $gettok( [ $readini fserve.ini main adverts ] ,0,32) $+ $chr(93) http://nuncio.hypermart.net }
on 1:text:*:*: {
set %fserves $readini fserve.ini main servers
set %pointer $gettok(%fserves,0,32)
:cont_dec
if ($1- == [ $readini fserve.ini [ [ $gettok(%fserves,%pointer,32) ] $+ _data ] trigger ] ) {
if ( [ $readini fserve.ini [ [ # ] $+ _channel ] fserve ] ) {
set %triggered $readini fserve.ini [ [ # ] $+ _channel ] triggered
inc %triggered 1
writeini fserve.ini [ [ # ] $+ _channel ] triggered %triggered
}
start_fserve $fulladdress $gettok(%fserves,%pointer,32)
goto fserve_initiated
}
dec %pointer 1
if (%pointer > 0) { goto cont_dec }
:fserve_initiated
unset %fserves %pointer %triggered
}
alias start_fserve {
if ($2 == $null) { halt }
if ($findtok( [ $readini fserve.ini main servers ] ,$2,1,32) == $null) { halt }
set %fsock fserve_ $+ $2
if ($sock(%fsock) != $null) {
set %port $sock(%fsock).port
}
else {
:get_port
set %port $rand(5000,9000)
if ($portfree(%port) == $false) { goto get_port }
socklisten %fsock %port
}
if ($address($1,5) != $null || $gettok($1,0,33) == 2) {
if ($address($1,5) != $null) { set %addr $address($1,8) | set %full.address $address($1,5) }
else { set %addr $mask($1,8) | set %full.address $1 }
set %fullsocket %fsock $+ _ $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z)
set %checksocket $readini fserve.ini sockets $gettok(%full.address,2,64)
if ($isip($gettok(%full.address,2,64)) == $false) {
if (%checksocket == $null) {
writeini fserve.ini temp $gettok(%full.address,2,64) %fullsocket %addr
.enable #fserve.dns
.dns $gettok($1,1,33)
}
else {
halt
}
}
else {
if (%checksocket == $null) {
writeini fserve.ini sockets $gettok(%full.address,2,64) %fullsocket %addr
}
else {
halt
}
}
writeini fserve.ini sockets $fserve_inifilter(in [ $gettok(%full.address,1,33) ] ) $fserve_inifilter(in [ %addr ] ) $2
.raw privmsg $gettok($1,1,33) : $+ $chr(1) $+ dcc chat chat $longip($ip) %port FSERVE $+ $chr(1)
}
else {
writeini fserve.ini temp $1 $2
.enable #userhost_lookup
.raw userhost $1
}
unset %port %fsock %credits %pwd %fullsocket %checksocket
}
#userhost_lookup off
raw 302:*: {
if ( [ $readini fserve.ini sockets [ $gettok($2,2,64) ] ] == $null) {
start_fserve $gettok($2,1,61) $+ ! $+ $right($gettok($2,2,61),$calc($len($gettok($2,2,61)) - 1)) $readini fserve.ini temp $gettok($2,1,61)
remini fserve.ini temp $gettok($2,1,61)
}
.disable #userhost_lookup
halt
}
#userhost_lookup end
alias isip { if ($gettok($1,0,46) == 4 && $gettok($1,1,46) isnum && $gettok($1,2,46) isnum && $gettok($1,3,46) isnum && $gettok($1,4,46) isnum) { return $true } | else { return $false } }
#fserve.dns off
on 1:dns: {
if ($raddress != $null) {
set %check.addr $readini fserve.ini sockets $iaddress
if (%check.addr == $null) {
set %info $readini fserve.ini temp $naddress
writeini fserve.ini sockets $iaddress %info
unset %info
}
remini fserve.ini temp $naddress
}
unset %check.addr
.disable #fserve.dns
}
#fserve.dns end
on 1:socklisten:fserve_*: {
sockaccept temp
set %fullsock $gettok( [ $readini fserve.ini sockets [ $sock(temp).ip ] ] ,1,32)
set %user $gettok( [ $readini fserve.ini sockets [ $sock(temp).ip ] ] ,2,32)
if (%fullsock != $null) {
set %fserve $deltok($sockname,1,95)
set %users $readini [ [ %fserve ] $+ .ini ] users total
set %max.users $readini fserve.ini [ [ %fserve ] $+ _data ] max.users
if (%users >= %max.users && %max.users != 0) {
sockwrite -n temp error, maximum number of users has been reached
sockwrite -n temp
sockwrite -n temp all %max.users slots are filled.
sockwrite -n temp please wait for a slot to open.
sockclose temp
return full
}
else {
if ($sock(%fullsock) == $null) {
set %banned $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) banned
if (%banned == $null) {
inc %users 1
set %credits $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) credits
set %downloads $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) downloads
set %uploads $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) uploads
if (%credits == $null) { set %credits $readini fserve.ini [ [ %fserve ] $+ _data ] credits }
if (%downloads == $null) { set %downloads 0 0 }
if (%uploads == $null) { set %uploads 0 0 }
set %perm.search $chr(91) $+ $fserve_inifilter(in [ %user ] ) $+ $chr(93)
set %perm.search $read -s $+ %perm.search [ [ %fserve ] $+ .ini ]
if (%perm.search == $null) {
set %perm.users $readini [ [ %fserve ] $+ .ini ] perm_user_list total
inc %perm.users 1
writeini [ [ %fserve ] $+ .ini ] perm_user_list total %perm.users
writeini [ [ %fserve ] $+ .ini ] perm_user_list [ u $+ [ %perm.users ] ] %user
}
set %pwd $readini fserve.ini [ [ %fserve ] $+ _data ] directory
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) credits %credits
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) pwd %pwd
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) downloads %downloads
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) uploads %uploads
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) ip $sock(temp).ip
writeini [ [ %fserve ] $+ .ini ] users total %users
writeini [ [ %fserve ] $+ .ini ] users [ u $+ [ %users ] ] $fserve_inifilter(in [ %user ] )
writeini [ [ %fserve ] $+ .ini ] users $fserve_inifilter(in [ %user ] ) [ u $+ [ %users ] ] 0 0
if ($window(@users) != $null) {
set %perm.search @users 1 *f $+ $chr(91) $+ %fserve $+ $chr(93) $chr(9) $+ nick $+ $chr(91) $+ $gettok(%user,1,33) $+ $chr(93) $+ *
set %perm.search $findline(%perm.search)
if (%perm.search != $null) { dline @users %perm.search }
update_user_info %user %fserve
}
sockrename $sock(temp) %fullsock
unset %pwd %credits %uploads %downloads %perm.search
}
else {
sockwrite -n temp error, banned
sockwrite -n temp
sockwrite -n temp you have been banned from this fserve.
sockwrite -n temp for more information, speak to the fserve
sockwrite -n temp admin.
sockclose temp
return banned
}
}
else {
sockwrite -n temp error, multiple connections detected
sockwrite -n temp
sockwrite -n temp please connect only once to only one fserve
sockclose temp
return multiple connections
}
}
}
else {
sockwrite -n temp error, DNS/nick lookup failed
sockwrite -n temp
sockwrite -n temp the fserve could not resolve an IP address for your hostname
sockwrite -n temp or your connection was unauthorized.
sockwrite -n temp
sockwrite -n temp if you're certain your hostname will resolve and that your
sockwrite -n temp access to this fserve is authorized, please try connecting
sockwrite -n temp again in a few seconds.
sockclose temp
return no DNS/nick entry
}
set %fserve $right($sockname,$calc($len($sockname) - 7))
set %fserve.d %fserve $+ _data
echo $colour(info) -s *** $gettok($gettok( [ $readini fserve.ini sockets [ $sock(%fullsock).ip ] ] ,2,32),1,33) connected to fserve %fserve
sockwrite -n %fullsock $fserve_version http://nuncio.hypermart.net
sockwrite -n %fullsock
sockwrite -n %fullsock accepted file types[ $+ $readini fserve.ini [ %fserve.d ] file.types $+ $chr(93)
sockwrite -n %fullsock
sockwrite -n %fullsock %fserve - $fserve_inifilter(out [ $readini fserve.ini [ %fserve.d ] description ] )
set %user $gettok( [ $readini fserve.ini sockets [ $sock(%fullsock).ip ] ] ,2,32)
set %time.out $readini fserve.ini [ [ %fserve ] $+ _data ] time.out
set %user.timer1 $gettok(%user,1,33) $+ _timer1
set %user.timer2 $gettok(%user,1,33) $+ _timer2
.timer [ $+ [ %user.timer1 ] ] 1 %time.out if $chr(40) $+ $chr(36) $+ sock( [ $+ [ %fullsock ] ] $+ $chr(41) $+ $chr(41) $chr(123) sockwrite -n %fullsock *** idle connection closed after $duration(%time.out) inactivity $chr(125) $chr(124) close_fserve %fullsock manual
if (%time.out > 30) { .timer [ $+ [ %user.timer2 ] ] 1 $calc( [ %time.out ] - 30) if $chr(40) $+ $chr(36) $+ sock( [ $+ [ %fullsock ] ] $+ $chr(41) $+ $chr(41) $chr(123) sockwrite -n %fullsock $chr(124) sockwrite -n %fullsock *** closing idle connection in 30 seconds $chr(125) }
unset %user.timer1 %user.timer2 %time.out
set %perm.search $readini fserve.ini %fserve.d greet
if (%perm.search) { send_file_to_sock %fullsock %perm.search }
else { sockmark %fullsock ready }
unset %users %max.users %fserve %perm.search %banned %fserve.d %user
}
alias send_file_to_sock {
if ($exists($2-) == $true && $sock($1) != $null) {
sockmark $1 streaming.text 1 $2-
set %file $2-
.timer [ $+ [ [ $1 ] $+ .stream ] ] -m $lines(%file) 1 if ($gettok($sock( $+ $1 $+ ).mark,1,32) == streaming.text) $chr(123) set $chr(37) $+ info $chr(36) $+ sock( $+ $1 $+ ).mark $chr(124) set $chr(37) $+ line $chr(36) $+ gettok(%info,2,32) $chr(124) set $chr(37) $+ file $chr(36) $+ gettok(%info,3-,32) $chr(124) set $chr(37) $+ line $chr(36) $+ gettok(%info,2,32) $chr(124) sockwrite -n $1 $chr(36) $+ read -nl $chr(36) $+ + $chr(37) $+ line $chr(37) $+ file $chr(124) inc $chr(37) $+ line 1 $chr(124) sockmark $1 streaming.text $chr(37) $+ line $chr(37) $+ file $chr(124) unset $chr(37) $+ info $chr(37) $+ line $chr(37) $+ file $chr(125)
.timer [ $+ [ [ $1 ] $+ .streamstop ] ] -m 0 1 if ($gettok($sock( $+ $1 $+ ).mark,2,32) == $calc($lines(%file) + 1) $+ $chr(41) $chr(123) sockmark $1 ready $chr(124) .timer [ $+ [ $1 ] $+ .streamstop ] off $chr(125)
}
else { sockmark $1 ready }
unset %line %file
}
alias send_user_credits {
set %fserve $deltok($deltok($sockname,$gettok($1,0,95),95),1,95)
set %user $gettok( [ $readini fserve.ini sockets [ $sock($1).ip ] ] ,2,32)
sockwrite -n $1
sockwrite -n $1 credits[ $+ $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) credits $+ $chr(93)
}
alias send_dir_to_sock {
set %mark $sock($1).mark
set %mode $gettok(%mark,2,32)
set %pointer $gettok(%mark,3,32)
set %fserve $gettok(%mark,4,32)
set %spec $gettok(%mark,5,32)
set %dir $gettok(%mark,6-,32)
:list_files
if (%mode == files) {
inc %pointer 1
set %file $findfile(%dir,%spec,%pointer)
if (%file != $null && $nopath(%file) == $remove(%file,%dir)) {
set %sizes b kb mb gb tb
set %spointer 1
set %file.size $lof(%file)
:dec_again
if (%file.size > 1024) { set %file.size $calc(%file.size / 1024) | inc %spointer 1 | if (%spointer < 6) { goto dec_again } }
set %file.size $calc($int($calc(%file.size * 10))/10) $+ $gettok(%sizes,%spointer,32)
set %comments out $readini [ [ %fserve ] $+ .ini ] comments $replace(%file,$chr(32),$chr(95))
set %comments $fserve_inifilter(%comments)
.timer -m 1 1 sockwrite -n $1 $+ $nopath(%file) $str($chr(160),$calc(30 - ($len($nopath(%file)) + $len(%file.size)))) %file.size %comments
}
else {
sockwrite -n $1 $chr(91) $+ $calc(%pointer - 1) $+ $chr(93) matching files
sockmark $1 ready
goto dir_complete
}
}
if (%mode == dirs) {
inc %pointer 1
set %full.dir $readini fserve.ini [ [ %fserve ] $+ _data ] directory
set %subdir.h subdir_ $+ $gettok($remove(%dir,%full.dir),1-,92)
set %subdir $readini [ [ %fserve ] $+ .ini ] %subdir.h [ subdir $+ [ %pointer ] ]
if (%subdir != $null) { .timer -m 1 1 sockwrite -n $1 DIR[ $+ %subdir $+ $chr(93) }
else {
set %mode files
if (%pointer > 1) { set %pointer 0 | sockwrite -n $1 }
else { set %pointer 0 | goto list_files }
}
}
set %mark dir %mode %pointer %fserve %spec %dir
sockmark $1 %mark
:dir_complete
unset %mark %file %pointer %fserve %dir %spec %subdir %subdir.h %full.dir %mode %file.size %sizes %spointer %comments
}
on 1:sockwrite:fserve_*: {
if ($sock($sockname).mark != $null) {
set %mark $sock($sockname).mark
if ($gettok(%mark,1,32) == textfile) { send_file_to_sock $sockname }
if ($gettok(%mark,1,32) == dir) { send_dir_to_sock $sockname }
unset %mark
}
}
on 1:sockclose:fserve_*: { close_fserve $sockname automatic }
alias close_fserve {
set %fserve $deltok($deltok($1,$gettok($1,0,95),95),1,95)
set %user $gettok( [ $readini fserve.ini sockets [ $sock($1).ip ] ] ,2,32)
if ($sock($1)) { echo $colour(info) -s *** $gettok(%user,1,33) disconnected from fserve %fserve }
if ($2 == manual) { sockclose $1 }
set %userid $readini [ [ %fserve ] $+ .ini ] users $fserve_inifilter(in [ %user ] )
set %userid $gettok($gettok(%userid,1,32),1,117)
remini [ [ %fserve ] $+ .ini ] users $fserve_inifilter(in [ %user ] )
remini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) admin
remini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) pwd
remini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) ip
set %users $readini [ [ %fserve ] $+ .ini ] users total
set %pointer %userid
:move_more_users
set %n.user u $+ $calc(%pointer + 1)
set %n.user $readini [ [ %fserve ] $+ .ini ] users %n.user
set %n.user.info $readini [ [ %fserve ] $+ .ini ] users %n.user
set %n.user.info u $+ %pointer $gettok(%n.user,2-,32)
if (%n.user != $null) {
writeini [ [ %fserve ] $+ .ini ] users [ u $+ [ %pointer ] ] %n.user
writeini [ [ %fserve ] $+ .ini ] users %n.user %n.user.info
inc %pointer 1
goto move_more_users
}
dec %users 1
set %f.serve %fserve
writeini [ [ %fserve ] $+ .ini ] users total %users
remini [ [ %fserve ] $+ .ini ] users [ u $+ [ %pointer ] ]
if ($window(@users) != $null) {
set %userid @users 1 *f $+ $chr(91) $+ %fserve $+ $chr(93) $chr(9) $+ nick $+ $chr(91) $+ $gettok(%user,1,33) $+ $chr(93) $+ *
set %userid $findline(%userid)
if (%userid != $null) { dline @users %userid }
update_user_info %user %fserve
}
set %pointer $chan(0)
:continue_chan_scan
if (%pointer < 1) { goto chan_scan_complete }
set %ch.fserve $readini fserve.ini [ [ $chan(%pointer) ] $+ _channel ] fserve
if (%ch.fserve == %f.serve) {
set %slotfree $readini fserve.ini [ [ $chan(%pointer) ] $+ _channel ] slotfree
set %ch.fserve %slotfree %f.serve
if (%slotfree) { msg $chan(%pointer) $fserve_advert(%ch.fserve) }
}
dec %pointer 1
goto continue_chan_scan
:chan_scan_complete
unset %users %fserve %user %userid %n.user %pointer %f.serve %ch.fserve %n.user.info
}
on 1:sockread:fserve_*: {
if ($sockerr > 0) { return }
set %fserve $deltok($deltok($sockname,$gettok($sockname,0,95),95),1,95)
set %user $gettok( [ $readini fserve.ini sockets [ $sock($sockname).ip ] ] ,2,32)
set %admin $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) admin
set %win @monitor_ $+ %user
sockread %command
if (%command != $null) { post_fserve_command %fserve %user %command }
if ($sock($sockname).mark == ready) {
set %pwd $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) pwd
set %full.dir $readini fserve.ini [ [ %fserve ] $+ _data ] directory
if ($gettok(%command,1,32) == dir/ls) { sockwrite -n $sockname | sockwrite -n $sockname please use dir or ls, not dir/ls | set %command ? dir }
if ($gettok(%command,1,32) == ? || $gettok(%command,1,32) == help) {
sockwrite -n $sockname
if ($gettok(%command,2,32) == $null) {
sockwrite -n $sockname directory commands  [pwd dir/ls cd]
sockwrite -n $sockname fserve info         [credits ratio]
sockwrite -n $sockname transfer            [get read]
sockwrite -n $sockname miscellaneous       [info say ?/help quit]
sockwrite -n $sockname assume admin status [admin]
}
if (%admin == true) {
if ($gettok(%command,2,32) == $null) {
sockwrite -n $sockname - admin commands -
sockwrite -n $sockname file info           [comment reset]
sockwrite -n $sockname file control        [delete rename]
sockwrite -n $sockname user control        [who kill timedkill ban unban]
sockwrite -n $sockname credit control      [give take set]
}
if ($gettok(%command,2,32) == comment) { sockwrite -n $sockname [comment <v1> <v2->] set comments for file <v1> (required) to <v2-> (optional) | sockwrite -n $sockname if <v2-> is omitted, current comments are removed }
if ($gettok(%command,2,32) == reset) { sockwrite -n $sockname [reset <v1>] reset all download statistics for file <v1> (required) }
if ($gettok(%command,2,32) == delete) { sockwrite -n $sockname [delete <v1>] delete file <v1> (required) }
if ($gettok(%command,2,32) == rename) { sockwrite -n $sockname [rename <v1> <v2>] rename file <v1> (required) <v2> (required) }
if ($gettok(%command,2,32) == who) { sockwrite -n $sockname [who] list on-line fserve[ $+ %fserve $+ $chr(93) users }
if ($gettok(%command,2,32) == kill) { sockwrite -n $sockname [kill <v1> <v2->] kill user <v1> (required) on fserve[ $+ %fserve $+ $chr(93) for reason <v2> (optional) }
if ($gettok(%command,2,32) == timedkill) { sockwrite -n $sockname [timedkill <v1> <v2> <v3->] kill user <v1> (required) on fserve[ $+ %fserve $+ $chr(93) after <v2> (required) seconds for reason <v3-> (optional) }
if ($gettok(%command,2,32) == ban) { sockwrite -n $sockname [ban <v1>] ban user <v1> (required) from fserve[ $+ %fserve $+ $chr(93) }
if ($gettok(%command,2,32) == unban) { sockwrite -n $sockname [unban <v1>] unban user <v1> (required) from fserve[ $+ %fserve $+ $chr(93) }
if ($gettok(%command,2,32) == give) { sockwrite -n $sockname [give <v1> <v2>] give <v2> (required) credits to user <v1> (required) }
if ($gettok(%command,2,32) == take) { sockwrite -n $sockname [take <v1> <v2>] take <v2> (required) credits from user <v1> (required) }
if ($gettok(%command,2,32) == set) { sockwrite -n $sockname [set <v1> <v2>] set user <v1>'s (required) credits to <v2> (required) }
}
if ($gettok(%command,2,32) == pwd) { sockwrite -n $sockname [pwd] displays the present working directory }
if ($gettok(%command,2,32) == dir || $gettok(%command,2,32) == ls || $gettok(%command,2,32) == dir/ls) { sockwrite -n $sockname [dir/ls <v1>] list files in pwd matching <v1> (optional) | sockwrite -n $sockname <v1> can contain wildcard characters * and ? | sockwrite -n $sockname a dir/ls dirs will list only directories }
if ($gettok(%command,2,32) == cd) { sockwrite -n $sockname [cd <v1>] change directory <v1> (required) | sockwrite -n $sockname you may change to a directory listed in a dir/ls | sockwrite -n $sockname -or- | sockwrite -n $sockname .. one directory down | sockwrite -n $sockname \ root fserve directory }
if ($gettok(%command,2,32) == credits) { sockwrite -n $sockname [credits] displays the number of credits (bytes) you have available to download }
if ($gettok(%command,2,32) == ratio) { sockwrite -n $sockname [ratio] displays the current upload bytes:credit ratio for the fserve | sockwrite -n $sockname if the ratio is full leech, no credits are given for file upload or taken for file download }
if ($gettok(%command,2,32) == get) { sockwrite -n $sockname [get <v1>] get file <v1> (required) | sockwrite -n $sockname you must have sufficient credits to obtain this file | sockwrite -n $sockname to find out how many credits a file requires, use the [info] command }
if ($gettok(%command,2,32) == read) { sockwrite -n $sockname [read <v1>] sends a text file <v1> (required) directly to your terminal. | sockwrite -n $sockname no credits are required to use this function. }
if ($gettok(%command,2,32) == info) { sockwrite -n $sockname [info <v1>] displays information about file <v1> (options) | sockwrite -n $sockname included are size (credits required) and comments placed by fserve admin. | sockwrite -n $sockname If filename is omitted, accepted file types are displayed. }
if ($gettok(%command,2,32) == say) { sockwrite -n $sockname [say <v1->] send message <v1-> (required) to all fserve[ $+ %fserve $+ $chr(93) users }
if ($gettok(%command,2,32) == ? || $gettok(%command,2,32) == help || $gettok(%command,2,32) == ?/help) { sockwrite -n $sockname [?/help <v1>] online fserve help for topic <v1> (optional) }
if ($gettok(%command,2,32) == quit) { sockwrite -n $sockname [quit] close fserve link }
if ($gettok(%command,2,32) == admin) { sockwrite -n $sockname [admin <v1>] assume admin status with password <v1> (required) | sockwrite -n $sockname if password is incorrect, link will be closed. }
}
if ($gettok(%command,1,32) == quit) { close_fserve $sockname manual }
if ($gettok(%command,1,32) == admin) {
if ($gettok(%command,2,32) != $null) {
if ($gettok(%command,2-,32) === [ $readini fserve.ini [ [ %fserve ] $+ _data ] password ] ) {
sockwrite -n $sockname
sockwrite -n $sockname [password verified] admin
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) admin true
if ($window(%win) != $null) { update_user_info %user %fserve }
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [password incorrect] closing link
close_fserve $sockname manual
}
}
else {
if (%admin == true) {
sockwrite -n $sockname
sockwrite -n $sockname admin status[removed]
remini [ [ %fserve ] $+ .ini ] %user admin
if ($window(%win) != $null) { update_user_info %user %fserve }
}
else {
sockwrite -n $sockname
sockwrite -n $sockname error: [no password given]
sockwrite -n $sockname warning: if password is incorrect , link will close
}
}
}
if ($gettok(%command,1,32) == read) {
if ($gettok(%command,2,32) != $null) {
set %file %pwd $+ $nopath($gettok(%command,2-,32))
if ($exists(%file) == $true) {
if ($right(%file,4) == .txt) {
sockwrite -n $sockname
sockwrite -n $sockname reading[ $+ $nopath(%file) $+ $chr(93)
send_file_to_sock $sockname %file
}
else {
sockwrite -n $sockname
sockwrite -n $sockname invalid extension[ $+ $nopath(%file) $+ $chr(93)
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname no such file[ $+ $nopath(%file) $+ $chr(93)
}
unset %file
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [read <v1>] insufficient parameters
}
}
if ($gettok(%command,1,32) == info) {
if ($gettok(%command,2,32) != $null) {
set %file %pwd $+ $nopath($gettok(%command,2-,32))
if ($exists(%file) == $true) {
sockwrite -n $sockname
sockwrite -n $sockname file[ $+ $nopath(%file) $+ $chr(93) bytes[ $+ $lof(%file) $+ $chr(93)
set %comments out $readini [ [ %fserve ] $+ .ini ] comments $replace(%file,$chr(32),$chr(95))
if (%comments != $null) { sockwrite -n $sockname comments : $fserve_inifilter(%comments) }
}
else {
sockwrite -n $sockname
sockwrite -n $sockname no such files[ $+ $nopath(%file) $+ $chr(93)
}
unset %file %comments
}
else {
sockwrite -n $sockname
sockwrite -n $sockname accepted file types[ $+ $readini fserve.ini [ [ %fserve ] $+ _data ] file.types $+ $chr(93)
}
}
if (%command == credits) { send_user_credits $sockname }
if (%command == ratio) { sockwrite -n $sockname | set %ratio $readini fserve.ini [ [ %fserve ] $+ _data ] ratio | if (%ratio == 0) { set %ratio full leech } | else { set %ratio [1: $+ %ratio $+ $chr(93) } | sockwrite -n $sockname ratio %ratio | unset %ratio }
if ($gettok(%command,1,32) == dir || $gettok(%command,1,32) == ls) {
set %spec $gettok(%command,2,32)
if (%spec == $null) { set %spec * }
sockmark $sockname dir dirs 0 %fserve %spec %pwd
sockwrite -n $sockname
}
if ($gettok(%command,1,32) == say) {
if ($gettok(%command,2,32)) {
set %pointer $readini [ [ %fserve ] $+ .ini ] users total
:continue_internal_user_scan
if (%pointer < 1) { goto internal_user_scan_complete }
set %msg.user $readini [ [ %fserve ] $+ .ini ] users [ u $+ [ %pointer ] ]
set %msg.user $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %msg.user ] ) ip
set %msg.user $readini fserve.ini sockets %msg.user
set %msg.user $gettok(%msg.user,1,32)
set %status :USER
if (%admin == true) { set %status :rADMIN }
if ($sock(%msg.user)) { sockwrite -n %msg.user < $+ $gettok(%user,1,33) $+ %status $+ > $gettok(%command,2-,32) }
dec %pointer 1
goto continue_internal_user_scan
:internal_user_scan_complete
unset %msg.user %status %pointer
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [say <v1->] insufficient parameters
}
}
; crappy DOS command emulation
if (%command == cd..) { set %command cd .. }
if (%command == cd\) { set %command cd \ }
if ($gettok(%command,1,32) == cd) {
if ($gettok(%command,2,32) != $null) {
set %full.dir $readini fserve.ini [ [ %fserve ] $+ _data ] directory
if ($gettok(%command,2-,32) == \) { set %pwd %full.dir | goto got_dir }
if ($gettok(%command,2-,32) == ..) {
set %temp $deltok(%pwd,$gettok(%pwd,0,92),92) $+ \
if ($len(%temp) >= $len(%full.dir)) { set %pwd %temp }
goto got_dir
}
set %fserve.d %fserve $+ .ini
set %pointer 1
:check_dirs
set %subdir subdir $+ %pointer
set %sub.d $readini %fserve.d [ subdir_ $+ [ $gettok($remove(%pwd,%full.dir),1-,92) ] ] %subdir
if (%sub.d == $gettok(%command,2-,32)) { set %pwd %pwd $+ $gettok(%command,2-,32) $+ \ | goto got_dir }
if (%sub.d != $null) { inc %pointer 1 | goto check_dirs }
:got_dir
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) pwd %pwd
unset %subdir %pointer %temp
set %command pwd
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [cd <v1>] insufficient parameters
}
}
if (%command == pwd) {
sockwrite -n $sockname
sockwrite -n $sockname pwd[\ $+ $remove(%pwd, [ $readini fserve.ini [ [ %fserve ] $+ _data ] directory ] ) $+ $chr(93)
}
if ($gettok(%command,1,32) == get) {
if ($gettok(%command,2,32) != $null) {
set %ratio $readini fserve.ini [ [ %fserve ] $+ _data ] ratio
set %pointer 1
set %sends $fserve_sends($gettok(%user,1,33))
set %max.sends $readini fserve.ini [ [ %fserve ] $+ _data ] max.gets
set %credits $readini [ [ %fserve ] $+ .ini ] %user credits
unset %reason
sockwrite -n $sockname
:send.next.file
set %file $findfile(%pwd,$gettok(%command,2-,32),%pointer)
if ($chr(92) isin $remove(%file,%pwd) || %file == $null) { goto wildcard.get.complete }
if (%sends => %max.sends) { set %reason too many sends specified | goto wildcard.get.complete }
if (%ratio != 0) { dec %credits $lof(%file) }
if (%credits < 0 && %ratio != 0) { set %reason insufficient credits for all matching files | inc %credits $lof(%file) | goto wildcard.get.complete }
.dcc send $gettok(%user,1,33) $chr(34) $+ %file $+ $chr(34)
log_file_send %file
inc %sends 1
if (%ratio == 0) { sockwrite -n $sockname $chr(91) $+ %pointer $+ $chr(93) $remove(%file,%pwd) }
else { sockwrite -n $sockname $chr(91) $+ %pointer $+ $chr(93) $remove(%file,%pwd) credits[ $+ %credits $+ $chr(93) }
inc %pointer 1
goto send.next.file
:wildcard.get.complete
if (%ratio != 0) { writeini [ [ %fserve ] $+ .ini ] %user credits %credits }
dec %pointer 1
if (%reason == $null && %pointer == 0) { set %reason no matching file(s) }
if (%reason == $null) { set %reason one moment }
sockwrite -n $sockname sending[ $+ %pointer $+ $chr(93) file(s) $chr(91) $+ %reason $+ $chr(93)
unset %pointer %sends %max.sends
.timer -m 1 1 update_user_info %user %fserve
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [get <v1>] insufficient parameters
}
}
if (%admin == true) {
set %target.user $gettok(%command,2,32)
if (%target.user isnum) { set %target.user $readini [ [ %fserve ] $+ .ini ] users [ u $+ [ %target.user ] ] }
elseif ($gettok(%target.user,0,64) == 1) { set %target.user $gettok( [ $readini fserve.ini sockets [ %target.user ] ] ,1,32) }
set %target.user $fserve_inifilter(in [ %target.user ] )
set %target.socket $readini [ [ %fserve ] $+ .ini ] %target.user ip
if (%target.socket) {
set %target.socket $readini fserve.ini sockets %target.socket
set %target.socket $gettok(%target.socket,1,32)
}
if ($gettok(%command,1,32) == comment || $gettok(%command,1,32) == comments) {
if ($gettok(%command,2,32) != $null) {
set %file %pwd $+ $nopath($gettok(%command,2,32))
if ($exists(%file) == $true) {
if ($gettok(%command,3,32) != $null) {
sockwrite -n $sockname
sockwrite -n $sockname set comments for file[ $+ $nopath(%file) $+ $chr(93) to $gettok(%command,3-,32)
set %comments $replace($gettok(%command,3-,32),$chr(44),$chr(255))
writeini [ [ %fserve ] $+ .ini ] comments $replace(%file,$chr(32),$chr(95)) $fserve_inifilter(in [ %comments ] )
}
else {
remini [ [ %fserve ] $+ .ini ] comments $replace(%file,$chr(32),$chr(95))
sockwrite -n $sockname
sockwrite -n $sockname comments for file[ $+ $nopath(%file) $+ $chr(93) deleted
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname no such file[ $+ $nopath(%file) $+ $chr(93)
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [comment <v1>] insufficient parameters
}
}
if ($gettok(%command,1,32) == reset) {
if ($gettok(%command,2,32) != $null) {
set %file %pwd $+ $nopath($gettok(%command,2-,32))
if ($exists(%file) == $true) {
remini [ [ %fserve ] $+ .ini ] downloads $replace(%file,$chr(32),$chr(255))
sockwrite -n $sockname
sockwrite -n $sockname reset file[ $+ $nopath(%file) $+ $chr(93)
}
else {
sockwrite -n $sockname
sockwrite -n $sockname no such file[ $+ $nopath(%file) $+ $chr(93)
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [reset <v1>] insufficient parameters
}
}
if ($gettok(%command,1,32) == delete) {
if ($gettok(%command,2,32)) {
set %file %pwd $+ $nopath($gettok(%command,2-,32))
if ($exists(%file) == $true) {
.remove %file
if ($exists(%file) == $false) {
sockwrite -n $sockname
sockwrite -n $sockname deleted file[ $+ $nopath(%file) $+ $chr(93)
}
else {
sockwrite -n $sockname
sockwrite -n $sockname unable to delete file[ $+ $nopath(%file) $+ $chr(93)
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname no such file[ $+ $nopath(%file) $+ $chr(93)
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [delete <v1>] insufficient parameters
}
}
if ($gettok(%command,1,32) == rename) {
if ($gettok(%command,3,32)) {
set %file1 %pwd $+ $nopath($gettok(%command,2,32))
set %file2 %pwd $+ $nopath($gettok(%command,3,32))
if ($exists(%file1) == $true) {
if ($exists(%file2) == $false) {
.rename $chr(34) $+ %file1 $+ $chr(34) $chr(34) $+ %file2 $+ $chr(34)
if ($exists(%file1) == $false && $exists(%file2) == $true) {
sockwrite -n $sockname
sockwrite -n $sockname renamed $chr(91) $+ $nopath(%file1) $+ $chr(93) to $chr(91) $+ %file2 $+ $chr(93)
}
else {
sockwrite -n $sockname
sockwrite -n $sockname rename of $chr(91) $+ $nopath(%file1) $+ $chr(93) to $chr(91) $+ %file2 $+ $chr(93) failed
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname conflicting file[ $+ $nopath(%file2) $+ $chr(93)
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname no such file[ $+ $nopath(%file) $+ $chr(93)
}
unset %file1 %file2
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [rename <v1> <v2>] insufficient parameters
}
}
if ($gettok(%command,1,32) == who) {
sockwrite -n $sockname
sockwrite -n $sockname listing users fseve[ $+ %fserve $+ $chr(93)
set %pointer 1
set %total $readini [ [ %fserve ] $+ .ini ] users total
:continue_internal_user_scan
if (%pointer > %total) { goto internal_user_scan_complete }
set %msg.user $readini [ [ %fserve ] $+ .ini ] users [ u $+ [ %pointer ] ]
sockwrite -n $sockname $chr(91) $+ %pointer $+ $chr(93) $gettok(%user,1,33) : %user
inc %pointer 1
goto continue_internal_user_scan
:internal_user_scan_complete
sockwrite -n $sockname users fserve[ $+ %fserve $+ $chr(93) complete
unset %msg.user %pointer %total
}
if ($gettok(%command,1,32) == kill) {
if ($gettok(%command,2,32)) {
if (%target.socket) {
if ($gettok(%command,3,32)) { set %reason $chr(40) $+ $gettok(%command,3-,32) $+ $chr(41) }
else { unset %reason }
sockwrite -n %target.socket *** fserve kill by rADMIN %reason
close_fserve %target.socket manual
}
else {
sockwrite -n $sockname
sockwrite -n $sockname *** no valid user specified
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [kill <v1> <v2->] insufficient parameters
}
}
if ($gettok(%command,1,32) == timedkill) {
if ($gettok(%command,3,32)) {
if (%target.socket) {
if ($gettok(%command,3,32) isnum) {
if ($gettok(%command,4-,32)) { set %reason $chr(40) $+ $gettok(%command,4-,32) $+ $chr(41) }
else { unset %reason }
sockwrite -n %target.socket *** fserve closing in $duration($gettok(%command,3,32)) %reason
.timer 1 $gettok(%command,3,32) if ( $+ $chr(36) $+ sock( [ $+ [ %target.socket ] ] $+ )) $chr(123) sockwrite -n %target.socket *** timed kill $chr(124) close_fserve %target.socket manual $chr(125)
}
else {
sockwrite -n $sockname
sockwrite -n $sockname <v2> is not a valid time value
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname *** no valid user specified
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [timedkill <v1> <v2->] insufficient parameters
}
}
if ($gettok(%command,1,32) == ban) {
if ($gettok(%command,2,32)) {
if (%target.socket) {
writeini [ [ %fserve ] $+ .ini ] %target.user banned banned
sockwrite -n $sockname
sockwrite -n $sockname banned user[ $+ %target.user $+ $chr(93) from fserve[ $+ %fserve $+ $chr(93)
update_user_info %target.user %fserve
}
else {
sockwrite -n $sockname
sockwrite -n $sockname *** no valid user specified
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [ban <v1>] insufficient parameters
}
}
if ($gettok(%command,1,32) == unban) {
if ($gettok(%command,2,32)) {
if (%target.socket) {
remini [ [ %fserve ] $+ .ini ] %target.user banned
sockwrite -n $sockname
sockwrite -n $sockname unbanned user[ $+ %target.user $+ $chr(93) from fserve[ $+ %fserve $+ $chr(93)
update_user_info %target.user %fserve
}
else {
sockwrite -n $sockname
sockwrite -n $sockname *** no valid user specified
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [unban <v1>] insufficient parameters
}
}
if ($gettok(%command,1,32) == give) {
if ($gettok(%command,3,32) != $null) {
if (%target.socket) {
if ($gettok(%command,3,32) isnum) {
set %credits $readini [ [ %fserve ] $+ .ini ] %target.user credits
inc %credits $gettok(%command,3,32)
writeini [ [ %fserve ] $+ .ini ] %target.user credits %credits
sockwrite -n $sockname
sockwrite -n $sockname *** added $gettok(%command,3,32) credit(s) to $gettok(%target.user,1,33) $+ 's total $chr(91) $+ %credits $+ $chr(93)
}
else {
sockwrite -n $sockname
sockwrite -n $sockname *** invalid credit increment
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname *** no valid user specified
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [give <v1> <v2>] insufficient parameters
}
}
if ($gettok(%command,1,32) == take) {
if ($gettok(%command,3,32) != $null) {
if (%target.socket) {
if ($gettok(%command,3,32) isnum) {
set %credits $readini [ [ %fserve ] $+ .ini ] %target.user credits
dec %credits $gettok(%command,3,32)
writeini [ [ %fserve ] $+ .ini ] %target.user credits %credits
sockwrite -n $sockname
sockwrite -n $sockname *** took $gettok(%command,3,32) credit(s) from $gettok(%target.user,1,33) $+ 's total $chr(91) $+ %credits $+ $chr(93)
}
else {
sockwrite -n $sockname
sockwrite -n $sockname *** invalid credit decrement
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname *** no valid user specified
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [take <v1> <v2>] insufficient parameters
}
}
if ($gettok(%command,1,32) == set) {
if ($gettok(%command,3,32) != $null) {
if (%target.socket) {
if ($gettok(%command,3,32) isnum) {
writeini [ [ %fserve ] $+ .ini ] %target.user credits $gettok(%command,3,32)
sockwrite -n $sockname
sockwrite -n $sockname *** set $gettok(%target.user,1,33) $+ 's credit total to $chr(91) $+ $gettok(%command,3,32) $+ $chr(93)
}
else {
sockwrite -n $sockname
sockwrite -n $sockname *** invalid credit total
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname *** no valid user specified
}
}
else {
sockwrite -n $sockname
sockwrite -n $sockname [set <v1> <v2>] insufficient parameters
}
}
unset %target.user %target.socket
}
}
else {
sockmark $sockname ready
.timer -m 1 200 sockwrite -n $sockname transfer interrupted
.timer -m 1 150 sockwrite -n $sockname
}
if (%command != $null) {
set %time.out $readini fserve.ini [ [ %fserve ] $+ _data ] time.out
set %user.timer1 $gettok(%user,1,33) $+ _timer1
set %user.timer2 $gettok(%user,1,33) $+ _timer2
.timer [ $+ [ %user.timer1 ] ] 1 %time.out if $chr(40) $+ $chr(36) $+ sock( [ $+ [ %fullsock ] ] $+ $chr(41) $+ $chr(41) $chr(123) sockwrite -n %fullsock *** idle connection closed after $duration(%time.out) inactivity $chr(125) $chr(124) close_fserve %fullsock manual
if (%time.out > 30) { .timer [ $+ [ %user.timer2 ] ] 1 $calc( [ %time.out ] - 30) if $chr(40) $+ $chr(36) $+ sock( [ $+ [ %fullsock ] ] $+ $chr(41) $+ $chr(41) $chr(123) sockwrite -n %fullsock $chr(124) sockwrite -n %fullsock *** closing idle connection in 30 seconds $chr(125) }
unset %user.timer1 %user.timer2 %time.out
}
unset %fserve %command %user %pwd %full.dir %admin %win %file %credits
}
alias log_file_send { }
alias post_fserve_command { if ($window( [ @monitor_ $+ [ $2 ] ] ) != $null) { echo [ @monitor_ $+ [ $2 ] ] > $3- } }
alias files_window {
window -l20 @statistics @statistics
clear -l @statistics
aline -l $colour(high) @statistics [top files]
aline -l $colour(high) @statistics [top uploaders]
aline -l $colour(high) @statistics [top downloaders]
aline -l $colour(high) @statistics [top channels]
aline -l $colour(list) @statistics -
aline -l $colour(info) @statistics [x] total
set %fserves $readini fserve.ini main servers
set %pointer $gettok(%fserves,0,32)
:continue_fserve_list
if (%pointer < 1) { goto fserve_list_complete }
aline -l $colour(high) @statistics [Â ] f[ $+ $gettok(%fserves,%pointer,32) $+ $chr(93)
dec %pointer 1
goto continue_fserve_list
:fserve_list_complete
}
menu @statistics {
dclick {
if ($gettok($sline($active,1),2,32) == files]) { top_files }
if ($gettok($sline($active,1),2,32) == uploaders]) { top_uploaders }
if ($gettok($sline($active,1),2,32) == downloaders]) { top_downloaders }
if ($gettok($sline($active,1),2,32) == channels]) { top_channels }
if ($gettok($sline($active,1),1,32) == [Â ]) {
set %search.line $findline(@statistics -l 1 [x]*)
set %text $gettok($line(@statistics,%search.line,1),2,32)
set %search.line2 $sline(@statistics,1).ln
set %text2 $gettok($sline(@statistics,1),2,32)
dline -l @statistics %search.line
iline -l $colour(high) @statistics %search.line [Â ] %text
dline -l @statistics %search.line2
iline -l $colour(info) @statistics %search.line2 [x] %text2
unset %search.line %search.line2 %text %text2
}
}
}
alias top_files {
clear @statistics | unset %fserve
if ($findline(@statistics -l 1 [x]*) > 6) {
set %fserve $line(@statistics,$findline(@statistics -l 1 [x]*),1)
set %fserve $left(%fserve,$calc($len(%fserve) - 1))
set %fserve $right(%fserve,$calc($len(%fserve) - 6))
}
if (%fserve != $null) { aline $colour(info2) @statistics top files fserve[ $+ %fserve $+ $chr(93) | set %fserves %fserve }
else { aline $colour(info2) @statistics top files | set %fserves $readini fserve.ini main servers | set %total true }
set %f.pointer $gettok(%fserves,0,32)
:continue_fserve_scan
if (%f.pointer < 1) { goto fserve_scan_complete }
set %fserve $gettok(%fserves,%f.pointer,32)
set %lines $lines( [ [ %fserve ] $+ .ini ] )
set %pointer 1
:read_next_line
set %line $read -nl $+ %pointer [ [ %fserve ] $+ .ini ]
if (%line == [downloads]) { set %start_line %pointer | inc %pointer 1 }
elseif (%pointer < %lines) { inc %pointer 1 | goto read_next_line }
if (%start_line) {
:continue_post_files
set %line $read -nl $+ %pointer [ [ %fserve ] $+ .ini ]
if (%line) {
set %add.text $gettok(%line,2,61) downloads $chr(91) $+ $replace($gettok(%line,1,61),$chr(255),$chr(32)) $+ $chr(93)
set %iline $insert_sort(@statistics [ %add.text ] )
if (%iline != $line(@statistics,0)) { iline -p $colour(info) @statistics %iline %add.text }
else { aline $colour(info) @statistics %add.text }
inc %pointer 1
goto continue_post_files
}
}
dec %f.pointer 1
goto continue_fserve_scan
:fserve_scan_complete
if ($line(@statistics,0) == 1) {
clear @statistics
if (%total == true) { aline $colour(info) @statistics *** no files downloaded }
else { aline $colour(info) @statistics *** no file downloaded from fserve %fserve }
}
unset %line %lines %start_line %pointer %fserve %fserves %total %f.pointer %add.text %iline
}
alias top_uploaders {
clear @statistics | unset %fserve
if ($findline(@statistics -l 1 [x]*) > 6) {
set %fserve $line(@statistics,$findline(@statistics -l 1 [x]*),1)
set %fserve $left(%fserve,$calc($len(%fserve) - 1))
set %fserve $right(%fserve,$calc($len(%fserve) - 6))
}
if (%fserve != $null) { aline $colour(info2) @statistics top uploaders fserve[ $+ %fserve $+ $chr(93) | set %fserves %fserve }
else { aline $colour(info2) @statistics top uploaders | set %fserves $readini fserve.ini main servers | set %total true }
set %f.pointer $gettok(%fserves,0,32)
:continue_fserve_scan
if (%f.pointer < 1) { goto fserve_scan_complete }
set %fserve $gettok(%fserves,%f.pointer,32)
set %pointer $readini [ [ %fserve ] $+ .ini ] perm_user_list total
:continue_perm_user_scan
if (%pointer < 1) { goto perm_user_scan_complete }
set %user $readini [ [ %fserve ] $+ .ini ] perm_user_list [ u $+ [ %pointer ] ]
set %uploads $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) uploads
set %add.text $gettok(%uploads,2,32) bytes in $gettok(%downloads,1,32) files
set %text out $gettok(%user,1,33)
set %add.text %add.text $+ $str($chr(160),$calc(27 - $len(%add.text)))
set %text $fserve_inifilter(%text)
set %add.text %add.text %text
set %add.text %add.text $+ $str($chr(160),$calc(40 - $len(%add.text)))
if (%total == true) { set %add.text %add.text f[ $+ %fserve $+ $chr(93) }
set %iline $insert_sort(@statistics [ %add.text ] )
if (%iline != $line(@statistics,0)) { iline $colour(info) @statistics %iline %add.text }
else { aline $colour(info) @statistics %add.text }
dec %pointer 1
goto continue_perm_user_scan
:perm_user_scan_complete
dec %f.pointer 1
goto continue_fserve_scan
:fserve_scan_complete
if ($line(@statistics,0) == 1) {
clear @statistics
if (%total == true) { aline $colour(info) @statistics *** no users configured }
else { aline $colour(info) @statistics *** no users configured for fserve %fserve }
}
unset %fserve %user %pointer %fserves %uploads %text %total %iline
}
alias top_downloaders {
clear @statistics | unset %fserve
if ($findline(@statistics -l 1 [x]*) > 6) {
set %fserve $line(@statistics,$findline(@statistics -l 1 [x]*),1)
set %fserve $left(%fserve,$calc($len(%fserve) - 1))
set %fserve $right(%fserve,$calc($len(%fserve) - 6))
}
if (%fserve != $null) { aline $colour(info2) @statistics top downloaders fserve[ $+ %fserve $+ $chr(93) | set %fserves %fserve }
else { aline $colour(info2) @statistics top downloaders | set %fserves $readini fserve.ini main servers | set %total true }
set %f.pointer $gettok(%fserves,0,32)
:continue_fserve_scan
if (%f.pointer < 1) { goto fserve_scan_complete }
set %fserve $gettok(%fserves,%f.pointer,32)
set %pointer $readini [ [ %fserve ] $+ .ini ] perm_user_list total
:continue_perm_user_scan
if (%pointer < 1) { goto perm_user_scan_complete }
set %user $readini [ [ %fserve ] $+ .ini ] perm_user_list [ u $+ [ %pointer ] ]
set %downloads $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) downloads
set %add.text $gettok(%downloads,2,32) bytes in $gettok(%downloads,1,32) files
set %text out $gettok(%user,1,33)
set %add.text %add.text $+ $str($chr(160),$calc(27 - $len(%add.text)))
set %text $fserve_inifilter(%text)
set %add.text %add.text %text
set %add.text %add.text $+ $str($chr(160),$calc(40 - $len(%add.text)))
if (%total == true) { set %add.text %add.text f[ $+ %fserve $+ $chr(93) }
set %iline $insert_sort(@statistics [ %add.text ] )
if (%iline != $line(@statistics,0)) { iline $colour(info) @statistics %iline %add.text }
else { aline $colour(info) @statistics %add.text }
dec %pointer 1
goto continue_perm_user_scan
:perm_user_scan_complete
dec %f.pointer 1
goto continue_fserve_scan
:fserve_scan_complete
if ($line(@statistics,0) == 1) {
clear @statistics
if (%total == true) { aline $colour(info) @statistics *** no users configured }
else { aline $colour(info) @statistics *** no users configured for fserve %fserve }
}
unset %fserve %user %pointer %fserves %downloads %text %total %iline
}
alias top_channels {
clear @statistics | unset %fserve
if ($findline(@statistics -l 1 [x]*) > 6) {
set %fserve $line(@statistics,$findline(@statistics -l 1 [x]*),1)
set %fserve $left(%fserve,$calc($len(%fserve) - 1))
set %fserve $right(%fserve,$calc($len(%fserve) - 6))
}
if (%fserve != $null) { aline $colour(info2) @statistics top channels fserve[ $+ %fserve $+ $chr(93) }
else { aline $colour(info2) @statistics top channels }
set %channels $remtok( [ $readini fserve.ini main channels ] ,:,1,32)
set %pointer $gettok(%channels,0,32)
if (%pointer == $null) {
aline $colour(info) @statistics no channels configured
}
else {
:continue_chan_scan
if (%pointer < 1) { goto chan_scan_complete }
set %add.text $calc( [ $readini fserve.ini [ [ $gettok(%channels,%pointer,32) ] $+ _channel ] triggered ] ) triggers
set %add.text %add.text $+ $str($chr(160),$calc(12 - $len(%add.text))) $chr(91) $+ $gettok(%channels,%pointer,32) $+ $chr(93)
if (%fserve == $null) { set %add.text %add.text $+ $str($chr(160),$calc(32 - $len(%add.text))) f[ $+ $readini fserve.ini [ [ $gettok(%channels,%pointer,32) ] $+ _channel ] fserve $+ $chr(93) }
if ( [ $readini fserve.ini [ [ $gettok(%channels,%pointer,32) ] $+ _channel ] fserve ] == %fserve || %fserve == $null) {
set %iline $insert_sort(@statistics [ %add.text ] )
if (%iline != $line(@statistics,0)) { iline $colour(info) @statistics %iline %add.text }
else { aline $colour(info) @statistics %add.text }
}
dec %pointer 1
goto continue_chan_scan
:chan_scan_complete
if ($line(@statistics,0) == 1) { clear @statistics | aline $colour(info) @statistics *** no channels are configured to use fserve %fserve }
}
unset %channels %pointer %add.text %fserve
}
alias insert_sort {
set %listbox 0
set %text $2-
if ($2 == -l) { set %listbox 1 | set %text $3- }
unset %listbox
set %s.pointer 1
:continue_scan
set %line $line( [ $1 ] , [ %s.pointer ] , [ %listbox ] )
if (%line == $null) { goto scan_complete }
if (%text > %line) { goto scan_complete }
inc %s.pointer 1
goto continue_scan
:scan_complete
unset %text %line %listbox
return %s.pointer
}
ctcp 1:dcc:?: {
unset %halt
if ($2 == send) {
set %fserves $readini fserve.ini main servers
set %pointer $gettok(%fserves,0,32)
:continue_fserve_scan
if (%pointer < 1) { goto fserve_scan_complete }
set %fserve $gettok( [ $readini fserve.ini main servers ] ,%pointer,32)
set %user $read -s $+ $chr(91) $+ $fserve_inifilter(in [ $mask($fulladdress,8) ] ) $+ $chr(93) [ [ %fserve ] $+ .ini ]
if (%user != $null) {
set %file.types $readini fserve.ini [ [ %fserve ] $+ _data ] file.types
set %f.pointer $gettok(%file.types,0,32)
:continue_file_scan
if (%f.pointer < 1) { goto file_scan_complete }
if ($gettok(%file.types,%f.pointer,32) iswm $nopath($3)) { goto accept_file }
dec %f.pointer 1
goto continue_file_scan
:file_scan_complete
}
dec %pointer 1
goto continue_fserve_scan
:fserve_scan_complete
goto done
:accept_file
writeini fserve.ini sockets $fserve_inifilter(in [ $nick ] ) $fserve_inifilter(in [ $mask($fulladdress,8) ] ) %fserve
set %user $right($left(%user,$calc($len(%user) - 1)),$calc($len(%user) - 2))
set %socket $readini [ [ %fserve ] $+ .ini ] %user ip
set %socket $readini fserve.ini sockets %socket
set %socket $gettok(%socket,1,32)
if ($findfile($getdir( [ . $+ [ $gettok($3,$gettok($3,0,46),46) ] ] ) ,$nopath($3),1)) {
if ($sock(%socket)) {
sockwrite -n %socket
sockwrite -n %socket error
sockwrite -n %socket file[ $+ $nopath($3) $+ $chr(93) already exists
}
set %halt 1
}
else {
if ($sock(%socket)) {
sockwrite -n %socket
sockwrite -n %socket accepting file[ $+ $nopath($3) $+ $chr(93)
sockwrite -n %socket credits will be added when upload is complete
}
.sreq +m auto
.timer -m 1 1 .sreq -m ask
:done
}
unset %fserve %fserves %pointer %f.pointer %file.types %user %socket
if (%halt == 1) { unset %halt | halt }
}
}
on 1:filesent:*: {
set %socket $readini fserve.ini sockets $get($nick).ip
if (%socket != $null) {
set %user $gettok(%socket,2,32)
set %socket $gettok(%socket,1,32)
set %fserve $deltok($deltok(%socket,$gettok(%socket,0,95),95),1,95)
}
else {
set %user $readini fserve.ini sockets $fserve_inifilter(in [ $nick ] )
set %fserve $gettok(%user,2,32)
set %user $gettok(%user,1,32)
}
if (%user) {
set %user.info $readini [ [ %fserve ] $+ .ini ] users %user
set %user.info $gettok(%user.info,1,32) $calc( [ $gettok(%user.info,2,32) ] + 1) $gettok(%user.info,3,32)
writeini [ [ %fserve ] $+ .ini ] users %user %user.info
set %download.info $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) downloads
set %download.info $calc( [ $gettok(%download.info,1,32) ] + 1) $calc( [ $gettok(%download.info,2,32) ] + [ $send($nick).size ] )
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) downloads %download.info
set %downloads $readini [ [ %fserve ] $+ .ini ] downloads $replace($filename,$chr(32),$chr(95))
inc %downloads 1
writeini [ [ %fserve ] $+ .ini ] downloads $replace($filename,$chr(32),$chr(255)) %downloads
.timer -m 1 1 update_user_info %user %fserve
if ($sock(%socket)) {
sockwrite -n %socket
sockwrite -n %socket finished sending file[ $+ $nopath($filename) $+ $chr(93)
}
}
unset %socket %user %fserve %user.info %download.info
}
on 1:sendfail:*: {
set %user $gettok( [ $readini fserve.ini sockets [ $fserve_inifilter(in [ $nick ] ) ] ] ,1,32)
set %fserve $gettok( [ $readini fserve.ini sockets [ $fserve_inifilter(in [ $nick ] ) ] ] ,2,32)
set %socket $readini [ [ %fserve ] $+ .ini ] %user ip
set %socket $gettok( [ $readini fserve.ini sockets [ %ip ] ] ,1,32)
set %credits $readini [ [ %fserve ] $+ .ini ] %user credits
inc %credits $lof($filename)
writeini [ [ %fserve ] $+ .ini ] %user credits %credits
if ($sock(%socket)) {
sockwrite -n %socket
sockwrite -n %socket transfer of $chr(91) $+ $nopath($filename) $+ $chr(93) failed
sockwrite -n %socket $chr(91) $+ $lof($filename) $+ $chr(93) $+ credits returned
}
}
on 1:filercvd:*: {
set %socket $readini fserve.ini sockets $get($nick).ip
if (%socket != $null) {
set %user $gettok(%socket,2,32)
set %fserve $deltok($deltok(%socket,$gettok(%socket,0,95),95),1,95)
set %socket $gettok(%socket,1,32)
}
else {
set %user $readini fserve.ini sockets $fserve_inifilter(in [ $nick ] )
set %fserve $gettok(%user,2,32)
set %user $gettok(%user,1,32)
set %socket $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) ip
set %socket $readini fserve.ini sockets %socket
set %socket $gettok(%socket,1,32)
}
if (%user != $null) {
unset %ratio
set %file.types $readini fserve.ini [ [ %fserve ] $+ _data ] file.types
if (%file.types) {
set %pointer $gettok(%file.types,0,32)
:continue.type.scan
if (%pointer < 1) { goto type.scan.complete }
if ($gettok(%file.types,%pointer,32) iswm $filename) { goto type.scan.complete }
dec %pointer 1
goto continue.type.scan
:type.scan.complete
if (%pointer != 0) { set %ratio $readini fserve.ini [ [ %fserve ] $+ _data ] [ r. $+ [ $gettok(%file.types,%pointer,32) ] ] }
}
unset %file.types %pointer
if (%ratio == $null) { set %ratio $readini fserve.ini [ [ %fserve ] $+ _data ] ratio }
if (%ratio != 0) {
set %credits $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) credits
set %inc $lof($filename)
set %inc $calc(%inc * %ratio)
inc %credits %inc
set %uploads $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) uploads
set %upload.bytes $gettok(%uploads,2,32)
set %uploads $gettok(%uploads,1,32)
inc %uploads 1
inc %upload.bytes $lof($filename)
set %user.info $readini [ [ %fserve ] $+ .ini ] users $fserve_inifilter(in [ %user ] )
set %user.info $gettok(%user.info,1,32) $gettok(%user.info,2,32) $calc( [ $gettok(%user.info,3,32) ] + 1)
writeini [ [ %fserve ] $+ .ini ] users $fserve_inifilter(in [ %user ] ) %user.info
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) uploads %uploads %upload.bytes
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) credits %credits
}
if ($sock(%socket)) {
sockwrite -n %socket
sockwrite -n %socket file[ $+ $nopath($filename) $+ $chr(93) uploaded successfully
if (%inc) { sockwrite -n %socket $chr(91) $+ %inc $+ $chr(93) $+ credits added }
}
.timer -m 1 1 update_user_info $get($nick).ip
if ($fserve_gets($nick inactive) == $true) { close -g $nick }
unset %inc %credits %user %fserve %socket %admin %comments
}
}
on 1:getfail:*: {
set %user $readini fserve.ini sockets $nick
if (%user) {
set %fserve $gettok(%user,2,32)
set %user $gettok(%user,1,32)
set %socket $readini [ [ %fserve ] $+ .ini ] %user ip
set %socket $gettok( [ $readini fserve.ini sockets [ %socket ] ] ,1,32)
if ($sock(%socket)) {
sockwrite -n %socket
sockwrite -n %socket receive of file[ $+ $nopath($filename) $+ $chr(93) failed
sockwrite -n %socket no credits added
}
if ($fserve_gets($nick inactive) == $true) { close -g $nick }
}
unset %user %fserve %socket
}
alias update_user_info {
if ($isip($1)) {
set %info $readini fserve.ini sockets $1
set %socket $gettok(%info,1,32)
set %ip $1
set %fserve $deltok($deltok(%socket,$gettok(%socket,0,95),95),1,95)
set %user $gettok(%info,2,32)
}
elseif ($gettok($1,0,64) == 2) {
set %user $1
set %fserve $2
set %ip $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) ip
}
else { set %info nickname }
set %nick $gettok(%user,1,33)
set %line @users 1 *f $+ $chr(91) $+ %fserve $+ $chr(93) $chr(9) $+ nick[ $+ %nick $+ $chr(93) $+ *
set %line $findline(%line)
set %info $readini [ [ %fserve ] $+ .ini ] users $fserve_inifilter(in [ %user ] )
set %history.downloads $gettok( [ $readini [ [ %fserve ] $+ .ini ] [ $fserve_inifilter(in [ %user ] ) ] downloads ] ,1,32)
set %history.uploads $gettok( [ $readini [ [ %fserve ] $+ .ini ] [ $fserve_inifilter(in [ %user ] ) ] uploads ] ,1,32)
set %banned $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) banned
set %win @monitor_ $+ %user
if ($window(@users) != $null) {
if (%info != $null) {
set %iline $calc( [ $findline(@users 1 [on-line users]) ] + 1)
set %current.uploads $fserve_gets(%nick)
set %current.downloads $fserve_sends(%nick)
set %session.downloads $gettok(%info,2,32)
set %session.uploads $gettok(%info,3,32)
if (%line == $null) { iline $colour(high) @users %iline f[ $+ %fserve $+ $chr(93) $chr(9) $+ nick[ $+ %nick $+ $chr(93) $chr(9) $+ d[ $+ %current.downloads $+ : $+ %session.downloads $+ : $+ %history.downloads $+ $chr(93) $chr(9) $+ u[ $+ %current.uploads $+ : $+ %session.uploads $+ : $+ %history.uploads $+ $chr(93) $chr(9) $+ %banned $+ $chr(9) %user %ip %fserve }
else { rline $colour(high) @users %line f[ $+ %fserve $+ $chr(93) $chr(9) $+ nick[ $+ %nick $+ $chr(93) $chr(9) $+ d[ $+ %current.downloads $+ : $+ %session.downloads $+ : $+ %history.downloads $+ $chr(93) $chr(9) $+ u[ $+ %current.uploads $+ : $+ %session.uploads $+ : $+ %history.uploads $+ $chr(93) $chr(9) $+ %banned $+ $chr(9) %user %ip %fserve }
}
else {
set %iline $calc( [ $findline(@users 1 [off-line users]) ] + 1)
if (%line == $null) { iline $colour(high) @users %iline f[ $+ %fserve $+ $chr(93) $chr(9) $+ nick[ $+ %nick $+ $chr(93) $chr(9) $+ d[ $+ %history.downloads $+ $chr(93) $chr(9) $+ u[ $+ %history.uploads $+ $chr(93) $chr(9) $+ %banned $+ $chr(9) %user disconnected %fserve }
else { rline $colour(high) @users %line f[ $+ %fserve $+ $chr(93) $chr(9) $+ nick[ $+ %nick $+ $chr(93) $chr(9) $+ d[ $+ %history.downloads $+ $chr(93) $chr(9) $+ u[ $+ %history.uploads $+ $chr(93) $chr(9) $+ %banned $+ $chr(9) %user disconnected %fserve }
}
}
if (%info != $null) { if ($window(%win) != $null) { full_user_info %user %ip %fserve } }
else { if ($window(%win) != $null) { full_user_info %user disconnected %fserve } }
unset %socket %user %info %nick %line %banned %win
unset %current.uploads %current.downloads
unset %session.uploads %session.downloads
unset %history.uploads %history.downloads
}
alias users_window {
window -l -t10,27,37,47,100 @users @users
set %fserves $readini fserve.ini main servers
clear @users
aline $colour(info) @users [on-line users]
aline $colour(info) @users [off-line users]
set %fserves $readini fserve.ini main servers
set %f.pointer $gettok(%fserves,0,32)
:continue_fserve_scan
if (%f.pointer < 1) { goto fserve_scan_complete }
set %f.fserve $gettok(%fserves,%f.pointer,32)
set %pointer $readini [ [ %f.fserve ] $+ .ini ] perm_user_list total
:continue_perm_user_scan
if (%pointer < 1) { goto perm_user_scan_complete }
set %u.user $readini [ [ %f.fserve ] $+ .ini ] perm_user_list [ u $+ [ %pointer ] ]
update_user_info %u.user %f.fserve
dec %pointer 1
goto continue_perm_user_scan
:perm_user_scan_complete
dec %f.pointer 1
goto continue_fserve_scan
:fserve_scan_complete
unset %f.fserve %u.user %pointer %fserves %downloads %text %total
}
menu @users {
dclick { if ($left($gettok($sline($active,1),1,32),1) == f) { full_user_info $gettok($sline($active,1),6-,32) } }
$delete_fserve_user {
set %user $gettok($sline($active,1),6,32)
set %fserve $gettok($sline($active,1),8,32)
set %fserve.ini $gettok($sline($active,1),8,32) $+ .ini
set %pointer $readini %fserve.ini perm_user_list total
if (%pointer > 0) {
set %total $calc(%pointer - 1)
:continue_user_scan
if (%pointer < 1) { goto user_scan_complete }
set %checkuser $readini %fserve.ini perm_user_list [ u $+ [ %pointer ] ]
if (%checkuser == %user) { set %user.marker %pointer | set %pointer 1 }
dec %pointer 1
goto continue_user_scan
:user_scan_complete
remini %fserve.ini $fserve_inifilter(in [ %user ] )
set %pointer %user.marker
:continue_shift_users
set %read.user $readini %fserve.ini perm_user_list [ u $+ [ $calc(%pointer + 1) ] ]
if (%read.user != $null) {
writeini %fserve.ini perm_user_list [ u $+ [ %pointer ] ] %read.user
inc %pointer 1
goto continue_shift_users
}
remini %fserve.ini perm_user_list [ u $+ [ %pointer ] ]
writeini %fserve.ini perm_user_list total $calc(%pointer - 1)
if ($window(@users) != $null) {
set %search.string @users 1 f[ $+ %fserve $+ $chr(93) $chr(9) $+ nick[ $+ $gettok(%user,1,33) $+ $chr(93) $+ *
set %search.string $findline(%search.string)
if (%search.string != $null) { dline @users %search.string }
}
if ($window( [ @monitor_ $+ [ %user ] ] ) != $null) { window -c [ @monitor_ $+ [ %user ] ] }
}
unset %user %fserve.ini %pointer %checkuser
}
}
alias delete_fserve_user {
if ($left($sline($active,1),1) == f) { return delete fserve $right($left($gettok($sline(@users,1),1,32),$calc($len($gettok($sline(@users,1),1,32)) - 1)),$calc($len($gettok($sline(@users,1),1,32)) - 3))) user $right($left($gettok($sline(@users,1),2,32),$calc($len($gettok($sline(@users,1),2,32)) - 1)),$calc($len($gettok($sline(@users,1),2,32)) - 7)) }
}
alias full_user_info {
set %nick $gettok($1,1,33)
set %win @monitor_ $+ $1
window -el17 %win @user_monitor
titlebar %win $2-
unset %connected
if ($isip($2)) { set %connected true }
set %fserve.ini $3 $+ .ini
set %user.i $fserve_inifilter(in [ $1 ] )
clear -l %win
aline -l $colour(high) %win give credits
aline -l $colour(high) %win take credits
aline -l $colour(high) %win credits[ $+ $readini %fserve.ini %user.i credits $+ $chr(93)
aline -l $colour(list) %win -
if (%connected) {
aline -l $colour(high) %win kill user
aline -l $colour(high) %win timed kill
aline -l $colour(list) %win -
}
set %banned $readini %fserve.ini %user.i banned
if (%banned == $null) { aline -l $colour(high) %win ban user }
else { aline -l $colour(high) %win unban user }
aline -l $colour(list) %win -
aline -l $colour(info) %win uploads
if (%connected) {
set %info $readini %fserve.ini users %user.i
aline -l $colour(info2) %win current[ $+ $fserve_gets($gettok(%user,1,33)) $+ $chr(93)
aline -l $colour(info2) %win session[ $+ $gettok(%info,3,32) $+ $chr(93)
}
set %uploads $readini %fserve.ini %user.i uploads
aline -l $colour(info2) %win history[ $+ $gettok(%uploads,1,32) $+ $chr(93)
aline -l $colour(info) %win total bytes
aline -l $colour(info2) %win $chr(91) $+ $gettok(%uploads,2,32) $+ $chr(93)
aline -l $colour(list) %win -
aline -l $colour(info) %win downloads
if (%connected) {
aline -l $colour(info2) %win current[ $+ $fserve_sends($gettok(%user,1,33)) $+ $chr(93)
aline -l $colour(info2) %win session[ $+ $gettok(%info,2,32) $+ $chr(93)
}
set %downloads $readini %fserve.ini %user.i downloads
aline -l $colour(info2) %win history[ $+ $gettok(%downloads,1,32) $+ $chr(93)
aline -l $colour(info) %win total bytes
aline -l $colour(info2) %win $chr(91) $+ $gettok(%downloads,2,32) $+ $chr(93)
if (%connected) {
aline -l $colour(list) %win -
aline -l $colour(info) %win pwd[ $+ $readini %fserve.ini %user.i pwd $+ $chr(93)
if ($readini %fserve.ini %user.i admin) { aline -l $colour(info) %win admin }
}
unset %win %connected %fserve %uploads %downloads %info
}
menu @user_monitor {
dclick {
set %command $sline($active,1)
set %user $right($active,$calc($len($active) - 9))
set %fserve $gettok($window($active).title,2,32)
if ($gettok(%command,1,32) == give) {
set %credits $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) credits
inc %credits $$?="add how many credits"
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) credits %credits
update_user_info %user %fserve
}
if ($gettok(%command,1,32) == take) {
set %credits $readini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) credits
dec %credits $$?="remove how many credits"
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) credits %credits
update_user_info %user %fserve
}
if ($left(%command,8) == credits[) {
writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) credits $$?="enter new credit total"
update_user_info %user %fserve
}
if ($gettok(%command,1,32) == ban) { writeini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) banned banned | update_user_info %user %fserve }
if ($gettok(%command,1,32) == unban) { remini [ [ %fserve ] $+ .ini ] $fserve_inifilter(in [ %user ] ) banned | update_user_info %user %fserve }
if ($gettok(%command,1,32) == kill) {
set %socket $gettok( [ $readini fserve.ini sockets [ $gettok($window($active).title,1,32) ] ] ,1,32)
sockwrite -n %socket *** fserve kill by ADMIN
close_fserve %socket manual
echo $colour(info) $active *** fserve kill by ADMIN
}
if ($gettok(%command,1,32) == timed) {
set %socket $gettok( [ $readini fserve.ini sockets [ $gettok($window($active).title,1,32) ] ] ,1,32)
set %time $$?="enter number of seconds until kill"
sockwrite -n %socket *** fserve closing in $duration(%time)
.timer 1 %time if ($!sock(%socket)) $chr(123) sockwrite -n %socket *** fserve timed kill $chr(91) $+ $duration(%time) $+ $chr(93) $chr(124) close_fserve %socket manual $chr(125)
echo $colour(info) $active *** timed KILL in $duration(%time)
}
unset %command %user %credits %socket %time
}
}
on 1:input:@monitor_*: {
if ($left($1,1) != [ $readini [ $mircini ] text commandchar ] ) {
set %ip $gettok($window($active).title,1,32)
if ($isip(%ip)) {
set %socket $gettok( [ $readini fserve.ini sockets [ %ip ] ] ,1,32)
sockwrite -n %socket < $+ $me $+ :ADMIN> $1-
echo $colour(own) $active < $+ $me $+ > $1-
}
else {
echo $colour(info) $active *** user is not connected
}
unset %socket ^%ip
halt
}
}
alias fserve_gets {
set %g.pointer $get(0)
set %gets 0
:continue_gets
if (%g.pointer < 1) { goto gets_done }
if ($get(%g.pointer) == $1) { inc %gets 1 }
if ($2 == inactive && $get(%g.pointer).status == active) { set %gets $false | goto gets_done }
dec %g.pointer 1
goto continue_gets
:gets_done
if ($2 == inactive && %gets isnum) { set %gets $true }
return %gets
}
alias fserve_sends {
set %s.pointer $send(0)
set %sends 0
:continue_sends
if (%s.pointer < 1) { goto sends_done }
if ($send(%s.pointer) == $1) { inc %sends 1 }
if ($2 == inactive && $send(%s.pointer).status == active) { set %sends $false | goto sends_done }
dec %s.pointer 1
goto continue_sends
:sends_done
if ($2 == inactive && %sends isnum) { set %sends $true }
return %sends
}
alias findline {
; $findline(@window [-l] <n> <text>)
; @window is the window to search
; -l switch specifies side-listbox
; <n> returns line number of nth line matching <text>
; <text> wildcard search
set %listbox 0
set %l.pointer 1
set %matches 0
set %find.matches $2
set %text $3-
if ($2 == -l) { set %find.matches $3 | set %text $4- | set %listbox 1 }
:continue_scan
if (%text iswm $line($1,%l.pointer,%listbox)) {
inc %matches 1
if (%matches == %find.matches) { goto done }
}
inc %l.pointer 1
if (%l.pointer <= $line($1,0,%listbox)) { goto continue_scan }
set %l.pointer $null
:done
unset %listbox %matches %find.matches %text
return %l.pointer
}
alias fserve_version { return multi-fserve[v1.011] }
menu channel {
-
$fserve_version { }
$install_fserve_channel(#)
.$page_range(# fserve) { }
.-
.$page_entry(# 1 fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] fserve $gettok( [ $readini fserve.ini main servers ] ,%pagepointer,32) | writeini fserve.ini main channels $addtok( [ $readini fserve.ini main channels ] ,#,32) | unset %pagepointer }
.$page_entry(# 2 fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] fserve $gettok( [ $readini fserve.ini main servers ] ,$calc(%pagepointer + 1),32) | writeini fserve.ini main channels $addtok( [ $readini fserve.ini main channels ] ,#,32) | unset %pagepointer }
.$page_entry(# 3 fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] fserve $gettok( [ $readini fserve.ini main servers ] ,$calc(%pagepointer + 2),32) | writeini fserve.ini main channels $addtok( [ $readini fserve.ini main channels ] ,#,32) | unset %pagepointer }
.$page_entry(# 4 fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] fserve $gettok( [ $readini fserve.ini main servers ] ,$calc(%pagepointer + 3),32) | writeini fserve.ini main channels $addtok( [ $readini fserve.ini main channels ] ,#,32) | unset %pagepointer }
.$page_entry(# 5 fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] fserve $gettok( [ $readini fserve.ini main servers ] ,$calc(%pagepointer + 4),32) | writeini fserve.ini main channels $addtok( [ $readini fserve.ini main channels ] ,#,32) | unset %pagepointer }
.$page_entry(# 6 fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] fserve $gettok( [ $readini fserve.ini main servers ] ,$calc(%pagepointer + 5),32) | writeini fserve.ini main channels $addtok( [ $readini fserve.ini main channels ] ,#,32) | unset %pagepointer }
.$page_entry(# 7 fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] fserve $gettok( [ $readini fserve.ini main servers ] ,$calc(%pagepointer + 6),32) | writeini fserve.ini main channels $addtok( [ $readini fserve.ini main channels ] ,#,32) | unset %pagepointer }
.$page_entry(# 8 fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] fserve $gettok( [ $readini fserve.ini main servers ] ,$calc(%pagepointer + 7),32) | writeini fserve.ini main channels $addtok( [ $readini fserve.ini main channels ] ,#,32) | unset %pagepointer }
.$page_entry(# 9 fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] fserve $gettok( [ $readini fserve.ini main servers ] ,$calc(%pagepointer + 8),32) | writeini fserve.ini main channels $addtok( [ $readini fserve.ini main channels ] ,#,32) | unset %pagepointer }
.$page_entry(# 10 fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] fserve $gettok( [ $readini fserve.ini main servers ] ,$calc(%pagepointer + 9),32) | writeini fserve.ini main channels $addtok( [ $readini fserve.ini main channels ] ,#,32) | unset %pagepointer }
.-
.$prev_10_entries(#) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] pagepointer $calc(%pagepointer - 10) }
.$next_10_entries(# fserve) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] pagepointer $calc(%pagepointer + 10) }
.-
.$check_fserve( [ # ] remove channel fserve) { remini fserve.ini [ [ # ] $+ _channel ] | .timer [ $+ [ # ] ] off | writeini fserve.ini main channels $remtok( [ $readini fserve.ini main channels ] ,#,1,32) }
$check_fserve(#)
.on join
..$current_advert( [ # ] onjoin) { }
..-
..$page_range(# advert) { }
..-
..$page_entry(# 1 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] onjoin $gettok( [ $readini fserve.ini main adverts ] ,%pagepointer,32) | unset %pagepointer }
..$page_entry(# 2 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] onjoin $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 1),32) | unset %pagepointer }
..$page_entry(# 3 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] onjoin $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 2),32) | unset %pagepointer }
..$page_entry(# 4 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] onjoin $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 3),32) | unset %pagepointer }
..$page_entry(# 5 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] onjoin $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 4),32) | unset %pagepointer }
..$page_entry(# 6 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] onjoin $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 5),32) | unset %pagepointer }
..$page_entry(# 7 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] onjoin $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 6),32) | unset %pagepointer }
..$page_entry(# 8 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] onjoin $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 7),32) | unset %pagepointer }
..$page_entry(# 9 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] onjoin $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 8),32) | unset %pagepointer }
..$page_entry(# 10 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] onjoin $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 9),32) | unset %pagepointer }
..-
..$prev_10_entries(#) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] pagepointer $calc(%pagepointer - 10) }
..$next_10_entries(# advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] pagepointer $calc(%pagepointer + 10) }
..-
..$rem_advert( [ # ] onjoin on join) { remini fserve.ini [ [ # ] $+ _channel ] onjoin }
.timed { }
..$current_advert( [ # ] timed) { }
..$repeat_delay(#) {
writeini fserve.ini [ [ # ] $+ _channel ] timed.delay $$?="enter repeat delay in seconds"
.timer [ $+ [ # ] ] 0 [ $readini fserve.ini [ [ # ] $+ _channel ] timed.delay ] set $chr(37) $+ fserve $!readini fserve.ini # $+ _channel fserve $chr(124) set $chr(37) $+ advert $!readini fserve.ini # $+ _channel timed $chr(124) msg # $!fserve_advert( $chr(91) $chr(37) $+ advert $chr(93) $chr(91) $chr(37) $+ fserve $chr(93) ) $chr(124) unset $chr(37) $+ fserve $chr(37) $+ advert
}
..-
..$page_range(# advert) { }
..-
..$page_entry(# 1 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] timed $gettok( [ $readini fserve.ini main adverts ] ,%pagepointer,32) | unset %pagepointer }
..$page_entry(# 2 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] timed $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 1),32) | unset %pagepointer }
..$page_entry(# 3 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] timed $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 2),32) | unset %pagepointer }
..$page_entry(# 4 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] timed $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 3),32) | unset %pagepointer }
..$page_entry(# 5 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] timed $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 4),32) | unset %pagepointer }
..$page_entry(# 6 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] timed $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 5),32) | unset %pagepointer }
..$page_entry(# 7 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] timed $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 6),32) | unset %pagepointer }
..$page_entry(# 8 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] timed $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 7),32) | unset %pagepointer }
..$page_entry(# 9 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] timed $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 8),32) | unset %pagepointer }
..$page_entry(# 10 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] timed $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 9),32) | unset %pagepointer }
..-
..$prev_10_entries(#) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] pagepointer $calc(%pagepointer - 10) }
..$next_10_entries(# advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] pagepointer $calc(%pagepointer + 10) }
..-
..$rem_advert( [ # ] timed timed) { remini fserve.ini [ [ # ] $+ _channel ] timed | .timer [ $+ [ # ] ] off }
.on slot free { }
..$current_advert( [ # ] slotfree) { }
..-
..$page_range(# advert) { }
..-
..$page_entry(# 1 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] slotfree $gettok( [ $readini fserve.ini main adverts ] ,%pagepointer,32) | unset %pagepointer }
..$page_entry(# 2 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] slotfree $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 1),32) | unset %pagepointer }
..$page_entry(# 3 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] slotfree $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 2),32) | unset %pagepointer }
..$page_entry(# 4 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] slotfree $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 3),32) | unset %pagepointer }
..$page_entry(# 5 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] slotfree $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 4),32) | unset %pagepointer }
..$page_entry(# 6 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] slotfree $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 5),32) | unset %pagepointer }
..$page_entry(# 7 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] slotfree $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 6),32) | unset %pagepointer }
..$page_entry(# 8 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] slotfree $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 7),32) | unset %pagepointer }
..$page_entry(# 9 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] slotfree $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 8),32) | unset %pagepointer }
..$page_entry(# 10 advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] slotfree $gettok( [ $readini fserve.ini main adverts ] ,$calc(%pagepointer + 9),32) | unset %pagepointer }
..-
..$prev_10_entries(#) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] pagepointer $calc(%pagepointer - 10) }
..$next_10_entries(# advert) { set %pagepointer $readini fserve.ini [ [ # ] $+ _channel ] pagepointer | if (%pagepointer == $null) { set %pagepointer 1 } | writeini fserve.ini [ [ # ] $+ _channel ] pagepointer $calc(%pagepointer + 10) }
..-
..$rem_advert( [ # ] slotfree slot free) { remini fserve.ini [ [ # ] $+ _channel ] slotfree }
}
alias install_fserve_channel {
if ( [ $readini fserve.ini [ [ $1 ] $+ _channel ] fserve ] == $null) { return install fserve[ $+ $1 $+ $chr(93) }
else { return change fserve for[ $+ $1 $+ $chr(93) }
}
alias check_fserve {
set %temp $readini fserve.ini main channels
if (%temp == $null) { writeini fserve.ini main channels : }
unset %temp
if ( [ $readini fserve.ini [ [ $1 ] $+ _channel ] fserve ] ) {
if ($2 == $null) { return advertisements for fserve[ $+ $readini fserve.ini [ [ # ] $+ _channel ] fserve $+ $chr(93) }
else { return $2- }
}
}
alias current_advert {
set %advert $readini fserve.ini [ [ $1 ] $+ _channel ] $2
if (%advert == $null) { set %advert  n o n e }
return current advert[ $+ %advert $+ $chr(93)
}
alias rem_advert { if ( [ $readini fserve.ini [ [ $1 ] $+ _channel ] $2 ] != $null) { return remove $3- advertisement } }
alias repeat_delay {
set %advert $readini fserve.ini [ [ # ] $+ _channel ] timed.delay
if (%advert < 60 || %advert !isnum) { set %advert 60 }
set %advert $duration(%advert)
return repeat delay[ $+ %advert $+ $chr(93)
}
alias page_range {
if ($2 == fserve) { set %temp $readini fserve.ini main servers }
if ($2 == advert) { set %temp $readini fserve.ini main adverts }
if ($gettok(%temp,0,32) == $null) { return no entries }
set %pagepointer $readini fserve.ini [ [ $1 ] $+ _channel ] pagepointer
if (%pagepointer == $null) { set %pagepointer 1 }
set %pagepointer2 $calc(%pagepointer + 9)
if ($2 == fserve) { if (%pagepointer2 > $gettok( [ $readini fserve.ini main servers ] ,0,32)) { set %pagepointer2 $gettok( [ $readini fserve.ini main servers ] ,0,32) } }
if ($2 == advert) { if (%pagepointer2 > $gettok( [ $readini fserve.ini main adverts ] ,0,32)) { set %pagepointer2 $gettok( [ $readini fserve.ini main adverts ] ,0,32) } }
return viewing entries[ $+ %pagepointer $+ - $+ %pagepointer2 $+ $chr(93)
}
alias page_entry {
set %pagepointer $readini fserve.ini [ [ $1 ] $+ _channel ] pagepointer
if (%pagepointer == $null) { set %pagepointer 1 }
if ($3 == fserve) { set %pagepointer $gettok( [ $readini fserve.ini main servers ] ,$calc($2 $+ %pagepointer),32) }
if ($3 == advert) { set %pagepointer $gettok( [ $readini fserve.ini main adverts ] ,$calc($2 $+ %pagepointer),32) }
if (%pagepointer) {
if ($3 == fserve) { return install fserve[ $+ %pagepointer $+ $chr(93) }
if ($3 == advert) { return use advert[ $+ %pagepointer $+ $chr(93) }
}
}
alias prev_10_entries {
if ( [ $readini fserve.ini [ [ $1 ] $+ _channel ] pagepointer ] > 9) { return previous 10 entries }
}
alias next_10_entries {
set %pagepointer $readini fserve.ini [ [ $1 ] $+ _channel ] pagepointer
if (%pagepointer == $null) { set %pagepointer 1 }
if ($2 == fserve) { set %pagepointer2 $gettok( [ $readini fserve.ini main servers ] ,0,32) }
if ($2 == advert) { set %pagepointer2 $gettok( [ $readini fserve.ini main adverts ] ,0,32) }
dec %pagepointer2 $calc(%pagepointer - 1)
if (%pagepointer2 > 10) {
dec %pagepointer2 10
if (%pagepointer2 > 10) { set %pagepointer2 10 }
if (%pagepointer2 > 1) { return next %pagepointer2 entries }
else { return last entry }
}
}
alias clean_vars {
unset %pagepointer %advert %fserve.ini %search.string
unset %temp %user.marker %total %slotfree %fserve.d
unset %adverts %current %f.temp %sub.d %perm.users
unset %pagepointer2 %new.pointer %user.i %new.pointer
unset %iline %full.address %sockname %l.pointer
unset %findline %g.pointer %gets %s.pointer %sends
unset %upload.bytes %perm.users.pointer %perm.user
}
on 1:part:#: { if ($nick == $me) { .timer [ $+ [ # ] ] off } }
on 1:join:#: {
set %fserve $readini fserve.ini [ [ # ] $+ _channel ] fserve
if ($nick == $me) {
set %timed $readini fserve.ini [ [ # ] $+ _channel ] timed
if (%fserve != $null && %timed != $null) {
.timer [ $+ [ # ] ] 0 [ $readini fserve.ini [ [ # ] $+ _channel ] timed.delay ] set $chr(37) $+ fserve $!readini fserve.ini # $+ _channel fserve $chr(124) set $chr(37) $+ advert $!readini fserve.ini # $+ _channel timed $chr(124) msg # $!fserve_advert( $chr(91) $chr(37) $+ advert $chr(93) $chr(91) $chr(37) $+ fserve $chr(93) ) $chr(124) unset $chr(37) $+ fserve $chr(37) $+ advert
}
}
else {
set %onjoin $readini fserve.ini [ [ # ] $+ _channel ] onjoin
if (%fserve != $null && %onjoin != $null) {
.notice $nick $fserve_advert( [ %onjoin ] [ %fserve ] )
}
}
unset %fserve %onjoin
}
alias ugly_titlebar_thing {
set %titlebar $fserve_version
set %info created [02.98-03.98] mIRC 5.3+
set %url http://nuncio.hypermart.net
set %pointer 1
:continue_titlebar0
if ($titlebar) {
titlebar $right($titlebar,$calc($len($titlebar) - 1))
set %delay 30
:delay_loop0
dec %delay 1
if (%delay > 0) { goto delay_loop0 }
goto continue_titlebar0
}
:continue_titlebar1
if (%pointer > $len(%titlebar)) { goto titlebar_complete1 }
titlebar $right(%titlebar,%pointer)
inc %pointer 1
set %delay 30 | :delay_loop1 | dec %delay 1 | if (%delay > 0) { goto delay_loop1 }
goto continue_titlebar1
:titlebar_complete1
set %delay 1000 | :delay_loop2 | dec %delay 1 | if (%delay > 0) { goto delay_loop2 }
set %pointer 1
:continue_titlebar2
if (%pointer > $len(%info)) { goto titlebar_complete2 }
titlebar %titlebar $right(%info,%pointer)
inc %pointer 1
set %delay 30 | :delay_loop3 | dec %delay 1 | if (%delay > 0) { goto delay_loop3 }
goto continue_titlebar2
:titlebar_complete2
set %delay 2000 | :delay_loop4 | dec %delay 1 | if (%delay > 0) { goto delay_loop4 }
set %pointer $len(%info)
:continue_titlebar3
if (%pointer < 1) { goto titlebar_complete3 }
titlebar %titlebar $right(%info,%pointer)
dec %pointer 1
set %delay 30 | :delay_loop5 | dec %delay 1 | if (%delay > 0) { goto delay_loop5 }
goto continue_titlebar3
:titlebar_complete3
titlebar %titlebar
set %delay 750 | :delay_loop6 | dec %delay 1 | if (%delay > 0) { goto delay_loop6 }
set %pointer 1
:continue_titlebar4
if (%pointer > $len(%url)) { goto titlebar_complete4 }
titlebar %titlebar $right(%url,%pointer)
inc %pointer 1
set %delay 30 | :delay_loop7 | dec %delay 1 | if (%delay > 0) { goto delay_loop7 }
goto continue_titlebar4
:titlebar_complete4
unset %titlebar %info %url %delay
}