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.

vhost help

Help for those learning Tcl or writing their own scripts.
Post Reply
User avatar
Arnold_X-P
Master
Posts: 226
Joined: Mon Oct 30, 2006 12:19 am
Location: DALnet - Trinidad - Beni - Bolivia
Contact:

vhost help

Post by Arnold_X-P »

I found this tcl and tried to arrange it but it has a very repetitive error

Code: Select all

# based in http://forum.egghelp.org/viewtopic.php?t=13836&highlight=vhost
#set this to channel
set scan(chan) "#vhost"
# Set this to the bot's O-Line username #
set oper(username) "xxx"
# Set this to the bots O-Line password #
set oper(password) "xxxx"
# Set here the words that are not alowed in the vhost #
set dvb_badvhost {
   "*admin*"
   "*bitch*"
   "*operator*"
   "*ircop*"   
   "Marro*"
   "*Maro*"
   "*netadmin*"
   "*N3TADM1N*"
   "*ñ*" 
   "*^" 
   "*+" 
   "*´" 
   "*<"
   "*#*"
   "*irc0p*" 
   "*Opers*"
   "*`"
   "*&"
   "*¿"
   "*¡"
}

## dont change below unless your know what your doing ##

bind msg o oper oper-up
bind join - "$scan(chan) *" tls:join 

bind raw - 307 tls:ident
bind pub -|- !vhost tls:vhost
bind pub -|- .vhost tls:vhost
bind evnt - init-server oper:connect

proc oper:connect init-server {
putserv "OPER $::oper(username) $::oper(password)"
putserv "ns identify benita28"
}

proc oper-up {nick host chan text} {
  global operid operpass owner2
  putserv "OPER $::oper(username) $::oper(password)"
  putserv "NOTICE $nick :I Opered up"
}

proc tls:join {nick host hand chan} {
 global tls_nick tls_ident botnick
 if {![string match -nocase *$nick* $botnick]} {
  set tls_ident "1"
  set tls_nick $nick 
  putserv "WHOIS $nick"
  utimer 3 tls:not:ident
} }

proc tls:vhost {nick host hand chan vhost} {
 global tls_nick tls_ident tls_vhost 
   if {$chan != "$::scan(chan)"} { 
      putserv "NOTICE $nick :\2$nick\2 Don't Use This Command Outside $::scan(chan)"
	return 0
  }
 if {$vhost == ""} {
  if {$chan == "$::scan(chan)"} { 
 putserv "PRIVMSG $chan :With the command 4!vhost you can make a vhost."
 putserv "PRIVMSG $chan :Do it this way, 4!vhost This.is.my.vhost.com"
  putserv "PRIVMSG $chan :You can only use this service if you have your nick registered and identified"
  putserv "PRIVMSG $chan :For more information type 4/MSG nickserv HELP"
   return 0
  }
 }
  set tls_ident "2"
  set tls_vhost [lindex $vhost 0]
  set tls_nick $nick 
  putserv "WHOIS $nick"
  utimer 3 tls:not:ident
} 

proc tls:ident {from key args } { 
 global tls_ident tls_nick tls_vhost  
  set args [join $args]
  set nick [string tolower [lindex $args 1]]
  set regist [strlwr [lindex [lrange [split $args ":"] 1 end] 0]]
  if {$tls_ident == "1" && $regist == "is identified for this nick"} {
    foreach j [utimers] {
        if {[lindex $j 1] == "tls:not:ident"} { killutimer [lindex $j 2] }
      }
  putserv "PRIVMSG $::scan(chan) :$nick your nick is registered and identified use 4!vhost <vhost>"
   }
  if {$tls_ident == "2" && $regist == "is identified for this nick"} {
    foreach j [utimers] {
        if {[lindex $j 1] == "tls:not:ident"} { killutimer [lindex $j 2] }
   } 
   
  global dvb_badvhost
foreach i $dvb_badvhost {
if {[string match -nocase $i $tls_vhost]} { 
 putserv "PRIVMSG $::scan(chan) :Your vhost is not changed 3$tls_vhost3"
  putserv "PRIVMSG $::scan(chan) :Its not a valid vhost 3$tls_vhost for 3$i" 
   return 0 
  }  
 }
  putserv "PRIVMSG hostserv : set $tls_nick $tls_vhost"
  putserv "chghost $tls_nick $tls_vhost"
  putserv "NOTICE $tls_nick :Your vhost is changed in 3$tls_vhost3"
  putserv "NOTICE $tls_nick :Type 4/msg hostserv on"
  unset j ; unset tls_nick ; 
  }
  return 0
} 

proc tls:not:ident {} {
 global tls_nick
 putserv "PRIVMSG $::scan(chan) :\2$tls_nick\2 is not registered or identified."
 putserv "PRIVMSG $::scan(chan) :Type: 4/MSG nickserv HELP for info how to register and identify you nick."
 return 0
} 

putlog "vhost was successfully loaded."
the error is apparently the time that sees the user and repeats it [utimers]
Image

[12:21] <&sicario> spencer your nick is registered and identified use 4!vhost <vhost>
[12:21] <&sicario> spencer your nick is registered and identified use 4!vhost <vhost>
and the error that detects this one in the line 90 91 and 96 97

some friend who wants to help in solving this tcl please.
.:an ideal world:. www.geocities.ws/chateo/yo.htm
my programming place /server ix.scay.net:7005
User avatar
Arnold_X-P
Master
Posts: 226
Joined: Mon Oct 30, 2006 12:19 am
Location: DALnet - Trinidad - Beni - Bolivia
Contact:

Re: vhost help

Post by Arnold_X-P »

Final code
only works for anope services & Unreal3.2.* ... Remember also for the tcl to work your bot must have access to ircop

Code: Select all

# based in http://forum.egghelp.org/viewtopic.php?t=13836&highlight=vhost
# updated for Arnold_X-P email urquizoandrade@gmail.com /server irc.dal.net channel #tcls my nick's Arnold_X-P & sedition 29/OCT/2017 
# tambien estoy en irc.chatzona.org canal #tcl mi correo urquizoandrade@hotmail.com mis nicks Arnold_X-P y sedition
#set this to channel
set scan(chan) "#vhost"
# Set this to the bot's O-Line username #
set oper(username) "you-opernick"
# Set this to the bots O-Line password #
set oper(password) "you-pass-ircop"
# Set here the words that are not alowed in the vhost #
set dvb_badvhost {
   "*admin*"
   "*bitch*"
   "*operator*"
   "*ircop*"   
   "*netadmin*"
   "*N3TADM1N*"
   "*ñ*"
   "*^*"
   "*+*"
   "*´*"
   "*<*"
   "*#*"
   "*irc0p*"
   "*Opers*"
   "*`*"
   "*&*"
   "*¿*"
   "*¡*"
   "*,*"
}

## dont change below unless your know what your doing ##

bind msg o !oper oper-up
bind join - "$scan(chan) *" tls:join

bind raw - 307 tls:ident
bind pub -|- !vhost tls:vhost
bind pub -|- .vhost tls:vhost
bind evnt - "init-server" oper:connect

proc oper:connect init-server {
putserv "OPER $::oper(username) $::oper(password)"
}

proc oper-up {nick host chan text} {
  global operid operpass owner2
  putserv "OPER $::oper(username) $::oper(password)"
  putserv "NOTICE $nick :I Opered up"
}

proc tls:join {nick host hand chan} {
 global tls_nick tls_ident botnick
 if {![string match -nocase *$nick* $botnick]} {
  set tls_ident "1"
  set tls_nick $nick
  putserv "WHOIS $nick"
  utimer 3 tls:not:ident
} }

proc tls:vhost {nick host hand chan vhost} {
 global tls_nick tls_ident tls_vhost
   if {$chan != "$::scan(chan)"} {
      putserv "NOTICE $nick :\2$nick\2 Don't Use This Command Outside $::scan(chan)"
   return 0
  }
 if {$vhost == ""} {
 if {$chan == "$::scan(chan)"} {
 putserv "PRIVMSG $chan :With the command 4!vhost you can make a vhost."
 putserv "PRIVMSG $chan :Do it this way, 4!vhost This.is.my.vhost.com"
  putserv "PRIVMSG $chan :You can only use this service if you have your nick registered and identified"
  putserv "PRIVMSG $chan :For more information type 4/MSG nickserv HELP"
   return 0
  }
 }
  set tls_ident "2"
  set tls_vhost [lindex $vhost 0]
  set tls_nick $nick
  putserv "WHOIS $nick"
  utimer 3 tls:not:ident
}

proc tls:ident {from key args } {
 global tls_ident tls_nick tls_vhost
  set args [join $args]
  set nick [string tolower [lindex $args 1]]
  set regist [strlwr [lindex [lrange [split $args ":"] 1 end] 0]]
  if {$tls_ident == "1" && $regist == "is identified for this nick"} {
 foreach j [utimers] {
   if {[lindex $j 1] == "tls:not:ident"} { killutimer [lindex $j 2] }
   continue }
  putserv "PRIVMSG $::scan(chan) :$nick your nick is registered and identified use 4!vhost <vhost>"
   }
  if {$tls_ident == "2" && $regist == "is identified for this nick"} {
 foreach j [utimers] {
    if {[lindex $j 1] == "tls:not:ident"} { killutimer [lindex $j 2] }
   continue }

  global dvb_badvhost
foreach i $dvb_badvhost {
if {[string match -nocase "$i" $tls_vhost]} {
 putserv "PRIVMSG $::scan(chan) :Your vhost is not changed 3$tls_vhost3"
  putserv "PRIVMSG $::scan(chan) :Its not a valid vhost 3$tls_vhost for 3$i"
   return 1
  } }
  putserv "PRIVMSG hostserv : set $tls_nick $tls_vhost"
  putserv "chghost $tls_nick $tls_vhost"
  putserv "NOTICE $tls_nick :Your vhost is changed in 3$tls_vhost3"
  putserv "NOTICE $tls_nick :Type 4/msg hostserv on"
  }
  return 0
}

proc tls:not:ident {} {
 global tls_nick
 putserv "PRIVMSG $::scan(chan) :\2$tls_nick\2 is not registered or identified."
 putserv "PRIVMSG $::scan(chan) :Type: 4/MSG nickserv HELP for info how to register and identify you nick."
}

putlog "vhost was successfully loaded. updated for Arnold_X-P (DALnet)"
.:an ideal world:. www.geocities.ws/chateo/yo.htm
my programming place /server ix.scay.net:7005
User avatar
aslpls
Halfop
Posts: 42
Joined: Mon May 02, 2016 9:41 am

Post by aslpls »

hello everyone,

i am using this tcl and it works, although the user can request a personalized vhost and can use it once the user still active in the network. Once the user join again, the user needs to request again.

Now i have added the eggdrop bot an oper block in anope. to make the bot activate/set the vhost once the user requested a vhost from the channel by typing !vhost vhost.user.want


if anyone can help and add the code in the script to activate the vhost requested by the user and notice it to the user, like;


Code: Select all

user: !vhost i.want.this.vhost
vhost: Your vhost is changed to i.want.this.vhost (Chanel Notice)
vhost: Your vhost is activated and can be used permanently. (Channel Notice)

thanks in advance.

happy halloween.
User avatar
aslpls
Halfop
Posts: 42
Joined: Mon May 02, 2016 9:41 am

Post by aslpls »

nevermind, i found out another solution and it is working well.
Post Reply