From eff558c8ad50166db68963f2634c262f47a4e099 Mon Sep 17 00:00:00 2001 From: Carlos Nihelton Date: Mon, 6 Jun 2022 16:59:14 -0300 Subject: [PATCH] Enables TCPSite for WSL It listens on 127.0.0.1 only. --- system_setup/cmd/server.py | 7 +++++++ system_setup/server/server.py | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/system_setup/cmd/server.py b/system_setup/cmd/server.py index 2a8ae0c6..4fc7bf56 100644 --- a/system_setup/cmd/server.py +++ b/system_setup/cmd/server.py @@ -42,6 +42,13 @@ def make_server_args_parser(): parser.add_argument('--output-base', action='store', dest='output_base', default='.subiquity', help='in dryrun, control basedir of files') + parser.add_argument('--tcp-port', + dest='tcp_port', + type=int, + choices=range(49152, 60999), + help='The TCP port Subiquity must listen to. It means ' + 'TCP will be used instead of Unix domain sockets. ' + 'Only localhost connections are accepted.') return parser diff --git a/system_setup/server/server.py b/system_setup/server/server.py index 721814f9..3d850623 100644 --- a/system_setup/server/server.py +++ b/system_setup/server/server.py @@ -13,6 +13,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from aiohttp import web + from system_setup.common.wsl_utils import is_reconfigure from subiquity.server.server import SubiquityServer from system_setup.models.system_setup import SystemSetupModel @@ -37,6 +39,7 @@ INSTALL_MODEL_NAMES = ModelNames({ POSTINSTALL_MODEL_NAMES = ModelNames(set()) +LOCALHOST_ADDR="127.0.0.1" class SystemSetupServer(SubiquityServer): prefillInfo = None @@ -88,3 +91,13 @@ class SystemSetupServer(SubiquityServer): async def wait_for_cloudinit(self): self.cloud_init_ok = True return + + async def start_site(self, runner: web.AppRunner): + port = self.opts.tcp_port + if port is None: + return await super().start_site(runner) + + # Subiquity runs with root privileges. We don't wont outsiders to + # connect to it. + site = web.TCPSite(runner, host=LOCALHOST_ADDR, port=port) + await site.start()