add subfolder support

This commit is contained in:
thelamer 2021-06-23 14:38:09 -07:00
parent 6772097d74
commit 51a0c65bd0
3 changed files with 31 additions and 28 deletions

5
app.js
View File

@ -1,6 +1,7 @@
// LinuxServer Guacamole Client
//// Application Variables ////
var baseurl = process.env.SUBFOLDER || '/';
var crypto = require('crypto');
var ejs = require('ejs');
var express = require('express');
@ -23,7 +24,7 @@ var clientOptions = {
}
};
// Spinup the Guac websocket proxy on port 3000 if guacd is running
var guacServer = new GuacamoleLite({server: http,path:'/guaclite'},{host:'127.0.0.1',port:4822},clientOptions);
var guacServer = new GuacamoleLite({server: http,path:baseurl +'guaclite'},{host:'127.0.0.1',port:4822},clientOptions);
// Function needed to encrypt the token string for guacamole connections
var encrypt = (value) => {
var iv = crypto.randomBytes(16);
@ -71,7 +72,7 @@ app.get("/", function (req, res) {
}
});
}
res.render(__dirname + '/rdp.ejs', {token : connectionstring});
res.render(__dirname + '/rdp.ejs', {token : connectionstring, baseurl: baseurl});
});
//// Web File Browser ////
app.use(bodyParser.urlencoded({ extended: true }));

View File

@ -57,8 +57,9 @@ $('#nav-trigger').change(function () {
var display = document.getElementById("display");
// Instantiate client, using an HTTP tunnel for communications.
var connectionstring = $('#connectionstring').val();
var baseurl = $('#baseurl').val();
var guac = new Guacamole.Client(
new Guacamole.WebSocketTunnel(wsprotocol + '//' + host + ':' + port + '/guaclite?token=' + connectionstring + '&width=' + $(document).width() + '&height=' + $(document).height())
new Guacamole.WebSocketTunnel(wsprotocol + '//' + host + ':' + port + baseurl + 'guaclite?token=' + connectionstring + '&width=' + $(document).width() + '&height=' + $(document).height())
);
// Show current client clipboard
guac.onclipboard = function clientClipboardReceived(stream, mimetype) {

51
rdp.ejs
View File

@ -6,25 +6,25 @@
<meta name="description" content="LinuxServer Guacamole Client">
<meta name="author" content="thelamer">
<title>Guacamole Client</title>
<link href="/public/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="/public/vendor/font-awesome/css/fontawesome.min.css" rel="stylesheet" type="text/css">
<link href="/public/css/vdi.css" rel="stylesheet" type="text/css">
<link rel="apple-touch-icon" sizes="57x57" href="/public/favicon/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/public/favicon/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/public/favicon/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/public/favicon/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/public/favicon/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/public/favicon/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/public/favicon/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/public/favicon/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/public/favicon/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="/public/favicon/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="/public/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/public/favicon/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/public/favicon/favicon-16x16.png">
<link rel="manifest" href="/public/favicon/manifest.json">
<link href="<%= baseurl %>public/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="<%= baseurl %>public/vendor/font-awesome/css/fontawesome.min.css" rel="stylesheet" type="text/css">
<link href="<%= baseurl %>public/css/vdi.css" rel="stylesheet" type="text/css">
<link rel="apple-touch-icon" sizes="57x57" href="<%= baseurl %>public/favicon/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="<%= baseurl %>public/favicon/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="<%= baseurl %>public/favicon/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="<%= baseurl %>public/favicon/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="<%= baseurl %>public/favicon/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="<%= baseurl %>public/favicon/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="<%= baseurl %>public/favicon/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="<%= baseurl %>public/favicon/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="<%= baseurl %>public/favicon/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="<%= baseurl %>public/favicon/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="<%= baseurl %>public/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="<%= baseurl %>public/favicon/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="<%= baseurl %>public/favicon/favicon-16x16.png">
<link rel="manifest" href="<%= baseurl %>public/favicon/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/public/favicon/ms-icon-144x144.png">
<meta name="msapplication-TileImage" content="<%= baseurl %>public/favicon/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
</head>
<body style="overflow:hidden;">
@ -72,16 +72,17 @@
<div class="site-wrap" onmouseover="this.focus();" tabindex="0" style="outline:none;">
<div id="display" style="width:100%;height:100vh;overflow:hidden;position:absolute;left:0;top:0;"></div>
</div>
<!-- Storage for encoded connection string -->
<!-- Storage for encoded connection string and baseurl -->
<input type="hidden" id="connectionstring" value="<%- token -%>" />
<input type="hidden" id="baseurl" value="<%- baseurl -%>" />
<!-- Guacamole -->
<script type="text/javascript" src="/public/vendor/guac/js/guac.min.js"></script>
<script type="text/javascript" src="<%= baseurl %>public/vendor/guac/js/guac.min.js"></script>
<!-- Helpers -->
<script type="text/javascript" src="/public/vendor/jquery/jquery.min.js"></script>
<script type="text/javascript" src="/public/vendor/popper/popper.min.js"></script>
<script type="text/javascript" src="/public/vendor/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/public/vendor/shortcut/js/shortcut.js"></script>
<script type="text/javascript" src="<%= baseurl %>public/vendor/jquery/jquery.min.js"></script>
<script type="text/javascript" src="<%= baseurl %>public/vendor/popper/popper.min.js"></script>
<script type="text/javascript" src="<%= baseurl %>public/vendor/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="<%= baseurl %>public/vendor/shortcut/js/shortcut.js"></script>
<!-- Client side -->
<script type="text/javascript" src="/public/js/rdp.js"></script>
<script type="text/javascript" src="<%= baseurl %>public/js/rdp.js"></script>
</body>
</html>