Qt 4.8
|
Pass-through QIODevice sub-class for authentication. More...
#include <qtransportauth_qws.h>
Public Types | |
enum | AuthDirection { Receive, Send } |
Public Types inherited from QIODevice | |
enum | OpenModeFlag { NotOpen = 0x0000, ReadOnly = 0x0001, WriteOnly = 0x0002, ReadWrite = ReadOnly | WriteOnly, Append = 0x0004, Truncate = 0x0008, Text = 0x0010, Unbuffered = 0x0020 } |
This enum is used with open() to describe the mode in which a device is opened. More... | |
Public Functions | |
bool | atEnd () const |
Returns true if the current read and write position is at the end of the device (i.e. More... | |
QByteArray & | buffer () |
qint64 | bytesAvailable () const |
Returns the number of bytes that are available for reading. More... | |
qint64 | bytesToWrite () const |
For buffered devices, this function returns the number of bytes waiting to be written. More... | |
QObject * | client () const |
bool | isSequential () const |
Returns true if this device is sequential; otherwise returns false. More... | |
QAuthDevice (QIODevice *, QTransportAuth::Data *, AuthDirection) | |
Constructs a new auth device for the transport data and I/O device parent. More... | |
bool | seek (qint64) |
For random-access devices, this function sets the current position to pos, returning true on success, or false if an error occurred. More... | |
void | setClient (QObject *) |
void | setRequestAnalyzer (RequestAnalyzer *) |
void | setTarget (QIODevice *t) |
QIODevice * | target () const |
~QAuthDevice () | |
Public Functions inherited from QIODevice | |
virtual bool | canReadLine () const |
Returns true if a complete line of data can be read from the device; otherwise returns false. More... | |
virtual void | close () |
First emits aboutToClose(), then closes the device and sets its OpenMode to NotOpen. More... | |
QString | errorString () const |
Returns a human-readable description of the last device error that occurred. More... | |
bool | getChar (char *c) |
Reads one character from the device and stores it in c. More... | |
bool | isOpen () const |
Returns true if the device is open; otherwise returns false. More... | |
bool | isReadable () const |
Returns true if data can be read from the device; otherwise returns false. More... | |
bool | isTextModeEnabled () const |
Returns true if the Text flag is enabled; otherwise returns false. More... | |
bool | isWritable () const |
Returns true if data can be written to the device; otherwise returns false. More... | |
virtual bool | open (OpenMode mode) |
Opens the device and sets its OpenMode to mode. More... | |
OpenMode | openMode () const |
Returns the mode in which the device has been opened; i.e. More... | |
qint64 | peek (char *data, qint64 maxlen) |
Reads at most maxSize bytes from the device into data, without side effects (i. More... | |
QByteArray | peek (qint64 maxlen) |
Peeks at most maxSize bytes from the device, returning the data peeked as a QByteArray. More... | |
virtual qint64 | pos () const |
For random-access devices, this function returns the position that data is written to or read from. More... | |
bool | putChar (char c) |
Writes the character c to the device. More... | |
QIODevice () | |
Constructs a QIODevice object. More... | |
QIODevice (QObject *parent) | |
Constructs a QIODevice object with the given parent. More... | |
qint64 | read (char *data, qint64 maxlen) |
Reads at most maxSize bytes from the device into data, and returns the number of bytes read. More... | |
QByteArray | read (qint64 maxlen) |
Reads at most maxSize bytes from the device, and returns the data read as a QByteArray. More... | |
QByteArray | readAll () |
Reads all available data from the device, and returns it as a QByteArray. More... | |
qint64 | readLine (char *data, qint64 maxlen) |
This function reads a line of ASCII characters from the device, up to a maximum of maxSize - 1 bytes, stores the characters in data, and returns the number of bytes read. More... | |
QByteArray | readLine (qint64 maxlen=0) |
Reads a line from the device, but no more than maxSize characters, and returns the result as a QByteArray. More... | |
virtual bool | reset () |
Seeks to the start of input for random-access devices. More... | |
void | setTextModeEnabled (bool enabled) |
If enabled is true, this function sets the Text flag on the device; otherwise the Text flag is removed. More... | |
virtual qint64 | size () const |
For open random-access devices, this function returns the size of the device. More... | |
void | ungetChar (char c) |
Puts the character c back into the device, and decrements the current position unless the position is 0. More... | |
virtual bool | waitForBytesWritten (int msecs) |
For buffered devices, this function waits until a payload of buffered written data has been written to the device and the bytesWritten() signal has been emitted, or until msecs milliseconds have passed. More... | |
virtual bool | waitForReadyRead (int msecs) |
Blocks until new data is available for reading and the readyRead() signal has been emitted, or until msecs milliseconds have passed. More... | |
qint64 | write (const char *data, qint64 len) |
Writes at most maxSize bytes of data from data to the device. More... | |
qint64 | write (const char *data) |
Writes data from a zero-terminated string of 8-bit characters to the device. More... | |
qint64 | write (const QByteArray &data) |
Writes the content of byteArray to the device. More... | |
virtual | ~QIODevice () |
The destructor is virtual, and QIODevice is an abstract base class. More... | |
Public Functions inherited from QObject | |
bool | blockSignals (bool b) |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More... | |
const QObjectList & | children () const |
Returns a list of child objects. More... | |
bool | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0) |
bool | disconnect (const QObject *receiver, const char *member=0) |
void | dumpObjectInfo () |
Dumps information about signal connections, etc. More... | |
void | dumpObjectTree () |
Dumps a tree of children to the debug output. More... | |
QList< QByteArray > | dynamicPropertyNames () const |
Returns the names of all properties that were dynamically added to the object using setProperty(). More... | |
virtual bool | event (QEvent *) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. More... | |
virtual bool | eventFilter (QObject *, QEvent *) |
Filters events if this object has been installed as an event filter for the watched object. More... | |
template<typename T > | |
T | findChild (const QString &aName=QString()) const |
Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More... | |
template<typename T > | |
QList< T > | findChildren (const QString &aName=QString()) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More... | |
template<typename T > | |
QList< T > | findChildren (const QRegExp &re) const |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More... | |
void | installEventFilter (QObject *) |
Installs an event filter filterObj on this object. More... | |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false. More... | |
void | killTimer (int id) |
Kills the timer with timer identifier, id. More... | |
virtual const QMetaObject * | metaObject () const |
Returns a pointer to the meta-object of this object. More... | |
void | moveToThread (QThread *thread) |
Changes the thread affinity for this object and its children. More... | |
QString | objectName () const |
QObject * | parent () const |
Returns a pointer to the parent object. More... | |
QVariant | property (const char *name) const |
Returns the value of the object's name property. More... | |
Q_INVOKABLE | QObject (QObject *parent=0) |
Constructs an object with parent object parent. More... | |
void | removeEventFilter (QObject *) |
Removes an event filter object obj from this object. More... | |
void | setObjectName (const QString &name) |
void | setParent (QObject *) |
Makes the object a child of parent. More... | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. More... | |
void | setUserData (uint id, QObjectUserData *data) |
bool | signalsBlocked () const |
Returns true if signals are blocked; otherwise returns false. More... | |
int | startTimer (int interval) |
Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More... | |
QThread * | thread () const |
Returns the thread in which the object lives. More... | |
QObjectUserData * | userData (uint id) const |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. More... | |
Protected Functions | |
qint64 | readData (char *, qint64) |
Reimplement from QIODevice. More... | |
qint64 | writeData (const char *, qint64) |
Reimplement QIODevice writeData method. More... | |
Protected Functions inherited from QIODevice | |
QIODevice (QIODevicePrivate &dd, QObject *parent=0) | |
virtual qint64 | readLineData (char *data, qint64 maxlen) |
Reads up to maxSize characters into data and returns the number of characters read. More... | |
void | setErrorString (const QString &errorString) |
Sets the human readable description of the last device error that occurred to str. More... | |
void | setOpenMode (OpenMode openMode) |
Sets the OpenMode of the device to openMode. More... | |
Protected Functions inherited from QObject | |
virtual void | childEvent (QChildEvent *) |
This event handler can be reimplemented in a subclass to receive child events. More... | |
virtual void | connectNotify (const char *signal) |
This virtual function is called when something has been connected to signal in this object. More... | |
virtual void | customEvent (QEvent *) |
This event handler can be reimplemented in a subclass to receive custom events. More... | |
virtual void | disconnectNotify (const char *signal) |
This virtual function is called when something has been disconnected from signal in this object. More... | |
QObject (QObjectPrivate &dd, QObject *parent=0) | |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. More... | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More... | |
int | senderSignalIndex () const |
virtual void | timerEvent (QTimerEvent *) |
This event handler can be reimplemented in a subclass to receive timer events for the object. More... | |
Private Slots | |
void | recvReadyRead () |
Receive readyRead signal from the target recv device. More... | |
void | targetBytesWritten (qint64) |
Private Functions | |
bool | authorizeMessage () |
Properties | |
RequestAnalyzer * | analyzer |
QTransportAuth::Data * | d |
qint64 | m_bytesAvailable |
QObject * | m_client |
qint64 | m_skipWritten |
QIODevice * | m_target |
QByteArray | msgQueue |
AuthDirection | way |
Additional Inherited Members | |
Public Slots inherited from QObject | |
void | deleteLater () |
Schedules this object for deletion. More... | |
Signals inherited from QIODevice | |
void | aboutToClose () |
This signal is emitted when the device is about to close. More... | |
void | bytesWritten (qint64 bytes) |
This signal is emitted every time a payload of data has been written to the device. More... | |
void | readChannelFinished () |
This signal is emitted when the input (reading) stream is closed in this device. More... | |
void | readyRead () |
This signal is emitted once every time new data is available for reading from the device. More... | |
Signals inherited from QObject | |
void | destroyed (QObject *=0) |
This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More... | |
Static Public Functions inherited from QObject | |
static bool | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More... | |
static bool | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
Disconnects signal in object sender from method in object receiver. More... | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static uint | registerUserData () |
static QString | tr (const char *sourceText, const char *comment=0, int n=-1) |
static QString | trUtf8 (const char *sourceText, const char *comment=0, int n=-1) |
Static Public Variables inherited from QObject | |
static const QMetaObject | staticMetaObject |
This variable stores the meta-object for the class. More... | |
Protected Variables inherited from QObject | |
QScopedPointer< QObjectData > | d_ptr |
Static Protected Variables inherited from QObject | |
static const QMetaObject | staticQtMetaObject |
Related Functions inherited from QObject | |
T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QRegExp ®Exp)() |
T * | qobject_cast (QObject *object) |
QObjectList | |
void * | qt_find_obj_child (QObject *parent, const char *type, const QString &name) |
Returns a pointer to the object named name that inherits type and with a given parent. More... | |
Pass-through QIODevice sub-class for authentication.
Use this class to forward on or receive forwarded data over a real device for authentication.
Definition at line 201 of file qtransportauth_qws.h.
Enumerator | |
---|---|
Receive | |
Send |
Definition at line 205 of file qtransportauth_qws.h.
QAuthDevice::QAuthDevice | ( | QIODevice * | parent, |
QTransportAuth::Data * | data, | ||
AuthDirection | dir | ||
) |
Constructs a new auth device for the transport data and I/O device parent.
Incoming or outgoing data will be authenticated according to the auth direction dir.
The auth device will take ownership of the transport data and delete it when the device is destroyed.
Definition at line 877 of file qtransportauth_qws.cpp.
QAuthDevice::~QAuthDevice | ( | ) |
Definition at line 900 of file qtransportauth_qws.cpp.
|
inlinevirtual |
Returns true if the current read and write position is at the end of the device (i.e.
there is no more data available for reading on the device); otherwise returns false.
For some devices, atEnd() can return true even though there is more data to read. This special case only applies to devices that generate data in direct response to you calling read() (e.g., /dev
or /proc
files on Unix and Mac OS X, or console input / stdin
on all platforms).
Reimplemented from QIODevice.
Definition at line 253 of file qtransportauth_qws.h.
|
private |
The request and other data on the connection (id, PID, etc.) are forwarded to all policy listeners by emitting a signal.
The signal must be processed synchronously because on return the allow/deny status is used immediately to either drop or continue processing the message.
Definition at line 1140 of file qtransportauth_qws.cpp.
Referenced by recvReadyRead().
|
inline |
Definition at line 271 of file qtransportauth_qws.h.
|
inlinevirtual |
Returns the number of bytes that are available for reading.
This function is commonly used with sequential devices to determine the number of bytes to allocate in a buffer before reading.
Subclasses that reimplement this function must call the base implementation in order to include the size of QIODevices' buffer. Example:
Reimplemented from QIODevice.
Definition at line 258 of file qtransportauth_qws.h.
|
inlinevirtual |
For buffered devices, this function returns the number of bytes waiting to be written.
For devices with no buffer, this function returns 0.
Reimplemented from QIODevice.
Definition at line 266 of file qtransportauth_qws.h.
QObject * QAuthDevice::client | ( | ) | const |
Definition at line 922 of file qtransportauth_qws.cpp.
Referenced by QWSServerPrivate::_q_doClient().
|
inlinevirtual |
Returns true if this device is sequential; otherwise returns false.
Sequential devices, as opposed to a random-access devices, have no concept of a start, an end, a size, or a current position, and they do not support seeking. You can only read from the device when it reports that data is available. The most common example of a sequential device is a network socket. On Unix, special files such as /dev/zero and fifo pipes are sequential.
Regular files, on the other hand, do support random access. They have both a size and a current position, and they also support seeking backwards and forwards in the data stream. Regular files are non-sequential.
The QIODevice implementation returns false.
Reimplemented from QIODevice.
Definition at line 243 of file qtransportauth_qws.h.
Reimplement from QIODevice.
Read data out of the internal message queue, reduce the queue by the amount read. Note that the amount available is only ever the size of a command (although a command can be very big) since we need to check at command boundaries for new authentication headers.
Implements QIODevice.
Definition at line 1013 of file qtransportauth_qws.cpp.
|
privateslot |
Receive readyRead signal from the target recv device.
Authorizing involves first checking the transport is valid, ie the handshake has either already been done and is cached on a trusted transport, or was valid with this message; then second passing the string representation of the service request up to any policyReceivers
If either of these fail, the message is denied. In discovery mode denied messages are allowed, but the message is logged.
Definition at line 1051 of file qtransportauth_qws.cpp.
Referenced by QAuthDevice().
|
inlinevirtual |
For random-access devices, this function sets the current position to pos, returning true on success, or false if an error occurred.
For sequential devices, the default behavior is to do nothing and return false.
When subclassing QIODevice, you must call QIODevice::seek() at the start of your function to ensure integrity with QIODevice's built-in buffer. The base implementation always returns true.
Reimplemented from QIODevice.
Definition at line 248 of file qtransportauth_qws.h.
void QAuthDevice::setClient | ( | QObject * | cli | ) |
Definition at line 912 of file qtransportauth_qws.cpp.
Referenced by QWSServerPrivate::_q_newConnection(), QWSDisplay::Data::init(), and QWSDisplay::Data::reinit().
void QAuthDevice::setRequestAnalyzer | ( | RequestAnalyzer * | ra | ) |
Definition at line 1172 of file qtransportauth_qws.cpp.
|
inline |
Definition at line 211 of file qtransportauth_qws.h.
|
inline |
Definition at line 212 of file qtransportauth_qws.h.
|
privateslot |
Definition at line 1115 of file qtransportauth_qws.cpp.
Referenced by QAuthDevice().
Reimplement QIODevice writeData method.
For client end, when the device is written to the incoming data is processed and an authentication header calculated. This is pushed into the target device, followed by the actual incoming data (the payload).
For server end, it is a fatal error to write to the device.
Implements QIODevice.
Definition at line 966 of file qtransportauth_qws.cpp.
|
private |
Definition at line 240 of file qtransportauth_qws.h.
Referenced by authorizeMessage(), setRequestAnalyzer(), and ~QAuthDevice().
|
private |
Definition at line 232 of file qtransportauth_qws.h.
Referenced by authorizeMessage(), recvReadyRead(), writeData(), and ~QAuthDevice().
|
private |
Definition at line 237 of file qtransportauth_qws.h.
Referenced by authorizeMessage(), and readData().
|
private |
Definition at line 235 of file qtransportauth_qws.h.
Referenced by client(), and setClient().
|
private |
Definition at line 238 of file qtransportauth_qws.h.
Referenced by targetBytesWritten(), and writeData().
|
private |
Definition at line 234 of file qtransportauth_qws.h.
Referenced by QAuthDevice(), readData(), recvReadyRead(), and writeData().
|
private |
Definition at line 236 of file qtransportauth_qws.h.
Referenced by authorizeMessage(), readData(), and recvReadyRead().
|
private |
Definition at line 233 of file qtransportauth_qws.h.
Referenced by readData(), and writeData().