[PATCH 1 of 2 V2] ui: introduce an experimental dict of exportable environment variables
Yuya Nishihara
yuya at tcha.org
Wed Jan 18 13:52:43 UTC 2017
On Tue, 17 Jan 2017 23:50:46 -0500, Matt Harbison wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1484712312 18000
> # Tue Jan 17 23:05:12 2017 -0500
> # Node ID 5a03e25ec0c0417e915b2014995bd83443ef97ec
> # Parent 923336cf8b8afdb41746ecef8a39d773bd5538bf
> ui: introduce an experimental dict of exportable environment variables
This looks good as an experimental implementation, so queued, thanks.
I found a few minor problems, which can be fixed later.
> Care needs to be taken to prevent leaking potentially sensitive environment
> variables through hgweb, if template support for environment variables is to be
> introduced. There are a few ideas about the API for preventing accidental
> leaking [1]. Option 3 seems best from the POV of not needing to configure
> anything in the normal case. I couldn't figure out how to do that, so guard it
> with an experimental option for now.
>
> [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-January/092383.html
In addition to hgweb, we'll probably need to consider the case where hg
command is executed behind a third-party web application. A web frontend may
pass a revset provided by user for example, which seems a valid use case.
> --- a/mercurial/ui.py
> +++ b/mercurial/ui.py
> @@ -147,6 +147,15 @@
>
> self.httppasswordmgrdb = urlreq.httppasswordmgrwithdefaultrealm()
>
> + allowed = self.configlist('experimental', 'exportableenviron')
> + if '*' in allowed:
> + self._exportableenviron = self.environ
> + else:
> + self._exportableenviron = {}
> + for k in allowed:
> + if k in self.environ:
> + self._exportableenviron[k] = self.environ[k]
Perhaps s/self.environ/encoding.environ/ would be better since self.environ
can be a WSGI-request environ. (FWIW, I have no idea why we need to carry
around WSGI environ by ui.)
And we'll need to build the dict by fixconfig(), not by __init__().
More information about the Mercurial-devel
mailing list