Package ghidra.framework.remote

# Interface GhidraServerHandle

All Superinterfaces:
  `Remote`

public interface GhidraServerHandle extends Remote
`GhidraServerHandle` provides access to a remote server. This remote interface facilitates user login/authentication, providing a more useful handle to the associated repository server.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `BIND_NAME`
  RMI registry binding name for the supported version of the remote GhidraServerHandle object.
  `static final String`
  `BIND_NAME_PREFIX`
  RMI registry binding name prefix for all versions of the remote GhidraServerHandle object.
  `static final int`
  `DEFAULT_PORT`
  Default RMI base port for Ghidra Server
  `static final int`
  `INTERFACE_VERSION`
  The collective interface version for all Ghidra Server remote interfaces.
  `static final String`
  `MIN_GHIDRA_VERSION`
  Minimum version of Ghidra which utilized the current INTERFACE_VERSION

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `checkCompatibility(int serverInterfaceVersion)`
  Check server interface compatibility
  `Callback[]`
  `getAuthenticationCallbacks()`
  Returns user authentication proxy object.
  `RemoteRepositoryServerHandle`
  `getRepositoryServer(Subject user, Callback[] authCallbacks)`
  Get a handle to the repository server.

- ## Field Details

  - ### INTERFACE_VERSION

    static final int INTERFACE_VERSION
    The collective interface version for all Ghidra Server remote interfaces. If any remote interface is modified, this value should be incremented. Version Change History: 1: Original Version 2: Changed API to support NAT and firewalls 3: Allow user to login with alternate user ID 4: Added additional checkout data and database ID support (4.2) 5: Added support for quick update of checkout file following merged check-in on server, also added alternate authentication via password file (4.4) 6: Refactored BufferFile related classes creating a ManagedBufferFile which supports all the version-control capabilities. (5.2) 7: Added support for SSH authentication callback, anonymous user access (5.4) 8: Added salted local passwords, added LocalIndexedFilesystem V1 with ability to obtain file count (6.1) 9: Added support for transient checkouts (7.2) 10: Added BlockStreamServer (7.4) 11: Revised password hash to SHA-256 (9.0) - version 9.1 switched to using SSL/TLS for RMI registry connection preventing older clients the ability to connect to the server. Remote interface remained unchanged allowing 9.1 clients to connect to 9.0 server.
    See Also:
      - Constant Field Values

  - ### MIN_GHIDRA_VERSION

    static final String MIN_GHIDRA_VERSION
    Minimum version of Ghidra which utilized the current INTERFACE_VERSION
    See Also:
      - Constant Field Values

  - ### DEFAULT_PORT

    static final int DEFAULT_PORT
    Default RMI base port for Ghidra Server
    See Also:
      - Constant Field Values

  - ### BIND_NAME_PREFIX

    static final String BIND_NAME_PREFIX
    RMI registry binding name prefix for all versions of the remote GhidraServerHandle object.
    See Also:
      - Constant Field Values

  - ### BIND_NAME

    static final String BIND_NAME
    RMI registry binding name for the supported version of the remote GhidraServerHandle object.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### getAuthenticationCallbacks

    Callback[] getAuthenticationCallbacks() throws RemoteException
    Returns user authentication proxy object.
    Returns:
      authentication callbacks which must be satisfied or null if authentication not required.
    Throws:
      `RemoteException`

  - ### getRepositoryServer

    RemoteRepositoryServerHandle getRepositoryServer(Subject user, Callback[] authCallbacks) throws LoginException, RemoteException
    Get a handle to the repository server.
    Parameters:
      `user` - user subject containing GhidraPrincipal
      `authCallbacks` - valid authentication callback objects which have been satisfied, or null if server does not require authentication.
    Returns:
      repository server handle.
    Throws:
      `LoginException` - if user authentication fails
      `RemoteException`
    See Also:
      - `getAuthenticationCallbacks()`

  - ### checkCompatibility

    void checkCompatibility(int serverInterfaceVersion) throws RemoteException
    Check server interface compatibility
    Parameters:
      `serverInterfaceVersion` - client/server interface version
    Throws:
      `RemoteException`
    See Also:
      - `INTERFACE_VERSION`