psPeerSendChannelData SendChannelData;
psPeerReceiveChannelData ReceiveChannelData;
- uint32 ack_frame_id;
- boolean local;
- boolean connected;
- boolean activated;
- boolean authenticated;
+ int pId;
+ UINT32 ack_frame_id;
+ BOOL local;
+ BOOL connected;
+ BOOL activated;
+ BOOL authenticated;
SEC_WINNT_AUTH_IDENTITY identity;
};
set(${MODULE_PREFIX}_LIBS d3d11 dxgi dxguid)\r
endif()\r
\r
- if(WITH_MONOLITHIC_BUILD)
++
+ set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-channels-server)\r
+ \r
+ if(MONOLITHIC_BUILD)\r
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp)\r
else()
\r
#include "wf_interface.h"
- void wf_peer_keyboard_event(rdpInput* input, uint16 flags, uint16 code);
- void wf_peer_unicode_keyboard_event(rdpInput* input, uint16 flags, uint16 code);
- void wf_peer_mouse_event(rdpInput* input, uint16 flags, uint16 x, uint16 y);
- void wf_peer_extended_mouse_event(rdpInput* input, uint16 flags, uint16 x, uint16 y);
+ void wf_peer_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code);
+ void wf_peer_unicode_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code);
+ void wf_peer_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y);
+ void wf_peer_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y);
+//dummy versions
+void wf_peer_keyboard_event_dummy(rdpInput* input, uint16 flags, uint16 code);
+void wf_peer_unicode_keyboard_event_dummy(rdpInput* input, uint16 flags, uint16 code);
+void wf_peer_mouse_event_dummy(rdpInput* input, uint16 flags, uint16 x, uint16 y);
+void wf_peer_extended_mouse_event_dummy(rdpInput* input, uint16 flags, uint16 x, uint16 y);
+
#endif /* WF_INPUT_H */
#include <winpr/tchar.h>
#include <winpr/windows.h>
#include <freerdp/utils/tcp.h>
- //#include <libfreerdp\core\listener.h>
+#include <freerdp\listener.h>
#include "wf_peer.h"
#include "wf_settings.h"
if (max_fds == 0)
break;
+
select(max_fds + 1, &rfds_set, NULL, NULL, NULL);
-
- if (instance->CheckFileDescriptor(instance) != true)
+
+ if (instance->CheckFileDescriptor(instance) != TRUE)
{
printf("Failed to check FreeRDP file descriptor\n");
break;
#include <freerdp/freerdp.h>
#include <freerdp/codec/rfx.h>
+ #include <freerdp/server/rdpsnd.h>
+#define WF_SRV_CALLBACK_EVENT_CONNECT 1
+#define WF_SRV_CALLBACK_EVENT_DISCONNECT 2
+#define WF_SRV_CALLBACK_EVENT_ACTIVATE 4
+#define WF_SRV_CALLBACK_EVENT_AUTH 8
+
typedef struct wf_info wfInfo;
typedef struct wf_peer_context wfPeerContext;
FREERDP_API wfServer* wfreerdp_server_new();
FREERDP_API void wfreerdp_server_free(wfServer* server);
- //FREERDP_API void wfreerdp_server_register_connect_event(cbConEvent cb);
- //FREERDP_API void wfreerdp_server_register_disconnect_event(cbConEvent cb);
+FREERDP_API BOOL wfreerdp_server_is_running(wfServer* server);
+
+FREERDP_API UINT32 wfreerdp_server_num_peers();
+FREERDP_API UINT32 wfreerdp_server_get_peer_hostname(int pId, wchar_t * dstStr);
+FREERDP_API BOOL wfreerdp_server_peer_is_local(int pId);
+FREERDP_API BOOL wfreerdp_server_peer_is_connected(int pId);
+FREERDP_API BOOL wfreerdp_server_peer_is_activated(int pId);
+FREERDP_API BOOL wfreerdp_server_peer_is_authenticated(int pId);
+
- //void wfreerdp_server_peer_connect_event(int pId);
- //void wfreerdp_server_peer_disconnect_event(int pId);
-
+FREERDP_API void wfreerdp_server_register_callback_event(cbCallback cb);
+
+void wfreerdp_server_peer_callback_event(int pId, UINT32 eType);
+
#endif /* WF_INTERFACE_H */
printf("PeerActivate\n");\r
\r
wfi = context->info;\r
- client->activated = true;\r
+ client->activated = TRUE;\r
wf_update_peer_activate(wfi, context);\r
\r
- return true;\r
+ wfreerdp_server_peer_callback_event(((rdpContext*) context)->peer->pId, WF_SRV_CALLBACK_EVENT_ACTIVATE);\r
+\r
+ return TRUE;\r
}\r
\r
- boolean wf_peer_logon(freerdp_peer* client, SEC_WINNT_AUTH_IDENTITY* identity, boolean automatic)\r
+ BOOL wf_peer_logon(freerdp_peer* client, SEC_WINNT_AUTH_IDENTITY* identity, BOOL automatic)\r
{\r
printf("PeerLogon\n");\r
\r
identity->User, identity->Domain, identity->Password);\r
}\r
\r
- return true;\r
+\r
+ wfreerdp_server_peer_callback_event(((rdpContext*) client->context)->peer->pId, WF_SRV_CALLBACK_EVENT_AUTH);\r
+ return TRUE;\r
}\r
\r
- void wf_peer_synchronize_event(rdpInput* input, uint32 flags)\r
+ void wf_peer_synchronize_event(rdpInput* input, UINT32 flags)\r
{\r
\r
}\r
break;\r
}\r
\r
+ //force disconnect\r
+ if(wfi->force_all_disconnect == TRUE)\r
+ {\r
+ printf("Forcing Disconnect -> ");\r
+ break;\r
+ }\r
++\r
+ /* FIXME: we should wait on this, instead of calling it every time */\r
+ if (WTSVirtualChannelManagerCheckFileDescriptor(context->vcm) != TRUE)\r
+ break;\r
}\r
\r
printf("Client %s disconnected.\n", client->local ? "(local)" : client->hostname);\r
void wf_update_encode(wfInfo* wfi)
{
-
+
RFX_RECT rect;
long height, width;
- uint8* pDataBits = NULL;
+ BYTE* pDataBits = NULL;
int stride;
-
+
SURFACE_BITS_COMMAND* cmd;
wf_info_find_invalid_region(wfi);
//printf("x:%d y:%d w:%d h:%d\n", wfi->invalid.left, wfi->invalid.top, width, height);
+ stream_clear(wfi->s);
rfx_compose_message(wfi->rfx_context, wfi->s, &rect, 1,
- pDataBits, width, height, stride);
+ pDataBits, width, height, stride);
wfi->frame_idx = wfi->rfx_context->frame_idx;