Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-proton-vpn-network-manager for openSUSE:Factory checked in at 2024-04-21 20:29:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-proton-vpn-network-manager (Old) and /work/SRC/openSUSE:Factory/.python-proton-vpn-network-manager.new.26366 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-proton-vpn-network-manager" Sun Apr 21 20:29:01 2024 rev:3 rq:1169474 version:0.4.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-proton-vpn-network-manager/python-proton-vpn-network-manager.changes 2024-03-25 21:20:26.388397665 +0100 +++ /work/SRC/openSUSE:Factory/.python-proton-vpn-network-manager.new.26366/python-proton-vpn-network-manager.changes 2024-04-21 20:30:25.916860077 +0200 @@ -1,0 +2,7 @@ +Sun Apr 21 08:50:59 UTC 2024 - Dirk Müller <dmuel...@suse.com> + +- update to 0.4.2: + * Update to new interface + * Make necessary changes to support Wireguard protocol + +------------------------------------------------------------------- Old: ---- v0.4.0.tar.gz New: ---- v0.4.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-proton-vpn-network-manager.spec ++++++ --- /var/tmp/diff_new_pack.AE9C9N/_old 2024-04-21 20:30:27.020900606 +0200 +++ /var/tmp/diff_new_pack.AE9C9N/_new 2024-04-21 20:30:27.032901047 +0200 @@ -19,7 +19,7 @@ %define skip_python2 1 %{?sle15_python_module_pythons} Name: python-proton-vpn-network-manager -Version: 0.4.0 +Version: 0.4.2 Release: 0 Summary: Proton VPN library for NetworkManager License: GPL-3.0-or-later ++++++ v0.4.0.tar.gz -> v0.4.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-proton-vpn-network-manager-0.4.0/debian/changelog new/python-proton-vpn-network-manager-0.4.2/debian/changelog --- old/python-proton-vpn-network-manager-0.4.0/debian/changelog 2024-02-14 15:52:48.000000000 +0100 +++ new/python-proton-vpn-network-manager-0.4.2/debian/changelog 2024-03-06 10:28:24.000000000 +0100 @@ -1,3 +1,15 @@ +protonvpn-network-manager (0.4.2) unstable; urgency=medium + + * Update to new interface + + -- Alexandru Cheltuitor <alexandru.cheltui...@proton.ch> Fri, 1 Mar 2024 10:00:00 +0100 + +protonvpn-network-manager (0.4.1) unstable; urgency=medium + + * Make necessary changes to support Wireguard protocol + + -- Alexandru Cheltuitor <alexandru.cheltui...@proton.ch> Tue, 27 Feb 2024 10:00:00 +0100 + protonvpn-network-manager (0.4.0) unstable; urgency=medium * Initialize connection with persisted parameters diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-proton-vpn-network-manager-0.4.0/debian/control new/python-proton-vpn-network-manager-0.4.2/debian/control --- old/python-proton-vpn-network-manager-0.4.0/debian/control 2024-02-14 15:52:48.000000000 +0100 +++ new/python-proton-vpn-network-manager-0.4.2/debian/control 2024-03-06 10:28:24.000000000 +0100 @@ -9,4 +9,5 @@ Package: python3-proton-vpn-network-manager Architecture: all Depends: ${python3:Depends}, ${misc:Depends}, python3-proton-core, python3-proton-vpn-connection, network-manager, python3-gi, gir1.2-nm-1.0 +Breaks: python3-proton-vpn-network-manager-openvpn (<< 0.0.5), python3-proton-vpn-network-manager-wireguard (<< 0.0.3) Description: Python3 ProtonVPN Network Manager Backend diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-proton-vpn-network-manager-0.4.0/proton/vpn/backend/linux/networkmanager/core/networkmanager.py new/python-proton-vpn-network-manager-0.4.2/proton/vpn/backend/linux/networkmanager/core/networkmanager.py --- old/python-proton-vpn-network-manager-0.4.0/proton/vpn/backend/linux/networkmanager/core/networkmanager.py 2024-02-14 15:52:48.000000000 +0100 +++ new/python-proton-vpn-network-manager-0.4.2/proton/vpn/backend/linux/networkmanager/core/networkmanager.py 2024-03-06 10:28:24.000000000 +0100 @@ -45,6 +45,7 @@ To do this, this class needs to be extended so that the subclass initializes the NetworkManager connection appropriately. """ + SIGNAL_NAME = "vpn-state-changed" backend = "linuxnetworkmanager" def __init__(self, *args, nm_client: NMClient = None, **kwargs): @@ -79,7 +80,7 @@ server_reachable = await tcpcheck.is_any_port_reachable( self._vpnserver.server_ip, - self._vpnserver.tcp_ports + self._vpnserver.openvpn_ports.tcp ) if not server_reachable: @@ -94,7 +95,7 @@ self._notify_subscribers(events.Disconnected(EventContext(connection=self))) return - future_connection = self._setup() # Creates the network manager connection. + future_connection = self.setup() # Creates the network manager connection. loop = asyncio.get_running_loop() try: connection = await loop.run_in_executor(None, future_connection.result) @@ -123,8 +124,8 @@ ) # Start listening for vpn state changes. vpn_connection.connect( - "vpn-state-changed", - self._on_vpn_state_changed + self.SIGNAL_NAME, + self._on_state_changed ) except GLib.GError: logger.exception("Error starting NetworkManager connection.") @@ -166,7 +167,7 @@ await self.remove_connection() # pylint: disable=unused-argument - def _on_vpn_state_changed( + def _on_state_changed( self, vpn_connection: NM.VpnConnection, state: int, reason: int ): """ @@ -307,8 +308,8 @@ ) if active_connection: active_connection.connect( - "vpn-state-changed", - self._on_vpn_state_changed + self.SIGNAL_NAME, + self._on_state_changed ) return states.Connected(context) @@ -324,7 +325,7 @@ server_name = self._vpnserver.server_name or "Connection" return f"ProtonVPN {server_name}" - def _setup(self): + def setup(self): """ Every protocol derived from this class has to override this method in order to have it working. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-proton-vpn-network-manager-0.4.0/rpmbuild/SPECS/package.spec new/python-proton-vpn-network-manager-0.4.2/rpmbuild/SPECS/package.spec --- old/python-proton-vpn-network-manager-0.4.0/rpmbuild/SPECS/package.spec 2024-02-14 15:52:48.000000000 +0100 +++ new/python-proton-vpn-network-manager-0.4.2/rpmbuild/SPECS/package.spec 2024-03-06 10:28:24.000000000 +0100 @@ -1,5 +1,5 @@ %define unmangled_name proton-vpn-network-manager -%define version 0.4.0 +%define version 0.4.2 %define release 1 Prefix: %{_prefix} @@ -33,6 +33,9 @@ Requires: python3-proton-core Requires: python3-setuptools +Conflicts: python3-proton-vpn-network-manager-openvpn < 0.0.5 +Conflicts: python3-proton-vpn-network-manager-wireguard < 0.0.3 + %{?python_disable_dependency_generator} %description @@ -55,6 +58,12 @@ %defattr(-,root,root) %changelog +* Fri Mar 1 2024 Alexandru Cheltuitor <alexandru.cheltui...@proton.ch> 0.4.2 +- Update to new interface + +* Tue Feb 27 2024 Alexandru Cheltuitor <alexandru.cheltui...@proton.ch> 0.4.1 +- Make necessary changes to support Wireguard protocol + * Wed Feb 14 2024 Josep Llaneras <josep.llane...@proton.ch> 0.4.0 - Initialize connection with persisted parameters diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-proton-vpn-network-manager-0.4.0/setup.py new/python-proton-vpn-network-manager-0.4.2/setup.py --- old/python-proton-vpn-network-manager-0.4.0/setup.py 2024-02-14 15:52:48.000000000 +0100 +++ new/python-proton-vpn-network-manager-0.4.2/setup.py 2024-03-06 10:28:24.000000000 +0100 @@ -4,7 +4,7 @@ setup( name="proton-vpn-network-manager", - version="0.4.0", + version="0.4.2", description="Proton Technologies VPN connector for linux", author="Proton Technologies", author_email="cont...@protonmail.com", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-proton-vpn-network-manager-0.4.0/tests/boilerplate.py new/python-proton-vpn-network-manager-0.4.2/tests/boilerplate.py --- old/python-proton-vpn-network-manager-0.4.0/tests/boilerplate.py 2024-02-14 15:52:48.000000000 +0100 +++ new/python-proton-vpn-network-manager-0.4.2/tests/boilerplate.py 2024-03-06 10:28:24.000000000 +0100 @@ -23,9 +23,9 @@ @dataclass class VPNServer: server_ip: str = None - udp_ports: List[int] = None - tcp_ports: List[int] = None - wg_public_key_x25519: str = None + openvpn_ports: object = None + wireguard_ports: object = None + x25519pk: str = None domain: str = None servername: str = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-proton-vpn-network-manager-0.4.0/tests/test_networkmanager.py new/python-proton-vpn-network-manager-0.4.2/tests/test_networkmanager.py --- old/python-proton-vpn-network-manager-0.4.0/tests/test_networkmanager.py 2024-02-14 15:52:48.000000000 +0100 +++ new/python-proton-vpn-network-manager-0.4.2/tests/test_networkmanager.py 2024-03-06 10:28:24.000000000 +0100 @@ -31,6 +31,8 @@ from proton.vpn.backend.linux.networkmanager.core import LinuxNetworkManager from proton.vpn.connection import states from proton.vpn.connection import events +from collections import namedtuple +OpenVPNPorts = namedtuple("OpenVPNPorts", "udp tcp") class LinuxNetworkManagerProtocol(LinuxNetworkManager): @@ -44,7 +46,7 @@ super().__init__(*args, connection_persistence=connection_persistence, killswitch=killswitch, **kwargs) - def _setup(self): + def setup(self): # to be mocked in tests pass @@ -56,7 +58,9 @@ def create_nm_protocol(nm_client_mock): return LinuxNetworkManagerProtocol( - VPNServer(), VPNCredentials(), Settings(), nm_client=nm_client_mock + VPNServer( + openvpn_ports=OpenVPNPorts([00], [00]) + ), VPNCredentials(), Settings(), nm_client=nm_client_mock ) @@ -64,11 +68,11 @@ @patch("proton.vpn.backend.linux.networkmanager.core.networkmanager.tcpcheck") async def test_start(tcpcheck_patch, nm_client_mock): # Mock successful TCP connection check. - tcpcheck_patch.is_any_port_reachable = AsyncMock(return_value=True) + tcpcheck_patch.is_any_port_reachable = AsyncMock() nm_protocol = create_nm_protocol(nm_client_mock) - with patch.object(nm_protocol, "_setup") as setup_mock: + with patch.object(nm_protocol, "setup") as setup_mock: start_connection_future = Future() nm_client_mock.start_connection_async.return_value = start_connection_future connection_mock = setup_mock.return_value.result() @@ -84,7 +88,7 @@ # is hooked to monitor vpn connection state changes. connection_mock.connect.assert_called_once_with( "vpn-state-changed", - nm_protocol._on_vpn_state_changed + nm_protocol._on_state_changed ) @@ -99,7 +103,7 @@ connection_subscriber = Mock() nm_protocol = create_nm_protocol(nm_client_mock) nm_protocol.register(connection_subscriber) - with patch.object(nm_protocol, "_setup") as setup_mock: + with patch.object(nm_protocol, "setup") as setup_mock: await nm_protocol.start() setup_mock.assert_not_called() @@ -120,7 +124,7 @@ # Mock successful TCP connection check. tcpcheck_patch.is_any_port_reachable = AsyncMock(return_value=True) - with patch.object(nm_protocol, "_setup") as setup_mock: + with patch.object(nm_protocol, "setup") as setup_mock: # Mock error on connection setup. setup_connection_future = Future() setup_connection_future.set_exception(GLib.GError) @@ -148,12 +152,12 @@ # Mock successful TCP connection check. tcpcheck_patch.is_any_port_reachable = AsyncMock(return_value=True) - with patch.multiple(nm_protocol, _setup=DEFAULT, remove_connection=DEFAULT) as mocks: + with patch.multiple(nm_protocol, setup=DEFAULT, remove_connection=DEFAULT) as mocks: # Mock successful connection setup. connection = Mock() setup_connection_future = Future() setup_connection_future.set_result(connection) - mocks["_setup"].return_value = setup_connection_future + mocks["setup"].return_value = setup_connection_future # Mock error on connection activation. start_connection_future = Future() @@ -269,10 +273,10 @@ ] ) @patch("proton.vpn.backend.linux.networkmanager.core.LinuxNetworkManager._notify_subscribers_threadsafe") -async def test_on_vpn_state_changed(_notify_subscribers_threadsafe, nm_client_mock, state, reason, expected_event): +async def test_on_state_changed(_notify_subscribers_threadsafe, nm_client_mock, state, reason, expected_event): _notify_subscribers_threadsafe.return_value = None nm_protocol = create_nm_protocol(nm_client_mock) - nm_protocol._on_vpn_state_changed(None, state, reason) + nm_protocol._on_state_changed(None, state, reason) # assert that the LinuxNetworkManager._notify_subscribers method was called with the expected event _notify_subscribers_threadsafe.assert_called_once() @@ -303,24 +307,17 @@ async def test_initialize_persisted_connection_determines_initial_connection_state( active_nm_connection, inactive_nm_connection, expected_state ): - persisted_parameters = ConnectionParameters( - connection_id="connection-id", - killswitch=0, - backend=LinuxNetworkManagerProtocol.backend, - protocol=LinuxNetworkManagerProtocol.protocol, - server_id="server-id", - server_name="server-name" - ) nm_client_mock = Mock() nm_client_mock.get_active_connection.return_value = active_nm_connection nm_client_mock.get_connection.return_value = inactive_nm_connection # The VPNConnection constructor calls `_initialize_persisted_connection` - # when `persisted_parameters` are provided. + # when `connection_id` is provided. nm_protocol = LinuxNetworkManagerProtocol( server=None, credentials=None, - persisted_parameters=persisted_parameters, + settings=None, + connection_id="connection_id", nm_client=nm_client_mock ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-proton-vpn-network-manager-0.4.0/tests_integration/boilerplate.py new/python-proton-vpn-network-manager-0.4.2/tests_integration/boilerplate.py --- old/python-proton-vpn-network-manager-0.4.0/tests_integration/boilerplate.py 2024-02-14 15:52:48.000000000 +0100 +++ new/python-proton-vpn-network-manager-0.4.2/tests_integration/boilerplate.py 2024-03-06 10:28:24.000000000 +0100 @@ -23,9 +23,9 @@ @dataclass class VPNServer: server_ip: str = None - udp_ports: List[int] = None - tcp_ports: List[int] = None - wg_public_key_x25519: str = None + openvpn_ports: object = None + wireguard_ports: object = None + x25519pk: str = None domain: str = None servername: str = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-proton-vpn-network-manager-0.4.0/tests_integration/test_connection_up_and_down.py new/python-proton-vpn-network-manager-0.4.2/tests_integration/test_connection_up_and_down.py --- old/python-proton-vpn-network-manager-0.4.0/tests_integration/test_connection_up_and_down.py 2024-02-14 15:52:48.000000000 +0100 +++ new/python-proton-vpn-network-manager-0.4.2/tests_integration/test_connection_up_and_down.py 2024-03-06 10:28:24.000000000 +0100 @@ -42,8 +42,11 @@ logger.info(f"Testing against server {VPN_SERVER_NAME}.") EXPECTED_CONNECTION_NAME = f"ProtonVPN {VPN_SERVER_NAME}" +from collections import namedtuple +OpenVPNPorts = namedtuple("OpenVPNPorts", "udp tcp") + @pytest.fixture(scope="module") def vpn_client_config(): return get_vpn_client_config() @@ -53,10 +56,11 @@ def vpn_server(vpn_client_config): server = get_vpn_server_by_name(VPN_SERVER_NAME) default_ports = vpn_client_config["OpenVPNConfig"]["DefaultPorts"] + return VPNServer( server_ip=server["Servers"][0]["EntryIP"], - udp_ports=default_ports["UDP"], - tcp_ports=default_ports["TCP"], + openvpn_ports=OpenVPNPorts(default_ports["UDP"], default_ports["TCP"]), + wireguard_ports={}, domain=server["Domain"], servername=server["Name"] )