Classes | |
class | AnalysisMergeConflict |
class | CollabChangeset |
class | CollabGroup |
class | CollabPermission |
class | CollabSnapshot |
class | CollabUndoEntry |
class | CollabUser |
struct | DatabaseConflictHandlerContext |
struct | NameChangesetContext |
class | Remote |
struct | RemoteException |
class | RemoteFile |
class | RemoteFolder |
class | RemoteProject |
struct | SyncException |
struct | TypeArchiveConflictHandlerContext |
class | TypeArchiveMergeConflict |
Typedefs | |
typedef std::function< bool(Ref< CollabChangeset >)> | NameChangesetFunction |
typedef std::function< bool(size_t, size_t)> | ProgressFunction |
typedef std::function< bool(const std::unordered_map< std::string, Ref< AnalysisMergeConflict > > &conflicts)> | AnalysisConflictHandler |
typedef std::function< bool(const std::vector< Ref< TypeArchiveMergeConflict > > &conflicts)> | TypeArchiveConflictHandler |
Functions | |
bool | DatabaseConflictHandlerCallback (void *ctxt, const char **keys, BNAnalysisMergeConflict **conflicts, size_t count) |
bool | TypeArchiveConflictHandlerCallback (void *ctxt, BNTypeArchiveMergeConflict **conflicts, size_t count) |
bool | NameChangesetCallback (void *ctxt, BNCollaborationChangeset *changeset) |
template<> | |
std::any | AnalysisMergeConflict::GetPathItem< std::any > (const std::string &path) |
template<> | |
std::string | AnalysisMergeConflict::GetPathItem< std::string > (const std::string &path) |
template<> | |
nlohmann::json | AnalysisMergeConflict::GetPathItem< nlohmann::json > (const std::string &path) |
Ref< Remote > | GetActiveRemote () |
void | SetActiveRemote (Ref< Remote > remote) |
bool | StoreDataInKeychain (const std::string &key, const std::map< std::string, std::string > &data) |
bool | HasDataInKeychain (const std::string &key) |
std::optional< std::map< std::string, std::string > > | GetDataFromKeychain (const std::string &key) |
bool | DeleteDataFromKeychain (const std::string &key) |
void | LoadRemotes () |
std::vector< Ref< Remote > > | GetRemotes () |
Ref< Remote > | GetRemoteById (const std::string &remoteId) |
Ref< Remote > | GetRemoteByAddress (const std::string &remoteAddress) |
Ref< Remote > | GetRemoteByName (const std::string &name) |
Ref< Remote > | CreateRemote (const std::string &name, const std::string &address) |
void | RemoveRemote (const Ref< Remote > &remote) |
void | SyncDatabase (Ref< Database > database, Ref< RemoteFile > file, AnalysisConflictHandler conflictHandler, std::function< bool(size_t, size_t)> progress={}, NameChangesetFunction nameChangeset=[](Ref< CollabChangeset >){ return true;}) |
Completely sync a database, pushing/pulling/merging/applying changes. | |
void | SyncTypeArchive (Ref< TypeArchive > archive, Ref< RemoteFile > file, TypeArchiveConflictHandler conflictHandler, ProgressFunction progress={}) |
Completely sync a type archive, pushing/pulling/merging/applying changes. | |
Ref< Snapshot > | MergeSnapshots (Ref< Snapshot > first, Ref< Snapshot > second, AnalysisConflictHandler conflictHandler, ProgressFunction progress) |
Merge a pair of snapshots and create a new snapshot with the result. | |
std::string | DefaultProjectPath (Ref< RemoteProject > project) |
Get the default directory path for a remote Project. | |
std::string | DefaultFilePath (Ref< RemoteFile > file) |
Get the default filepath for a remote File. | |
Ref< FileMetadata > | DownloadFile (Ref< RemoteFile > file, const std::string &dbPath, ProgressFunction progress={}) |
Download a file from its remote, saving all snapshots to a database in the specified location. | |
void | AssignSnapshotMap (Ref< Snapshot > localSnapshot, Ref< CollabSnapshot > remoteSnapshot) |
Add a snapshot to the id map in a database. | |
Ref< RemoteFile > | UploadDatabase (Ref< FileMetadata > metadata, Ref< RemoteProject > project, Ref< RemoteFolder > folder, ProgressFunction progress, NameChangesetFunction nameChangeset={}) |
Upload a file, with database, to the remote under the given project. | |
std::optional< std::string > | GetSnapshotAuthor (Ref< Database > database, Ref< Snapshot > snapshot) |
Get the remote author of a local snapshot. | |
bool | IsCollaborationDatabase (Ref< Database > database) |
Test if a database is valid for use in collaboration. | |
Ref< Remote > | GetRemoteForLocalDatabase (Ref< Database > database) |
Get the Remote for a Database. | |
Ref< RemoteProject > | GetRemoteProjectForLocalDatabase (Ref< Database > database) |
Get the Remote Project for a Database. | |
Ref< RemoteFile > | GetRemoteFileForLocalDatabase (Ref< Database > database) |
Get the Remote File for a Database. | |
size_t | PullDatabase (Ref< Database > database, Ref< RemoteFile > file, AnalysisConflictHandler conflictHandler, ProgressFunction progress={}, NameChangesetFunction nameChangeset={}) |
Pull updated snapshots from the remote. | |
void | MergeDatabase (Ref< Database > database, AnalysisConflictHandler conflictHandler, ProgressFunction progress={}) |
Merge all leaf snapshots in a database down to a single leaf snapshot. | |
size_t | PushDatabase (Ref< Database > database, Ref< RemoteFile > file, ProgressFunction progress={}) |
Push locally added snapshots to the remote. | |
void | DumpDatabase (Ref< Database > database) |
Print debug information about a database to stdout. | |
void | IgnoreSnapshot (Ref< Database > database, Ref< Snapshot > snapshot) |
Ignore a snapshot from database syncing operations TODO: This is in place of deleting differential snapshots (which is unimplemented) | |
bool | IsSnapshotIgnored (Ref< Database > database, Ref< Snapshot > snapshot) |
Test if a snapshot is ignored from the database TODO: This is in place of deleting differential snapshots (which is unimplemented) | |
Ref< CollabSnapshot > | GetRemoteSnapshotFromLocal (Ref< Snapshot > snapshot) |
Get the remote snapshot associated with a local snapshot (if it exists) | |
Ref< Snapshot > | GetLocalSnapshotFromRemote (Ref< CollabSnapshot > snapshot, Ref< Database > database) |
Get the local snapshot associated with a remote snapshot (if it exists) | |
bool | IsCollaborationTypeArchive (Ref< TypeArchive > archive) |
Test if a type archive is valid for use in collaboration. | |
Ref< Remote > | GetRemoteForLocalTypeArchive (Ref< TypeArchive > archive) |
Get the Remote for a Type Archive. | |
Ref< RemoteProject > | GetRemoteProjectForLocalTypeArchive (Ref< TypeArchive > archive) |
Get the Remote Project for a Type Archive. | |
Ref< RemoteFile > | GetRemoteFileForLocalTypeArchive (Ref< TypeArchive > archive) |
Get the Remote File for a Type Archive. | |
Ref< CollabSnapshot > | GetRemoteSnapshotFromLocalTypeArchive (Ref< TypeArchive > archive, const std::string &snapshotId) |
Get the remote snapshot associated with a local snapshot (if it exists) in a Type Archive. | |
std::optional< std::string > | GetLocalSnapshotFromRemoteTypeArchive (Ref< CollabSnapshot > snapshot, Ref< TypeArchive > archive) |
Get the local snapshot associated with a remote snapshot (if it exists) in a Type Archive. | |
bool | IsTypeArchiveSnapshotIgnored (Ref< TypeArchive > archive, const std::string &snapshot) |
Test if a snapshot is ignored from the archive. | |
Ref< TypeArchive > | DownloadTypeArchive (Ref< RemoteFile > file, const std::string &dbPath, ProgressFunction progress={}) |
Download a type archive from its remote, saving all snapshots to an archive in the specified location. | |
Ref< RemoteFile > | UploadTypeArchive (Ref< TypeArchive > archive, Ref< RemoteProject > project, Ref< RemoteFolder > folder=nullptr, ProgressFunction progress={}, Ref< ProjectFile > coreFile=nullptr) |
Upload a type archive. | |
size_t | PushTypeArchive (Ref< TypeArchive > archive, Ref< RemoteFile > file, ProgressFunction progress={}) |
Push locally added snapshots to the remote. | |
size_t | PullTypeArchive (Ref< TypeArchive > archive, Ref< RemoteFile > file, std::function< bool(const std::vector< Ref< TypeArchiveMergeConflict > >)> conflictHandler, ProgressFunction progress={}) |
Pull updated snapshots from the remote. | |
void | DownloadDatabaseForFile (Ref< RemoteFile > file, const std::string &dbPath, bool force, ProgressFunction progress={}) |
void | SetSnapshotAuthor (Ref< Database > database, Ref< Snapshot > snapshot, const std::string &author) |
Set the remote author of a local snapshot (does not upload) | |
struct BinaryNinja::Collaboration::DatabaseConflictHandlerContext |
Class Members | ||
---|---|---|
function< bool(const unordered_map< string, Ref< AnalysisMergeConflict > >)> | callback |
struct BinaryNinja::Collaboration::NameChangesetContext |
Class Members | ||
---|---|---|
function< bool(Ref< CollabChangeset >)> | callback |
struct BinaryNinja::Collaboration::TypeArchiveConflictHandlerContext |
Class Members | ||
---|---|---|
function< bool(const vector< Ref< TypeArchiveMergeConflict > >)> | callback |
typedef std::function<bool(Ref<CollabChangeset>)> BinaryNinja::Collaboration::NameChangesetFunction |
typedef std::function<bool(size_t, size_t)> BinaryNinja::Collaboration::ProgressFunction |
typedef std::function<bool(const std::unordered_map<std::string, Ref<AnalysisMergeConflict>>& conflicts)> BinaryNinja::Collaboration::AnalysisConflictHandler |
typedef std::function<bool(const std::vector<Ref<TypeArchiveMergeConflict>>& conflicts)> BinaryNinja::Collaboration::TypeArchiveConflictHandler |
bool BinaryNinja::Collaboration::DatabaseConflictHandlerCallback | ( | void * | ctxt, |
const char ** | keys, | ||
BNAnalysisMergeConflict ** | conflicts, | ||
size_t | count ) |
bool BinaryNinja::Collaboration::TypeArchiveConflictHandlerCallback | ( | void * | ctxt, |
BNTypeArchiveMergeConflict ** | conflicts, | ||
size_t | count ) |
bool BinaryNinja::Collaboration::NameChangesetCallback | ( | void * | ctxt, |
BNCollaborationChangeset * | changeset ) |
std::any BinaryNinja::Collaboration::AnalysisMergeConflict::GetPathItem< std::any > | ( | const std::string & | path | ) |
std::string BinaryNinja::Collaboration::AnalysisMergeConflict::GetPathItem< std::string > | ( | const std::string & | path | ) |
nlohmann::json BinaryNinja::Collaboration::AnalysisMergeConflict::GetPathItem< nlohmann::json > | ( | const std::string & | path | ) |
bool BinaryNinja::Collaboration::StoreDataInKeychain | ( | const std::string & | key, |
const std::map< std::string, std::string > & | data ) |
bool BinaryNinja::Collaboration::HasDataInKeychain | ( | const std::string & | key | ) |
std::optional< std::map< std::string, std::string > > BinaryNinja::Collaboration::GetDataFromKeychain | ( | const std::string & | key | ) |
bool BinaryNinja::Collaboration::DeleteDataFromKeychain | ( | const std::string & | key | ) |
void BinaryNinja::Collaboration::LoadRemotes | ( | ) |
Ref< Remote > BinaryNinja::Collaboration::CreateRemote | ( | const std::string & | name, |
const std::string & | address ) |
void BinaryNinja::Collaboration::SyncDatabase | ( | Ref< Database > | database, |
Ref< RemoteFile > | file, | ||
AnalysisConflictHandler | conflictHandler, | ||
std::function< bool(size_t, size_t)> | progress = {}, | ||
NameChangesetFunction | nameChangeset = [](Ref< CollabChangeset >){ return true;} ) |
Completely sync a database, pushing/pulling/merging/applying changes.
database | Database to sync |
file | Remote File to sync with |
conflictHandler | Function to call to resolve snapshot conflicts |
progress | Function to call for progress updates |
nameChangeset | Function to call for naming a pushed changeset, if necessary |
SyncException | If there is an error syncing |
void BinaryNinja::Collaboration::SyncTypeArchive | ( | Ref< TypeArchive > | archive, |
Ref< RemoteFile > | file, | ||
TypeArchiveConflictHandler | conflictHandler, | ||
ProgressFunction | progress = {} ) |
Ref< Snapshot > BinaryNinja::Collaboration::MergeSnapshots | ( | Ref< Snapshot > | first, |
Ref< Snapshot > | second, | ||
AnalysisConflictHandler | conflictHandler, | ||
ProgressFunction | progress ) |
Merge a pair of snapshots and create a new snapshot with the result.
first | First snapshot to merge |
second | Second snapshot to merge |
conflictHandler | Function to call when merge conflicts are encountered |
progress | Function to call for progress updates and cancelling |
SyncException | If the snapshots have no common ancestor |
std::string BinaryNinja::Collaboration::DefaultProjectPath | ( | Ref< RemoteProject > | project | ) |
std::string BinaryNinja::Collaboration::DefaultFilePath | ( | Ref< RemoteFile > | file | ) |
Get the default filepath for a remote File.
This is based off the Setting for collaboration.directory, the file's id, the file's project's id, and the file's remote's id.
file | Remote File |
Ref< FileMetadata > BinaryNinja::Collaboration::DownloadFile | ( | Ref< RemoteFile > | file, |
const std::string & | dbPath, | ||
ProgressFunction | progress = {} ) |
Download a file from its remote, saving all snapshots to a database in the specified location.
Returns a FileContext for opening the file later.
file | Remote File to download and open |
dbPath | File path for saved database |
progress | Function to call for progress updates |
SyncException | If there was an error downloading |
void BinaryNinja::Collaboration::AssignSnapshotMap | ( | Ref< Snapshot > | localSnapshot, |
Ref< CollabSnapshot > | remoteSnapshot ) |
Add a snapshot to the id map in a database.
localSnapshot | Local snapshot, will use this snapshot's database |
remoteSnapshot | Remote snapshot |
Ref< RemoteFile > BinaryNinja::Collaboration::UploadDatabase | ( | Ref< FileMetadata > | metadata, |
Ref< RemoteProject > | project, | ||
Ref< RemoteFolder > | folder, | ||
ProgressFunction | progress, | ||
NameChangesetFunction | nameChangeset = {} ) |
Upload a file, with database, to the remote under the given project.
metadata | Local file with database |
project | Remote project under which to place the new file |
progress | Function to call for progress updates |
nameChangeset | Function to call for naming a pushed changeset, if necessary |
folderId | Id of folder that will contain the resulting file |
SyncException | If there was an error uploading |
std::optional< std::string > BinaryNinja::Collaboration::GetSnapshotAuthor | ( | Ref< Database > | database, |
Ref< Snapshot > | snapshot ) |
Get the remote author of a local snapshot.
database | Parent database |
snapshot | Snapshot to query |
Test if a database is valid for use in collaboration.
database | Database |
Ref< RemoteProject > BinaryNinja::Collaboration::GetRemoteProjectForLocalDatabase | ( | Ref< Database > | database | ) |
Ref< RemoteFile > BinaryNinja::Collaboration::GetRemoteFileForLocalDatabase | ( | Ref< Database > | database | ) |
size_t BinaryNinja::Collaboration::PullDatabase | ( | Ref< Database > | database, |
Ref< RemoteFile > | file, | ||
AnalysisConflictHandler | conflictHandler, | ||
ProgressFunction | progress = {}, | ||
NameChangesetFunction | nameChangeset = {} ) |
Pull updated snapshots from the remote.
Merge local changes with remote changes and potentially create a new snapshot for unsaved changes, named via nameChangeset.
database | Database to pull |
file | Remote File to pull to |
conflictHandler | Function to call to resolve snapshot conflicts |
progress | Function to call for progress updates |
nameChangeset | Function to call for naming a pushed changeset, if necessary |
SyncException | If there is an error pulling |
void BinaryNinja::Collaboration::MergeDatabase | ( | Ref< Database > | database, |
AnalysisConflictHandler | conflictHandler, | ||
ProgressFunction | progress = {} ) |
Merge all leaf snapshots in a database down to a single leaf snapshot.
database | Database to merge |
progress | Function to call for progress updates |
conflictHandler | Function to call to resolve snapshot conflicts |
SyncException | If there was an error merging |
size_t BinaryNinja::Collaboration::PushDatabase | ( | Ref< Database > | database, |
Ref< RemoteFile > | file, | ||
ProgressFunction | progress = {} ) |
Push locally added snapshots to the remote.
database | Database to push |
file | Remote File to push to |
progress | Function to call for progress updates |
SyncException | If there is an error pushing |
Print debug information about a database to stdout.
database | Database to dump |
void BinaryNinja::Collaboration::IgnoreSnapshot | ( | Ref< Database > | database, |
Ref< Snapshot > | snapshot ) |
Ignore a snapshot from database syncing operations TODO: This is in place of deleting differential snapshots (which is unimplemented)
database | Parent database |
snapshot | Snapshot to ignore |
bool BinaryNinja::Collaboration::IsSnapshotIgnored | ( | Ref< Database > | database, |
Ref< Snapshot > | snapshot ) |
Test if a snapshot is ignored from the database TODO: This is in place of deleting differential snapshots (which is unimplemented)
database | Parent database |
snapshot | Snapshot to test |
Ref< CollabSnapshot > BinaryNinja::Collaboration::GetRemoteSnapshotFromLocal | ( | Ref< Snapshot > | snapshot | ) |
Get the remote snapshot associated with a local snapshot (if it exists)
snapshot | Local snapshot |
bool BinaryNinja::Collaboration::IsCollaborationTypeArchive | ( | Ref< TypeArchive > | archive | ) |
Test if a type archive is valid for use in collaboration.
archive | Type archive |
Ref< Remote > BinaryNinja::Collaboration::GetRemoteForLocalTypeArchive | ( | Ref< TypeArchive > | archive | ) |
Ref< RemoteProject > BinaryNinja::Collaboration::GetRemoteProjectForLocalTypeArchive | ( | Ref< TypeArchive > | archive | ) |
Ref< RemoteFile > BinaryNinja::Collaboration::GetRemoteFileForLocalTypeArchive | ( | Ref< TypeArchive > | archive | ) |
Ref< CollabSnapshot > BinaryNinja::Collaboration::GetRemoteSnapshotFromLocalTypeArchive | ( | Ref< TypeArchive > | archive, |
const std::string & | snapshotId ) |
std::optional< std::string > BinaryNinja::Collaboration::GetLocalSnapshotFromRemoteTypeArchive | ( | Ref< CollabSnapshot > | snapshot, |
Ref< TypeArchive > | archive ) |
bool BinaryNinja::Collaboration::IsTypeArchiveSnapshotIgnored | ( | Ref< TypeArchive > | archive, |
const std::string & | snapshot ) |
Ref< TypeArchive > BinaryNinja::Collaboration::DownloadTypeArchive | ( | Ref< RemoteFile > | file, |
const std::string & | dbPath, | ||
ProgressFunction | progress = {} ) |
Download a type archive from its remote, saving all snapshots to an archive in the specified location.
Returns a Ref<TypeArchive> for using later.
file | Remote Type Archive file to download and open |
dbPath | File path for saved archive |
progress | Function to call for progress updates |
SyncException | If there was an error downloading |
Ref< RemoteFile > BinaryNinja::Collaboration::UploadTypeArchive | ( | Ref< TypeArchive > | archive, |
Ref< RemoteProject > | project, | ||
Ref< RemoteFolder > | folder = nullptr, | ||
ProgressFunction | progress = {}, | ||
Ref< ProjectFile > | coreFile = nullptr ) |
Upload a type archive.
archive | Type archive |
project | Containing project |
folder | Containing folder |
progress | Function to call for progress updates |
coreFile | Core ProjectFile structure, if archive is in a project |
size_t BinaryNinja::Collaboration::PushTypeArchive | ( | Ref< TypeArchive > | archive, |
Ref< RemoteFile > | file, | ||
ProgressFunction | progress = {} ) |
Push locally added snapshots to the remote.
archive | Type Archive to push |
file | Remote File to push to |
progress | Function to call for progress updates |
SyncException | If there is an error pushing |
size_t BinaryNinja::Collaboration::PullTypeArchive | ( | Ref< TypeArchive > | archive, |
Ref< RemoteFile > | file, | ||
std::function< bool(const std::vector< Ref< TypeArchiveMergeConflict > >)> | conflictHandler, | ||
ProgressFunction | progress = {} ) |
Pull updated snapshots from the remote.
Merge local changes with remote changes and potentially create a new snapshot for unsaved changes, named via nameChangeset.
archive | Type Archive to pull |
file | Remote File to pull to |
conflictHandler | Function to call to resolve snapshot conflicts |
progress | Function to call for progress updates |
nameChangeset | Function to call for naming a pushed changeset, if necessary |
SyncException | If there is an error pulling |
void BinaryNinja::Collaboration::DownloadDatabaseForFile | ( | Ref< RemoteFile > | file, |
const std::string & | dbPath, | ||
bool | force, | ||
ProgressFunction | progress = {} ) |