| | import requests |
| | import time |
| | import subprocess |
| | from pathlib import Path |
| |
|
| | def get_current_ngrok_url(): |
| | """Get current ngrok URL from ngrok API""" |
| | try: |
| | response = requests.get("http://localhost:4040/api/tunnels") |
| | if response.status_code == 200: |
| | data = response.json() |
| | tunnels = data.get("tunnels", []) |
| | for tunnel in tunnels: |
| | if tunnel.get("proto") == "https": |
| | return tunnel.get("public_url") |
| | except: |
| | pass |
| | return None |
| |
|
| | def update_env_file(url): |
| | """Update .env file with new URL""" |
| | env_file = Path(".env") |
| | if env_file.exists(): |
| | with open(env_file, "r") as f: |
| | lines = f.readlines() |
| | |
| | with open(env_file, "w") as f: |
| | for line in lines: |
| | if line.startswith("OLLAMA_HOST="): |
| | f.write(f"OLLAMA_HOST={url}\n") |
| | else: |
| | f.write(line) |
| |
|
| | def main(): |
| | """Monitor ngrok URL changes""" |
| | print("Monitoring ngrok URL changes...") |
| | last_url = None |
| | |
| | while True: |
| | try: |
| | current_url = get_current_ngrok_url() |
| | if current_url and current_url != last_url: |
| | print(f"Ngrok URL changed: {current_url}") |
| | update_env_file(current_url) |
| | last_url = current_url |
| | print("Environment updated!") |
| | |
| | time.sleep(30) |
| | except KeyboardInterrupt: |
| | print("Monitoring stopped.") |
| | break |
| | except Exception as e: |
| | print(f"Error: {e}") |
| | time.sleep(30) |
| |
|
| | if __name__ == "__main__": |
| | main() |
| |
|