From: Daniel Colascione Date: Tue, 29 Oct 2013 02:50:24 +0000 (-0700) Subject: Tweak Tramp method definition syntax to allow overriding check for localhost-only... X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~1097 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b9bef71fd33a3789b2a67a19745f6bbf8f4aff6e;p=emacs.git Tweak Tramp method definition syntax to allow overriding check for localhost-only methods --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 34ac8ffd5e5..f2d0d598c38 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2013-10-29 Daniel Colascione + + * net/tramp.el (tramp-methods): Document new functionality. + * net/tramp-sh.el (tramp-compute-multi-hops): Punt to + tramp-hostname-checker if method provides one instead of scanning + argument list for "%h" to decide hostname acceptability. + 2013-10-28 Michael Albinus * net/tramp-sh.el (tramp-sh-handle-copy-directory): diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index f69859ddb10..3ed2cd324e8 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -4285,6 +4285,10 @@ Gateway hops are already opened." (or ;; There are multi-hops. (cdr target-alist) + ;; This method explicitly has an explicit allowability check. + (let ((checker (tramp-get-method-parameter + method 'tramp-hostname-checker))) + (when checker (funcall checker v host method) t)) ;; The host name is used for the remote shell command. (member '("%h") (tramp-get-method-parameter method 'tramp-login-args)) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 2cbaf4a1636..f076f043c5f 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -265,6 +265,15 @@ pair of the form (KEY VALUE). The following KEYs are defined: In general, the global default value shall be used, but for some methods, like \"su\" or \"sudo\", a shorter timeout might be desirable. + * `tramp-hostname-checker' + This is a function that tramp calls while setting + up a connection. It is called with three arguments: + the target, the host, and the method description. If + the hostname is unacceptable, this function should signal + using `tramp-error'. If a method does not provide + a value here, then Tramp looks at whether the method's + login program uses a \"%h\" parameter. If not, then Tramp + requires that the given hostname match `tramp-local-host-regexp'. What does all this mean? Well, you should specify `tramp-login-program' for all methods; this program is used to log in to the remote site. Then,