20 #ifndef _WSGATE_RDP_H_
21 #define _WSGATE_RDP_H_
26 #include <boost/shared_ptr.hpp>
27 #include <boost/tuple/tuple.hpp>
29 #include "rdpcommon.hpp"
51 typedef boost::tuple<time_t, std::string>
cursor;
52 typedef std::map<uint32_t, cursor> CursorMap;
76 bool Connect(std::string host, std::string user, std::string domain,
106 void SendInputSynchronizeEvent(uint32_t flags);
112 void SendInputKeyboardEvent(uint16_t flags, uint16_t code);
118 void SendInputUnicodeKeyboardEvent(uint16_t flags, uint16_t code);
124 void SendInputMouseEvent(uint16_t flags, uint16_t x, uint16_t y);
130 void SendInputExtendedMouseEvent(uint16_t flags, uint16_t x, uint16_t y);
134 RDP & operator=(
const RDP &);
137 void addError(
const std::string &msg);
139 void ContextNew(freerdp *inst, rdpContext *ctx);
140 void ContextFree(freerdp *inst, rdpContext *ctx);
141 boolean PreConnect(freerdp *inst);
142 boolean PostConnect(freerdp *inst);
143 boolean Authenticate(freerdp *inst,
char** user,
char** pass,
char** domain);
144 boolean VerifyCertificate(freerdp *inst,
char* subject,
char* issuer,
char* fprint);
145 int SendChannelData(freerdp *inst,
int chId, uint8_t* data,
int size);
146 int ReceiveChannelData(freerdp* inst,
int chId, uint8_t* data,
int size,
147 int flags,
int total_size);
149 void Pointer_New(rdpContext* context, rdpPointer* pointer);
150 void Pointer_Free(rdpContext* context, rdpPointer* pointer);
151 void Pointer_Set(rdpContext* context, rdpPointer* pointer);
152 void Pointer_SetNull(rdpContext* context);
153 void Pointer_SetDefault(rdpContext* context);
155 static std::map<freerdp *, RDP *> m_instances;
157 rdpContext *m_rdpContext;
158 rdpInput *m_rdpInput;
159 rdpSettings *m_rdpSettings;
163 std::string m_errMsg;
167 uint32_t m_lastError;
169 CursorMap m_cursorMap;
172 static void *cbThreadFunc(
void *ctx);
174 static void cbContextNew(freerdp *inst, rdpContext *ctx);
175 static void cbContextFree(freerdp *inst, rdpContext *ctx);
176 static boolean cbPreConnect(freerdp *inst);
177 static boolean cbPostConnect(freerdp *inst);
178 static boolean cbAuthenticate(freerdp *inst,
char** user,
char** pass,
char** domain);
179 static boolean cbVerifyCertificate(freerdp *inst,
char* subject,
char* issuer,
181 static int cbSendChannelData(freerdp *inst,
int chId, uint8_t* data,
int size);
182 static int cbReceiveChannelData(freerdp* inst,
int chId, uint8_t* data,
int size,
183 int flags,
int total_size);
185 static void cbPointer_New(rdpContext* context, rdpPointer* pointer);
186 static void cbPointer_Free(rdpContext* context, rdpPointer* pointer);
187 static void cbPointer_Set(rdpContext* context, rdpPointer* pointer);
188 static void cbPointer_SetNull(rdpContext* context);
189 static void cbPointer_SetDefault(rdpContext* context);