diff options
Diffstat (limited to 'rdp/rdp.h')
-rw-r--r-- | rdp/rdp.h | 465 |
1 files changed, 0 insertions, 465 deletions
diff --git a/rdp/rdp.h b/rdp/rdp.h deleted file mode 100644 index 6d919774..00000000 --- a/rdp/rdp.h +++ /dev/null @@ -1,465 +0,0 @@ -/** - * xrdp: A Remote Desktop Protocol server. - * - * Copyright (C) Jay Sorg 2004-2013 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * librdp main header file - */ - -/* include other h files */ -#include "arch.h" -#include "parse.h" -#include "os_calls.h" -#include "ssl_calls.h" -#include "xrdp_constants.h" -#include "defines.h" - -struct rdp_brush -{ - int xorigin; - int yorigin; - int style; - char pattern[8]; -}; - -struct rdp_pen -{ - int style; - int width; - int color; -}; - -struct rdp_colormap -{ - int ncolors; - int colors[256]; -}; - -struct rdp_bitmap -{ - int width; - int height; - int bpp; - char* data; -}; - -struct rdp_cursor -{ - int x; - int y; - int width; - int height; - char mask[(32 * 32) / 8]; - char data[(32 * 32) * 3]; -}; - -/* tcp */ -struct rdp_tcp -{ - int sck; - int sck_closed; - struct rdp_iso* iso_layer; /* owner */ -}; - -/* iso */ -struct rdp_iso -{ - struct rdp_mcs* mcs_layer; /* owner */ - struct rdp_tcp* tcp_layer; -}; - -/* mcs */ -struct rdp_mcs -{ - struct rdp_sec* sec_layer; /* owner */ - struct rdp_iso* iso_layer; - int userid; - struct stream* client_mcs_data; - struct stream* server_mcs_data; -}; - -/* sec */ -struct rdp_sec -{ - struct rdp_rdp* rdp_layer; /* owner */ - struct rdp_mcs* mcs_layer; - struct rdp_lic* lic_layer; - char server_random[32]; - char client_random[64]; - char client_crypt_random[72]; - struct stream* client_mcs_data; - struct stream* server_mcs_data; - int decrypt_use_count; - int encrypt_use_count; - char decrypt_key[16]; - char encrypt_key[16]; - char decrypt_update_key[16]; - char encrypt_update_key[16]; - int rc4_key_size; /* 1 = 40-bit, 2 = 128-bit */ - int rc4_key_len; /* 8 or 16 */ - int crypt_level; /* 1 = low, 2 = medium, 3 = high */ - char sign_key[16]; - void* decrypt_rc4_info; - void* encrypt_rc4_info; -}; - -/* licence */ -struct rdp_lic -{ - struct rdp_sec* sec_layer; /* owner */ - char licence_key[16]; - char licence_sign_key[16]; - int licence_issued; -}; - -/* rdp */ -struct rdp_rdp -{ - struct mod* mod; - struct rdp_sec* sec_layer; - struct rdp_orders* orders; - int share_id; - int use_rdp5; - int bitmap_compression; - int bitmap_cache; - int desktop_save; - int polygon_ellipse_orders; - int rec_mode; - int rec_fd; - /* cache */ - struct rdp_colormap colormap; - struct rdp_cursor cursors[32]; -}; - -struct rdp_orders_state -{ - /* order stuff */ - int order_type; - /* clip state */ - int clip_left; - int clip_top; - int clip_right; - int clip_bottom; - /* text order state */ - int text_font; - int text_flags; - int text_opcode; - int text_mixmode; - int text_fgcolor; - int text_bgcolor; - int text_clipleft; - int text_cliptop; - int text_clipright; - int text_clipbottom; - int text_boxleft; - int text_boxtop; - int text_boxright; - int text_boxbottom; - struct rdp_brush text_brush; - int text_x; - int text_y; - int text_length; - char text_text[256]; - /* destblt order state */ - int dest_x; - int dest_y; - int dest_cx; - int dest_cy; - int dest_opcode; - /* patblt order state */ - int pat_x; - int pat_y; - int pat_cx; - int pat_cy; - int pat_opcode; - int pat_bgcolor; - int pat_fgcolor; - struct rdp_brush pat_brush; - /* screenblt order state */ - int screenblt_x; - int screenblt_y; - int screenblt_cx; - int screenblt_cy; - int screenblt_opcode; - int screenblt_srcx; - int screenblt_srcy; - /* line order state */ - int line_mixmode; - int line_startx; - int line_starty; - int line_endx; - int line_endy; - int line_bgcolor; - int line_opcode; - struct rdp_pen line_pen; - /* rect order state */ - int rect_x; - int rect_y; - int rect_cx; - int rect_cy; - int rect_color; - /* desksave order state */ - int desksave_offset; - int desksave_left; - int desksave_top; - int desksave_right; - int desksave_bottom; - int desksave_action; - /* memblt order state */ - int memblt_cache_id; - int memblt_color_table; - int memblt_x; - int memblt_y; - int memblt_cx; - int memblt_cy; - int memblt_opcode; - int memblt_srcx; - int memblt_srcy; - int memblt_cache_idx; - /* polyline order state */ - int polyline_x; - int polyline_y; - int polyline_opcode; - int polyline_fgcolor; - int polyline_lines; - int polyline_datasize; - char polyline_data[256]; -}; - -/* orders */ -struct rdp_orders -{ - struct rdp_rdp* rdp_layer; - /* order state */ - struct rdp_orders_state state; - /* cache */ - struct rdp_colormap* cache_colormap[6]; - struct rdp_bitmap* cache_bitmap[3][600]; -}; - -#define CURRENT_MOD_VER 2 - -struct mod -{ - int size; /* size of this struct */ - int version; /* internal version */ - /* client functions */ - int (*mod_start)(struct mod* v, int w, int h, int bpp); - int (*mod_connect)(struct mod* v); - int (*mod_event)(struct mod* v, int msg, long param1, long param2, - long param3, long param4); - int (*mod_signal)(struct mod* v); - int (*mod_end)(struct mod* v); - int (*mod_set_param)(struct mod *v, const char *name, const char *value); - int (*mod_session_change)(struct mod* v, int, int); - int (*mod_get_wait_objs)(struct mod* v, tbus* read_objs, int* rcount, - tbus* write_objs, int* wcount, int* timeout); - int (*mod_check_wait_objs)(struct mod* v); - long mod_dumby[100 - 9]; /* align, 100 minus the number of mod - functions above */ - /* server functions */ - int (*server_begin_update)(struct mod* v); - int (*server_end_update)(struct mod* v); - int (*server_fill_rect)(struct mod* v, int x, int y, int cx, int cy); - int (*server_screen_blt)(struct mod* v, int x, int y, int cx, int cy, - int srcx, int srcy); - int (*server_paint_rect)(struct mod* v, int x, int y, int cx, int cy, - char* data, int width, int height, int srcx, int srcy); - int (*server_set_cursor)(struct mod* v, int x, int y, char* data, char* mask); - int (*server_palette)(struct mod* v, int* palette); - int (*server_msg)(struct mod* v, char* msg, int code); - int (*server_is_term)(struct mod* v); - int (*server_set_clip)(struct mod* v, int x, int y, int cx, int cy); - int (*server_reset_clip)(struct mod* v); - int (*server_set_fgcolor)(struct mod* v, int fgcolor); - int (*server_set_bgcolor)(struct mod* v, int bgcolor); - int (*server_set_opcode)(struct mod* v, int opcode); - int (*server_set_mixmode)(struct mod* v, int mixmode); - int (*server_set_brush)(struct mod* v, int x_origin, int y_origin, - int style, char* pattern); - int (*server_set_pen)(struct mod* v, int style, - int width); - int (*server_draw_line)(struct mod* v, int x1, int y1, int x2, int y2); - int (*server_add_char)(struct mod* v, int font, int character, - int offset, int baseline, - int width, int height, char* data); - int (*server_draw_text)(struct mod* v, int font, - int flags, int mixmode, int clip_left, int clip_top, - int clip_right, int clip_bottom, - int box_left, int box_top, - int box_right, int box_bottom, - int x, int y, char* data, int data_len); - int (*server_reset)(struct mod* v, int width, int height, int bpp); - int (*server_query_channel)(struct mod* v, int index, - char* channel_name, - int* channel_flags); - int (*server_get_channel_id)(struct mod* v, const char *name); - int (*server_send_to_channel)(struct mod* v, int channel_id, - char* data, int data_len, - int total_data_len, int flags); - int (*server_bell_trigger)(struct mod* v); - long server_dumby[100 - 25]; /* align, 100 minus the number of server - functions above */ - /* common */ - long handle; /* pointer to self as long */ - long wm; - long painter; - int sck; - /* mod data */ - struct rdp_rdp* rdp_layer; - int width; - int height; - int rdp_bpp; - int xrdp_bpp; - char ip[256]; - char port[256]; - char username[256]; - char password[256]; - char hostname[256]; - char domain[256]; - char program[256]; - char directory[256]; - int keylayout; - int up_and_running; - struct stream* in_s; - tbus sck_obj; -}; - -/* rdp_tcp.c */ -struct rdp_tcp* APP_CC -rdp_tcp_create(struct rdp_iso* owner); -void APP_CC -rdp_tcp_delete(struct rdp_tcp* self); -int APP_CC -rdp_tcp_init(struct rdp_tcp* self, struct stream* s); -int APP_CC -rdp_tcp_recv(struct rdp_tcp* self, struct stream* s, int len); -int APP_CC -rdp_tcp_send(struct rdp_tcp* self, struct stream* s); -int APP_CC -rdp_tcp_connect(struct rdp_tcp* self, char* ip, char* port); -int APP_CC -rdp_tcp_disconnect(struct rdp_tcp* self); - -/* rdp_ico.c */ -struct rdp_iso* APP_CC -rdp_iso_create(struct rdp_mcs* owner); -void APP_CC -rdp_iso_delete(struct rdp_iso* self); -int APP_CC -rdp_iso_recv(struct rdp_iso* self, struct stream* s); -int APP_CC -rdp_iso_init(struct rdp_iso* self, struct stream* s); -int APP_CC -rdp_iso_send(struct rdp_iso* self, struct stream* s); -int APP_CC -rdp_iso_connect(struct rdp_iso* self, char* ip, char* port); -int APP_CC -rdp_iso_disconnect(struct rdp_iso* self); - -/* rdp_mcs.c */ -struct rdp_mcs* APP_CC -rdp_mcs_create(struct rdp_sec* owner, - struct stream* client_mcs_data, - struct stream* server_mcs_data); -void APP_CC -rdp_mcs_delete(struct rdp_mcs* self); -int APP_CC -rdp_mcs_init(struct rdp_mcs* self, struct stream* s); -int APP_CC -rdp_mcs_send(struct rdp_mcs* self, struct stream* s); -int APP_CC -rdp_mcs_connect(struct rdp_mcs* self, char* ip, char* port); -int APP_CC -rdp_mcs_recv(struct rdp_mcs* self, struct stream* s, int* chan); - -/* rdp_sec.c */ -struct rdp_sec* APP_CC -rdp_sec_create(struct rdp_rdp* owner); -void APP_CC -rdp_sec_delete(struct rdp_sec* self); -int APP_CC -rdp_sec_init(struct rdp_sec* self, struct stream* s, int flags); -int APP_CC -rdp_sec_send(struct rdp_sec* self, struct stream* s, int flags); -int APP_CC -rdp_sec_recv(struct rdp_sec* self, struct stream* s, int* chan); -int APP_CC -rdp_sec_connect(struct rdp_sec* self, char* ip, char* port); -void APP_CC -rdp_sec_buf_out_uint32(char* buffer, int value); -void APP_CC -rdp_sec_hash_16(char* out, char* in, char* salt1, char* salt2); -void APP_CC -rdp_sec_hash_48(char* out, char* in, char* salt1, char* salt2, int salt); -void APP_CC -rdp_sec_sign(char* signature, int siglen, char* session_key, int keylen, - char* data, int datalen); - -/* rdp_rdp.c */ -struct rdp_rdp* APP_CC -rdp_rdp_create(struct mod* owner); -void APP_CC -rdp_rdp_delete(struct rdp_rdp* self); -int APP_CC -rdp_rdp_connect(struct rdp_rdp* self, char* ip, char* port); -int APP_CC -rdp_rdp_send_input(struct rdp_rdp* self, struct stream* s, - int time, int message_type, - int device_flags, int param1, int param2); -int APP_CC -rdp_rdp_send_invalidate(struct rdp_rdp* self, struct stream* s, - int left, int top, int width, int height); -int APP_CC -rdp_rdp_recv(struct rdp_rdp* self, struct stream* s, int* type); -int APP_CC -rdp_rdp_process_data_pdu(struct rdp_rdp* self, struct stream* s); -int APP_CC -rdp_rdp_process_demand_active(struct rdp_rdp* self, struct stream* s); -void APP_CC -rdp_rdp_out_unistr(struct stream* s, char* text); -int APP_CC -rdp_rec_check_file(struct rdp_rdp* self); -int APP_CC -rdp_rec_write_item(struct rdp_rdp* self, struct stream* s); - -/* rdp_bitmap.c */ -int APP_CC -rdp_bitmap_decompress(char* output, int width, int height, char* input, - int size, int Bpp); - -/* rdp_orders.c */ -struct rdp_orders* APP_CC -rdp_orders_create(struct rdp_rdp* owner); -void APP_CC -rdp_orders_delete(struct rdp_orders* self); -void APP_CC -rdp_orders_reset_state(struct rdp_orders* self); -int APP_CC -rdp_orders_process_orders(struct rdp_orders* self, struct stream* s, - int num_orders); -char* APP_CC -rdp_orders_convert_bitmap(int in_bpp, int out_bpp, char* bmpdata, - int width, int height, int* palette); -int APP_CC -rdp_orders_convert_color(int in_bpp, int out_bpp, int in_color, int* palette); - -/* rdp_lic.c */ -struct rdp_lic* APP_CC -rdp_lic_create(struct rdp_sec* owner); -void APP_CC -rdp_lic_delete(struct rdp_lic* self); -void APP_CC -rdp_lic_process(struct rdp_lic* self, struct stream* s); |