Exemple #1
0
RDPListener::~RDPListener()
{
    {
        std::lock_guard<std::mutex> lock(listenerStopMutex);
        if (listener_running) {
            listener_running = false;
            usleep(200000);
        }
    }
    shadow_server_uninit(server);
    shadow_server_free(server);
    dbus_conn->unregister_object(registered_id);
    WSACleanup();
}
Exemple #2
0
int main(int argc, char** argv)
{
    MSG msg;
    int status = 0;
    DWORD dwExitCode;
    rdpSettings* settings;
    rdpShadowServer* server;

    shadow_subsystem_set_entry_builtin(NULL);

    server = shadow_server_new();

    if (!server)
    {
        status = -1;
        goto fail_server_new;
    }

    settings = server->settings;

    settings->NlaSecurity = FALSE;
    settings->TlsSecurity = TRUE;
    settings->RdpSecurity = TRUE;

#ifdef WITH_SHADOW_X11
    server->authentication = TRUE;
#else
    server->authentication = FALSE;
#endif

    if ((status = shadow_server_parse_command_line(server, argc, argv)) < 0)
    {
        shadow_server_command_line_status_print(server, argc, argv, status);
        goto fail_parse_command_line;
    }

    if ((status = shadow_server_init(server)) < 0)
        goto fail_server_init;

    if ((status = shadow_server_start(server)) < 0)
        goto fail_server_start;

    if (g_MessagePump)
    {
        while (GetMessage(&msg, 0, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    WaitForSingleObject(server->thread, INFINITE);

    if (!GetExitCodeThread(server->thread, &dwExitCode))
        status = -1;
    else
        status = (int) dwExitCode;

fail_server_start:
    shadow_server_uninit(server);
fail_server_init:
fail_parse_command_line:
    shadow_server_free(server);
fail_server_new:
    return status;
}