Package ghidra.framework.protocol.ghidra
Class GhidraURLConnection
java.lang.Object
java.net.URLConnection
ghidra.framework.protocol.ghidra.GhidraURLConnection
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Ghidra Status-Code 404: Not Found.static final int
Ghidra Status-Code 200: OK.static final int
Ghidra Status-Code 401: Unauthorized.static final String
Ghidra content type - domain folder/file wrapped within GhidraURLWrappedContent object.static final String
Ghidra content type - repository server in the form of a RepositoryAdapterFields inherited from class java.net.URLConnection
allowUserInteraction, connected, doInput, doOutput, ifModifiedSince, url, useCaches
-
Constructor Summary
ConstructorsConstructorDescriptionGhidraURLConnection
(URL ghidraUrl) Construct a Ghidra URL connection which uses the default handler without any extension protocol.GhidraURLConnection
(URL url, GhidraProtocolHandler protocolHandler) Construct a Ghidra URL connection which requires an Ghidra protocol extension -
Method Summary
Modifier and TypeMethodDescriptionvoid
connect()
Get content associated with the URLGets the repository folder item name associated with this connection.Gets the repository folder path associated with this connection.If URL connects and corresponds to a valid repository, this method may be used to obtain the associated ProjectData object.Gets the repository name associated with thisGhidraURLConnection
.int
Gets the status code from a Ghidra URL response.boolean
Connection was opened as read-onlyvoid
setReadOnly
(boolean state) Set the read-only state of the content.Methods inherited from class java.net.URLConnection
addRequestProperty, getAllowUserInteraction, getConnectTimeout, getContent, getContentEncoding, getContentLength, getContentLengthLong, getDate, getDefaultAllowUserInteraction, getDefaultRequestProperty, getDefaultUseCaches, getDefaultUseCaches, getDoInput, getDoOutput, getExpiration, getFileNameMap, getHeaderField, getHeaderField, getHeaderFieldDate, getHeaderFieldInt, getHeaderFieldKey, getHeaderFieldLong, getHeaderFields, getIfModifiedSince, getLastModified, getPermission, getReadTimeout, getRequestProperties, getRequestProperty, getURL, getUseCaches, guessContentTypeFromName, guessContentTypeFromStream, setAllowUserInteraction, setConnectTimeout, setContentHandlerFactory, setDefaultAllowUserInteraction, setDefaultRequestProperty, setDefaultUseCaches, setDefaultUseCaches, setDoInput, setDoOutput, setFileNameMap, setIfModifiedSince, setReadTimeout, setRequestProperty, setUseCaches, toString
-
Field Details
-
GHIDRA_OK
public static final int GHIDRA_OKGhidra Status-Code 200: OK.- See Also:
-
GHIDRA_UNAUTHORIZED
public static final int GHIDRA_UNAUTHORIZEDGhidra Status-Code 401: Unauthorized. This response code includes a variety of connection errors which are reported/logged by the Ghidra Server support code.- See Also:
-
GHIDRA_NOT_FOUND
public static final int GHIDRA_NOT_FOUNDGhidra Status-Code 404: Not Found.- See Also:
-
GHIDRA_WRAPPED_CONTENT
Ghidra content type - domain folder/file wrapped within GhidraURLWrappedContent object.- See Also:
-
REPOSITORY_SERVER_CONTENT
Ghidra content type - repository server in the form of a RepositoryAdapter- See Also:
-
-
Constructor Details
-
GhidraURLConnection
Construct a Ghidra URL connection which uses the default handler without any extension protocol.- Parameters:
ghidraUrl
- ghidra protocol URL (e.g., ghidra://server/repo)- Throws:
MalformedURLException
- if URL is invalid
-
GhidraURLConnection
public GhidraURLConnection(URL url, GhidraProtocolHandler protocolHandler) throws MalformedURLException Construct a Ghidra URL connection which requires an Ghidra protocol extension- Parameters:
url
- extension URL without the ghidra protocol prefix (e.g., http://server/repo)protocolHandler
- Ghidra protocol extension handler- Throws:
MalformedURLException
- if URL is invalid
-
-
Method Details
-
isReadOnly
public boolean isReadOnly()Connection was opened as read-only- Returns:
- true if read-only connection
-
setReadOnly
public void setReadOnly(boolean state) Set the read-only state of the content. Extreme care must be taken when setting the state to false for local projects without the use of a ProjectLock. This setting is currently ignored for server repositories which are always read-only in Headed mode and read-write in Headless mode.- Parameters:
state
- read-only if true, otherwise read-write
-
getRepositoryName
Gets the repository name associated with thisGhidraURLConnection
.- Returns:
- the repository name or null if URL does not identify a specific repository
-
getFolderPath
Gets the repository folder path associated with this connection. 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 this connection. 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
-
getResponseCode
Gets the status code from a Ghidra URL response.- Returns:
- the Ghidra Status-Code, or -1
- Throws:
IOException
- if an error occurred connecting to the server.
-
getContentType
- Overrides:
getContentType
in classURLConnection
-
getContent
Get content associated with the URL- Overrides:
getContent
in classURLConnection
- Returns:
- URL content generally in the form of GhidraURLWrappedContent, although other special cases may result in different content (Example: a server-only URL could result in content class of RepositoryServerAdapter).
- Throws:
IOException
-
getProjectData
If URL connects and corresponds to a valid repository, this method may be used to obtain the associated ProjectData object. The caller is responsible for closing the returned project data when no longer in-use, failure to do so may prevent release of repository handle to server. Only a single call to this method is permitted.- Returns:
- transient project data or null if unavailable
- Throws:
IOException
-
connect
- Specified by:
connect
in classURLConnection
- Throws:
IOException
-
getInputStream
- Overrides:
getInputStream
in classURLConnection
- Throws:
IOException
-
getOutputStream
- Overrides:
getOutputStream
in classURLConnection
- Throws:
IOException
-