X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Foidentdconfiggenerator.cpp;h=2e6e0ca2247a6f8f444df2ae2a68a1f4e3d2481b;hp=779a50c9b33342616b84dc55f78b8df05a79f6b7;hb=f81ad4f71a532ca310fae0fbe2f412bde9a37521;hpb=03eb5a574ec55546c62336428c7a9caa63b45a7a diff --git a/src/core/oidentdconfiggenerator.cpp b/src/core/oidentdconfiggenerator.cpp index 779a50c9..2e6e0ca2 100644 --- a/src/core/oidentdconfiggenerator.cpp +++ b/src/core/oidentdconfiggenerator.cpp @@ -39,7 +39,7 @@ bool OidentdConfigGenerator::init() { quasselStanza = QRegExp(QString("^lport .* { .* } #%1$").arg(configTag)); - if (update()) + if (parseConfig(true) && writeConfig()) _initialized = true; qDebug() << "konichi wa °-°"; @@ -47,16 +47,21 @@ bool OidentdConfigGenerator::init() { return _initialized; } -bool OidentdConfigGenerator::update() { - if (parseConfig()) - qDebug() << "oidentd config parsed successfully"; - else - qDebug() << QString("parsing oidentd config failed (%1 [%2])").arg(_configFile->errorString()).arg(_configFile->error()); +bool OidentdConfigGenerator::addSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort) { + qDebug() << "localAddress" << localAddress; + qDebug() << "localPort" << localPort; + qDebug() << "peerAddress" << peerAddress; + qDebug() << "peerPort" << peerPort; + qDebug() << "ident" << identity->ident(); + + QString ident = identity->ident(); + + _config.append(QString("lport %1 { reply \"%2\" } #%3\n").arg(localPort).arg(ident).arg(configTag)); return writeConfig(); } -bool OidentdConfigGenerator::parseConfig() { +bool OidentdConfigGenerator::parseConfig(bool stripQuasselStanzas) { qDebug() << "_configFile name" << _configFile->fileName(); qDebug() << "open?" << _configFile->isOpen(); if (!_configFile->isOpen() && !_configFile->open(QIODevice::ReadWrite)) @@ -66,7 +71,7 @@ bool OidentdConfigGenerator::parseConfig() { while (!_configFile->atEnd()) { QByteArray line = _configFile->readLine(); - if (checkLine(line)) + if (!stripQuasselStanzas || checkLine(line)) parsedConfig.append(line); } @@ -76,7 +81,14 @@ bool OidentdConfigGenerator::parseConfig() { } bool OidentdConfigGenerator::writeConfig() { - return true; + if (!_configFile->isOpen() && !_configFile->open(QIODevice::ReadWrite)) + return false; + + //FIXME: thread safety + QTextStream out(_configFile); + out << _config; + + return _configFile->flush(); } bool OidentdConfigGenerator::checkLine(const QByteArray &line) {