flathub / com.protonvpn.www

https://flathub.org/apps/details/com.protonvpn.www
10 stars 1 forks source link

Application no longer starts #198

Open colans opened 4 months ago

colans commented 4 months ago

As of today (although I haven't run it in a several days), the application no longer starts.

% flatpak run com.protonvpn.www                                                                                   
2024-03-07T14:34:25.946352 | proton.vpn.connection.vpnconnector:238 | INFO | CONN:STATE_CHANGED | Disconnected (initial state)
Traceback (most recent call last):
  File "/app/bin/protonvpn-app", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/app/gtk/__main__.py", line 34, in main
    controller = Controller.get(executor)
                 ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/app/gtk/controller.py", line 56, in get
    executor.submit(controller.initialize_vpn_connector).result()
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line 456, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/app/lib/python3.11/site-packages/proton/vpn/app/gtk/controller.py", line 89, in initialize_vpn_connector
    self._connector = await self._api.get_vpn_connector()
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/core/api.py", line 54, in get_vpn_connector
    vpn_connector = await VPNConnector.get_instance(settings)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/connection/vpnconnector.py", line 66, in get_instance
    await cls._instance.initialize_state(initial_state)
  File "/app/lib/python3.11/site-packages/proton/vpn/connection/vpnconnector.py", line 149, in initialize_state
    await self._update_state(state)
  File "/app/lib/python3.11/site-packages/proton/vpn/connection/vpnconnector.py", line 250, in _update_state
    new_event = await state_tasks
                ^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/connection/states.py", line 176, in run_tasks
    await self.context.kill_switch.disable()
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/nmkillswitch.py", line 77, in disable
    await self._ks_handler.remove_full_killswitch_connection()
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/killswitch_connection_handler.py", line 202, in remove_full_killswitch_connection
    await self._remove_connection(_get_connection_id(permanent=False))
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/killswitch_connection_handler.py", line 228, in _remove_connection
    await _wrap_future(self.nm_client.remove_connection_async(connection))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/nmclient.py", line 228, in remove_connection_async
    self._run_on_glib_loop_thread(_remove_connection_async).result()
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line 456, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/nmclient.py", line 116, in wrapper
    future.set_result(function(*args, **kwargs))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/nmclient.py", line 215, in _remove_connection_async
    handler_id = device.connect("state-changed", _on_interface_state_changed)
                 ^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'connect'
proletarius101 commented 4 months ago

Can you try this one? https://github.com/flathub/com.protonvpn.www/pull/197

colans commented 4 months ago

Yes, thanks, but looks the same:

% flatpak run com.protonvpn.www                                                                                                                                                                                                                               
2024-03-07T16:08:22.040822 | proton.vpn.connection.vpnconnector:238 | INFO | CONN:STATE_CHANGED | Disconnected (initial state)
Traceback (most recent call last):
  File "/app/bin/protonvpn-app", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/app/gtk/__main__.py", line 34, in main
    controller = Controller.get(executor)
                 ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/app/gtk/controller.py", line 56, in get
    executor.submit(controller.initialize_vpn_connector).result()
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line 456, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/app/lib/python3.11/site-packages/proton/vpn/app/gtk/controller.py", line 89, in initialize_vpn_connector
    self._connector = await self._api.get_vpn_connector()
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/core/api.py", line 54, in get_vpn_connector
    vpn_connector = await VPNConnector.get_instance(settings)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/connection/vpnconnector.py", line 66, in get_instance
    await cls._instance.initialize_state(initial_state)
  File "/app/lib/python3.11/site-packages/proton/vpn/connection/vpnconnector.py", line 149, in initialize_state
    await self._update_state(state)
  File "/app/lib/python3.11/site-packages/proton/vpn/connection/vpnconnector.py", line 250, in _update_state
    new_event = await state_tasks
                ^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/connection/states.py", line 176, in run_tasks
    await self.context.kill_switch.disable()
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/nmkillswitch.py", line 77, in disable
    await self._ks_handler.remove_full_killswitch_connection()
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/killswitch_connection_handler.py", line 202, in remove_full_killswitch_connection
    await self._remove_connection(_get_connection_id(permanent=False))
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/killswitch_connection_handler.py", line 228, in _remove_connection
    await _wrap_future(self.nm_client.remove_connection_async(connection))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/nmclient.py", line 230, in remove_connection_async
    self._run_on_glib_loop_thread(_remove_connection_async).result()
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line 456, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/nmclient.py", line 118, in wrapper
    future.set_result(function(*args, **kwargs))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/lib/python3.11/site-packages/proton/vpn/killswitch/backend/linux/networkmanager/nmclient.py", line 217, in _remove_connection_async
    handler_id = device.connect("state-changed", _on_interface_state_changed)
                 ^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'connect'
proletarius101 commented 4 months ago

I'm suspecting that NetworkManager-openvpn or iproute2 are not installed in your host OS, as I can't reproduce this issue. Can you share which OS you are using?

colans commented 4 months ago

Pop is an Ubuntu fork.

% sudo apt install network-manager-openvpn iproute2                                                              
[sudo] password for colan: 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
iproute2 is already the newest version (5.15.0-1ubuntu2).
network-manager-openvpn is already the newest version (1.8.18-1).
network-manager-openvpn set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
proletarius101 commented 4 months ago

Since it raises the error by _remove_connection_async, it looks like there are some remaining network interfaces created by ProtonVPN (pvpn-*). You might need to remove them by yourself.

proletarius101 commented 2 months ago

Can you reproduce this issue with the DEB packages? I'm trying to narrow the issue down and see if it's an upstream issue or a flatpak packaging issue.