mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
GUAC-549: Use new onerror/onack handlers. Translate Guacamole.Status codes to human-readable messages.
This commit is contained in:
@@ -61,7 +61,7 @@
|
|||||||
<script type="text/javascript" src="scripts/lib/filesaver/filesaver.js"></script>
|
<script type="text/javascript" src="scripts/lib/filesaver/filesaver.js"></script>
|
||||||
|
|
||||||
<!-- guacamole-common-js -->
|
<!-- guacamole-common-js -->
|
||||||
<script type="text/javascript" src="guacamole-common-js/all.min.js"></script>
|
<script type="text/javascript" src="guacamole-common-js/all.js"></script>
|
||||||
|
|
||||||
<!-- guacamole-default-webapp scripts -->
|
<!-- guacamole-default-webapp scripts -->
|
||||||
<script type="text/javascript" src="scripts/session.js"></script>
|
<script type="text/javascript" src="scripts/session.js"></script>
|
||||||
@@ -101,47 +101,46 @@
|
|||||||
// Tie UI to client
|
// Tie UI to client
|
||||||
GuacUI.Client.attach(guac);
|
GuacUI.Client.attach(guac);
|
||||||
|
|
||||||
try {
|
// Calculate optimal width/height for display
|
||||||
|
var pixel_density = window.devicePixelRatio || 1;
|
||||||
// Calculate optimal width/height for display
|
var optimal_dpi = pixel_density * 96;
|
||||||
var pixel_density = window.devicePixelRatio || 1;
|
var optimal_width = window.innerWidth * pixel_density;
|
||||||
var optimal_dpi = pixel_density * 96;
|
var optimal_height = window.innerHeight * pixel_density;
|
||||||
var optimal_width = window.innerWidth * pixel_density;
|
|
||||||
var optimal_height = window.innerHeight * pixel_density;
|
|
||||||
|
|
||||||
// Scale width/height to be at least 600x600
|
|
||||||
if (optimal_width < 600 || optimal_height < 600) {
|
|
||||||
var scale = Math.max(600 / optimal_width, 600 / optimal_height);
|
|
||||||
optimal_width = optimal_width * scale;
|
|
||||||
optimal_height = optimal_height * scale;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get entire query string, and pass to connect().
|
|
||||||
// Normally, only the "id" parameter is required, but
|
|
||||||
// all parameters should be preserved and passed on for
|
|
||||||
// the sake of authentication.
|
|
||||||
|
|
||||||
var connect_string =
|
|
||||||
window.location.search.substring(1)
|
|
||||||
+ "&width=" + Math.floor(optimal_width)
|
|
||||||
+ "&height=" + Math.floor(optimal_height)
|
|
||||||
+ "&dpi=" + Math.floor(optimal_dpi);
|
|
||||||
|
|
||||||
// Add audio mimetypes to connect_string
|
|
||||||
GuacUI.Audio.supported.forEach(function(mimetype) {
|
|
||||||
connect_string += "&audio=" + encodeURIComponent(mimetype);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add video mimetypes to connect_string
|
|
||||||
GuacUI.Video.supported.forEach(function(mimetype) {
|
|
||||||
connect_string += "&video=" + encodeURIComponent(mimetype);
|
|
||||||
});
|
|
||||||
|
|
||||||
guac.connect(connect_string);
|
|
||||||
|
|
||||||
|
// Scale width/height to be at least 600x600
|
||||||
|
if (optimal_width < 600 || optimal_height < 600) {
|
||||||
|
var scale = Math.max(600 / optimal_width, 600 / optimal_height);
|
||||||
|
optimal_width = optimal_width * scale;
|
||||||
|
optimal_height = optimal_height * scale;
|
||||||
}
|
}
|
||||||
catch (e) {
|
|
||||||
GuacUI.Client.showError("Cannot Connect", e.message);
|
// Get entire query string, and pass to connect().
|
||||||
|
// Normally, only the "id" parameter is required, but
|
||||||
|
// all parameters should be preserved and passed on for
|
||||||
|
// the sake of authentication.
|
||||||
|
|
||||||
|
var connect_string =
|
||||||
|
window.location.search.substring(1)
|
||||||
|
+ "&width=" + Math.floor(optimal_width)
|
||||||
|
+ "&height=" + Math.floor(optimal_height)
|
||||||
|
+ "&dpi=" + Math.floor(optimal_dpi);
|
||||||
|
|
||||||
|
// Add audio mimetypes to connect_string
|
||||||
|
GuacUI.Audio.supported.forEach(function(mimetype) {
|
||||||
|
connect_string += "&audio=" + encodeURIComponent(mimetype);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add video mimetypes to connect_string
|
||||||
|
GuacUI.Video.supported.forEach(function(mimetype) {
|
||||||
|
connect_string += "&video=" + encodeURIComponent(mimetype);
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
guac.connect(connect_string);
|
||||||
|
}
|
||||||
|
catch (status) {
|
||||||
|
var message = GuacUI.Client.errors[status.code] || GuacUI.Client.errors.DEFAULT;
|
||||||
|
GuacUI.Client.showError("Cannot Connect", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
}, 0);
|
}, 0);
|
||||||
|
@@ -63,6 +63,104 @@ GuacUI.Client = {
|
|||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enumeration of all error messages for each applicable error code.
|
||||||
|
*/
|
||||||
|
"errors": {
|
||||||
|
|
||||||
|
0x0201: "The Guacamole server has rejected this connection attempt \
|
||||||
|
because there are too many active connections. Please wait \
|
||||||
|
a few minutes and try again.",
|
||||||
|
|
||||||
|
0x0202: "The remote desktop server encountered an error and has closed \
|
||||||
|
the connection. Please try again or contact your system \
|
||||||
|
administrator.",
|
||||||
|
|
||||||
|
0x0203: "The Guacamole server has closed the connection because the \
|
||||||
|
remote desktop is taking too long to respond. Please try \
|
||||||
|
again or contact your system administrator.",
|
||||||
|
|
||||||
|
0x0204: "The requested connection does not exist. Please check the \
|
||||||
|
connection name and try again.",
|
||||||
|
|
||||||
|
0x0205: "This connection is currently in use, and concurrent access to \
|
||||||
|
this connection is not allowed. Please try again later.",
|
||||||
|
|
||||||
|
0x0301: "You do not have permission to access this connection because \
|
||||||
|
you are not logged in. Please log in and try again.",
|
||||||
|
|
||||||
|
0x0303: "You do not have permission to access this connection. If you \
|
||||||
|
require access, please ask your system administrator to add \
|
||||||
|
you the list of allowed users, or check your system settings.",
|
||||||
|
|
||||||
|
0x0308: "The Guacamole server has closed the connection because there \
|
||||||
|
has been no response from your browser for long enough that \
|
||||||
|
it appeared to be disconnected. This is commonly caused by \
|
||||||
|
network problems, such as spotty wireless signal, or simply \
|
||||||
|
very slow network speeds. Please check your network and try \
|
||||||
|
again.",
|
||||||
|
|
||||||
|
0x031D: "The Guacamole server is denying access to this connection \
|
||||||
|
because you have exhausted the limit for simultaneous \
|
||||||
|
connection use by an individual user. Please close one or \
|
||||||
|
more connections and try again.",
|
||||||
|
|
||||||
|
"DEFAULT": "An internal error has occurred within the Guacamole \
|
||||||
|
server, and the connection has been terminated. If \
|
||||||
|
the problem persists, please notify your system \
|
||||||
|
administrator, or check your system logs."
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enumeration of all error messages for each applicable error code. This
|
||||||
|
* list is specific to file uploads.
|
||||||
|
*/
|
||||||
|
"upload_errors": {
|
||||||
|
|
||||||
|
0x0100: "File transfer is either not supported or not enabled. Please \
|
||||||
|
contact your system administrator, or check your system logs.",
|
||||||
|
|
||||||
|
0x0201: "Too many files are currently being transferred. Please wait \
|
||||||
|
for existing transfers to complete, and then try again.",
|
||||||
|
|
||||||
|
0x0202: "The remote desktop server encountered an error during \
|
||||||
|
transfer. Please try again or contact your system \
|
||||||
|
administrator.",
|
||||||
|
|
||||||
|
0x0203: "The file cannot be transferred because the remote desktop \
|
||||||
|
server is taking too long to respond. Please try again or \
|
||||||
|
or contact your system administrator.",
|
||||||
|
|
||||||
|
0x0204: "The destination for the file transfer does not exist. Please \
|
||||||
|
check that the destionation exists and try again.",
|
||||||
|
|
||||||
|
0x0205: "The destination for the file transfer is currently locked. \
|
||||||
|
Please wait for any in-progress tasks to complete and try \
|
||||||
|
again.",
|
||||||
|
|
||||||
|
0x0301: "You do not have permission to upload this file because you \
|
||||||
|
are not logged in. Please log in and try again.",
|
||||||
|
|
||||||
|
0x0303: "You do not have permission to upload this file. If you \
|
||||||
|
require access, please check your system settings, or \
|
||||||
|
check with your system administrator.",
|
||||||
|
|
||||||
|
0x0308: "The file transfer has stalled. This is commonly caused by \
|
||||||
|
network problems, such as spotty wireless signal, or \
|
||||||
|
simply very slow network speeds. Please check your \
|
||||||
|
network and try again.",
|
||||||
|
|
||||||
|
0x031D: "Too many files are currently being transferred. Please wait \
|
||||||
|
for existing transfers to complete, and then try again.",
|
||||||
|
|
||||||
|
"DEFAULT": "An internal error has occurred within the Guacamole \
|
||||||
|
server, and the connection has been terminated. If \
|
||||||
|
the problem persists, please notify your system \
|
||||||
|
administrator, or check your system logs.",
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
/* Constants */
|
/* Constants */
|
||||||
|
|
||||||
"LONG_PRESS_DETECT_TIMEOUT" : 800, /* milliseconds */
|
"LONG_PRESS_DETECT_TIMEOUT" : 800, /* milliseconds */
|
||||||
@@ -780,13 +878,14 @@ GuacUI.Client.attach = function(guac) {
|
|||||||
* receives an error.
|
* receives an error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
guac.onerror = function(error) {
|
guac.onerror = function(status) {
|
||||||
|
|
||||||
// Disconnect, if connected
|
// Disconnect, if connected
|
||||||
guac.disconnect();
|
guac.disconnect();
|
||||||
|
|
||||||
// Display error message
|
// Display error message
|
||||||
GuacUI.Client.showError("Connection Error", error);
|
var message = GuacUI.Client.errors[status.code] || GuacUI.Client.errors.DEFAULT;
|
||||||
|
GuacUI.Client.showError("Connection Error", message);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1157,12 +1256,14 @@ GuacUI.Client.attach = function(guac) {
|
|||||||
|
|
||||||
// Invalidate stream on all errors
|
// Invalidate stream on all errors
|
||||||
// Continue upload when acknowledged
|
// Continue upload when acknowledged
|
||||||
stream.onack = function(text, code) {
|
stream.onack = function(status) {
|
||||||
|
|
||||||
// Handle codes
|
// Handle errors
|
||||||
if (code >= 0x0100) {
|
if (status.isError()) {
|
||||||
valid = false;
|
valid = false;
|
||||||
upload.showError(text);
|
var message = GuacUI.Client.upload_errors[status.code]
|
||||||
|
|| GuacUI.Client.upload_errors.DEFAULT;
|
||||||
|
upload.showError(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Abort upload if stream is invalid
|
// Abort upload if stream is invalid
|
||||||
|
Reference in New Issue
Block a user