Пример #1
0
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();
	}
}
Пример #2
0
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);
}
Пример #3
0
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) );
}