bool OidentdConfigGenerator::init() {
configDir = QDir::homePath();
configFileName = ".oidentd.conf";
+
+ if(Quassel::isOptionSet("oidentd-conffile"))
+ configPath = Quassel::optionValue("oidentd-conffile");
+ else
+ configPath = configDir.absoluteFilePath(configFileName);
+
configTag = " stanza created by Quassel";
- _configFile = new QFile(configDir.absoluteFilePath(configFileName));
+ _configFile = new QFile(configPath);
qDebug() << "1: _configFile" << _configFile->fileName();
quasselStanza = QRegExp(QString("^lport .* { .* } #%1$").arg(configTag));
- if (update())
+ if (parseConfig(true) && writeConfig())
_initialized = true;
qDebug() << "konichi wa °-°";
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))
while (!_configFile->atEnd()) {
QByteArray line = _configFile->readLine();
- if (checkLine(line))
+ if (!stripQuasselStanzas || checkLine(line))
parsedConfig.append(line);
}
}
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) {