Use key auth for SFTP on Windows

This commit is contained in:
Albert Vaca Cintora 2024-08-19 00:45:12 +02:00
parent 45b1b27929
commit c456362088
No known key found for this signature in database
2 changed files with 6 additions and 10 deletions

View file

@ -7,14 +7,14 @@
#include <QDebug> #include <QDebug>
#include <QDesktopServices> #include <QDesktopServices>
#include <QDir> #include <QUrl>
#include <QMessageBox> #include <QMessageBox>
#include <QProcess> #include <QProcess>
#include <QRegularExpression>
#include <KLocalizedString> #include <KLocalizedString>
#include <KPluginFactory> #include <KPluginFactory>
#include "kdeconnectconfig.h"
#include "plugin_sftp_debug.h" #include "plugin_sftp_debug.h"
K_PLUGIN_CLASS_WITH_JSON(SftpPlugin, "kdeconnect_sftp.json") K_PLUGIN_CLASS_WITH_JSON(SftpPlugin, "kdeconnect_sftp.json")
@ -63,21 +63,17 @@ void SftpPlugin::receivePacket(const NetworkPacket &np)
path += QChar::fromLatin1('/'); path += QChar::fromLatin1('/');
} }
QString url_string = QStringLiteral("sftp://%1:%2@%3:%4%5") QString url_string = QStringLiteral("sftp://%1;x-publickeyfile=%2@%3:%4%5")
.arg(np.get<QString>(QStringLiteral("user")), .arg(np.get<QString>(QStringLiteral("user")),
np.get<QString>(QStringLiteral("password")), QLatin1StringView(QUrl::toPercentEncoding(KdeConnectConfig::instance().privateKeyPath())),
np.get<QString>(QStringLiteral("ip")), np.get<QString>(QStringLiteral("ip")),
np.get<QString>(QStringLiteral("port")), np.get<QString>(QStringLiteral("port")),
path); path);
static QRegularExpression uriRegex(QStringLiteral("^sftp://kdeconnect:\\w+@\\d+.\\d+.\\d+.\\d+:17[3-6][0-9]/$"));
if (!uriRegex.match(url_string).hasMatch()) {
qCWarning(KDECONNECT_PLUGIN_SFTP) << "Invalid URL invoked. If the problem persists, contact the developers.";
}
if (!QDesktopServices::openUrl(QUrl(url_string))) { if (!QDesktopServices::openUrl(QUrl(url_string))) {
QMessageBox::critical(nullptr, QMessageBox::critical(nullptr,
i18n("KDE Connect"), i18n("KDE Connect"),
i18n("Cannot handle SFTP protocol. Apologies for the inconvenience"), i18n("Couldn't find a program to handle sftp:// URLs, please install WinSCP or another SFTP client."),
QMessageBox::Abort, QMessageBox::Abort,
QMessageBox::Abort); QMessageBox::Abort);
} }

View file

@ -12,7 +12,7 @@
#define PACKET_TYPE_SFTP_REQUEST QStringLiteral("kdeconnect.sftp.request") #define PACKET_TYPE_SFTP_REQUEST QStringLiteral("kdeconnect.sftp.request")
static const QSet<QString> expectedFields = QSet<QString>() static const QSet<QString> expectedFields = QSet<QString>()
<< QStringLiteral("ip") << QStringLiteral("port") << QStringLiteral("user") << QStringLiteral("password") << QStringLiteral("path"); << QStringLiteral("ip") << QStringLiteral("port") << QStringLiteral("user") << QStringLiteral("path");
; ;
class SftpPlugin : public KdeConnectPlugin class SftpPlugin : public KdeConnectPlugin
{ {