Add SFTelnetProxyMuxer support to start

pull/2345/head
John Fleming 4 months ago
parent d8a6e7b90b
commit ada755cd4b

@ -31,7 +31,7 @@ from aiohttp.web import WebSocketResponse
from gns3server.utils.interfaces import interfaces from gns3server.utils.interfaces import interfaces
from ..compute.port_manager import PortManager from ..compute.port_manager import PortManager
from ..utils.asyncio import wait_run_in_executor, locking from ..utils.asyncio import wait_run_in_executor, locking
#from ..utils.asyncio.telnet_server import AsyncioTelnet from ..utils.asyncio.telnet_server import AsyncioTelnetServer
from ..utils.asyncio.sftelnetproxymuxer import SFTelnetProxyMuxer from ..utils.asyncio.sftelnetproxymuxer import SFTelnetProxyMuxer
from ..ubridge.hypervisor import Hypervisor from ..ubridge.hypervisor import Hypervisor
from ..ubridge.ubridge_error import UbridgeError from ..ubridge.ubridge_error import UbridgeError
@ -375,36 +375,42 @@ class BaseNode:
if not self._wrap_console or self._console_type != "telnet": if not self._wrap_console or self._console_type != "telnet":
return return
remaining_trial = 60 #remaining_trial = 60
log.info(f"Internal_console_port: {self._internal_console_port}") #log.info(f"Internal_console_port: {self._internal_console_port}")
while True: # self._internal_console_port == qemu listner port for example
try: #while True:
(self._wrap_console_reader, self._wrap_console_writer) = await asyncio.open_connection( # try:
host="127.0.0.1", # (self._wrap_console_reader, self._wrap_console_writer) = await asyncio.open_connection(
port=self._internal_console_port # host="127.0.0.1",
) # port=self._internal_console_port
break # )
except (OSError, ConnectionRefusedError) as e: # break
if remaining_trial <= 0: # except (OSError, ConnectionRefusedError) as e:
raise e # if remaining_trial <= 0:
await asyncio.sleep(0.1) # raise e
remaining_trial -= 1 # await asyncio.sleep(0.1)
# remaining_trial -= 1
## no longer needed. SFTelnetProxyMuxer handles client handshake ## no longer needed. SFTelnetProxyMuxer handles client handshake
await AsyncioTelnetServer.write_client_intro(self._wrap_console_writer, echo=True) #await AsyncioTelnetServer.write_client_intro(self._wrap_console_writer, echo=True)
server = AsyncioTelnetServer( #server = AsyncioTelnetServer(
reader=self._wrap_console_reader, # reader=self._wrap_console_reader,
writer=self._wrap_console_writer, # writer=self._wrap_console_writer,
binary=True, # binary=True,
echo=True # echo=True
) #)
server = SFTelnetProxyMuxer(binary=True, echo=True, remote_port=self._internal_console_port, listen_port=self.console)
await server.start_proxy()
# warning: this will raise OSError exception if there is a problem... # warning: this will raise OSError exception if there is a problem...
log.info(f"self._manager.port_manager.console_host: {self._manager.port_manager.console_host}") #log.info(f"self._manager.port_manager.console_host: {self._manager.port_manager.console_host}")
log.info(f"self.console {self.console}") #log.info(f"self.console {self.console}")
self._wrapper_telnet_server = await asyncio.start_server( # self._manager.port_manager.console_host == bind ip
server.run, # self.console == bind port
self._manager.port_manager.console_host, #self._wrapper_telnet_server = await asyncio.start_server(
self.console # server.run,
) # self._manager.port_manager.console_host,
# self.console
#)
async def stop_wrap_console(self): async def stop_wrap_console(self):
""" """

Loading…
Cancel
Save