feat(tunnel): implement tunnel provider switching

linuztx committed Jun 8, 2025 at 19:20 UTC 2f9266fa5b2bd1dcf85dc26d08fc594d55429ffb
1 file changed +11 -14
python/helpers/tunnel_manager.py
+11 -14
@@ -18,30 +18,26 @@ class TunnelManager:
18 self.tunnel = None
19 self.tunnel_url = None
20 self.is_running = False
21 + self.provider = None
22
22 - def start_tunnel(self, port=80):
23 + def start_tunnel(self, port=80, provider="serveo"):
24 """Start a new tunnel or return the existing one's URL"""
25 if self.is_running and self.tunnel_url:
26 return self.tunnel_url
27
27 -
28 - # switched to serveo to support SSE MCP server
29 -
30 - # Create and start a new tunnel
31 - # config = FlareConfig(
32 - # port=port,
33 - # verbose=True,
34 - # timeout=60, # Increase timeout from default 30 to 60 seconds
35 - # )
36 -
37 - config = ServeoConfig(port=port) # type: ignore
28 + self.provider = provider
29
30 try:
31 # Start tunnel in a separate thread to avoid blocking
32 def run_tunnel():
33 try:
43 - # self.tunnel = FlareTunnel(config)
44 - self.tunnel = ServeoTunnel(config)
34 + if self.provider == "cloudflared":
35 + config = FlareConfig(port=port, verbose=True)
36 + self.tunnel = FlareTunnel(config)
37 + else: # Default to serveo
38 + config = ServeoConfig(port=port)
39 + self.tunnel = ServeoTunnel(config)
40 +
41 self.tunnel.start()
42 self.tunnel_url = self.tunnel.tunnel_url
43 self.is_running = True
@@ -72,6 +68,7 @@ class TunnelManager:
68 self.tunnel.stop()
69 self.is_running = False
70 self.tunnel_url = None
71 + self.provider = None
72 return True
73 except Exception:
74 return False