Skip to content

Releases: Voyz/ibeam

v0.5.12

21 Apr 19:06

Choose a tag to compare

  • added PyotpHandler used for generating codes from a TOTP secret key using 'pyotp' package.

v0.5.11

09 Apr 18:49

Choose a tag to compare

  • fix: updated default IBEAM_SUBMIT_EL to handle paper account submit button
  • refactor(Dockerfile): updated python image from 3.11.3-slim-bullseye to 3.11-slim-bookworm & removed xfonts-cyrillic from apt-get

v0.5.10

03 Mar 12:04

Choose a tag to compare

  • feat: Add IBEAM_COUNT_TIMEOUT_AS_FAILED option to count login timeouts as failed auth attempts (#276)
  • fix: Handle missing iserver.authStatus structure in HTTP handler response parsing (#275)

v0.5.8

25 Mar 08:17

Choose a tag to compare

  • parsing 200 response for errors, fixing 'error: "no session"'

v0.5.7

09 Mar 11:57

Choose a tag to compare

  • updated requests to 2.31.*
  • added SIGINT and SIGTERM handlers that will shutdown the health server
  • changed CMD in order to better handle SIGINT
  • changed IBEAM_TWO_FA_INPUT_EL_ID and IBEAM_TWO_FA_SELECT_EL_ID defaults to ID@@xyz-field-bronze-response
  • changed default conf.yaml to avoid allowing all addresses
  • added live/paper toggle handling

Minor:

  • replaced deprecated strtobool
  • update docker compose
  • added build/docs/parse_vars.py for parsing the var.py into documentation table

v0.5.4

02 Jul 06:19

Choose a tag to compare

  • fixed deprecated Google Messages handler code
  • added support for /activate and /deactivate routes
  • updated handling of the IB Key promo
  • running ibeam_starter.py with -s flag causes IBeam to get into an infinite loop to allow only starting the Gateway within the Docker image
  • fixed logs not having 'outputs' directory
  • added support for the authentication initialise endpoint auth/ssodh/init
  • added additional errors if account or password are not provided
  • increased IBEAM_MAX_STATUS_CHECK_RETRIES from 15 to 120 and fixed var.all_variables
  • Added Dockerfile armv7

v0.5.1

06 Nov 16:53

Choose a tag to compare

Minor Changes

  • added fix to imports when running in standalone
  • added better verbosity for env vars that need to be defined
  • specified outputs_dir parameter in TwoFaHandlers as a kwarg to fix #165

v0.5.0

07 Sep 18:39

Choose a tag to compare

Breaking changes:

  • We expanded customisability for different versions of website found. Each env var that specifies the DOM element looked for, requires a [TYPE]@@[IDENTIFIER] format, eg.: CSS_SELECTOR@@.btn.btn-lg.btn-primary for the primary submit button. I concluded that such system is necessary when I realised that the 2FA forms have a very different layout for different users. Now it can be customised even more. If you used custom env vars for DOM elements: due to the change in the env var DOM elements processing, you'll need to specify the [TYPE]@@[IDENTIFIER]. This will most likely mean you'll need to add [TYPE]@@ to your existing env vars that specify custom DOM elements if you had any.

Major changes:

Login Strategies:

  • IBeam now supports various login logic flows - we call them strategies. These can be selected by setting IBEAM_AUTHENTICATION_STRATEGY env var as A or B. It is possible that this is a temporary feature that will be removed once a clear winning strategy is found.
  • Currently used login logic is called strategy 'A'
  • New strategy 'B' was added, and is now used by default, based on @migoohao's suggestions in #146. The new logic is described in detail in #147. This is done in an attempt to simplify the login logic and rely on reauthenticate more than on full re-login. Many thanks for suggesting this logic flow @migoohao 👏 I also want to give kudos to any other users who mentioned using reauthenticate in the past. See: #147

Authentication rework:

  • reworking the authenticate.py. Now it is broken down to step-by-step functions, and hopefully has a much better readability and maintainability. It's functionality has been moved to login_handler.py
  • removing reading environment variables throughout the app. Now all env vars are read in ibeam_starter.py and then everything is passed as arguments
  • decoupling things from GatewayClient even more. Now we have a bunch of handlers that are responsible for different things

Minor changes:

  • updated information about ignoring gateway log display
  • added support for UI scaling
  • passing current chrome WebDriver to TwoFaHandler.get_two_fa_code()
  • 2fa submitting action is now handled by pressing RETURN key instead of looking for the submit element, as the button is not always visible
  • added call to validate on each maintenance
  • added GCP Secrets Manager as one of the secrets source
  • added handling of 503 service unavailable
  • fixed boolean env var parsing
  • fixed process starting and killing, ensuring we kill all processes
  • added more verbosity to 'Gateway running and authenticated' by attaching * session_id and server_name added support for GET and POST requests according to IBKR docs
  • logging to sys.stdout instead of default sys.stder, sending logs below WARNING to stdout and equal and above to stderr

Setup changes:

  • changed env var defaults: IBEAM_REQUEST_RETRIES from 1 to 2 IBEAM_MAX_REAUTHENTICATE_RETRIES from 5 to 3
  • post-authentication treating not status.running or not status.session as a reason to kill and restart too

Documentation:

  • updated README with GPC Secret Manager
  • Mention IBC for TWS/Gateway

Dependencies:

  • updated the Gateway to 24 Apr 2023
  • updated selenium to 4.12.*
  • added pillow to requirements.txt to support cropping and manipulating webpage screenshots

v0.4.6

26 Jun 15:03

Choose a tag to compare

  • added small fix to timeout exception handling
  • added missing Gateway files
  • added incremental presubmit buffer
  • clearing input fields before typing into them to prevent inputting incorrect/duplicated text
  • added call to reauthenticate after a wait upon failed authentication before logging out and restarting
  • added call to validate before tickling

v0.4.5

30 May 17:51

Choose a tag to compare

  • updated requirements.txt to most recent minor versions - this should address the Timeout value connect was <object object at 0x7fac7de54590>, but it must be an int, float or None. error from #140
  • changed python:3.11.2-slim-buster to python:3.11.3-slim-bullseye
  • improved logging of timeout errors and verbosity on creating DOM elements' list