Esempio n. 1
0
 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()
Esempio n. 2
0
 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()
Esempio n. 3
0
 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
Esempio n. 4
0
 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
Esempio n. 5
0
 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()