Skip to content

Commit

Permalink
support ngrok tunnels on livekit
Browse files Browse the repository at this point in the history
  • Loading branch information
benxu3 committed Aug 15, 2024
1 parent a595bdf commit d9ee20e
Showing 1 changed file with 28 additions and 17 deletions.
45 changes: 28 additions & 17 deletions software/start.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import typer
import asyncio
import ngrok
import platform
import threading
import os
Expand All @@ -12,11 +12,13 @@
import json
import segno
import time
from dotenv import load_dotenv

import signal

app = typer.Typer()

load_dotenv()

@app.command()
def run(
Expand All @@ -31,9 +33,6 @@ def run(
"--server-port",
help="Specify the server port where the server will deploy",
),
tunnel_service: str = typer.Option(
"ngrok", "--tunnel-service", help="Specify the tunnel service"
),
expose: bool = typer.Option(False, "--expose", help="Expose server to internet"),
client: bool = typer.Option(False, "--client", help="Run client"),
server_url: str = typer.Option(
Expand Down Expand Up @@ -73,7 +72,6 @@ def run(
server=server,
server_host=server_host,
server_port=server_port,
tunnel_service=tunnel_service,
expose=expose,
client=client,
server_url=server_url,
Expand All @@ -91,7 +89,6 @@ def _run(
server: bool = False,
server_host: str = "0.0.0.0",
server_port: int = 10001,
tunnel_service: str = "bore",
expose: bool = False,
client: bool = False,
server_url: str = None,
Expand Down Expand Up @@ -163,9 +160,9 @@ def handle_exit(signum, frame):
)
server_thread.start()

if expose:
if expose and not livekit:
tunnel_thread = threading.Thread(
target=create_tunnel, args=[tunnel_service, server_host, server_port, qr, domain]
target=create_tunnel, args=[server_host, server_port, qr, domain]
)
tunnel_thread.start()

Expand Down Expand Up @@ -218,12 +215,6 @@ def getToken():
)
return token.to_jwt()

# Get local IP address
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip_address = s.getsockname()[0]
s.close()

# Create threads for each command and store handles
interpreter_thread = threading.Thread(
target=run_command, args=("poetry run interpreter --server",)
Expand All @@ -242,10 +233,30 @@ def getToken():
thread.start()
time.sleep(7)

# Create QR code
url = f"ws://{ip_address}:7880"
token = getToken()
content = json.dumps({"livekit_server": url, "token": token})

# Create QR code
if expose and domain:
listener = ngrok.forward("localhost:7880", authtoken_from_env=True, domain=domain)
url= listener.url()
print(url)
content = json.dumps({"livekit_server": url, "token": token})
elif expose and not domain:
listener = ngrok.forward("localhost:7880", authtoken_from_env=True)
url= listener.url()
print(url)
content = json.dumps({"livekit_server": url, "token": token})
else:
# Get local IP address
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip_address = s.getsockname()[0]
s.close()

url = f"ws://{ip_address}:7880"
print(url)
content = json.dumps({"livekit_server": url, "token": token})

qr_code = segno.make(content)
qr_code.terminal(compact=True)

Expand Down

0 comments on commit d9ee20e

Please sign in to comment.