Starting networks is now via command line, and parameterized

This commit is contained in:
moneromooo 2015-01-26 22:18:18 +00:00
parent 50455a0d08
commit 1d3f650bba
5 changed files with 86 additions and 21 deletions

View file

@ -18,8 +18,8 @@ from tipbot.command_manager import *
from irc import *
class FreenodeNetwork(IRCNetwork):
def __init__(self):
IRCNetwork.__init__(self,"freenode")
def __init__(self,name):
IRCNetwork.__init__(self,name)
def login(self):
self.send_to("nickserv", "IDENTIFY %s" % self.password)
@ -52,3 +52,4 @@ class FreenodeNetwork(IRCNetwork):
log_error('ACC line not as expected...')
return True
RegisterNetwork("freenode",FreenodeNetwork)

View file

@ -44,7 +44,21 @@ class IRCNetwork(Network):
self.quitting = False
self.buffered_data = ""
def connect(self,host,port,login,password,delay):
def connect(self):
try:
cfg=config.network_config[self.name]
host=cfg['host']
port=cfg['port']
login=cfg['login']
password=GetPassword(self.name)
delay=cfg['delay']
self.use_ssl=cfg['ssl']
self.use_sasl=cfg['sasl']
if self.use_sasl:
self.sasl_name=cfg['sasl_name']
except Exception,e:
log_error('Configuration not found for %s: %s' % (self.name, str(e)))
return False
return self._connect(host,port,login,password,delay)
def disconnect(self):
@ -170,7 +184,7 @@ class IRCNetwork(Network):
if data.find ( config.irc_welcome_line ) != -1:
self.userstable = dict()
self.registered_users.clear()
if not config.irc_use_sasl:
if not self.use_sasl:
self.login()
for chan in config.irc_channels:
self.join(chan)
@ -182,8 +196,8 @@ class IRCNetwork(Network):
return True
if data.startswith('AUTHENTICATE +'):
if config.irc_use_sasl:
authstring = config.irc_sasl_name + chr(0) + config.irc_sasl_name + chr(0) + self.password
if self.use_sasl:
authstring = self.sasl_name + chr(0) + self.sasl_name + chr(0) + self.password
self._irc_sendmsg('AUTHENTICATE %s' % base64.b64encode(authstring))
else:
log_warn('Got AUTHENTICATE while not using SASL')
@ -370,13 +384,13 @@ class IRCNetwork(Network):
log("IRCSEND",msg)
def _irc_recv(self,size,flags=None):
if config.irc_use_ssl:
if self.use_ssl:
return self.sslirc.read(size)
else:
return self.irc.recv(size,flags)
def _irc_send(self,data):
if config.irc_use_ssl:
if self.use_ssl:
return self.sslirc.write(data)
else:
return self.irc.send(data)
@ -447,7 +461,7 @@ class IRCNetwork(Network):
self.registered_users=set()
try:
self.irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
if config.irc_use_ssl:
if self.use_ssl:
try:
raise RuntimeError('')
self.irc_ssl_context = ssl.create_default_context()
@ -461,7 +475,7 @@ class IRCNetwork(Network):
log_error( 'Error initializing IRC: %s' % str(e))
return False
self._log_IRCRECV(self._irc_recv(4096))
if config.irc_use_sasl:
if self.use_sasl:
self._irc_sendmsg('CAP REQ :sasl')
else:
self._irc_sendmsg ( 'PASS *********')
@ -518,3 +532,4 @@ RegisterCommand({
'admin': True,
'help': "Makes %s part from a channel" % (config.tipbot_name)
})
RegisterNetwork("irc",IRCNetwork)