diff options
| author | Jeroen Wijenbergh <jeroenwijenbergh@protonmail.com> | 2022-03-07 17:34:39 +0100 |
|---|---|---|
| committer | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-04-05 12:26:13 +0200 |
| commit | e2bcbc5d7fc8846ed189863ab33f0514f5399365 (patch) | |
| tree | 3f20ed0c7f0381bda7535e5baa38fe251e98635b /wrappers | |
| parent | 56548c511163b4dd22d9a96a2f5ae647f1627a7b (diff) | |
Begin exporting by wrapping state in a singleton
Diffstat (limited to 'wrappers')
| -rw-r--r-- | wrappers/python/eduvpncommon/__init__.py | 12 | ||||
| -rw-r--r-- | wrappers/python/eduvpncommon/auth.py | 14 | ||||
| -rw-r--r-- | wrappers/python/eduvpncommon/discovery.py | 9 |
3 files changed, 26 insertions, 9 deletions
diff --git a/wrappers/python/eduvpncommon/__init__.py b/wrappers/python/eduvpncommon/__init__.py index 52efa05..911c671 100644 --- a/wrappers/python/eduvpncommon/__init__.py +++ b/wrappers/python/eduvpncommon/__init__.py @@ -31,3 +31,15 @@ class GoSlice(Structure): class DataError(Structure): _fields_ = [('data', c_void_p), ('error', c_int64)] + + +# 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.Register.argtypes, lib.Register.restype = [c_char_p, c_char_p], None +lib.InitializeOAuth.argtypes, lib.InitializeOAuth.restype = [], c_void_p +lib.GetOrganizationsList.argtypes, lib.GetOrganizationsList.restype = [], DataError +lib.GetServersList.argtypes, lib.GetServersList.restype = [], DataError +lib.FreeString.argtypes, lib.FreeString.restype = [c_void_p], None +lib.Verify.argtypes, lib.Verify.restype = [GoSlice, GoSlice, GoSlice, c_uint64], c_int64 +lib.InsecureTestingSetExtraKey.argtypes, lib.InsecureTestingSetExtraKey.restype = [GoSlice], None + diff --git a/wrappers/python/eduvpncommon/auth.py b/wrappers/python/eduvpncommon/auth.py new file mode 100644 index 0000000..b0d1410 --- /dev/null +++ b/wrappers/python/eduvpncommon/auth.py @@ -0,0 +1,14 @@ +from . import lib +from ctypes import * + +def Register(name, url): + name_bytes = name.encode('utf-8') + url_bytes = url.encode('utf-8') + lib.Register(name_bytes, url_bytes) + +def InitializeOAuth(): + ptr = lib.InitializeOAuth() + value = cast(ptr, c_char_p).value + authURL = value.decode() + lib.FreeString(ptr) + return authURL diff --git a/wrappers/python/eduvpncommon/discovery.py b/wrappers/python/eduvpncommon/discovery.py index 7705968..4820ca2 100644 --- a/wrappers/python/eduvpncommon/discovery.py +++ b/wrappers/python/eduvpncommon/discovery.py @@ -5,15 +5,6 @@ from typing import Callable, List, Dict, Any from enum import Enum import json -# 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.GetOrganizationsList.argtypes, lib.GetOrganizationsList.restype = [], DataError -lib.GetServersList.argtypes, lib.GetServersList.restype = [], DataError -lib.FreeString.argtypes, lib.FreeString.restype = [c_void_p], None - -lib.Verify.argtypes, lib.Verify.restype = [GoSlice, GoSlice, GoSlice, c_uint64], c_int64 -lib.InsecureTestingSetExtraKey.argtypes, lib.InsecureTestingSetExtraKey.restype = [GoSlice], None - def getList(func: Callable) -> List[Dict[str, Any]]: dataError = func() ptr = dataError.data |
