| 
	
		
	
	
		| Programming Need help with C/C++/Delphi? Ask here and make us all laugh. |  
	
	
		
	
	
	
		|  09-08-2003, 08:57 PM | #1 |  
	| Posse Member Ultimate ScripterioFTPD Administrator
 
				 
				Join Date: Dec 2002 
					Posts: 1,956
				      | 
				 b5 shmem questions 
 
			
			ULONG		ulClientIp;how does one convert that to a string ?
 
 A: struct in_addr temp; temp.s_addr = pOnlineData->OnlineData.ulClientIp; strcpy(ip, inet_ntoa(temp));
 
 -----
 
 using DC_GET_ONLINEDATA, i get a ONLINEDATA struct containing only the Uid. What's the easiest way to get the primary group of that user ? I see only opening userfile and checking there..?
 
 A: DC_USERFILE_OPEN, pUserFile->Gid, DC_USERFILE_CLOSE
 
 -----
 
 How can I know what local offsets needs to be set and what local offsets will contain the resulting struct after a SendMessage for each of the DC_xxx messages ?
 I tried divination, like for my DC_GET_ONLINEDATA, I used:
 
 PDC_ONLINEDATA pOnlineData = (PDC_ONLINEDATA)lpMessage->lpContext;
 lpMessage->dwIdentifier	= DC_GET_ONLINEDATA;
 pOnlineData->iOffset = 0;
 pOnlineData->dwSharedMemorySize = 4096;
 
 but how do i know how i need to fill the pOnlineData->dwSharedMemorySize ?? This number is a random choice of a multiple of 2!
 and my guess that the pOnlineData returned is at lpContext is pretty obvious here, since it's the only thing it should return, but how about the other messages ..?
 
 -----
 
 dwReturn = SendMessage(hIoFTPD, WM_KILL, iPos, (LPARAM)hMemory);
 
 this returns 1 :\ should return 0... how can i use that message ?
 
 -----
 
 how can i get all the users on the site using shmem ? atm, i open UserIdTable and fetch all users from there.
 
 -----
 
 |  
	|   |  |  
	
		
	
	
	
		|  09-09-2003, 09:05 AM | #2 |  
	| Disabled FlashFXP Registered UserioFTPD Administrator
 
				 
				Join Date: Dec 2001 
					Posts: 2,230
				      | 
 
			
			1) Create temporary in_addr type structure;
 InAddr.s_addr = ulClientIp;
 strcpy(ip, inet_ntoa(InAddr));
 
 2) Yes, open the userfile (one should create local cache, so you don't have to open same userfile more than once [it's possible, but uses more resources])
 
 3)  dwSharedMemorySize contains amount of memory your shared memory chunk contains (you must fill it yourself). If you have too little memory & paths don't fit, dwReturn value will be equal to amount of memory required to complete action successfully.
 
 4) WM_KILL message is executed instantly by message handler thread (it's not dispatched to worker threads like datacopy messages are) - it returns 0 if client was killed, 1 on error
 |  
	|   |  |  
	
		
	
	
	
		|  09-09-2003, 09:55 AM | #3 |  
	| Posse Member Ultimate ScripterioFTPD Administrator
 
				 
				Join Date: Dec 2002 
					Posts: 1,956
				      | 
 
			
			
	Code: // Initial setup for DC_GET_ONLINEDATA
lpMessage->dwIdentifier	= DC_GET_ONLINEDATA;
PDC_ONLINEDATA pOnlineData = (PDC_ONLINEDATA)lpMessage->lpContext;
pOnlineData->iOffset = iPos;
pOnlineData->dwSharedMemorySize = 4096;
char username[64]="Unknown",pwd[_MAX_PWD + 1];
// Send Message
dwReturn = SendMessage(hIoFTPD, WM_SHMEM, NULL, (LPARAM)hMemory);
if (!dwReturn) {
	// Wait until processed (5 secs)
	WaitForSingleObject(hEvent, 5000);
	if (nPos == 1024) {
		printf("Error on kill: %i.\n",iPos);fflush(stdout);
		return 1;
	}
	strcpy(pwd,pOnlineData->OnlineData.szVirtualPath);
	resolveUidToName(pOnlineData->OnlineData.Uid,username);
	dwReturn = SendMessage(hIoFTPD, WM_KILL, iPos, (LPARAM)hMemory);
	if (!dwReturn) {
		printf("%s was kicked from %s\n",username,pwd);
	} else {
		printf("Error on kill: couldn't kill #%i (%s).\n",iPos,username);fflush(stdout);
		return 1;
	}
} I get: Error on kill: couldn't kill #0 (nomaster). 
What's wrong ? How can i debug that ?
		 |  
	|   |  |  
	
		
	
	
	
		|  09-09-2003, 10:47 AM | #4 |  
	| Disabled FlashFXP Registered UserioFTPD Administrator
 
				 
				Join Date: Dec 2001 
					Posts: 2,230
				      | 
 
			
			there was minor bug it seems    |  
	|   |  |  
	
		
	
	
	
		
	
	
	
	
	
	
	
	
	
	| 
	|  Posting Rules |  
	| 
		
		You may not post new threads You may not post replies You may not post attachments You may not edit your posts 
 HTML code is Off 
 |  |  |  All times are GMT -5. The time now is 09:39 AM. |