Class GhidraURLConnection

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

public class GhidraURLConnection extends URLConnection
  • Field Details

  • 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 for this connection prior to connecting or getting content. The default access is read-only. Extreme care must be taken when setting the state to false for local projects without the use of a ProjectLock.

      NOTE: Local project URL connections only support read-only access.

      Parameters:
      state - read-only if true, otherwise read-write
      Throws:
      UnsupportedOperationException - if an attempt is made to enable write access for a local project URL.
      IllegalStateException - if already connected
    • 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
    • getStatusCode

      public GhidraURLConnection.StatusCode getStatusCode() throws IOException
      Gets the status code from a Ghidra URL connect attempt.
      Returns:
      the Ghidra connection status code or null
      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 - if an IO error occurs
    • 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 - if an IO error occurs
    • 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