Commit graph

3915 commits

Author SHA1 Message Date
Ivailo Monev
2310927e2d kdecore: reserve space for the protocols in KProtocolInfoFactory::protocols()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-01-01 03:34:52 +02:00
Ivailo Monev
f6b8759d51 kdecore: remove unused KProtocolInfo::isFilterProtocol() methods
opposite of KProtocolManager::isSourceProtocol()

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-01-01 03:27:41 +02:00
Ivailo Monev
bb23c25fb2 kdecore: format and indent kprotocolinfo source and header files
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-01-01 03:23:31 +02:00
Ivailo Monev
4cb8afa14d generic: remove unused KIO protocol input/output information
KIO slaves are either helper (e.g. vnc/rdp), not source (e.g. thumbnail
which is also helper in a way) or have listing capability (e.g. file
which is filesystem type)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-01-01 02:46:51 +02:00
Ivailo Monev
5e7a19f6f7 generic: store KIO slaves listing capability as boolean
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-01-01 00:57:27 +02:00
Ivailo Monev
f53360be62 kdecore: remove unused KProtocolInfo::capabilities() getter
no .protocol file specifies Capabilities and there are
KProtocolManager::supportsListing(), KProtocolManager::supportsReading(),
etc. capability getters (altought reading multiple config entries is
sub-optimal)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-01-01 00:39:34 +02:00
Ivailo Monev
c9ee5d3195 kio: add note about a gap in the HTTP RFC
HTTP is a one-way street, do I really want to keep a server up until a file
transfer is finished tho (not in the case of KDirShare - the directory may
be unshared because the system is about to be rebooted or shutdown)?

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-29 08:51:56 +02:00
Ivailo Monev
4c7db025ff kdeui: someone's typos
why do KIconLoader methods take two size arguments overriding each other?
could've used negative values for KIconLoader::Group. I guess I will have
to fix someone's mess at some point

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-28 15:51:11 +02:00
Ivailo Monev
e7c46ec677 kimgio: add note about the mask in ico plugin
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-28 11:02:07 +02:00
Ivailo Monev
873f109a57 kimgio: const-ify bmpimagemasksize in ICOHandler::write()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 20:30:22 +02:00
Ivailo Monev
7cfaf11ad3 kio: implement HEAD method for KHTTP
kinda not worth it tho - neither browsers nor KIO use it actually, maybe
optimization for bots and web crawlers

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 20:29:45 +02:00
Ivailo Monev
ea22f815a4 kimgio: write mask from ico plugin
some browsers for example do not load ICO images without mask apparently,
the mask just makes the image bigger in (data) size tho - the actual image
data is the same (32-bit depth BGRA)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 19:33:52 +02:00
Ivailo Monev
aaea32c10c kimgio: claim write support only if the format matches and the device is writable
for read capabilities either the format must match or the format header but
for writing the format must be exact match

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 19:10:39 +02:00
Ivailo Monev
45db837f12 kio: initialize KHTTPPrivate::m_filepool member
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 18:53:52 +02:00
Ivailo Monev
f5fa2f2fd6 kio: thread the sending of files from KHTTP
for small files it may be overkill but for large files it is a huge
difference

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 01:18:37 +02:00
Ivailo Monev
0806e846eb kio: insert Connection header from HTTPHeaders() function
required if not supported by the server, for reference:
https://www.rfc-editor.org/rfc/rfc9112#name-persistence

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 23:13:02 +02:00
Ivailo Monev
823c98360d kio: handle content exceptions in KHTTP
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 22:06:19 +02:00
Ivailo Monev
f6ef1e42f3 kio: insert Last-Modified header when serving files from KHTTP
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 21:49:11 +02:00
Ivailo Monev
b1522a35dd kio: update HTTP status codes from RFC 9110
for reference:
https://www.rfc-editor.org/rfc/rfc9110.html#name-changes-from-rfc-7231

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 20:51:41 +02:00
Ivailo Monev
9c3873613c kio: insert Accept-Ranges header from HTTPHeaders() function
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 20:26:04 +02:00
Ivailo Monev
20e8594122 kio: insert Allow header from HTTPHeaders() function
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 19:41:44 +02:00
Ivailo Monev
5c7bcd1be4 kio: remove now unused QMutex header inclusion in khttp source file
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 19:40:45 +02:00
Ivailo Monev
8fcd182e2f kio: const-ify the port argument of KHTTP::start()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 16:35:34 +02:00
Ivailo Monev
a9c96f297b kio: multi-connection safe KHTTP server stop
bonus points for not using mutex

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 03:58:28 +02:00
Ivailo Monev
529ef6912b kio: mark the KHTTPPrivate reimplementation as final
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 03:21:22 +02:00
Ivailo Monev
4f01c0c369 kio: typo
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 03:20:52 +02:00
Ivailo Monev
9446f976e7 kio: thread-safe KHTTP server stop
due to QTcpServer deleting clients on close either polling for new
connection has to be done (which will slow down the server a lot) or the
server has to be mutex-locked on per-client basis

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 03:18:43 +02:00
Ivailo Monev
55432743c0 kutils: assume that KArchive::list() filtered the entries when recursing
the conditionals were there to maybe match with and without trailing slash
but KArchive::list() works correctly for the fomats that do not add
trailing slash to directories aswell

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 23:33:12 +02:00
Ivailo Monev
0cbc869f50 kio: convert the version to uppercase for the sake of comparison
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 21:30:17 +02:00
Ivailo Monev
496c1e3226 kio: send 505 on non-HTTP/1.1 version from KHTTP
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 21:29:09 +02:00
Ivailo Monev
362b80c063 kio: send 405 on non-GET method from KHTTP
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 21:16:37 +02:00
Ivailo Monev
8731dfa323 kio: add the HTTP status code to the content in HTTPStatusToContent() function
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 20:51:39 +02:00
Ivailo Monev
6b61bac251 kio: KHTTP optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 20:33:55 +02:00
Ivailo Monev
907782ff6d kio: KHTTP::respond() documentation update
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 18:55:17 +02:00
Ivailo Monev
931a05dbb7 kio: do not assume server does not contain space characters in HTTPHeaders() function
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 18:44:18 +02:00
Ivailo Monev
046d5caaee kio: new KHTTP::setServerID() setter
because authentication is done before calling the virtual KHTTP::responed()
method which means that Server header set in the headers from it would have
no effect

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 18:33:02 +02:00
Ivailo Monev
11e4eacc8e kio: pass authentication requirement to KHTTPPrivate::writeResponse()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 18:14:57 +02:00
Ivailo Monev
3dbe3173be kio: drop support for custom authentication message, de-duplicate code
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 18:05:47 +02:00
Ivailo Monev
9e0707ff8b kio: reject large client payloads in KHTTP
for reference:
https://datatracker.ietf.org/doc/html/rfc7230#section-9.3

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 17:46:39 +02:00
Ivailo Monev
27caa4c394 kdecore: update reference to KHTTP debug area
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 16:46:15 +02:00
Ivailo Monev
1f60123bd7 kutils: check if the entry is directory as fallback when recursing in KArchive::remove() and KArchive::extract()
for some formats (such as ISO 9660 images) the directories do not end with
trailing slash

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 06:44:59 +02:00
Ivailo Monev
dc5aa31eca kio: KHTTP dcoumentation update
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 06:26:41 +02:00
Ivailo Monev
d51e0ec201 kio: do not assume the authentication message is non-empty in KHTTP
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 06:19:21 +02:00
Ivailo Monev
59567864f0 kio: translate the error in KHTTP::setAuthenticate()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 05:16:44 +02:00
Ivailo Monev
969ddd830f kutils: rewrite KHTTP and move it to kio library
same functionality but without extra dependencies and better throughput

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 04:59:18 +02:00
Ivailo Monev
0c2fa57bdd kutils: group structs and typedefs documentation
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 13:24:47 +02:00
Ivailo Monev
efa445c361 kutils: mark some KArchivePrivate methods as const
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 13:15:45 +02:00
Ivailo Monev
0bc98740e0 kutils: error string correction
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 13:13:14 +02:00
Ivailo Monev
5e4e0c83e2 kutils: minor KArchive documentation correction
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 13:03:20 +02:00
Ivailo Monev
c29fc4dca1 kutils: test KCompressor and KDecompressor with empty data
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 12:59:19 +02:00