void fileTransferThread::estabilishFileTransfering( const QByteArray &s ) { qDebug()<<"Estabilishing file transfering"; char packet[28]; quint32 tmp; char str[300]; tmp = ConnectionRequest; memcpy(&packet, &tmp, 4); memcpy(&packet[4], &rndid, 4); char *hash; char username[128]; sprintf(username, settings->profileValue("user/login").toByteArray().data() ); snprintf(str, sizeof(str), "%08X%s%d", rndid, username, rndid ); hash=TlenSha1( str, strlen(str) ); memcpy(&packet[8], hash, 20); if( packet == s ) { qDebug()<<"Hash control"; server->close(); char head[8]; char ack[4]; quint32 tmp; memcpy(&ack, &rndid, 4); tmp = ConnectionRequestAck; memcpy(&head, &tmp, 4); tmp=4; memcpy(&head[4], &tmp, 4); socket->write(head, 8); socket->write(ack, 4); sendFileList(); } else { socket->close(); } }
void TlenGetAvatarFileName(TlenProtocol *proto, TLEN_LIST_ITEM *item, TCHAR* ptszDest, int cbLen) { int tPathLen = mir_sntprintf(ptszDest, cbLen, TEXT("%s\\%S"), VARST( TEXT("%miranda_avatarcache%")), proto->m_szModuleName); if (_taccess(ptszDest, 0)) { int ret = CreateDirectoryTreeT(ptszDest); if (ret == 0) proto->debugLog(_T("getAvatarFilename(): Created new directory for avatar cache: %s."), ptszDest); else { proto->debugLog(_T("getAvatarFilename(): Can not create directory for avatar cache: %s. errno=%d: %s"), ptszDest, errno, strerror(errno)); TCHAR buffer[512]; mir_sntprintf(buffer, SIZEOF(buffer), TranslateT("Cannot create avatars cache directory. ERROR: %d: %s\n%s"), errno, _tcserror(errno), ptszDest); PUShowMessageT(buffer, SM_WARNING); } } int format = PA_FORMAT_PNG; ptszDest[ tPathLen++ ] = '\\'; if (item != NULL) format = item->avatarFormat; else if (proto->threadData != NULL) format = proto->threadData->avatarFormat; else format = db_get_dw(NULL, proto->m_szModuleName, "AvatarFormat", PA_FORMAT_UNKNOWN); const TCHAR *tszFileType = ProtoGetAvatarExtension(format); if ( item != NULL ) mir_sntprintf(ptszDest + tPathLen, MAX_PATH - tPathLen, TEXT("%S%s"), ptrA( TlenSha1(item->jid)), tszFileType); else mir_sntprintf(ptszDest + tPathLen, MAX_PATH - tPathLen, TEXT("%S_avatar%s"), proto->m_szModuleName, tszFileType); }
void fileTransferThread::estabilishFileReceiving() { qDebug()<<"Estabilishing file receiving"; char head[8]; char packet[28]; quint32 tmp; char str[300]; tmp = ConnectionRequest; memcpy(&packet, &tmp, 4); memcpy(&head, &tmp, 4); memcpy(&packet[4], &rndid, 4); char *hash; char username[128]; sprintf(username, settings->profileValue("user/login").toByteArray().data() ); snprintf(str, sizeof(str), "%08X%s%d", rndid, username, rndid ); hash=TlenSha1( str, strlen(str) ); memcpy(&packet[8], hash, 20); tmp=28; memcpy(&head[4], &tmp, 4); socket->write( head, sizeof(head) ); socket->write( packet, sizeof(packet) ); }