From 015bb4fa79d01a1e2d4887cba96d150c7e1dd3bb Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Wed, 12 Jun 2024 21:59:50 -0400 Subject: [Enterprise] Clean up initialization flow --- python/__init__.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'python/__init__.py') diff --git a/python/__init__.py b/python/__init__.py index 3c440c8b..ec218d38 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -216,24 +216,18 @@ class _DestructionCallbackHandler: _enable_default_log = True _plugin_init = False +_enterprise_license_checkout = None def _init_plugins(): global _enable_default_log global _plugin_init + global _enterprise_license_checkout if not core_ui_enabled() and core.BNGetProduct() == "Binary Ninja Enterprise Client": # Enterprise client needs to checkout a license reservation or else BNInitPlugins will fail - if not enterprise.is_license_still_activated(): - try: - enterprise.authenticate_with_method("Keychain") - except RuntimeError: - pass - if not core.BNIsLicenseValidated() or not enterprise.is_license_still_activated(): - raise RuntimeError( - "To use Binary Ninja Enterprise from a headless python script, you must check out a license first.\n" - "You can either check out a license for an extended time with the UI, or use the binaryninja.enterprise module." - ) + _enterprise_license_checkout = enterprise.LicenseCheckout() + _enterprise_license_checkout.acquire() if not _plugin_init: # The first call to BNInitCorePlugins returns True for successful initialization and True in this context indicates headless operation. -- cgit v1.3.1