]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/libssh.c
avformat/nut: add support for per frame side & meta data with version 4
[ffmpeg] / libavformat / libssh.c
index 4a9b8674cf4d24aa550d27c768efe9de92706ce8..aa9b060ee3a21bdfcede89ccef6f0a1e1e463a89 100644 (file)
@@ -91,10 +91,13 @@ static int libssh_open(URLContext *h, const char *url, int flags)
         goto fail;
     }
 
-    if (pass && ssh_userauth_password(s->session, NULL, pass) != SSH_AUTH_SUCCESS) {
-        av_log(h, AV_LOG_ERROR, "Error authenticating with password: %s\n", ssh_get_error(s->session));
-        ret = AVERROR(EACCES);
-        goto fail;
+    if (ssh_userauth_autopubkey(s->session, pass) != SSH_AUTH_SUCCESS) {
+        av_log(s, AV_LOG_DEBUG, "Authentication using public key failed, trying password method.\n");
+        if (ssh_userauth_password(s->session, NULL, pass) != SSH_AUTH_SUCCESS) {
+            av_log(h, AV_LOG_ERROR, "Authentication failed.\n");
+            ret = AVERROR(EACCES);
+            goto fail;
+        }
     }
 
     if (!(s->sftp = sftp_new(s->session))) {
@@ -121,7 +124,8 @@ static int libssh_open(URLContext *h, const char *url, int flags)
         access = O_RDONLY;
     }
 
-    if (!(s->file = sftp_open(s->sftp, path, access, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH))) {
+    /* 0666 = -rw-rw-rw- = read+write for everyone, minus umask */
+    if (!(s->file = sftp_open(s->sftp, path, access, 0666))) {
         av_log(h, AV_LOG_ERROR, "Error opening sftp file: %s\n", ssh_get_error(s->session));
         ret = AVERROR(EIO);
         goto fail;