mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-24 10:52:51 +00:00
kioslave: format and indent
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
dd73e1af18
commit
bfbde5a437
1 changed files with 1836 additions and 1786 deletions
|
@ -191,7 +191,8 @@ static void log_callback(int priority, const char *function, const char *buffer,
|
||||||
}
|
}
|
||||||
|
|
||||||
int sftpProtocol::auth_callback(const char *prompt, char *buf, size_t len,
|
int sftpProtocol::auth_callback(const char *prompt, char *buf, size_t len,
|
||||||
int echo, int verify, void *userdata) {
|
int echo, int verify, void *userdata)
|
||||||
|
{
|
||||||
|
|
||||||
// unused variables
|
// unused variables
|
||||||
(void) echo;
|
(void) echo;
|
||||||
|
@ -329,16 +330,19 @@ int sftpProtocol::authenticateKeyboardInteractive(AuthInfo &info) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::reportError(const KUrl &url, const int err) {
|
void sftpProtocol::reportError(const KUrl &url, const int err)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "url = " << url << " - err=" << err;
|
kDebug(KIO_SFTP_DB) << "url = " << url << " - err=" << err;
|
||||||
|
|
||||||
const int kioError = toKIOError(err);
|
const int kioError = toKIOError(err);
|
||||||
if (kioError)
|
if (kioError) {
|
||||||
error(kioError, url.prettyUrl());
|
error(kioError, url.prettyUrl());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool sftpProtocol::createUDSEntry(const QString &filename, const QByteArray &path,
|
bool sftpProtocol::createUDSEntry(const QString &filename, const QByteArray &path,
|
||||||
UDSEntry &entry, short int details) {
|
UDSEntry &entry, short int details)
|
||||||
|
{
|
||||||
mode_t type;
|
mode_t type;
|
||||||
mode_t access;
|
mode_t access;
|
||||||
char *link;
|
char *link;
|
||||||
|
@ -424,7 +428,8 @@ notype:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString sftpProtocol::canonicalizePath(const QString &path) {
|
QString sftpProtocol::canonicalizePath(const QString &path)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "Path to canonicalize: " << path;
|
kDebug(KIO_SFTP_DB) << "Path to canonicalize: " << path;
|
||||||
QString cPath;
|
QString cPath;
|
||||||
char *sPath = NULL;
|
char *sPath = NULL;
|
||||||
|
@ -449,7 +454,8 @@ QString sftpProtocol::canonicalizePath(const QString &path) {
|
||||||
|
|
||||||
sftpProtocol::sftpProtocol(const QByteArray &pool_socket, const QByteArray &app_socket)
|
sftpProtocol::sftpProtocol(const QByteArray &pool_socket, const QByteArray &app_socket)
|
||||||
: SlaveBase("kio_sftp", pool_socket, app_socket),
|
: SlaveBase("kio_sftp", pool_socket, app_socket),
|
||||||
mConnected(false), mPort(-1), mSession(NULL), mSftp(NULL), mPublicKeyAuthInfo(0) {
|
mConnected(false), mPort(-1), mSession(NULL), mSftp(NULL), mPublicKeyAuthInfo(0)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "pid = " << getpid();
|
kDebug(KIO_SFTP_DB) << "pid = " << getpid();
|
||||||
|
|
||||||
kDebug(KIO_SFTP_DB) << "debug = " << getenv("KIO_SFTP_LOG_VERBOSITY");
|
kDebug(KIO_SFTP_DB) << "debug = " << getenv("KIO_SFTP_LOG_VERBOSITY");
|
||||||
|
@ -489,10 +495,10 @@ sftpProtocol::sftpProtocol(const QByteArray &pool_socket, const QByteArray &app_
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sftpProtocol::~sftpProtocol() {
|
sftpProtocol::~sftpProtocol()
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "pid = " << getpid();
|
kDebug(KIO_SFTP_DB) << "pid = " << getpid();
|
||||||
closeConnection();
|
closeConnection();
|
||||||
|
|
||||||
|
@ -503,7 +509,8 @@ sftpProtocol::~sftpProtocol() {
|
||||||
ssh_finalize();
|
ssh_finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::setHost(const QString& host, quint16 port, const QString& user, const QString& pass) {
|
void sftpProtocol::setHost(const QString& host, quint16 port, const QString& user, const QString& pass)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << user << "@" << host << ":" << port;
|
kDebug(KIO_SFTP_DB) << user << "@" << host << ":" << port;
|
||||||
|
|
||||||
// Close connection if the request is to another server...
|
// Close connection if the request is to another server...
|
||||||
|
@ -602,8 +609,8 @@ bool sftpProtocol::sftpOpenConnection (const AuthInfo& info)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void sftpProtocol::openConnection() {
|
void sftpProtocol::openConnection()
|
||||||
|
{
|
||||||
if (mConnected) {
|
if (mConnected) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -679,9 +686,10 @@ void sftpProtocol::openConnection() {
|
||||||
/* check the server public key hash */
|
/* check the server public key hash */
|
||||||
state = ssh_is_server_known(mSession);
|
state = ssh_is_server_known(mSession);
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case SSH_SERVER_KNOWN_OK:
|
case SSH_SERVER_KNOWN_OK: {
|
||||||
break;
|
break;
|
||||||
case SSH_SERVER_FOUND_OTHER:
|
}
|
||||||
|
case SSH_SERVER_FOUND_OTHER: {
|
||||||
ssh_string_free_char((char *)hash);
|
ssh_string_free_char((char *)hash);
|
||||||
error(KIO::ERR_SLAVE_DEFINED, i18n("The host key for this server was "
|
error(KIO::ERR_SLAVE_DEFINED, i18n("The host key for this server was "
|
||||||
"not found, but another type of key exists.\n"
|
"not found, but another type of key exists.\n"
|
||||||
|
@ -690,7 +698,8 @@ void sftpProtocol::openConnection() {
|
||||||
"Please contact your system administrator.\n%1", QString::fromUtf8(ssh_get_error(mSession))));
|
"Please contact your system administrator.\n%1", QString::fromUtf8(ssh_get_error(mSession))));
|
||||||
closeConnection();
|
closeConnection();
|
||||||
return;
|
return;
|
||||||
case SSH_SERVER_KNOWN_CHANGED:
|
}
|
||||||
|
case SSH_SERVER_KNOWN_CHANGED: {
|
||||||
hexa = ssh_get_hexa(hash, hlen);
|
hexa = ssh_get_hexa(hash, hlen);
|
||||||
ssh_string_free_char((char *)hash);
|
ssh_string_free_char((char *)hash);
|
||||||
/* TODO print known_hosts file, port? */
|
/* TODO print known_hosts file, port? */
|
||||||
|
@ -703,8 +712,9 @@ void sftpProtocol::openConnection() {
|
||||||
ssh_string_free_char(hexa);
|
ssh_string_free_char(hexa);
|
||||||
closeConnection();
|
closeConnection();
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
case SSH_SERVER_FILE_NOT_FOUND:
|
case SSH_SERVER_FILE_NOT_FOUND:
|
||||||
case SSH_SERVER_NOT_KNOWN:
|
case SSH_SERVER_NOT_KNOWN: {
|
||||||
hexa = ssh_get_hexa(hash, hlen);
|
hexa = ssh_get_hexa(hash, hlen);
|
||||||
ssh_string_free_char((char *)hash);
|
ssh_string_free_char((char *)hash);
|
||||||
caption = i18n("Warning: Cannot verify host's identity.");
|
caption = i18n("Warning: Cannot verify host's identity.");
|
||||||
|
@ -727,11 +737,13 @@ void sftpProtocol::openConnection() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SSH_SERVER_ERROR:
|
}
|
||||||
|
case SSH_SERVER_ERROR: {
|
||||||
ssh_string_free_char((char *)hash);
|
ssh_string_free_char((char *)hash);
|
||||||
error(KIO::ERR_SLAVE_DEFINED, QString::fromUtf8(ssh_get_error(mSession)));
|
error(KIO::ERR_SLAVE_DEFINED, QString::fromUtf8(ssh_get_error(mSession)));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
kDebug(KIO_SFTP_DB) << "Trying to authenticate with the server";
|
kDebug(KIO_SFTP_DB) << "Trying to authenticate with the server";
|
||||||
|
|
||||||
|
@ -904,7 +916,8 @@ void sftpProtocol::openConnection() {
|
||||||
info.password.clear();
|
info.password.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::closeConnection() {
|
void sftpProtocol::closeConnection()
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB);
|
kDebug(KIO_SFTP_DB);
|
||||||
|
|
||||||
if (mSftp) {
|
if (mSftp) {
|
||||||
|
@ -920,12 +933,14 @@ void sftpProtocol::closeConnection() {
|
||||||
mConnected = false;
|
mConnected = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::special(const QByteArray &) {
|
void sftpProtocol::special(const QByteArray &)
|
||||||
|
{
|
||||||
int rc;
|
int rc;
|
||||||
kDebug(KIO_SFTP_DB) << "special(): polling";
|
kDebug(KIO_SFTP_DB) << "special(): polling";
|
||||||
|
|
||||||
if (!mSftp)
|
if (!mSftp) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* channel_poll() returns the number of bytes that may be read on the
|
* channel_poll() returns the number of bytes that may be read on the
|
||||||
|
@ -952,7 +967,8 @@ void sftpProtocol::special(const QByteArray &) {
|
||||||
setTimeoutSpecialCommand(KIO_SFTP_SPECIAL_TIMEOUT);
|
setTimeoutSpecialCommand(KIO_SFTP_SPECIAL_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::open(const KUrl &url, QIODevice::OpenMode mode) {
|
void sftpProtocol::open(const KUrl &url, QIODevice::OpenMode mode)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "open: " << url;
|
kDebug(KIO_SFTP_DB) << "open: " << url;
|
||||||
|
|
||||||
if (!sftpLogin()) {
|
if (!sftpLogin()) {
|
||||||
|
@ -969,19 +985,22 @@ void sftpProtocol::open(const KUrl &url, QIODevice::OpenMode mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (sb->type) {
|
switch (sb->type) {
|
||||||
case SSH_FILEXFER_TYPE_DIRECTORY:
|
case SSH_FILEXFER_TYPE_DIRECTORY: {
|
||||||
error(KIO::ERR_IS_DIRECTORY, url.prettyUrl());
|
error(KIO::ERR_IS_DIRECTORY, url.prettyUrl());
|
||||||
sftp_attributes_free(sb);
|
sftp_attributes_free(sb);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
case SSH_FILEXFER_TYPE_SPECIAL:
|
case SSH_FILEXFER_TYPE_SPECIAL:
|
||||||
case SSH_FILEXFER_TYPE_UNKNOWN:
|
case SSH_FILEXFER_TYPE_UNKNOWN: {
|
||||||
error(KIO::ERR_CANNOT_OPEN_FOR_READING, url.prettyUrl());
|
error(KIO::ERR_CANNOT_OPEN_FOR_READING, url.prettyUrl());
|
||||||
sftp_attributes_free(sb);
|
sftp_attributes_free(sb);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
case SSH_FILEXFER_TYPE_SYMLINK:
|
case SSH_FILEXFER_TYPE_SYMLINK:
|
||||||
case SSH_FILEXFER_TYPE_REGULAR:
|
case SSH_FILEXFER_TYPE_REGULAR: {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
KIO::filesize_t fileSize = sb->size;
|
KIO::filesize_t fileSize = sb->size;
|
||||||
sftp_attributes_free(sb);
|
sftp_attributes_free(sb);
|
||||||
|
@ -1047,7 +1066,8 @@ void sftpProtocol::open(const KUrl &url, QIODevice::OpenMode mode) {
|
||||||
opened();
|
opened();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::read(KIO::filesize_t bytes) {
|
void sftpProtocol::read(KIO::filesize_t bytes)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "read, offset = " << openOffset << ", bytes = " << bytes;
|
kDebug(KIO_SFTP_DB) << "read, offset = " << openOffset << ", bytes = " << bytes;
|
||||||
|
|
||||||
Q_ASSERT(mOpenFile != NULL);
|
Q_ASSERT(mOpenFile != NULL);
|
||||||
|
@ -1068,7 +1088,8 @@ void sftpProtocol::read(KIO::filesize_t bytes) {
|
||||||
data(fileData);
|
data(fileData);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::write(const QByteArray &data) {
|
void sftpProtocol::write(const QByteArray &data)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "write, offset = " << openOffset << ", bytes = " << data.size();
|
kDebug(KIO_SFTP_DB) << "write, offset = " << openOffset << ", bytes = " << data.size();
|
||||||
|
|
||||||
Q_ASSERT(mOpenFile != NULL);
|
Q_ASSERT(mOpenFile != NULL);
|
||||||
|
@ -1084,7 +1105,8 @@ void sftpProtocol::write(const QByteArray &data) {
|
||||||
written(bytesWritten);
|
written(bytesWritten);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::seek(KIO::filesize_t offset) {
|
void sftpProtocol::seek(KIO::filesize_t offset)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "seek, offset = " << offset;
|
kDebug(KIO_SFTP_DB) << "seek, offset = " << offset;
|
||||||
|
|
||||||
Q_ASSERT(mOpenFile != NULL);
|
Q_ASSERT(mOpenFile != NULL);
|
||||||
|
@ -1097,14 +1119,16 @@ void sftpProtocol::seek(KIO::filesize_t offset) {
|
||||||
position(sftp_tell64(mOpenFile));
|
position(sftp_tell64(mOpenFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::close() {
|
void sftpProtocol::close()
|
||||||
|
{
|
||||||
sftp_close(mOpenFile);
|
sftp_close(mOpenFile);
|
||||||
|
|
||||||
mOpenFile = NULL;
|
mOpenFile = NULL;
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::get(const KUrl& url) {
|
void sftpProtocol::get(const KUrl& url)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << url;
|
kDebug(KIO_SFTP_DB) << url;
|
||||||
|
|
||||||
int errorCode = 0;
|
int errorCode = 0;
|
||||||
|
@ -1122,8 +1146,8 @@ void sftpProtocol::get(const KUrl& url) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sftpProtocol::StatusCode sftpProtocol::sftpGet(const KUrl& url, int& errorCode, KIO::fileoffset_t offset, int fd) {
|
sftpProtocol::StatusCode sftpProtocol::sftpGet(const KUrl& url, int& errorCode, KIO::fileoffset_t offset, int fd)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << url;
|
kDebug(KIO_SFTP_DB) << url;
|
||||||
|
|
||||||
if (!sftpLogin()) {
|
if (!sftpLogin()) {
|
||||||
|
@ -1143,19 +1167,22 @@ sftpProtocol::StatusCode sftpProtocol::sftpGet(const KUrl& url, int& errorCode,
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (sb->type) {
|
switch (sb->type) {
|
||||||
case SSH_FILEXFER_TYPE_DIRECTORY:
|
case SSH_FILEXFER_TYPE_DIRECTORY: {
|
||||||
errorCode = KIO::ERR_IS_DIRECTORY;
|
errorCode = KIO::ERR_IS_DIRECTORY;
|
||||||
sftp_attributes_free(sb);
|
sftp_attributes_free(sb);
|
||||||
return sftpProtocol::ServerError;
|
return sftpProtocol::ServerError;
|
||||||
|
}
|
||||||
case SSH_FILEXFER_TYPE_SPECIAL:
|
case SSH_FILEXFER_TYPE_SPECIAL:
|
||||||
case SSH_FILEXFER_TYPE_UNKNOWN:
|
case SSH_FILEXFER_TYPE_UNKNOWN: {
|
||||||
errorCode = KIO::ERR_CANNOT_OPEN_FOR_READING;
|
errorCode = KIO::ERR_CANNOT_OPEN_FOR_READING;
|
||||||
sftp_attributes_free(sb);
|
sftp_attributes_free(sb);
|
||||||
return sftpProtocol::ServerError;
|
return sftpProtocol::ServerError;
|
||||||
|
}
|
||||||
case SSH_FILEXFER_TYPE_SYMLINK:
|
case SSH_FILEXFER_TYPE_SYMLINK:
|
||||||
case SSH_FILEXFER_TYPE_REGULAR:
|
case SSH_FILEXFER_TYPE_REGULAR: {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Open file
|
// Open file
|
||||||
file = sftp_open(mSftp, path.constData(), O_RDONLY, 0);
|
file = sftp_open(mSftp, path.constData(), O_RDONLY, 0);
|
||||||
|
@ -1200,8 +1227,7 @@ sftpProtocol::StatusCode sftpProtocol::sftpGet(const KUrl& url, int& errorCode,
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we can resume, offset the buffer properly.
|
// If we can resume, offset the buffer properly.
|
||||||
if (offset > 0 && ((unsigned long long) offset < sb->size))
|
if (offset > 0 && ((unsigned long long) offset < sb->size)) {
|
||||||
{
|
|
||||||
if (sftp_seek64(file, offset) == 0) {
|
if (sftp_seek64(file, offset) == 0) {
|
||||||
canResume();
|
canResume();
|
||||||
totalbytesread = offset;
|
totalbytesread = offset;
|
||||||
|
@ -1226,11 +1252,12 @@ sftpProtocol::StatusCode sftpProtocol::sftpGet(const KUrl& url, int& errorCode,
|
||||||
errorCode = KIO::ERR_COULD_NOT_READ;
|
errorCode = KIO::ERR_COULD_NOT_READ;
|
||||||
return sftpProtocol::ServerError;
|
return sftpProtocol::ServerError;
|
||||||
} else if (bytesread == 0) {
|
} else if (bytesread == 0) {
|
||||||
if (file->eof)
|
if (file->eof) {
|
||||||
break;
|
break;
|
||||||
else
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
data(filedata);
|
data(filedata);
|
||||||
|
@ -1243,14 +1270,16 @@ sftpProtocol::StatusCode sftpProtocol::sftpGet(const KUrl& url, int& errorCode,
|
||||||
processedSize(totalbytesread);
|
processedSize(totalbytesread);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fd == -1)
|
if (fd == -1) {
|
||||||
data(QByteArray());
|
data(QByteArray());
|
||||||
|
}
|
||||||
|
|
||||||
processedSize(static_cast<KIO::filesize_t>(sb->size));
|
processedSize(static_cast<KIO::filesize_t>(sb->size));
|
||||||
return sftpProtocol::Success;
|
return sftpProtocol::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::put(const KUrl& url, int permissions, KIO::JobFlags flags) {
|
void sftpProtocol::put(const KUrl& url, int permissions, KIO::JobFlags flags)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << url << ", permissions =" << permissions
|
kDebug(KIO_SFTP_DB) << url << ", permissions =" << permissions
|
||||||
<< ", overwrite =" << (flags & KIO::Overwrite)
|
<< ", overwrite =" << (flags & KIO::Overwrite)
|
||||||
<< ", resume =" << (flags & KIO::Resume);
|
<< ", resume =" << (flags & KIO::Resume);
|
||||||
|
@ -1272,7 +1301,8 @@ void sftpProtocol::put(const KUrl& url, int permissions, KIO::JobFlags flags) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sftpProtocol::StatusCode sftpProtocol::sftpPut(const KUrl& url, int permissions, JobFlags flags, int& errorCode, int fd) {
|
sftpProtocol::StatusCode sftpProtocol::sftpPut(const KUrl& url, int permissions, JobFlags flags, int& errorCode, int fd)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << url << ", permissions =" << permissions
|
kDebug(KIO_SFTP_DB) << url << ", permissions =" << permissions
|
||||||
<< ", overwrite =" << (flags & KIO::Overwrite)
|
<< ", overwrite =" << (flags & KIO::Overwrite)
|
||||||
<< ", resume =" << (flags & KIO::Resume);
|
<< ", resume =" << (flags & KIO::Resume);
|
||||||
|
@ -1539,13 +1569,15 @@ void sftpProtocol::copy(const KUrl &src, const KUrl &dest, int permissions, KIO:
|
||||||
if (!isSourceLocal && isDestinationLocal) { // sftp -> file
|
if (!isSourceLocal && isDestinationLocal) { // sftp -> file
|
||||||
sCopyFile = dest.toLocalFile();
|
sCopyFile = dest.toLocalFile();
|
||||||
cs = sftpCopyGet(src, sCopyFile, permissions, flags, errorCode);
|
cs = sftpCopyGet(src, sCopyFile, permissions, flags, errorCode);
|
||||||
if (cs == sftpProtocol::ServerError)
|
if (cs == sftpProtocol::ServerError) {
|
||||||
sCopyFile = src.url();
|
sCopyFile = src.url();
|
||||||
|
}
|
||||||
} else if (isSourceLocal && !isDestinationLocal) { // file -> sftp
|
} else if (isSourceLocal && !isDestinationLocal) { // file -> sftp
|
||||||
sCopyFile = src.toLocalFile();
|
sCopyFile = src.toLocalFile();
|
||||||
cs = sftpCopyPut(dest, sCopyFile, permissions, flags, errorCode);
|
cs = sftpCopyPut(dest, sCopyFile, permissions, flags, errorCode);
|
||||||
if (cs == sftpProtocol::ServerError)
|
if (cs == sftpProtocol::ServerError) {
|
||||||
sCopyFile = dest.url();
|
sCopyFile = dest.url();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
errorCode = KIO::ERR_UNSUPPORTED_ACTION;
|
errorCode = KIO::ERR_UNSUPPORTED_ACTION;
|
||||||
sCopyFile.clear();
|
sCopyFile.clear();
|
||||||
|
@ -1554,8 +1586,9 @@ void sftpProtocol::copy(const KUrl &src, const KUrl &dest, int permissions, KIO:
|
||||||
// On success or errorcode < 0, emit the finished signal and
|
// On success or errorcode < 0, emit the finished signal and
|
||||||
// send a warning message to the client if errorCode < 0.
|
// send a warning message to the client if errorCode < 0.
|
||||||
if (cs == sftpProtocol::Success || errorCode < 0) {
|
if (cs == sftpProtocol::Success || errorCode < 0) {
|
||||||
if (errorCode < 0)
|
if (errorCode < 0) {
|
||||||
sftpSendWarning(errorCode, sCopyFile);
|
sftpSendWarning(errorCode, sCopyFile);
|
||||||
|
}
|
||||||
finished();
|
finished();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1599,16 +1632,18 @@ sftpProtocol::StatusCode sftpProtocol::sftpCopyGet(const KUrl& url, const QStrin
|
||||||
bResume = canResume( buff.st_size );
|
bResume = canResume( buff.st_size );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bPartExists && !bResume) // get rid of an unwanted ".part" file
|
if (bPartExists && !bResume) { // get rid of an unwanted ".part" file
|
||||||
QFile::remove(sPart);
|
QFile::remove(sPart);
|
||||||
|
}
|
||||||
|
|
||||||
// WABA: Make sure that we keep writing permissions ourselves,
|
// WABA: Make sure that we keep writing permissions ourselves,
|
||||||
// otherwise we can be in for a surprise on NFS.
|
// otherwise we can be in for a surprise on NFS.
|
||||||
mode_t initialMode;
|
mode_t initialMode;
|
||||||
if (permissions != -1)
|
if (permissions != -1) {
|
||||||
initialMode = permissions | S_IWUSR;
|
initialMode = permissions | S_IWUSR;
|
||||||
else
|
} else {
|
||||||
initialMode = 0666;
|
initialMode = 0666;
|
||||||
|
}
|
||||||
|
|
||||||
// open the output file ...
|
// open the output file ...
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
|
@ -1622,8 +1657,7 @@ sftpProtocol::StatusCode sftpProtocol::sftpCopyGet(const KUrl& url, const QStrin
|
||||||
return sftpProtocol::ClientError; // client side error
|
return sftpProtocol::ClientError; // client side error
|
||||||
}
|
}
|
||||||
kDebug(KIO_SFTP_DB) << "resuming at" << offset;
|
kDebug(KIO_SFTP_DB) << "resuming at" << offset;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
fd = KDE::open(dest, O_CREAT | O_TRUNC | O_WRONLY, initialMode);
|
fd = KDE::open(dest, O_CREAT | O_TRUNC | O_WRONLY, initialMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1651,13 +1685,13 @@ sftpProtocol::StatusCode sftpProtocol::sftpCopyGet(const KUrl& url, const QStrin
|
||||||
result = sftpProtocol::ClientError;
|
result = sftpProtocol::ClientError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if (KDE::stat( sPart, &buff ) == 0) { // should a very small ".part" be deleted?
|
||||||
else if (KDE::stat( sPart, &buff ) == 0) { // should a very small ".part" be deleted?
|
|
||||||
const int size = config()->readEntry("MinimumKeepSize", DEFAULT_MINIMUM_KEEP_SIZE);
|
const int size = config()->readEntry("MinimumKeepSize", DEFAULT_MINIMUM_KEEP_SIZE);
|
||||||
if (buff.st_size < size)
|
if (buff.st_size < size) {
|
||||||
QFile::remove(sPart);
|
QFile::remove(sPart);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const QString mtimeStr = metaData("modified");
|
const QString mtimeStr = metaData("modified");
|
||||||
if (!mtimeStr.isEmpty()) {
|
if (!mtimeStr.isEmpty()) {
|
||||||
|
@ -1692,8 +1726,7 @@ sftpProtocol::StatusCode sftpProtocol::sftpCopyPut(const KUrl& url, const QStrin
|
||||||
}
|
}
|
||||||
|
|
||||||
const int fd = KDE::open(sCopyFile, O_RDONLY);
|
const int fd = KDE::open(sCopyFile, O_RDONLY);
|
||||||
if(fd == -1)
|
if (fd == -1) {
|
||||||
{
|
|
||||||
errorCode = ERR_CANNOT_OPEN_FOR_READING;
|
errorCode = ERR_CANNOT_OPEN_FOR_READING;
|
||||||
return sftpProtocol::ClientError;
|
return sftpProtocol::ClientError;
|
||||||
}
|
}
|
||||||
|
@ -1707,7 +1740,8 @@ sftpProtocol::StatusCode sftpProtocol::sftpCopyPut(const KUrl& url, const QStrin
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void sftpProtocol::stat(const KUrl& url) {
|
void sftpProtocol::stat(const KUrl& url)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << url;
|
kDebug(KIO_SFTP_DB) << url;
|
||||||
|
|
||||||
if (!sftpLogin()) {
|
if (!sftpLogin()) {
|
||||||
|
@ -1755,7 +1789,8 @@ void sftpProtocol::stat(const KUrl& url) {
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::mimetype(const KUrl& url){
|
void sftpProtocol::mimetype(const KUrl& url)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << url;
|
kDebug(KIO_SFTP_DB) << url;
|
||||||
|
|
||||||
if (!sftpLogin()) {
|
if (!sftpLogin()) {
|
||||||
|
@ -1769,7 +1804,8 @@ void sftpProtocol::mimetype(const KUrl& url){
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::listDir(const KUrl& url) {
|
void sftpProtocol::listDir(const KUrl& url)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "list directory: " << url;
|
kDebug(KIO_SFTP_DB) << "list directory: " << url;
|
||||||
|
|
||||||
if (!sftpLogin()) {
|
if (!sftpLogin()) {
|
||||||
|
@ -1860,19 +1896,23 @@ void sftpProtocol::listDir(const KUrl& url) {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (dirent->type) {
|
switch (dirent->type) {
|
||||||
case SSH_FILEXFER_TYPE_REGULAR:
|
case SSH_FILEXFER_TYPE_REGULAR: {
|
||||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
||||||
break;
|
break;
|
||||||
case SSH_FILEXFER_TYPE_DIRECTORY:
|
}
|
||||||
|
case SSH_FILEXFER_TYPE_DIRECTORY: {
|
||||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||||
break;
|
break;
|
||||||
case SSH_FILEXFER_TYPE_SYMLINK:
|
}
|
||||||
|
case SSH_FILEXFER_TYPE_SYMLINK: {
|
||||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFLNK);
|
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFLNK);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case SSH_FILEXFER_TYPE_SPECIAL:
|
case SSH_FILEXFER_TYPE_SPECIAL:
|
||||||
case SSH_FILEXFER_TYPE_UNKNOWN:
|
case SSH_FILEXFER_TYPE_UNKNOWN: {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
access = dirent->permissions & 07777;
|
access = dirent->permissions & 07777;
|
||||||
entry.insert(KIO::UDSEntry::UDS_ACCESS, access);
|
entry.insert(KIO::UDSEntry::UDS_ACCESS, access);
|
||||||
|
@ -1907,7 +1947,8 @@ notype:
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::mkdir(const KUrl &url, int permissions) {
|
void sftpProtocol::mkdir(const KUrl &url, int permissions)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "create directory: " << url;
|
kDebug(KIO_SFTP_DB) << "create directory: " << url;
|
||||||
|
|
||||||
if (!sftpLogin()) {
|
if (!sftpLogin()) {
|
||||||
|
@ -1956,7 +1997,8 @@ void sftpProtocol::mkdir(const KUrl &url, int permissions) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::rename(const KUrl& src, const KUrl& dest, KIO::JobFlags flags) {
|
void sftpProtocol::rename(const KUrl& src, const KUrl& dest, KIO::JobFlags flags)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "rename " << src << " to " << dest << flags;
|
kDebug(KIO_SFTP_DB) << "rename " << src << " to " << dest << flags;
|
||||||
|
|
||||||
if (!sftpLogin()) {
|
if (!sftpLogin()) {
|
||||||
|
@ -2001,7 +2043,8 @@ void sftpProtocol::rename(const KUrl& src, const KUrl& dest, KIO::JobFlags flags
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::symlink(const QString &target, const KUrl &dest, KIO::JobFlags flags) {
|
void sftpProtocol::symlink(const QString &target, const KUrl &dest, KIO::JobFlags flags)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "link " << target << "->" << dest
|
kDebug(KIO_SFTP_DB) << "link " << target << "->" << dest
|
||||||
<< ", overwrite = " << (flags & KIO::Overwrite)
|
<< ", overwrite = " << (flags & KIO::Overwrite)
|
||||||
<< ", resume = " << (flags & KIO::Resume);
|
<< ", resume = " << (flags & KIO::Resume);
|
||||||
|
@ -2040,7 +2083,8 @@ void sftpProtocol::symlink(const QString &target, const KUrl &dest, KIO::JobFlag
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::chmod(const KUrl& url, int permissions) {
|
void sftpProtocol::chmod(const KUrl& url, int permissions)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "change permission of " << url << " to " << QString::number(permissions);
|
kDebug(KIO_SFTP_DB) << "change permission of " << url << " to " << QString::number(permissions);
|
||||||
|
|
||||||
if (!sftpLogin()) {
|
if (!sftpLogin()) {
|
||||||
|
@ -2057,7 +2101,8 @@ void sftpProtocol::chmod(const KUrl& url, int permissions) {
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::del(const KUrl &url, bool isfile){
|
void sftpProtocol::del(const KUrl &url, bool isfile)
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "deleting " << (isfile ? "file: " : "directory: ") << url;
|
kDebug(KIO_SFTP_DB) << "deleting " << (isfile ? "file: " : "directory: ") << url;
|
||||||
|
|
||||||
if (!sftpLogin()) {
|
if (!sftpLogin()) {
|
||||||
|
@ -2081,17 +2126,19 @@ void sftpProtocol::del(const KUrl &url, bool isfile){
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sftpProtocol::slave_status() {
|
void sftpProtocol::slave_status()
|
||||||
|
{
|
||||||
kDebug(KIO_SFTP_DB) << "connected to " << mHost << "?: " << mConnected;
|
kDebug(KIO_SFTP_DB) << "connected to " << mHost << "?: " << mConnected;
|
||||||
slaveStatus((mConnected ? mHost : QString()), mConnected);
|
slaveStatus((mConnected ? mHost : QString()), mConnected);
|
||||||
}
|
}
|
||||||
|
|
||||||
sftpProtocol::GetRequest::GetRequest(sftp_file file, sftp_attributes sb, ushort maxPendingRequests)
|
sftpProtocol::GetRequest::GetRequest(sftp_file file, sftp_attributes sb, ushort maxPendingRequests)
|
||||||
:mFile(file), mSb(sb), mMaxPendingRequests(maxPendingRequests) {
|
: mFile(file), mSb(sb), mMaxPendingRequests(maxPendingRequests)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool sftpProtocol::GetRequest::enqueueChunks() {
|
bool sftpProtocol::GetRequest::enqueueChunks()
|
||||||
|
{
|
||||||
sftpProtocol::GetRequest::Request request;
|
sftpProtocol::GetRequest::Request request;
|
||||||
|
|
||||||
kDebug(KIO_SFTP_DB) << "enqueueChunks";
|
kDebug(KIO_SFTP_DB) << "enqueueChunks";
|
||||||
|
@ -2123,8 +2170,8 @@ bool sftpProtocol::GetRequest::enqueueChunks() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sftpProtocol::GetRequest::readChunks(QByteArray &data) {
|
int sftpProtocol::GetRequest::readChunks(QByteArray &data)
|
||||||
|
{
|
||||||
int totalRead = 0;
|
int totalRead = 0;
|
||||||
ssize_t bytesread = 0;
|
ssize_t bytesread = 0;
|
||||||
|
|
||||||
|
@ -2190,7 +2237,8 @@ int sftpProtocol::GetRequest::readChunks(QByteArray &data) {
|
||||||
return totalRead;
|
return totalRead;
|
||||||
}
|
}
|
||||||
|
|
||||||
sftpProtocol::GetRequest::~GetRequest() {
|
sftpProtocol::GetRequest::~GetRequest()
|
||||||
|
{
|
||||||
sftpProtocol::GetRequest::Request request;
|
sftpProtocol::GetRequest::Request request;
|
||||||
char buf[MAX_XFER_BUF_SIZE];
|
char buf[MAX_XFER_BUF_SIZE];
|
||||||
|
|
||||||
|
@ -2235,13 +2283,15 @@ bool sftpProtocol::sftpLogin()
|
||||||
void sftpProtocol::sftpSendWarning(int errorCode, const QString& url)
|
void sftpProtocol::sftpSendWarning(int errorCode, const QString& url)
|
||||||
{
|
{
|
||||||
switch (errorCode) {
|
switch (errorCode) {
|
||||||
case -1:
|
case -1: {
|
||||||
warning(i18n( "Could not change permissions for\n%1", url));
|
warning(i18n( "Could not change permissions for\n%1", url));
|
||||||
break;
|
break;
|
||||||
default:
|
}
|
||||||
|
default: {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void sftpProtocol::clearPubKeyAuthInfo()
|
void sftpProtocol::clearPubKeyAuthInfo()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue