summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2019-05-14 21:34:57 -0700
committerPeter LaFosse <peter@vector35.com>2019-07-08 23:14:30 -0400
commitad37832dd4ffa112b10b523a151d3fa9b86b6c9d (patch)
tree364641f60f878150bb010c4b51f088e49c8ba058 /binaryninjacore.h
parent7e7f0b41548057093fb48f1d8985712b619e9438 (diff)
PluginManager refactor for supporting plugin installation ui
Expose additional PluginManager APIs and update documentation
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h67
1 files changed, 43 insertions, 24 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index c4b90f7e..842a2a50 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -161,7 +161,7 @@ extern "C"
struct BNDataRendererContainer;
struct BNDisassemblyTextRenderer;
- typedef bool (*BNLoadPluginCallback)(const char* repoPath, const char* pluginPath, void* ctx);
+ typedef bool (*BNLoadPluginCallback)(const char* repoPath, const char* pluginPath, bool force, void* ctx);
//! Console log levels
enum BNLogLevel
@@ -779,10 +779,18 @@ extern "C"
OtherPluginOrigin
};
- enum BNPluginUpdateStatus
+ enum BNPluginStatus
{
- UpToDatePluginStatus,
- UpdatesAvailablePluginStatus
+ NotInstalledPluginStatus = 0x00000000,
+ InstalledPluginStatus = 0x00000001,
+ EnabledPluginStatus = 0x00000002,
+ UpdateAvailablePluginStatus = 0x00000010,
+ DeletePendingPluginStatus = 0x00000020,
+ UpdatePendingPluginStatus = 0x00000040,
+ DisablePendingPluginStatus = 0x00000080,
+ PendingRestartPluginStatus = 0x00000200,
+ BeingUpdatedPluginStatus = 0x00000400,
+ BeingDeletedPluginStatus = 0x00000800
};
enum BNPluginType
@@ -790,7 +798,8 @@ extern "C"
CorePluginType,
UiPluginType,
ArchitecturePluginType,
- BinaryViewPluginType
+ BinaryViewPluginType,
+ HelperPluginType
};
struct BNLookupTableEntry
@@ -3717,39 +3726,53 @@ extern "C"
BINARYNINJACOREAPI void BNFreeDemangledName(char*** name, size_t nameElements);
// Plugin repository APIs
- BINARYNINJACOREAPI const char* BNPluginGetApi(BNRepoPlugin* p);
+ BINARYNINJACOREAPI char** BNPluginGetApis(BNRepoPlugin* p, size_t* count);
BINARYNINJACOREAPI const char* BNPluginGetAuthor(BNRepoPlugin* p);
BINARYNINJACOREAPI const char* BNPluginGetDescription(BNRepoPlugin* p);
BINARYNINJACOREAPI const char* BNPluginGetLicense(BNRepoPlugin* p);
BINARYNINJACOREAPI const char* BNPluginGetLicenseText(BNRepoPlugin* p);
BINARYNINJACOREAPI const char* BNPluginGetLongdescription(BNRepoPlugin* p);
- BINARYNINJACOREAPI const char* BNPluginGetMinimimVersions(BNRepoPlugin* p);
+ BINARYNINJACOREAPI uint64_t BNPluginGetMinimimVersion(BNRepoPlugin* p);
BINARYNINJACOREAPI const char* BNPluginGetName(BNRepoPlugin* p);
- BINARYNINJACOREAPI const char* BNPluginGetUrl(BNRepoPlugin* p);
+ BINARYNINJACOREAPI const char* BNPluginGetProjectUrl(BNRepoPlugin* p);
+ BINARYNINJACOREAPI const char* BNPluginGetPackageUrl(BNRepoPlugin* p);
+ BINARYNINJACOREAPI const char* BNPluginGetAuthorUrl(BNRepoPlugin* p);
BINARYNINJACOREAPI const char* BNPluginGetVersion(BNRepoPlugin* p);
+ BINARYNINJACOREAPI const char* BNPluginGetCommit(BNRepoPlugin* p);
BINARYNINJACOREAPI void BNFreePluginTypes(BNPluginType* r);
BINARYNINJACOREAPI BNRepoPlugin* BNNewPluginReference(BNRepoPlugin* r);
BINARYNINJACOREAPI void BNFreePlugin(BNRepoPlugin* plugin);
BINARYNINJACOREAPI const char* BNPluginGetPath(BNRepoPlugin* p);
BINARYNINJACOREAPI bool BNPluginIsInstalled(BNRepoPlugin* p);
- BINARYNINJACOREAPI void BNPluginSetEnabled(BNRepoPlugin* p, bool enabled);
BINARYNINJACOREAPI bool BNPluginIsEnabled(BNRepoPlugin* p);
- BINARYNINJACOREAPI BNPluginUpdateStatus BNPluginGetPluginUpdateStatus(BNRepoPlugin* p);
+ BINARYNINJACOREAPI BNPluginStatus BNPluginGetPluginStatus(BNRepoPlugin* p);
BINARYNINJACOREAPI BNPluginType* BNPluginGetPluginTypes(BNRepoPlugin* p, size_t* count);
- BINARYNINJACOREAPI bool BNPluginEnable(BNRepoPlugin* p);
+ BINARYNINJACOREAPI bool BNPluginEnable(BNRepoPlugin* p, bool force);
BINARYNINJACOREAPI bool BNPluginDisable(BNRepoPlugin* p);
BINARYNINJACOREAPI bool BNPluginInstall(BNRepoPlugin* p);
BINARYNINJACOREAPI bool BNPluginUninstall(BNRepoPlugin* p);
+ BINARYNINJACOREAPI bool BNPluginUpdate(BNRepoPlugin* p);
+ BINARYNINJACOREAPI char* BNPluginGetInstallInstructions(BNRepoPlugin* p, const char* platform);
+ BINARYNINJACOREAPI char** BNPluginGetPlatforms(BNRepoPlugin* p, size_t* count);
+ BINARYNINJACOREAPI void BNFreePluginPlatforms(char** platforms, size_t count);
+ BINARYNINJACOREAPI const char* BNPluginGetRepository(BNRepoPlugin* p);
+ BINARYNINJACOREAPI bool BNPluginIsBeingDeleted(BNRepoPlugin* p);
+ BINARYNINJACOREAPI bool BNPluginIsBeingUpdated(BNRepoPlugin* p);
+ BINARYNINJACOREAPI bool BNPluginIsRunning(BNRepoPlugin* p);
+ BINARYNINJACOREAPI bool BNPluginIsUpdatePending(BNRepoPlugin* p);
+ BINARYNINJACOREAPI bool BNPluginIsDisablePending(BNRepoPlugin* p);
+ BINARYNINJACOREAPI bool BNPluginIsDeletePending(BNRepoPlugin* p);
+ BINARYNINJACOREAPI bool BNPluginIsUpdateAvailable(BNRepoPlugin* p);
+
+ BINARYNINJACOREAPI char* BNPluginGetProjectData(BNRepoPlugin* p);
+ BINARYNINJACOREAPI uint64_t BNPluginGetLastUpdate(BNRepoPlugin* p);
BINARYNINJACOREAPI BNRepository* BNNewRepositoryReference(BNRepository* r);
BINARYNINJACOREAPI void BNFreeRepository(BNRepository* r);
BINARYNINJACOREAPI char* BNRepositoryGetUrl(BNRepository* r);
BINARYNINJACOREAPI char* BNRepositoryGetRepoPath(BNRepository* r);
- BINARYNINJACOREAPI char* BNRepositoryGetLocalReference(BNRepository* r);
- BINARYNINJACOREAPI char* BNRepositoryGetRemoteReference(BNRepository* r);
BINARYNINJACOREAPI BNRepoPlugin** BNRepositoryGetPlugins(BNRepository* r, size_t* count);
BINARYNINJACOREAPI void BNFreeRepositoryPluginList(BNRepoPlugin** r);
- BINARYNINJACOREAPI bool BNRepositoryIsInitialized(BNRepository* r);
BINARYNINJACOREAPI void BNRepositoryFreePluginDirectoryList(char** list, size_t count);
BINARYNINJACOREAPI BNRepoPlugin* BNRepositoryGetPluginByPath(BNRepository* r, const char* pluginPath);
BINARYNINJACOREAPI const char* BNRepositoryGetPluginsPath(BNRepository* r);
@@ -3762,23 +3785,18 @@ extern "C"
BINARYNINJACOREAPI void BNFreeRepositoryManagerRepositoriesList(BNRepository** r);
BINARYNINJACOREAPI bool BNRepositoryManagerAddRepository(BNRepositoryManager* r,
const char* url,
- const char* repoPath,
- const char* localReference,
- const char* remoteReference);
- BINARYNINJACOREAPI bool BNRepositoryManagerEnablePlugin(BNRepositoryManager* r, const char* repoName, const char* pluginPath);
- BINARYNINJACOREAPI bool BNRepositoryManagerDisablePlugin(BNRepositoryManager* r, const char* repoName, const char* pluginPath);
- BINARYNINJACOREAPI bool BNRepositoryManagerInstallPlugin(BNRepositoryManager* r, const char* repoName, const char* pluginPath);
- BINARYNINJACOREAPI bool BNRepositoryManagerUninstallPlugin(BNRepositoryManager* r, const char* repoName, const char* pluginPath);
- BINARYNINJACOREAPI bool BNRepositoryManagerUpdatePlugin(BNRepositoryManager* r, const char* repoName, const char* pluginPath);
+ const char* repoPath);
BINARYNINJACOREAPI BNRepository* BNRepositoryGetRepositoryByPath(BNRepositoryManager* r, const char* repoPath);
BINARYNINJACOREAPI BNRepositoryManager* BNGetRepositoryManager();
BINARYNINJACOREAPI BNRepository* BNRepositoryManagerGetDefaultRepository(BNRepositoryManager* r);
BINARYNINJACOREAPI void BNRegisterForPluginLoading(
const char* pluginApiName,
- bool (*cb)(const char* repoPath, const char* pluginPath, void* ctx),
+ bool (*cb)(const char* repoPath, const char* pluginPath, bool force, void* ctx), // BNLoadPluginCallback
void* ctx);
- BINARYNINJACOREAPI bool BNLoadPluginForApi(const char* pluginApiName, const char* repoPath, const char* pluginPath);
+ BINARYNINJACOREAPI bool BNLoadPluginForApi(const char* pluginApiName, const char* repoPath, const char* pluginPath, bool force);
+ BINARYNINJACOREAPI char** BNGetRegisteredPluginLoaders(size_t* count);
+ BINARYNINJACOREAPI void BNFreeRegisteredPluginLoadersList(char** pluginLoaders, size_t count);
// LLVM Services APIs
BINARYNINJACOREAPI void BNLlvmServicesInit(void);
@@ -3796,6 +3814,7 @@ extern "C"
BINARYNINJACOREAPI bool BNIsPathDirectory(const char* path);
BINARYNINJACOREAPI bool BNIsPathRegularFile(const char* path);
BINARYNINJACOREAPI bool BNFileSize(const char* path, uint64_t* size);
+ BINARYNINJACOREAPI bool BNRenameFile(const char* source, const char* dest);
// Settings APIs
BINARYNINJACOREAPI bool BNSettingsRegisterGroup(const char* registry, const char* group, const char* title);