Class GhidraURLConnection

java.lang.Object
java.net.URLConnection
ghidra.framework.protocol.ghidra.GhidraURLConnection

public class GhidraURLConnection extends URLConnection
  • Field Details

    • GHIDRA_OK

      public static final int GHIDRA_OK
      Ghidra Status-Code 200: OK.
      See Also:
    • GHIDRA_UNAUTHORIZED

      public static final int GHIDRA_UNAUTHORIZED
      Ghidra 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_FOUND
      Ghidra Status-Code 404: Not Found.
      See Also:
    • GHIDRA_WRAPPED_CONTENT

      public static final String GHIDRA_WRAPPED_CONTENT
      Ghidra content type - domain folder/file wrapped within GhidraURLWrappedContent object.
      See Also:
    • REPOSITORY_SERVER_CONTENT

      public static final String REPOSITORY_SERVER_CONTENT
      Ghidra content type - repository server in the form of a RepositoryAdapter
      See Also:
  • Constructor Details

    • GhidraURLConnection

      public GhidraURLConnection(URL ghidraUrl) throws MalformedURLException
      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

      public String getRepositoryName()
      Gets the repository name associated with this GhidraURLConnection.
      Returns:
      the repository name or null if URL does not identify a specific repository
    • getFolderPath

      public String 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

      public String 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

      public int getResponseCode() throws IOException
      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

      public String getContentType()
      Overrides:
      getContentType in class URLConnection
    • getContent

      public Object getContent() throws IOException
      Get content associated with the URL
      Overrides:
      getContent in class URLConnection
      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

      public ProjectData getProjectData() throws IOException
      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

      public void connect() throws IOException
      Specified by:
      connect in class URLConnection
      Throws:
      IOException
    • getInputStream

      public InputStream getInputStream() throws IOException
      Overrides:
      getInputStream in class URLConnection
      Throws:
      IOException
    • getOutputStream

      public OutputStream getOutputStream() throws IOException
      Overrides:
      getOutputStream in class URLConnection
      Throws:
      IOException