Example #1
0
int rail_client_execute(RailClientContext* context, RAIL_EXEC_ORDER* exec)
{
	railPlugin* rail = (railPlugin*) context->handle;

	char* exeOrFile;

	exeOrFile = exec->RemoteApplicationProgram;

	if (!exeOrFile)
		return -1;

	if (strlen(exeOrFile) >= 2)
	{
		if (strncmp(exeOrFile, "||", 2) != 0)
			exec->flags |= RAIL_EXEC_FLAG_FILE;
	}

	rail_string_to_unicode_string(exec->RemoteApplicationProgram, &exec->exeOrFile); /* RemoteApplicationProgram */
	rail_string_to_unicode_string(exec->RemoteApplicationWorkingDir, &exec->workingDir); /* ShellWorkingDirectory */
	rail_string_to_unicode_string(exec->RemoteApplicationArguments, &exec->arguments); /* RemoteApplicationCmdLine */

	rail_send_client_exec_order(rail, exec);

	return 0;
}
Example #2
0
static void rail_process_plugin_data(rdpRailOrder* rail_order, RDP_PLUGIN_DATA* data)
{
	char* exeOrFile;

	exeOrFile = (char*) data->data[0];

	if (strlen(exeOrFile) >= 2)
	{
		if (strncmp(exeOrFile, "||", 2) != 0)
			rail_order->exec.flags |= RAIL_EXEC_FLAG_FILE;
	}

	rail_string_to_unicode_string(rail_order, (char*) data->data[0], &rail_order->exec.exeOrFile);
	rail_string_to_unicode_string(rail_order, (char*) data->data[1], &rail_order->exec.workingDir);
	rail_string_to_unicode_string(rail_order, (char*) data->data[2], &rail_order->exec.arguments);

	rail_send_client_exec_order(rail_order);
}
Example #3
0
static void rail_process_addin_args(rdpRailOrder* rail_order, rdpSettings* settings)
{
	char* exeOrFile;

	exeOrFile = settings->RemoteApplicationProgram;

	if (strlen(exeOrFile) >= 2)
	{
		if (strncmp(exeOrFile, "||", 2) != 0)
			rail_order->exec.flags |= RAIL_EXEC_FLAG_FILE;
	}

	rail_string_to_unicode_string(rail_order, settings->RemoteApplicationProgram, &rail_order->exec.exeOrFile);
	rail_string_to_unicode_string(rail_order, settings->ShellWorkingDirectory, &rail_order->exec.workingDir);
	rail_string_to_unicode_string(rail_order, settings->RemoteApplicationCmdLine, &rail_order->exec.arguments);

	rail_send_client_exec_order(rail_order);
}