Join on connection
This commit is contained in:
parent
d4cfe1e0f8
commit
57f58eac17
1 changed files with 14 additions and 7 deletions
21
IRCServer.py
21
IRCServer.py
|
|
@ -116,18 +116,19 @@ class IRCServer(server.Server):
|
||||||
return chan in self.channels and (sender is None or sender
|
return chan in self.channels and (sender is None or sender
|
||||||
in self.channels[chan].people)
|
in self.channels[chan].people)
|
||||||
|
|
||||||
def join(self, chan, password=None):
|
def join(self, chan, password=None, force=False):
|
||||||
"""Join a channel"""
|
"""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 = xmlparser.module_state.ModuleState("channel")
|
||||||
chn["name"] = chan
|
chn["name"] = chan
|
||||||
chn["password"] = password
|
chn["password"] = password
|
||||||
self.node.addChild(chn)
|
self.node.addChild(chn)
|
||||||
self.channels[chan] = channel.Channel(chn, self)
|
self.channels[chan] = channel.Channel(chn, self)
|
||||||
if password is not None:
|
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:
|
else:
|
||||||
self.s.send(("JOIN %s\r\n" % chan).encode ())
|
self.s.send(("JOIN %s\r\n" % chan).encode())
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
@ -139,7 +140,7 @@ class IRCServer(server.Server):
|
||||||
for c in chan:
|
for c in chan:
|
||||||
self.leave(c)
|
self.leave(c)
|
||||||
else:
|
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]
|
del self.channels[chan]
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
|
|
@ -162,7 +163,7 @@ class IRCServer(server.Server):
|
||||||
self.s.send(b"PASS " + self.password.encode () + b"\r\n")
|
self.s.send(b"PASS " + self.password.encode () + b"\r\n")
|
||||||
self.s.send(("NICK %s\r\n" % self.nick).encode ())
|
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.s.send(("USER %s %s bla :%s\r\n" % (self.nick, self.host,
|
||||||
self.realname)).encode ())
|
self.realname)).encode())
|
||||||
raw = self.s.recv(1024)
|
raw = self.s.recv(1024)
|
||||||
if not raw:
|
if not raw:
|
||||||
print ("Unable to connect to %s:%d" % (self.host, self.port))
|
print ("Unable to connect to %s:%d" % (self.host, self.port))
|
||||||
|
|
@ -170,6 +171,12 @@ class IRCServer(server.Server):
|
||||||
self.connected = True
|
self.connected = True
|
||||||
print ("Connection to %s:%d completed" % (self.host, self.port))
|
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
|
readbuffer = b'' #Here we store all the messages from server
|
||||||
while not self.stop:
|
while not self.stop:
|
||||||
readbuffer = readbuffer + raw
|
readbuffer = readbuffer + raw
|
||||||
|
|
@ -205,7 +212,7 @@ class IRCServer(server.Server):
|
||||||
|
|
||||||
def send_pong(self, cnt):
|
def send_pong(self, cnt):
|
||||||
"""Send a PONG command to the server with argument 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):
|
def msg_treated(self, origin):
|
||||||
"""Do nothing; here for implement abstract class"""
|
"""Do nothing; here for implement abstract class"""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue