parent
701d357e30
commit
02abac026f
@ -0,0 +1,57 @@
|
||||
import os
|
||||
import subprocess
|
||||
import re
|
||||
import shutil
|
||||
import time
|
||||
from ..utils.print_markdown import print_markdown
|
||||
|
||||
def create_tunnel(tunnel_method='bore', server_host='localhost', server_port=8000):
|
||||
print_markdown(f"Exposing server to the internet...")
|
||||
|
||||
if tunnel_method == "bore":
|
||||
try:
|
||||
output = subprocess.check_output('command -v bore', shell=True)
|
||||
except subprocess.CalledProcessError:
|
||||
print("The bore-cli command is not available. Please run 'cargo install bore-cli'.")
|
||||
print("For more information, see https://github.com/ekzhang/bore")
|
||||
exit(1)
|
||||
|
||||
time.sleep(6)
|
||||
output = subprocess.check_output(f'bore local {server_port} --to bore.pub', shell=True)
|
||||
|
||||
for line in output.split('\n'):
|
||||
if "listening at bore.pub:" in line:
|
||||
remote_port = re.search('bore.pub:([0-9]*)', line).group(1)
|
||||
print_markdown(f"Your server is being hosted at the following URL: bore.pub:{remote_port}")
|
||||
break
|
||||
|
||||
|
||||
|
||||
|
||||
elif tunnel_method == "localtunnel":
|
||||
if not subprocess.call('command -v lt', shell=True):
|
||||
print("The 'lt' command is not available.")
|
||||
print("Please ensure you have Node.js installed, then run 'npm install -g localtunnel'.")
|
||||
print("For more information, see https://github.com/localtunnel/localtunnel")
|
||||
exit(1)
|
||||
else:
|
||||
output = subprocess.check_output(f'npx localtunnel --port {server_port}', shell=True)
|
||||
for line in output.split('\n'):
|
||||
if "your url is: https://" in line:
|
||||
remote_url = re.search('https://([a-zA-Z0-9.-]*)', line).group(0).replace('https://', '')
|
||||
print(f"Your server is being hosted at the following URL: {remote_url}")
|
||||
break
|
||||
|
||||
elif tunnel_method == "ngrok":
|
||||
if not subprocess.call('command -v ngrok', shell=True):
|
||||
print("The ngrok command is not available.")
|
||||
print("Please install ngrok using the instructions at https://ngrok.com/docs/getting-started/")
|
||||
exit(1)
|
||||
else:
|
||||
output = subprocess.check_output(f'ngrok http {server_port} --log stdout', shell=True)
|
||||
for line in output.split('\n'):
|
||||
if "started tunnel" in line:
|
||||
remote_url = re.search('https://([a-zA-Z0-9.-]*)', line).group(0).replace('https://', '')
|
||||
print(f"Your server is being hosted at the following URL: {remote_url}")
|
||||
break
|
||||
|
@ -0,0 +1,9 @@
|
||||
from rich.console import Console
|
||||
from rich.markdown import Markdown
|
||||
|
||||
def print_markdown(markdown_text):
|
||||
console = Console()
|
||||
md = Markdown(markdown_text)
|
||||
print("")
|
||||
console.print(md)
|
||||
print("")
|
Loading…
Reference in new issue