| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | syntax = "proto3";
 | 
					
						
							|  |  |  | package hbb;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-05 16:16:08 +08:00
										 |  |  | message EncodedVideoFrame {
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   bytes data = 1;
 | 
					
						
							|  |  |  |   bool key = 2;
 | 
					
						
							|  |  |  |   int64 pts = 3;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-05 16:16:08 +08:00
										 |  |  | message EncodedVideoFrames { repeated EncodedVideoFrame frames = 1; }
 | 
					
						
							| 
									
										
										
										
											2022-05-29 17:23:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | message RGB { bool compress = 1; }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // planes data send directly in binary for better use arraybuffer on web
 | 
					
						
							|  |  |  | message YUV {
 | 
					
						
							|  |  |  |   bool compress = 1;
 | 
					
						
							|  |  |  |   int32 stride = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message VideoFrame {
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							| 
									
										
										
										
											2022-07-05 16:16:08 +08:00
										 |  |  |     EncodedVideoFrames vp9s = 6;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |     RGB rgb = 7;
 | 
					
						
							|  |  |  |     YUV yuv = 8;
 | 
					
						
							| 
									
										
										
										
											2022-07-05 16:16:08 +08:00
										 |  |  |     EncodedVideoFrames h264s = 10;
 | 
					
						
							|  |  |  |     EncodedVideoFrames h265s = 11;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   }
 | 
					
						
							| 
									
										
										
										
											2022-05-19 18:39:13 +08:00
										 |  |  |   int64 timestamp = 9;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-26 00:06:06 +08:00
										 |  |  | message IdPk {
 | 
					
						
							|  |  |  |   string id = 1;
 | 
					
						
							|  |  |  |   bytes pk = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-10 18:05:42 +08:00
										 |  |  | message DisplayInfo {
 | 
					
						
							|  |  |  |   sint32 x = 1;
 | 
					
						
							|  |  |  |   sint32 y = 2;
 | 
					
						
							|  |  |  |   int32 width = 3;
 | 
					
						
							|  |  |  |   int32 height = 4;
 | 
					
						
							|  |  |  |   string name = 5;
 | 
					
						
							|  |  |  |   bool online = 6;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | message PortForward {
 | 
					
						
							|  |  |  |   string host = 1;
 | 
					
						
							|  |  |  |   int32 port = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileTransfer {
 | 
					
						
							|  |  |  |   string dir = 1;
 | 
					
						
							|  |  |  |   bool show_hidden = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message LoginRequest {
 | 
					
						
							|  |  |  |   string username = 1;
 | 
					
						
							|  |  |  |   bytes password = 2;
 | 
					
						
							|  |  |  |   string my_id = 4;
 | 
					
						
							|  |  |  |   string my_name = 5;
 | 
					
						
							|  |  |  |   OptionMessage option = 6;
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							|  |  |  |     FileTransfer file_transfer = 7;
 | 
					
						
							|  |  |  |     PortForward port_forward = 8;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							| 
									
										
										
										
											2022-02-05 01:19:24 +08:00
										 |  |  |   bool video_ack_required = 9;
 | 
					
						
							| 
									
										
										
										
											2022-07-18 14:03:52 +08:00
										 |  |  |   uint64 session_id = 10;
 | 
					
						
							| 
									
										
										
										
											2022-08-01 09:50:23 +08:00
										 |  |  |   string version = 11;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message ChatMessage { string text = 1; }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  | message Features {
 | 
					
						
							|  |  |  |   bool privacy_mode = 1;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-09 20:17:10 +08:00
										 |  |  | message SupportedEncoding {
 | 
					
						
							|  |  |  |   bool h264 = 1;
 | 
					
						
							|  |  |  |   bool h265 = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-10 18:05:42 +08:00
										 |  |  | message PeerInfo {
 | 
					
						
							|  |  |  |   string username = 1;
 | 
					
						
							|  |  |  |   string hostname = 2;
 | 
					
						
							|  |  |  |   string platform = 3;
 | 
					
						
							|  |  |  |   repeated DisplayInfo displays = 4;
 | 
					
						
							|  |  |  |   int32 current_display = 5;
 | 
					
						
							|  |  |  |   bool sas_enabled = 6;
 | 
					
						
							|  |  |  |   string version = 7;
 | 
					
						
							| 
									
										
										
										
											2022-05-12 17:35:25 +08:00
										 |  |  |   int32 conn_id = 8;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |   Features features = 9;
 | 
					
						
							| 
									
										
										
										
											2022-07-09 20:17:10 +08:00
										 |  |  |   SupportedEncoding encoding = 10;
 | 
					
						
							| 
									
										
										
										
											2022-01-10 18:05:42 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | message LoginResponse {
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							|  |  |  |     string error = 1;
 | 
					
						
							| 
									
										
										
										
											2022-01-10 18:05:42 +08:00
										 |  |  |     PeerInfo peer_info = 2;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   }
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message MouseEvent {
 | 
					
						
							|  |  |  |   int32 mask = 1;
 | 
					
						
							|  |  |  |   sint32 x = 2;
 | 
					
						
							|  |  |  |   sint32 y = 3;
 | 
					
						
							|  |  |  |   repeated ControlKey modifiers = 4;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-19 15:43:13 +08:00
										 |  |  | enum KeyboardMode{
 | 
					
						
							|  |  |  |   Legacy = 0;
 | 
					
						
							|  |  |  |   Map = 1;
 | 
					
						
							|  |  |  |   Translate = 2;
 | 
					
						
							|  |  |  |   Auto = 3;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | enum ControlKey {
 | 
					
						
							| 
									
										
										
										
											2022-01-09 19:56:24 +08:00
										 |  |  |   Unknown = 0;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   Alt = 1;
 | 
					
						
							|  |  |  |   Backspace = 2;
 | 
					
						
							|  |  |  |   CapsLock = 3;
 | 
					
						
							|  |  |  |   Control = 4;
 | 
					
						
							|  |  |  |   Delete = 5;
 | 
					
						
							|  |  |  |   DownArrow = 6;
 | 
					
						
							|  |  |  |   End = 7;
 | 
					
						
							|  |  |  |   Escape = 8;
 | 
					
						
							|  |  |  |   F1 = 9;
 | 
					
						
							|  |  |  |   F10 = 10;
 | 
					
						
							|  |  |  |   F11 = 11;
 | 
					
						
							|  |  |  |   F12 = 12;
 | 
					
						
							|  |  |  |   F2 = 13;
 | 
					
						
							|  |  |  |   F3 = 14;
 | 
					
						
							|  |  |  |   F4 = 15;
 | 
					
						
							|  |  |  |   F5 = 16;
 | 
					
						
							|  |  |  |   F6 = 17;
 | 
					
						
							|  |  |  |   F7 = 18;
 | 
					
						
							|  |  |  |   F8 = 19;
 | 
					
						
							|  |  |  |   F9 = 20;
 | 
					
						
							|  |  |  |   Home = 21;
 | 
					
						
							|  |  |  |   LeftArrow = 22;
 | 
					
						
							|  |  |  |   /// meta key (also known as "windows"; "super"; and "command")
 | 
					
						
							|  |  |  |   Meta = 23;
 | 
					
						
							|  |  |  |   /// option key on macOS (alt key on Linux and Windows)
 | 
					
						
							| 
									
										
										
										
											2022-01-15 19:11:19 +08:00
										 |  |  |   Option = 24; // deprecated, use Alt instead
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   PageDown = 25;
 | 
					
						
							|  |  |  |   PageUp = 26;
 | 
					
						
							|  |  |  |   Return = 27;
 | 
					
						
							|  |  |  |   RightArrow = 28;
 | 
					
						
							|  |  |  |   Shift = 29;
 | 
					
						
							|  |  |  |   Space = 30;
 | 
					
						
							|  |  |  |   Tab = 31;
 | 
					
						
							|  |  |  |   UpArrow = 32;
 | 
					
						
							|  |  |  |   Numpad0 = 33;
 | 
					
						
							|  |  |  |   Numpad1 = 34;
 | 
					
						
							|  |  |  |   Numpad2 = 35;
 | 
					
						
							|  |  |  |   Numpad3 = 36;
 | 
					
						
							|  |  |  |   Numpad4 = 37;
 | 
					
						
							|  |  |  |   Numpad5 = 38;
 | 
					
						
							|  |  |  |   Numpad6 = 39;
 | 
					
						
							|  |  |  |   Numpad7 = 40;
 | 
					
						
							|  |  |  |   Numpad8 = 41;
 | 
					
						
							|  |  |  |   Numpad9 = 42;
 | 
					
						
							|  |  |  |   Cancel = 43;
 | 
					
						
							|  |  |  |   Clear = 44;
 | 
					
						
							| 
									
										
										
										
											2021-05-26 12:42:21 +08:00
										 |  |  |   Menu = 45; // deprecated, use Alt instead
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   Pause = 46;
 | 
					
						
							|  |  |  |   Kana = 47;
 | 
					
						
							|  |  |  |   Hangul = 48;
 | 
					
						
							|  |  |  |   Junja = 49;
 | 
					
						
							|  |  |  |   Final = 50;
 | 
					
						
							|  |  |  |   Hanja = 51;
 | 
					
						
							|  |  |  |   Kanji = 52;
 | 
					
						
							|  |  |  |   Convert = 53;
 | 
					
						
							|  |  |  |   Select = 54;
 | 
					
						
							|  |  |  |   Print = 55;
 | 
					
						
							|  |  |  |   Execute = 56;
 | 
					
						
							|  |  |  |   Snapshot = 57;
 | 
					
						
							|  |  |  |   Insert = 58;
 | 
					
						
							|  |  |  |   Help = 59;
 | 
					
						
							|  |  |  |   Sleep = 60;
 | 
					
						
							|  |  |  |   Separator = 61;
 | 
					
						
							|  |  |  |   Scroll = 62;
 | 
					
						
							|  |  |  |   NumLock = 63;
 | 
					
						
							|  |  |  |   RWin = 64;
 | 
					
						
							|  |  |  |   Apps = 65;
 | 
					
						
							|  |  |  |   Multiply = 66;
 | 
					
						
							|  |  |  |   Add = 67;
 | 
					
						
							|  |  |  |   Subtract = 68;
 | 
					
						
							|  |  |  |   Decimal = 69;
 | 
					
						
							|  |  |  |   Divide = 70;
 | 
					
						
							|  |  |  |   Equals = 71;
 | 
					
						
							|  |  |  |   NumpadEnter = 72;
 | 
					
						
							| 
									
										
										
										
											2022-01-15 16:31:21 +08:00
										 |  |  |   RShift = 73;
 | 
					
						
							| 
									
										
										
										
											2021-05-26 12:42:21 +08:00
										 |  |  |   RControl = 74;
 | 
					
						
							|  |  |  |   RAlt = 75;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   CtrlAltDel = 100;
 | 
					
						
							|  |  |  |   LockScreen = 101;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message KeyEvent {
 | 
					
						
							|  |  |  |   bool down = 1;
 | 
					
						
							|  |  |  |   bool press = 2;
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							|  |  |  |     ControlKey control_key = 3;
 | 
					
						
							|  |  |  |     uint32 chr = 4;
 | 
					
						
							|  |  |  |     uint32 unicode = 5;
 | 
					
						
							|  |  |  |     string seq = 6;
 | 
					
						
							| 
									
										
										
										
											2022-01-15 19:11:19 +08:00
										 |  |  |   }
 | 
					
						
							| 
									
										
										
										
											2022-01-15 18:27:15 +08:00
										 |  |  |   repeated ControlKey modifiers = 8;
 | 
					
						
							| 
									
										
										
										
											2022-07-19 15:43:13 +08:00
										 |  |  |   KeyboardMode mode = 9;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message CursorData {
 | 
					
						
							|  |  |  |   uint64 id = 1;
 | 
					
						
							|  |  |  |   sint32 hotx = 2;
 | 
					
						
							|  |  |  |   sint32 hoty = 3;
 | 
					
						
							|  |  |  |   int32 width = 4;
 | 
					
						
							|  |  |  |   int32 height = 5;
 | 
					
						
							|  |  |  |   bytes colors = 6;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message CursorPosition {
 | 
					
						
							|  |  |  |   sint32 x = 1;
 | 
					
						
							|  |  |  |   sint32 y = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message Hash {
 | 
					
						
							|  |  |  |   string salt = 1;
 | 
					
						
							|  |  |  |   string challenge = 2;
 | 
					
						
							| 
									
										
										
										
											2022-01-15 19:11:19 +08:00
										 |  |  | }
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | message Clipboard {
 | 
					
						
							|  |  |  |   bool compress = 1;
 | 
					
						
							|  |  |  |   bytes content = 2;
 | 
					
						
							| 
									
										
										
										
											2022-01-15 19:11:19 +08:00
										 |  |  | }
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | enum FileType {
 | 
					
						
							| 
									
										
										
										
											2022-01-21 02:06:33 +08:00
										 |  |  |   Dir = 0;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   DirLink = 2;
 | 
					
						
							|  |  |  |   DirDrive = 3;
 | 
					
						
							|  |  |  |   File = 4;
 | 
					
						
							|  |  |  |   FileLink = 5;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileEntry {
 | 
					
						
							|  |  |  |   FileType entry_type = 1;
 | 
					
						
							|  |  |  |   string name = 2;
 | 
					
						
							|  |  |  |   bool is_hidden = 3;
 | 
					
						
							|  |  |  |   uint64 size = 4;
 | 
					
						
							|  |  |  |   uint64 modified_time = 5;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileDirectory {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   string path = 2;
 | 
					
						
							|  |  |  |   repeated FileEntry entries = 3;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message ReadDir {
 | 
					
						
							|  |  |  |   string path = 1;
 | 
					
						
							|  |  |  |   bool include_hidden = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message ReadAllFiles {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   string path = 2;
 | 
					
						
							|  |  |  |   bool include_hidden = 3;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileAction {
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							|  |  |  |     ReadDir read_dir = 1;
 | 
					
						
							|  |  |  |     FileTransferSendRequest send = 2;
 | 
					
						
							|  |  |  |     FileTransferReceiveRequest receive = 3;
 | 
					
						
							|  |  |  |     FileDirCreate create = 4;
 | 
					
						
							|  |  |  |     FileRemoveDir remove_dir = 5;
 | 
					
						
							|  |  |  |     FileRemoveFile remove_file = 6;
 | 
					
						
							|  |  |  |     ReadAllFiles all_files = 7;
 | 
					
						
							|  |  |  |     FileTransferCancel cancel = 8;
 | 
					
						
							| 
									
										
										
										
											2022-04-28 17:42:22 +08:00
										 |  |  |     FileTransferSendConfirmRequest send_confirm = 9;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   }
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileTransferCancel { int32 id = 1; }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileResponse {
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							|  |  |  |     FileDirectory dir = 1;
 | 
					
						
							|  |  |  |     FileTransferBlock block = 2;
 | 
					
						
							|  |  |  |     FileTransferError error = 3;
 | 
					
						
							|  |  |  |     FileTransferDone done = 4;
 | 
					
						
							| 
									
										
										
										
											2022-04-26 14:56:15 +08:00
										 |  |  |     FileTransferDigest digest = 5;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   }
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-26 14:56:15 +08:00
										 |  |  | message FileTransferDigest {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   sint32 file_num = 2;
 | 
					
						
							| 
									
										
										
										
											2022-04-29 16:47:45 +08:00
										 |  |  |   uint64 last_modified = 3;
 | 
					
						
							| 
									
										
										
										
											2022-04-26 14:56:15 +08:00
										 |  |  |   uint64 file_size = 4;
 | 
					
						
							| 
									
										
										
										
											2022-04-28 17:42:22 +08:00
										 |  |  |   bool is_upload = 5;
 | 
					
						
							| 
									
										
										
										
											2022-04-26 14:56:15 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | message FileTransferBlock {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   sint32 file_num = 2;
 | 
					
						
							|  |  |  |   bytes data = 3;
 | 
					
						
							|  |  |  |   bool compressed = 4;
 | 
					
						
							| 
									
										
										
										
											2022-04-26 14:56:15 +08:00
										 |  |  |   uint32 blk_id = 5;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileTransferError {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   string error = 2;
 | 
					
						
							|  |  |  |   sint32 file_num = 3;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileTransferSendRequest {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   string path = 2;
 | 
					
						
							|  |  |  |   bool include_hidden = 3;
 | 
					
						
							| 
									
										
										
										
											2022-05-13 11:23:30 +08:00
										 |  |  |   int32 file_num = 4;
 | 
					
						
							| 
									
										
										
										
											2022-04-26 14:56:15 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileTransferSendConfirmRequest {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   sint32 file_num = 2;
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							|  |  |  |     bool skip = 3;
 | 
					
						
							|  |  |  |     uint32 offset_blk = 4;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							| 
									
										
										
										
											2022-05-08 21:01:03 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | message FileTransferDone {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   sint32 file_num = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileTransferReceiveRequest {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   string path = 2; // path written to
 | 
					
						
							|  |  |  |   repeated FileEntry files = 3;
 | 
					
						
							| 
									
										
										
										
											2022-05-13 11:23:30 +08:00
										 |  |  |   int32 file_num = 4;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileRemoveDir {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   string path = 2;
 | 
					
						
							|  |  |  |   bool recursive = 3;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileRemoveFile {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   string path = 2;
 | 
					
						
							|  |  |  |   sint32 file_num = 3;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message FileDirCreate {
 | 
					
						
							|  |  |  |   int32 id = 1;
 | 
					
						
							|  |  |  |   string path = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | // main logic from freeRDP
 | 
					
						
							|  |  |  | message CliprdrMonitorReady {
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message CliprdrFormat {
 | 
					
						
							| 
									
										
										
										
											2022-02-24 11:22:19 +08:00
										 |  |  |   int32 id = 2;
 | 
					
						
							|  |  |  |   string format = 3;
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | }
 | 
					
						
							| 
									
										
										
										
											2022-02-15 14:46:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | message CliprdrServerFormatList {
 | 
					
						
							| 
									
										
										
										
											2022-02-24 11:22:19 +08:00
										 |  |  |   repeated CliprdrFormat formats = 2;
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | }
 | 
					
						
							| 
									
										
										
										
											2022-02-15 14:46:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | message CliprdrServerFormatListResponse {
 | 
					
						
							| 
									
										
										
										
											2022-02-24 11:22:19 +08:00
										 |  |  |   int32 msg_flags = 2;
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message CliprdrServerFormatDataRequest {
 | 
					
						
							| 
									
										
										
										
											2022-02-24 11:22:19 +08:00
										 |  |  |   int32 requested_format_id = 2;
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | }
 | 
					
						
							| 
									
										
										
										
											2022-02-15 14:46:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | message CliprdrServerFormatDataResponse {
 | 
					
						
							| 
									
										
										
										
											2022-02-24 11:22:19 +08:00
										 |  |  |   int32 msg_flags = 2;
 | 
					
						
							|  |  |  |   bytes format_data = 3;
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message CliprdrFileContentsRequest {
 | 
					
						
							| 
									
										
										
										
											2022-02-24 11:22:19 +08:00
										 |  |  |   int32 stream_id = 2;
 | 
					
						
							| 
									
										
										
										
											2022-02-24 14:40:33 +08:00
										 |  |  |   int32 list_index = 3;
 | 
					
						
							|  |  |  |   int32 dw_flags = 4;
 | 
					
						
							|  |  |  |   int32 n_position_low = 5;
 | 
					
						
							|  |  |  |   int32 n_position_high = 6;
 | 
					
						
							|  |  |  |   int32 cb_requested = 7;
 | 
					
						
							|  |  |  |   bool have_clip_data_id = 8;
 | 
					
						
							|  |  |  |   int32 clip_data_id = 9;
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | }
 | 
					
						
							| 
									
										
										
										
											2022-02-15 14:46:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | message CliprdrFileContentsResponse {
 | 
					
						
							|  |  |  |   int32 msg_flags = 3;
 | 
					
						
							|  |  |  |   int32 stream_id = 4;
 | 
					
						
							| 
									
										
										
										
											2022-02-24 14:40:33 +08:00
										 |  |  |   bytes requested_data = 5;
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message Cliprdr {
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							|  |  |  |     CliprdrMonitorReady ready = 1;
 | 
					
						
							|  |  |  |     CliprdrServerFormatList format_list = 2;
 | 
					
						
							|  |  |  |     CliprdrServerFormatListResponse format_list_response = 3;
 | 
					
						
							|  |  |  |     CliprdrServerFormatDataRequest format_data_request = 4;
 | 
					
						
							|  |  |  |     CliprdrServerFormatDataResponse format_data_response = 5;
 | 
					
						
							|  |  |  |     CliprdrFileContentsRequest file_contents_request = 6;
 | 
					
						
							|  |  |  |     CliprdrFileContentsResponse file_contents_response = 7;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | message SwitchDisplay {
 | 
					
						
							|  |  |  |   int32 display = 1;
 | 
					
						
							|  |  |  |   sint32 x = 2;
 | 
					
						
							|  |  |  |   sint32 y = 3;
 | 
					
						
							|  |  |  |   int32 width = 4;
 | 
					
						
							|  |  |  |   int32 height = 5;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message PermissionInfo {
 | 
					
						
							| 
									
										
										
										
											2022-01-17 16:53:17 +08:00
										 |  |  |   enum Permission {
 | 
					
						
							| 
									
										
										
										
											2022-01-21 02:06:33 +08:00
										 |  |  |     Keyboard = 0;
 | 
					
						
							| 
									
										
										
										
											2022-01-17 16:53:17 +08:00
										 |  |  |     Clipboard = 2;
 | 
					
						
							|  |  |  |     Audio = 3;
 | 
					
						
							| 
									
										
										
										
											2022-02-15 14:46:08 +08:00
										 |  |  |     File = 4;
 | 
					
						
							| 
									
										
										
										
											2022-07-25 19:35:15 +08:00
										 |  |  |     Restart = 5;
 | 
					
						
							| 
									
										
										
										
											2022-09-22 09:55:34 +08:00
										 |  |  |     Recording = 6;
 | 
					
						
							| 
									
										
										
										
											2022-01-17 16:53:17 +08:00
										 |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   Permission permission = 1;
 | 
					
						
							|  |  |  |   bool enabled = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum ImageQuality {
 | 
					
						
							|  |  |  |   NotSet = 0;
 | 
					
						
							| 
									
										
										
										
											2022-06-27 22:24:56 +08:00
										 |  |  |   Low = 2;
 | 
					
						
							|  |  |  |   Balanced = 3;
 | 
					
						
							|  |  |  |   Best = 4;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-29 17:23:14 +08:00
										 |  |  | message VideoCodecState {
 | 
					
						
							| 
									
										
										
										
											2022-07-09 20:17:10 +08:00
										 |  |  |   enum PerferCodec {
 | 
					
						
							|  |  |  |     Auto = 0;
 | 
					
						
							|  |  |  |     VPX = 1;
 | 
					
						
							|  |  |  |     H264 = 2;
 | 
					
						
							|  |  |  |     H265 = 3;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   int32 score_vpx = 1;
 | 
					
						
							|  |  |  |   int32 score_h264 = 2;
 | 
					
						
							|  |  |  |   int32 score_h265 = 3;
 | 
					
						
							|  |  |  |   PerferCodec perfer = 4;
 | 
					
						
							| 
									
										
										
										
											2022-05-29 17:23:14 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | message OptionMessage {
 | 
					
						
							| 
									
										
										
										
											2022-01-17 16:53:17 +08:00
										 |  |  |   enum BoolOption {
 | 
					
						
							|  |  |  |     NotSet = 0;
 | 
					
						
							|  |  |  |     No = 1;
 | 
					
						
							|  |  |  |     Yes = 2;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   ImageQuality image_quality = 1;
 | 
					
						
							|  |  |  |   BoolOption lock_after_session_end = 2;
 | 
					
						
							|  |  |  |   BoolOption show_remote_cursor = 3;
 | 
					
						
							|  |  |  |   BoolOption privacy_mode = 4;
 | 
					
						
							|  |  |  |   BoolOption block_input = 5;
 | 
					
						
							| 
									
										
										
										
											2022-06-27 03:30:46 -07:00
										 |  |  |   int32 custom_image_quality = 6;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   BoolOption disable_audio = 7;
 | 
					
						
							|  |  |  |   BoolOption disable_clipboard = 8;
 | 
					
						
							| 
									
										
										
										
											2022-02-15 14:46:08 +08:00
										 |  |  |   BoolOption enable_file_transfer = 9;
 | 
					
						
							| 
									
										
										
										
											2022-05-29 17:23:14 +08:00
										 |  |  |   VideoCodecState video_codec_state = 10;
 | 
					
						
							| 
									
										
										
										
											2022-10-19 10:19:49 +08:00
										 |  |  |   int32 custom_fps = 11;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message TestDelay {
 | 
					
						
							|  |  |  |   int64 time = 1;
 | 
					
						
							|  |  |  |   bool from_client = 2;
 | 
					
						
							| 
									
										
										
										
											2022-06-23 17:42:30 +08:00
										 |  |  |   uint32 last_delay = 3;
 | 
					
						
							|  |  |  |   uint32 target_bitrate = 4;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message PublicKey {
 | 
					
						
							|  |  |  |   bytes asymmetric_value = 1;
 | 
					
						
							|  |  |  |   bytes symmetric_value = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-15 16:31:21 +08:00
										 |  |  | message SignedId { bytes id = 1; }
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | message AudioFormat {
 | 
					
						
							|  |  |  |   uint32 sample_rate = 1;
 | 
					
						
							|  |  |  |   uint32 channels = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-19 18:39:13 +08:00
										 |  |  | message AudioFrame { 
 | 
					
						
							|  |  |  |   bytes data = 1; 
 | 
					
						
							|  |  |  |   int64 timestamp = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-14 11:19:49 +08:00
										 |  |  | // Notify peer to show message box.
 | 
					
						
							|  |  |  | message MessageBox {
 | 
					
						
							|  |  |  |   // Message type. Refer to flutter/lib/commom.dart/msgBox().
 | 
					
						
							|  |  |  |   string msgtype = 1;
 | 
					
						
							|  |  |  |   string title = 2;
 | 
					
						
							|  |  |  |   // English
 | 
					
						
							|  |  |  |   string text = 3;
 | 
					
						
							|  |  |  |   // If not empty, msgbox provides a button to following the link.
 | 
					
						
							|  |  |  |   // The link here can't be directly http url.
 | 
					
						
							|  |  |  |   // It must be the key of http url configed in peer side or "rustdesk://*" (jump in app).
 | 
					
						
							|  |  |  |   string link = 4;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  | message BackNotification {
 | 
					
						
							|  |  |  |   // no need to consider block input by someone else
 | 
					
						
							|  |  |  |   enum BlockInputState {
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     BlkStateUnknown = 0;
 | 
					
						
							|  |  |  |     BlkOnSucceeded = 2;
 | 
					
						
							|  |  |  |     BlkOnFailed = 3;
 | 
					
						
							|  |  |  |     BlkOffSucceeded = 4;
 | 
					
						
							|  |  |  |     BlkOffFailed = 5;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |   }
 | 
					
						
							|  |  |  |   enum PrivacyModeState {
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     PrvStateUnknown = 0;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |     // Privacy mode on by someone else
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     PrvOnByOther = 2;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |     // Privacy mode is not supported on the remote side
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     PrvNotSupported = 3;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |     // Privacy mode on by self
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     PrvOnSucceeded = 4;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |     // Privacy mode on by self, but denied
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     PrvOnFailedDenied = 5;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |     // Some plugins are not found
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     PrvOnFailedPlugin = 6;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |     // Privacy mode on by self, but failed
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     PrvOnFailed = 7;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |     // Privacy mode off by self
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     PrvOffSucceeded = 8;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |     // Ctrl + P
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     PrvOffByPeer = 9;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |     // Privacy mode off by self, but failed
 | 
					
						
							| 
									
										
										
										
											2022-07-31 22:31:17 +08:00
										 |  |  |     PrvOffFailed = 10;
 | 
					
						
							|  |  |  |     PrvOffUnknown = 11;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							|  |  |  |     PrivacyModeState privacy_mode_state = 1;
 | 
					
						
							|  |  |  |     BlockInputState block_input_state = 2;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  | message Misc {
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							|  |  |  |     ChatMessage chat_message = 4;
 | 
					
						
							|  |  |  |     SwitchDisplay switch_display = 5;
 | 
					
						
							|  |  |  |     PermissionInfo permission_info = 6;
 | 
					
						
							|  |  |  |     OptionMessage option = 7;
 | 
					
						
							|  |  |  |     AudioFormat audio_format = 8;
 | 
					
						
							|  |  |  |     string close_reason = 9;
 | 
					
						
							|  |  |  |     bool refresh_video = 10;
 | 
					
						
							| 
									
										
										
										
											2022-02-04 22:18:48 +08:00
										 |  |  |     bool video_received = 12;
 | 
					
						
							| 
									
										
										
										
											2022-04-25 12:28:28 +08:00
										 |  |  |     BackNotification back_notification = 13;
 | 
					
						
							| 
									
										
										
										
											2022-07-25 19:35:15 +08:00
										 |  |  |     bool restart_remote_device = 14;
 | 
					
						
							| 
									
										
										
										
											2022-09-27 13:30:49 +08:00
										 |  |  |     bool uac = 15;
 | 
					
						
							| 
									
										
										
										
											2022-09-28 20:48:14 +08:00
										 |  |  |     bool foreground_window_elevated = 16;
 | 
					
						
							| 
									
										
										
										
											2022-11-09 17:28:47 +08:00
										 |  |  |     bool stop_service = 17;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   }
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message Message {
 | 
					
						
							|  |  |  |   oneof union {
 | 
					
						
							|  |  |  |     SignedId signed_id = 3;
 | 
					
						
							|  |  |  |     PublicKey public_key = 4;
 | 
					
						
							|  |  |  |     TestDelay test_delay = 5;
 | 
					
						
							|  |  |  |     VideoFrame video_frame = 6;
 | 
					
						
							|  |  |  |     LoginRequest login_request = 7;
 | 
					
						
							|  |  |  |     LoginResponse login_response = 8;
 | 
					
						
							|  |  |  |     Hash hash = 9;
 | 
					
						
							|  |  |  |     MouseEvent mouse_event = 10;
 | 
					
						
							|  |  |  |     AudioFrame audio_frame = 11;
 | 
					
						
							|  |  |  |     CursorData cursor_data = 12;
 | 
					
						
							|  |  |  |     CursorPosition cursor_position = 13;
 | 
					
						
							|  |  |  |     uint64 cursor_id = 14;
 | 
					
						
							|  |  |  |     KeyEvent key_event = 15;
 | 
					
						
							|  |  |  |     Clipboard clipboard = 16;
 | 
					
						
							|  |  |  |     FileAction file_action = 17;
 | 
					
						
							|  |  |  |     FileResponse file_response = 18;
 | 
					
						
							|  |  |  |     Misc misc = 19;
 | 
					
						
							| 
									
										
										
										
											2022-02-14 17:34:09 +08:00
										 |  |  |     Cliprdr cliprdr = 20;
 | 
					
						
							| 
									
										
										
										
											2022-10-14 11:19:49 +08:00
										 |  |  |     MessageBox message_box = 21;
 | 
					
						
							| 
									
										
										
										
											2021-03-29 15:59:14 +08:00
										 |  |  |   }
 | 
					
						
							|  |  |  | }
 |