TCL Psy BNC

Psy BNC

# Psybnc Proxy By Thule
# Ded to my love karma^@ircnet

bind dcc w|- psy dcc:bounce

set psynotice "*IRC Client did not support a password*"

bind raw -|- NOTICE psy_connect

set psystat "off"
set psyusername "username"
set psypass "pass"
set psyawaymsg "some st00pid away reason"
set psyvhost "some.c00l.31337.vhost"
set psyproxy ""
set psyaddserver "irc.server.com:6667"
set psydelserver ""
set psyrev ""
set psyrev1 "1.1"
set psyconf "$botnick.bounce"
 
proc psy_save {} {
    global psystat psyusername psypass psyawaymsg psyvhost psyaddserver psyrev psyconf psyproxy
    set fileid [open $psyconf w]
    puts $fileid "set psystat \"$psystat\""
    puts $fileid "set psyusername $psyusername"
    puts $fileid "set psypass $psypass"
    puts $fileid "set psyvhost $psyvhost"
    puts $fileid "set psyproxy $psyproxy"
    puts $fileid "set psyaddserver $psyaddserver"
    puts $fileid "set psyrev \"$psyrev\""
    close $fileid
}
if {![file exist $psyconf]} {
    set psyrev $psyrev1
    psy_save
    putlog "PsyProxy configuration file not found : generating defalut..."
}

source $psyconf

if {$psyrev1 != $psyrev} {
    set psyrev $psyrev1
    psy_save
}

proc dcc:bounce {hand idx arg} {
global psystat psyproxy psyusername psypass psyawaymsg psyvhost psyaddserver psydelserv psyrev psyconf owner
set command [string tolower [lindex $arg 0]]
set bounce $command
putcmdlog ""
if { $command == "" } {
	putdcc $idx "+-+------=\ .:PsyProxy Status:. /=----+>"
	putdcc $idx "+-+-=-=-+"
	putdcc $idx "| |-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+>"
	putdcc $idx "| | PsyProxy ver\t: $psyrev"
	putdcc $idx "| | PsyProxy is\t: $psystat"
	putdcc $idx "| | PsyProxy pass\t: $psypass"
	putdcc $idx "| | PsyProxy awaymsg\t: $psyawaymsg"
	putdcc $idx "| | PsyProxy vhost\t: $psyvhost"
	putdcc $idx "| | PsyProxy proxy\t: $psyproxy"
	putdcc $idx "| | PsyProxy username\t: $psyusername"
	putdcc $idx "| | PsyProxy server\t: $psyaddserver"
        putdcc $idx "+-+"
	putdcc $idx "| |-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+>"
	putdcc $idx "+-+------=\ .:PsyProxy Status:. /=----+>"
}
switch -exact $command {
	"on" {
	    if {$command == $psystat} {
		putdcc $idx "PsyProxy is already $command."
		return 0
	    }
	    set psystat "on"
	    putcmdlog "$hand has turn on..."
	    set bounce $command
	    if {$psystat != "off"} {
	    putdcc $idx "PsyProxy System enabled by $hand."
	    psy_connect
	    psy_save
	    }
	    if {$psypass == "h1tp4r4d3!"} {
		putdcc $idx "Now use '.psy pass <password>' to set the psypass password"
	    }
	}
	"off" {
	    if {$command == $psystat} {
		putdcc $idx "PsyProxy is already $command."
		return 0
	    }
	    set psystat "off"
	    putcmdlog "$hand has turn off"
	    set bounce $command
	    if {$psystat != "on"} {
	    putdcc $idx "PsyProxy System disabled by $hand."
	    psy_save
	    psy_stop
	    }
	}
	"pass" {
	    putcmdlog "$hand bounce pass \[something..\]"
	    if {$psypass == [lindex $arg 1]} {
		putdcc $idx "PsyProxy pass is already [lindex $arg 1]."
		return 0
	    }
	    set psypass [lindex $arg 1]
	    if {$psypass != ""} {
		putdcc $idx "PsyProxy pass set to $psypass."
		set psypass [encrypt $psypass $psypass]
		putdcc $idx "PsyProxy password set by $hand."
	    } else {
		putdcc $idx "PsyProxy pass removed."
		putdcc $idx "PsyProxy password disabled by $hand."
	    }
	    psy_save
	}
	"username" {
	    putcmdlog "$hand username..."
	    if {$psyusername == [lindex $arg 1]} {
		putdcc $idx "PsyProxy username is $psyusername."
		return 0
	    }
	    set psyusername [lindex $arg 1]
	    if {$psyusername != ""} {
		putdcc $idx "PsyProxy username set as $psyusername."
		putdcc $idx "PsyProxy username set by $hand."
		
	    } 
	    psy_save
	}
	"vhost" {
	    putcmdlog "$hand changes vhost..."
	    if {$psyvhost == [lindex $arg 1]} {
		putdcc $idx "PsyProxy vhost is $psyvhost."
		return 0
	    }
	    set psyvhost [lindex $arg 1]
	    if {$psyvhost != ""} {
		putdcc $idx "PsyProxy vhost set is $psyvhost."
		putdcc $idx "PsyProxy vhost set by $hand."
	        psy_vhost
	    } 
	    psy_save
	}
	"proxy" {
	    putcmdlog "$hand changes proxy..."
	    if {$psyproxy == [lindex $arg 1]} {
		putdcc $idx "PsyProxy proxy is $psyproxy."
		return 0
	    }
	    set psyproxy [lindex $arg 1]
	    if {$psyproxy != ""} {
		putdcc $idx "PsyProxy proxy set is $psyvhost."
		putdcc $idx "PsyProxy proxy set by $hand."
	        psy_proxy
	    } 
	    psy_save
	}
	
	"addserver" {
	    putcmdlog "$hand add server $psyaddserver"
	    if {$psyaddserver == [lindex $arg 1]} {
		putdcc $idx "The new server is $psyaddserver."
		return 0
	    }
	    set psyaddserver [lindex $arg 1]
	    if {$psyaddserver != ""} {
		putdcc $idx "PsyProxy server set to $psyaddserver."
		putdcc $idx "PsyProxy server set by $hand."
	        psy_server
	    } 
	    psy_save
	}
	
	"delserver" {
	    set psydelserv [lindex $arg 1]
	    if {$psydelserv == "" } {
		putdcc $idx "Number is not valid choice from 1-9."
		return 0
            }
	    set psydelserv [lindex $arg 1]
	    if {$psydelserv == "0" } {
		putdcc $idx "Number is not valid."
		return 0
	    }
	    if {$psydelserv == [lindex $arg 1]} {
		putcmdlog "$hand delete server..."	
		psy_delserver
	    }
	             }
	"awaymsg" {
	    putcmdlog "$hand awaymsg..."
	    if {$psyawaymsg == [lindex $arg 1]} {
		putdcc $idx "Bouncer awaymsg is $psyawaymsg."
		return 0
	    }
	    set psyvhost [lindex $arg 1]
	    if {$psyusername != ""} {
		putdcc $idx "PsyProxy awaymsg set is $psyawaymsg."
		putdcc $idx "PsyProxy awaymsg set by $hand."
	        putserv "setawaynick $botnick"
	    } 
	    psy_save
	}
	"ver" {
	    putcmdlog "$hand PsyProxy ver"
	    putdcc $idx "PsyProxy version $psy_rev1 by ThuLe."

	    }
	"listserver" {
	    putcmdlog "$hand request PsyProxy list."
	    psy_list
	    }
	 "help" {
	    putdcc $idx "+-+--------------------=\ .:PsyProxy HeLP:. /=---------------------+>"
	    putdcc $idx "+-+-=-=-=-=-+"
	    putdcc $idx "| |-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+>"
	    putdcc $idx "| |.Psy on		       - To set on the PsyProxy"
            putdcc $idx "| |.Psy off                   - To set off the PsyProxy"
	    putdcc $idx "| |.Psy pass pass             - To set the pass in the Psybnc"
	    putdcc $idx "| |.Psy addserver server:port - To set the server in the Psybnc"
	    putdcc $idx "| |.Psy listserver	       - To obtain the listservers on Psybnc"
	    putdcc $idx "| |.Psy vhost vhost.com       - To set the vhost in the Psybnc"
	    putdcc $idx "| |.Psy proxy ip:port         - To set the proxy in the Psybnc"
	    putdcc $idx "| |.Psy username RealName     - To set the RealName in the Psybnc"
	    putdcc $idx "| |.Psy ver		       - To show the version of PsyProxy"
	    putdcc $idx "| |-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+>"
	    putdcc $idx "+-+"
	    putdcc $idx "+-+--------------------=\ .:PsyProxy HeLP:. /=---------------------+>"
	    return 0	
         }
}
}

proc psy_connect {from key arg} { 
global psypass botnick psyusername psynotice
  if {[string match "*Your IRC Client did not support a password*" $arg]} {
	putserv "PASS $psypass" 
	putserv "setusername $psyusername"
  }
  if {[string match "*no server add*" $arg]} {
	psy_server
  }
} 

proc psy_vhost {} {
global psyvhost jump
	putserv "vhost $psyvhost"
	putserv "BCONNECT"
	putserv "JUMP"
}

proc psy_proxy {} {
global psyproxy jump
	putserv "proxy $psyproxy"
	putserv "BCONNECT"
	putserv "JUMP"
}

proc psy_stop {} {
     putserv "BQUIT"
     jump
     putdcc $idx "Out from Psybnc server."
}

proc psy_server {} {
global psyaddserver
	putserv "addserver [lindex [split $psyaddserver :] 0] :[lindex [split $psyaddserver :] 1]"
}

proc psy_list {} {
	putserv "LISTSERVERS"
}

proc psy_delserver {} {
global psydelserv
	putserv "delserver $psydelserv"
}
putlog "-ProxyPsyBnC by ThuLe fixed by IRCHelp.UniBG.Org Loaded"