Beispiel #1
0
static void
rdesktop_reset_state(void)
{
	rdp_reset_state();
#ifdef WITH_SCARD
	scard_reset_state();
#endif
#ifdef WITH_RDPSND
	rdpsnd_reset_state();
#endif
}
Beispiel #2
0
static void
rdesktop_reset_state(void)
{
	rdp_reset_state();
}
/* returns boolean, non zero is ok */
int
ui_main(void)
{
	uint32 flags;
	BOOL bInitClip=FALSE;

	char server[64];
	char domain[256];
	char password[64];
/*
	char fullhostname[64];
	char shell[256];
	char directory[256];
*/
    STRNCPY(domain, g_domain, sizeof(domain));
	STRNCPY(password, g_password, sizeof(password));
	STRNCPY(server, g_servername, sizeof(server));

	// set logon mode depending if pw is set
	flags = RDP_LOGON_NORMAL;
	if (g_password[0] != 0)
	{
		flags |= RDP_LOGON_AUTO;
	}
	//rdpdr_init();		//CE version does not yet support redirector

	while (1) {

		//rdesktop_reset_state();	//CE version does not have this
		rdp_reset_state();

		if (g_redirect)
		{
			free(g_username);
			g_username = (char *) malloc(strlen(g_redirect_username) + 1);
			STRNCPY(g_username, g_redirect_username, strlen(g_redirect_username) + 1);
			
			STRNCPY(domain, g_redirect_domain, sizeof(g_redirect_domain));
			STRNCPY(password, g_redirect_password, sizeof(g_redirect_password));
	
			if(g_redirect_server[0] != 0)
				STRNCPY(server, g_redirect_server, sizeof(g_redirect_server));

			flags |= RDP_LOGON_AUTO;
			//we are back to normal undirected server
			g_redirect=FALSE;
		}

		//g_redirect = FALSE;
		//ui_init_connection();	//windows sizing etc will done in mi_create_window()
DEBUGMSG(1, (L"ui_main connecting to '%s' at '%s'\r\n", (LPSTR)server, (LPSTR)domain));
		if (!rdp_connect(server, flags, domain, password, g_shell, g_directory, g_redirect))
		{
			return 0; //EX_PROTOCOL not used in CE version
		}

		/* By setting encryption to False here, we have an encrypted login 
		   packet but unencrypted transfer of other packets 
		   NOT YET supported in CE version */
		//if (!g_packet_encryption)
		//	g_encryption = False;

		DEBUGMSG(DBG_RDP, (L"Connection successful.\n"));
		if (!g_redirect) {
			/* init backingstore */
			bs_init(g_width, g_height, g_server_depth);
  
			/* create the window */
			if (!mi_create_window())
			{
				return 0;
			}

			/* Init Clipboard ??? */
			//cliprdr_init();
			SetCursor(LoadCursor(NULL, IDC_NO)); //reset waitcursor set in WinMain 
			/* if all ok, enter main loop */
		}

		g_redirect = False;
		mi_main_loop();

//		rdp_main_loop(&deactivated, &ext_disc_reason);
		DEBUGMSG(DBG_RDP, (L"Disconnecting...\n"));
		//if (!tcp_is_connected())
		//	rdp_disconnect();

		if (g_redirect)
			continue;

		//if (g_redirect)
		//	continue;

		break;

    }

	return 1;
}