From 30c7e666561cee8deafa25fd424c79b0b801c3fe Mon Sep 17 00:00:00 2001 From: jwijenbergh Date: Wed, 20 Apr 2022 14:44:54 +0200 Subject: Profiles: Return possible error message when setting ID --- exports/exports.go | 13 ++++--------- wrappers/python/eduvpncommon/__init__.py | 2 +- wrappers/python/eduvpncommon/main.py | 7 ++++--- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/exports/exports.go b/exports/exports.go index af71eba..c9ef41b 100644 --- a/exports/exports.go +++ b/exports/exports.go @@ -76,23 +76,18 @@ func GetServersList() (*C.char, *C.char) { } //export SetProfileID -func SetProfileID(data *C.char) { +func SetProfileID(data *C.char) *C.char { state := eduvpn.GetVPNState() - // No server - if state.Server == nil { - return - } - - // No profiles for server - if state.Server.Profiles == nil { - return + if !state.InState(eduvpn.ASK_PROFILE) { + return C.CString("Invalid state for setting a profile") } // Set current profile to id profile_id := C.GoString(data) state.Server.Profiles.Current = profile_id + return C.CString("") } //export FreeString diff --git a/wrappers/python/eduvpncommon/__init__.py b/wrappers/python/eduvpncommon/__init__.py index d7fce2f..67e0d3b 100644 --- a/wrappers/python/eduvpncommon/__init__.py +++ b/wrappers/python/eduvpncommon/__init__.py @@ -38,7 +38,7 @@ lib.Deregister.argtypes, lib.Deregister.restype = [], None lib.Register.argtypes, lib.Register.restype = [c_char_p, c_char_p, VPNStateChange, c_int], c_void_p lib.GetOrganizationsList.argtypes, lib.GetOrganizationsList.restype = [], DataError lib.GetServersList.argtypes, lib.GetServersList.restype = [], DataError -lib.SetProfileID.argtypes, lib.SetProfileID.restype = [c_char_p], None +lib.SetProfileID.argtypes, lib.SetProfileID.restype = [c_char_p], c_void_p # We have to use c_void_p instead of c_char_p to free it properly # See https://stackoverflow.com/questions/13445568/python-ctypes-how-to-free-memory-getting-invalid-pointer-error lib.FreeString.argtypes, lib.FreeString.restype = [c_void_p], None diff --git a/wrappers/python/eduvpncommon/main.py b/wrappers/python/eduvpncommon/main.py index 694fc59..be421cf 100644 --- a/wrappers/python/eduvpncommon/main.py +++ b/wrappers/python/eduvpncommon/main.py @@ -47,8 +47,9 @@ def register_callback(eduvpn): ) -def SetProfileID(profile_id): - lib.SetProfileID(profile_id.encode("utf-8")) +def SetProfileID(profile_id) -> str: + error_string = lib.SetProfileID(profile_id.encode("utf-8")) + return GetPtrString(error_string) class EduVPN(object): @@ -79,7 +80,7 @@ class EduVPN(object): def callback(self, old_state, new_state, data): self.event.run(old_state, new_state, data) - def set_profile(self, profile_id): + def set_profile(self, profile_id) -> str: return SetProfileID(profile_id) -- cgit v1.2.3