; Phoenix FileServer for mIRC 6.0+ ; Atma version 0.99.20020820 ; Programmed by Correl J. Roush ; correlr@phoenixinquis.net ; www.phoenixinquis.net ; __________________________ ;/`````````````````````````` ; Dialogs dialog atma_config { title $Atma size -1 -1 224 129 option dbu tab "Basic Config", 1, 1 1 219 116 box "Fserv Limits", 7, 4 17 104 56, tab 1 text "Users", 8, 7 39 18 8, tab 1 edit $Atma(maxUSends), 13, 28 37 20 10, tab 1 right box "Ad Setup", 17, 111 17 108 56, tab 1 text "Show ad every", 18, 119 28 39 8, tab 1 edit $Atma(Interval), 19, 159 27 23 10, tab 1 right radio "Minutes", 20, 183 23 33 10, tab 1 radio "Seconds", 21, 183 32 34 10, tab 1 check "Respond to !list", 22, 116 61 50 10, tab 1 box "Server Info", 23, 4 73 215 20, tab 1 edit $Atma(InfoLine), 24, 7 80 209 10, tab 1 autohs check "Start file server on connect", 25, 10 98 79 10, tab 1 text "Sends", 10, 29 27 18 8, tab 1 text "Queues", 12, 52 27 20 8, tab 1 edit $Atma(MaxUQueues), 14, 51 37 20 10, tab 1 right edit $Atma(maxTQueues), 16, 51 48 20 10, tab 1 right edit $Atma(maxTSends), 15, 28 48 20 10, tab 1 right text "Total", 9, 7 49 18 8, tab 1 box "", 29, 142 91 77 21, tab 1 check "Enable FileServer", 30, 145 97 71 12, tab 1 push text "Sessions", 69, 75 27 23 8, tab 1 edit 1, 70, 74 37 20 10, tab 1 read right edit $Atma(maxUsers), 68, 74 48 20 10, tab 1 right check "Enable Channel Ads", 76, 115 45 59 10, tab 1 push text "Queue using", 87, 7 62 33 8, tab 1 combo 88, 43 60 60 37, tab 1 size drop button "Restart", 105, 180 45 30 11, disable tab 1 tab "Adv. Configuration", 2 check "FileServer Chat", 107, 7 19 50 10, tab 2 check "Channel Enforcer", 108, 7 29 55 10, tab 2 check "Respond to @find / @locator", 109, 7 39 87 10, tab 2 box "/dccallow Enforcer (where applicable)", 110, 104 17 115 37, tab 2 combo 111, 107 25 109 36, tab 2 size drop box "Minimum CPS", 112, 104 55 115 34, tab 2 check "Drop sends that have been going below", 113, 107 64 106 10, tab 2 edit $Atma(MinCPS), 114, 115 75 24 10, tab 2 right text "cps for", 115, 140 77 21 8, tab 2 edit $Atma(MinCPS.Secs), 116, 162 75 24 10, tab 2 right text "seconds.", 117, 187 77 25 8, tab 2 box "Maximum CPS", 118, 104 90 115 25, tab 2 check "Limit sends to a max of", 119, 107 101 66 10, tab 2 edit $Atma(MaxCPS), 120, 173 101 24 10, tab 2 right text "kb/s", 121, 198 103 18 8, tab 2 edit $Atma(@Find.Results), 129, 44 48 23 10, tab 2 right text "Limited to", 130, 17 49 25 8, tab 2 text "results", 131, 68 49 19 8, tab 2 box "Stats", 134, 4 59 98 56, tab 2 text "Leeched Files", 135, 7 67 41 8, tab 2 text "Leeched Bytes", 136, 7 76 41 8, tab 2 text "Record Speed", 137, 7 85 41 8, tab 2 text "Hits", 138, 7 94 41 7, tab 2 button "Reset", 139, 69 104 31 9, tab 2 edit "", 143, 49 65 50 9, tab 2 read autohs right edit "", 144, 49 74 50 9, tab 2 read autohs right edit "", 145, 49 84 50 9, tab 2 read autohs right edit "", 146, 49 94 50 9, tab 2 read autohs right text "Tempban lasts for", 147, 111 40 47 8, tab 2 edit $Atma(DCCAllowEnforcer.TempBan), 148, 159 39 28 10, tab 2 text "seconds.", 149, 188 40 26 8, tab 2 tab "Triggers", 3 combo 32, 7 25 60 42, tab 3 sort drop box "Trigger Configuration", 33, 4 17 215 73, tab 3 check "This trigger is enabled", 34, 72 26 72 8, disable tab 3 box "Channel Setup", 35, 150 22 66 65, tab 3 list 36, 153 29 60 35, disable tab 3 size button "Add", 37, 154 65 28 9, disable tab 3 check "All active channels", 39, 154 75 60 10, disable tab 3 button "Delete", 38, 185 65 28 9, disable tab 3 edit "", 40, 6 55 117 10, tab 3 read autohs button "...", 41, 127 55 20 9, disable tab 3 text "Root Directory", 42, 8 47 49 8, tab 3 edit "", 43, 6 76 117 10, tab 3 read autohs text "MOTD File", 44, 7 67 33 8, tab 3 button "...", 45, 127 76 20 9, disable tab 3 box "Trigger Style", 46, 4 90 66 27, tab 3 radio "Normal", 47, 7 97 30 10, tab 3 radio "CTCP", 48, 42 97 27 10, tab 3 box "QuickSearch Cache", 49, 71 90 148 27, tab 3 button "Add", 71, 7 37 28 9, tab 3 button "Rename", 72, 38 37 28 9, disable tab 3 button "Delete", 73, 69 37 28 9, disable tab 3 button "Unset", 74, 43 67 28 9, disable tab 3 button "Edit File", 75, 74 67 28 9, disable tab 3 check "Rebuild on mIRC startup", 127, 75 98 73 10, tab 3 button "Rebuild Now", 128, 175 97 41 11, tab 3 tab "FServ Access", 4 box "Access Permissions", 98, 4 36 215 79, tab 4 list 100, 7 47 182 65, tab 4 sort size button "Add", 101, 193 47 23 11, tab 4 button "Edit", 102, 193 60 23 11, tab 4 combo 103, 6 23 60 42, tab 4 size drop box "", 104, 4 17 215 19, tab 4 radio "Allowed Hosts", 132, 74 23 50 10, tab 4 radio "Denied Hosts", 133, 133 23 50 10, tab 4 button "Remove", 150, 193 73 23 11, tab 4 tab "Ad Style", 77 box "Style Preview", 54, 4 17 215 20, tab 77 box FormatString, 56, 4 38 215 39, tab 77 text "Format Preset:", 58, 7 46 37 8, tab 77 combo 59, 49 45 90 52, tab 77 size drop button "Save", 63, 140 45 25 9, tab 77 button "Delete", 64, 166 45 25 9, tab 77 button "Preview", 65, 192 45 25 9, tab 77 edit $Atma(FormatString), 57, 6 56 210 10, tab 77 autohs check "Always strip color (automatically done on mode +c channels)", 60, 7 66 180 10, tab 77 link "Click here for help on the formatstring parser", 55, 56 108 106 8, tab 77 edit The _/\tma FileServer includes the following variables for formatstring parsing: $crlf &Atma.Triggers &Atma.Users &Atma.Sends &Atma.Queues &Atma.InfoLine, 62, 5 80 212 26, tab 77 read multi text "Programmed by Correl J. Roush, 2002", 6, 1 122 93 8, disable link "http://www.phoenixinquis.net/", 27, 142 122 77 8 button "okcancel", 66, 99 121 38 8, hide ok cancel icon 106, 8 25 208 8 menu "&File", 122 item "E&xit", 123, 122, ok cancel menu "&Help", 124 item "&Atma Help", 125, 124 item "&mIRC Fserv Help", 126, 124 } on *:dialog:atma_config:init:0:{ did -c atma_config $iif($Atma(Interval.unit) == minutes,20,21) $iif($Atma(RespondToList),did -c atma_config 22) $iif($Atma(StartOnConnect),did -c atma_config 25) $iif($Atma(Active),did -c atma_config 30) $iif($Atma(FServChat),did -c atma_config 107) $iif($Atma(ChannelEnforcer),did -c atma_config 108) $iif($Atma(@Find),did -c atma_config 109) didtok $dname 111 44 Notify and cancel send,Tempban/cancel all sends/clear queues if ($Atma(DCCAllowEnforcer) == Notify) { did -c $dname 111 1 } if ($Atma(DCCAllowEnforcer) == Ban) { did -c $dname 111 2 } if ($Atma(MinCPS.Enabled)) { did -c $dname 113 did -e $dname 114,116 } if ($Atma(MaxCPS.Enabled)) { did -c $dname 119 did -e $dname 120 } updateStats did -c atma_config $iif($Atma(TriggerType) == Normal,47,48) $iif($Atma(QuickSearchRefreshOnStart),did -c atma_config 127) Atma.cfgTriggers did -c $dname 132 updateAccess $iif($nickComp(stripcolor),did -c atma_config 60) didtok $dname 88 44 Number Of Files,FileSize (MB) did -c $dname 88 $iif($Atma(QueueUsing) == FileCount,1,2) did $iif($Atma(Active),-b,-e) $dname 88 $iif($Atma(EnableAd),did -c $dname 76) did $iif($Atma(EnableAd),-e,-b) $dname 105 did -h $dname 106 did -g $dname 106 $formatstr_preview updateStyle } on *:dialog:atma_config:menu:125:Atma.Help on *:dialog:atma_config:menu:126:help /fserve on *:dialog:atma_config:sclick:1,2,3,4,77:{ did $iif($did == 77,-v,-h) $dname 106 } on *:dialog:atma_config:edit:*:{ $iif($did == 13,Atma maxUSends $did($dname,$did)) $iif($did == 14,Atma maxUQueues $did($dname,$did)) $iif($did == 15,Atma maxTSends $did($dname,$did)) $iif($did == 16,Atma maxTQueues $did($dname,$did)) $iif($did == 19,Atma Interval $did($dname,$did)) $iif($did == 24,Atma InfoLine $did($dname,$did)) $iif($did == 51,Atma QuickSearchRefresh.Interval $did($dname,$did)) $iif($did == 57,Atma FormatString $did($dname,$did)) $iif($did == 68,Atma maxUsers $did($dname,$did)) $iif($did == 129,Atma @Find.Results $did($dname,$did)) $iif($did == 114,Atma MinCPS $did($dname,$did)) $iif($did == 116,Atma MinCPS.Secs $did($dname,$did)) $iif($did == 120,Atma MaxCPS $did($dname,$did)) $iif($did == 148,Atma DCCAllowEnforcer.TempBan $did($dname,$did)) } on *:dialog:atma_config:sclick:20:Atma Interval.Unit minutes on *:dialog:atma_config:sclick:21:Atma Interval.Unit seconds on *:dialog:atma_config:sclick:22:Atma RespondToList $did($dname,$did).state on *:dialog:atma_config:sclick:25:Atma StartOnConnect $did($dname,$did).state on *:dialog:atma_config:sclick:26:Atma ClearQueuesOnStart $did($dname,$did).state on *:dialog:atma_config:sclick:76:{ Atma EnableAd $did($dname,$did).state $iif($Atma(EnableAd) && $Atma(Active),Atma.Activate,.timer_/\tma off) did $iif($Atma(EnableAd),-e,-b) $dname 105 } on *:dialog:atma_config:sclick:105:Atma.Activate on *:dialog:atma_config:sclick:88:Atma QueueUsing $iif($did($dname,$did).sel == 1,FileCount,FileSize) on *:dialog:atma_config:sclick:27:run http://www.phoenixinquis.net/ on *:dialog:atma_config:sclick:30:{ $iif($did($dname,$did).state,Atma.Activate,Atma.Deactivate) did $iif($Atma(Active),-c,-u) $dname 30 did $iif($Atma(Active),-b,-e) $dname 88 } on *:dialog:atma_config:sclick:107:Atma FServChat $did($dname,$did).state on *:dialog:atma_config:sclick:108:Atma ChannelEnforcer $did($dname,$did).state on *:dialog:atma_config:sclick:109:Atma @Find $did($dname,$did).state on *:dialog:atma_config:sclick:113:{ Atma MinCPS.Enabled $did($dname,$did).state .timer_/\tma.MinCPS $iif($Atma(MinCPS.Enabled),0 5 Atma.CheckMinCPS,off) } on *:dialog:atma_config:sclick:119:{ Atma MaxCPS.Enabled $did($dname,$did).state .dcc maxcps $iif($Atma(MaxCPS.Enabled),$calc($Atma(MaxCPS)*1000),0) } on *:dialog:atma_config:sclick:111:{ $iif($did($dname,$did).sel == 1,Atma DCCAllowEnforcer Notify, Atma DCCAllowEnforcer Ban) } on *:dialog:atma_config:sclick:139:{ hdel _/\tmaFS Hits hdel _/\tmaFS LeechedFiles hdel _/\tmaFS LeechedBytes hdel _/\tmaFS RecordSpeed updateStats hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } on *:dialog:atma_config:sclick:32:Atma.cfgTriggers $did($dname,$did).sel on *:dialog:atma_config:sclick:34:hadd -m _/\tmaFS Triggers. $+ $did($dname,32).seltext $did($dname,$did).state | hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " on *:dialog:atma_config:sclick:37:{ hadd -m _/\tmaFS Triggers. $+ $did($dname,32).seltext $+ .Channels $addtok($hget(_/\tmaFS,Triggers. $+ $did($dname,32).seltext $+ .Channels),$$?="Channel to Add?",44) did -r $dname 36 didtok $dname 36 44 $hget(_/\tmaFS,Triggers. $+ $did($dname,32).seltext $+ .Channels) hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } on *:dialog:atma_config:sclick:38:{ hadd -m _/\tmaFS Triggers. $+ $did($dname,32).seltext $+ .Channels $remtok($hget(_/\tmaFS,Triggers. $+ $did($dname,32).seltext $+ .Channels),$$did($dname,36).seltext,44) did -r $dname 36 didtok $dname 36 44 $hget(_/\tmaFS,Triggers. $+ $did($dname,32).seltext $+ .Channels) hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } on *:dialog:atma_config:sclick:39:{ hadd -m _/\tmaFS Triggers. $+ $did($dname,32).seltext $+ .AllChans $did($dname,$did).state var %action = $iif($did($dname,$did).state,-b,-e) did %action $dname 36 did %action $dname 37 did %action $dname 38 hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } on *:dialog:atma_config:sclick:71:{ var %NewTrigger = $?="What will the new trigger be?" $iif(!%NewTrigger,return) if ($istok($Atma.Triggers,%NewTrigger,5)) { _errorbox There already exists a trigger by this name. $crlf $+ Failed to create new trigger. return } var %NewFSRoot while (!%NewFSRoot) { set %NewFSRoot $sdir($mircdir,Select a directory to serve) } var %NewFSMOTD = $sfile($mircdir,Select a text file, Use as MOTD) hadd -m _/\tmaFS Triggers. $+ %NewTrigger 0 hadd -m _/\tmaFS Triggers. $+ %NewTrigger $+ .Root %NewFSRoot hadd -m _/\tmaFS Triggers. $+ %NewTrigger $+ .MOTD %NewFSMOTD did -a $dname 32 %NewTrigger Atma.cfgTriggers $findtok($didtok($dname,32,5),%NewTrigger,1,5) hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } on *:dialog:atma_config:sclick:72:{ var %NewTrigger = $?="What shall this trigger be renamed to?" $iif(!%NewTrigger,return) if ($istok($Atma.Triggers,%NewTrigger,5)) { _errorbox There already exists a trigger by this name. $crlf $+ Failed to rename trigger. return } var %counter = 1 while (%counter <= $hfind(_/\tmaFS,Triggers. $+ $did($dname,32).seltext $+ *,0,w)) { var %newEntry .echo -q $regex($hfind(_/\tmaFS,Triggers. $+ $did($dname,32).seltext $+ *,%counter,w),/^Triggers\.([^\.]*)(\..*)?/i) %newEntry = Triggers. $+ %NewTrigger $+ $regml(2) hadd -m _/\tmaFS %newEntry $hget(_/\tmaFS,$hfind(_/\tmaFS,Triggers. $+ $did($dname,32).seltext $+ *,%counter,w)) inc %counter } hdel -w _/\tmaFS Triggers. $+ $regml(1) $+ * Atma.cfgTriggers 1 Atma.cfgTriggers $findtok($didtok($dname,32,5),%NewTrigger,1,5) hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } on *:dialog:atma_config:sclick:73:{ $iif(!$did($dname,32).sel,return) $iif(!$?!="This will permanently delete the selected trigger. Do it anyway?",return) hdel -w _/\tmaFS Triggers. $+ $did($dname,32).seltext $+ * hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " Atma.cfgTriggers } on *:dialog:atma_config:sclick:74:{ hdel _/\tmaFS Triggers. $+ $did($dname,32).seltext $+ .MOTD did -r $dname 43 hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } on *:dialog:atma_config:sclick:75:$iif($hget(_/\tmaFS,Triggers. $+ $did($dname,32).seltext $+ .MOTD),run notepad.exe $ifmatch) on *:dialog:atma_config:sclick:41:{ var %NewDir while (!%NewDir) { %NewDir = $sdir($mircdir,Select a directory to serve) } hadd -m _/\tmaFS Triggers. $+ $did($dname,32).seltext $+ .Root %NewDir did -o $dname 40 1 %NewDir hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } on *:dialog:atma_config:sclick:45:{ var %NewMOTD = $sfile($mircdir,Select a text file,Use as MOTD) $iif(!%NewMOTD,return) hadd -m _/\tmaFS Triggers. $+ $did($dname,32).seltext $+ .MOTD %NewMOTD did -o $dname 43 1 %NewMOTD hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } on *:dialog:atma_config:sclick:47:Atma TriggerType Normal on *:dialog:atma_config:sclick:48:Atma TriggerType CTCP on *:dialog:atma_config:sclick:50:{ Atma QuickSearchRefresh $did($dname,$did).state did $iif($did($dname,$did).state,-e,-b) $dname 51 } on *:dialog:atma_config:sclick:127:Atma QuickSearchRefreshOnStart $did($dname,$did).state on *:dialog:atma_config:sclick:128:Atma.CacheTriggers on *:dialog:atma_config:sclick:103,132,133:updateAccess on *:dialog:atma_config:sclick:101:{ dialog -m atma_access atma_access did -c atma_access $iif($did($dname,132).state,22,23) } on *:dialog:atma_config:sclick:102:{ $iif(!$did(atma_config,100).sel,return) var %Scope = $did(atma_config,103).seltext set %Scope $iif(%Scope == Global Permissions,Access.,Trigger. $+ %Scope $+ .Access.) $+ $gettok($did(atma_config,100).seltext,1,32) dialog -m atma_access atma_access did -c atma_access $iif($did($dname,132).state,22,23) did -o atma_access 1 1 $gettok($did(atma_config,100).seltext,1,32) $iif($gettok($hget(_/\tmaFS,%Scope),2,32),did -c atma_access 4) did $iif($did(atma_access,4).state,-e,-b) atma_access 8,10,12,13 if ($gettok($hget(_/\tmaFS,%Scope),2,32)) { var %time = $ctime did -o atma_access 8 1 $int($calc(($ifmatch - %time) / 86400)) did -o atma_access 10 1 $int($calc((($ifmatch - %time) % 86400) / 3600)) did -o atma_access 12 1 $int($calc(((($ifmatch - %time) % 86400) % 3600) / 60)) did -o atma_access 13 1 $int($calc(((($ifmatch - %time) % 86400) % 3600) % 60)) } did -o atma_access 20 1 $gettok($hget(_/\tmaFS,%Scope),3-,32) } on *:dialog:atma_config:sclick:150:{ $iif(!$did(atma_config,100).sel,return) var %Scope = $did(atma_config,103).seltext $iif(%Scope == Global Permissions,set %Scope Global) Atma.Access.Remove $gettok($did(atma_config,100).seltext,1,32) %Scope updateAccess } on *:dialog:atma_config:sclick:55:^formatstr.help on *:dialog:atma_config:sclick:59:{ did -o $dname 57 1 $hget(_/\tmaFS.STP,$did($dname,$did).seltext) Atma FormatString $did($dname,57) did -g $dname 106 $formatstr_preview } on *:dialog:atma_config:sclick:60:{ nickComp stripcolor $did($dname,$did).state did -g $dname 106 $formatstr_preview } on *:dialog:atma_config:sclick:63:{ var %style = $?="Save style as (no spaces)" $iif(!%style,return) if ($chr(32) isin %style) { _errorbox Spaces are not allowed in style names | return } if ($hget(_/\tmaFS.STP,%style)) { $iif(!$?!="Overwrite existing style of this name?",return) } hadd _/\tmaFS.STP %style $did($dname,57) hsave -ob _/\tmaFS.STP " $+ $scriptdirAtma.stp $+ " updateStyle } on *:dialog:atma_config:sclick:64:{ if ($hget(_/\tmaFS.STP,0).item <= 1) { _errorbox You must leave at least one style | return } $iif(!$?!="Really delete the selected style (this cannot be undone)?",return) hdel _/\tmaFS.STP $did($dname,59).seltext hsave -ob _/\tmaFS.STP " $+ $scriptdirAtma.stp $+ " updateStyle } on *:dialog:atma_config:sclick:65:did -g $dname 106 $formatstr_preview dialog atma_access { title Atma Fserv Access size -1 -1 143 112 option dbu edit "", 1, 32 2 106 10 text "Hostmask", 2, 4 3 25 8 box "Expiration", 3, 1 33 141 38 check "User access expires in....", 4, 4 41 131 10 edit "0", 8, 7 53 17 10, disable right text "days", 9, 25 55 14 8 edit "0", 10, 42 53 17 10, disable right edit "0", 12, 72 53 17 10, disable right edit "0", 13, 104 53 17 10, disable right text "hrs", 14, 60 55 9 8 text "min", 15, 89 54 14 8 text "sec", 16, 122 54 13 8 box "Comment", 17, 1 73 141 23 button "OK", 18, 30 99 37 12, default ok button "Cancel", 19, 71 99 37 12, cancel edit "", 20, 4 82 134 11, autohs box "", 21, 1 15 141 17 radio "Access", 22, 23 21 30 9 radio "Deny", 23, 90 21 30 9 } on *:dialog:atma_access:sclick:4:did $iif($did($dname,$did).state,-e,-b) $dname 8,10,12,13 on *:dialog:atma_access:sclick:18:{ if ((*!*@* !iswm $did($dname,1)) || ($regex($did($dname,1),/\s/))) { _errorbox You did not enter a valid hostmask. Please enter a valid hostmask in the form *!*@* and try again. halt } Atma.Access.Add $did($dname,1) $iif($did(atma_config,103).seltext != Global Permissions,$ifmatch,Global) $iif($did($dname,22).state,Allow,Deny) $iif($did($dname,4).state,$calc($ctime + (($did($dname,8) * 86400) + ($did($dname,10) * 3600) + ($did($dname,12) * 60) + $did($dname,13))),0) $did($dname,20) updateAccess } dialog atma_queues { title "_/\tma Queue Management" size -1 -1 250 131 option dbu list 1, 2 21 123 94, size vsbar combo 2, 3 7 122 50, size drop box "Queue Info", 3, 131 3 117 114 text "Queue Slot #", 4, 135 14 37 8 edit "", 5, 174 13 27 10, read text "FileName", 6, 135 41 25 8 edit "", 7, 138 50 106 10, read autohs text "Size", 8, 181 41 16 8 edit "", 9, 198 39 46 10, read button "Clear this queue", 10, 137 67 105 10, disable button "Clear all queues for this user", 11, 137 79 105 10, disable button "Send this queue", 12, 137 91 105 10, disable button "Send all queues for this user", 13, 137 103 105 10, disable button "Clear All", 14, 138 119 49 10 button "Send All", 15, 192 119 49 10 button "OK/Cancel", 16, 218 3 30 9, hide ok cancel text "User", 17, 136 26 18 8 edit "", 18, 157 25 87 10, read button "^ Move Up ^", 19, 13 119 42 10 button "v Move Down v", 20, 59 119 42 10 } on *:dialog:atma_queues:init:0:{ updateQueues } on *:dialog:atma_queues:sclick:1:{ $iif($did($dname,$did).sel < 1,return) did -o $dname 5 1 $gettok($did($dname,$did).seltext,1,32) did -o $dname 18 1 $gettok($did($dname,$did).seltext,2,32) did -o $dname 7 1 $nopath($gettok($did($dname,$did).seltext,3-,32)) did -o $dname 9 1 $bytes($file($gettok($did($dname,$did).seltext,3-,32)).size,3).suf did -e $dname 10,11,12,13 } on *:dialog:atma_queues:sclick:10:{ write -dl $+ $did($dname,1).sel $scriptdirqueues.dat updateQueues } on *:dialog:atma_queues:sclick:11:{ Atma.ClearQueues $gettok($did($dname,1).seltext,2,32) updateQueues } on *:dialog:atma_queues:sclick:12:{ dcc send -c $gettok($did($dname,1).seltext,2,32) $gettok($did($dname,1).seltext,3-,32) write -dl $+ $did($dname,1).sel $scriptdirqueues.dat updateQueues } ; __________________________ ;/`````````````````````````` ; Menus menu menubar,status,query,nicklist,channel,@Atma { Atma FileServer .Configure: Atma .Manage Queues: dialog -m atma_queues atma_queues .Rebuild QuickSearch Cache: Atma.CacheTriggers .- .Preview Ad: echo -a $parse_formatstr(,$Atma(FormatString)) . $iif($chan,Show to $chan) : Atma.Advertise $chan .- .Reload: reload -rs $script .Unload: unload -rs $script } ; __________________________ ;/`````````````````````````` ; Remotes on *:load:{ Atma.createdefaultini } on *:start:{ if (!$ini($Atma.ini,Atma)) { echo 4 -s *ŻŻŻŻ Atma Fileserver INI entries not found, inserting defaults... Atma.createdefaultini } debug.print Loading atma-fserv.dat hmake _/\tmaFS 10 $iif($findfile($scriptdir,atma-fserv.dat,1),hload -b _/\tmaFS " $+ $ifmatch $+ ") hmake _/\tmaFS.Cache 1000 $iif($findfile($scriptdir,fscache.dat,1),hload -b _/\tmaFS.Cache " $+ $ifmatch $+ ") $iif($Atma(QuickSearchRefreshOnStart),Atma.CacheTriggers) hmake _/\tmaFS.STP 10 $iif($findfile($scriptdir,Atma.stp,1),hload -b _/\tmaFS.STP " $+ $ifmatch $+ ",Atma.createdefaultstp) } on *:connect:{ $iif($Atma(StartOnConnect),Atma.Activate) .timersys_/\tma.AuditAccess 0 5 Atma.Access.Audit } on *:text:*:#:{ if ($Atma(@Find) && (($1 == @find) || ($1 == @locator)) && $2-) { var %search = $replace($2-,$chr(32),*) var %search.results $Atma.QuickSearch(%search) .msg $nick _/\tmaFServ QuickSearch Results .msg $nick Found ( $+ %search.results $+ ) matches for %search $iif(%search.results,.msg $nick Displaying matche(s) 1 to $iif(%search.results <= $Atma(@Find.Results),$ifmatch,$Atma(@Find.Results))) var %counter = 1 while (%counter <= $iif(%search.results <= $Atma(@Find.Results),$ifmatch,$Atma(@Find.Results))) { var %search.result = $Atma.QuickSearch(%search,%counter) .msg $nick  $+ $gettok(%search.result,1,32)  -- $gettok(%search.result,2-,32) ( $+ $bytes($Atma.QuickSearch(%search,%counter).size).suf $+ ) inc %counter } .msg $nick Search Complete. return } if (($Atma(Active)) && ($1 == !list) && ($Atma(RespondToList))) { .notice $nick $parse_formatstr($chan,$Atma(FormatString)) | return } if ($istok($Atma.Triggers,$1-,5) && !$istok($Atma.Triggers($chan),$1-,5)) { .notice $nick The trigger ' $+ $1- $+ ' is not being served to $chan $+ . | return } if ((!$istok($Atma.Triggers($chan),$1-,5)) || ($Atma(TriggerType) != Normal)) { return } if (!$Atma(Active)) { .notice $nick The FileServer is not available at this time. Please try again later. | return } if ($fserv(0) >= $Atma(maxUsers)) { .notice $nick The FileServer is currently full. Please try again later. | return } if ($gettok($Atma.Access($address($nick,5),$1-),1,32) == DENIED) { .notice $nick $gettok($Atma.Access($address($nick,5),$1-),2-,32) | return } hadd _/\tmaFS Hits $calc($hget(_/\tmaFS,Hits) + 1) updateStats var %FSDir = " $+ $hget(_/\tmaFS,Triggers. $+ $1- $+ .Root) $+ " var %FSMOTD = " $+ $hget(_/\tmaFS,Triggers. $+ $1- $+ .MOTD) $+ " fserve $nick $Atma(maxTSends) %FSDir %FSMOTD hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } ctcp *:*:?:{ if ((!$istok($Atma.Triggers($chan),$1-,5)) || ($Atma(TriggerType) != CTCP)) { return } if (!$Atma(Active)) { .notice $nick The FileServer is not available at this time. Please try again later. | return } var %FSDir = " $+ $hget(_/\tmaFS,Triggers. $+ $1- $+ .Root) $+ " var %FSMOTD = " $+ $hget(_/\tmaFS,Triggers. $+ $1- $+ .MOTD) $+ " fserve $nick $Atma(maxTSends) %FSDir %FSMOTD } on *:open:!:{ msg =$nick -  $+ $Atma msg =$nick - Programmed by Correl J. Roush (correlr@phoenixinquis.net) 2002 msg =$nick - ______________________________________________________________ msg =$nick - $Atma(InfoLine) msg =$nick - msg =$nick - You may have up to $Atma(maxUSends) simultaneous file sends, and up to $Atma(maxUQueues) $iif($Atma(QueueUsing) == FileSize,MB worth of) queued files. msg =$nick - The FServ is limited to a maximum of $Atma(maxTSends) simultaneous file sends and $Atma(maxTQueues) $iif($Atma(QueueUsing) == FileSize,MB worth of) queued files. msg =$nick - $iif($Atma(FServChat),msg =$nick - ***FServ Chat is enabled; you may chat with other users on the fserv) $iif($Atma(ChannelEnforcer),msg =$nick - ***Channel Enforcer is enabled; parting the fserv's channels will result in your queues being cleared.) $iif($Atma(MaxCPS.Enabled),msg =$nick - ***MaxCPS is enabled; sends from this server will not exceed $Atma(MaxCPS) kb/s.) $iif($Atma(DCCAllowEnforcer) == ban,msg =$nick - ***DCCAllowEnforcer is enabled; failure to /dccallow $me $+  will result in your sends/queues being cleared and a $duration($Atma(DCCAllowEnforcer.TempBan)) temporary ban from the fserv.) halt } on *:serv:*:{ $iif($istok(cd dir ls read exit bye c s,$1,32),return) if ($1 == help) { msg =$nick - Help - $Atma if (!$2) { msg =$nick - The following commands are supported: msg =$nick - CD LS GET READ HELP EXIT BYE msg =$nick - SENDS QUEUES FIND WHOSONLINE msg =$nick - msg =$nick - Type help followed by a command to get more info on that command. } elseif ($2 == CD) { msg =$nick - CD  - Change to the specified directory msg =$nick - msg =$nick - Used to move through the path structure of the fileserver. msg =$nick - msg =$nick - Examples: msg =$nick - CD TextFiles (Changes directory to the TextFiles folder) msg =$nick - CD .. (Moves back one directory) } elseif (($2 == DIR) || ($2 == LS)) { msg =$nick - LS [-b|k] [-#] or DIR [-b|k] [-#] [/w] - List the contents of the current directory msg =$nick - msg =$nick - Lists the name and size of each file in the current directory. msg =$nick - The /w switch forces a wide listing. (DIR only, LS is always a wide listing) msg =$nick - The [-b|k] selects bytes or k's. msg =$nick - The [-#] specifies the number of files on each line in a horizontal listing. } elseif ($2 == GET) { msg =$nick - GET  - asks the fileserver to DCC Send the specified file. } elseif ($2 == READ) { msg =$nick - READ [-numlines]  - reads the specified text file. msg =$nick - msg =$nick - The user will be sent a default of 20 lines and then prompted whether to continue listing. msg =$nick - The -numlines option changes the default number of lines to a value between 5 and 50. } elseif ($2 == HELP) { msg =$nick - HELP [command] - displays FServ command help msg =$nick - msg =$nick - [command] is optional, use it to display help on a specific command. msg =$nick - if [command] is not given, HELP will display a listing of all supported commands. } elseif (($2 == EXIT) || ($2 == BYE)) { msg =$nick - EXIT or BYE - closes the FServ session. } elseif ($2 == SENDS) { msg =$nick - SENDS - Lists the server's active DCC Sends } elseif ($2 == QUEUES) { msg =$nick - QUEUES - Lists the server's send queue } elseif ($2 == FIND) { msg =$nick - FIND  - Search for files on the fileserver } elseif ($2 == WHOSONLINE) { msg =$nick - WHOSONLINE - Lists other people currently on the fserv. msg =$nick - msg =$nick - This command only shows a list of users when FileServer chat is enabled. } else { msg =$nick - No help available for the command $2 } msg =$nick - End of Help halt } if ($1 == get) { if (!$2) { msg =$nick No filename specified. halt } if (!$exists(" $+ $cd $+ \ $+ $2- $+ ")) { msg =$nick File does not exist. Check your spelling. halt } Atma.SendFile $nick " $+ $cd $+ \ $+ $2- $+ " halt } if ($1- == sends) { var %counter = 1 msg =$nick There are $send(0) sends in progress while (%counter <= $send(0)) { msg =$nick  $+ %counter $+ . - $send(%counter) is recieving $send(%counter).file ( $+ $send(%counter).pc $+ % of $bytes($send(%counter).size).suf $+ , Approx. $duration($round($calc(($send(%counter).size - $send(%counter).sent) / $send(%counter).cps))) remaining) inc %counter } halt } if ($1- == queues) { var %counter = 1 msg =$nick There are $iif($lines($scriptdirqueues.dat),$ifmatch,0) send(s) waiting in the queue while (%counter <= $iif($lines($scriptdirqueues.dat),$ifmatch,0)) { msg =$nick  $+ %counter $+ . - $gettok($read($scriptdirqueues.dat,%counter),1,32) queued $nopath($gettok($read($scriptdirqueues.dat,%counter),2-,32)) ( $+ $bytes($file($gettok($read($scriptdirqueues.dat,%counter),2-,32)).size).suf $+ ) inc %counter } halt } if ($1 == find) { if (!$2) { msg =$nick No search criteria was specified | halt } var %search = $replace($2-,$chr(32),*) var %search.results $Atma.QuickSearch(%search) .msg =$nick QuickSearch Results .msg =$nick Found ( $+ %search.results $+ ) matches for %search var %counter = 1 while (%counter <= %search.results) { var %search.result = $Atma.QuickSearch(%search,%counter) .msg =$nick  $+ $gettok(%search.result,1,32)  -- $gettok(%search.result,2-,32) ( $+ $bytes($Atma.QuickSearch(%search,%counter).size).suf $+ ) inc %counter } .msg =$nick Search Complete. halt } if ($1- == whosonline) { if ($Atma(FServChat)) { var %counter = 1 msg =$nick - There are $fserv(0) user(s) currently on the fserv while (%counter <= $fserv(0)) { msg =$nick - $fserv(%counter) inc %counter } msg =$nick End of list. } else { msg =$nick FServ Chat is not enabled. } halt } if ($Atma(FServChat)) { var %counter = 1 while (%counter <= $fserv(0)) { $iif($fserv(%counter) != $nick,msg = $+ $fserv(%counter) ( $+ $nick $+ ) $1-) inc %counter } halt } msg =$nick - " $+ $1 $+ " is not a recognized command. Type help for a list of available commands. halt } on *:filesent:*:{ var %sendwindow %counter = 1 while (%counter <= $send($nick,0)) { $iif($send($nick,%counter).path $+ $send($nick,%counter).file == $filename,set %sendwindow %counter) inc %counter } hadd _/\tmaFS LeechedFiles $calc($hget(_/\tmaFS,LeechedFiles) + 1) hadd _/\tmaFS LeechedBytes $calc($hget(_/\tmaFS,LeechedBytes) + $send($nick,%sendwindow).sent) $iif($iif($gettok($hget(_/\tmaFS,RecordSpeed),2,32),$ifmatch,0) < $send($nick,%sendwindow).cps,hadd _/\tmaFS RecordSpeed $nick $send($nick,%sendwindow).cps) updateStats .timer 1 1 Atma.ProcessQueues .timer_/\tma.CheckMinCPS.Terminate off hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } on *:sendfail:*:{ .timer 1 1 Atma.ProcessQueues .timer_/\tma.CheckMinCPS.Terminate off } on *:part:*:{ if (($comchan($nick,0) <= 1) && $Atma(ChannelEnforcer) && $Atma.Queue($nick).Count) { .notice $nick [FSERV NOTICE] You no longer share a common channel with the fserv; All waiting queues have been cleared [ $+ $Atma Channel Enforcer] Atma.ClearQueues $nick } } on *:snotice:*The user * is not accepting DCC sends of filetype*:{ var %filename = $send($3,$send($3,0)).file close -s $send($3,0) $3 $iif($fserv($3),msg = $+ $3,.notice $3) Your send of %filename was BLOCKED by the IRC server. In order to recieve files of this type, you must first type /dccallow $me $+ , then you will be able to download the file. if ($Atma(DCCAllowEnforcer) == Ban) { close -sf $3 Atma.ClearQueues $3 Atma.Access.Add $address($3,9) Global Deny $calc($ctime + $Atma(DCCAllowEnforcer.TempBan)) DCCAllow Enforcement TempBan .notice $3 Because you did not comply with this fserv's DCCALLOW rule, your sends and queues have been cleared, and you have been globally banned from this fserv for a duration of $duration($Atma(DCCAllowEnforcer.TempBan)) } } raw 401:*:{ ; Ahnold may be back, but his queues won't be waiting for him ;d close -s $2 Atma.ClearQueues $2 } ; __________________________ ;/`````````````````````````` ; Aliases alias Atma.ver { return 0.992.20021002 } alias -l Atma.ini { return $iif($_Sylver.ini,$_Sylver.ini,Sylver.ini) } alias Atma { if (!$isid) { if (!$1) { dialog -m atma_config atma_config } else { $iif($2,writeini $Atma.ini Atma $1 $2-,remini $Atma.ini Atma $1) } } else { $iif(!$1,return _/\tma FileServer Build $Atma.ver) return $readini($Atma.ini,Atma,$1) } } alias Atma.Help { run $scriptdirAtma-Fserv.hlp } alias Atma.createdefaultini { remini $Atma.ini Atma writeini $Atma.ini Atma InfoLine $Atma writeini $Atma.ini Atma maxUSends 1 writeini $Atma.ini Atma maxUQueues 20 writeini $Atma.ini Atma maxTSends 3 writeini $Atma.ini Atma maxTQueues 99 writeini $Atma.ini Atma maxUsers 10 writeini $Atma.ini Atma QueueUsing FileCount writeini $Atma.ini Atma Interval 30 writeini $Atma.ini Atma Interval.unit minutes writeini $Atma.ini Atma RespondToList 1 writeini $Atma.ini Atma EnableAd 1 writeini $Atma.ini Atma StartOnConnect 1 writeini $Atma.ini Atma FServChat 1 writeini $Atma.ini Atma ChannelEnforcer 1 writeini $Atma.ini Atma @Find 1 writeini $Atma.ini Atma @Find.Results 5 writeini $Atma.ini Atma DCCAllowEnforcer Notify writeini $Atma.ini Atma DCCAllowEnforcer.TempBan 300 writeini $Atma.ini Atma MinCPS.Enabled 0 writeini $Atma.ini Atma MinCPS 6 writeini $Atma.ini Atma MinCPS.secs 5 writeini $Atma.ini Atma MaxCPS.Enabled 0 writeini $Atma.ini Atma MaxCPS 20 writeini $Atma.ini Atma TriggerType Normal writeini $Atma.ini Atma QuickSearchRefreshOnStart 0 writeini $Atma.ini Atma FormatString &b_/\&b&c04tma&c&bFServ&b(Triggers&b[&b &c05&Atma.Triggers&c &b]&b Hits&b[&b &c05&Atma.Hits&c &b]&b Users&b[&b &c05&Atma.Users&c &b]&b Sends&b[&b &c05&Atma.Sends&c &b]&b Queues&b[&b &c05&Atma.Queues&c &b]&b Leeched&b[&b &c05&Atma.LeechedBytes&c in &c05&Atma.LeechedFiles&c files &b]&b Record Speed&b[&b &c05&Atma.RecordSpeed&c &b]&b InfoLine&b[&b &c05&Atma.InfoLine&c &b]&b) } alias -l Atma.createdefaultstp { $iif($hget(_/\tmaFS.STP),hfree _/\tmaFS.STP) hmake _/\tmaFS.STP 10 hadd _/\tmaFS.STP Atma_Short &b_/\&b&c04tma&c&bFServ&b(Triggers&b[&b &c05&Atma.Triggers&c &b]&b Users&b[&b &c05&Atma.Users&c &b]&b Sends&b[&b &c05&Atma.Sends&c &b]&b Queues&b[&b &c05&Atma.Queues&c &b]&b InfoLine&b[&b &c05&Atma.InfoLine&c &b]&b) hadd _/\tmaFS.STP Atma_Long &b_/\&b&c04tma&c&bFServ&b(Triggers&b[&b &c05&Atma.Triggers&c &b]&b Hits&b[&b &c05&Atma.Hits&c &b]&b Users&b[&b &c05&Atma.Users&c &b]&b Sends&b[&b &c05&Atma.Sends&c &b]&b Queues&b[&b &c05&Atma.Queues&c &b]&b Leeched&b[&b &c05&Atma.LeechedBytes&c in &c05&Atma.LeechedFiles&c files &b]&b Record Speed&b[&b &c05&Atma.RecordSpeed&c &b]&b InfoLine&b[&b &c05&Atma.InfoLine&c &b]&b) hsave -ob _/\tmaFS.STP " $+ $scriptdirAtma.stp $+ " } alias Atma.Activate { writeini $Atma.ini Atma Active 1 $iif($exists($scriptdirqueues.dat),remove $scriptdirqueues.dat) if ($Atma(EnableAd)) { .timer_/\tma 0 $iif($Atma(Interval.unit) == seconds,$Atma(Interval),$calc($Atma(Interval) * 60)) Atma.Advertise Atma.Advertise } if ($Atma(MinCPS.Enabled)) { .timer_/\tma.MinCPS 0 5 Atma.CheckMinCPS } } alias Atma.Deactivate { $iif(!$input(This will halt the fserv and clear all waiting queues. Shut down anyway?,264,$Atma),return) writeini $Atma.ini Atma Active 0 .timer_/\tma* off $iif($exists($scriptdirqueues.dat),remove $scriptdirqueues.dat) } alias Atma.Sends { return $iif($1,$send($1,0),$send(0)) } alias Atma.Users.Count { return $fserv(0) } alias Atma.Triggers { var %Atma.Triggers var %counter = 1 while (%counter <= $hget(_/\tmaFS,0).item) { if ($regex($hget(_/\tmaFS,%counter).item,/^Triggers\.([^\.]*)$/i)) { if ($1) { if ($hget(_/\tmaFS,Triggers. $+ $regml(1) $+ .AllChans) || $istok($hget(_/\tmaFS,Triggers. $+ $regml(1) $+ .Channels),$1,44)) { $iif($hget(_/\tmaFS,Triggers. $+ $regml(1)),%Atma.Triggers = $addtok(%Atma.Triggers,$regml(1),5)) } } else { %Atma.Triggers = $addtok(%Atma.Triggers,$regml(1),5) } } inc %counter } $iif($prop != Formatted,return %Atma.Triggers) var %Atma.Triggers.Formatted = $gettok(%Atma.Triggers,1,5) $iif(%Atma.Triggers.Formatted && ($Atma(TriggerType) == CTCP),%Atma.Triggers.Formatted = /ctcp $me %Atma.Triggers.Formatted) %counter = 2 while (%counter <= $numtok(%Atma.Triggers,5)) { if ($Atma(TriggerType) == Normal) { %Atma.Triggers.Formatted = %Atma.Triggers.Formatted & $gettok(%Atma.Triggers,%counter,5) } else { %Atma.Triggers.Formatted = %Atma.Triggers.Formatted & /ctcp $me $gettok(%Atma.Triggers,%counter,5) } inc %counter } return %Atma.Triggers.Formatted } alias Atma.Advertise { if ($1) { $iif($Atma.Triggers($1),msg $1 $parse_formatstr($1,$Atma(FormatString))) return } var %counter = 1 while (%counter <= $chan(0)) { if ($Atma.Triggers($chan(%counter))) { msg $chan(%counter) $parse_formatstr($chan(%counter),$Atma(FormatString)) } inc %counter } } alias -l Atma.cfgTriggers { var %action = $iif($Atma.Triggers,-e,-b) did -r atma_config 32,103 did -r atma_config 40 did -r atma_config 43 did -r atma_config 36 $iif($Atma.Triggers,didtok atma_config 32 5 $Atma.Triggers) didtok atma_config 103 5 Global Permissions $iif($Atma.Triggers,didtok atma_config 103 5 $didtok(atma_config,32,5)) did %action atma_config 34 did %action atma_config 36 did %action atma_config 37 did %action atma_config 38 did %action atma_config 39 did %action atma_config 41 did %action atma_config 45 did %action atma_config 72 did %action atma_config 73 did %action atma_config 74 did %action atma_config 75 if ($Atma.Triggers) { did -c atma_config 32 $iif($1,$1,1) did -c atma_config 103 $iif($1,$calc($1 + 1),1) var %Trigger = $did(atma_config,32).seltext did $iif($hget(_/\tmaFS,Triggers. $+ %Trigger),-c,-u) atma_config 34 did -o atma_config 40 1 $hget(_/\tmaFS,Triggers. $+ %Trigger $+ .Root) did -o atma_config 43 1 $hget(_/\tmaFS,Triggers. $+ %Trigger $+ .MOTD) didtok atma_config 36 44 $hget(_/\tmaFS,Triggers. $+ %Trigger $+ .Channels) did $iif($hget(_/\tmaFS,Triggers. $+ %Trigger $+ .AllChans),-c,-u) atma_config 39 var %action = $iif($hget(_/\tmaFS,Triggers. $+ %Trigger $+ .AllChans),-b,-e) did %action atma_config 36 did %action atma_config 37 did %action atma_config 38 hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } else { did -c atma_config 103 1 } } alias -l updateStats { $iif(!$dialog(atma_config),return) did -o atma_config 143 1 $iif($hget(_/\tmaFS,LeechedFiles),$ifmatch,0) did -o atma_config 144 1 $iif($hget(_/\tmaFS,LeechedBytes),$bytes($ifmatch).suf ( $+ $ifmatch bytes),0 bytes) did -o atma_config 145 1 $iif($hget(_/\tmaFS,RecordSpeed),$round($calc($gettok($ifmatch,2,32) / 1024),2) $+ kb/s by $gettok($ifmatch,1,32),0kb/s) did -o atma_config 146 1 $iif($hget(_/\tmaFS,Hits),$ifmatch,0) } alias -l updateAccess { var %Scope = $did(atma_config,103).seltext did -r atma_config 100 $iif(%Scope == Global Permissions,set %Scope Access.,set %Scope Triggers. $+ %Scope $+ .Access.) var %counter = 1 while (%counter <= $hfind(_/\tmaFS,%Scope $+ *,0,w)) { if ($gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%Scope $+ *,%counter,w)),1,32) == $iif($did(atma_config,132).state,Allow,Deny)) { .echo -q $regex($hfind(_/\tmaFS,%Scope $+ *,%counter,w),/Access.(.*)$/) did -a atma_config 100 $regml(1) ( $+ $iif($gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%Scope $+ *,%counter,w)),2,32),$asctime($ifmatch),Never Expires) $+ ) $gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%Scope $+ *,%counter,w)),3-,32) } inc %counter } } alias -l updateStyle { did -r atma_config 59 var %counter = 1 while (%counter <= $hget(_/\tmaFS.STP,0).item) { did -a atma_config 59 $hget(_/\tmaFS.STP,%counter).item inc %counter } did -c atma_config 59 $findtok($didtok(atma_config,59,5),$hfind(_/\tmaFS.STP,$did(atma_config,57),1).data,1,5) } alias -l updateQueues { var %dropdown did -r atma_queues 1,2 if ($lines($scriptdirqueues.dat)) { var %counter = 1 while (%counter <= $lines($scriptdirqueues.dat)) { %dropdown = $addtok(%dropdown,$gettok($read($scriptdirqueues.dat,%counter),1,32),5) did -a atma_queues 1 %counter $gettok($read($scriptdirqueues.dat,%counter),1,32) $gettok($read($scriptdirqueues.dat,%counter),2-,32) inc %counter } } didtok atma_queues 2 5 All Users $+ $chr(5) $+ %dropdown did -c atma_queues 2 1 } alias Atma.SendFile { ;Atma.Sendfile $nick $file $iif(!$1 || !$2-,return) if ($Atma.Sends >= $Atma(maxTSends)) { Atma.Queue $1 $2- return } if ($Atma.Sends($1) >= $Atma(maxUSends)) { Atma.Queue $1 $2- return } .dcc maxcps $iif($Atma(MaxCPS.Enabled),$calc($Atma(MaxCPS)*1000),0) dcc send -c $1 $2- } alias Atma.Queue { $iif($hget(_/\tmaFS.Queues),hfree _/\tmaFS.Queues) hmake _/\tmaFS.Queues 10 var %counter = 1 while (%counter <= $iif($lines($scriptdirqueues.dat),$ifmatch,0)) { hadd _/\tmaFS.Queues %counter $read($scriptdirqueues.dat,%counter) inc %counter } if ($isid) { var %regex = /^ $+ $1 /i if ($Atma(QueueUsing) == FileCount) { if ($2) { return $hget(_/\tmaFS.Queues,$hfind(_/\tmaFS.Queues,%regex,$2,r).data) } else { return $hfind(_/\tmaFS.Queues,%regex,0,r).data } } else { if ($2) { return $hget(_/\tmaFS.Queues,$hfind(_/\tmaFS.Queues,%regex,$2,r).data) } else { var %QueuesMB = 0 var %counter = 1 while (%counter <= $hfind(_/\tmaFS.Queues,%regex,0,r).data) { inc %QueuesMB $bytes($file($gettok($hget(_/\tmaFS.Queues,$hfind(_/\tmaFS.Queues,%regex,%counter,r).data),2-,32)).size,m) inc %counter } return %QueuesMB } } } else { Atma.AddQueue $1 $2- } } alias -l Atma.AddQueue { $iif(!$1 || !$2-,return) var %regex = /^ $+ $1 $replace($2-,\,\\) $+ $ $+ /i if ($hfind(_/\tmaFS.Queues,%regex,0,r).data) { msg =$nick You have already queued the file $2- } else { if ($Atma.Queue($1).Count > $Atma(maxTQueues)) { msg =$nick The FServ queue limit has been reached. Wait for some sends to finish, then try again. return } if ($Atma.Queue($1).Count > $Atma(maxUQueues)) { msg =$nick You have exceeded your maximum queue limit. Wait for some of your sends to finish, then try again. return } write $scriptdirqueues.dat $1 $2- msg =$nick Your file ( $+ $nopath($2-) $+ ) has been queued into slot $lines($scriptdirqueues.dat) } } alias Atma.ProcessQueues { $iif($Atma.Sends >= $Atma(maxTSends),return) $iif(!$lines($scriptdirqueues.dat),return) $iif($Atma.Sends($gettok($read($scriptdirqueues.dat,1),1,32)) >= $Atma(maxUSends),return) dcc send -c $read($scriptdirqueues.dat,1) write -dl1 $scriptdirqueues.dat } alias -l Atma.ClearQueues { echo -s clearing user queues ( $1 ) while ($read($scriptdirqueues.dat,w,$1 *)) { echo -s Clearing queue $read($scriptdirqueues.dat,$readn) write -dl$readn $scriptdirqueues.dat } echo -s done } alias -l RelativePath { var %regex = /^ $+ $replace($1,\,\\) $+ (.*?)$/ var %relativepath .echo -q $regex(relpath,$2,%regex) debug.print $lower(\ $+ $regml(relpath,1)) return $lower(\ $+ $replace($regml(relpath,1),$chr(32),$chr(5))) } alias -l Atma.CacheTriggers { window -doC @Atma 1 1 300 200 $iif($hget(_/\tmaFS.Cache),hfree _/\tmaFS.Cache) hmake _/\tmaFS.Cache 1000 $iif(!$Atma.Triggers,return) echo -s AtmaFS: Caching FServ files... var %counter = 1 while (%counter <= $numtok($Atma.Triggers,5)) { echo -s $gettok($Atma.Triggers,%counter,5) -- Cached $findfile($hget(_/\tmaFS,Triggers. $+ $gettok($Atma.Triggers,%counter,5) $+ .Root),*.*,0,hadd _/\tmaFS.Cache $gettok($Atma.Triggers,%counter,5) $+ $chr(5) $+ $RelativePath($hget(_/\tmaFS,Triggers. $+ $gettok($Atma.Triggers,%counter,5) $+ .Root),$1-) $file($1-).size) files inc %counter } hsave -ob _/\tmaFS.Cache " $+ $scriptdirfscache.dat $+ " echo -s Finished caching FServ files. window -c @Atma } alias Atma.QuickSearch { $iif(!$1,return 0) var %regex = /^.*? $+ $lower($replace($1,\,\\,.,\.,?,.,*,.*?,[,\[,],\])) $+ [^\\]*?$/ return $iif($2 && ($prop == size),$hget(_/\tmaFS.Cache,$hfind(_/\tmaFS.Cache,%regex,$iif($2,$2,0),r)),$replace($hfind(_/\tmaFS.Cache,%regex,$iif($2,$2,0),r),$chr(5),$chr(32))) } alias -l formatstr_preview { ;modded considerably from ZeeG's $xd.p previewing alias in xServ var %prv = Atma.bmp var %prvstr = $parse_formatstr(,$did(atma_config,57)) window -phf @atma_preview 0 0 416 16 $iif(%prvstr,drawtext -bpc @atma_preview $colour(normal) $colour(background) Verdana -7 1 1 416 16 %prvstr) drawsave @atma_preview %prv window -c @atma_preview return %prv } alias -l Atma.CheckMinCPS { $iif(!$send(0),return) $iif($timer(_/\tma.CheckMinCPS.Terminate),return) var %counter = 1 while (%counter <= $send(0)) { if ($send(%counter).cps < $Atma(MinCPS)) { .timer_/\tma.CheckMinCPS.Terminate 1 $Atma(MinCPS.Secs) Atma.CheckMinCPS.Terminate %counter return } inc %counter } } alias -l Atma.CheckMinCPS.Terminate { if ($send($1).cps < $Atma(MinCPS)) { .notice $send($1) Your send of $send($1).file has been canceled because the bytes per second dropped below the server minimum of $Atma(MinCPS) for a duration of $Atma(MinCPS.Secs) seconds. close -s $+ $1 } } alias Atma.Access { $iif(!$1,return) $iif(!$istok($Atma.Triggers,$2,5),return) var %Trig.AllowList = 0 var %Trig.Allowed = 0 var %regex = /^Triggers. $+ $2 $+ .Access.(.*?)$/ var %counter = 1 while (%counter <= $hfind(_/\tmaFS,%regex,0,r)) { .echo -q $regex($hfind(_/\tmaFS,%regex,%counter,r),%regex) var %matchhost = $regml(1) if ((%matchhost iswm $1) && ($gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%regex,%counter,r)),1,32) == DENY)) { return DENIED You are banned from using this trigger. Reason:( $gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%regex,%counter,r)),3-,32) ) (Ban Expires: $iif($gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%regex,%counter,r)),2,32),$asctime($ifmatch) / Current time = $asctime($ctime),Never) ) } if ($gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%regex,%counter,r)),1,32) == ALLOW) { %Trig.AllowList = 1 $iif(%matchhost iswm $1, %Trig.Allowed = 1) } inc %counter } var %Global.AllowList = 0 var %Global.Allowed = 0 var %regex = /^Access.(.*?)$/ var %counter = 1 while (%counter <= $hfind(_/\tmaFS,%regex,0,r)) { .echo -q $regex($hfind(_/\tmaFS,%regex,%counter,r),%regex) var %matchhost = $regml(1) if ((%matchhost iswm $1) && ($gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%regex,%counter,r)),1,32) == DENY)) { return DENIED You are banned from using this FileServer. Reason:( $gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%regex,%counter,r)),3-,32) ) (Ban Expires: $iif($gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%regex,%counter,r)),2,32),$asctime($ifmatch) / Current time = $asctime($ctime),Never) ) } if ($gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%regex,%counter,r)),1,32) == ALLOW) { %Global.AllowList = 1 $iif(%matchhost iswm $1, %Global.Allowed = 1) } inc %counter } if (%Trig.AllowList || %Global.AllowList) { $iif(%Trig.AllowList && %Trig.Allowed,return ALLOWED) $iif(%Global.AllowList && %Global.Allowed,return ALLOWED) return DENIED You do not have permission to access this exclusive $iif(%Global.AllowList,FileServer.,trigger.) } else { return ALLOWED } } alias Atma.Access.Add { var %Scope = $iif($2 != Global,Triggers. $+ $2 $+ .Access.,Access.) hadd _/\tmaFS %Scope $+ $1 $3- hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } alias -l Atma.Access.Remove { var %Scope = $iif($2 != Global,Triggers. $+ $2 $+ .Access.,Access.) hdel _/\tmaFS %Scope $+ $1 hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } alias -l Atma.Access.Audit { var %regex = /^(Triggers\..*?\.)?Access.(.*?)$/ var %counter = 1 while (%counter <= $hfind(_/\tmaFS,%regex,0,r)) { .echo -q $regex($hfind(_/\tmaFS,%regex,%counter,r),%regex) if (*!*@* iswm $regml($regml(0))) { var %expires = $gettok($hget(_/\tmaFS,$hfind(_/\tmaFS,%regex,%counter,r)),2,32) if (%expires && (%expires < $ctime)) { debug.print PERMISSION $hfind(_/\tmaFS,%regex,%counter,r) EXPIRED, PURGED hdel _/\tmaFS $hfind(_/\tmaFS,%regex,%counter,r) } } inc %counter } hsave -ob _/\tmaFS " $+ $scriptdiratma-fserv.dat $+ " } alias -l _errorbox .echo -q $input($$1-,260,$Atma) alias -l debug.print $iif($window(@Atma),aline @Atma $$1-)