author | Raphaël Gomès <rgomes@octobus.net> |
Mon, 14 Nov 2022 10:57:44 +0100 | |
branch | stable |
changeset 49584 | 684e0085fed7 |
parent 48875 | 6000f5b25c9b |
child 50929 | 18c8c18993f0 |
permissions | -rw-r--r-- |
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 |
|
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
49 |
import os |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
50 |
from mercurial.i18n import _ |
43087
66f2cc210a29
py3: manually import pycompat.setattr where it is needed
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43077
diff
changeset
|
51 |
from mercurial.pycompat import setattr |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39826
diff
changeset
|
52 |
from mercurial.utils import procutil |
28971
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
53 |
from mercurial import ( |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
54 |
error, |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
55 |
httpconnection, |
33241
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
56 |
registrar, |
28971
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
57 |
url, |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
58 |
util, |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
59 |
) |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
60 |
|
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
61 |
urlreq = util.urlreq |
bacca31f4835
py3: make factotum use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26587
diff
changeset
|
62 |
passwordmgr = url.passwordmgr |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
63 |
|
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
64 |
ERRMAX = 128 |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
65 |
|
21228
be561a622100
factotum: initialize global variables to suppress pyflakes warning
Yuya Nishihara <yuya@tcha.org>
parents:
19614
diff
changeset
|
66 |
_executable = _mountpoint = _service = None |
be561a622100
factotum: initialize global variables to suppress pyflakes warning
Yuya Nishihara <yuya@tcha.org>
parents:
19614
diff
changeset
|
67 |
|
33241
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
68 |
configtable = {} |
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
69 |
configitem = registrar.configitem(configtable) |
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
70 |
|
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39826
diff
changeset
|
71 |
configitem( |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43087
diff
changeset
|
72 |
b'factotum', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43087
diff
changeset
|
73 |
b'executable', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43087
diff
changeset
|
74 |
default=b'/bin/auth/factotum', |
33241
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
75 |
) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39826
diff
changeset
|
76 |
configitem( |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43087
diff
changeset
|
77 |
b'factotum', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43087
diff
changeset
|
78 |
b'mountpoint', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43087
diff
changeset
|
79 |
default=b'/mnt/factotum', |
33242
037c5c937602
configitems: register the 'factotum.mountpoint' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33241
diff
changeset
|
80 |
) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39826
diff
changeset
|
81 |
configitem( |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43087
diff
changeset
|
82 |
b'factotum', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43087
diff
changeset
|
83 |
b'service', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43087
diff
changeset
|
84 |
default=b'hg', |
33243
a9524aea7cab
configitems: register the 'factotum.service' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33242
diff
changeset
|
85 |
) |
33241
21b568820a3c
configitems: register the 'factotum.executable' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
29377
diff
changeset
|
86 |
|
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39826
diff
changeset
|
87 |
|
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
88 |
def auth_getkey(self, params): |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
89 |
if not self.ui.interactive(): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
90 |
raise error.Abort(_(b'factotum not interactive')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
91 |
if b'user=' not in params: |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
92 |
params = b'%s user?' % params |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
93 |
params = b'%s !password?' % params |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
94 |
os.system(procutil.tonativestr(b"%s -g '%s'" % (_executable, params))) |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
95 |
|
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39826
diff
changeset
|
96 |
|
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
97 |
def auth_getuserpasswd(self, getkey, params): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
98 |
params = b'proto=pass %s' % params |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
99 |
while True: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
100 |
fd = os.open(b'%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
|
101 |
try: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
102 |
os.write(fd, b'start %s' % params) |
25078
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
103 |
l = os.read(fd, ERRMAX).split() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
104 |
if l[0] == b'ok': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
105 |
os.write(fd, b'read') |
25078
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
106 |
status, user, passwd = os.read(fd, ERRMAX).split(None, 2) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
107 |
if status == b'ok': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
108 |
if passwd.startswith(b"'"): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
109 |
if passwd.endswith(b"'"): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
110 |
passwd = passwd[1:-1].replace(b"''", b"'") |
25078
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
111 |
else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
112 |
raise error.Abort(_(b'malformed password string')) |
25078
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
113 |
return (user, passwd) |
e8348f1cc228
factotum: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
23393
diff
changeset
|
114 |
except (OSError, IOError): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
115 |
raise error.Abort(_(b'factotum not responding')) |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
116 |
finally: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
117 |
os.close(fd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
118 |
getkey(self, params) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
119 |
|
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39826
diff
changeset
|
120 |
|
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
121 |
def monkeypatch_method(cls): |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
122 |
def decorator(func): |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
123 |
setattr(cls, func.__name__, func) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
124 |
return func |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39826
diff
changeset
|
125 |
|
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
126 |
return decorator |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
127 |
|
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39826
diff
changeset
|
128 |
|
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
129 |
@monkeypatch_method(passwordmgr) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
130 |
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
|
131 |
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
|
132 |
if user and passwd: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
133 |
self._writedebug(user, passwd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
134 |
return (user, passwd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
135 |
|
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
136 |
prefix = b'' |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
137 |
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
|
138 |
if res: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
139 |
_, auth = res |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
140 |
prefix = auth.get(b'prefix') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
141 |
user, passwd = auth.get(b'username'), auth.get(b'password') |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
142 |
if not user or not passwd: |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
143 |
if not prefix: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
144 |
prefix = realm.split(b' ')[0].lower() |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
145 |
params = b'service=%s prefix=%s' % (_service, prefix) |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
146 |
if user: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
147 |
params = b'%s user=%s' % (params, user) |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
148 |
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
|
149 |
|
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
150 |
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
|
151 |
self._writedebug(user, passwd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
152 |
return (user, passwd) |
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
153 |
|
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39826
diff
changeset
|
154 |
|
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
155 |
def uisetup(ui): |
16463
cef755f86d5c
factotum: rename mount and path configuration entries
Steven Stallion <sstallion@gmail.com>
parents:
16383
diff
changeset
|
156 |
global _executable |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
157 |
_executable = ui.config(b'factotum', b'executable') |
16463
cef755f86d5c
factotum: rename mount and path configuration entries
Steven Stallion <sstallion@gmail.com>
parents:
16383
diff
changeset
|
158 |
global _mountpoint |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
159 |
_mountpoint = ui.config(b'factotum', b'mountpoint') |
16383
f5dd179bfa4a
plan9: initial support for plan 9 from bell labs
Steven Stallion <sstallion@gmail.com>
parents:
diff
changeset
|
160 |
global _service |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
161 |
_service = ui.config(b'factotum', b'service') |