def save_selection(self): SIZE = int(zfs_dsk_list[0].partition('-')[2].rstrip()) - 2 SWAP = int(self.swap_entry.get_text()) ZFS_NUM = SIZE - SWAP if self.disk_encript is True: dgeli = '.eli' else: dgeli = '' pfile = open(Part_label, 'w') if self.zpool is True: pfile.writelines("zpoolName=%s\n" % self.pool.get_text()) else: pfile.writelines("#zpoolName=None\n") if self.zfs_four_k is True: pfile.writelines('zfsForce4k=YES\n\n') else: pfile.writelines('#zfsForce4k=No\n\n') pfile.writelines('disk0=%s\n' % zfs_dsk_list[0].partition('-')[0].rstrip()) pfile.writelines('partition=ALL\n') pfile.writelines('partscheme=%s\n' % self.scheme) pfile.writelines('commitDiskPart\n\n') if self.poolType == 'none': pool_disk = '\n' else: ZFS_disk = zfs_dsk_list disk_len = len(ZFS_disk) - 1 num = 1 mirror_dsk = '' while disk_len != 0: mirror_dsk += ' ' + ZFS_disk[num].partition('-')[0].rstrip() print(mirror_dsk) num += 1 disk_len -= 1 pool_disk = ' (%s:%s)\n' % (self.poolType, mirror_dsk) if bios_or_uefi() == "UEFI": ZFS_NUM = ZFS_NUM - 100 else: ZFS_NUM = ZFS_NUM - 1 zfslayout = "/(compress=lz4|atime=off),/root(compress=lz4)," \ "/tmp(compress=lz4),/usr(canmount=off|mountpoint=none)," \ "/usr/home(compress=lz4),/usr/jails(compress=lz4)," \ "/usr/obj(compress=lz4),/usr/ports(compress=lz4)," \ "/usr/src(compress=lz4)," \ "/var(canmount=off|atime=on|mountpoint=none)," \ "/var/audit(compress=lz4),/var/log(compress=lz4)," \ "/var/mail(compress=lz4),/var/tmp(compress=lz4)" zfsPart = 'disk0-part=ZFS%s %s %s%s' % (dgeli, ZFS_NUM, zfslayout, pool_disk) pfile.writelines(zfsPart) if SWAP != 0: pfile.writelines('disk0-part=SWAP%s %s none\n' % ('', SWAP)) if self.disk_encript is True: pfile.writelines('encpass=%s\n' % self.password.get_text()) else: pfile.writelines('#encpass=None\n') pfile.writelines('commitDiskLabel\n') pfile.close()
def save_selection(self): disk_size = int(ufs_dsk_list[0].partition('-')[2].rstrip()) - 2 swap_size = int(self.swap_entry.get_text()) root_size = disk_size - swap_size if self.disk_encript is True: dgeli = '.eli' else: dgeli = '' pfile = open(Part_label, 'w') pfile.writelines('disk0=%s\n' % ufs_dsk_list[0].partition('-')[0].rstrip()) if self.mirror is True: ufs_disk = ufs_dsk_list disk_len = len(ufs_disk) - 1 num = 1 mirror_dsk = '' while disk_len != 0: mirror_dsk += ufs_disk[num].partition('-')[0].rstrip() + " " print(mirror_dsk) num += 1 disk_len -= 1 pfile.writelines("mirror=%s\n" % mirror_dsk) pfile.writelines("mirrorlab=%s\n" % self.mirrorbl) else: pfile.writelines("#mirror=\n") pfile.writelines("#mirrorlab=\n") pfile.writelines('partition=ALL\n') pfile.writelines('partscheme=%s\n' % self.scheme) pfile.writelines('commitDiskPart\n\n') if bios_or_uefi() == "UEFI": root_size = root_size - 100 else: root_size = root_size - 1 zfsPart = 'disk0-part=%s%s %s /\n' % (self.fs, dgeli, root_size) pfile.writelines(zfsPart) if swap_size != 0: pfile.writelines('disk0-part=SWAP%s %s none\n' % (dgeli, swap_size)) if self.disk_encript is True: pfile.writelines('encpass=%s\n' % self.password.get_text()) else: pfile.writelines('#encpass=None\n') pfile.writelines('commitDiskLabel\n') pfile.close()
def __init__(self): self.box1 = Gtk.VBox(False, 0) self.box1.show() box2 = Gtk.VBox(False, 10) # box2.set_border_width(10) self.box1.pack_start(box2, False, False, 0) box2.show() if bios_or_uefi() == "UEFI": loader = "UEFI" else: loader = "BIOS" if os.path.exists(zfs_config): # Disk Setup read = open(zfs_config, 'r') schem = read.read() # os.remove(zfs_config) elif os.path.exists(ufs_config): # Disk Setup read = open(ufs_config, 'r') schem = read.readlines() else: # Sheme sheme read = open(disk_schem, 'r') schem = read.read() if 'GPT' in schem: scheme = 'GPT' else: scheme = 'MBR' label = Gtk.Label("Boot Option", name="Header") label.set_property("height-request", 40) box2.pack_start(label, False, False, 0) hbox = Gtk.HBox() hbox.show() box2.pack_start(hbox, True, True, 0) bbox1 = Gtk.VBox() bbox1.show() self.refind = Gtk.RadioButton.new_with_label_from_widget( None, "Setup rEFInd boot manager") bbox1.pack_start(self.refind, False, True, 10) self.refind.connect("toggled", self.boot_manager, "refind") self.refind.show() if scheme == 'GPT' and loader == "UEFI": self.refind.set_sensitive(True) else: self.refind.set_sensitive(False) self.bsd = Gtk.RadioButton.new_with_label_from_widget( self.refind, "Setup FreeBSD boot manager") bbox1.pack_start(self.bsd, False, True, 10) self.bsd.connect("toggled", self.boot_manager, "bsd") self.bsd.show() if scheme == 'MBR': self.bsd.set_sensitive(True) else: self.bsd.set_sensitive(False) self.none = Gtk.RadioButton.new_with_label_from_widget( self.bsd, f"FreeBSD {loader} loader only") bbox1.pack_start(self.none, False, True, 10) self.none.connect("toggled", self.boot_manager, "none") self.none.show() hbox.pack_start(bbox1, False, False, 50) self.none.set_active(True) self.boot = "none" boot = open(boot_file, 'w') boot.writelines(self.boot) boot.close() self.box3 = Gtk.VBox(False, 0) self.box3.set_border_width(0) self.box1.pack_start(self.box3, True, True, 0) return
def __init__(self, button3): self.button3 = button3 self.vbox1 = Gtk.VBox(False, 0) self.vbox1.show() # Title label = Gtk.Label("UFS Full Disk Configuration", name="Header") label.set_property("height-request", 40) self.vbox1.pack_start(label, False, False, 0) # Chose disk sw = Gtk.ScrolledWindow(hexpand=True, vexpand=True) sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN) sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) store = Gtk.TreeStore(str, str, str, 'gboolean') for disk in zfs_disk_query(): dsk = disk.partition(':')[0].rstrip() dsk_name = disk.partition(':')[2].rstrip() dsk_size = zfs_disk_size_query(dsk).rstrip() store.append(None, [dsk, dsk_size, dsk_name, False]) treeView = Gtk.TreeView(store) treeView.set_model(store) treeView.set_rules_hint(True) self.check_cell = Gtk.CellRendererToggle() self.check_cell.set_property('activatable', True) self.check_cell.connect('toggled', self.col1_toggled_cb, store) cell = Gtk.CellRendererText() column = Gtk.TreeViewColumn(None, cell, text=0) column_header = Gtk.Label('Disk') column_header.set_use_markup(True) column_header.show() column.set_widget(column_header) column.set_sort_column_id(0) cell2 = Gtk.CellRendererText() column2 = Gtk.TreeViewColumn(None, cell2, text=0) column_header2 = Gtk.Label('Size(MB)') column_header2.set_use_markup(True) column_header2.show() column2.set_widget(column_header2) cell3 = Gtk.CellRendererText() column3 = Gtk.TreeViewColumn(None, cell3, text=0) column_header3 = Gtk.Label('Name') column_header3.set_use_markup(True) column_header3.show() column3.set_widget(column_header3) column1 = Gtk.TreeViewColumn("Check", self.check_cell) column1.add_attribute(self.check_cell, "active", 3) column.set_attributes(cell, text=0) column2.set_attributes(cell2, text=1) column3.set_attributes(cell3, text=2) treeView.append_column(column1) treeView.append_column(column) treeView.append_column(column2) treeView.append_column(column3) tree_selection = treeView.get_selection() tree_selection.set_mode(Gtk.SelectionMode.SINGLE) sw.add(treeView) sw.show() self.mirrorTips = Gtk.Label('Please select one drive') self.mirrorTips.set_justify(Gtk.Justification.LEFT) self.mirrorTips.set_alignment(0.01, 0.5) self.mirror = False mirror_check = Gtk.CheckButton('Disk Mirror') mirror_check.connect("toggled", self.on_check_mirror) self.mirrorbl_box = Gtk.ComboBoxText() self.mirrorbl_box.append_text("load") self.mirrorbl_box.append_text("prefer") self.mirrorbl_box.append_text("round-robin") self.mirrorbl_box.append_text("split") self.mirrorbl_box.connect('changed', self.mirror_selection) self.mirrorbl_box.set_active(0) self.mirrorbl_box.set_sensitive(False) self.mirrorbl = 'load' # Creating MBR or GPT drive label = Gtk.Label('<b>Partition Scheme</b>') label.set_use_markup(True) # Adding a combo box to selecting MBR or GPT sheme. self.scheme = 'GPT' shemebox = Gtk.ComboBoxText() shemebox.append_text("GPT") shemebox.append_text("MBR") shemebox.connect('changed', self.sheme_selection) shemebox.set_active(0) if bios_or_uefi() == "UEFI": shemebox.set_sensitive(False) else: shemebox.set_sensitive(True) # Swap Size ram = Popen(memory, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, universal_newlines=True, close_fds=True) mem = ram.stdout.read() swap = 512 swp_size_label = Gtk.Label('<b>Swap Size(MB)</b>') swp_size_label.set_use_markup(True) self.swap_entry = Gtk.Entry() self.swap_entry.set_text(str(swap)) self.swap_entry.connect('changed', self.digit_only) # Swap encription self.swap_encrypt = False self.swap_encrypt_check = Gtk.CheckButton("Encrypt Swap") self.swap_encrypt_check.connect("toggled", self.on_check_swap_encrypt) # Swap mirror self.swap_mirror = False swap_mirror_check = Gtk.CheckButton("Mirror Swap") swap_mirror_check.connect("toggled", self.on_check_swap_mirror) # GELI Disk encription self.disk_encript = False encrypt_check = Gtk.CheckButton("Encrypt Disk") encrypt_check.connect("toggled", self.on_check_encrypt) encrypt_check.set_sensitive(True) # password self.passwd_label = Gtk.Label("Password") self.password = Gtk.Entry() self.password.set_sensitive(False) self.password.set_visibility(False) self.password.connect("changed", self.passwdstrength) self.strenght_label = Gtk.Label() self.strenght_label.set_alignment(0.1, 0.5) self.vpasswd_label = Gtk.Label("Verify it") self.repassword = Gtk.Entry() self.repassword.set_sensitive(False) self.repassword.set_visibility(False) self.repassword.connect("changed", self.passwdVerification) # set image for password matching fslabel = Gtk.Label("File System:") self.fstype = Gtk.ComboBoxText() self.fstype.append_text('UFS') self.fstype.append_text('UFS+S') self.fstype.append_text('UFS+J') self.fstype.append_text('UFS+SUJ') self.fstype.set_active(3) self.fstype.connect("changed", self.chosefs) self.fs = "UFS+SUJ" grid = Gtk.Grid() grid.set_row_spacing(10) grid.set_margin_left(10) grid.set_margin_right(10) grid.set_margin_top(10) grid.set_margin_bottom(10) # grid.set_column_homogeneous(True) # grid.set_row_homogeneous(True) # grid.attach(Title, 0, 0, 9, 2) grid.attach(mirror_check, 0, 2, 1, 1) grid.attach(self.mirrorbl_box, 1, 2, 1, 1) grid.attach(label, 0, 9, 2, 1) grid.attach(shemebox, 2, 9, 1, 1) grid.attach(self.mirrorTips, 1, 3, 8, 1) grid.attach(sw, 0, 4, 9, 4) grid.attach(fslabel, 5, 9, 2, 1) grid.attach(self.fstype, 7, 9, 1, 1) grid.attach(swp_size_label, 5, 2, 2, 1) grid.attach(self.swap_entry, 7, 2, 1, 1) # grid.attach(self.swap_encrypt_check, 9, 15, 11, 12) # grid.attach(swap_mirror_check, 9, 15, 11, 12) # grid.attach(encrypt_check, 1, 9, 2, 1) # grid.attach(self.passwd_label, 1, 10, 1, 1) # grid.attach(self.password, 2, 10, 2, 1) # grid.attach(self.strenght_label, 4, 10, 2, 1) # grid.attach(self.vpasswd_label, 1, 11, 1, 1) # grid.attach(self.repassword, 2, 11, 2, 1) # grid.attach(self.img, 4, 11, 2, 1) self.vbox1.pack_start(grid, True, True, 0) return
def labelEditor(self, path, pslice, size, scheme, modify): numb = int(size) self.window = Gtk.Window() self.window.set_title("Add Partition") self.window.set_border_width(0) self.window.set_size_request(480, 200) self.window.set_icon_from_file(logo) box1 = Gtk.VBox(False, 0) self.window.add(box1) box1.show() box2 = Gtk.VBox(False, 10) box2.set_border_width(10) box1.pack_start(box2, True, True, 0) box2.show() # create label # label0 = Gtk.Label("Create Partition Label") table = Gtk.Table(1, 2, True) label1 = Gtk.Label("Type:") label2 = Gtk.Label("Size(MB):") label3 = Gtk.Label("Mount point:") self.fstype = Gtk.ComboBoxText() self.fstype.append_text('UFS') self.fstype.append_text('UFS+S') self.fstype.append_text('UFS+J') self.fstype.append_text('UFS+SUJ') self.fstype.append_text('SWAP') if scheme == 'GPT': if bios_or_uefi() == "UEFI": self.fstype.append_text("UEFI") self.fs = "UEFI" else: self.fstype.append_text("BOOT") self.fs = "BOOT" if self.fs == "UEFI" and efi_exist(self.disk) is False: if not os.path.exists(Part_label): self.fstype.set_active(5) elif len(self.prttn) == 0: self.fstype.set_active(5) elif self.fs == "BOOT": if not os.path.exists(Part_label): self.fstype.set_active(5) elif len(self.prttn) == 0: self.fstype.set_active(5) elif self.lablebehind == "/": self.fstype.set_active(4) self.fs = "SWAP" else: self.fstype.set_active(3) self.fs = "UFS+SUJ" self.fstype.connect("changed", self.on_fs) adj = Gtk.Adjustment(numb, 0, numb, 1, 100, 0) self.entry = Gtk.SpinButton(adjustment=adj) if modify is True: self.entry.set_editable(False) else: self.entry.set_editable(True) self.mountpoint = Gtk.ComboBoxText() # self.mountpoint.append_text('select labels') self.label = "none" self.mountpoint.append_text('none') # The space for root '/ ' is to recognise / from the file. self.mountpoint.append_text('/') if os.path.exists(Part_label): if scheme == 'GPT' and len(self.prttn) == 1: self.mountpoint.append_text('/boot') elif scheme == 'MBR' and len(self.prttn) == 0: self.mountpoint.append_text('/boot') elif scheme == 'MBR' and not os.path.exists(Part_label): self.mountpoint.append_text('/boot') self.mountpoint.append_text('/etc') self.mountpoint.append_text('/root') self.mountpoint.append_text('/tmp') self.mountpoint.append_text('/usr') self.mountpoint.append_text('/usr/home') self.mountpoint.append_text('/var') self.mountpoint.set_active(0) self.mountpoint.connect("changed", self.on_label) # table.attach(label0, 0, 2, 0, 1) table.attach(label1, 0, 1, 1, 2) table.attach(self.fstype, 1, 2, 1, 2) table.attach(label2, 0, 1, 2, 3) table.attach(self.entry, 1, 2, 2, 3) table.attach(label3, 0, 1, 3, 4) table.attach(self.mountpoint, 1, 2, 3, 4) box2.pack_start(table, False, False, 0) box2 = Gtk.HBox(False, 10) box2.set_border_width(5) box1.pack_start(box2, False, True, 0) box2.show() # Add button bbox = Gtk.HButtonBox() bbox.set_border_width(5) bbox.set_spacing(10) button = Gtk.Button(stock=Gtk.STOCK_CANCEL) button.connect("clicked", self.cancel) bbox.add(button) button = Gtk.Button(stock=Gtk.STOCK_ADD) if modify is False: if scheme == 'MBR': button.connect("clicked", self.on_add_label, self.entry, numb, path, True) elif scheme == 'GPT' and self.fs == 'BOOT': button.connect("clicked", self.on_add_partition, self.entry, numb, path, True) elif scheme == 'GPT' and self.fs == 'UEFI' and efi_exist( self.disk) is False: button.connect("clicked", self.on_add_partition, self.entry, numb, path, True) else: button.connect("clicked", self.on_add_partition, self.entry, numb, path, False) else: if scheme == 'MBR': button.connect("clicked", self.on_add_label, self.entry, numb, path, False) elif scheme == 'GPT': button.connect("clicked", self.on_add_partition, self.entry, numb, path, False) bbox.add(button) box2.pack_end(bbox, True, True, 5) self.window.show_all()