Package ghidra.framework.protocol.ghidra
Class GhidraProtocolConnector
java.lang.Object
ghidra.framework.protocol.ghidra.GhidraProtocolConnector
- Direct Known Subclasses:
DefaultGhidraProtocolConnector
,DefaultLocalGhidraProtocolConnector
GhidraProtocolConnector
provides an abtract implementation to access Ghidra
repositories using various underlying communication protocols. The common requirement
for all implementations is the ability to derive a repository URL from any folder or file
URL.-
Field Summary
Modifier and TypeFieldDescriptionprotected String
protected String
protected final String
protected RepositoryAdapter
protected String
protected RepositoryServerAdapter
protected GhidraURLConnection.StatusCode
protected final URL
-
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractGhidraProtocolConnector
constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Presence of a host specification within URL will be verifiedprotected void
Perform URL verification checks to ensure that it satisfies this connector implementation requirementsprotected void
If connector supports user information within URL it will be verifiedabstract GhidraURLConnection.StatusCode
connect
(boolean readOnly) Connect to the resource specified by the associated URL.protected void
connect
(RepositoryAdapter repository) Utilized a cached connection via the specified repository adapter.Gets the repository folder item name associated with the URL.Gets the repository folder path associated with the URL.Get the RepositoryAdapter associated with a URL which specifies a repository.Gets the repository name associated with the URL.protected abstract URL
Get the URL associated with the repository/project root folder.Get the RepositoryServerAdapter associated with a URL which specifies a repository or repository server.Gets the status code from a Ghidra URL connect attempt.protected final String
initFolderItemPath
(String contentPath) InitializefolderPath
andfolderItemName
from specifiedcontentPath
.abstract boolean
Determines the read-only nature of a connected resourceprotected String
Parse item path name from URL and establish initial values for folderPath and folderItemName.protected void
Fully resolve folder/item reference once connected to the associated repository due to possible ambiguity
-
Field Details
-
url
-
repositoryName
-
itemPath
-
folderPath
-
folderItemName
-
statusCode
-
repositoryAdapter
-
repositoryServerAdapter
-
-
Constructor Details
-
GhidraProtocolConnector
AbstractGhidraProtocolConnector
constructor.- Parameters:
url
- a repository resource URL appropriate for the specific protocol implementation- Throws:
MalformedURLException
- if URL is invalid
-
-
Method Details
-
getRepositoryRootGhidraURL
Get the URL associated with the repository/project root folder. This will be used as a key to its corresponding transient project data.- Returns:
- root folder URL
-
checkProtocol
Perform URL verification checks to ensure that it satisfies this connector implementation requirements- Throws:
MalformedURLException
- if URL is invalid
-
checkUserInfo
If connector supports user information within URL it will be verified- Throws:
MalformedURLException
- if URL contains user information and it is either invalid or unsupported
-
checkHostInfo
Presence of a host specification within URL will be verified- Throws:
MalformedURLException
- if URL is missing proper host specification
-
initFolderItemPath
InitializefolderPath
andfolderItemName
from specifiedcontentPath
.- Parameters:
contentPath
- absolute content path (null not permitted)- Returns:
- full content path
- Throws:
MalformedURLException
- if non-null invalidcontentPath
specified
-
parseItemPath
Parse item path name from URL and establish initial values for folderPath and folderItemName.- Returns:
- original item path from URL or null if not specified
- Throws:
MalformedURLException
- if URL is invalid
-
getStatusCode
Gets the status code from a Ghidra URL connect attempt.- Returns:
- the Ghidra status code or null if not yet connected
- See Also:
-
getRepositoryName
Gets the repository name associated with the URL. If a local URL is used this will correspond to the project name.- Returns:
- the repository name or null if URL does not identify a specific repository
-
getRepositoryAdapter
Get the RepositoryAdapter associated with a URL which specifies a repository.- Returns:
- repository adapter or null if a project locator is supplied instead
-
getRepositoryServerAdapter
Get the RepositoryServerAdapter associated with a URL which specifies a repository or repository server.- Returns:
- repository server adapter or null if a project locator is supplied instead
-
getFolderPath
Gets the repository folder path associated with the URL. If an ambiguous path has been specified, the folder path may change after a connection is established (e.g., folder item name will be appended to folder path and item name will become null if item turns out to be a folder).- Returns:
- repository folder path or null
-
getFolderItemName
Gets the repository folder item name associated with the URL. If an ambiguous path has been specified, the folder item name may become null after a connection is established (e.g., folder item name will be appended to folder path and item name will become null if item turns out to be a folder).- Returns:
- folder item name or null
-
resolveItemPath
Fully resolve folder/item reference once connected to the associated repository due to possible ambiguity- Throws:
IOException
- if an IO error occurs
-
connect
Utilized a cached connection via the specified repository adapter. This method may only be invoked if not yet connected and the associated URL corresponds to a repository (getRepositoryName() != null). The connection status code should be established based upon the availability of the URL referenced repository resource (i.e., folder or file).- Parameters:
repository
- existing connected repository adapter- Throws:
IOException
- if an IO error occurs
-
connect
Connect to the resource specified by the associated URL. This method should only be invoked once, a second attempt may result in an IOException.- Parameters:
readOnly
- if resource should be requested for write access.- Returns:
- connection status code
- Throws:
IOException
- if a connection error occurs
-
isReadOnly
Determines the read-only nature of a connected resource- Returns:
- true if read-only, false if write access allowed
- Throws:
NotConnectedException
- if connect has not yet been performed
-