diff --git a/core/system_menu_method.js b/core/system_menu_method.js index 2e78f964..73d604a5 100644 --- a/core/system_menu_method.js +++ b/core/system_menu_method.js @@ -16,6 +16,7 @@ const iconv = require('iconv-lite'); exports.login = login; exports.login2FA_OTP = login2FA_OTP; +exports.setClientEncoding = setClientEncoding; exports.logoff = logoff; exports.prevMenu = prevMenu; exports.nextMenu = nextMenu; @@ -241,6 +242,23 @@ function nextArea(callingMenu, formData, extraArgs, cb) { ); } +function setClientEncoding(callingMenu, formData, extraArgs, cb) { + // TODO: Also add other encoding types + const client = callingMenu.client; + let encoding = formData.value.encoding; + + client.log.info( + { encoding: encoding, currentEncoding: client.term.outputEncoding }, + 'Setting client encoding.' + ); + + encoding = encoding || client.term.outputEncoding; + + client.term.outputEncoding = encoding; + + return callingMenu.nextMenu(cb); +} + function sendForgotPasswordEmail(callingMenu, formData, extraArgs, cb) { const username = formData.value.username || callingMenu.client.user.username;