X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsignalproxy.h;h=129a6a292f2be1cd4718f6782e8eb7735b458fce;hp=755461e92795b036dd32b6d483e0005e767b6de2;hb=0324c701d9cc8c656e6188b4e102e19e05c98201;hpb=ac21cc48d22f0cf58a98b74754fa94564a8e3f45 diff --git a/src/common/signalproxy.h b/src/common/signalproxy.h index 755461e9..129a6a29 100644 --- a/src/common/signalproxy.h +++ b/src/common/signalproxy.h @@ -106,6 +106,8 @@ public: */ static bool readDataFromDevice(QIODevice *dev, quint32 &blockSize, QVariant &item, bool compressed = false); + bool isSecure() const { return _secure; } + static QString methodBaseName(const QMetaMethod &method); const QList &argTypes(QObject *obj, int methodId); @@ -142,14 +144,18 @@ private slots: void sendHeartBeat(); void receiveHeartBeat(AbstractPeer *peer, const QVariantList ¶ms); void receiveHeartBeatReply(AbstractPeer *peer, const QVariantList ¶ms); - + + void updateSecureState(); + signals: void peerRemoved(QIODevice *dev); void connected(); void disconnected(); void objectInitialized(SyncableObject *); void lagUpdated(int lag); - + void securityChanged(bool); + void secureStateChanged(bool); + private: void init(); void initServer(); @@ -205,6 +211,7 @@ private: virtual ~AbstractPeer() {} inline PeerType type() const { return _type; } virtual void dispatchSignal(const RequestType &requestType, const QVariantList ¶ms) = 0; + virtual bool isSecure() const = 0; private: PeerType _type; }; @@ -213,6 +220,7 @@ private: public: IODevicePeer(QIODevice *device, bool compress) : AbstractPeer(AbstractPeer::IODevicePeer), _device(device), byteCount(0), usesCompression(compress), sentHeartBeats(0), lag(0) {} virtual void dispatchSignal(const RequestType &requestType, const QVariantList ¶ms); + virtual bool isSecure() const; inline void dispatchPackedFunc(const QVariant &packedFunc) { SignalProxy::writeDataToDevice(_device, packedFunc, usesCompression); } QString address() const; inline bool isOpen() const { return _device->isOpen(); } @@ -231,6 +239,7 @@ private: public: SignalProxyPeer(SignalProxy *sender, SignalProxy *receiver) : AbstractPeer(AbstractPeer::SignalProxyPeer), sender(sender), receiver(receiver) {} virtual void dispatchSignal(const RequestType &requestType, const QVariantList ¶ms); + virtual inline bool isSecure() const { return true; } private: SignalProxy *sender; SignalProxy *receiver; @@ -259,6 +268,8 @@ private: ProxyMode _proxyMode; QTimer _heartBeatTimer; + + bool _secure; // determines if all connections are in a secured state (using ssl or internal connections) friend class SignalRelay; };