Skip to content

Commit 39890c2

Browse files
committed
Plugin Manager V2 Migration WIP check-in
1 parent 567e896 commit 39890c2

File tree

4 files changed

+57
-50
lines changed

4 files changed

+57
-50
lines changed

binaryninjaapi.h

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18414,6 +18414,18 @@ namespace BinaryNinja {
1841418414
typedef BNPluginStatus PluginStatus;
1841518415
typedef BNPluginType PluginType;
1841618416

18417+
struct ExtensionVersion
18418+
{
18419+
std::string id;
18420+
std::string version;
18421+
18422+
std::string longDescription;
18423+
std::string changelog;
18424+
18425+
uint64_t minimumClientVersion;
18426+
std::string created;
18427+
};
18428+
1841718429
/*!
1841818430
\ingroup pluginmanager
1841918431
*/
@@ -18430,20 +18442,19 @@ namespace BinaryNinja {
1843018442
std::string GetPluginDirectory() const;
1843118443
std::string GetAuthor() const;
1843218444
std::string GetDescription() const;
18433-
std::string GetLicenseText() const;
18434-
std::string GetLongdescription() const;
1843518445
std::string GetName() const;
1843618446
std::vector<PluginType> GetPluginTypes() const;
1843718447
std::string GetPackageUrl() const;
1843818448
std::string GetProjectUrl() const;
1843918449
std::string GetAuthorUrl() const;
18440-
std::string GetVersion() const;
18450+
std::vector<ExtensionVersion> GetVersions() const;
18451+
std::string GetCurrentVersion() const;
1844118452
std::string GetCommit() const;
1844218453
std::string GetRepository() const;
1844318454
std::string GetProjectData();
1844418455
VersionInfo GetMinimumVersionInfo() const;
1844518456
VersionInfo GetMaximumVersionInfo() const;
18446-
uint64_t GetLastUpdate();
18457+
std::string GetCreationDate();
1844718458
bool IsViewOnly() const;
1844818459
bool IsBeingDeleted() const;
1844918460
bool IsBeingUpdated() const;

binaryninjacore.h

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,18 @@ extern "C"
315315
typedef struct BNStringRecognizer BNStringRecognizer;
316316
typedef struct BNCustomStringType BNCustomStringType;
317317

318+
typedef struct BNPluginVersion
319+
{
320+
char* id;
321+
char* versionString;
322+
char* longDescription;
323+
char* changelog;
324+
325+
uint64_t minimumClientVersion;
326+
char* created;
327+
328+
} BNPluginVersion;
329+
318330
typedef struct BNRemoteFileSearchMatch
319331
{
320332
char* projectId;
@@ -7682,8 +7694,6 @@ extern "C"
76827694
BINARYNINJACOREAPI char** BNPluginGetApis(BNPlugin* p, size_t* count);
76837695
BINARYNINJACOREAPI const char* BNPluginGetAuthor(BNPlugin* p);
76847696
BINARYNINJACOREAPI const char* BNPluginGetDescription(BNPlugin* p);
7685-
BINARYNINJACOREAPI const char* BNPluginGetLicenseText(BNPlugin* p);
7686-
BINARYNINJACOREAPI const char* BNPluginGetLongdescription(BNPlugin* p);
76877697
BINARYNINJACOREAPI BNVersionInfo BNPluginGetMinimumVersionInfo(BNPlugin* p);
76887698
BINARYNINJACOREAPI BNVersionInfo BNPluginGetMaximumVersionInfo(BNPlugin* p);
76897699
BINARYNINJACOREAPI BNVersionInfo BNParseVersionString(const char* v);
@@ -7692,7 +7702,9 @@ extern "C"
76927702
BINARYNINJACOREAPI const char* BNPluginGetProjectUrl(BNPlugin* p);
76937703
BINARYNINJACOREAPI const char* BNPluginGetPackageUrl(BNPlugin* p);
76947704
BINARYNINJACOREAPI const char* BNPluginGetAuthorUrl(BNPlugin* p);
7695-
BINARYNINJACOREAPI const char* BNPluginGetVersion(BNPlugin* p);
7705+
BINARYNINJACOREAPI BNPluginVersion* BNPluginGetVersions(BNPlugin* p, size_t* count);
7706+
BINARYNINJACOREAPI void BNFreePluginVersions(BNPluginVersion* r, size_t count);
7707+
BINARYNINJACOREAPI const char* BNPluginGetCurrentVersion(BNPlugin* p);
76967708
BINARYNINJACOREAPI const char* BNPluginGetCommit(BNPlugin* p);
76977709
BINARYNINJACOREAPI const bool BNPluginGetViewOnly(BNPlugin* p);
76987710
BINARYNINJACOREAPI void BNFreePluginTypes(BNPluginType* r);
@@ -7724,7 +7736,7 @@ extern "C"
77247736
BINARYNINJACOREAPI bool BNPluginAreDependenciesBeingInstalled(BNPlugin* p);
77257737

77267738
BINARYNINJACOREAPI char* BNPluginGetProjectData(BNPlugin* p);
7727-
BINARYNINJACOREAPI uint64_t BNPluginGetLastUpdate(BNPlugin* p);
7739+
BINARYNINJACOREAPI char* BNPluginGetCurrentVersionCreationDate(BNPlugin* p);
77287740

77297741
BINARYNINJACOREAPI BNRepository* BNNewRepositoryReference(BNRepository* r);
77307742
BINARYNINJACOREAPI void BNFreeRepository(BNRepository* r);

pluginmanager.cpp

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,6 @@ string Extension::GetDescription() const
7070
RETURN_STRING(BNPluginGetDescription(m_object));
7171
}
7272

73-
string Extension::GetLicenseText() const
74-
{
75-
RETURN_STRING(BNPluginGetLicenseText(m_object));
76-
}
77-
78-
string Extension::GetLongdescription() const
79-
{
80-
RETURN_STRING(BNPluginGetLongdescription(m_object));
81-
}
82-
8373
VersionInfo Extension::GetMinimumVersionInfo() const
8474
{
8575
auto coreInfo = BNPluginGetMinimumVersionInfo(m_object);
@@ -141,9 +131,31 @@ string Extension::GetAuthorUrl() const
141131
}
142132

143133

144-
string Extension::GetVersion() const
134+
std::vector<ExtensionVersion> Extension::GetVersions() const
135+
{
136+
size_t count;
137+
BNPluginVersion* versionsPtr = BNPluginGetVersions(m_object, &count);
138+
std::vector<ExtensionVersion> versions;
139+
for (size_t i = 0; i < count; i++)
140+
{
141+
ExtensionVersion version;
142+
version.id = versionsPtr[i].id ? versionsPtr[i].id : "";
143+
version.version = versionsPtr[i].versionString ? versionsPtr[i].versionString :
144+
"";
145+
version.longDescription = versionsPtr[i].longDescription ? versionsPtr[i].longDescription : "";
146+
version.changelog = versionsPtr[i].changelog ? versionsPtr[i].changelog : "";
147+
version.minimumClientVersion = versionsPtr[i].minimumClientVersion;
148+
version.created = versionsPtr[i].created ? versionsPtr[i].created : "";
149+
versions.push_back(version);
150+
}
151+
BNFreePluginVersions(versionsPtr, count);
152+
return versions;
153+
}
154+
155+
156+
std::string Extension::GetCurrentVersion() const
145157
{
146-
RETURN_STRING(BNPluginGetVersion(m_object));
158+
RETURN_STRING(BNPluginGetCurrentVersion(m_object));
147159
}
148160

149161

@@ -223,9 +235,9 @@ bool Extension::AreDependenciesBeingInstalled() const
223235
}
224236

225237

226-
uint64_t Extension::GetLastUpdate()
238+
string Extension::GetCreationDate()
227239
{
228-
return BNPluginGetLastUpdate(m_object);
240+
return BNPluginGetCurrentVersionCreationDate(m_object);
229241
}
230242

231243
string Extension::GetProjectData()

rust/src/repository/plugin.rs

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,6 @@ impl Extension {
4545
unsafe { BnString::into_string(result as *mut c_char) }
4646
}
4747

48-
/// String complete license text for the given plugin
49-
pub fn license_text(&self) -> String {
50-
let result = unsafe { BNPluginGetLicenseText(self.handle.as_ptr()) };
51-
assert!(!result.is_null());
52-
unsafe { BnString::into_string(result as *mut c_char) }
53-
}
54-
55-
/// String long description of the plugin
56-
pub fn long_description(&self) -> String {
57-
let result = unsafe { BNPluginGetLongdescription(self.handle.as_ptr()) };
58-
assert!(!result.is_null());
59-
unsafe { BnString::into_string(result as *mut c_char) }
60-
}
61-
6248
/// Minimum version info the plugin was tested on
6349
pub fn minimum_version_info(&self) -> VersionInfo {
6450
let result = unsafe { BNPluginGetMinimumVersionInfo(self.handle.as_ptr()) };
@@ -98,12 +84,6 @@ impl Extension {
9884
assert!(!result.is_null());
9985
unsafe { BnString::into_string(result as *mut c_char) }
10086
}
101-
/// String version of the plugin
102-
pub fn version(&self) -> String {
103-
let result = unsafe { BNPluginGetVersion(self.handle.as_ptr()) };
104-
assert!(!result.is_null());
105-
unsafe { BnString::into_string(result as *mut c_char) }
106-
}
10787

10888
/// String of the commit of this plugin git repository
10989
pub fn commit(&self) -> String {
@@ -245,24 +225,16 @@ impl Extension {
245225
assert!(!result.is_null());
246226
unsafe { BnString::into_string(result) }
247227
}
248-
249-
/// Returns a datetime object representing the plugins last update
250-
pub fn last_update(&self) -> SystemTime {
251-
let result = unsafe { BNPluginGetLastUpdate(self.handle.as_ptr()) };
252-
UNIX_EPOCH + Duration::from_secs(result)
253-
}
254228
}
255229

256230
impl Debug for Extension {
257231
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
258232
f.debug_struct("Extension")
259233
.field("name", &self.name())
260-
.field("version", &self.version())
261234
.field("author", &self.author())
262235
.field("description", &self.description())
263236
.field("minimum_version_info", &self.minimum_version_info())
264237
.field("maximum_version_info", &self.maximum_version_info())
265-
.field("last_update", &self.last_update())
266238
.field("status", &self.status())
267239
.finish()
268240
}

0 commit comments

Comments
 (0)