OXIESEC PANEL
- Current Dir:
/
/
snap
/
core
/
17200
/
usr
/
share
/
subiquity
/
subiquitycore
/
ui
/
views
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/18/2024 07:58:21 PM
rwxr-xr-x
📄
__init__.py
1.17 KB
01/20/2017 01:59:19 AM
rw-r--r--
📄
login.py
3.95 KB
03/15/2017 11:20:58 PM
rw-r--r--
📄
network.py
10.1 KB
03/15/2017 11:20:58 PM
rw-r--r--
📄
network_bond_interfaces.py
4.97 KB
03/15/2017 11:20:58 PM
rw-r--r--
📄
network_configure_interface.py
5.94 KB
03/15/2017 11:20:58 PM
rw-r--r--
📄
network_configure_manual_interface.py
7.31 KB
03/20/2017 01:51:02 AM
rw-r--r--
📄
network_configure_wlan_interface.py
5.36 KB
03/21/2017 09:59:33 PM
rw-r--r--
📄
network_default_route.py
5.25 KB
03/15/2017 11:20:58 PM
rw-r--r--
Editing: network_configure_interface.py
Close
# Copyright 2015 Canonical, Ltd. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from subiquitycore.view import BaseView from subiquitycore.ui.buttons import done_btn, menu_btn from subiquitycore.ui.container import ListBox, Pile from subiquitycore.ui.utils import Color, Padding from subiquitycore.ui.views.network import _build_gateway_ip_info_for_version, _build_wifi_info import logging log = logging.getLogger('subiquitycore.network.network_configure_interface') class NetworkConfigureInterfaceView(BaseView): def __init__(self, model, controller, name): self.model = model self.controller = controller self.dev = self.model.get_netdev_by_name(name) self._build_widgets() super().__init__(ListBox(self._build_body())) def _build_widgets(self): self.ipv4_info = Pile(_build_gateway_ip_info_for_version(self.dev, 4)) self.ipv4_method = Pile(self._build_ipv4_method_buttons()) self.ipv6_info = Pile(_build_gateway_ip_info_for_version(self.dev, 6)) self.ipv6_method = Pile(self._build_ipv6_method_buttons()) if self.dev.type == 'wlan': self.wifi_info = Pile(_build_wifi_info(self.dev)) self.wifi_method = Pile(self._build_wifi_config()) def _build_body(self): body = [] if self.dev.type == 'wlan': body.extend([ Padding.center_79(self.wifi_info), Padding.center_79(self.wifi_method), Padding.line_break(""), ]) body.extend([ Padding.center_79(self.ipv4_info), Padding.center_79(self.ipv4_method), Padding.line_break(""), Padding.center_79(self.ipv6_info), Padding.center_79(self.ipv6_method), Padding.line_break(""), Padding.fixed_10(self._build_buttons()) ]) return body def _build_ipv4_method_buttons(self): button_padding = 70 buttons = [] btn = menu_btn(label="Use a static IPv4 configuration", on_press=self.show_ipv4_configuration) buttons.append(Color.menu_button(btn)) btn = menu_btn(label="Use DHCPv4 on this interface", on_press=self.enable_dhcp4) buttons.append(Color.menu_button(btn)) btn = menu_btn(label="Do not use", on_press=self.clear_ipv4) buttons.append(Color.menu_button(btn)) padding = getattr(Padding, 'left_{}'.format(button_padding)) buttons = [ padding(button) for button in buttons ] return buttons def _build_ipv6_method_buttons(self): button_padding = 70 buttons = [] btn = menu_btn(label="Use a static IPv6 configuration", on_press=self.show_ipv6_configuration) buttons.append(Color.menu_button(btn)) btn = menu_btn(label="Use DHCPv6 on this interface", on_press=self.enable_dhcp6) buttons.append(Color.menu_button(btn)) btn = menu_btn(label="Do not use", on_press=self.clear_ipv6) buttons.append(Color.menu_button(btn)) padding = getattr(Padding, 'left_{}'.format(button_padding)) buttons = [ padding(button) for button in buttons ] return buttons def _build_wifi_config(self): btn = menu_btn(label="Configure WIFI settings", on_press=self.show_wlan_configuration) return [Padding.left_70(Color.menu_button(btn))] def _build_buttons(self): done = done_btn(on_press=self.done) buttons = [ Color.button(done), ] return Pile(buttons) def refresh_model_inputs(self): try: self.dev = self.model.get_netdev_by_name(self.dev.name) except KeyError: # The interface is gone self.controller.prev_view() return if self.dev.type == 'wlan': self.wifi_info.contents = [ (obj, ('pack', None)) for obj in _build_wifi_info(self.dev) ] self.ipv4_info.contents = [ (obj, ('pack', None)) for obj in _build_gateway_ip_info_for_version(self.dev, 4) ] self.ipv6_info.contents = [ (obj, ('pack', None)) for obj in _build_gateway_ip_info_for_version(self.dev, 6) ] def clear_ipv4(self, btn): self.dev.remove_ip_networks_for_version(4) self.dev.remove_nameservers() self.model.set_default_v4_gateway(None, None) self.refresh_model_inputs() def clear_ipv6(self, btn): self.dev.remove_ip_networks_for_version(6) self.dev.remove_nameservers() self.model.set_default_v6_gateway(None, None) self.refresh_model_inputs() def enable_dhcp4(self, btn): self.clear_ipv4(btn) self.dev.remove_nameservers() self.dev.dhcp4 = True self.refresh_model_inputs() def enable_dhcp6(self, btn): self.clear_ipv6(btn) self.dev.remove_nameservers() self.dev.dhcp6 = True self.refresh_model_inputs() def show_wlan_configuration(self, btn): self.controller.network_configure_wlan_interface(self.dev.name) def show_ipv4_configuration(self, btn): self.controller.network_configure_ipv4_interface(self.dev.name) def show_ipv6_configuration(self, btn): self.controller.network_configure_ipv6_interface(self.dev.name) def done(self, result): self.controller.prev_view()