Commit Graph

162 Commits

Author SHA1 Message Date
Michael Jumper
9e28de70ec GUACAMOLE-630: Separate setting of font family/size from terminal display initialization. 2018-11-10 14:22:23 -08:00
Michael Jumper
f293c5e9c0 GUACAMOLE-630: Do not entirely reset terminal state when color scheme is changed. 2018-10-22 23:23:27 -07:00
Michael Jumper
dcab540839 GUACAMOLE-630: Persist semantics of default foreground/background with dedicated palette pseudo-indexes. 2018-10-22 23:23:27 -07:00
Michael Jumper
2f16eadb35 GUACAMOLE-630: Allow color scheme to be changed from webapp via argv streams. 2018-10-22 23:23:27 -07:00
Michael Jumper
6f9f2189f2 GUACAMOLE-630: Separate color scheme parsing into own files. 2018-10-22 23:23:27 -07:00
Michael Jumper
d851f10a48 GUACAMOLE-353: Clarify applicability of ASF header when transcluded into generated build files. 2018-10-02 20:37:49 -07:00
Michael Jumper
1178b475da GUACAMOLE-622: Do not allow STDIN to be redirected if the terminal is not yet started. 2018-09-02 23:04:14 -07:00
Michael Jumper
0b39b0fc5f GUACAMOLE-622: Implicitly invoke guac_terminal_start() if prompting is required. 2018-09-02 23:04:14 -07:00
Michael Jumper
61a51df1b2 GUACAMOLE-622: Require guac_terminal_start() to be invoked before the terminal will render frames or accept user input. 2018-09-02 23:04:14 -07:00
Nick Couchman
332e187813 Merge 1.0.0 changes back to master. 2018-08-24 12:17:20 -04:00
Jim Chen
eb5aa14a6f GUACAMOLE-470: Support named colors in color-scheme configuration.
When parsing named colors, treat semi-colons as string terminators, so
we can properly parse named colors within the color-scheme
configuration.
2018-08-24 10:42:24 -04:00
Michael Jumper
994cb95893 GUACAMOLE-610: Add console code for altering scrollback size on the fly. 2018-08-18 11:26:12 -07:00
Michael Jumper
0e6d549a40 GUACAMOLE-610: Allow scrollback size to be specified for SSH and telnet. 2018-08-18 11:12:55 -07:00
Michael Jumper
6a576f0121 GUACAMOLE-610: Limit terminal width/height to 1024 characters. 2018-08-18 11:12:50 -07:00
Nick Couchman
0062f61d67 Merge 1.0.0 changes back to master. 2018-07-31 08:12:30 -04:00
Michael Jumper
860a5fca8f GUACAMOLE-559: Maintain terminal clipboard at client level such that it is guaranteed to exist immediately after user connects. 2018-07-30 23:53:03 -07:00
Michael Jumper
e66178ff9a GUACAMOLE-597: Add flag for forcing automatic flushing of pipe stream. 2018-07-27 14:23:50 -07:00
Michael Jumper
99b17b0ac4 GUACAMOLE-597: Add flag which sends terminal output to both the user's display and the open pipe stream. 2018-07-27 14:23:44 -07:00
Michael Jumper
e02df8d550 GUACAMOLE-597: Additionally parse integer flags which may affect pipe stream contents. 2018-07-27 14:23:33 -07:00
Michael Jumper
b0b0b186f5 GUACAMOLE-573: Ensure scrollback buffer bounds cannot be exceeded. Remove incorrect bounds checks. 2018-07-17 21:55:46 -07:00
Michael Jumper
97593958e4 GUACAMOLE-574: Add support for reading STDIN from a pipe stream. 2018-06-18 14:31:09 -07:00
Michael Jumper
ecda5c1df9 GUACAMOLE-573: Read selection only within bounds of terminal/scrollback. 2018-06-17 00:01:47 -07:00
Michael Jumper
1756c01522 GUACAMOLE-573: Update selected region when terminal scrolls. 2018-06-17 00:01:47 -07:00
Michael Jumper
6f08ef2a07 GUACAMOLE-573: Allow text selection to be expanded using Shift (fixes GUACAMOLE-191). 2018-06-17 00:01:47 -07:00
Michael Jumper
c0d323828e GUACAMOLE-573: Copy terminal data directly into clipboard. Do not assume selected region will be strictly visible. 2018-06-16 23:58:38 -07:00
Michael Jumper
f87af06ad6 GUACAMOLE-573: Move terminal text selection code into own file. 2018-06-16 23:58:34 -07:00
Michael Jumper
21f54b9e12 GUACAMOLE-470: Merge changes addressing broken build / GCC warning. 2018-05-27 21:13:25 -07:00
Jim Chen
9c10ddae3b GUACAMOLE-470: Fix incompatible pointer type warning under older GCC.
Older versions of GCC (prior to 5.1) emits an "incompatible pointer
type" warning when passing `foo(*)[]` as `const foo(*)[]`. This was
changed in GCC 5.1, and this patch adds explicit casts to remove the
warning under older GCC.
2018-05-27 23:46:16 -04:00
Michael Jumper
526152b9c6 GUACAMOLE-564: Merge changes ignoring APC sequences within Guacamole's terminal emulator. 2018-05-27 09:31:35 -07:00
Jim Chen
b96afce222 GUACAMOLE-564: Hide APC escape sequence.
An APC escape sequence contains an arbitrary string command between
(ESC _) and (ESC \) sequences. While we don't support any APC commands, we
should ignore any commands that we do encounter.
2018-05-26 23:25:56 -04:00
Jim Chen
6da9236ffd GUACAMOLE-470: Reset character attributes on terminal reset.
The character attributes such as foreground/background colors should be
reset as well when performing a terminal reset.
2018-05-26 23:18:27 -04:00
Jim Chen
03d9c51b5d GUACAMOLE-470: Fix crash when X11 color is not found.
Fix a crash when an X11 color name is not found. The variable to
null-check should be `found`, not `color`.
2018-05-26 23:18:27 -04:00
Jim Chen
7e68901ceb GUACAMOLE-470: Set palette index for parsed RGB colors.
Parsed RGB colors do not correspond to any palette entry, so set the
palette index to -1.
2018-05-26 23:18:27 -04:00
Jim Chen
1bd537c350 GUACAMOLE-470: Support configurable colors in color-scheme parameter.
Add support for configuring individual colors in the color-scheme
parameter, by parsing the parameter content into name-value pairs.
Backward compatibility is preserved by translating previously supported
values into corresponding new values.
2018-05-26 23:18:27 -04:00
Jim Chen
f8b35078fc GUACAMOLE-470: Add support for configurable default palette.
Add support for configuring a default palette for a terminal display.
When the default palette is specified during display creation, that
palette is used instead of GUAC_TERMINAL_INITIAL_PALETTE when resetting
the display palette.
2018-05-15 22:05:59 -04:00
Nick Couchman
c898f35959 GUACAMOLE-269: Clean up terminal backspace initialization. 2018-04-02 07:47:49 -04:00
Nick Couchman
112ce5299e GUACAMOLE-269: Remove unnecessary dynamic allocation. 2018-03-24 14:54:27 -04:00
Nick Couchman
c3e1b2afef GUACAMOLE-269: Fix minor style issues and update comments. 2018-03-08 10:48:22 -05:00
Nick Couchman
33cca46346 GUACAMOLE-269: Remove debug code. 2018-03-08 10:48:22 -05:00
Nick Couchman
dd78d230ea GUACAMOLE-269: Backspace key should send null-terminated string. 2018-03-08 10:48:22 -05:00
Nick Couchman
46e908c06e GUACAMOLE-269: Allow backspace key to be configured. 2018-03-08 10:48:21 -05:00
Michael Jumper
cd0e48234a GUACAMOLE-500: Explicitly guarantee typescript filename cannot exceed buffer size. 2018-02-06 22:13:55 -08:00
Michael Jumper
81a0e66d9f GUACAMOLE-313: Include current button state within mouse update for completeness. 2018-01-26 16:21:53 -08:00
sanhex
d33bd8deff GUACAMOLE-384: fixing segfault during ssh disconnect
Root Cause:
See the core dump and Valgrind report posted on Jira. guacd was reading a ssh terminal which had been freed. When a ssh connection is terminated, guac_ssh_client_free_handler() will be called from guacd_exec_proc() -> guac_client_free() with pointer client->free_handler. In guac_ssh_client_free_handler(), when ssh_client->term is freed, ssh_client->client_thread may still be using the ssh_client->term. It causes the crash reported in this bug.

The stack trace exposing the problem can be found by running guacd under Valgrind with a ssh test script. The test script repeats doing ssh login and logout for 5000 times.

Solution:
In guac_ssh_client_free_handler(), before calling guac_terminal_free(ssh_client->term), close the stdin pipe of the terminal to stop reading the pipe with guac_terminal_read_stdin() in ssh_input_thread(). So that ssh_input_thread() can be terminated in this case. Call pthread_join() to wait for ssh_client_thread() terminating before freeing the terminal.

Add a new function guac_terminal_stop() to close the pipe and set the fds to invalid (-1). Call it in guac_ssh_client_free_handler() and guac_terminal_free().

Checking the client running state in ssh_input_thread() and ssh_client_thread() to make sure they can be terminated when the client is stopped in guacd_exec_proc() by another thread.

Test:
- Confirmed ssh connection works normally.
- Observed the child process of guacd exits when ssh connection is terminated.
- Reran the ssh test script. Observed no crash.
2017-10-29 18:11:15 -07:00
Ilya Shipitsin
fc071fd1af GUACAMOLE-383: resolve issues identified by cppcheck
[src/guacd/conf-file.c:206]: (error) Memory leak: conf
[src/protocols/rdp/rdp_cliprdr.c:205]: (error) Memory leak: output
[src/terminal/display.c:283]: (error) Memory leak: display
[src/terminal/display.c:290]: (error) Memory leak: display
2017-09-20 22:55:58 +05:00
Michael Jumper
b0d9bbc121 GUACAMOLE-279: Add explicit definitions for each human-readable xterm color. 2017-08-13 15:12:05 -07:00
Michael Jumper
27cf97cb9e GUACAMOLE-279: Handle xterm palette assignments, parsing each color as an X11 color spec. 2017-08-13 15:12:05 -07:00
Michael Jumper
c53575b18c GUACAMOLE-279: Use guac_terminal_color for color palette assignments. 2017-07-11 08:24:18 -07:00
Michael Jumper
eec3607b16 GUACAMOLE-279: Migrate to mutable terminal color palette. 2017-07-10 14:08:21 -07:00
Michael Jumper
9da27ad578 GUACAMOLE-280: Ensure bold and half-bright attributes cancel each other out. 2017-05-21 13:48:10 -07:00