Commit graph

239 commits

Author SHA1 Message Date
Ivailo Monev
c18bacba12 kio: make KIO::UDSEntry::UDS_URL required/mandatory
if the slaves do not know what URL is being stat()-ed, listed, etc. then
what? this may make the URL different than the one originally requested (as
it should be) in case of redirection(s) for example

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-31 16:30:03 +03:00
Ivailo Monev
1cdb2c631f kioslave: fix possible crash in case the FTP mode string is invalid
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-27 20:40:41 +03:00
Ivailo Monev
11b3645f90 kioslave: implement anonymous mode for curl slave in ftp mode
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-18 22:48:53 +03:00
Ivailo Monev
a8ad8d46de kioslave: update comment in curl slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-12 12:35:04 +03:00
Ivailo Monev
feb9e9405c kioslave: map CURLE_RANGE_ERROR to KIO::ERR_CANNOT_RESUME
it is essentially the same - failure to resume transfer

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-12 09:16:50 +03:00
Ivailo Monev
27c58cb772 kioslave: set the CURLOPT_NOBODY option to true for stat() in curl slave
I know one such server tho I do not care about it now so I am putting the
option back in place

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-12 08:49:50 +03:00
Ivailo Monev
67d44cd10f kioslave: map CURLE_UPLOAD_FAILED to KIO::ERR_COULD_NOT_WRITE
as the documentation in CURLE_UPLOAD_FAILED claims - it is usually denied
STORE command and is as close to KIO::ERR_COULD_NOT_WRITE as it gets,
previously KIO::ERR_COULD_NOT_CONNECT was returned for such case

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-12 07:39:49 +03:00
Ivailo Monev
972b231e4a kioslave: try authorizing from cache first in curl slave
so that it does not look like a brute-force attack to servers (multiple
jobs are started for thumbnails and such), less round-trips too

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-05 05:43:17 +03:00
Ivailo Monev
559411bd09 generic: optimize MIME type detection
KRun already had such optimization in place for example, that makes the
file slave kinda special tho as it will determine MIME type only from mode
but the goal is to not even spin a job and a slave for local files

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-04 21:26:18 +03:00
Ivailo Monev
817b7a4aab kdecore: rework KMimeType
more accurate probing then before, notably by probing the file content
from the file slave (only the name was checked before because the
filepath was not a full path in some cases and the file could not be
open)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-04 20:14:53 +03:00
Ivailo Monev
ee4c56ad5e kioslave: use the full path to determine the MIME type in file slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-04 04:14:15 +03:00
Ivailo Monev
f34328e051 kioslave: update comment in file slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-04 04:08:44 +03:00
Ivailo Monev
6820e4e63c kioslave: different take on MIME type determination in curl slave
because FTP and SFTP are special about it so is the MIME type
determination

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-04 04:03:02 +03:00
Ivailo Monev
d1fd7fdab6 kioslave: curl slave optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-03 23:14:51 +03:00
Ivailo Monev
c763b1266a kioslave: remove bits used during curl slave rework
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-03 22:32:01 +03:00
Ivailo Monev
c560428d0d kio: remove KIO::SlaveBase compat bits
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-03 07:30:00 +03:00
Ivailo Monev
e273741fdb kio: drop MIME type feature of slaves
the specialized one, stat() does it now because emitting MIME type while
also emitting data (in or out) interrupts the data flow

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-03 05:26:56 +03:00
Ivailo Monev
b5b73968c3 kioslave: initialize variable in FileProtocol::put()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-03 01:06:22 +03:00
Ivailo Monev
5cf8aa96b9 kio: rename Charsets metadata to Charset
because in configs (e.g. written by dolphin) it is "Charset", less
confusion

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-02 22:19:07 +03:00
Ivailo Monev
97e7649bd3 kio: drop KRemoteEncoding class
can be done by slaves via custom QTextConverter or whatever, the
converter is using Charset metadata and the KRemoteEncoding class is not
required outside the slaves

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-02 21:47:54 +03:00
Ivailo Monev
1a5f247e86 kio: remove redundant KIO::SlaveBase methods
assume there is no metadata if empty, otherwise it is 2x the trip - one
time to check and one time to get the metadata

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-02 21:27:30 +03:00
Ivailo Monev
77d32f4169 kio: always calculate the speed on fixed 1sec interval based on the difference in processed size
because there are quircks such as slaves emitting total and/or processed
size way too often, the total size may not even be known at the start of
the get (chunked HTTP(s) transfer)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-01 06:15:31 +03:00
Ivailo Monev
d4fb98cc28 generic: KIO protocols classification optimization
unfortunate as it is the class for getting protocol information is not
part of kio library so generic..

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-04-14 09:54:36 +03:00
Ivailo Monev
e879c440fb kioslave: adjust to Katie changes
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-29 15:26:25 +02:00
Ivailo Monev
08a76dd091 kioslave: typo
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-29 10:05:24 +02:00
Ivailo Monev
b43339cf19 kio: drop proxy support
because curl internally checks the environment for proxy-related variables
it is redundant to duplicate that feature, that however is possible due to
the rewrite of the ftp, sftp and http slaves that I did. some other changes
were made while at it such enable automatic resuming by default, if KIO
slaves cannot resume or do not resume transfers that is different thing

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-29 09:54:38 +02:00
Ivailo Monev
599c76018a kioslave: do not redirect to the original URL from curl slave
now that QHostInfo resolves in a more relaxed way (without NI_NAMEREQD
flag) it can happen that the hostname of the result is the address
itself

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-29 06:07:37 +02:00
Ivailo Monev
cdf208de0a kioslave: branch to not log warning in curl slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-23 03:41:59 +02:00
Ivailo Monev
31b4f47a7d kioslave: ftp line parsing optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-22 12:07:13 +02:00
Ivailo Monev
fe050791bf kioslave: correct warning message in curl slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-22 10:57:30 +02:00
Ivailo Monev
72fc471eb7 kioslave: map 416 and 501 HTTP status to KIO error codes
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-22 02:31:42 +02:00
Ivailo Monev
72faa00809 kioslave: curl slave review
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-21 18:46:39 +02:00
Ivailo Monev
2fb22a0840 kioslave: much simpler curlKeyCallback() implementation
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-21 08:14:13 +02:00
Ivailo Monev
78dcdcfd18 kioslave: mark unused curlKeyCallback() function arguments as such
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-21 07:46:00 +02:00
Ivailo Monev
b8a3129a1a kioslave: implement option to accept or reject keys from curl slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-21 07:42:42 +02:00
Ivailo Monev
24c871eb30 kioslave: set CURLOPT_SSH_AUTH_TYPES from curl slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-21 06:52:45 +02:00
Ivailo Monev
b76733954b kioslave: use only one variable for ftp and sftp in curl slave
no sftp specific code yet, I was expecting I will have to write some tho

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-21 00:51:11 +02:00
Ivailo Monev
21e5f5c2ab kioslave: ftp line parsing optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-20 23:58:18 +02:00
Ivailo Monev
e8237a61ac kioslave: emit upload progress for put action from curl slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-20 23:47:49 +02:00
Ivailo Monev
04fcbb5f05 kioslave: do not emit canResume() signal for put jobs from curl slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-20 08:23:22 +02:00
Ivailo Monev
c6d390bb5f kioslave: do not rely on servers to include "." and ".." entries when listing in curl slave
demo.wftpserver.com is one of those, the hack is only for the root
directory anyway and was done to even greater extend by the old ftp
slave

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-20 03:40:30 +02:00
Ivailo Monev
303ef92157 kioslave: pass the unmodified URL to CurlProtocol::performCurl()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-20 03:31:08 +02:00
Ivailo Monev
d49aa1d382 kioslave: enable moving for ftp and sftp protocols
with the other functionality in place it works now

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-20 00:25:55 +02:00
Ivailo Monev
79273ab93a kioslave: implement modification time for curl slave in ftp/sftp mode
totally made up (due to lack of info about the actual date and time) but
required for sorting and such (e.g. by classes using KFileItem and
KDirModel)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-20 00:17:06 +02:00
Ivailo Monev
7d66339e7c kioslave: set permissions of the file on put from curl slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-19 23:07:32 +02:00
Ivailo Monev
aeedbca8ed kioslave: basic put for curl slave
tested only on ftp with small files

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-19 22:53:31 +02:00
Ivailo Monev
a663155801 kioslave: map CURLE_REMOTE_ACCESS_DENIED to KIO::ERR_ACCESS_DENIED in curl slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-19 22:37:47 +02:00
Ivailo Monev
485f5add57 kioslave: curl slave review
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-19 22:04:36 +02:00
Ivailo Monev
b266599a69 kioslave: curl slave line parser optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-19 00:17:27 +02:00
Ivailo Monev
a2c0f0f006 kioslave: const-ify curl slave slot arguments
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-19 00:14:28 +02:00