Skip to content

ngrok

dev_tool.services.ngrok

__all__ = ['NgrokService'] module-attribute

NgrokService

Bases: BaseService

A service class for managing ngrok proxy tunnels.

Source code in dev_tool/services/ngrok/service.py
def __init__(self) -> None:
    super().__init__()

    self.task_manager = TaskManager()

task_manager = TaskManager() instance-attribute

run_public_proxy

A method that launches a ngrok proxy tunnel using the configured NGROK_AUTHTOKEN environment variable.

Source code in dev_tool/services/ngrok/service.py
def run_public_proxy(self, forward_address: str) -> None:
    """A method that launches a ngrok proxy tunnel using the configured NGROK_AUTHTOKEN environment variable."""

    if not is_in_env_variables(('NGROK_AUTHTOKEN',)):
        message = 'NGROK_AUTHTOKEN environment variable not set. Aborting ngrok tunnel...'
        CONTEXT.notification.error_banner(message)

        log.exception(message)
        raise NgrokMissingAuthTokenError(message)

    try:
        listener = ngrok.forward(addr=forward_address, authtoken=os.getenv('NGROK_AUTHTOKEN'))


        print(f'Listening to public traffic at: {listener.url()}')
        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            print('Closing listener')

    except Exception:
        message = f'Failed to start ngrok proxy on {forward_address}'
        log.exception(message)

        raise NgrokServiceError(message) from None