168
171
#really use bzrlib.auth get_password for this
169
172
#or possibly better gnome-keyring?
170
173
auth = config.AuthenticationConfig()
171
parsed_url = urlutils.URL.from_string(self.url)
174
(scheme, urluser, urlpassword, host, port, urlpath) = \
175
urlutils.parse_url(self.url)
173
177
if (flags & gio.ASK_PASSWORD_NEED_USERNAME and
174
178
flags & gio.ASK_PASSWORD_NEED_DOMAIN):
175
prompt = (u'%s' % (parsed_url.scheme.upper(),) +
176
u' %(host)s DOMAIN\\username')
177
user_and_domain = auth.get_user(parsed_url.scheme,
178
parsed_url.host, port=parsed_url.port, ask=True,
179
prompt = u'%s' % (scheme.upper(),) + u' %(host)s DOMAIN\\username'
180
user_and_domain = auth.get_user(scheme, host,
181
port=port, ask=True, prompt=prompt)
180
182
(domain, user) = user_and_domain.split('\\', 1)
181
183
op.set_username(user)
182
184
op.set_domain(domain)
183
185
elif flags & gio.ASK_PASSWORD_NEED_USERNAME:
184
user = auth.get_user(parsed_url.scheme, parsed_url.host,
185
port=parsed_url.port, ask=True)
186
user = auth.get_user(scheme, host,
186
188
op.set_username(user)
187
189
elif flags & gio.ASK_PASSWORD_NEED_DOMAIN:
188
190
#Don't know how common this case is, but anyway
189
191
#a DOMAIN and a username prompt should be the
190
192
#same so I will missuse the ui_factory get_username
191
193
#a little bit here.
192
prompt = (u'%s' % (parsed_url.scheme.upper(),) +
194
prompt = u'%s' % (scheme.upper(),) + u' %(host)s DOMAIN'
194
195
domain = ui.ui_factory.get_username(prompt=prompt)
195
196
op.set_domain(domain)
197
198
if flags & gio.ASK_PASSWORD_NEED_PASSWORD:
199
200
user = op.get_username()
200
password = auth.get_password(parsed_url.scheme, parsed_url.host,
201
user, port=parsed_url.port)
201
password = auth.get_password(scheme, host,
202
203
op.set_password(password)
203
204
op.reply(gio.MOUNT_OPERATION_HANDLED)
213
214
def _create_connection(self, credentials=None):
214
215
if credentials is None:
215
user, password = self._parsed_url.user, self._parsed_url.password
216
user, password = self._user, self._password
217
218
user, password = credentials
253
254
self._set_connection(connection, credentials)
255
256
def _remote_path(self, relpath):
256
return self._parsed_url.clone(relpath).path
257
relative = urlutils.unescape(relpath).encode('utf-8')
258
remote_path = self._combine_paths(self._path, relative)
258
261
def has(self, relpath):
259
262
"""Does the target location exist?"""