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]