This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

looking for help with fserv script for eggdrop 1.8.4

Requests for complete scripts or modifications/fixes for scripts you didn't write. Response not guaranteed, and no thread bumping!
Post Reply
s
str8up
Voice
Posts: 3
Joined: Thu May 09, 2019 12:31 pm

looking for help with fserv script for eggdrop 1.8.4

Post by str8up »

hello everyone ive downloaded a fserv script i got it set up to best as i could
the fserv add works great and thats all that seems to work..when people type my trigger absolutely nothing happens.theres no contact info for the creator
here is the script https://paste.ubuntu.com/p/sWXP5yc9Dz/

Code: Select all

#!/usr/bin/tclsh
############################################################################
# Title: FSERV script
# HomePage: http://www.ofloo.net/
# Mail: support[at]ofloo.net
############################################################################
# Description: 
#   - Mirc like fserv script with most of the mirc features included still
#     working on some of the features.
#   - Current command list "pwd, whoami, get, ls, list, dir, help, credit,
#     cd, cd .."
#   - Channel commands !list, !who (owner command), and your fserv triggers.
# Notes: 
#   - This is a pre release.
#   - Known bug if the users 2 users or more start a dcc chat instantly 
#     one after an ohter the first user could have the same nick, on whoami
#     this also affects dccsend so if they leave like 1 second or more 
#     between a channel trigger then all works just fine
# ToDo:
#   - Create queue system.
#   - Fix the nick bug witch is minimal but still.
#   - Create expanded timers and settings.
#   - Create more commands.
# Install:
#   - source scripts/fserv.tcl > eggdrop.conf
#   - set the settings below
############################################################################

############################################################################
# SETTINGS

##### Transfer module this module is standart and can be set in your eggdrop.conf as well

loadmodule transfer

# Max downloads for each user
set max-dloads 1

# Dcc blocksize set to 0 for turbo dcc 
set dcc-block 0

# Disable this if your using this script i don't recommend it precaching files 
set copy-to-tmp 0

# Xfer time out inseconds
set xfer-timeout 30

# Script settings 

# Set dcc port
set fserv(port) "4000"

# Set serv channel, this channel can not be a dynamic channel.
set fserv(serv) "#playersclub"

# Bind triggers chan, ctcp, query, list cmd
set fserv(chan) "!fserv"
set fserv(ctcp) "fserv"
set fserv(msg) ".fserv"
set fserv(list) "!list"

# Set what sort of trigger you will be using choose: 0=chan, 1=ctcp, 2=query
set status(type) "0"

# Enable/disable logon msg
set fserv(logon) "1"

# Enable channel timer
set fserv(timer) "1"

# Enable list command
set fserv(lists) "1"

# Fserv directory do not use \\ and end always with /
set homepath "/media/dave/F48A30248A2FE23A/STR8 GOODS/"

##### Colors

# Color channel and query colors
set colors(0) "\00314"
set colors(1) "\0034"

# Color: dir, file
set colors(2) "\00312"
set colors(3) "\00315"

# Color: <sepe>, <titl>, <body>
set colors(4) "\00314"
set colors(5) "\0034"
set colors(6) "\00315"

# Color: commen errors
set colors(7) "\0034"

# Color: timer
set colors(8) "\00314"
set colors(9) "\0034"

##### Messages

# Dcc error msg
set ::dccreturnmsg(0) "Sending file.."
set ::dccreturnmsg(1) "To many connections at the moment."
set ::dccreturnmsg(2) "Can't open socket for transfer."
set ::dccreturnmsg(3) "The requested file does not exist."
set ::dccreturnmsg(4) "File was put in queue."
set ::dccreturnmsg(5) "Error file allready precached. Report this to owner tnx."

set fserv(idle) "You have been idle for 50 seconds dcc will close in 10 seconds.."

set fserv(invalddir) "- Error invalid directory."

set fserv(desc) "The contents of my fserv file server"

# Welcome msg edit to ur preference. I created different tags so u can color the logonmsg
# Plz note that u always need to use the first tags .. or it won't show all the text on logon
# <sepe>: Seperator
# <titl>: Title line
# <body>: Body line
set ::fserv(welcome) {
  <sepe>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  <titl>  ** Welcome to my Fserv file server this is not a public file server **
  <sepe>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  <body>- October 03, 2003] If you are affiliated with any government, police.
  <body>  ANTI-Piracy Group, RIAA, MPAA, FBI, movie production
  <body>  company / distribution company or group, or any other related group you
  <body>  are violating code 431.322.12 of the Internet Privacy Act signed by
  <body>  Bill Clinton in 1995. So you have to leave this server..
  <body>- This is a private server. Stay in channel while leeching it or be kicked.
  <sepe>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

# Do not edit below unless u know what ur doing :p
# Advertice timer is set to 10 minutes

set vrs "0.1"

############################################################################
# BINDS

bind pub - $fserv(chan) fserv:pub
bind pub - $fserv(list) list:pub
bind pub n !who who:pub
bind msg - $fserv(msg) fserv:msg
bind ctcp - $fserv(ctcp) fserv:ctcp
bind time - "?0 * * * *"  fserv:timer

############################################################################
# PROCS

listen $fserv(port) script listen:start

proc fserv:pub {nick uhost hand chan arg} {
  if {![isdynamic $::fserv(serv)]} {
    if {$::status(chan) == 0 && [onchan $nick $::fserv(serv)]} {
      set identcheck "0"
      foreach line [dcclist] {
        if {[string match -nocase $line ident]} {
          set identcheck "1"
	}
      }
      if {$identcheck == 1} {
        after 5000
        putserv "PRIVMSG $nick :\001DCC CHAT chat [myip] $::fserv(port)\001"
        set ::dccnick $nick
      } elseif {$identcheck == 0} {
      	putserv "PRIVMSG $nick :\001DCC CHAT chat [myip] $::fserv(port)\001"
        set ::dccnick $nick
      }
    }
  }
}

proc fserv:ctcp {nick uhost hand dest keyword arg} {
  if {![isdynamic $::fserv(serv)]} {
    if {$::status(type) == 1 && [onchan $nick $::fserv(serv)]} {
      set identcheck "0"
      foreach line [dcclist] {
        if {[string match -nocase $line ident]} {
          set identcheck "1"
	}
      }
      if {$identcheck == 1} {
        after 5000
        putserv "PRIVMSG $nick :\001DCC CHAT chat [myip] $::fserv(port)\001"
        set ::dccnick $nick
      } elseif {$identcheck == 0} {
      	putserv "PRIVMSG $nick :\001DCC CHAT chat [myip] $::fserv(port)\001"
        set ::dccnick $nick
      }
    }
  }
}

proc fserv:msg {nick uhost hand arg} {
  if {![isdynamic $::fserv(serv)]} {
    if {$::status(msg) == 2 && [onchan $nick $::fserv(serv)]} {
      set identcheck "0"
      foreach line [dcclist] {
        if {[string match -nocase $line ident]} {
          set identcheck "1"
	}
      }
      if {$identcheck == 1} {
        after 5000
        putserv "PRIVMSG $nick :\001DCC CHAT chat [myip] $::fserv(port)\001"
        set ::dccnick $nick
      } elseif {$identcheck == 0} {
      	putserv "PRIVMSG $nick :\001DCC CHAT chat [myip] $::fserv(port)\001"
        set ::dccnick $nick
      }
    }
  }
}

# Pre control proc
proc listen:start {idx} {
  set dccnick($idx) $::dccnick
  control $idx [list listen:control $dccnick($idx)]
  if {[info exists ::dccpwd($idx)] == 1} {
    unset ::dccpwd($idx)
  }
  if {[info exists ::prompt($idx)] == 1} {
    unset ::prompt($idx)
  }
  if {[info exists ::timedcc($idx)] == 1} {
    catch {killutimer $::timedcc($idx)}
    catch {unset ::timedcc($idx)}
  }
  if {[info exists ::timemsg($idx)] == 1} {
    catch {killutimer $::timemsg($idx)}
    catch {unset ::timemsg($idx)}
  }
  if {$::fserv(logon) == 1} {
    foreach line [split $::fserv(welcome) \n] {
      set type [lindex [split [lindex [split $line \x3C] 1] \x3E] 0]
      set text [lindex [split $line \x3E] 1]
      if {[string match -nocase $type sepe]} {
        putdcc $idx "$::colors(0)-$::colors(4) $text"
      }
      if {[string match -nocase $type titl]} {
        putdcc $idx "$::colors(0)-$::colors(5) $text"
      }
      if {[string match -nocase $type body]} {
        putdcc $idx "$::colors(0)-$::colors(6) $text"
      }
    }
  }
  catch {set ::timedcc($idx) [utimer 60 [list catch [list killdcc $idx]]]}
  catch {set ::timemsg($idx) [utimer 50 [list catch [list putdcc $idx "$::colors(0)$::fserv(idle)"]]]}
}

# Control proc 
proc listen:control {nick fidx arg} {
  global vrs homepath
  if {[valididx $fidx]} {
    if {[info exists ::timedcc($fidx)] == 1} {
      catch {killutimer $::timedcc($fidx)}
    }
    if {[info exists ::timemsg($fidx)] == 1} {
      catch {killutimer $::timemsg($fidx)}
    }
    set fserv(cmd) [lindex [string map {\[ \\\[ \] \\\] \{ \\\{ \} \\\}} $arg] 0]
    set fserv(arg) [join [lrange [string map {\[ \\\[ \] \\\] \{ \\\{ \} \\\}} $arg] 1 end]]
    catch {set ::timemsg($fidx) [utimer 50 [list catch [list putdcc $fidx "$::colors(0)$::fserv(idle)"]]]}
    catch {set ::timedcc($fidx) [utimer 60 [list catch [list killdcc $fidx]]]}
    if {[info exists ::dccpwd($fidx)] == 0} {
      set ::dccpwd($fidx) $homepath
      set ::prompt($fidx) "/"
    }
    if {"[string tolower $fserv(cmd)]" == "ls" || "[string tolower $fserv(cmd)]" == "list" || "[string tolower $fserv(cmd)]" == "dir"} {  
      putdcc $fidx "$::colors(0)-$::colors(2) .."
      foreach line [glob -nocomplain -type d $::dccpwd($fidx)*] { 
        putdcc $fidx "$::colors(0)-$::colors(2) [file tail [file nativename $line]]"
      }
      foreach line [glob -nocomplain -type f $::dccpwd($fidx)*] { 
        putdcc $fidx "$::colors(0)-$::colors(3) [file tail [file nativename $line]] $::colors(0) [format %.2f [expr [file size $line] / 1024.0]] kb"
      }
      putdcc $fidx "$::colors(0)$::prompt($fidx)"
    }
    if {"[string tolower $fserv(cmd)]" == "cd" && "[string tolower $fserv(arg)]" != ".." && "[string tolower $fserv(cmd)]" != {}} {
      set fserv(check) "0"
      foreach line [glob -nocomplain -type d $::dccpwd($fidx)*] { 
        if {[string match -nocase $fserv(arg) [file tail [file nativename $line]]]} {
          set ::dccpwd($fidx) "$::dccpwd($fidx)$fserv(arg)/"
          set ::prompt($fidx) "$::prompt($fidx)$fserv(arg)/"
	  set fserv(check) "[expr $fserv(check)+1]"
          putdcc $fidx "$::colors(0)$::prompt($fidx)"
        }
      }
      if {$fserv(check) == 0} {
        putdcc $fidx "$::colors(7)$::fserv(invalddir)"
      }
    }
    if {"[string tolower $fserv(cmd)]" == "get"} {
      if {[onchan $nick $::fserv(serv)]} {
        set ::dccretrun($fidx) [dccsend "$::dccpwd($fidx)$fserv(arg)" $nick]
        if {$::dccretrun($fidx) == 0} {
          putdcc $fidx "$::colors(0)- $::dccreturnmsg(0)"
        }
        if {$::dccretrun($fidx) == 1} {
          putdcc $fidx "$::colors(0)- $::dccreturnmsg(1)"
        }
        if {$::dccretrun($fidx) == 2} {
          putdcc $fidx "$::colors(0)- $::dccreturnmsg(2)"
        }
        if {$::dccretrun($fidx) == 3} {
          putdcc $fidx "$::colors(0)- $::dccreturnmsg(3)"
        }
        if {$::dccretrun($fidx) == 4} {
          putdcc $fidx "$::colors(0)- $::dccreturnmsg(4)"
        }
        if {$::dccretrun($fidx) == 5} {
          putdcc $fidx "$::colors(0)- $::dccreturnmsg(5)"
        }
      }
    }
    if {"[string tolower $fserv(cmd)]" == "whoami"} {
      putdcc $fidx "$nick"
    }
    if {"[string tolower $fserv(cmd)]" == "cd" && "[string tolower $fserv(arg)]" == ".."} {
      if {$::dccpwd($fidx) != $homepath || $::prompt($fidx) != "\x2F"} {
        set ::dccpwd($fidx) [string trimright "$::dccpwd($fidx)" "[file tail $::dccpwd($fidx)]\x2F"]\x2F
        set ::prompt($fidx) [string trimright "$::prompt($fidx)" "[file tail $::prompt($fidx)]\x2F"]\x2F
        putdcc $fidx "$::colors(0)$::prompt($fidx)"
      }
    }
    if {"[string tolower $fserv(cmd)]" == "pwd"} { 
      putdcc $fidx "$::colors(0)$::prompt($fidx)"
    }
    if {"[string tolower $fserv(cmd)]" == "help"} {
      if {"[string tolower $fserv(arg)]" == ""} {
        putdcc $fidx "$::colors(0)--------------------------------------------------------------------------------"
        putdcc $fidx "$::colors(0)*** Use help <cmd> for more info on the command."
        putdcc $fidx "$::colors(0)*** Command list:"
        putdcc $fidx "$::colors(0)- Ls, dir, list:$::colors(1) Dirlist commands"
        putdcc $fidx "$::colors(0)- Cd , cd ..:$::colors(1) Change dirs"
        putdcc $fidx "$::colors(0)- Pwd:$::colors(1) Show current path."
        putdcc $fidx "$::colors(0)- Get:$::colors(1) Download file."
        putdcc $fidx "$::colors(0)- whoami:$::colors(1) Shows ur current logon nick."
        putdcc $fidx "$::colors(0)- Help:$::colors(1) Shows this menu."
        putdcc $fidx "$::colors(0)- Credit:$::colors(1) Where to get this script and who made this."
        putdcc $fidx "$::colors(0)--------------------------------------------------------------------------------"
      }
      if {"[string tolower $fserv(arg)]" == "get"} {
        putdcc $fidx "$::colors(0)*** This command provides you the ability to download a file from fserv."
        putdcc $fidx "$::colors(0)- Usage: get <filename>"
      }
      if {"[string tolower $fserv(arg)]" == "list" || "[string tolower $fserv(arg)]" == "dir" || "[string tolower $fserv(arg)]" == "ls"} {
        putdcc $fidx "$::colors(0)***This command provides you with the ability to list dirs and files."
        putdcc $fidx "$::colors(0)- Usage: [string tolower $fserv(arg)]"
      }
      if {"[string tolower $fserv(arg)]" == "cd"} {
        putdcc $fidx "$::colors(0)***This command provides you with the ability to brouse directorys."
        putdcc $fidx "$::colors(0)- Usage: cd <dirname>"
      }
      if {"[string tolower $fserv(arg)]" == "whoami"} {
        putdcc $fidx "$::colors(0)*** Returns your current nick name."
        putdcc $fidx "$::colors(0)Usage: whoami"
      }
      if {"[string tolower $fserv(arg)]" == "pwd"} {
        putdcc $fidx "$::colors(0)*** This command shows the current path."
        putdcc $fidx "$::colors(0)- Usage: pwd"
      }
    }
    if {"[string tolower $fserv(cmd)]" == "credit"} {
      putdcc $fidx "$::colors(0)--------------------------------------------------------------------------------"
      putdcc $fidx "$::colors(0)- Fserv Script $vrs help section"
      putdcc $fidx "$::colors(0)- This script is made by Ofloo"
      putdcc $fidx "$::colors(0)- HomePage: http://www.ofloo.net/"
      putdcc $fidx "$::colors(0)- Email: support\[at\]ofloo.net"
      putdcc $fidx "$::colors(0)- Special tnx to the people who help the people on users"
      putdcc $fidx "$::colors(0)\x20 forum at http://www.egghelp.org/"
      putdcc $fidx "$::colors(0)--------------------------------------------------------------------------------"
    }
    if {"[string tolower $fserv(cmd)]" != "credit" && "[string tolower $fserv(cmd)]" != "get" && "[string tolower $fserv(cmd)]" != "cd" && "[string tolower $fserv(cmd)]" != "list" && "[string tolower $fserv(cmd)]" != "dir" && "[string tolower $fserv(cmd)]" != "ls" && "[string tolower $fserv(cmd)]" != "help" && "[string tolower $fserv(cmd)]" != "whoami" && "[string tolower $fserv(cmd)]" != "pwd"} {
      putdcc $fidx "$::colors(0)*** For help type help <cmd> or just help to get a list of commands"
    }
  }
}

proc fserv:timer {min hour day month year} {
  global botnick
  if {$::fserv(timer) == 1} {
    if {$::status(type) == 0} {
      set trigger "$::fserv(chan)"
    } elseif {$::status(type) == 1} {
      set trigger "/ctcp $botnick $::fserv(ctcp)"
    } elseif {$::status(type) == 2} {
      set trigger "/msg $botnick $::fserv(msg)"
    }
    putserv "PRIVMSG $::fserv(serv) :$::colors(8)Fserv trigger:$::colors(9) $trigger$::colors(8) Description:$::colors(9) $::fserv(desc)"
  }
}

proc list:pub {nick uhost hand chan arg} {
  global botnick
  if {[onchan $nick $::fserv(serv)]} {
    if {$::fserv(lists) == 1} {
      if {$::status(type) == 0} {
        set trigger "$::fserv(chan)"
      } elseif {$::status(type) == 1} {
        set trigger "/ctcp $botnick $::fserv(ctcp)"
      } elseif {$::status(type) == 2} {
        set trigger "/msg $botnick $::fserv(msg)"
      }
      putserv "PRIVMSG $::fserv(serv) :$::colors(8)Fserv trigger:$::colors(9) $trigger$::colors(8) Description:$::colors(9) $::fserv(desc)"
    }
  }
}

proc who:pub {nick uhost hand chan arg} {
  foreach line [dcclist] {
    if {[string tolower [lindex $line 3]] == "script"} {
      putserv "NOTICE $nick :$::colors(0)User:$::colors(1) [lindex [split [lindex $line 4] \x20] 3] $::colors(0)UserHost:$::colors(1) [lindex [split [lindex $line 2] \x40] 1]"
    }
    if {[string tolower [lindex $line 3]] == "get"} {
      putserv "NOTICE $nick :$::colors(0)Sending file to: [lindex $line 1]"
    }
  }
}

#####################################################################################
putlog "\002Fserv\002 script version \002$vrs\002 by Ofloo loaded."
im not looking for anything fancy just looking for something that works and isnt to complicated to set up,etc
thanks in advance
w
willyw
Revered One
Posts: 1196
Joined: Thu Jan 15, 2009 12:55 am

Re: looking for help with fserv script for eggdrop 1.8.4

Post by willyw »

str8up wrote: im not looking for anything fancy just looking for something that works and isnt to complicated to set up,etc
thanks in advance
I haven't ever used the file transfer functions of eggdrop beyond playing with it a time or two, and that was ages ago.

However, first thought is:
Have you tested your bot's ability to send and receive files WITHOUT any scripts, first?
In other words - have you configured it in eggdrop.conf, and tested it, and proven that it is set up and works all ok, already?

I think I'd do that - first.

Next:
Based on what you said, it sounds like you are willing to look at other scripts. You might like to see:
http://tclarchive.org/
More specifically:
http://tclarchive.org/search.php?Server
Just in case you might find something there that you like better (after you get it working, with no scripts, of course )
For a fun (and popular) Trivia game, visit us at: irc.librairc.net #science-fiction . Over 300K Q & A to play in BogusTrivia !
s
str8up
Voice
Posts: 3
Joined: Thu May 09, 2019 12:31 pm

still needs a bit of fixing up but its getting there

Post by str8up »

thank you very much jack for all the help and everything ya have done for me
as i was telling spike^^ earlier id be lost with out you guys
got a few more bugs and tweeks yet....discovered another problem.
when people get on my server not only can they access my serving folders,etc
they can also get at the rest of the contents of the entire drive
need to find a way to lock script to specified files and folders only
also be able to serv at least max of 3 channels as for now it can only serv for 1 chan
but again though i really really am thankful for all you guys have been able to do thus far.
and thanks again.
User avatar
Dominatez
Halfop
Posts: 50
Joined: Mon Jan 14, 2019 5:08 pm
Location: United Kingdom

Post by Dominatez »

str8up

Have you ever thought about using Iroffer ? If run on your machine, it runs like an eggdrop and is very easy to manage. Much simpler to interface with and you can lock files to one directory.

And the iroffer can serve in more than one channel.
Post Reply