tmate-protocol.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #ifndef TMATE_PROTOCOL_H
  2. #define TMATE_PROTOCOL_H
  3. enum tmate_control_out_msg_types {
  4. TMATE_CTL_HEADER,
  5. TMATE_CTL_DEAMON_OUT_MSG,
  6. TMATE_CTL_SNAPSHOT,
  7. TMATE_CTL_CLIENT_JOIN,
  8. TMATE_CTL_CLIENT_LEFT,
  9. TMATE_CTL_EXEC,
  10. TMATE_CTL_LATENCY,
  11. };
  12. /*
  13. [TMATE_CTL_HEADER, int: ctl_proto_version, string: ip_address, string: pubkey,
  14. string: session_token, string: session_token_ro, string: ssh_cmd_fmt]
  15. string: client_version, int: client_protocol_version]
  16. [TMATE_CTL_DEAMON_OUT_MSG, object: msg]
  17. [TMATE_CTL_SNAPSHOT, [[int: pane_id, [int: cur_x, int: cur_y], int: mode,
  18. [[string: line_utf8, [int: char_attr, ...]], ...], ...], ...]]
  19. [TMATE_CTL_CLIENT_JOIN, int: client_id, string: ip_address, string: pubkey, boolean: readonly]
  20. [TMATE_CTL_CLIENT_LEFT, int: client_id]
  21. [TMATE_CTL_EXEC, string: username, string: ip_address, string: pubkey, string: command]
  22. [TMATE_CTL_LATENCY, int: client_id, int: latency_ms] // client_id == -1: tmate host
  23. */
  24. enum tmate_control_in_msg_types {
  25. TMATE_CTL_DEAMON_FWD_MSG,
  26. TMATE_CTL_REQUEST_SNAPSHOT,
  27. TMATE_CTL_PANE_KEYS,
  28. TMATE_CTL_RESIZE,
  29. TMATE_CTL_EXEC_RESPONSE,
  30. TMATE_CTL_RENAME_SESSION,
  31. };
  32. /*
  33. [TMATE_CTL_DEAMON_FWD_MSG, object: msg]
  34. [TMATE_CTL_REQUEST_SNAPSHOT, int: max_history_lines]
  35. [TMATE_CTL_PANE_KEYS, int: pane_id, string: keys]
  36. [TMATE_CTL_RESIZE, int: sx, int: sy] // sx == -1: no clients
  37. [TMATE_CTL_EXEC_RESPONSE, int: exit_code, string: message]
  38. [TMATE_CTL_RENAME_SESSION, string: stoken, string: stoken_ro]
  39. */
  40. enum tmate_daemon_out_msg_types {
  41. TMATE_OUT_HEADER,
  42. TMATE_OUT_SYNC_LAYOUT,
  43. TMATE_OUT_PTY_DATA,
  44. TMATE_OUT_EXEC_CMD_STR,
  45. TMATE_OUT_FAILED_CMD,
  46. TMATE_OUT_STATUS,
  47. TMATE_OUT_SYNC_COPY_MODE,
  48. TMATE_OUT_WRITE_COPY_MODE,
  49. TMATE_OUT_FIN,
  50. TMATE_OUT_READY,
  51. TMATE_OUT_RECONNECT,
  52. TMATE_OUT_SNAPSHOT,
  53. TMATE_OUT_EXEC_CMD,
  54. };
  55. /*
  56. [TMATE_OUT_HEADER, int: proto_version, string: version]
  57. [TMATE_OUT_SYNC_LAYOUT, [int: sx, int: sy, [[int: win_id, string: win_name,
  58. [[int: pane_id, int: sx, int: sy, int: xoff, int: yoff], ...],
  59. int: active_pane_id], ...], int: active_win_id]
  60. [TMATE_OUT_PTY_DATA, int: pane_id, binary: buffer]
  61. [TMATE_OUT_EXEC_CMD_STR, string: cmd]
  62. [TMATE_OUT_FAILED_CMD, int: client_id, string: cause]
  63. [TMATE_OUT_STATUS, string: left, string: right]
  64. [TMATE_OUT_SYNC_COPY_MODE, int: pane_id, [int: backing, int: oy, int: cx, int: cy,
  65. [int: selx, int: sely, int: flags],
  66. [int: type, string: input_prompt, string: input_str]])
  67. // Any of the array can be []
  68. [TMATE_OUT_WRITE_COPY_MODE, int: pane_id, string: str]
  69. [TMATE_OUT_FIN]
  70. [TMATE_OUT_READY]
  71. [TMATE_OUT_RECONNECT, string: reconnection_data]
  72. [TMATE_OUT_SNAPSHOT, ...]
  73. [TMATE_OUT_EXEC_CMD, string: cmd_name, ...string: args]
  74. */
  75. enum tmate_daemon_in_msg_types {
  76. TMATE_IN_NOTIFY,
  77. TMATE_IN_LEGACY_PANE_KEY,
  78. TMATE_IN_RESIZE,
  79. TMATE_IN_EXEC_CMD_STR,
  80. TMATE_IN_SET_ENV,
  81. TMATE_IN_READY,
  82. TMATE_IN_PANE_KEY,
  83. TMATE_IN_EXEC_CMD,
  84. };
  85. /*
  86. [TMATE_IN_NOTIFY, string: msg]
  87. [TMATE_IN_PANE_KEY, int: key]
  88. [TMATE_IN_RESIZE, int: sx, int: sy] // sx == -1: no clients
  89. [TMATE_IN_EXEC_CMD_STR, int: client_id, string: cmd]
  90. [TMATE_IN_SET_ENV, string: name, string: value]
  91. [TMATE_IN_READY]
  92. [TMATE_IN_PANE_KEY, int: pane_id, uint64 keycode] // pane_id == -1: active pane
  93. [TMATE_IN_EXEC_CMD, int: client_id, ...string: args]
  94. */
  95. #endif