hti/PC_Tools/HTIGateway/ServicePlugins/HtiFtp/HtiFtp.cpp
changeset 38 169364e7e4b4
parent 34 7259cf1302ad
child 45 185201be11b0
--- a/hti/PC_Tools/HTIGateway/ServicePlugins/HtiFtp/HtiFtp.cpp	Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,790 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-* 
-* Description:
-*/
-#include "HtiFtpH.h"
-
-#include "HtiPlugin.h"
-#include <string.h>
-
-#include "HtiSoapHandlerInterface.h"
-
-const unsigned char CMD_FTP_STOR	    = 0x03;
-const unsigned char CMD_FTP_RETR	    = 0x05;
-const unsigned char CMD_FTP_LIST	    = 0x07;
-const unsigned char CMD_FTP_LISTDIR	    = 0x11;
-const unsigned char CMD_FTP_LISTSIZE    = 0x13;
-const unsigned char CMD_FTP_LISTDRIVES  = 0x15;
-const unsigned char CMD_FTP_MKD		    = 0x09;
-const unsigned char CMD_FTP_RMD	    	= 0x0B;
-const unsigned char CMD_FTP_DELE	    = 0x0D;
-const unsigned char CMD_FTP_CANCEL	    = 0x0E;
-const unsigned char CMD_FTP_FILESIZE    = 0x0F;
-
-const unsigned char CMD_FTP_SETFORCE	= 0x20;
-const unsigned char CMD_FTP_CHECKSUM	= 0x30;
-const unsigned char CMD_FTP_CHECKSUM_U	= 0x31;
-const unsigned char CMD_FTP_FORMAT      = 0x40;
-
-const unsigned char CMD_FTP_OK		= 0xF0;
-const unsigned char CONTROL_PRIORITY = 2;
-
-const int MAX_HTI_MSG_SIZE = 8192;
-
-char fileMimeType[] = "application/octet-stream"; //??
-
-const static int g_ftpHtiTimeoutControl = 10000;
-const static int g_ftpHtiTimeoutData = 60*60000;
-
-int sendHtiMessage(struct soap *soap,
-				   const char cmd,
-				   const wchar_t* arg )
-{
-	int resultCode = SOAP_OK;
-	
-	int textLen = 0;
-	int bodyLen = 0;
-	if ( arg )
-	{
-		textLen = (int)wcslen( arg );
-		if ( textLen > 0xFF )
-		{
-			soap->error = soap_sender_fault(soap, "Invalid arguments", NULL);
-			resultCode = SOAP_FAULT;
-			return resultCode;
-		}
-		bodyLen = 2*textLen + 2;
-	}
-	else
-	{
-        bodyLen = 1;
-	}
-
-	BYTE* msgBody = new BYTE[ bodyLen ];
-	msgBody[0] = cmd;
-
-	if ( arg )
-	{
-		msgBody[1] = textLen;
-		memcpy( msgBody + 2, arg, 2*textLen );
-	}
-
-	HtiSoapHandlerInterface* handler = static_cast<HtiSoapHandlerInterface*>(soap->user);
-
-	handler->SendHtiMessage(HTI_UID, msgBody, bodyLen, CONTROL_PRIORITY );
-
-	delete[] msgBody;
-	return resultCode;
-}
-
-int receiveFtpOk( struct soap *soap, DWORD waitTimeout )
-{
-	int resultCode = SOAP_OK;
-	
-	HtiSoapHandlerInterface* handler = static_cast<HtiSoapHandlerInterface*>(soap->user);
-
-	if ( handler->WaitForHtiMessage( waitTimeout ) )
-	{
-		if ( !handler->IsReceivedHtiError() )
-		{
-			DWORD bodySize = handler->ReceivedHtiMessageBodySize();
-			BYTE* body = (BYTE*)(handler->ReceivedHtiMessageBody());
-
-			if ( ! ( bodySize == 1 && body[0] == CMD_FTP_OK ) )
-			{
-				soap->error = soap_receiver_fault(soap,
-												"Received invalid hti message", NULL);
-				resultCode = SOAP_FAULT;
-			}
-		}
-		else
-		{
-			handler->SendSoapFaultFromReceivedHtiError();
-			resultCode = SOAP_FAULT;
-		}
-	}
-	else
-	{
-		soap->error = soap_receiver_fault(soap,
-										  "Failed receive hti message", NULL);
-		resultCode = SOAP_FAULT;
-	}
-	
-	return resultCode;
-}
-
-int sendHtiMessageAndReceiveOK(struct soap *soap,
-							   const char cmd,
-							   const wchar_t* arg )
-{
-	if ( arg == NULL )
-	{
-		soap->error = soap_sender_fault(soap, "Invalid arguments", NULL);
-		return SOAP_FAULT;
-	}
-	int resultCode = sendHtiMessage( soap, cmd, arg );
-	if ( resultCode != SOAP_OK )
-	{
-		return resultCode;
-	}
-	
-	return receiveFtpOk(soap, g_ftpHtiTimeoutControl);
-}
-
-int sendHtiMessageAndReceiveStringArray(struct soap *soap,
-										const char cmd,
-										const wchar_t* arg,
-										struct ArrayOfStrings &array )
-{
-	if ( arg == NULL )
-	{
-		soap->error = soap_sender_fault(soap, "Invalid arguments", NULL);
-		return SOAP_FAULT;
-	}
-
-	int resultCode = SOAP_OK;
-	resultCode = sendHtiMessage( soap, cmd, arg );
-	if ( resultCode != SOAP_OK )
-	{
-		return resultCode;
-	}
-	
-	HtiSoapHandlerInterface* handler = static_cast<HtiSoapHandlerInterface*>(soap->user);
-
-	if (handler->WaitForHtiMessage(g_ftpHtiTimeoutData) )
-	{
-		if ( !handler->IsReceivedHtiError() )
-		{
-            DWORD bodySize = handler->ReceivedHtiMessageBodySize();
-			BYTE* body = (BYTE*)(handler->ReceivedHtiMessageBody());
-			//check that body size is valid
-			if ( bodySize > 0 )
-			{
-				//calculate number of elements
-				DWORD i = 0;
-				int numOfElements = 0;
-				while ( i < bodySize )
-				{
-                    ++numOfElements;
-					i += 2*body[i] + 1;
-				}
-
-				//printf("strings: %d\n", numOfElements);
-
-				if ( i != bodySize )
-				{
-					soap->error = soap_receiver_fault(soap,
-													"Invalid hti message", NULL);
-					resultCode = SOAP_FAULT;
-				}
-				else
-				{
-					array.__size = numOfElements;
-					array.__ptr = (wchar_t**)soap_malloc(soap, sizeof(wchar_t*)*array.__size );
-					int j;
-					for( j=0, i=0; j<array.__size; ++j, i += 2*body[i] + 1)
-					{
-						//printf("%d size=%d ", j, body[i]);
-						array.__ptr[j] = (wchar_t*)soap_malloc(soap, 2*body[i] + 2 );
-						memcpy(array.__ptr[j],
-								body + i + 1,
-								2*body[i] );
-						(array.__ptr[j])[body[i]] = 0; //null char
-						int strLen = (int)wcslen( array.__ptr[j] );
-
-						//wprintf(L">%S<\n", array.__ptr[j] );
-						//printf("\n");
-					}
-				}
-			}
-			else
-			{
-				array.__size = 0;
-				array.__ptr = 0;
-			}
-		}
-		else
-		{
-			handler->SendSoapFaultFromReceivedHtiError();
-			resultCode = SOAP_FAULT;
-		}
-	}
-	else
-	{
-		soap->error = soap_receiver_fault(soap,
-										  "Failed receive hti message", NULL);
-		resultCode = SOAP_FAULT;
-	}
-	
-	return resultCode;
-}
-
-int sendHtiMessageAndReceiveHtiFileInfoArray(struct soap *soap,
-										const char cmd,
-										const wchar_t* arg,
-										struct ArrayOfHtiFileInfos &array )
-{
-	if ( arg == NULL )
-	{
-		soap->error = soap_sender_fault(soap, "Invalid arguments", NULL);
-		return SOAP_FAULT;
-	}
-
-	int resultCode = SOAP_OK;
-	resultCode = sendHtiMessage( soap, cmd, arg );
-	if ( resultCode != SOAP_OK )
-	{
-		return resultCode;
-	}
-	
-	HtiSoapHandlerInterface* handler =
-        static_cast<HtiSoapHandlerInterface*>(soap->user);
-
-	if (handler->WaitForHtiMessage(g_ftpHtiTimeoutData) )
-	{
-		if ( !handler->IsReceivedHtiError() )
-		{
-            DWORD bodySize = handler->ReceivedHtiMessageBodySize();
-			BYTE* body = (BYTE*)(handler->ReceivedHtiMessageBody());
-			//check that body size is valid
-			if ( bodySize > 0 )
-			{
-				//calculate number of elements
-				DWORD i = 0;
-				int numOfElements = 0;
-				while ( i < bodySize )
-				{
-                    ++numOfElements;
-					i += 2*body[i] + 1 + 4;
-				}
-
-                if ( i != bodySize )
-				{
-					soap->error = soap_receiver_fault(soap,
-											"Invalid hti message", NULL);
-					resultCode = SOAP_FAULT;
-				}
-				else
-				{
-					array.__size = numOfElements;
-					array.__ptr = (ns1__HtiFileInfo*) soap_malloc(
-                            soap, sizeof(ns1__HtiFileInfo)*array.__size );
-					int j;
-					for( j=0, i=0; j<array.__size; ++j, i += 2*body[i] + 1 + 4)
-					{
-						array.__ptr[j].fileName =
-                            (wchar_t*)soap_malloc(soap, 2*body[i] + 2 );
-						memcpy(array.__ptr[j].fileName, body + i + 1, 2*body[i]);
-                        (array.__ptr[j].fileName)[body[i]] = 0; //null char
-                        // the file size bytes
-                        array.__ptr[j].fileSize = *(int*)(body + i + 2*body[i] + 1);
-                    }
-                }
-            }
-			else
-			{
-				array.__size = 0;
-				array.__ptr = 0;
-			}
-		}
-		else
-		{
-			handler->SendSoapFaultFromReceivedHtiError();
-			resultCode = SOAP_FAULT;
-		}
-	}
-	else
-	{
-		soap->error = soap_receiver_fault(soap,
-										  "Failed receive hti message", NULL);
-		resultCode = SOAP_FAULT;
-	}
-
-    return resultCode;
-}
-
-int sendHtiMessageAndReceiveHtiDriveInfoArray(struct soap *soap,
-                                        const char cmd,
-                                        struct ArrayOfHtiDriveInfos &array )
-{
-	int resultCode = SOAP_OK;
-	resultCode = sendHtiMessage( soap, cmd, NULL );
-	if ( resultCode != SOAP_OK )
-	{
-		return resultCode;
-	}
-	
-	HtiSoapHandlerInterface* handler =
-        static_cast<HtiSoapHandlerInterface*>(soap->user);
-
-	if (handler->WaitForHtiMessage(g_ftpHtiTimeoutData) )
-	{
-		if (!handler->IsReceivedHtiError())
-		{
-			array.__size = 0;
-			array.__ptr = 0;
-            DWORD bodySize = handler->ReceivedHtiMessageBodySize();
-			BYTE* body = (BYTE*)(handler->ReceivedHtiMessageBody());
-            int offset = 0;
-			//first byte is the number of elements
-			int numOfElements = body[offset];
-            offset++;
-
-            array.__size = numOfElements;
-			array.__ptr = (ns1__HtiDriveInfo*) soap_malloc(
-                    soap, sizeof(ns1__HtiDriveInfo)*array.__size );
-
-			int i;
-			for(i=0; i<array.__size; ++i)
-			{
-                int rootPathLength = body[offset];
-                offset++;
-				array.__ptr[i].rootPath =
-                    (wchar_t*)soap_malloc(soap, 2*rootPathLength + 2);
-				memcpy(array.__ptr[i].rootPath, body + offset, 2*rootPathLength);
-                (array.__ptr[i].rootPath)[rootPathLength] = 0; //null char
-                offset += 2*rootPathLength;
-                array.__ptr[i].mediaType = (ns1__driveMediaType)body[offset];
-                offset++;
-                array.__ptr[i].uniqueID = *(int*)(body + offset);
-                offset += sizeof(int);
-                array.__ptr[i].driveSize = *(ULONG64*)(body + offset);
-                offset += sizeof(ULONG64);
-                array.__ptr[i].freeSpace = *(ULONG64*)(body + offset);
-                offset += sizeof(ULONG64);
-                int nameLength = body[offset];
-                offset++;
-                array.__ptr[i].driveName = 
-                    (wchar_t*)soap_malloc(soap, 2*nameLength + 2);
-                memcpy(array.__ptr[i].driveName, body + offset, 2*nameLength);
-                (array.__ptr[i].driveName)[nameLength] = 0; //null char
-                offset += 2*nameLength;
-            }
-		}
-		else
-		{
-			handler->SendSoapFaultFromReceivedHtiError();
-			resultCode = SOAP_FAULT;
-		}
-	}
-	else
-	{
-		soap->error = soap_receiver_fault(soap,
-										  "Failed receive hti message", NULL);
-		resultCode = SOAP_FAULT;
-	}
-
-    return resultCode;
-}
-
-int sendBinary(struct soap *soap, char* data, const DWORD dataSize )
-{
-	HtiSoapHandlerInterface* handler = static_cast<HtiSoapHandlerInterface*>(soap->user);
-
-	DWORD offset = 0;
-
-    // dataSize == 0 means that uploading empty file - we need to send one
-    // empty data message, so needs to go to following while once
-	while( offset < dataSize || ( offset == 0 && dataSize == 0 ) )
-	{
-		handler->SendHtiMessage( HTI_UID,
-					data + offset,
-					offset + MAX_HTI_MSG_SIZE > dataSize ? dataSize - offset : MAX_HTI_MSG_SIZE
-					);
-		offset += MAX_HTI_MSG_SIZE;
-		//check for error messages
-		if (handler->WaitForHtiMessage(0) ) 
-		{
-			if ( handler->IsReceivedHtiError() )
-			{
-				handler->SendSoapFaultFromReceivedHtiError();
-			}
-			else
-			{
-				soap->error = soap_receiver_fault(soap,
-												"Not expected hti message", NULL);
-			}
-			return SOAP_FAULT;
-		}
-	}
-
-	return SOAP_OK;
-}
-
-int sendSTOR(struct soap *soap,
-             const wchar_t* arg,
-			 const DWORD fileSize )
-{
-	int resultCode = SOAP_OK;
-	
-	int textLen = (int)wcslen( arg );
-
-	if ( !arg || textLen > 0xFF )
-	{
-		soap->error = soap_sender_fault(soap, "Invalid arguments", NULL);
-		resultCode = SOAP_FAULT;
-		return resultCode;
-	}
-
-	int	bodyLen = 2*textLen + 6;
-
-	BYTE* msgBody = new BYTE[ bodyLen ];
-	msgBody[0] = CMD_FTP_STOR;
-	*((DWORD*)(msgBody + 1)) = fileSize;
-	msgBody[5] = textLen;
-	memcpy( msgBody + 6, arg, 2*textLen );
-
-	HtiSoapHandlerInterface* handler = static_cast<HtiSoapHandlerInterface*>(soap->user);
-
-	handler->SendHtiMessage(HTI_UID, msgBody, bodyLen, CONTROL_PRIORITY );
-
-	delete[] msgBody;
-	return resultCode;
-}
-
-int ns1__putFile(struct soap* soap,
-				 struct ns1__HtiSoapAttachment *file,
-				 wchar_t *targetPath,
-				 struct ns1__putFileResponse *out)
-{
-	int resultCode;
-	//send attachment as several hti ftp data messages
-	if ( file == NULL || targetPath == NULL )
-	{
-		soap->error = soap_sender_fault(soap, "Invalid arguments", NULL);
-		return SOAP_FAULT;
-	}
-	else if ( file->href != NULL )
-	{
-		for (soap_multipart::iterator attachment = (*soap).dime.begin();
-				attachment != (*soap).dime.end(); ++attachment) 
-		{
-			if ( (*attachment).id && strcmp((*attachment).id, file->href)==0 )
-			{
-				resultCode = sendSTOR(soap, targetPath, (*attachment).size );
-				if ( resultCode != SOAP_OK )
-				{
-					return resultCode;
-				}
-				resultCode = receiveFtpOk(soap, g_ftpHtiTimeoutControl);
-				if ( resultCode != SOAP_OK )
-				{
-					return resultCode;
-				}
-				resultCode = sendBinary( soap, (*attachment).ptr, (*attachment).size );
-				if ( resultCode != SOAP_OK )
-				{
-					return resultCode;
-				}
-				return receiveFtpOk(soap, g_ftpHtiTimeoutData); 
-			}
-		} 
-	}
-	else
-	{
-		soap->error = soap_sender_fault(soap, "Invalid arguments", NULL);
-		return SOAP_FAULT;
-	}
-
-	soap->error = soap_sender_fault(soap, "Invalid attachment", NULL);
-	resultCode = SOAP_FAULT;
-
-	return resultCode;
-}
-
-int ns1__getFile(struct soap* soap,
-				 wchar_t *filePath,
-				 struct ns1__getFileResponse &r)
-{
-	int resultCode = SOAP_OK;
-
-	if ( filePath == NULL )
-	{
-		soap->error = soap_sender_fault(soap, "Invalid arguments", NULL);
-		return SOAP_FAULT;
-	}
-
-	resultCode = sendHtiMessage( soap, CMD_FTP_RETR, filePath );
-
-	HtiSoapHandlerInterface* handler = static_cast<HtiSoapHandlerInterface*>(soap->user);
-
-    //receive FILESIZE message
-	DWORD fileSize = 0;
-	if (handler->WaitForHtiMessage(g_ftpHtiTimeoutControl) )
-	{
-		if ( !handler->IsReceivedHtiError() )
-		{
-			DWORD bodySize = handler->ReceivedHtiMessageBodySize();
-			BYTE* body = (BYTE*)(handler->ReceivedHtiMessageBody());
-
-			if ( bodySize == 5 && body[0] == CMD_FTP_FILESIZE )
-			{
-				fileSize = *((DWORD*)(body + 1));
-			}
-			else
-			{
-				soap->error = soap_receiver_fault(soap,
-												"Received invalid hti message", NULL);
-				return SOAP_FAULT;
-			}
-		}
-		else
-		{
-			handler->SendSoapFaultFromReceivedHtiError();
-			return SOAP_FAULT;
-		}
-	}
-	else
-	{
-		soap->error = soap_receiver_fault(soap,
-										  "Failed receive hti message", NULL);
-		return SOAP_FAULT;
-	}
-	
-	//receive data messages
-	DWORD receivedFile = 0;
-	char* body = (char*)soap_malloc(soap, fileSize );
-
-	while ( receivedFile < fileSize )
-	{
-		if (handler->WaitForHtiMessage(g_ftpHtiTimeoutData) )
-		{
-			if ( !handler->IsReceivedHtiError() )
-			{
-				//extract response
-				DWORD bodySize = handler->ReceivedHtiMessageBodySize();
-				memcpy( body + receivedFile,
-					   (char*)(handler->ReceivedHtiMessageBody()),
-					   bodySize );
-				receivedFile += bodySize;
-			}
-			else
-			{
-				handler->SendSoapFaultFromReceivedHtiError();
-				return SOAP_FAULT;
-			}
-		}
-		else
-		{
-			soap->error = soap_receiver_fault(soap,
-											"Failed receive hti message", NULL);
-			return SOAP_FAULT;
-		}
-	}
-
-	//create attachment
-	int pLen = (int)wcslen(filePath)+1;
-	r._return.href = (char*)soap_malloc(soap, pLen );
-	WideCharToMultiByte(CP_ACP, 0, filePath, -1, r._return.href, pLen, NULL, NULL);
-
-	r._return.mimeType = (char*)soap_malloc(soap, strlen(fileMimeType)+1 );
-	strcpy( r._return.mimeType, fileMimeType );
-
-	//pass result as DIME attachment
-	soap_set_dime(soap);
-	resultCode = soap_set_dime_attachment(soap,
-								body,
-								fileSize,
-								r._return.mimeType,
-								r._return.href,
-								0, NULL);
-	if (  resultCode != SOAP_OK )
-	{
-		//Util::Debug("soap_set_dime_attachment failed");
-		soap_clr_dime(soap);
-		soap->error = soap_receiver_fault(soap,
-								"Failed create DIME attachment", NULL);
-	}
-	
-	return resultCode;
-}
-
-int ns1__cancelFileTransfer(struct soap* soap,
-							void *_,
-							struct ns1__cancelFileTransferResponse *out)
-{
-	int resultCode = sendHtiMessage( soap, CMD_FTP_CANCEL, NULL );
-	if ( resultCode != SOAP_OK )
-	{
-		return resultCode;
-	}
-	
-	return receiveFtpOk(soap, g_ftpHtiTimeoutControl);
-}
-
-int ns1__listFiles(struct soap* soap,
-				   wchar_t *targetDir,
-				   struct ArrayOfStrings &dirs)
-{
-	return sendHtiMessageAndReceiveStringArray( soap, CMD_FTP_LIST, targetDir, dirs );
-}
-
-int ns1__listFilesSizes(struct soap* soap,
-                        wchar_t *targetDir,
-                        struct ArrayOfHtiFileInfos &fileInfos)
-{
-    return sendHtiMessageAndReceiveHtiFileInfoArray( soap, CMD_FTP_LISTSIZE,
-                                                     targetDir, fileInfos );
-}
-
-int ns1__listDirs(struct soap* soap,
-				  wchar_t *targetDir,
-				  struct ArrayOfStrings &files)
-{
-	return sendHtiMessageAndReceiveStringArray( soap, CMD_FTP_LISTDIR, targetDir, files );
-}
-
-int ns1__createDir(struct soap* soap,
-				   wchar_t *targetDir,
-				   struct ns1__createDirResponse *out)
-{
-	return sendHtiMessageAndReceiveOK( soap, CMD_FTP_MKD, targetDir );
-}
-
-int ns1__deleteDir(struct soap* soap,
-				   wchar_t *targetDir,
-				   struct ns1__deleteDirResponse *out)
-{
-	return sendHtiMessageAndReceiveOK( soap, CMD_FTP_RMD, targetDir );
-}
-
-int ns1__deleteFile(struct soap* soap,
-					wchar_t *targetFile,
-					struct ns1__deleteFileResponse *out)
-{
-	return sendHtiMessageAndReceiveOK( soap, CMD_FTP_DELE, targetFile );
-}
-
-
-int send_receive_htimessage(struct soap* soap, BYTE **msgBody, int &msgBodyLen, int timeout)
-{
-	// Send the message to symbian side
-	HtiSoapHandlerInterface* handler = static_cast<HtiSoapHandlerInterface*>(soap->user);
-	handler->SendHtiMessage(HTI_UID, *msgBody, msgBodyLen, CONTROL_PRIORITY);
-
-	// Clean these up for received HTI message
-	delete *msgBody;
-	*msgBody = NULL;
-	msgBodyLen = 0;
-
-	// ...and wait for OK or error msg
-	if (handler->WaitForHtiMessage(timeout))
-	{
-		if ( !handler->IsReceivedHtiError() )
-		{
-			// Get received message
-			*msgBody = (BYTE*) handler->ReceivedHtiMessageBody();
-			msgBodyLen = handler->ReceivedHtiMessageBodySize();
-			return ERROR_SUCCESS;
-		}
-		else
-		{
-			handler->SendSoapFaultFromReceivedHtiError();
-			return ERROR_GEN_FAILURE;
-		}
-	}
-	// ...or timeout
-	else
-	{
-		soap->error = soap_receiver_fault(soap, "HtiGateway", "No response from symbian side");
-		return WAIT_TIMEOUT;
-	}
-}
-
-int ns1__setForcedOperations(struct soap* soap,
-							 bool state, 
-                             struct ns1__setForcedOperationsResponse *out)
-{
-	int msgBodyLen = 1+1;
-	BYTE *msgBody = new BYTE[msgBodyLen];
-	msgBody[0] = CMD_FTP_SETFORCE;
-	msgBody[1] = (BYTE) state;
-
-	if( send_receive_htimessage(soap, &msgBody, msgBodyLen, g_ftpHtiTimeoutControl) 
-        != ERROR_SUCCESS )
-		return SOAP_FAULT;
-
-	if(msgBody[0] != CMD_FTP_OK)
-	{
-		soap->error = soap_receiver_fault(soap, "HtiError", "Operation failed. Response code not ok.");
-		return SOAP_FAULT;
-	}
-
-	return SOAP_OK;
-}
-
-int ns1__fileChecksum(struct soap* soap, 
-					  unsigned char algorithmId, 
-					  wchar_t *targetFile, 
-                      struct ArrayOfBytes &checksumByteArray)
-{
-	int targetFileLen = targetFile ? (int) wcslen(targetFile) : 0;
-	if(targetFileLen == 0)
-	{
-		soap->error = soap_receiver_fault(soap, "HtiGateway", "targetFile parameter missing");
-		return SOAP_FAULT;
-	}
-
-	int msgBodyLen = 1+1+1+targetFileLen*2;
-	BYTE *msgBody = new BYTE[msgBodyLen];
-	msgBody[0] = CMD_FTP_CHECKSUM_U;
-	msgBody[1] = algorithmId;
-	msgBody[2] = targetFileLen;
-	memcpy(msgBody+3, targetFile, targetFileLen*2);
-
-	if( send_receive_htimessage(soap, &msgBody, msgBodyLen, g_ftpHtiTimeoutControl) 
-        != ERROR_SUCCESS )
-		return SOAP_FAULT;
-
-	checksumByteArray.__size = msgBodyLen;
-	checksumByteArray.__ptr = (BYTE*)soap_malloc(soap, sizeof(BYTE)*checksumByteArray.__size );
-
-	memcpy(checksumByteArray.__ptr, msgBody, msgBodyLen);
-
-	return SOAP_OK;
-}
-
-int ns1__format(struct soap* soap,
-				unsigned char drive, 
-                unsigned char formatMode,
-                struct ns1__formatResponse *out)
-{
-	int msgBodyLen = 3;
-	BYTE *msgBody = new BYTE[msgBodyLen];
-	msgBody[0] = CMD_FTP_FORMAT;
-	msgBody[1] = (BYTE) drive;
-    msgBody[2] = (BYTE) formatMode;
-
-    // might take long with large memory cards
-	if( send_receive_htimessage(soap, &msgBody, msgBodyLen, g_ftpHtiTimeoutData) 
-        != ERROR_SUCCESS )
-		return SOAP_FAULT;
-
-	if(msgBody[0] != CMD_FTP_OK)
-	{
-		soap->error = soap_receiver_fault(soap, "HtiError", "Operation failed. Response code not ok.");
-		return SOAP_FAULT;
-	}
-
-	return SOAP_OK;
-}
-
-int ns1__listDrives(struct soap* soap,
-                    void *_,
-                    struct ArrayOfHtiDriveInfos &driveInfos)
-{
-    return sendHtiMessageAndReceiveHtiDriveInfoArray( soap, CMD_FTP_LISTDRIVES,
-                                                     driveInfos );
-}
-