aboutsummaryrefslogtreecommitdiff
path: root/nmpass
diff options
context:
space:
mode:
Diffstat (limited to 'nmpass')
-rw-r--r--nmpass/main.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/nmpass/main.py b/nmpass/main.py
index 3d8c85e..412b009 100644
--- a/nmpass/main.py
+++ b/nmpass/main.py
@@ -1,6 +1,6 @@
from __future__ import annotations
-from asyncio import AbstractEventLoop, new_event_loop
+from asyncio import AbstractEventLoop, new_event_loop, sleep
from sdbus_async.networkmanager import NetworkConnectionSettings, NetworkManagerSecretAgentInterfaceAsync, NetworkManagerAgentManager, NetworkManagerConnectionProperties, NetworkManagerSettings
from sdbus_async.networkmanager.settings import ConnectionProfile, ConnectionSettings, EapolSettings, WirelessSecuritySettings
from typing import Any
@@ -22,6 +22,9 @@ class NetworkManagerPasswordStoreAgent(NetworkManagerSecretAgentInterfaceAsync):
self.loop = loop
async def set_agent_owned(self, info: ConnectionSettings) -> None:
+ # prevent infinite loops
+ await sleep(1)
+
assert info.uuid is not None
settings_path = await NetworkManagerSettings().get_connection_by_uuid(info.uuid)
@@ -60,11 +63,17 @@ class NetworkManagerPasswordStoreAgent(NetworkManagerSecretAgentInterfaceAsync):
return {}
if setting_name == '802-11-wireless-security':
- self.loop.create_task(self.set_agent_owned(profile.connection))
+ assert profile.wireless_security is not None
+ assert profile.wireless_security.psk_flags is not None
+ if (profile.wireless_security.psk_flags & AGENT_OWNED) == 0:
+ self.loop.create_task(self.set_agent_owned(profile.connection))
return { setting_name: WirelessSecuritySettings(psk=password).to_dbus() }
if setting_name == '802-1x':
- self.loop.create_task(self.set_agent_owned(profile.connection))
+ assert profile.eapol is not None
+ assert profile.eapol.password_flags is not None
+ if (profile.eapol.password_flags & AGENT_OWNED) == 0:
+ self.loop.create_task(self.set_agent_owned(profile.connection))
return { setting_name: EapolSettings(password=password).to_dbus()}
return {}