22#ifndef FREERDP_SERVER_PROXY_PFCONTEXT_H
23#define FREERDP_SERVER_PROXY_PFCONTEXT_H
25#include <freerdp/api.h>
26#include <freerdp/types.h>
28#include <freerdp/freerdp.h>
29#include <freerdp/channels/wtsvc.h>
31#include <freerdp/server/proxy/proxy_config.h>
32#include <freerdp/server/proxy/proxy_types.h>
34#define PROXY_SESSION_ID_LENGTH 32
42 typedef struct proxy_module proxyModule;
45 typedef struct s_InterceptContextMapEntry
47 void (*free)(
struct s_InterceptContextMapEntry*);
52 FREERDP_API
void intercept_context_entry_free(
void* obj);
54 typedef PfChannelResult (*proxyChannelDataFn)(proxyData* pdata,
55 const pServerStaticChannelContext* channel,
56 const BYTE* xdata,
size_t xsize, UINT32 flags,
57 size_t totalSizepServer);
58 typedef void (*proxyChannelContextDtor)(
void* context);
64 UINT32 front_channel_id;
65 UINT32 back_channel_id;
66 pf_utils_channel_mode channelMode;
67 WINPR_ATTR_NODISCARD proxyChannelDataFn onFrontData;
68 WINPR_ATTR_NODISCARD proxyChannelDataFn onBackData;
69 proxyChannelContextDtor contextDtor;
73 FREERDP_API
void StaticChannelContext_free(pServerStaticChannelContext* ctx);
80 WINPR_ATTR_MALLOC(StaticChannelContext_free, 1)
82 pServerStaticChannelContext* StaticChannelContext_new(pServerContext* ps, const
char* name,
93 const proxyConfig* config;
100 HANDLE gfx_server_ready;
102 char session_id[PROXY_SESSION_ID_LENGTH + 1];
105 wHashTable* modules_info;
106 psPeerReceiveChannelData server_receive_channel_data_original;
110 FREERDP_API BOOL pf_context_copy_settings(rdpSettings* dst,
const rdpSettings* src);
113 FREERDP_API BOOL pf_context_init_server_context(freerdp_peer* client);
115 WINPR_ATTR_MALLOC(freerdp_client_context_free, 1)
116 FREERDP_API pClientContext* pf_context_create_client_context(const rdpSettings* clientSettings);
118 FREERDP_API
void proxy_data_free(proxyData* pdata);
120 WINPR_ATTR_MALLOC(proxy_data_free, 1)
121 FREERDP_API proxyData* proxy_data_new(
void);
122 FREERDP_API
void proxy_data_set_client_context(proxyData* pdata, pClientContext* context);
131 FREERDP_API pClientContext* proxy_data_get_client_context(proxyData* pdata);
133 FREERDP_API
void proxy_data_set_server_context(proxyData* pdata, pServerContext* context);
142 FREERDP_API pServerContext* proxy_data_get_server_context(proxyData* pdata);
145 FREERDP_API BOOL proxy_data_shall_disconnect(proxyData* pdata);
146 FREERDP_API
void proxy_data_abort_connect(proxyData* pdata);
per channel configuration