From 01dd8e62facf577244b6411c3becd961dc4a1c6f Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sat, 15 Mar 2025 19:47:02 +0000 Subject: [PATCH 01/12] Add capability to start online medley directly, skipping login and the main run-medley page, using the url https://online.interlisp.org/guest?notecards&rooms . Automatically does a guest login. --- web-portal/client/js/main.js | 15 +++++- web-portal/client/views/main.pug | 3 ++ web-portal/server/js/app.js | 28 ++++++++--- web-portal/server/js/user.js | 79 ++++++++++++++++++-------------- 4 files changed, 84 insertions(+), 41 deletions(-) diff --git a/web-portal/client/js/main.js b/web-portal/client/js/main.js index 57924e7..dd4c951 100644 --- a/web-portal/client/js/main.js +++ b/web-portal/client/js/main.js @@ -21,7 +21,7 @@ var localStore; window.addEventListener('resize', (event) => { - fillWindowOnClick(); + fillWindowOnClick(); }); window.addEventListener('load', (event) => { @@ -50,6 +50,18 @@ window.addEventListener('load', (event) => { document.getElementById("custom_init_cb").checked = false; document.getElementById("sftp_checkbox").checked = false; document.getElementById("interlisp_rb").checked = true; + } else if(isAutoLogin) { + document.getElementById("fill_window_cb").checked = true; + document.getElementById("dev-div").style.display = "none"; + document.getElementById("do_not_checkbox_div").style.display = "none"; + hideRow("resume"); + showRow("initial_exec"); + showRow("run_notecards"); + showRow("run_rooms"); + document.getElementById("run_notecards_cb").checked = ilNotecards; + document.getElementById("run_rooms_cb").checked = ilRooms; + document.getElementById("sftp_checkbox").checked = false; + document.getElementById("interlisp_rb").checked = true; } else if(isGuest) { document.getElementById("fill_window_cb").checked = true; document.getElementById("dev-div").style.display = "none"; @@ -97,6 +109,7 @@ window.addEventListener('load', (event) => { dlg.showModal(); } } + if(isAutologin) startSession("interlisp"); }); function startSession (interlispOrXterm) { diff --git a/web-portal/client/views/main.pug b/web-portal/client/views/main.pug index db0f429..6747730 100644 --- a/web-portal/client/views/main.pug +++ b/web-portal/client/views/main.pug @@ -22,6 +22,9 @@ block headeradds const isGuest = #{isGuest}; const isVerified = #{isVerified}; const nodisclaimer = #{nodisclaimer}; + const isAutoLogin = #{isAutoLogin}; + const alNotecards = #{notecards}; + const alRooms = #{rooms}; link(rel="stylesheet", href="/stylesheets/main.css") diff --git a/web-portal/server/js/app.js b/web-portal/server/js/app.js index 7003441..1d4aeb5 100644 --- a/web-portal/server/js/app.js +++ b/web-portal/server/js/app.js @@ -19,6 +19,7 @@ const express = require('express'); const logger = require('morgan'); const session = require("express-session"); const passport = require('passport'); +const url = require('url'); //const favicon = require('serve-favicon') // Set up main app as well as the filesApp @@ -86,17 +87,32 @@ app.use('/js', express.static(config.clientJsPath)); app.get('/main', ensureLoggedIn(), async (req, res, next) => - { res.render('main', + { + res.render('main', { login: req.user.username, isGuest: (req.user.username == config.guestUsername), isVerified: (await userRouter.getIsVerified(req) ? 'true' : 'false'), nodisclaimer: (await userRouter.getNoDisclaimer(req) ? 'true' : 'false'), - isNCO: config.isNCO(req) - } - ); - } - ); + isNCO: config.isNCO(req), + isAutoLogin: req.query.autologin, + notecards: (req.query.notecards != undefined), + rooms: (req.query.rooms != undefined) + } + ); + } + ); +app.get('/guest', + (req, res) => { + const newQuery = {}; + newQuery.autoLogin = ""; + newQuery.username = config.guestUsername; + newQuery.password = config.guestPassword; + if(req.query.notecards != undefined) newQuery.notecards=""; + if(req.query.rooms != undefined) newQuery.rooms=""; + res.redirect(url.format({pathname:"/user/autologin", query: newQuery})); + } + ); app.use('/user', userRouter); app.use('/medley', ensureLoggedIn(), medleyRouter); app.use('/client', ensureLoggedIn(), clientRouter); diff --git a/web-portal/server/js/user.js b/web-portal/server/js/user.js index 6b30b12..e6c8ed7 100644 --- a/web-portal/server/js/user.js +++ b/web-portal/server/js/user.js @@ -92,44 +92,55 @@ passport.deserializeUser(userModel.deserializeUser()); // // -userRouter.post('/login', - (req, res, next) => { - passport.authenticate('local', - (err, user, info) => { - if (err) { - return next(err); - } +function passportAuthenticate(req, res, next) { + passport.authenticate('local', + (err, user, info) => { + if (err) { + return next(err); + } - if (!user) { - console.dir(info); - return res.redirect('/user/login?info=' + info); - } + if (!user) { + console.dir(info); + return res.redirect('/user/login?info=' + info); + } - req.logIn(user, async function(err) { - if (err) { + req.logIn(user, + async function(err) { + if (err) { return next(err); - } else { - try { - await userModel.updateOne({username: user.username},{$set: {lastLogin: Date.now()}, $inc: {numLogins : 1}}); - } catch (err) { - console.log("Update last login time error: " + err); - } - try { - await loginModel.create({username: user.username, timestamp: Date.now()}); - } catch (err) { - console.log("Error in logging login: " + err); - } - if(user.uname) - return res.redirect('/main'); - else - return res.render('reregister', {isNCO: config.isNCO(req)}); - } - }); - - })(req, res, next); - } -); + } else { + try { + await userModel.updateOne({username: user.username},{$set: {lastLogin: Date.now()}, $inc: {numLogins : 1}}); + } catch (err) { + console.log("Update last login time error: " + err); + } + try { + await loginModel.create({username: user.username, timestamp: Date.now()}); + } catch (err) { + console.log("Error in logging login: " + err); + } + if(user.uname) + if (user.uname == "guest") && (req.query.autologin != undefined) { + const newQuery={}; + newQuery.autologin=""; + if(req.query.notecards != undefined) newQuery.notecards=""; + if(req.query.rooms != undefined) newQuery.rooms=""; + return res.redirect(url.format({pathname:"/main", query: newQuery})); + } + else + return res.redirect('/main'); + else + return res.render('reregister', {isNCO: config.isNCO(req)}); + } + } + ); + } + )(req, res, next); +} + +userRouter.post('/login', passportAuthenticate); +userRouter.get('/autologin', passportAuthenticate); userRouter.get('/login', (req, res) => { From ba46128c1696a3a0f0d50ba3ec78314e7603ce87 Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sat, 15 Mar 2025 20:13:19 +0000 Subject: [PATCH 02/12] Fix typo in server/js/user.js --- web-portal/server/js/user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-portal/server/js/user.js b/web-portal/server/js/user.js index e6c8ed7..e09e808 100644 --- a/web-portal/server/js/user.js +++ b/web-portal/server/js/user.js @@ -121,7 +121,7 @@ function passportAuthenticate(req, res, next) { console.log("Error in logging login: " + err); } if(user.uname) - if (user.uname == "guest") && (req.query.autologin != undefined) { + if ((user.uname == "guest") && (req.query.autologin != undefined)) { const newQuery={}; newQuery.autologin=""; if(req.query.notecards != undefined) newQuery.notecards=""; From 4490725694a19edd26acf15d4b89d205fb8c4986 Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sat, 15 Mar 2025 20:44:17 +0000 Subject: [PATCH 03/12] Fix typo in server/js/app.js --- web-portal/server/js/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-portal/server/js/app.js b/web-portal/server/js/app.js index 1d4aeb5..3d8b84e 100644 --- a/web-portal/server/js/app.js +++ b/web-portal/server/js/app.js @@ -95,7 +95,7 @@ app.get('/main', isVerified: (await userRouter.getIsVerified(req) ? 'true' : 'false'), nodisclaimer: (await userRouter.getNoDisclaimer(req) ? 'true' : 'false'), isNCO: config.isNCO(req), - isAutoLogin: req.query.autologin, + isAutoLogin: (req.query.autologin != undefined), notecards: (req.query.notecards != undefined), rooms: (req.query.rooms != undefined) } From f7aa34e670b1a13378114ec64902125ca4fb90e7 Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sat, 15 Mar 2025 21:13:50 +0000 Subject: [PATCH 04/12] More typos - capitalization errors --- web-portal/client/js/main.js | 2 +- web-portal/server/js/app.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web-portal/client/js/main.js b/web-portal/client/js/main.js index dd4c951..3058c6d 100644 --- a/web-portal/client/js/main.js +++ b/web-portal/client/js/main.js @@ -109,7 +109,7 @@ window.addEventListener('load', (event) => { dlg.showModal(); } } - if(isAutologin) startSession("interlisp"); + if(isAutoLogin) startSession("interlisp"); }); function startSession (interlispOrXterm) { diff --git a/web-portal/server/js/app.js b/web-portal/server/js/app.js index 3d8b84e..3673eca 100644 --- a/web-portal/server/js/app.js +++ b/web-portal/server/js/app.js @@ -105,7 +105,7 @@ app.get('/main', app.get('/guest', (req, res) => { const newQuery = {}; - newQuery.autoLogin = ""; + newQuery.autologin = ""; newQuery.username = config.guestUsername; newQuery.password = config.guestPassword; if(req.query.notecards != undefined) newQuery.notecards=""; From 8956308d06589bebfead77be67051bddfb7a71b9 Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sat, 15 Mar 2025 22:21:25 +0000 Subject: [PATCH 05/12] Another set of typos in client/js/main.js --- web-portal/client/js/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web-portal/client/js/main.js b/web-portal/client/js/main.js index 3058c6d..5bb318a 100644 --- a/web-portal/client/js/main.js +++ b/web-portal/client/js/main.js @@ -58,8 +58,8 @@ window.addEventListener('load', (event) => { showRow("initial_exec"); showRow("run_notecards"); showRow("run_rooms"); - document.getElementById("run_notecards_cb").checked = ilNotecards; - document.getElementById("run_rooms_cb").checked = ilRooms; + document.getElementById("run_notecards_cb").checked = alNotecards; + document.getElementById("run_rooms_cb").checked = alRooms; document.getElementById("sftp_checkbox").checked = false; document.getElementById("interlisp_rb").checked = true; } else if(isGuest) { From 1d395d73d4a49d38bcd101506c72da51926637b3 Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sat, 15 Mar 2025 22:48:21 +0000 Subject: [PATCH 06/12] Prevent disclosure dialog when doing autologin --- web-portal/client/js/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-portal/client/js/main.js b/web-portal/client/js/main.js index 5bb318a..3d1db00 100644 --- a/web-portal/client/js/main.js +++ b/web-portal/client/js/main.js @@ -97,7 +97,7 @@ window.addEventListener('load', (event) => { fillWindowOnClick(); document.getElementById("dev-options-checkbox").checked = (localStore.getItem("show_dev_options") == "true"); showDevOptionsOnClick(); - if(! fromvnc) { + if( ! (isAutoLogin || fromvnc)) { if(isVerified != true) { const dlg = document.getElementById(rr ? "verification-dialog2" : "verification-dialog1"); dlg.showModal(); From 0613ac8bffb13ff791309537d480b16451964f68 Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sat, 15 Mar 2025 23:50:36 +0000 Subject: [PATCH 07/12] Try to hide main page in autologin case --- web-portal/client/js/main.js | 16 +++++++++------- web-portal/client/stylesheets/main.css | 4 ++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/web-portal/client/js/main.js b/web-portal/client/js/main.js index 3d1db00..f13edf0 100644 --- a/web-portal/client/js/main.js +++ b/web-portal/client/js/main.js @@ -1,13 +1,13 @@ /******************************************************************************* - * + * * main.js: Page-level code used by the main.pug page. - * - * + * + * * 2022-03-09 Frank Halasz - * - * - * Copyright: 2022 by Interlisp.org - * + * + * + * Copyright: 2022 by Interlisp.org + * * ******************************************************************************/ @@ -30,6 +30,8 @@ window.addEventListener('load', (event) => { const rr = urlParams.get('rr') || false; const fromvnc = urlParams.get('fromvnc') || false; + if (! isAutoLogin) document.getElementById("page-container").style.visibility = "visible"; + if (targetSystem == "Notecards") { document.getElementById("fill_window_cb").checked = true; document.getElementById("dev-div").style.display = "none"; diff --git a/web-portal/client/stylesheets/main.css b/web-portal/client/stylesheets/main.css index b82e1bb..7648dc5 100644 --- a/web-portal/client/stylesheets/main.css +++ b/web-portal/client/stylesheets/main.css @@ -10,6 +10,10 @@ * **************************************************************************/ +#page-container { + visibility: "hidden"; +} + #logged-in-as { font-size: 15px; font-style: italic; From 17b75f0cde1cfb84c86e834ca09b40d3d5574872 Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sun, 16 Mar 2025 00:11:37 +0000 Subject: [PATCH 08/12] fix typo in main.css --- web-portal/client/stylesheets/main.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-portal/client/stylesheets/main.css b/web-portal/client/stylesheets/main.css index 7648dc5..0d9dee2 100644 --- a/web-portal/client/stylesheets/main.css +++ b/web-portal/client/stylesheets/main.css @@ -11,7 +11,7 @@ **************************************************************************/ #page-container { - visibility: "hidden"; + visibility: hidden; } #logged-in-as { From 5c8c7d543def81ab9507a750768b9a925c854c45 Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sat, 15 Mar 2025 21:36:33 -0700 Subject: [PATCH 09/12] Add files via upload Add latest logo file Signed-off-by: Frank Halasz --- .../images/logos/logo_red_no_border_568x385.png | Bin 0 -> 19433 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 web-portal/client/images/logos/logo_red_no_border_568x385.png diff --git a/web-portal/client/images/logos/logo_red_no_border_568x385.png b/web-portal/client/images/logos/logo_red_no_border_568x385.png new file mode 100644 index 0000000000000000000000000000000000000000..67bbfc45c51a530661642773ba1f8f62c09852ca GIT binary patch literal 19433 zcmeIaWmJ{#w=TR;q*J;}8YvZNq(MTuI|Zam8bPE}5KvkgWD(NcT@s5<>F$R2Ucdd{ z?|a@e_Bdmoan9J|d^jH*2a$3P0*(9ZjWW0~Sbv^~hPh;;$sFY46WmI? z@sUI*Gw#&HEmO*7kt_(H)_?O|Mm-Vhk(_pw#n{G8U}DYmvmdhD_0y@1ez1fc69&s6 zk2r`2cOEmMD9#%R35jQPeeaR~`Ohl`Uij|<@(v*(Au?`BOE|c=vAdkDG_^wjz&xL>)-qBN<4eEC`jlq2|7ytmLO@b{uRqfob+z3RjC(>>0RV?hSqC!ae_TEP&0Qb;wK zS4@lfKE!?f>dZuXRW`eKd&8_^Vq)@JoVt%_N>cJaSnuv7d?U|BN`|lC;XMKKcGA|? z*1y|(s$Y^~nwXk`d#0_r@bi5OXOfq9K;tZ$Kr5Oc1rJ_w;B~k;-+Lb{D#6{x&hj7Z z881>EgpB6{@q*VuEVGx!}i5M^OQ+H#Ks?Tv zh~OXBJXpe6i%DSB6w6eS5Wt|#dKBvZZ+`s|nK2}eUM|b?Yy+o?%R1Mnoo#2!6;`ZS9I2^SYa{rowmfct)g8?l53 zWqtm?gT-15W7@|@0n|O$Wsa*->9Bb)$C#bzI#(NfVH(=F7ykkY@<2R^RDRcy3d>=* zp&cC^Y1O${f#>wW-X^j~D*u#{6o?2(74f57^u4kD_veFenANj++Rc_4KgJ`^LP=oP z*CBjhw4JSrM8#TTa#IF#{$Ic<2YS=6LU6N8iO{EDlT3JiJfETYOCsR58`Ej|orpJe z=zZ{;czdqa%>44%y&8`b3otO$qZjm94gUIS{{d<`U|>nA|KPDL{V-krJ~)={)YIp; zc#k7^gru057;stKe|cELkn7$I!J_wxLOgAq+|N;oN}sIT08}i=1dXD#h#%haL+OTk zdMU$vsfvuVFu7;1|F2{H4`R;W9mI{n*NdOUGGlhRye}Qnc?dZS*sRE|?zpVS^XDEi zLPJ8t;-UY9En2_vQ7r%C#P(op)0y8^#`Depi6lOiC{d z*i8R`<2FalQ@g+3;%HA!pMQVEqCQlefL&9fAG|vJQFdos%?DD*eR1V8RCl7;viGg{ zx$Pal5@FcaV&N<$z%I~KS1uEc7H@P*Dm6DFAE?hOdut~bgaX<>%{B(N+;1%MEqrUs zkWSt?QtImZ`%(8w^!h@CcI(05+wUQtDf_eWeCX(}lohua3EAVI)|j7re+AeX@yodUx!f0s zf)o>3_i)yb7U1LR)fZ_^O?d?SHH%ZS=zjVbM~v7RMF*4>wrUwnMKS zZe1CqXX-ibIp;#%mqJ8>BM3yO_loRkruO*$5GpI028iRc=RECe3(8>AL&-me{00jP zkr%&N)qpiQ(9gv;^hO+LY*+_;EptRK_Bxl-$!jx{DC;zAZ7D$?#g}^gJCaOnwuVN{ zynksDPuw||qLH%j=B>D^q1C3Y(4(4pnba2?(lfMuRsc`pl1h|)lBA;tV(VV;JUq(l z2vn>v)h?Adw&NO$xtF)2HQJoP?K6>d&UrqTkL!M85_(Jn(46nhVy#cqIBT|U%=KV3 zpNhLi6keY3bgA~SC#F9CTLVkctdXq@HUl=znLm>y24&Md&}Z~?W{YP|{MFHwPys

Bt^S=8dl{)QOho4s?EMCO4D6!Us`F&x~@4 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 Date: Sun, 16 Mar 2025 04:56:54 +0000 Subject: [PATCH 10/12] Add logo to background on main page in autologin case. --- web-portal/client/js/main.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/web-portal/client/js/main.js b/web-portal/client/js/main.js index f13edf0..e89e46c 100644 --- a/web-portal/client/js/main.js +++ b/web-portal/client/js/main.js @@ -30,7 +30,13 @@ window.addEventListener('load', (event) => { const rr = urlParams.get('rr') || false; const fromvnc = urlParams.get('fromvnc') || false; - if (! isAutoLogin) document.getElementById("page-container").style.visibility = "visible"; + if (isAutoLogin) { + document.body.style("background-image") = url('images/logos/logo_red_no_border_568x385.png'); + document.body.style("background-repeat") = "no-repeat"; + document.body.style("background-position") = "center"; + document.body.style("position") = "relative"; + } + else document.getElementById("page-container").style.visibility = "visible"; if (targetSystem == "Notecards") { document.getElementById("fill_window_cb").checked = true; @@ -56,10 +62,6 @@ window.addEventListener('load', (event) => { document.getElementById("fill_window_cb").checked = true; document.getElementById("dev-div").style.display = "none"; document.getElementById("do_not_checkbox_div").style.display = "none"; - hideRow("resume"); - showRow("initial_exec"); - showRow("run_notecards"); - showRow("run_rooms"); document.getElementById("run_notecards_cb").checked = alNotecards; document.getElementById("run_rooms_cb").checked = alRooms; document.getElementById("sftp_checkbox").checked = false; From edfe5e171f5393aabc7e2800bb13a7f51423eb4f Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sun, 16 Mar 2025 05:15:38 +0000 Subject: [PATCH 11/12] Fix body.style.background... clauses in main.js --- web-portal/client/js/main.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web-portal/client/js/main.js b/web-portal/client/js/main.js index e89e46c..3bc18d4 100644 --- a/web-portal/client/js/main.js +++ b/web-portal/client/js/main.js @@ -31,10 +31,10 @@ window.addEventListener('load', (event) => { const fromvnc = urlParams.get('fromvnc') || false; if (isAutoLogin) { - document.body.style("background-image") = url('images/logos/logo_red_no_border_568x385.png'); - document.body.style("background-repeat") = "no-repeat"; - document.body.style("background-position") = "center"; - document.body.style("position") = "relative"; + document.body.style.backgroundImage = "url('images/logos/logo_red_no_border_568x385.png')"; + document.body.style.backgroundRepeat = "no-repeat"; + document.body.style.backgroundPosition = "center"; + document.body.style.position = "relative"; } else document.getElementById("page-container").style.visibility = "visible"; From 8d2741abd408496e08902d7263ef972885996f9a Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sun, 16 Mar 2025 06:40:32 +0000 Subject: [PATCH 12/12] Plumb return from novnc for autologin case - should just return to logo page, not full main page --- web-portal/client/js/main.js | 4 +++- web-portal/client/novnc_oio/ui.js | 5 ++++- web-portal/server/js/medley.js | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/web-portal/client/js/main.js b/web-portal/client/js/main.js index 3bc18d4..7e35457 100644 --- a/web-portal/client/js/main.js +++ b/web-portal/client/js/main.js @@ -113,7 +113,7 @@ window.addEventListener('load', (event) => { dlg.showModal(); } } - if(isAutoLogin) startSession("interlisp"); + if(isAutoLogin && (! fromvnc)) startSession("interlisp"); }); function startSession (interlispOrXterm) { @@ -182,6 +182,7 @@ function startSession (interlispOrXterm) { + `&rooms=${runRooms || "false"}` + `&sftp=${startSftp || "false"}` + `&exec=${medleyExec || "inter"}` + + ( isAutoLogin ? "&autologin" : "") ); } ); @@ -198,6 +199,7 @@ function startSession (interlispOrXterm) { + `&rooms=${runRooms || "false"}` + `&sftp=${startSftp || "false"}` + `&exec=${medleyExec || "inter"}` + + ( isAutoLogin ? "&autologin" : "") ); } }, diff --git a/web-portal/client/novnc_oio/ui.js b/web-portal/client/novnc_oio/ui.js index df56a43..2846799 100644 --- a/web-portal/client/novnc_oio/ui.js +++ b/web-portal/client/novnc_oio/ui.js @@ -1161,7 +1161,10 @@ const UI = { // // UI.openControlbar(); // UI.openConnectPanel(); - window.location.assign(window.location.origin + "/main?fromvnc=1"); + if(document.location.href.match(/autologin/)) + window.location.assign(window.location.origin + "/main?fromvnc=1&autologin=1"); + else + window.location.assign(window.location.origin + "/main?fromvnc=1"); }, securityFailed(e) { diff --git a/web-portal/server/js/medley.js b/web-portal/server/js/medley.js index 1fa5404..07e01e2 100644 --- a/web-portal/server/js/medley.js +++ b/web-portal/server/js/medley.js @@ -272,6 +272,7 @@ function goToVnc(req, res, next) { var url = `/client/go?target=${req.oioTarget}&port=${req.oioPort}&autoconnect=1&view_only=0`; url = `${url}${config.supportHttps ? "&encrypt=1" : ""}&u=${req.user.uname}&p=${req.sftpPwd}`; if(config.isNCO(req)) url = `${url}&nco=1`; + if(req.query.autologin != undefined) url = `${url}&autologin=1`; res.redirect(url); }