Skip to content

Commit 42c8814

Browse files
committed
GUACAMOLE-261: Add client-side support for SPICE protocol.
1 parent d03da4a commit 42c8814

3 files changed

Lines changed: 374 additions & 0 deletions

File tree

‎guacamole-ext/src/main/java/org/apache/guacamole/environment/LocalEnvironment.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public class LocalEnvironment implements Environment {
5959
private static final String[] KNOWN_PROTOCOLS = new String[] {
6060
"kubernetes",
6161
"rdp",
62+
"spice",
6263
"ssh",
6364
"telnet",
6465
"vnc",
Lines changed: 275 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,275 @@
1+
{
2+
"name" : "spice",
3+
"connectionForms" : [
4+
5+
{
6+
"name" : "network",
7+
"fields" : [
8+
{
9+
"name" : "hostname",
10+
"type" : "TEXT"
11+
},
12+
{
13+
"name" : "port",
14+
"type" : "NUMERIC"
15+
},
16+
{
17+
"name" : "tls",
18+
"type" : "BOOLEAN",
19+
"options" : [ "true" ]
20+
},
21+
{
22+
"name" : "tls-verify",
23+
"type" : "ENUM",
24+
"options" : [ "", "hostname", "pubkey", "subject" ]
25+
},
26+
{
27+
"name" : "ca",
28+
"type" : "MULTILINE"
29+
},
30+
{
31+
"name" : "ca-file",
32+
"type" : "TEXT"
33+
},
34+
{
35+
"name" : "pubkey",
36+
"type" : "MULTILINE"
37+
},
38+
{
39+
"name" : "proxy",
40+
"type" : "TEXT"
41+
}
42+
]
43+
},
44+
45+
{
46+
"name" : "authentication",
47+
"fields" : [
48+
{
49+
"name" : "username",
50+
"type" : "USERNAME"
51+
},
52+
{
53+
"name" : "password",
54+
"type" : "PASSWORD"
55+
}
56+
]
57+
},
58+
59+
{
60+
"name" : "basic-parameters",
61+
"fields" : [
62+
{
63+
"name" : "server-layout",
64+
"type" : "ENUM",
65+
"options" : [
66+
"",
67+
"de-ch-qwertz",
68+
"de-de-qwertz",
69+
"en-gb-qwerty",
70+
"en-us-qwerty",
71+
"es-es-qwerty",
72+
"es-latam-qwerty",
73+
"failsafe",
74+
"fr-be-azerty",
75+
"fr-fr-azerty",
76+
"fr-ca-qwerty",
77+
"fr-ch-qwertz",
78+
"hu-hu-qwertz",
79+
"it-it-qwerty",
80+
"ja-jp-qwerty",
81+
"no-no-qwerty",
82+
"pl-pl-qwerty",
83+
"pt-br-qwerty",
84+
"sv-se-qwerty",
85+
"da-dk-qwerty",
86+
"tr-tr-qwerty"
87+
]
88+
}
89+
]
90+
},
91+
92+
{
93+
"name" : "display",
94+
"fields" : [
95+
{
96+
"name" : "read-only",
97+
"type" : "BOOLEAN",
98+
"options" : [ "true" ]
99+
},
100+
{
101+
"name" : "color-depth",
102+
"type" : "ENUM",
103+
"options" : [ "", "8", "16", "24", "32" ]
104+
}
105+
]
106+
},
107+
108+
{
109+
"name" : "clipboard",
110+
"fields" : [
111+
{
112+
"name" : "clipboard-encoding",
113+
"type" : "ENUM",
114+
"options" : [ "", "ISO8859-1", "UTF-8", "UTF-16", "CP1252" ]
115+
},
116+
{
117+
"name" : "disable-copy",
118+
"type" : "BOOLEAN",
119+
"options" : [ "true" ]
120+
},
121+
{
122+
"name" : "disable-paste",
123+
"type" : "BOOLEAN",
124+
"options" : [ "true" ]
125+
}
126+
]
127+
},
128+
129+
{
130+
"name" : "audio",
131+
"fields" : [
132+
{
133+
"name" : "enable-audio",
134+
"type" : "BOOLEAN",
135+
"options" : [ "true" ]
136+
},
137+
{
138+
"name" : "enable-audio-input",
139+
"type" : "BOOLEAN",
140+
"options" : [ "true" ]
141+
}
142+
]
143+
},
144+
145+
{
146+
"name" : "file",
147+
"fields" : [
148+
{
149+
"name" : "file-transfer",
150+
"type" : "BOOLEAN",
151+
"options" : [ "true" ]
152+
},
153+
{
154+
"name" : "file-directory",
155+
"type" : "TEXT"
156+
},
157+
{
158+
"name" : "file-transfer-ro",
159+
"type" : "BOOLEAN",
160+
"options" : [ "true" ]
161+
}
162+
]
163+
},
164+
165+
{
166+
"name" : "recording",
167+
"fields" : [
168+
{
169+
"name" : "recording-path",
170+
"type" : "TEXT"
171+
},
172+
{
173+
"name" : "recording-name",
174+
"type" : "TEXT"
175+
},
176+
{
177+
"name" : "recording-exclude-output",
178+
"type" : "BOOLEAN",
179+
"options" : [ "true" ]
180+
},
181+
{
182+
"name" : "recording-exclude-mouse",
183+
"type" : "BOOLEAN",
184+
"options" : [ "true" ]
185+
},
186+
{
187+
"name" : "recording-include-keys",
188+
"type" : "BOOLEAN",
189+
"options" : [ "true" ]
190+
},
191+
{
192+
"name" : "create-recording-path",
193+
"type" : "BOOLEAN",
194+
"options" : [ "true" ]
195+
}
196+
]
197+
},
198+
199+
{
200+
"name" : "sftp",
201+
"fields" : [
202+
{
203+
"name" : "enable-sftp",
204+
"type" : "BOOLEAN",
205+
"options" : [ "true" ]
206+
},
207+
{
208+
"name" : "sftp-hostname",
209+
"type" : "TEXT"
210+
},
211+
{
212+
"name" : "sftp-port",
213+
"type" : "NUMERIC"
214+
},
215+
{
216+
"name" : "sftp-host-key",
217+
"type" : "TEXT"
218+
},
219+
{
220+
"name" : "sftp-username",
221+
"type" : "USERNAME"
222+
},
223+
{
224+
"name" : "sftp-password",
225+
"type" : "PASSWORD"
226+
},
227+
{
228+
"name" : "sftp-private-key",
229+
"type" : "MULTILINE"
230+
},
231+
{
232+
"name" : "sftp-passphrase",
233+
"type" : "PASSWORD"
234+
},
235+
{
236+
"name" : "sftp-root-directory",
237+
"type" : "TEXT"
238+
},
239+
{
240+
"name" : "sftp-directory",
241+
"type" : "TEXT"
242+
},
243+
{
244+
"name" : "sftp-server-alive-interval",
245+
"type" : "NUMERIC"
246+
},
247+
{
248+
"name" : "sftp-disable-download",
249+
"type" : "BOOLEAN",
250+
"options" : [ "true" ]
251+
},
252+
{
253+
"name" : "sftp-disable-upload",
254+
"type" : "BOOLEAN",
255+
"options" : [ "true" ]
256+
}
257+
]
258+
}
259+
260+
],
261+
"sharingProfileForms" : [
262+
263+
{
264+
"name" : "display",
265+
"fields" : [
266+
{
267+
"name" : "read-only",
268+
"type" : "BOOLEAN",
269+
"options" : [ "true" ]
270+
}
271+
]
272+
}
273+
274+
]
275+
}

‎guacamole/src/main/frontend/src/translations/en.json‎

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,104 @@
712712
"SECTION_HEADER_WOL" : "Wake-on-LAN (WoL)"
713713

714714
},
715+
716+
"PROTOCOL_SPICE" : {
717+
718+
"FIELD_HEADER_CA" : "CA certificates (Base64):",
719+
"FIELD_HEADER_CA_FILE" : "Path to CA certificate(s):",
720+
"FIELD_HEADER_CLIPBOARD_ENCODING" : "Encoding:",
721+
"FIELD_HEADER_COLOR_DEPTH" : "Color depth:",
722+
"FIELD_HEADER_CREATE_RECORDING_PATH" : "Automatically create recording path:",
723+
"FIELD_HEADER_CURSOR" : "Cursor:",
724+
"FIELD_HEADER_DISABLE_COPY" : "Disable copying from remote desktop:",
725+
"FIELD_HEADER_DISABLE_PASTE" : "Disable pasting from client:",
726+
"FIELD_HEADER_ENABLE_AUDIO" : "Enable audio:",
727+
"FIELD_HEADER_ENABLE_AUDIO_INPUT" : "Enable audio input:",
728+
"FIELD_HEADER_ENABLE_SFTP" : "Enable SFTP:",
729+
"FIELD_HEADER_FILE_DIRECTORY" : "Directory to share:",
730+
"FIELD_HEADER_FILE_TRANSFER" : "Enable file share:",
731+
"FIELD_HEADER_FILE_TRANSFER_RO" : "Share directory read-only:",
732+
"FIELD_HEADER_HOSTNAME" : "Hostname:",
733+
"FIELD_HEADER_IGNORE_CERTIFICATES" : "Ignore server certificates:",
734+
"FIELD_HEADER_USERNAME" : "Username:",
735+
"FIELD_HEADER_PASSWORD" : "Password:",
736+
"FIELD_HEADER_PORT" : "Port:",
737+
"FIELD_HEADER_PROXY" : "Proxy server:",
738+
"FIELD_HEADER_PUBKEY" : "Public key:",
739+
"FIELD_HEADER_READ_ONLY" : "Read-only:",
740+
"FIELD_HEADER_RECORDING_EXCLUDE_MOUSE" : "Exclude mouse:",
741+
"FIELD_HEADER_RECORDING_EXCLUDE_OUTPUT" : "Exclude graphics/streams:",
742+
"FIELD_HEADER_RECORDING_INCLUDE_KEYS" : "Include key events:",
743+
"FIELD_HEADER_RECORDING_NAME" : "Recording name:",
744+
"FIELD_HEADER_RECORDING_PATH" : "Recording path:",
745+
"FIELD_HEADER_SERVER_LAYOUT" : "Keyboard layout:",
746+
"FIELD_HEADER_SFTP_DIRECTORY" : "Default upload directory:",
747+
"FIELD_HEADER_SFTP_DISABLE_DOWNLOAD" : "Disable file download:",
748+
"FIELD_HEADER_SFTP_HOST_KEY" : "Public host key (Base64):",
749+
"FIELD_HEADER_SFTP_HOSTNAME" : "Hostname:",
750+
"FIELD_HEADER_SFTP_SERVER_ALIVE_INTERVAL" : "SFTP keepalive interval:",
751+
"FIELD_HEADER_SFTP_PASSPHRASE" : "Passphrase:",
752+
"FIELD_HEADER_SFTP_PASSWORD" : "Password:",
753+
"FIELD_HEADER_SFTP_PORT" : "Port:",
754+
"FIELD_HEADER_SFTP_PRIVATE_KEY" : "Private key:",
755+
"FIELD_HEADER_SFTP_ROOT_DIRECTORY" : "File browser root directory:",
756+
"FIELD_HEADER_SFTP_DISABLE_UPLOAD" : "Disable file upload:",
757+
"FIELD_HEADER_SFTP_USERNAME" : "Username:",
758+
"FIELD_HEADER_TLS" : "Enable TLS connection:",
759+
"FIELD_HEADER_TLS_VERIFY" : "TLS verification mode:",
760+
761+
"FIELD_OPTION_COLOR_DEPTH_8" : "256 color",
762+
"FIELD_OPTION_COLOR_DEPTH_16" : "Low color (16-bit)",
763+
"FIELD_OPTION_COLOR_DEPTH_24" : "True color (24-bit)",
764+
"FIELD_OPTION_COLOR_DEPTH_32" : "True color (32-bit)",
765+
"FIELD_OPTION_COLOR_DEPTH_EMPTY" : "",
766+
767+
"FIELD_OPTION_CLIPBOARD_ENCODING_CP1252" : "CP1252",
768+
"FIELD_OPTION_CLIPBOARD_ENCODING_EMPTY" : "",
769+
"FIELD_OPTION_CLIPBOARD_ENCODING_ISO8859_1" : "ISO 8859-1",
770+
"FIELD_OPTION_CLIPBOARD_ENCODING_UTF_8" : "UTF-8",
771+
"FIELD_OPTION_CLIPBOARD_ENCODING_UTF_16" : "UTF-16",
772+
773+
"FIELD_OPTION_SERVER_LAYOUT_DE_CH_QWERTZ" : "Swiss German (Qwertz)",
774+
"FIELD_OPTION_SERVER_LAYOUT_DE_DE_QWERTZ" : "German (Qwertz)",
775+
"FIELD_OPTION_SERVER_LAYOUT_EMPTY" : "",
776+
"FIELD_OPTION_SERVER_LAYOUT_EN_GB_QWERTY" : "UK English (Qwerty)",
777+
"FIELD_OPTION_SERVER_LAYOUT_EN_US_QWERTY" : "US English (Qwerty)",
778+
"FIELD_OPTION_SERVER_LAYOUT_ES_ES_QWERTY" : "Spanish (Qwerty)",
779+
"FIELD_OPTION_SERVER_LAYOUT_ES_LATAM_QWERTY" : "Latin American (Qwerty)",
780+
"FIELD_OPTION_SERVER_LAYOUT_FAILSAFE" : "Unicode",
781+
"FIELD_OPTION_SERVER_LAYOUT_FR_BE_AZERTY" : "Belgian French (Azerty)",
782+
"FIELD_OPTION_SERVER_LAYOUT_FR_CA_QWERTY" : "Canadian French (Qwerty)",
783+
"FIELD_OPTION_SERVER_LAYOUT_FR_CH_QWERTZ" : "Swiss French (Qwertz)",
784+
"FIELD_OPTION_SERVER_LAYOUT_FR_FR_AZERTY" : "French (Azerty)",
785+
"FIELD_OPTION_SERVER_LAYOUT_HU_HU_QWERTZ" : "Hungarian (Qwertz)",
786+
"FIELD_OPTION_SERVER_LAYOUT_IT_IT_QWERTY" : "Italian (Qwerty)",
787+
"FIELD_OPTION_SERVER_LAYOUT_JA_JP_QWERTY" : "Japanese (Qwerty)",
788+
"FIELD_OPTION_SERVER_LAYOUT_NO_NO_QWERTY" : "Norwegian (Qwerty)",
789+
"FIELD_OPTION_SERVER_LAYOUT_PL_PL_QWERTY" : "Polish (Qwerty)",
790+
"FIELD_OPTION_SERVER_LAYOUT_PT_BR_QWERTY" : "Portuguese Brazilian (Qwerty)",
791+
"FIELD_OPTION_SERVER_LAYOUT_SV_SE_QWERTY" : "Swedish (Qwerty)",
792+
"FIELD_OPTION_SERVER_LAYOUT_DA_DK_QWERTY" : "Danish (Qwerty)",
793+
"FIELD_OPTION_SERVER_LAYOUT_TR_TR_QWERTY" : "Turkish-Q (Qwerty)",
794+
795+
"FIELD_OPTION_TLS_VERIFY_EMPTY" : "",
796+
"FIELD_OPTION_TLS_VERIFY_HOSTNAME" : "Hostname",
797+
"FIELD_OPTION_TLS_VERIFY_PUBKEY" : "Public key",
798+
"FIELD_OPTION_TLS_VERIFY_SUBJECT" : "Subject",
799+
800+
"NAME" : "SPICE",
801+
802+
"SECTION_HEADER_AUDIO" : "Audio",
803+
"SECTION_HEADER_AUTHENTICATION" : "Authentication",
804+
"SECTION_HEADER_BASIC_PARAMETERS" : "Basic Parameters",
805+
"SECTION_HEADER_CLIPBOARD" : "Clipboard",
806+
"SECTION_HEADER_DISPLAY" : "Display",
807+
"SECTION_HEADER_FILE" : "File transfer",
808+
"SECTION_HEADER_NETWORK" : "Network",
809+
"SECTION_HEADER_RECORDING" : "Screen Recording",
810+
"SECTION_HEADER_SFTP" : "SFTP"
811+
812+
},
715813

716814
"PROTOCOL_SSH" : {
717815

0 commit comments

Comments
 (0)