QByteArray SNAC::header() const { DataUnit data; data.append<quint16>(m_family); data.append<quint16>(m_subtype); data.append<quint16>(m_flags); data.append<quint32>(m_id); return data.data(); }
void Channel1MessageData::init(const QByteArray &message, Channel1Codec charset) { DataUnit msgData; msgData.append<quint16>(charset); msgData.append<quint16>(0); msgData.append(message); appendTLV(0x0501, (quint32) 0x0106); appendTLV(0x0101, msgData.data()); }
void OftHeader::writeData(QIODevice *dev) { DataUnit data; debug() << "Outgoing oft message with type" << hex << type; data.append<quint16>(type); data.append<quint64>(cookie); data.append<quint16>(encrypt); data.append<quint16>(compress); data.append<quint16>(totalFiles); data.append<quint16>(filesLeft); data.append<quint16>(totalParts); data.append<quint16>(partsLeft); data.append<quint32>(totalSize); data.append<quint32>(size); data.append<quint32>(modTime); data.append<quint32>(checksum); data.append<quint32>(receivedResourceForkChecksum); data.append<quint32>(resourceForkSize); data.append<quint32>(creationTime); data.append<quint32>(resourceForkChecksum); data.append<quint32>(bytesReceived); data.append<quint32>(receivedChecksum); { QByteArray ident = identification.toLatin1(); resizeArray(ident, 32); data.append(ident); } data.append<quint8>(flags); data.append<quint8>(0x1C); data.append<quint8>(0x11); { QByteArray dummy; resizeArray(dummy, 69); data.append(dummy); } resizeArray(macFileInfo, 16); data.append(macFileInfo); data.append<quint16>(CodecUtf16Be); data.append<quint16>(0); { QByteArray name = utf16Codec()->fromUnicode(fileName); name = name.mid(2); if (name.size() < 64) resizeArray(name, 64); else name.append("\0\0"); data.append(name); } DataUnit header; header.append<quint32>(0x4F465432); // Protocol version: "OFT2" header.append<quint16>(data.dataSize() + 6); header.append(data); dev->write(header.data()); }
void OftSocket::connected() { m_timer.stop(); if (m_state & Proxy) { DataUnit data; data.append<quint8>(m_client->uin(), m_client->asciiCodec()); // uin or screen name if (m_state == ProxyReceive) data.append<quint16>(m_proxyPort); data.append<quint64>(m_cookie); data.appendTLV(0x0001, ICQ_CAPABILITY_AIMSENDFILE); // capability DataUnit header; header.append<quint16>(10 + data.dataSize()); header.append<quint16>(0x044A); // proto version header.append<quint16>(m_state == ProxyInit ? 0x0002 : 0x0004); // request cmd header.append<quint32>(0); // unknown header.append<quint16>(0); // flags header.append(data.data()); write(header.data()); flush(); } else { emit initialized(); } }
XtrazData::XtrazData(const QString &body, const Cookie &cookie) : Tlv2711(MsgPlugin, 0, 0, 1, cookie) { appendEmptyPacket(); // Plugin type ID append<quint16>(0x04f, LittleEndian); // Length append(Capability(0x3b60b3ef, 0xd82a6c45, 0xa4e09c5a, 0x5e67e865)); // type: xtraz script append<quint16>(xtrazNotify, LittleEndian); // Function ID append<quint32>(0x002a, LittleEndian); // Request type append(QString("Script Plug-in: Remote Notification Arrive")); // unknown append<quint32>(0x00000100); append<quint32>(0x00000000); append<quint32>(0x00000000); append<quint16>(0x0000); append<quint8>(0x00); // data DataUnit data; data.append<quint32>(body, LittleEndian); append<quint32>(data.data(), LittleEndian); }