Skip to content

Management Interface: client_updates

This command, and its sub-commands, implement a method of downloading and re-hosting Binary Ninja Ultimate updates for the Enterprise server to distribute to clients.

This is most useful in an offline deployment, but also nice in situations where you are switching versions often and your server is faster than ours.

Note

By default, Binary Ninja is configured to update directly from Vector 35's servers. Clients that wish to use the Enterprise server instead will need to set updates.useEnterpriseServer in their settings.

Typical Usage

Re-hosting client updates is a two-step process. First, you download the update bundles from us. Then, you deploy them to the Enterprise server.

Downloading Updates from Vector 35

Download updates from the official Binary Ninja update servers with manage_server client_updates download. These will be placed into a directory named client_updates by default, but you can point it at any directory with manage_server client_updates download --update-folder path/to/updates/folder. If this directory already exists, it will verify the files within without re-downloading and download any that are corrupted or missing.

If you only want to download the latest client updates, pass the --latest-only flag. This will download only the latest versions of the stable and dev channel updates for the platform(s) you've selected.

Syncing Updates to the Enterprise Server

Upload the updates you've downloaded to your Enterprise server with manage_server client_updates sync. By default, this assumes there is a local directory named client_updates, but you can point it at any directory with manage_server client_updates sync --update-folder path/to/updates/folder.

This command will synchronize the updates from this directory to the server and the update directory should contain all updates, not just those you were missing.

Command Help

Manage Enterprise client update files

Usage: manage_server client_updates [OPTIONS] <COMMAND>

Commands:
  download  Download Enterprise client updates from the official Binary Ninja update servers
  sync      Sync client updates from downloaded files
  rm        Remove client updates from server
  help      Print this message or the help of the given subcommand(s)

Options:
      --swarm[=<STACK_NAME>]             Operate in docker swarm mode [env: ENTERPRISE_STACK_NAME=]
      --registry-host <HOSTNAME>         Hostname of custom registry [env: ENTERPRISE_REGISTRY_HOST=registry.internal.v35.us] [default: registry.enterprise.binary.ninja]
      --registry-username <USER>         Username for custom registry [env: ENTERPRISE_REGISTRY_USERNAME=]
      --registry-password <PASSWORD>     Password for custom registry [env: ENTERPRISE_REGISTRY_PASSWORD=]
      --docker-host <HOST>               Overrides the default Docker/Podman Unix socket [env: DOCKER_HOST=]
      --container-engine <ENGINE>        Container engine to use for deployments (docker or podman) [env: ENTERPRISE_CONTAINER_ENGINE=docker] [default: docker] [possible values: docker, podman]
  -l, --license-file <license-file>      Path to Binary Ninja license file [env: ENTERPRISE_SERVER_LICENSE_FILE=] [default: license.dat]
  -b, --license-bundle <license-bundle>  Local path to Enterprise client floating license bundle [env: ENTERPRISE_SERVER_LICENSE_BUNDLE_FILE=] [default: license-bundle.b64]
      --uid <uid>                        User ID used for data and tasks (defaults to current User ID) [env: ENTERPRISE_SERVER_UID=]
      --gid <gid>                        Group ID used for data and tasks (defaults to current Group ID) [env: ENTERPRISE_SERVER_GID=]
  -h, --help                             Print help

Database Options:
      --db-name <NAME>           Name of database to use [env: ENTERPRISE_DATABASE_NAME=] [default: binaryninja_enterprise]
      --db-host <HOSTNAME>       Name of host to use when connecting to database [env: ENTERPRISE_DATABASE_HOST=] [default: database]
      --db-port <PORT>           The port to use when connecting to database [env: ENTERPRISE_DATABASE_PORT=] [default: 5432]
      --db-user <USERNAME>       The user to use when connecting to database [env: ENTERPRISE_DATABASE_USER=] [default: binaryninja_enterprise]
      --db-password-file <FILE>  Path to file containing password to authenticate with the database [env: ENTERPRISE_DATABASE_PASSWORD_FILE=] [default: ./secrets/db_password]

Key-Value Store Options:
      --redis-url <URL>  URL to use when connecting to message broker [env: ENTERPRISE_KV_STORE_URL=] [default: redis://redis:6379]

Object Store Options:
      --object-store-bucket-name <BUCKET>    Object store bucket name (must be between 3 and 63 characters, only using lowercase letters, numbers, dot, and hyphen) [env: ENTERPRISE_OBJECT_STORE_BUCKET_NAME=] [default: binaryninja-enterprise]
      --object-store-endpoint-url <URL>      Object store endpoint URL [env: ENTERPRISE_OBJECT_STORE_URL=] [default: https://object-store:8333]
      --object-store-access-key-file <FILE>  Path to file containing the access key ID to use when authenticating with the object store [env: ENTERPRISE_OBJECT_STORE_ACCESS_KEY_FILE=] [default: ./secrets/object_store_access_key_id]
      --object-store-secret-key-file <FILE>  Path to file containing the secret access key to use when authenticating with the object store [env: ENTERPRISE_OBJECT_STORE_SECRET_KEY_FILE=] [default: ./secrets/object_store_secret_access_key]

download Sub-Command

Download Enterprise client updates from the official Binary Ninja update servers

Usage: manage_server client_updates download [OPTIONS]

Options:
  -f, --update-folder <update-folder>    Local path to Enterprise client update folder [default: client_updates]
      --swarm[=<STACK_NAME>]             Operate in docker swarm mode [env: ENTERPRISE_STACK_NAME=]
  -m, --min-version <min-version>        Minimum version of updates to be downloaded (latest stable version will always be downloaded) [default: 5.2.8722]
      --registry-host <HOSTNAME>         Hostname of custom registry [env: ENTERPRISE_REGISTRY_HOST=registry.internal.v35.us] [default: registry.enterprise.binary.ninja]
      --latest-only                      Only download files for the latest stable and dev versions
      --registry-username <USER>         Username for custom registry [env: ENTERPRISE_REGISTRY_USERNAME=]
      --platforms <platforms>...         Platforms to download updates for [default: linux,win64,macosx] [possible values: linux, macosx, win64]
      --registry-password <PASSWORD>     Password for custom registry [env: ENTERPRISE_REGISTRY_PASSWORD=]
      --docker-host <HOST>               Overrides the default Docker/Podman Unix socket [env: DOCKER_HOST=]
      --legacy-format                    Download updates in a format compatible with clients older than 3.0.3246. This will take much more disk space.
      --container-engine <ENGINE>        Container engine to use for deployments (docker or podman) [env: ENTERPRISE_CONTAINER_ENGINE=docker] [default: docker] [possible values: docker, podman]
  -l, --license-file <license-file>      Path to Binary Ninja license file [env: ENTERPRISE_SERVER_LICENSE_FILE=] [default: license.dat]
  -b, --license-bundle <license-bundle>  Local path to Enterprise client floating license bundle [env: ENTERPRISE_SERVER_LICENSE_BUNDLE_FILE=] [default: license-bundle.b64]
      --uid <uid>                        User ID used for data and tasks (defaults to current User ID) [env: ENTERPRISE_SERVER_UID=]
      --gid <gid>                        Group ID used for data and tasks (defaults to current Group ID) [env: ENTERPRISE_SERVER_GID=]
  -h, --help                             Print help

Database Options:
      --db-name <NAME>           Name of database to use [env: ENTERPRISE_DATABASE_NAME=] [default: binaryninja_enterprise]
      --db-host <HOSTNAME>       Name of host to use when connecting to database [env: ENTERPRISE_DATABASE_HOST=] [default: database]
      --db-port <PORT>           The port to use when connecting to database [env: ENTERPRISE_DATABASE_PORT=] [default: 5432]
      --db-user <USERNAME>       The user to use when connecting to database [env: ENTERPRISE_DATABASE_USER=] [default: binaryninja_enterprise]
      --db-password-file <FILE>  Path to file containing password to authenticate with the database [env: ENTERPRISE_DATABASE_PASSWORD_FILE=] [default: ./secrets/db_password]

Key-Value Store Options:
      --redis-url <URL>  URL to use when connecting to message broker [env: ENTERPRISE_KV_STORE_URL=] [default: redis://redis:6379]

Object Store Options:
      --object-store-bucket-name <BUCKET>    Object store bucket name (must be between 3 and 63 characters, only using lowercase letters, numbers, dot, and hyphen) [env: ENTERPRISE_OBJECT_STORE_BUCKET_NAME=] [default: binaryninja-enterprise]
      --object-store-endpoint-url <URL>      Object store endpoint URL [env: ENTERPRISE_OBJECT_STORE_URL=] [default: https://object-store:8333]
      --object-store-access-key-file <FILE>  Path to file containing the access key ID to use when authenticating with the object store [env: ENTERPRISE_OBJECT_STORE_ACCESS_KEY_FILE=] [default: ./secrets/object_store_access_key_id]
      --object-store-secret-key-file <FILE>  Path to file containing the secret access key to use when authenticating with the object store [env: ENTERPRISE_OBJECT_STORE_SECRET_KEY_FILE=] [default: ./secrets/object_store_secret_access_key]

sync Sub-Command

Sync client updates from downloaded files

Usage: manage_server client_updates sync [OPTIONS]

Options:
  -f, --update-folder <update-folder>    Path to folder containing client update files [default: client_updates]
      --swarm[=<STACK_NAME>]             Operate in docker swarm mode [env: ENTERPRISE_STACK_NAME=]
      --registry-host <HOSTNAME>         Hostname of custom registry [env: ENTERPRISE_REGISTRY_HOST=registry.internal.v35.us] [default: registry.enterprise.binary.ninja]
      --registry-username <USER>         Username for custom registry [env: ENTERPRISE_REGISTRY_USERNAME=]
      --registry-password <PASSWORD>     Password for custom registry [env: ENTERPRISE_REGISTRY_PASSWORD=]
      --docker-host <HOST>               Overrides the default Docker/Podman Unix socket [env: DOCKER_HOST=]
      --container-engine <ENGINE>        Container engine to use for deployments (docker or podman) [env: ENTERPRISE_CONTAINER_ENGINE=docker] [default: docker] [possible values: docker, podman]
  -l, --license-file <license-file>      Path to Binary Ninja license file [env: ENTERPRISE_SERVER_LICENSE_FILE=] [default: license.dat]
  -b, --license-bundle <license-bundle>  Local path to Enterprise client floating license bundle [env: ENTERPRISE_SERVER_LICENSE_BUNDLE_FILE=] [default: license-bundle.b64]
      --uid <uid>                        User ID used for data and tasks (defaults to current User ID) [env: ENTERPRISE_SERVER_UID=]
      --gid <gid>                        Group ID used for data and tasks (defaults to current Group ID) [env: ENTERPRISE_SERVER_GID=]
  -h, --help                             Print help

Database Options:
      --db-name <NAME>           Name of database to use [env: ENTERPRISE_DATABASE_NAME=] [default: binaryninja_enterprise]
      --db-host <HOSTNAME>       Name of host to use when connecting to database [env: ENTERPRISE_DATABASE_HOST=] [default: database]
      --db-port <PORT>           The port to use when connecting to database [env: ENTERPRISE_DATABASE_PORT=] [default: 5432]
      --db-user <USERNAME>       The user to use when connecting to database [env: ENTERPRISE_DATABASE_USER=] [default: binaryninja_enterprise]
      --db-password-file <FILE>  Path to file containing password to authenticate with the database [env: ENTERPRISE_DATABASE_PASSWORD_FILE=] [default: ./secrets/db_password]

Key-Value Store Options:
      --redis-url <URL>  URL to use when connecting to message broker [env: ENTERPRISE_KV_STORE_URL=] [default: redis://redis:6379]

Object Store Options:
      --object-store-bucket-name <BUCKET>    Object store bucket name (must be between 3 and 63 characters, only using lowercase letters, numbers, dot, and hyphen) [env: ENTERPRISE_OBJECT_STORE_BUCKET_NAME=] [default: binaryninja-enterprise]
      --object-store-endpoint-url <URL>      Object store endpoint URL [env: ENTERPRISE_OBJECT_STORE_URL=] [default: https://object-store:8333]
      --object-store-access-key-file <FILE>  Path to file containing the access key ID to use when authenticating with the object store [env: ENTERPRISE_OBJECT_STORE_ACCESS_KEY_FILE=] [default: ./secrets/object_store_access_key_id]
      --object-store-secret-key-file <FILE>  Path to file containing the secret access key to use when authenticating with the object store [env: ENTERPRISE_OBJECT_STORE_SECRET_KEY_FILE=] [default: ./secrets/object_store_secret_access_key]

rm Sub-Command

Remove client updates from server

Usage: manage_server client_updates rm [OPTIONS]

Options:
      --swarm[=<STACK_NAME>]             Operate in docker swarm mode [env: ENTERPRISE_STACK_NAME=]
      --registry-host <HOSTNAME>         Hostname of custom registry [env: ENTERPRISE_REGISTRY_HOST=registry.internal.v35.us] [default: registry.enterprise.binary.ninja]
      --registry-username <USER>         Username for custom registry [env: ENTERPRISE_REGISTRY_USERNAME=]
      --registry-password <PASSWORD>     Password for custom registry [env: ENTERPRISE_REGISTRY_PASSWORD=]
      --docker-host <HOST>               Overrides the default Docker/Podman Unix socket [env: DOCKER_HOST=]
      --container-engine <ENGINE>        Container engine to use for deployments (docker or podman) [env: ENTERPRISE_CONTAINER_ENGINE=docker] [default: docker] [possible values: docker, podman]
  -l, --license-file <license-file>      Path to Binary Ninja license file [env: ENTERPRISE_SERVER_LICENSE_FILE=] [default: license.dat]
  -b, --license-bundle <license-bundle>  Local path to Enterprise client floating license bundle [env: ENTERPRISE_SERVER_LICENSE_BUNDLE_FILE=] [default: license-bundle.b64]
      --uid <uid>                        User ID used for data and tasks (defaults to current User ID) [env: ENTERPRISE_SERVER_UID=]
      --gid <gid>                        Group ID used for data and tasks (defaults to current Group ID) [env: ENTERPRISE_SERVER_GID=]
  -h, --help                             Print help

Database Options:
      --db-name <NAME>           Name of database to use [env: ENTERPRISE_DATABASE_NAME=] [default: binaryninja_enterprise]
      --db-host <HOSTNAME>       Name of host to use when connecting to database [env: ENTERPRISE_DATABASE_HOST=] [default: database]
      --db-port <PORT>           The port to use when connecting to database [env: ENTERPRISE_DATABASE_PORT=] [default: 5432]
      --db-user <USERNAME>       The user to use when connecting to database [env: ENTERPRISE_DATABASE_USER=] [default: binaryninja_enterprise]
      --db-password-file <FILE>  Path to file containing password to authenticate with the database [env: ENTERPRISE_DATABASE_PASSWORD_FILE=] [default: ./secrets/db_password]

Key-Value Store Options:
      --redis-url <URL>  URL to use when connecting to message broker [env: ENTERPRISE_KV_STORE_URL=] [default: redis://redis:6379]

Object Store Options:
      --object-store-bucket-name <BUCKET>    Object store bucket name (must be between 3 and 63 characters, only using lowercase letters, numbers, dot, and hyphen) [env: ENTERPRISE_OBJECT_STORE_BUCKET_NAME=] [default: binaryninja-enterprise]
      --object-store-endpoint-url <URL>      Object store endpoint URL [env: ENTERPRISE_OBJECT_STORE_URL=] [default: https://object-store:8333]
      --object-store-access-key-file <FILE>  Path to file containing the access key ID to use when authenticating with the object store [env: ENTERPRISE_OBJECT_STORE_ACCESS_KEY_FILE=] [default: ./secrets/object_store_access_key_id]
      --object-store-secret-key-file <FILE>  Path to file containing the secret access key to use when authenticating with the object store [env: ENTERPRISE_OBJECT_STORE_SECRET_KEY_FILE=] [default: ./secrets/object_store_secret_access_key]