modernize: Prefer default member init over ctor init
[quassel.git] / src / core / oidentdconfiggenerator.h
index dbc58d1..ee3e53c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2012 by the Quassel Project                             *
+ *   Copyright (C) 2005-2018 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   You should have received a copy of the GNU General Public License     *
  *   along with this program; if not, write to the                         *
  *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
 #ifndef OIDENTDCONFIGGENERATOR_H
 #define OIDENTDCONFIGGENERATOR_H
 
 #include <QObject>
+#include <QString>
 #include <QDir>
 #include <QFile>
 #include <QDateTime>
 #include <QHostAddress>
+#include <QMutex>
+#include <QByteArray>
 
 #include "quassel.h"
 #include "coreidentity.h"
-#include <QDebug>
+
+//!  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
 public:
-  explicit OidentdConfigGenerator(QObject *parent = 0);
+    explicit OidentdConfigGenerator(QObject *parent = nullptr);
+    ~OidentdConfigGenerator() override;
 
-signals:
-    
 public slots:
-  bool addSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort);
+    bool addSocket(const CoreIdentity *identity, const QHostAddress &localAddress,
+                   quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort,
+                   qint64 socketId);
+    bool removeSocket(const CoreIdentity *identity, const QHostAddress &localAddress,
+                      quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort,
+                      qint64 socketId);
 
 private:
-  bool init();
-  bool writeConfig();
-  bool parseConfig(bool stripQuasselStanzas = false);
-  bool checkLine(const QByteArray &line);
-
-  bool _initialized;
-  QDateTime _lastSync;
-  QFile *_configFile;
-  QByteArray _config;
-
-  QDir configDir;
-  QString configFileName;
-  QString configPath;
-  QString configTag;
-  QRegExp quasselStanza;
+    QString sysIdentForIdentity(const CoreIdentity *identity) const;
+    bool init();
+    bool writeConfig();
+    bool parseConfig(bool readQuasselStanzas = false);
+    bool lineByUs(const QByteArray &line);
+
+    bool _initialized{false};
+    bool _strict;
+    QDateTime _lastSync;
+    QFile *_configFile;
+    QByteArray _parsedConfig;
+    QByteArray _quasselConfig;
+    // Mutex isn't strictly necessary at the moment, since with the current invocation in Core only one instance at a time exists
+    QMutex _mutex;
+
+    QDir _configDir;
+    QString _configFileName;
+    QString _configPath;
+    QString _configTag;
+    QRegExp _quasselStanzaRx;
+    QString _quasselStanzaTemplate;
 };
 
+
 #endif // OIDENTDCONFIGGENERATOR_H