fix OidentdConfigGenerator includes
[quassel.git] / src / core / oidentdconfiggenerator.h
index f4e819f..edc5900 100644 (file)
 #include <QFile>
 #include <QDateTime>
 #include <QHostAddress>
+#include <QMutex>
+#include <QByteArray>
 
+#ifndef Q_OS_WIN32
+#  include <sys/types.h>
+#  include <sys/stat.h>
+#endif /* Q_OS_WIN32 */
+
+#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);
+  ~OidentdConfigGenerator();
 
-  QDir configDir;
-  QString configFileName;
-    
-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 readQuasselStanzas = false);
+  bool lineByUs(const QByteArray &line);
 
   bool _initialized;
   QDateTime _lastSync;
   QFile *_configFile;
-  QByteArray _config;
+  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 quasselStanza;
+  QRegExp quasselStanzaRx;
+  QString quasselStanzaTemplate;
 };
 
 #endif // OIDENTDCONFIGGENERATOR_H