| Summary: | Plasma 6 ignores proxy configuration for FTP protocol | ||
|---|---|---|---|
| Product: | [Applications] dolphin | Reporter: | Rafael Linux User <rafael.linux.user> |
| Component: | general | Assignee: | Dolphin Bug Assignee <dolphin-bugs-null> |
| Status: | REPORTED --- | ||
| Severity: | major | CC: | dolphin-bugs-null, meven29, nicolas.fella, rafael.linux.user |
| Priority: | NOR | Keywords: | regression |
| Version First Reported In: | 23.04.2 | ||
| Target Milestone: | --- | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: |
PAC file directives
Errors showed when trying to access remote folders |
||
|
Description
Rafael Linux User
2023-11-16 09:05:18 UTC
> Dolphin crashes and is unable to access the local FTP paths (the same happens with Krusader Please provide a crash trace, that will be extremely useful to find the issue origin. There should be a drkonqi notification to help you do that. Otherwise you can follow you distro steps https://en.opensuse.org/openSUSE:Bugreport_application_crashed#Install_-debuginfo_Packages The issue is more likely to be in KIO Framework that handles the ftp implementation. > KDE Plasma Version: 5.27.5 > KDE Frameworks Version: 5.107.0 If you have the chance to test with a live iso with Plasma 6, that would be interesting. I have again done a more extensive test on this, which is why I have changed the title of this thread. We started from a pre-Plasma 6 version of Tumbleweed where accessing folders on intranet servers with the FTP, FISH and SMB protocols (on a Windows domain) worked fine on an intranet with an HTTP proxy that requires a username and password. After upgrading to any version of Plasma 6, none of the protocols work. I noticed that Dolphin, on the first attempt to access an FTP service after upgrading, asked for the proxy username and password, when in fact it should NOT ask for that information after parsing the request if it uses the PAC file. In other words, Plasma is now ignoring the directives in the PAC file (attached). I launched Dolphin from console, and attached here error showed while trying to reach any of the servers folders using FTP, FISH or SMB. Created attachment 169361 [details]
PAC file directives
Basically, the PAC file says "only use proxy for http protocol" (so no for FTP, FISH or SMB)
Created attachment 169362 [details]
Errors showed when trying to access remote folders
I don't attach a "crash" file cause basically Dolphin doesn't crash, simply doesn't work like before upgrading. > Dolphin shows an unexpected error, can't access to the FTP path. Console shows these messages:
(process:13253): GLib-CRITICAL **: 15:12:52.440: g_uri_get_scheme: assertion 'uri != NULL' failed
(process:13253): GLib-CRITICAL **: 15:12:52.440: g_uri_get_scheme: assertion 'uri != NULL' failed
(process:13253): GLib-CRITICAL **: 15:12:52.440: g_str_has_prefix: assertion 'str != NULL' failed
(process:13253): GLib-CRITICAL **: 15:12:52.440: g_uri_get_scheme: assertion 'uri != NULL' failed
(process:13253): GLib-CRITICAL **: 15:12:52.440: g_str_has_prefix: assertion 'str != NULL' failed
(process:13253): GLib-CRITICAL **: 15:12:52.440: g_uri_get_scheme: assertion 'uri != NULL' failed
(process:13253): GLib-CRITICAL **: 15:12:52.440: g_str_has_prefix: assertion 'str != NULL' failed
(process:13253): GLib-CRITICAL **: 15:12:52.440: g_uri_to_string: assertion 'uri != NULL' failed
This looks like libproxy is crashing, so there's a bug in libproxy and/or your configuration is not valid.
IMHO, I think we can rule out my system configuration, since they are two different computers, on the same network, and that configuration I've been using for years only fails when I update KDE. I found some related issue at https://codereview.qt-project.org/c/qt/qtbase/+/494754 And I warned about this issue in 2021 ... no one ask about. No priority, I guess. https://bugs.kde.org/show_bug.cgi?id=445272 Even I wrote in another thread about with or without using PAC files, when trying to download plasmoids, new themes or any other “downloadable” (I suspect using FTP protocol) packages from Plasma settings menus, it simply fails, cause maybe Plasma try to access to proxy without authentication (and it’s required). Can you attach your .config/kioslaverc file? (In reply to Nicolas Fella from comment #9) > Can you attach your .config/kioslaverc file? Of course. I changed to publish here user/domain and path to PAC file for privacy, but they are correct. AutoResume=true ConnectTimeout=20 MarkPartial=true ProxyConnectTimeout=10 ProxyUrlDisplayFlags=3 ReadTimeout=15 ResponseTimeout=600 [Browser Settings/SMBro] Password=0H@0GA0H@0AO0I50F>0F>0F:0F= User=1234@intranet [Proxy Settings] NoProxyFor=NO_PROXY Proxy Config Script=/home/myuser/proxy_PAC_configuracion.pac ProxyType=2 ReversedException=false ftpProxy= httpProxy=http_proxy httpsProxy=https_proxy socksProxy= ----------------- Now that I see this file content, I should add that every time I access an SMB folder in the domain, it forces me to type the user as "1234@intranet", although by default only "1234" appears in the user/password window that appears when trying to access a shared SMB folder. A couple of years ago, that wasn't the case. There was no need to enter the domain. Since some change, it forces me to try "1234@intranet" or "intranet\1234". If you need more info, please, tell it to me. What happens when you replace /home/myuser/proxy_PAC_configuracion.pac with file:///home/myuser/proxy_PAC_configuracion.pac in the UI (or the config file directly)? Before answering the result of the test you ask me, I have verified what is different between the "kioslaverc" files in a "Plasma pre-6" installation (to call it somehow) and "Plasma 6" (I don't know if it is a certain time or a certain version of Plasma 6 when the problem appears). In that file, there are only two lines that change: ProxyConnectTimeout=10 (line that doesn't appear in Plasma pre-6) ftpProxy=NO_PROXY About ftpProxy value, seems no difference of using NO_PROXY value or not. In Plasma pre-6, value is EMPTY and works. In Plasma 6, default value is NO_PROXY. In Plasma 6, if value is EMPTY then Dolphin shows "Can't connect to host 10.162.0.46: Invalid proxy type for this operaton" when trying reach FTP (I insist, local FTP servers in our intranet) and Dolphin shows "Canceled" when trying to access remote FTP. Regarding changing the value of "Proxy Config Script", there has been no success after changing the value, logging out and logging back in. Dolphin still behaves the same. Moreover, if I make the change in the Plasma proxy configurator, apply the changes, and open the Plasma proxy configurator again, it doesn't save the change!!! (it probably doesn't recognise the "file" URL as correct). Also, I was surprised that if I make the change in the "kioslaverc" file as I had to do because of the problem I just mentioned, and I open the Plasma proxy configurator, it still shows the correct path "/home/...". !!. It is as if that file is not the one that modifies the Plasma proxy configurator. In any case, after modifying it by hand, logging out, etc, nothing has changed, the problem is still the same. I (In reply to Nicolas Fella from comment #11) > What happens when you replace /home/myuser/proxy_PAC_configuracion.pac with > file:///home/myuser/proxy_PAC_configuracion.pac in the UI (or the config > file directly)? I'm asking because libproxy, the library that reads the kioslaverc file, doesn't seem to correctly handle the case of a path instead of a URL in there. That would explain why configuring PAC URLs wouldn't work. See https://github.com/libproxy/libproxy/issues/318 As of today, January 2025, the problem that appeared with Plasma 6 is still unresolved, and I have to use the PCMan file manager to access FTP without using the proxy due to what has already been explained in this thread. When I use the PAC file you attached and run "kioclient ls ftp://ftp.slackware.com" no proxy is used, which seems to be what you expect? Exactly. The PAC file rules are telling you NOT to use the proxy for the FTP protocol. Specifically, they are telling you "use the proxy exclusively with the HTTP protocol." Can you please 1) replace .config/kioslaverc with [Proxy Settings] Proxy Config Script=file:///home/nico/test.pac ProxyType=2 and adjust the URL to your PAC file 2) run G_MESSAGES_DEBUG=all QT_LOGGING_RULES="kf.kio.workers.ftp.debug=true" kioclient ls ftp://ftp.slackware.com and attach the output? My previous [Proxy Settings] content as stored by Plasma in kioslaverc: [Proxy Settings] AuthMode=1 NoProxyFor=NO_PROXY Proxy Config Script=/home/myuser/Configuraciones/proxy_PAC_configuracion.pac ProxyType=2 ReversedException=false ftpProxy= httpProxy=http_proxy httpsProxy=https_proxy socksProxy= So I simply added "file:/" to the path. Before reading the output of the command, you should keep something important in mind: The FTP servers I always access are LOCAL. From our LAN, there is no access to external servers, which is why, before executing the command, I know it will fail. ---------- And running the command ------------- G_MESSAGES_DEBUG=all QT_LOGGING_RULES="kf.kio.workers.ftp.debug=true" kioclient ls ftp://ftp.slackware.com -------- OUTPUTS ---------------- kf.kio.workers.ftp: Starting kf.kio.workers.ftp: "ftp.slackware.com" port= 0 user= "" (process:66001): GLib-GIO-DEBUG: 15:22:56.921: Using cross-namespace EXTERNAL authentication (this will deadlock if server is GDBus < 2.73.3) (process:66001): GLib-GIO-DEBUG: 15:22:56.923: _g_io_module_get_default: Found default implementation gvfs (GDaemonVfs) for ‘gio-vfs’ (process:66001): pxbackend-DEBUG: 15:22:56.923: Active config plugins: (process:66001): pxbackend-DEBUG: 15:22:56.923: - config-env (process:66001): pxbackend-DEBUG: 15:22:56.923: - config-xdp (process:66001): pxbackend-DEBUG: 15:22:56.923: - config-kde (process:66001): pxbackend-DEBUG: 15:22:56.923: - config-gnome (process:66001): pxbackend-DEBUG: 15:22:56.923: - config-sysconfig (process:66001): GLib-GIO-DEBUG: 15:22:56.924: Failed to initialize portal (GNetworkMonitorPortal) for gio-network-monitor: Not using portals (process:66001): GLib-GIO-DEBUG: 15:22:56.924: Using cross-namespace EXTERNAL authentication (this will deadlock if server is GDBus < 2.73.3) (process:66001): GLib-GIO-DEBUG: 15:22:56.925: _g_io_module_get_default: Found default implementation networkmanager (GNetworkMonitorNM) for ‘gio-network-monitor’ (process:66001): pxbackend-DEBUG: 15:22:56.925: px_manager_constructed: Up and running (process:66001): pxbackend-DEBUG: 15:22:56.925: px_manager_get_proxies_sync: url=ftp://ftp.slackware.com:0 online=1 (process:66001): pxbackend-DEBUG: 15:22:56.925: px_manager_get_proxies_sync: Config[0] = (process:66001): pxbackend-DEBUG: 15:22:56.925: px_manager_get_proxies_sync: Config[1] = pac+file://home/myuser/Configuraciones/proxy_PAC_configuracion.pac (process:66001): pxbackend-DEBUG: 15:22:56.926: px_manager_pac_download: Could not download data: URL using bad/illegal format or missing URL (process:66001): pxbackend-WARNING **: 15:22:56.926: px_manager_expand_pac: Unable to download PAC from pac+file://home/myuser/Configuraciones/proxy_PAC_configuracion.pac while online = 1! (process:66001): pxbackend-DEBUG: 15:22:56.926: px_manager_get_proxies_sync: Proxy[0] = direct:// kf.kio.workers.ftp: proxy urls: QList() kf.kio.workers.ftp: QUrl("ftp://ftp.slackware.com") kf.kio.workers.ftp: host= "ftp.slackware.com" , port= 0 , user= "" password= [password hidden] (process:66001): pxbackend-DEBUG: 15:22:56.965: px_manager_get_proxies_sync: url=tcp://ftp.slackware.com:21 online=1 (process:66001): pxbackend-DEBUG: 15:22:56.965: px_manager_get_proxies_sync: Config[0] = http://myproxyuser:myproxypassword.162.0.10:3128 (process:66001): pxbackend-DEBUG: 15:22:56.965: px_manager_get_proxies_sync: Config[1] = pac+file://home/myuser/Configuraciones/proxy_PAC_configuracion.pac (process:66001): pxbackend-DEBUG: 15:22:56.965: px_manager_pac_download: Could not download data: URL using bad/illegal format or missing URL (process:66001): pxbackend-WARNING **: 15:22:56.965: px_manager_expand_pac: Unable to download PAC from pac+file://home/myuser/Configuraciones/proxy_PAC_configuracion.pac while online = 1! (process:66001): pxbackend-DEBUG: 15:22:56.965: px_manager_get_proxies_sync: Proxy[0] = http://myproxyuser:myproxypassword.162.0.10:3128 kf.kio.workers.ftp: > 220- kf.kio.workers.ftp: > 220---------------------------------------------------------------------------- kf.kio.workers.ftp: > 220- R S Y N C . O S U O S L . O R G kf.kio.workers.ftp: > 220- Oregon State University kf.kio.workers.ftp: > 220- Open Source Lab kf.kio.workers.ftp: > 220- kf.kio.workers.ftp: > 220- Unauthorized use is prohibited - violators will be prosecuted kf.kio.workers.ftp: > 220---------------------------------------------------------------------------- kf.kio.workers.ftp: > 220- kf.kio.workers.ftp: > 220- For more information about the OSL visit: kf.kio.workers.ftp: > 220- http://osuosl.org/services/hosting kf.kio.workers.ftp: > 220- kf.kio.workers.ftp: > 220- This host is the home to the primary archives of several kf.kio.workers.ftp: > 220- projects. We would prefer that only primary/secondary kf.kio.workers.ftp: > 220- mirrors use this service. Thanks! kf.kio.workers.ftp: > 220- kf.kio.workers.ftp: > 220---------------------------------------------------------------------------- kf.kio.workers.ftp: > 220- kf.kio.workers.ftp: > 220 kf.kio.workers.ftp: resp> 220 kf.kio.workers.ftp: Sending Login name: "USER anonymous" kf.kio.workers.ftp: > 331 Please specify the password. kf.kio.workers.ftp: resp> 331 Please specify the password. kf.kio.workers.ftp: Sending Login password: [protected] kf.kio.workers.ftp: > 230 Login successful. kf.kio.workers.ftp: resp> 230 Login successful. kf.kio.workers.ftp: Login OK kf.kio.workers.ftp: > 215 UNIX Type: L8 kf.kio.workers.ftp: resp> 215 UNIX Type: L8 kf.kio.workers.ftp: Searching for pwd kf.kio.workers.ftp: > 257 "/" is the current directory kf.kio.workers.ftp: resp> 257 "/" is the current directory kf.kio.workers.ftp: Initial path set to: "/" kf.kio.workers.ftp: REDIRECTION to QUrl("ftp://ftp.slackware.com/") kf.kio.workers.ftp: QUrl("ftp://ftp.slackware.com/") kf.kio.workers.ftp: hunting for path "/" kf.kio.workers.ftp: want "/" has "/" kf.kio.workers.ftp: want I has kf.kio.workers.ftp: > 200 Switching to Binary mode. kf.kio.workers.ftp: resp> 200 Switching to Binary mode. kf.kio.workers.ftp: > 500 Illegal PORT command. kf.kio.workers.ftp: resp> 500 Illegal PORT command. kf.kio.workers.ftp: want I has I kf.kio.workers.ftp: > 500 Illegal PORT command. kf.kio.workers.ftp: resp> 500 Illegal PORT command. kf.kio.workers.ftp: want I has I kf.kio.workers.ftp: > 500 Illegal PORT command. kf.kio.workers.ftp: resp> 500 Illegal PORT command. kf.kio.workers.ftp: Can't open for listing kf.kio.workers.ftp: > 550 Could not get file size. kf.kio.workers.ftp: resp> 550 Could not get file size. kioclient: No se ha podido entrar en la carpeta /. kf.kio.workers.ftp: Done kf.kio.workers.ftp: kf.kio.workers.ftp: m_bLoggedOn= true m_bBusy= false myuser ~ .config kf.kio.workers.ftp: > 221 Goodbye. 1 kf.kio.workers.ftp: resp> 221 Goodbye. ---------------- While replacing the sensitive information before publishing it, I made a mistake, and where it says http://myproxyuser:myproxypassword.162.0.10:3128 you should interpret it as http://myproxyuser:myproxypassword@proxyip:proxyport and all that info is the one working before Plasma 6 issues with proxies > (process:66001): pxbackend-DEBUG: 15:22:56.965: px_manager_get_proxies_sync: Config[1] = pac+file://home/myuser/Configuraciones/proxy_PAC_configuracion.pac
(process:66001): pxbackend-DEBUG: 15:22:56.965: px_manager_pac_download: Could not download data: URL using bad/illegal format or missing URL
Note that it must be file:///home/user/... with three /
> kf.kio.workers.ftp: proxy urls: QList()
That's what I expected to see. It means that the KIO FTP worker is not using a proxy, which is what you want. Although in this case it's because your configuration is not a valid URL and thus libproxy doesn't read it
I'm sorry . Fixed: >G_MESSAGES_DEBUG=all QT_LOGGING_RULES="kf.kio.workers.ftp.debug=true" kioclient ls ftp://ftp.slackware.com kf.kio.workers.ftp: Starting kf.kio.workers.ftp: "ftp.slackware.com" port= 0 user= "" (process:74936): GLib-GIO-DEBUG: 15:55:32.091: Using cross-namespace EXTERNAL authentication (this will deadlock if server is GDBus < 2.73.3) (process:74936): GLib-GIO-DEBUG: 15:55:32.093: _g_io_module_get_default: Found default implementation gvfs (GDaemonVfs) for ‘gio-vfs’ (process:74936): pxbackend-DEBUG: 15:55:32.093: Active config plugins: (process:74936): pxbackend-DEBUG: 15:55:32.093: - config-env (process:74936): pxbackend-DEBUG: 15:55:32.093: - config-xdp (process:74936): pxbackend-DEBUG: 15:55:32.093: - config-kde (process:74936): pxbackend-DEBUG: 15:55:32.093: - config-gnome (process:74936): pxbackend-DEBUG: 15:55:32.093: - config-sysconfig (process:74936): GLib-GIO-DEBUG: 15:55:32.094: Failed to initialize portal (GNetworkMonitorPortal) for gio-network-monitor: Not using portals (process:74936): GLib-GIO-DEBUG: 15:55:32.094: Using cross-namespace EXTERNAL authentication (this will deadlock if server is GDBus < 2.73.3) (process:74936): GLib-GIO-DEBUG: 15:55:32.095: _g_io_module_get_default: Found default implementation networkmanager (GNetworkMonitorNM) for ‘gio-network-monitor’ (process:74936): pxbackend-DEBUG: 15:55:32.095: px_manager_constructed: Up and running (process:74936): pxbackend-DEBUG: 15:55:32.095: px_manager_get_proxies_sync: url=ftp://ftp.slackware.com:0 online=1 (process:74936): pxbackend-DEBUG: 15:55:32.095: px_manager_get_proxies_sync: Config[0] = (process:74936): pxbackend-DEBUG: 15:55:32.095: px_manager_get_proxies_sync: Config[1] = pac+file:///home/myuser/Configuraciones/proxy_PAC_configuracion.pac (process:74936): pxbackend-DEBUG: 15:55:32.106: px_manager_expand_pac: PAC recevied! (process:74936): pxbackend-DEBUG: 15:55:32.106: px_manager_get_proxies_sync: Proxy[0] = http://proxyip:proxyport kf.kio.workers.ftp: proxy urls: QList("ftp://proxyip:proxyport") kf.kio.workers.ftp: QUrl("ftp://ftp.slackware.com") kf.kio.workers.ftp: host= "ftp.slackware.com" , port= 0 , user= "" password= [password hidden] (process:74936): pxbackend-DEBUG: 15:55:32.180: px_manager_get_proxies_sync: url=tcp://proxyip:proxyport online=1 (process:74936): pxbackend-DEBUG: 15:55:32.180: px_manager_get_proxies_sync: Config[0] = pac+file:///home/myuser/Configuraciones/proxy_PAC_configuracion.pac (process:74936): pxbackend-DEBUG: 15:55:32.180: px_manager_get_proxies_sync: Proxy[0] = direct:// (process:74936): pxbackend-DEBUG: 15:55:32.180: px_manager_get_proxies_sync: url=tcp: online=1 (process:74936): pxbackend-DEBUG: 15:55:32.180: px_manager_get_proxies_sync: Config[0] = http://myproxyuser:myproxypassword@proxyip:proxyport (process:74936): pxbackend-DEBUG: 15:55:32.180: px_manager_get_proxies_sync: Config[1] = pac+file:///home/myuser/Configuraciones/proxy_PAC_configuracion.pac (process:74936): pxbackend-DEBUG: 15:55:32.180: px_manager_get_proxies_sync: Proxy[0] = http://myproxyuser:myproxypassword@proxyip:proxyport (process:74936): pxbackend-DEBUG: 15:55:32.181: px_manager_get_proxies_sync: url=tcp: online=1 (process:74936): pxbackend-DEBUG: 15:55:32.181: px_manager_get_proxies_sync: Config[0] = http://myproxyuser:myproxypassword@proxyip:proxyport (process:74936): pxbackend-DEBUG: 15:55:32.181: px_manager_get_proxies_sync: Config[1] = pac+file:///home/myuser/Configuraciones/proxy_PAC_configuracion.pac (process:74936): pxbackend-DEBUG: 15:55:32.181: px_manager_get_proxies_sync: Proxy[0] = http://myproxyuser:myproxypassword@proxyip:proxyport kf.kio.workers.ftp: m_bLoggedOn= false m_bBusy= false kioclient: Error desconocido kf.kio.workers.ftp: Done kf.kio.workers.ftp: Can I provide any more evidence? Until next Thursday, I won't be able to prove anything. > (process:74936): pxbackend-DEBUG: 15:55:32.095: px_manager_get_proxies_sync: url=ftp://ftp.slackware.com:0 online=1 > (process:74936): pxbackend-DEBUG: 15:55:32.095: px_manager_get_proxies_sync: Config[0] = > (process:74936): pxbackend-DEBUG: 15:55:32.095: px_manager_get_proxies_sync: Config[1] = pac+file:///home/myuser/Configuraciones/proxy_PAC_configuracion.pac > (process:74936): pxbackend-DEBUG: 15:55:32.106: px_manager_expand_pac: PAC recevied! > (process:74936): pxbackend-DEBUG: 15:55:32.106: px_manager_get_proxies_sync: Proxy[0] = http://proxyip:proxyport >kf.kio.workers.ftp: proxy urls: QList("ftp://proxyip:proxyport") Okay, here it get's interesting. libproxy does process the PAC file, and now it thinks the right proxy is "http://proxyip:proxyport", and KIO uses that. But that's not what you want Do you have any environment variables like HTTP_PROXY or FTP_PROXY set? (In reply to Nicolas Fella from comment #27) > Do you have any environment variables like HTTP_PROXY or FTP_PROXY set? At system level, HTTP_PROXY is assigned, and FTP_PROXY is NOT (and never was). System proxy settings remains when using Plasma 5. |