コード例 #1
0
ファイル: FtpCommands.c プロジェクト: AKuHAK/uLaunchELF
void FtpClient_OnCmdQuit(FtpClient *pClient)
{
	assert(pClient);

	FtpClient_Send(pClient, 221, pClient->m_pMessages[FTPMSG_GOODBYE]);
	FtpServer_OnClientDisconnect(pClient->m_pServer, pClient);
}
コード例 #2
0
ファイル: FtpCommands.c プロジェクト: joshdekock/jim-ps2ware
void FtpClient_OnCmdPass( FtpClient* pClient, const char* pPass )
{
	if( (AUTHSTATE_PASSWORD == pClient->m_eAuthState) && !strcmp(pPass,pClient->m_pServer->m_Password) )
	{
		// password matches, allow login
		FtpClient_Send(pClient,230,"User logged in.");
		pClient->m_eAuthState = AUTHSTATE_VALID;
	}
	else
	{
		// password didn't match, or we had no valid login

		if( AUTHSTATE_INVALID != pClient->m_eAuthState )
		{
			FtpClient_Send(pClient,530, pClient->m_pMessages[FTPMSG_LOGIN_INCORRECT] );

			// disconnect client if more than 3 attempts to login has been made

			pClient->m_iAuthAttempt++;
			if( pClient->m_iAuthAttempt > 3 )
				FtpServer_OnClientDisconnect( pClient->m_pServer, pClient );

			pClient->m_eAuthState = AUTHSTATE_INVALID;
		}
		else
			FtpClient_Send( pClient, 503, pClient->m_pMessages[FTPMSG_LOGIN_WITH_USER_FIRST] );
	}
}
コード例 #3
0
ファイル: FtpServer.c プロジェクト: joshdekock/jim-ps2ware
void FtpServer_Stop( FtpServer* pServer )
{
	// disconnect all clients

	while( pServer->m_kClients.m_pNext != &(pServer->m_kClients) )
		FtpServer_OnClientDisconnect( pServer, pServer->m_kClients.m_pNext->m_pClient );

	// close server socket

	if( -1 != pServer->m_iSocket )
	{
		disconnect( pServer->m_iSocket );
		pServer->m_iSocket = -1;
	}
}