On 11.03.2015 00:22, Florian Jacob wrote:
libssh provides a function for parsing ~/.ssh/config for ssh connection 
parameters like user, hostname, identity file
and port. This patch makes ffmpeg use this function to take parameters from the 
config file for everything that's not
explicitely set in the url. It also supports host aliases, i.e. using a 
shorthand in the url and replacing it with the
hostname / IP address specified for the shorthand in the config file.

Signed-off-by: Florian Jacob <projects+ffm...@florianjacob.de>
---
  libavformat/libssh.c | 11 ++++++++---
  1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/libavformat/libssh.c b/libavformat/libssh.c
index 3ec60cb..1ed1d72 100644
--- a/libavformat/libssh.c
+++ b/libavformat/libssh.c
@@ -55,6 +55,10 @@ static av_cold int libssh_create_ssh_session(LIBSSHContext 
*libssh, const char*
          ssh_options_set(libssh->session, SSH_OPTIONS_TIMEOUT_USEC, &timeout);
      }

+    if (ssh_options_parse_config(libssh->session, NULL) < 0) {
+        av_log(libssh, AV_LOG_ERROR, "Could not parse the config file.\n");

This should be a warning (not an error), or return with error code from here. A warning is probably better.

+    }
+
      if (ssh_connect(libssh->session) != SSH_OK) {
          av_log(libssh, AV_LOG_ERROR, "Connection failed: %s\n", 
ssh_get_error(libssh->session));
          return AVERROR(EIO);
@@ -187,7 +191,7 @@ static av_cold int libssh_open(URLContext *h, const char 
*url, int flags)
  {
      LIBSSHContext *libssh = h->priv_data;
      char proto[10], path[MAX_URL_SIZE], hostname[1024], credencials[1024];
-    int port = 22, ret;
+    int port, ret;
      const char *user = NULL, *pass = NULL;
      char *end = NULL;

@@ -198,8 +202,9 @@ static av_cold int libssh_open(URLContext *h, const char 
*url, int flags)
                   path, sizeof(path),
                   url);

-    if (port <= 0 || port > 65535)
-        port = 22;
+    // a port of 0 will use a port from ~/.ssh/config or the default value 22
+    if (port < 0 || port > 65535)
+        port = 0;

Is this really required? Port will be overwritten if present in config either way?

      if ((ret = libssh_create_ssh_session(libssh, hostname, port)) < 0)
          goto fail;

I will test later, thanks.

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to