summaryrefslogtreecommitdiff
path: root/rust/src/headless.rs
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2024-10-02 19:51:27 -0400
committermason <35282038+emesare@users.noreply.github.com>2024-10-03 18:58:48 +0000
commit0beb551d0a393af4c75397195a45e22d7b3aba70 (patch)
tree5d8ea59743ea0adaed402fee1e2b22e7db335207 /rust/src/headless.rs
parente8488aaa64fb847ca2e639369176cf88c1bc4f8e (diff)
Checkout enterprise license in rust headless mode
Diffstat (limited to 'rust/src/headless.rs')
-rw-r--r--rust/src/headless.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/rust/src/headless.rs b/rust/src/headless.rs
index 1de41aec..0cc92faa 100644
--- a/rust/src/headless.rs
+++ b/rust/src/headless.rs
@@ -20,6 +20,7 @@ use crate::{
use std::env;
use std::path::PathBuf;
+use std::time::Duration;
#[cfg(not(target_os = "windows"))]
fn binja_path() -> PathBuf {
@@ -82,6 +83,13 @@ use binaryninjacore_sys::{BNInitPlugins, BNInitRepoPlugins, BNSetBundledPluginDi
///
/// You can instead call this through [`Session`] or [`script_helper`]
pub fn init() {
+ match crate::product().as_str() {
+ "Binary Ninja Enterprise Client" | "Binary Ninja Ultimate" => {
+ crate::enterprise::checkout_license(Duration::from_secs(900)).expect("Failed to checkout license");
+ },
+ _ => {}
+ }
+
unsafe {
let path = binja_path().join("plugins").into_os_string();
let path = path.into_string().unwrap();
@@ -96,6 +104,13 @@ pub fn init() {
///
/// ⚠️ Important! Must be called at the end of scripts. ⚠️
pub fn shutdown() {
+ match crate::product().as_str() {
+ "Binary Ninja Enterprise Client" | "Binary Ninja Ultimate" => {
+ crate::enterprise::release_license()
+ },
+ _ => {}
+ }
+
unsafe { binaryninjacore_sys::BNShutdown() };
}