From: Daniel Albers Date: Wed, 8 Feb 2012 00:23:36 +0000 (+0100) Subject: OidentdConfigGen: tweak signals, names and stuff X-Git-Tag: 0.8-beta1~18 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=2e80003ab40313767d0624e05533a62e2eee387b OidentdConfigGen: tweak signals, names and stuff --- diff --git a/src/core/corenetwork.cpp b/src/core/corenetwork.cpp index b43bbc29..3d20faf4 100644 --- a/src/core/corenetwork.cpp +++ b/src/core/corenetwork.cpp @@ -79,8 +79,10 @@ CoreNetwork::CoreNetwork(const NetworkId &networkid, CoreSession *session) #endif connect(this, SIGNAL(newEvent(Event *)), coreSession()->eventManager(), SLOT(postEvent(Event *))); - if(Quassel::isOptionSet("oidentd")) - connect(this, SIGNAL(newSocket(const CoreIdentity*,QHostAddress,quint16,QHostAddress,quint16)), Core::instance()->oidentdConfigGenerator(), SLOT(addSocket(const CoreIdentity*,QHostAddress,quint16,QHostAddress,quint16))); + if(Quassel::isOptionSet("oidentd")) { + connect(this, SIGNAL(socketInitialized(const CoreIdentity*,QHostAddress,quint16,QHostAddress,quint16)), Core::instance()->oidentdConfigGenerator(), SLOT(addSocket(const CoreIdentity*,QHostAddress,quint16,QHostAddress,quint16))); + connect(this, SIGNAL(socketDisconnected(const CoreIdentity*,QHostAddress,quint16,QHostAddress,quint16)), Core::instance()->oidentdConfigGenerator(), SLOT(removeSocket(const CoreIdentity*,QHostAddress,quint16,QHostAddress,quint16))); + } } CoreNetwork::~CoreNetwork() { @@ -367,7 +369,7 @@ qDebug() << "connected()"; return; } - emit newSocket(identity, localAddress(), localPort(), peerAddress(), peerPort()); + emit socketInitialized(identity, localAddress(), localPort(), peerAddress(), peerPort()); // TokenBucket to avoid sending too much at once _messageDelay = 2200; // this seems to be a safe value (2.2 seconds delay) @@ -413,6 +415,7 @@ void CoreNetwork::socketDisconnected() { setConnected(false); emit disconnected(networkId()); + emit socketDisconnected(identityPtr(), localAddress(), localPort(), peerAddress(), peerPort()); if(_quitRequested) { _quitRequested = false; setConnectionState(Network::Disconnected); diff --git a/src/core/corenetwork.h b/src/core/corenetwork.h index 0dc6c5f5..005b309e 100644 --- a/src/core/corenetwork.h +++ b/src/core/corenetwork.h @@ -155,7 +155,8 @@ signals: void sslErrors(const QVariant &errorData); void newEvent(Event *event); - void newSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort); + void socketInitialized(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort); + void socketDisconnected(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort); protected: inline virtual IrcChannel *ircChannelFactory(const QString &channelname) { return new CoreIrcChannel(channelname, this); } diff --git a/src/core/oidentdconfiggenerator.cpp b/src/core/oidentdconfiggenerator.cpp index 62d31c25..072b1595 100644 --- a/src/core/oidentdconfiggenerator.cpp +++ b/src/core/oidentdconfiggenerator.cpp @@ -45,10 +45,10 @@ bool OidentdConfigGenerator::init() { quasselStanza = QRegExp(QString("^lport .* { .* } #%1$").arg(configTag)); - if (parseConfig(true) && writeConfig()) + if (parseConfig(false) && writeConfig()) _initialized = true; - qDebug() << "konichi wa °-°"; + qDebug() << "OidentdConfigGenerator" << (!_initialized ? "not" : "") << "initialized"; return _initialized; } @@ -64,12 +64,22 @@ bool OidentdConfigGenerator::addSocket(const CoreIdentity *identity, const QHost _config.append(QString("lport %1 { reply \"%2\" } #%3\n").arg(localPort).arg(ident).arg(configTag)); - return writeConfig(); + bool ret = writeConfig(); + qDebug() << "config written" << ret; + + return ret; } -bool OidentdConfigGenerator::parseConfig(bool stripQuasselStanzas) { +// not yet implemented +bool OidentdConfigGenerator::removeSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort) { + Q_UNUSED(identity) Q_UNUSED(localAddress) Q_UNUSED(localPort) Q_UNUSED(peerAddress) Q_UNUSED(peerPort) + return true; +} + +bool OidentdConfigGenerator::parseConfig(bool keepQuasselStanzas) { qDebug() << "_configFile name" << _configFile->fileName(); qDebug() << "open?" << _configFile->isOpen(); + qDebug() << "keeping our stanzas?" << keepQuasselStanzas; if (!_configFile->isOpen() && !_configFile->open(QIODevice::ReadWrite)) return false; @@ -77,7 +87,9 @@ bool OidentdConfigGenerator::parseConfig(bool stripQuasselStanzas) { while (!_configFile->atEnd()) { QByteArray line = _configFile->readLine(); - if (!stripQuasselStanzas || checkLine(line)) + qDebug() << "line" << line; + qDebug() << "line by us?" << lineByUs(line); + if (keepQuasselStanzas || !lineByUs(line)) parsedConfig.append(line); } @@ -87,7 +99,7 @@ bool OidentdConfigGenerator::parseConfig(bool stripQuasselStanzas) { } bool OidentdConfigGenerator::writeConfig() { - if (!_configFile->isOpen() && !_configFile->open(QIODevice::ReadWrite)) + if (!_configFile->isOpen() && !_configFile->open(QFile::WriteOnly | QFile::Truncate)) return false; //FIXME: thread safety @@ -97,6 +109,6 @@ bool OidentdConfigGenerator::writeConfig() { return _configFile->flush(); } -bool OidentdConfigGenerator::checkLine(const QByteArray &line) { +bool OidentdConfigGenerator::lineByUs(const QByteArray &line) { return !quasselStanza.exactMatch(line); } diff --git a/src/core/oidentdconfiggenerator.h b/src/core/oidentdconfiggenerator.h index dbc58d1a..5d96b6cd 100644 --- a/src/core/oidentdconfiggenerator.h +++ b/src/core/oidentdconfiggenerator.h @@ -41,12 +41,13 @@ signals: public slots: bool addSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort); + bool removeSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort); private: bool init(); bool writeConfig(); - bool parseConfig(bool stripQuasselStanzas = false); - bool checkLine(const QByteArray &line); + bool parseConfig(bool keepQuasselStanzas = true); + bool lineByUs(const QByteArray &line); bool _initialized; QDateTime _lastSync;