import main
from core . bot import deliverRelayCommands
from utils . logging . log import *
def provisionUserData ( num , nick , altnick , ident , realname , unused ) : # last field is password, which we don't want to inherit here, but still want to use * expansion, so this is a bit of a hack
commands = { }
commands [ " controlpanel " ] = [ ]
commands [ " controlpanel " ] . append ( " AddUser %s %s " % ( nick , main . config [ " Relay " ] [ " Password " ] ) )
commands [ " controlpanel " ] . append ( " Set Nick %s %s " % ( nick , nick ) )
commands [ " controlpanel " ] . append ( " Set Altnick %s %s " % ( nick , altnick ) )
commands [ " controlpanel " ] . append ( " Set Ident %s %s " % ( nick , ident ) )
commands [ " controlpanel " ] . append ( " Set RealName %s %s " % ( nick , realname ) )
deliverRelayCommands ( num , commands )
return
def provisionNetworkData ( num , nick , network , host , port , security , auth , password ) :
commands = { }
stage2commands = { }
stage3commands = { }
commands [ " controlpanel " ] = [ ]
commands [ " controlpanel " ] . append ( " AddNetwork %s %s " % ( nick , network ) )
if security == " ssl " :
commands [ " controlpanel " ] . append ( " SetNetwork TrustAllCerts %s %s true " % ( nick , network ) ) # Don't judge me
commands [ " controlpanel " ] . append ( " AddServer %s %s %s + %s " % ( nick , network , host , port ) )
elif security == " plain " :
commands [ " controlpanel " ] . append ( " AddServer %s %s %s %s " % ( nick , network , host , port ) )
if auth == " sasl " :
stage2commands [ " status " ] = [ ]
stage2commands [ " sasl " ] = [ ]
stage2commands [ " status " ] . append ( " LoadMod sasl " )
stage2commands [ " sasl " ] . append ( " Mechanism plain " )
stage2commands [ " sasl " ] . append ( " Set %s %s " % ( nick , password ) )
elif auth == " ns " :
stage2commands [ " status " ] = [ ]
stage2commands [ " nickserv " ] = [ ]
stage2commands [ " status " ] . append ( " LoadMod nickserv " )
stage2commands [ " nickserv " ] . append ( " Set %s " % password )
if not main . config [ " ConnectOnCreate " ] :
stage3commands [ " status " ] = [ ]
stage3commands [ " status " ] . append ( " Disconnect " )
if main . config [ " Toggles " ] [ " CycleChans " ] :
stage2commands [ " status " ] = [ ]
stage2commands [ " status " ] . append ( " LoadMod disconkick " )
stage2commands [ " status " ] . append ( " LoadMod chansaver " )
deliverRelayCommands ( num , commands ,
stage2 = [ [ nick + " / " + network , stage2commands ] ,
[ nick + " / " + network , stage3commands ] ] )
return
def provisionRelayForNetwork ( num , alias , network ) :
provisionNetworkData ( num , alias , network ,
main . network [ network ] . host ,
main . network [ network ] . port ,
main . network [ network ] . security ,
main . network [ network ] . auth ,
main . network [ network ] . aliases [ num ] [ " password " ] )
return
def provisionRelay ( num , network ) :
aliasObj = main . alias [ num ]
alias = aliasObj [ " nick " ]
provisionUserData ( num , * aliasObj . values ( ) )
provisionRelayForNetwork ( num , alias , network )
if main . config [ " ConnectOnCreate " ] :
main . network [ network ] . start_bot ( num )
return alias