diff options
Diffstat (limited to 'tdeioslave/sieve/sieve.h')
-rw-r--r-- | tdeioslave/sieve/sieve.h | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/tdeioslave/sieve/sieve.h b/tdeioslave/sieve/sieve.h new file mode 100644 index 000000000..09cf3060b --- /dev/null +++ b/tdeioslave/sieve/sieve.h @@ -0,0 +1,133 @@ +/*************************************************************************** + sieve.h - description + ------------------- + begin : Thu Dec 20 18:47:08 EST 2001 + copyright : (C) 2001 by Hamish Rodda + email : meddie@yoyo.cc.monash.edu.au + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License version 2 as * + * published by the Free Software Foundation. * + * * + ***************************************************************************/ +#ifndef __sieve_h__ +#define __sieve_h__ + +#include <tdeio/tcpslavebase.h> +#include <tdeio/authinfo.h> + +#include <tqstring.h> +#include <tqcstring.h> +#include <tqstringlist.h> + +class KDESasl; +class KURL; + + +class tdeio_sieveResponse +{ +public: + enum responses { NONE, KEY_VAL_PAIR, ACTION, QUANTITY }; + + tdeio_sieveResponse(); + + const uint& getType() const; + + const TQCString& getAction() const; + const uint getQuantity() const; + const TQCString& getKey() const; + const TQCString& getVal() const; + const TQCString& getExtra() const; + + void setQuantity(const uint& quantity); + void setAction(const TQCString& newAction); + void setKey(const TQCString& newKey); + void setVal(const TQCString& newVal); + void setExtra(const TQCString& newExtra); + + void clear(); + +protected: + uint rType; + uint quantity; + TQCString key; + TQCString val; + TQCString extra; +}; + +class tdeio_sieveProtocol : public TDEIO::TCPSlaveBase +{ + +public: + enum connectionModes { NORMAL, CONNECTION_ORIENTED }; + enum Results { OK, NO, BYE, OTHER }; + + tdeio_sieveProtocol(const TQCString &pool_socket, const TQCString &app_socket); + virtual ~tdeio_sieveProtocol(); + + virtual void mimetype(const KURL& url); + virtual void get(const KURL& url); + virtual void put(const KURL& url, int permissions, bool overwrite, bool resume); + virtual void del(const KURL &url, bool isfile); + + virtual void listDir(const KURL& url); + virtual void chmod(const KURL& url, int permissions); + virtual void stat(const KURL& url); + + virtual void setHost(const TQString &host, int port, const TQString &user, const TQString &pass); + virtual void openConnection(); + virtual void closeConnection(); + //virtual void slave_status(); + + /** + * Special commands supported by this slave: + * 1 - activate script + * 2 - deactivate (all - only one active at any one time) scripts + * 3 - request capabilities, returned as metadata + */ + virtual void special(const TQByteArray &data); + bool activate(const KURL& url); + bool deactivate(); + +protected: + bool connect(bool useTLSIfAvailable = true); + bool authenticate(); + void disconnect(bool forcibly = false); + void changeCheck( const KURL &url ); + + bool sendData(const TQCString &data); + bool receiveData(bool waitForData = true, TQCString *reparse = 0); + bool operationSuccessful(); + int operationResult(); + + bool parseCapabilities(bool requestCapabilities = false); + bool saslInteract( void *in, TDEIO::AuthInfo &ai ); + + // IOSlave global data + uint m_connMode; + + // Host-specific data + TQStringList m_sasl_caps; + bool m_supportsTLS; + + // Global server respose class + tdeio_sieveResponse r; + + // connection details + TQString m_sServer; + TQString m_sUser; + TQString m_sPass; + TQString m_sAuth; + bool m_shouldBeConnected; + bool m_allowUnencrypted; + +private: + bool requestCapabilitiesAfterStartTLS() const; + + TQString m_implementation; +}; + +#endif |