Mercurial > hg
annotate hgext/factotum.py @ 41325:eff0a7d3229c
hgweb: ensure template mapping keys are bytes
Before, str keys were being added in Python 3 because named
arguments to dict() use native str for keys. This caused the
templater to fail to find the keys since it was looking for
bytes versions.
This makes a handful of tests pass on Python 3.
We may want to consider having the templater validate that keys
in mapping dicts are bytes. But I'm unsure whether this is
appropriate and won't be doing this.
Differential Revision: https://phab.mercurial-scm.org/D5666
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 23 Jan 2019 17:26:00 -0800 |
parents | c31ce080eb75 |
children | 2372284d9457 |
rev | line source |
---|---|
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
1 # factotum.py - Plan 9 factotum integration for Mercurial |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
2 # |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
3 # Copyright (C) 2012 Steven Stallion <sstallion@gmail.com> |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
4 # |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
5 # This program is free software; you can redistribute it and/or modify it |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
6 # under the terms of the GNU General Public License as published by the |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
7 # Free Software Foundation; either version 2 of the License, or (at your |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
8 # option) any later version. |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
9 # |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
10 # This program is distributed in the hope that it will be useful, but |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
11 # WITHOUT ANY WARRANTY; without even the implied warranty of |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
13 # Public License for more details. |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
14 # |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
15 # You should have received a copy of the GNU General Public License along |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
16 # with this program; if not, write to the Free Software Foundation, Inc., |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
17 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
18 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
19 '''http authentication with factotum |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
20 |
16582
cbb916e2d7c5
factotum: add man reference to help output
Steven Stallion <sstallion@gmail.com>
parents:
16463
diff
changeset
|
21 This extension allows the factotum(4) facility on Plan 9 from Bell Labs |
cbb916e2d7c5
factotum: add man reference to help output
Steven Stallion <sstallion@gmail.com>
parents:
16463
diff
changeset
|
22 platforms to provide authentication information for HTTP access. Configuration |
cbb916e2d7c5
factotum: add man reference to help output
Steven Stallion <sstallion@gmail.com>
parents:
16463
diff
changeset
|
23 entries specified in the auth section as well as authentication information |
cbb916e2d7c5
factotum: add man reference to help output
Steven Stallion <sstallion@gmail.com>
parents:
16463
diff
changeset
|
24 provided in the repository URL are fully supported. If no prefix is specified, |
cbb916e2d7c5
factotum: add man reference to help output
Steven Stallion <sstallion@gmail.com>
parents:
16463
diff
changeset
|
25 a value of "*" will be assumed. |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
26 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
27 By default, keys are specified as:: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
28 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
29 proto=pass service=hg prefix=<prefix> user=<username> !password=<password> |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
30 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
31 If the factotum extension is unable to read the required key, one will be |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
32 requested interactively. |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
33 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
34 A configuration section is available to customize runtime behavior. By |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
35 default, these entries are:: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
36 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
37 [factotum] |
16463
cef755f86d5c
factotum: rename mount and path configuration entries
Steven Stallion <sstallion@gmail.com>
parents:
16383
diff
changeset
|
38 executable = /bin/auth/factotum |
cef755f86d5c
factotum: rename mount and path configuration entries
Steven Stallion <sstallion@gmail.com>
parents:
16383
diff
changeset
|
39 mountpoint = /mnt/factotum |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
40 service = hg |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
41 |
16463
cef755f86d5c
factotum: rename mount and path configuration entries
Steven Stallion <sstallion@gmail.com>
parents:
16383
diff
changeset
|
42 The executable entry defines the full path to the factotum binary. The |
cef755f86d5c
factotum: rename mount and path configuration entries
Steven Stallion <sstallion@gmail.com>
parents:
16383
diff
changeset
|
43 mountpoint entry defines the path to the factotum file service. Lastly, the |
cef755f86d5c
factotum: rename mount and path configuration entries
Steven Stallion <sstallion@gmail.com>
parents:
16383
diff
changeset
|
44 service entry controls the service name used when reading keys. |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
45 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
46 ''' |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
47 |
28971
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
48 from __future__ import absolute_import |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
49 |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
50 import os |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
51 from mercurial.i18n import _ |
39826
c31ce080eb75
py3: convert arguments, cwd and env to native strings when spawning subprocess
Matt Harbison <matt_harbison@yahoo.com>
parents:
33243
diff
changeset
|
52 from mercurial.utils import ( |
c31ce080eb75
py3: convert arguments, cwd and env to native strings when spawning subprocess
Matt Harbison <matt_harbison@yahoo.com>
parents:
33243
diff
changeset
|
53 procutil, |
c31ce080eb75
py3: convert arguments, cwd and env to native strings when spawning subprocess
Matt Harbison <matt_harbison@yahoo.com>
parents:
33243
diff
changeset
|
54 ) |
28971
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
55 from mercurial import ( |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
56 error, |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
57 httpconnection, |
33241
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
58 registrar, |
28971
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
59 url, |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
60 util, |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
61 ) |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
62 |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
63 urlreq = util.urlreq |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
64 passwordmgr = url.passwordmgr |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
65 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
66 ERRMAX = 128 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
67 |
21228
be561a622100
factotum: initialize global variables to suppress pyflakes warning
Yuya Nishihara <yuya@tcha.org>
parents:
19614
diff
changeset
|
68 _executable = _mountpoint = _service = None |
be561a622100
factotum: initialize global variables to suppress pyflakes warning
Yuya Nishihara <yuya@tcha.org>
parents:
19614
diff
changeset
|
69 |
33241
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
70 configtable = {} |
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
71 configitem = registrar.configitem(configtable) |
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
72 |
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
73 configitem('factotum', 'executable', |
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
74 default='/bin/auth/factotum', |
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
75 ) |
33242
037c5c937602
configitems: register the 'factotum.mountpoint' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33241
diff
changeset
|
76 configitem('factotum', 'mountpoint', |
037c5c937602
configitems: register the 'factotum.mountpoint' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33241
diff
changeset
|
77 default='/mnt/factotum', |
037c5c937602
configitems: register the 'factotum.mountpoint' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33241
diff
changeset
|
78 ) |
33243
a9524aea7cab
configitems: register the 'factotum.service' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33242
diff
changeset
|
79 configitem('factotum', 'service', |
a9524aea7cab
configitems: register the 'factotum.service' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33242
diff
changeset
|
80 default='hg', |
a9524aea7cab
configitems: register the 'factotum.service' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33242
diff
changeset
|
81 ) |
33241
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
82 |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
83 def auth_getkey(self, params): |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
84 if not self.ui.interactive(): |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25078
diff
changeset
|
85 raise error.Abort(_('factotum not interactive')) |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
86 if 'user=' not in params: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
87 params = '%s user?' % params |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
88 params = '%s !password?' % params |
39826
c31ce080eb75
py3: convert arguments, cwd and env to native strings when spawning subprocess
Matt Harbison <matt_harbison@yahoo.com>
parents:
33243
diff
changeset
|
89 os.system(procutil.tonativestr("%s -g '%s'" % (_executable, params))) |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
90 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
91 def auth_getuserpasswd(self, getkey, params): |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
92 params = 'proto=pass %s' % params |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
93 while True: |
16463
cef755f86d5c
factotum: rename mount and path configuration entries
Steven Stallion <sstallion@gmail.com>
parents:
16383
diff
changeset
|
94 fd = os.open('%s/rpc' % _mountpoint, os.O_RDWR) |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
95 try: |
25078
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
96 os.write(fd, 'start %s' % params) |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
97 l = os.read(fd, ERRMAX).split() |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
98 if l[0] == 'ok': |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
99 os.write(fd, 'read') |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
100 status, user, passwd = os.read(fd, ERRMAX).split(None, 2) |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
101 if status == 'ok': |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
102 if passwd.startswith("'"): |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
103 if passwd.endswith("'"): |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
104 passwd = passwd[1:-1].replace("''", "'") |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
105 else: |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25078
diff
changeset
|
106 raise error.Abort(_('malformed password string')) |
25078
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
107 return (user, passwd) |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
108 except (OSError, IOError): |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25078
diff
changeset
|
109 raise error.Abort(_('factotum not responding')) |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
110 finally: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
111 os.close(fd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
112 getkey(self, params) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
113 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
114 def monkeypatch_method(cls): |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
115 def decorator(func): |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
116 setattr(cls, func.__name__, func) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
117 return func |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
118 return decorator |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
119 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
120 @monkeypatch_method(passwordmgr) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
121 def find_user_password(self, realm, authuri): |
29377
2c019aac6b99
url: extract password database from password manager
liscju <piotr.listkiewicz@gmail.com>
parents:
28971
diff
changeset
|
122 user, passwd = self.passwddb.find_user_password(realm, authuri) |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
123 if user and passwd: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
124 self._writedebug(user, passwd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
125 return (user, passwd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
126 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
127 prefix = '' |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
128 res = httpconnection.readauthforuri(self.ui, authuri, user) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
129 if res: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
130 _, auth = res |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
131 prefix = auth.get('prefix') |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
132 user, passwd = auth.get('username'), auth.get('password') |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
133 if not user or not passwd: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
134 if not prefix: |
19614
1d50c69c1f0a
factotum: clean up keychain for multiple hg repository authentication
Jeff Sickel <jas@corpus-callosum.com>
parents:
18647
diff
changeset
|
135 prefix = realm.split(' ')[0].lower() |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
136 params = 'service=%s prefix=%s' % (_service, prefix) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
137 if user: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
138 params = '%s user=%s' % (params, user) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
139 user, passwd = auth_getuserpasswd(self, auth_getkey, params) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
140 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
141 self.add_password(realm, authuri, user, passwd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
142 self._writedebug(user, passwd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
143 return (user, passwd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
144 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
145 def uisetup(ui): |
16463
cef755f86d5c
factotum: rename mount and path configuration entries
Steven Stallion <sstallion@gmail.com>
parents:
16383
diff
changeset
|
146 global _executable |
33241
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
147 _executable = ui.config('factotum', 'executable') |
16463
cef755f86d5c
factotum: rename mount and path configuration entries
Steven Stallion <sstallion@gmail.com>
parents:
16383
diff
changeset
|
148 global _mountpoint |
33242
037c5c937602
configitems: register the 'factotum.mountpoint' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33241
diff
changeset
|
149 _mountpoint = ui.config('factotum', 'mountpoint') |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
150 global _service |
33243
a9524aea7cab
configitems: register the 'factotum.service' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33242
diff
changeset
|
151 _service = ui.config('factotum', 'service') |