Join on connection

This commit is contained in:
Némunaire 2012-11-02 19:58:09 +01:00
parent d4cfe1e0f8
commit 57f58eac17

View File

@ -116,18 +116,19 @@ class IRCServer(server.Server):
return chan in self.channels and (sender is None or sender
in self.channels[chan].people)
def join(self, chan, password=None):
def join(self, chan, password=None, force=False):
"""Join a channel"""
if chan is not None and self.connected and chan not in self.channels:
if force or (chan is not None and
self.connected and chan not in self.channels):
chn = xmlparser.module_state.ModuleState("channel")
chn["name"] = chan
chn["password"] = password
self.node.addChild(chn)
self.channels[chan] = channel.Channel(chn, self)
if password is not None:
self.s.send(("JOIN %s %s\r\n" % (chan, password)).encode ())
self.s.send(("JOIN %s %s\r\n" % (chan, password)).encode())
else:
self.s.send(("JOIN %s\r\n" % chan).encode ())
self.s.send(("JOIN %s\r\n" % chan).encode())
return True
else:
return False
@ -139,7 +140,7 @@ class IRCServer(server.Server):
for c in chan:
self.leave(c)
else:
self.s.send(("PART %s\r\n" % self.channels[chan].name).encode ())
self.s.send(("PART %s\r\n" % self.channels[chan].name).encode())
del self.channels[chan]
return True
else:
@ -162,7 +163,7 @@ class IRCServer(server.Server):
self.s.send(b"PASS " + self.password.encode () + b"\r\n")
self.s.send(("NICK %s\r\n" % self.nick).encode ())
self.s.send(("USER %s %s bla :%s\r\n" % (self.nick, self.host,
self.realname)).encode ())
self.realname)).encode())
raw = self.s.recv(1024)
if not raw:
print ("Unable to connect to %s:%d" % (self.host, self.port))
@ -170,6 +171,12 @@ class IRCServer(server.Server):
self.connected = True
print ("Connection to %s:%d completed" % (self.host, self.port))
if len(self.channels) > 0:
for chn in self.channels.keys():
self.join(self.channels[chn].name,
self.channels[chn].password, force=True)
readbuffer = b'' #Here we store all the messages from server
while not self.stop:
readbuffer = readbuffer + raw
@ -205,7 +212,7 @@ class IRCServer(server.Server):
def send_pong(self, cnt):
"""Send a PONG command to the server with argument cnt"""
self.s.send(("PONG %s\r\n" % cnt).encode ())
self.s.send(("PONG %s\r\n" % cnt).encode())
def msg_treated(self, origin):
"""Do nothing; here for implement abstract class"""