diff development.ini @ 7785:b5b91e854308

ssh: set a valid locale in the ssh-serve process In the SSH client configuration, the setting 'SendEnv' could contain variables like 'LANG', 'LC_ALL', and others. This causes these environment variables (with their values at the client-side) to be set in the server. However, not every locale setting valid in the client, is also valid on the server. This could lead to the error: 'locale.Error: unsupported locale setting' when 'from mercurial import archival, merge as hg_merge, patch, ui' is called. Fix this problem by providing an ini setting 'ssh_locale' that the user can set correctly, and which will be used to set LC_ALL and LANGUAGE in the 'kallithea-cli ssh-serve' process. If an environment variable LC_ALL is set, it takes precedence over all other 'LC_xxx' variables, as well as over LANG. So, setting LC_ALL ensures that no user setting of 'LC_xxx' or 'LANG' could influence ssh-serve badly. There is one environment variable that might overrule LC_ALL, specifically for showing messages: 'LANGUAGE'. GNU gettext lets it take precedence over LC_ALL [1]: "GNU gettext gives preference to LANGUAGE over LC_ALL and LANG for the purpose of message handling" So, also set LANGUAGE to the same value as we set LC_ALL to. The principle of setting a specific locale in the server process to fix this error, was first proposed by Dominik Ruf. [1] https://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-variable.html#The-LANGUAGE-variable
author Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
date Fri, 19 Jul 2019 01:12:35 +0200
parents b27e515df83c
children 3ea66ef563f2
line wrap: on
line diff
--- a/development.ini	Mon Nov 17 14:42:45 2014 -0500
+++ b/development.ini	Fri Jul 19 01:12:35 2019 +0200
@@ -238,6 +238,12 @@
 ## Path to be used in ssh_authorized_keys file to invoke kallithea-cli with ssh-serve.
 #kallithea_cli_path = /srv/kallithea/venv/bin/kallithea-cli
 
+## Locale to be used in the ssh-serve command.
+## This is needed because an SSH client may try to use its own locale
+## settings, which may not be available on the server.
+## See `locale -a` for valid values on this system.
+#ssh_locale = C.UTF-8
+
 ####################################
 ###        CELERY CONFIG        ####
 ####################################