From eec135af26c639033ab443f56387a454f232ffc1 Mon Sep 17 00:00:00 2001 From: "Jinming Wu, Patrick" Date: Thu, 12 Aug 2021 20:01:44 +0800 Subject: [PATCH] system_setup: Pre fixes --- system_setup/ui/views/reconfigure.py | 118 --------------------------- 1 file changed, 118 deletions(-) delete mode 100644 system_setup/ui/views/reconfigure.py diff --git a/system_setup/ui/views/reconfigure.py b/system_setup/ui/views/reconfigure.py deleted file mode 100644 index 8b0ce09a..00000000 --- a/system_setup/ui/views/reconfigure.py +++ /dev/null @@ -1,118 +0,0 @@ -""" Integration - -Integration provides user with options to set up integration configurations. - -""" -import re - -from urwid import ( - connect_signal, -) - -from subiquitycore.ui.form import ( - Form, - BooleanField, - simple_field, - WantsToKnowFormField -) -from subiquitycore.ui.interactive import StringEditor -from subiquitycore.ui.utils import screen -from subiquitycore.view import BaseView -from subiquity.common.types import WSLConfiguration2Data - - -class MountEditor(StringEditor, WantsToKnowFormField): - def keypress(self, size, key): - ''' restrict what chars we allow for mountpoints ''' - - mountpoint = r'[a-zA-Z0-9_/\.\-]' - if re.match(mountpoint, key) is None: - return False - - return super().keypress(size, key) - - -MountField = simple_field(MountEditor) -StringField = simple_field(StringEditor) - - -class ReconfigurationForm(Form): - def __init__(self, initial): - super().__init__(initial=initial) - - custom_path = MountField(_("Mount Location"), help=_("Location for the automount")) - custom_mount_opt = StringField(_("Mount Option"), help=_("Mount option passed for the automount")) - gen_host = BooleanField(_("Enable Host Generation"), help=_( - "Selecting enables /etc/host re-generation at every start")) - gen_resolvconf = BooleanField(_("Enable resolv.conf Generation"), help=_( - "Selecting enables /etc/resolv.conf re-generation at every start")) - - def validate_custom_path(self): - p = self.custom_path.value - if p != "" and (re.fullmatch(r"(/[^/ ]*)+/?", p) is None): - return _("Mount location must be a absolute UNIX path without space.") - - def validate_custom_mount_opt(self): - o = self.custom_mount_opt.value - # filesystem independent mount option - fsimo = [r"async", r"(no)?atime", r"(no)?auto", r"(fs|def|root)?context=\w+", r"(no)?dev", r"(no)?diratime", - r"dirsync", r"(no)?exec", r"group", r"(no)?iversion", r"(no)?mand", r"_netdev", r"nofail", - r"(no)?relatime", r"(no)?strictatime", r"(no)?suid", r"owner", r"remount", r"ro", r"rw", - r"_rnetdev", r"sync", r"(no)?user", r"users"] - # DrvFs filesystem mount option - drvfsmo = r"case=(dir|force|off)|metadata|(u|g)id=\d+|(u|f|d)mask=\d+|" - fso = "{0}{1}".format(drvfsmo, '|'.join(fsimo)) - - if o != "": - e_t = "" - p = o.split(',') - x = True - for i in p: - if i == "": - e_t += _("an empty entry detected; ") - x = x and False - elif re.fullmatch(fso, i) is not None: - x = x and True - else: - e_t += _("{} is not a valid mount option; ").format(i) - x = x and False - if not x: - return _("Invalid Input: {}Please check " - "https://docs.microsoft.com/en-us/windows/wsl/wsl-config#mount-options " - "for correct valid input").format(e_t) - - -class ReconfigurationView(BaseView): - title = _("Configuration") - excerpt = _("In this page, you can tweak Ubuntu WSL to your needs. \n" - ) - - def __init__(self, controller, integration_data): - self.controller = controller - - initial = { - 'custom_path': integration_data.custom_path, - 'custom_mount_opt':integration_data.custom_mount_opt, - 'gen_host': integration_data.gen_host, - 'gen_resolvconf': integration_data.gen_resolvconf, - } - self.form = IntegrationForm(initial=initial) - - - connect_signal(self.form, 'submit', self.done) - super().__init__( - screen( - self.form.as_rows(), - [self.form.done_btn], - focus_buttons=True, - excerpt=self.excerpt, - ) - ) - - def done(self, result): - self.controller.done(WSLConfiguration1Data( - custom_path=self.form.custom_path.value, - custom_mount_opt=self.form.custom_mount_opt.value, - gen_host=self.form.gen_host.value, - gen_resolvconf=self.form.gen_resolvconf.value - ))