summaryrefslogtreecommitdiff
path: root/ircserver.cpp
diff options
context:
space:
mode:
authorTreeki <treeki@gmail.com>2014-01-21 01:01:43 +0100
committerTreeki <treeki@gmail.com>2014-01-21 01:01:43 +0100
commit26ad55851febe624145ac807dbf59376ba669eaf (patch)
tree4746daf7d106a18f17f9d96966800b04b6d148bc /ircserver.cpp
parent8b32f42df825a03284f5c340499394b93dc1a65d (diff)
downloadbounce4-26ad55851febe624145ac807dbf59376ba669eaf.tar.gz
bounce4-26ad55851febe624145ac807dbf59376ba669eaf.zip
refactoring: add event handling functions to the Server/IRCServer interface
Diffstat (limited to '')
-rw-r--r--ircserver.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/ircserver.cpp b/ircserver.cpp
index 94456dc..8ccdbb9 100644
--- a/ircserver.cpp
+++ b/ircserver.cpp
@@ -7,3 +7,31 @@ IRCServer::IRCServer(Bouncer *_bouncer) : Server(_bouncer) {
void IRCServer::connect() {
Server::connect(config.hostname, config.port, config.useTls);
}
+
+
+void IRCServer::connectedEvent() {
+ printf("[IRCServer:%p] connectedEvent\n", this);
+
+ char buf[2048];
+
+ if (strlen(config.password) > 0) {
+ sprintf(buf, "PASS %s", config.password);
+ sendLine(buf);
+ }
+
+ sprintf(buf, "USER %s 0 * :%s\r\nNICK %s",
+ config.username, config.realname, config.nickname);
+ sendLine(buf);
+}
+void IRCServer::disconnectedEvent() {
+ printf("[IRCServer:%p] disconnectedEvent\n", this);
+}
+void IRCServer::lineReceivedEvent(char *line, int size) {
+ printf("[%d] { %s }\n", size, line);
+
+ Buffer pkt;
+ pkt.writeStr(line, size);
+ for (int i = 0; i < bouncer->clientCount; i++)
+ if (bouncer->clients[i]->authState == Client::AS_AUTHED)
+ bouncer->clients[i]->sendPacket(Packet::B2C_STATUS, pkt);
+}