summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjwijenbergh <jeroenwijenbergh@protonmail.com>2022-04-20 14:44:54 +0200
committerjwijenbergh <jeroenwijenbergh@protonmail.com>2022-04-20 14:44:54 +0200
commit30c7e666561cee8deafa25fd424c79b0b801c3fe (patch)
treeb69e9db08ff32d01bec7ec9bce78939f5a6686b9
parent1c54936626a4a30d0c6f69576a06ba3661f39dc6 (diff)
Profiles: Return possible error message when setting ID
-rw-r--r--exports/exports.go13
-rw-r--r--wrappers/python/eduvpncommon/__init__.py2
-rw-r--r--wrappers/python/eduvpncommon/main.py7
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)