From 11cecc112915cd9940e7612c05091f9b5bb18b00 Mon Sep 17 00:00:00 2001 From: Daniel Albers Date: Wed, 8 Feb 2012 23:22:23 +0100 Subject: [PATCH] make oidentd config world readable by default and add some documentation --- src/core/oidentdconfiggenerator.cpp | 14 +++++++++++--- src/core/oidentdconfiggenerator.h | 24 ++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/core/oidentdconfiggenerator.cpp b/src/core/oidentdconfiggenerator.cpp index df3f8c48..0f653497 100644 --- a/src/core/oidentdconfiggenerator.cpp +++ b/src/core/oidentdconfiggenerator.cpp @@ -71,14 +71,17 @@ bool OidentdConfigGenerator::addSocket(const CoreIdentity *identity, const QHost return ret; } -// not yet implemented +//! 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 readQuasselStanzas) { - if (!_configFile->isOpen() && !_configFile->open(QIODevice::ReadWrite)) + if (!_configFile->exists()) + return true; + + if (!_configFile->isOpen() && !_configFile->open(QIODevice::ReadOnly)) return false; _mutex.lock(); @@ -99,8 +102,13 @@ bool OidentdConfigGenerator::parseConfig(bool readQuasselStanzas) { } bool OidentdConfigGenerator::writeConfig() { - if (!_configFile->isOpen() && !_configFile->open(QIODevice::ReadWrite | QIODevice::Text)) + mode_t prev_umask = umask(S_IXUSR | S_IWGRP | S_IXGRP | S_IWOTH | S_IXOTH); // == 0133, rw-r--r-- + bool not_open = (!_configFile->isOpen() && !_configFile->open(QIODevice::ReadWrite | QIODevice::Text)); + umask(prev_umask); + + if (not_open) return false; + _mutex.lock(); _configFile->seek(0); diff --git a/src/core/oidentdconfiggenerator.h b/src/core/oidentdconfiggenerator.h index 81ee21c4..666242db 100644 --- a/src/core/oidentdconfiggenerator.h +++ b/src/core/oidentdconfiggenerator.h @@ -28,9 +28,31 @@ #include #include +#ifndef Q_OS_WIN32 +# include +# include +#endif /* Q_OS_WIN32 */ + #include "quassel.h" #include "coreidentity.h" +//! Produces oidentd configuration files +/*! + Upon IRC connect this class puts the clients' ident data into an oidentd configuration file. + + The default path is <~/.oidentd.conf>. + + For oidentd to incorporate this file, the global oidentd.conf has to state something like this: + + user "quassel" { + default { + allow spoof + allow spoof_all + } + } + +*/ + class OidentdConfigGenerator : public QObject { Q_OBJECT @@ -38,8 +60,6 @@ public: explicit OidentdConfigGenerator(QObject *parent = 0); ~OidentdConfigGenerator(); -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); -- 2.20.1