WizardKit v1.8.3 - Esther Build
Linux * HW-Diagnostics * osTicket posts now colored as appropriate (diag for PASS, diag fail for anything else) * RAM info now included in CPU osTicket posts * Drives won't be failed for just SMART 188/BC * Power-on-time over 3 years will marked drives as failed (if that's the only issue then the other tests will be allowed to run) * ddrescue-tui (WKClone) now checks the destination drive's health before starting * Improved startup scripts - Much clearer on what's happening during the startup process * Improved tmux integration - launching WKClone / HW-Diags from inside tmux no longer crashes the script * Misc bugifxes Windows * d7II * Improved launcher - Runs safety checks, starts ESET's AVRemover, afterwards it launches d7II (Should help catch issues earlier in the workflow) * System Restore enabled and restore point created early in the d7II process * Python check removed from d7II steps and is instead included in the d7II launcher * Chrome notifications are now disabled during System Setup (only affects new profiles unfortunately) * Misc bugfixes
|
|
@ -54,8 +54,8 @@ if __name__ == '__main__':
|
||||||
confirm_selections(args)
|
confirm_selections(args)
|
||||||
|
|
||||||
# Prep UFD
|
# Prep UFD
|
||||||
print_info('Prep UFD')
|
|
||||||
if not args['--update']:
|
if not args['--update']:
|
||||||
|
print_info('Prep UFD')
|
||||||
prep_device(ufd_dev, UFD_LABEL, use_mbr=args['--use-mbr'])
|
prep_device(ufd_dev, UFD_LABEL, use_mbr=args['--use-mbr'])
|
||||||
|
|
||||||
# Mount UFD
|
# Mount UFD
|
||||||
|
|
|
||||||
|
|
@ -83,17 +83,17 @@ if ($MyInvocation.InvocationName -ne ".") {
|
||||||
DownloadFile -Path $Path -Name "7z-extra.7z" -Url "https://www.7-zip.org/a/7z1900-extra.7z"
|
DownloadFile -Path $Path -Name "7z-extra.7z" -Url "https://www.7-zip.org/a/7z1900-extra.7z"
|
||||||
|
|
||||||
# ConEmu
|
# ConEmu
|
||||||
$Url = "https://github.com/Maximus5/ConEmu/releases/download/v19.03.10/ConEmuPack.190310.7z"
|
$Url = "https://github.com/Maximus5/ConEmu/releases/download/v19.06.23/ConEmuPack.190623.7z"
|
||||||
DownloadFile -Path $Path -Name "ConEmuPack.7z" -Url $Url
|
DownloadFile -Path $Path -Name "ConEmuPack.7z" -Url $Url
|
||||||
|
|
||||||
# Notepad++
|
# Notepad++
|
||||||
$Url = "https://notepad-plus-plus.org/repository/7.x/7.6.4/npp.7.6.4.bin.minimalist.7z"
|
$Url = "https://notepad-plus-plus.org/repository/7.x/7.7.1/npp.7.7.1.bin.minimalist.7z"
|
||||||
DownloadFile -Path $Path -Name "npp.7z" -Url $Url
|
DownloadFile -Path $Path -Name "npp.7z" -Url $Url
|
||||||
|
|
||||||
# Python
|
# Python
|
||||||
$Url = "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-win32.zip"
|
$Url = "https://www.python.org/ftp/python/3.7.4/python-3.7.4-embed-win32.zip"
|
||||||
DownloadFile -Path $Path -Name "python32.zip" -Url $Url
|
DownloadFile -Path $Path -Name "python32.zip" -Url $Url
|
||||||
$Url = "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-amd64.zip"
|
$Url = "https://www.python.org/ftp/python/3.7.4/python-3.7.4-embed-amd64.zip"
|
||||||
DownloadFile -Path $Path -Name "python64.zip" -Url $Url
|
DownloadFile -Path $Path -Name "python64.zip" -Url $Url
|
||||||
|
|
||||||
# Python: psutil
|
# Python: psutil
|
||||||
|
|
|
||||||
|
|
@ -2,42 +2,10 @@
|
||||||
#
|
#
|
||||||
## Wizard Kit: ddrescue TUI Launcher
|
## Wizard Kit: ddrescue TUI Launcher
|
||||||
|
|
||||||
|
source launch-in-tmux
|
||||||
|
|
||||||
SESSION_NAME="ddrescue-tui"
|
SESSION_NAME="ddrescue-tui"
|
||||||
WINDOW_NAME="ddrescue TUI"
|
WINDOW_NAME="ddrescue TUI"
|
||||||
MENU="ddrescue-tui-menu"
|
TMUX_CMD="ddrescue-tui-menu"
|
||||||
|
|
||||||
function ask() {
|
|
||||||
while :; do
|
|
||||||
read -p "$1 " -r answer
|
|
||||||
if echo "$answer" | egrep -iq '^(y|yes|sure)$'; then
|
|
||||||
return 0
|
|
||||||
elif echo "$answer" | egrep -iq '^(n|no|nope)$'; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
die () {
|
|
||||||
echo "$0:" "$@" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for running session
|
|
||||||
if tmux list-session | grep -q "$SESSION_NAME"; then
|
|
||||||
echo "WARNING: tmux session $SESSION_NAME already exists."
|
|
||||||
echo ""
|
|
||||||
if ask "Kill current session?"; then
|
|
||||||
tmux kill-session -t "$SESSION_NAME" || \
|
|
||||||
die "Failed to kill session: $SESSION_NAME"
|
|
||||||
else
|
|
||||||
echo "Aborted."
|
|
||||||
echo ""
|
|
||||||
echo -n "Press Enter to exit... "
|
|
||||||
read -r
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start session
|
|
||||||
tmux new-session -s "$SESSION_NAME" -n "$WINDOW_NAME" "$MENU" $*
|
|
||||||
|
|
||||||
|
launch_in_tmux "$@"
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ if __name__ == '__main__':
|
||||||
# Done
|
# Done
|
||||||
print_standard('\nDone.')
|
print_standard('\nDone.')
|
||||||
pause("Press Enter to exit...")
|
pause("Press Enter to exit...")
|
||||||
|
tmux_switch_client()
|
||||||
exit_script()
|
exit_script()
|
||||||
except GenericAbort:
|
except GenericAbort:
|
||||||
abort()
|
abort()
|
||||||
|
|
@ -55,6 +56,7 @@ if __name__ == '__main__':
|
||||||
print_error(msg)
|
print_error(msg)
|
||||||
abort()
|
abort()
|
||||||
except SystemExit as sys_exit:
|
except SystemExit as sys_exit:
|
||||||
|
tmux_switch_client()
|
||||||
exit_script(sys_exit.code)
|
exit_script(sys_exit.code)
|
||||||
except:
|
except:
|
||||||
major_exception()
|
major_exception()
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
# Wizard Kit: Functions - Cleanup
|
'''Wizard Kit: Functions - Cleanup'''
|
||||||
|
# pylint: disable=no-name-in-module,wildcard-import
|
||||||
|
# vim: sts=2 sw=2 ts=2
|
||||||
|
|
||||||
from functions.setup import *
|
from functions.setup import *
|
||||||
from settings.cleanup import *
|
from settings.cleanup import *
|
||||||
|
|
||||||
|
|
||||||
def cleanup_adwcleaner():
|
def cleanup_adwcleaner():
|
||||||
"""Move AdwCleaner folders into the ClientDir."""
|
"""Move AdwCleaner folders into the ClientDir."""
|
||||||
source_path = r'{SYSTEMDRIVE}\AdwCleaner'.format(**global_vars['Env'])
|
source_path = r'{SYSTEMDRIVE}\AdwCleaner'.format(**global_vars['Env'])
|
||||||
|
|
@ -70,6 +71,7 @@ def cleanup_cbs(dest_folder):
|
||||||
|
|
||||||
|
|
||||||
def cleanup_d7ii():
|
def cleanup_d7ii():
|
||||||
|
# pylint: disable=too-many-branches
|
||||||
"""Sort d7II logs and remove temp items."""
|
"""Sort d7II logs and remove temp items."""
|
||||||
d7_path = r'{}\d7II'.format(global_vars['ClientDir'])
|
d7_path = r'{}\d7II'.format(global_vars['ClientDir'])
|
||||||
d7_reports = r'{} Reports'.format(d7_path)
|
d7_reports = r'{} Reports'.format(d7_path)
|
||||||
|
|
@ -78,9 +80,9 @@ def cleanup_d7ii():
|
||||||
# Logs & Reports
|
# Logs & Reports
|
||||||
if os.path.exists(d7_reports):
|
if os.path.exists(d7_reports):
|
||||||
for entry in os.scandir(d7_reports):
|
for entry in os.scandir(d7_reports):
|
||||||
r = re.match(r'(\d+)-(\d+)-(\d+)', entry.name)
|
_r = re.match(r'(\d+)-(\d+)-(\d+)', entry.name)
|
||||||
d7_date = '{}-{:02d}-{:02d}'.format(
|
d7_date = '{}-{:02d}-{:02d}'.format(
|
||||||
r.group(1), int(r.group(2)), int(r.group(3)))
|
_r.group(1), int(_r.group(2)), int(_r.group(3)))
|
||||||
d7_mlogs = r'{}\Malware Logs'.format(entry.path)
|
d7_mlogs = r'{}\Malware Logs'.format(entry.path)
|
||||||
log_dest = r'{SYSTEMDRIVE}\{prefix}\Logs\{date}'.format(
|
log_dest = r'{SYSTEMDRIVE}\{prefix}\Logs\{date}'.format(
|
||||||
prefix=KIT_NAME_SHORT,
|
prefix=KIT_NAME_SHORT,
|
||||||
|
|
@ -138,13 +140,6 @@ def cleanup_d7ii():
|
||||||
os.rmdir(d7_path)
|
os.rmdir(d7_path)
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Restore default UAC settings
|
|
||||||
if global_vars['OS']['Version'] == '10':
|
|
||||||
write_registry_settings(UAC_DEFAULTS_WIN10, all_users=True)
|
|
||||||
else:
|
|
||||||
# Haven't checked Win8 settings, only applying minimum set
|
|
||||||
write_registry_settings(UAC_DEFAULTS_WIN7, all_users=True)
|
|
||||||
|
|
||||||
def cleanup_desktop():
|
def cleanup_desktop():
|
||||||
"""Move known backup files and reports into the ClientDir."""
|
"""Move known backup files and reports into the ClientDir."""
|
||||||
|
|
@ -229,7 +224,7 @@ def delete_registry_key(hive, key, recurse=False):
|
||||||
# Delete all subkeys first
|
# Delete all subkeys first
|
||||||
with winreg.OpenKeyEx(hive, key, 0, access) as k:
|
with winreg.OpenKeyEx(hive, key, 0, access) as k:
|
||||||
key_info = winreg.QueryInfoKey(k)
|
key_info = winreg.QueryInfoKey(k)
|
||||||
for x in range(key_info[0]):
|
for _i in range(key_info[0]): # pylint: disable=unused-variable
|
||||||
subkey = r'{}\{}'.format(key, winreg.EnumKey(k, 0))
|
subkey = r'{}\{}'.format(key, winreg.EnumKey(k, 0))
|
||||||
delete_registry_key(hive, subkey)
|
delete_registry_key(hive, subkey)
|
||||||
|
|
||||||
|
|
@ -247,7 +242,14 @@ def delete_registry_value(hive, key, value):
|
||||||
winreg.DeleteValue(k, value)
|
winreg.DeleteValue(k, value)
|
||||||
|
|
||||||
|
|
||||||
|
def restore_default_uac():
|
||||||
|
"""Restores default UAC settings via the registry."""
|
||||||
|
if global_vars['OS']['Version'] == '10':
|
||||||
|
write_registry_settings(UAC_DEFAULTS_WIN10, all_users=True)
|
||||||
|
else:
|
||||||
|
# Haven't checked Win8 settings, only applying minimum set
|
||||||
|
write_registry_settings(UAC_DEFAULTS_WIN7, all_users=True)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
||||||
# vim: sts=2 sw=2 ts=2
|
|
||||||
|
|
|
||||||
|
|
@ -218,7 +218,7 @@ def mount_volumes(
|
||||||
report[vol_path] = vol_data
|
report[vol_path] = vol_data
|
||||||
elif 'children' in vol_data:
|
elif 'children' in vol_data:
|
||||||
# Skip LVM/RAID partitions (the real volume is mounted separately)
|
# Skip LVM/RAID partitions (the real volume is mounted separately)
|
||||||
vol_data['show_data']['data'] = vol_data.get('fstype', 'UNKNOWN')
|
vol_data['show_data']['data'] = vol_data.get('fstype', 'Unknown')
|
||||||
if vol_data.get('label', None):
|
if vol_data.get('label', None):
|
||||||
vol_data['show_data']['data'] += ' "{}"'.format(vol_data['label'])
|
vol_data['show_data']['data'] += ' "{}"'.format(vol_data['label'])
|
||||||
vol_data['show_data']['info'] = True
|
vol_data['show_data']['info'] = True
|
||||||
|
|
|
||||||
|
|
@ -281,6 +281,7 @@ class RecoveryState():
|
||||||
raise GenericError('Unsupported mode')
|
raise GenericError('Unsupported mode')
|
||||||
self.get_smart_source()
|
self.get_smart_source()
|
||||||
self.set_working_dir()
|
self.set_working_dir()
|
||||||
|
os.makedirs(global_vars['LogDir'], exist_ok=True)
|
||||||
|
|
||||||
def add_block_pair(self, source, dest):
|
def add_block_pair(self, source, dest):
|
||||||
"""Run safety checks and append new BlockPair to internal list."""
|
"""Run safety checks and append new BlockPair to internal list."""
|
||||||
|
|
@ -289,10 +290,10 @@ class RecoveryState():
|
||||||
if source.is_dir():
|
if source.is_dir():
|
||||||
raise GenericError('Invalid source "{}"'.format(
|
raise GenericError('Invalid source "{}"'.format(
|
||||||
source.path))
|
source.path))
|
||||||
elif not dest.is_dev():
|
if not dest.is_dev():
|
||||||
raise GenericError('Invalid destination "{}"'.format(
|
raise GenericError('Invalid destination "{}"'.format(
|
||||||
dest.path))
|
dest.path))
|
||||||
elif source.size > dest.size:
|
if source.size > dest.size:
|
||||||
raise GenericError(
|
raise GenericError(
|
||||||
'Destination is too small, refusing to continue.')
|
'Destination is too small, refusing to continue.')
|
||||||
else:
|
else:
|
||||||
|
|
@ -300,13 +301,13 @@ class RecoveryState():
|
||||||
if not source.is_dev():
|
if not source.is_dev():
|
||||||
raise GenericError('Invalid source "{}"'.format(
|
raise GenericError('Invalid source "{}"'.format(
|
||||||
source.path))
|
source.path))
|
||||||
elif not dest.is_dir():
|
if not dest.is_dir():
|
||||||
raise GenericError('Invalid destination "{}"'.format(
|
raise GenericError('Invalid destination "{}"'.format(
|
||||||
dest.path))
|
dest.path))
|
||||||
elif (source.size * 1.2) > dest.size:
|
if (source.size * 1.2) > dest.size:
|
||||||
raise GenericError(
|
raise GenericError(
|
||||||
'Not enough free space, refusing to continue.')
|
'Not enough free space, refusing to continue.')
|
||||||
elif dest.fstype.lower() not in RECOMMENDED_FSTYPES:
|
if dest.fstype.lower() not in RECOMMENDED_FSTYPES:
|
||||||
print_error(
|
print_error(
|
||||||
'Destination filesystem "{}" is not recommended.'.format(
|
'Destination filesystem "{}" is not recommended.'.format(
|
||||||
dest.fstype.upper()))
|
dest.fstype.upper()))
|
||||||
|
|
@ -315,13 +316,25 @@ class RecoveryState():
|
||||||
print_standard(' ')
|
print_standard(' ')
|
||||||
if not ask('Proceed anyways? (Strongly discouraged)'):
|
if not ask('Proceed anyways? (Strongly discouraged)'):
|
||||||
raise GenericAbort()
|
raise GenericAbort()
|
||||||
elif not is_writable_dir(dest):
|
if not is_writable_dir(dest):
|
||||||
raise GenericError(
|
raise GenericError(
|
||||||
'Destination is not writable, refusing to continue.')
|
'Destination is not writable, refusing to continue.')
|
||||||
elif not is_writable_filesystem(dest):
|
if not is_writable_filesystem(dest):
|
||||||
raise GenericError(
|
raise GenericError(
|
||||||
'Destination is mounted read-only, refusing to continue.')
|
'Destination is mounted read-only, refusing to continue.')
|
||||||
|
|
||||||
|
# Destination NVMe/SMART safety check
|
||||||
|
if dest.is_dev():
|
||||||
|
disk_obj = DiskObj(dest.path)
|
||||||
|
if disk_obj.nvme_attributes or disk_obj.smart_attributes:
|
||||||
|
if not disk_obj.check_attributes():
|
||||||
|
raise GenericError(
|
||||||
|
'NVMe/SMART issue detected on destination, refusing to continue.')
|
||||||
|
else:
|
||||||
|
print_warning('No NVMe or SMART data available for destination')
|
||||||
|
if not ask('Proceed anyways?'):
|
||||||
|
raise GenericAbort()
|
||||||
|
|
||||||
# Safety checks passed
|
# Safety checks passed
|
||||||
self.block_pairs.append(BlockPair(self.mode, source, dest))
|
self.block_pairs.append(BlockPair(self.mode, source, dest))
|
||||||
|
|
||||||
|
|
@ -930,7 +943,7 @@ def menu_ddrescue(source_path, dest_path, run_mode):
|
||||||
pause('Press Enter to exit... ')
|
pause('Press Enter to exit... ')
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
run_program(['tmux', 'kill-window'])
|
tmux_kill_all_panes()
|
||||||
exit_script()
|
exit_script()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,12 @@ class CpuObj():
|
||||||
continue
|
continue
|
||||||
self.lscpu[_field] = _data
|
self.lscpu[_field] = _data
|
||||||
|
|
||||||
|
# Get RAM details as well
|
||||||
|
ram_details = get_ram_details()
|
||||||
|
self.ram_total = human_readable_size(ram_details.pop('Total', 0)).strip()
|
||||||
|
self.ram_dimms = [
|
||||||
|
'{}x {}'.format(v, k) for k, v in sorted(ram_details.items())]
|
||||||
|
|
||||||
def generate_cpu_report(self):
|
def generate_cpu_report(self):
|
||||||
"""Generate CPU report with data from all tests."""
|
"""Generate CPU report with data from all tests."""
|
||||||
report = []
|
report = []
|
||||||
|
|
@ -60,11 +66,8 @@ class CpuObj():
|
||||||
report.append(' {}'.format(self.name))
|
report.append(' {}'.format(self.name))
|
||||||
|
|
||||||
# Include RAM details
|
# Include RAM details
|
||||||
ram_details = get_ram_details()
|
|
||||||
ram_total = human_readable_size(ram_details.pop('Total', 0)).strip()
|
|
||||||
ram_dimms = ['{}x {}'.format(v, k) for k, v in sorted(ram_details.items())]
|
|
||||||
report.append('{BLUE}RAM{CLEAR}'.format(**COLORS))
|
report.append('{BLUE}RAM{CLEAR}'.format(**COLORS))
|
||||||
report.append(' {} ({})'.format(ram_total, ', '.join(ram_dimms)))
|
report.append(' {} ({})'.format(self.ram_total, ', '.join(self.ram_dimms)))
|
||||||
|
|
||||||
# Tests
|
# Tests
|
||||||
for test in self.tests.values():
|
for test in self.tests.values():
|
||||||
|
|
@ -163,6 +166,18 @@ class DiskObj():
|
||||||
# self.dd_skip_extra == 0 is fine
|
# self.dd_skip_extra == 0 is fine
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def is_aging(self):
|
||||||
|
"""Check if power-on hours is above the threshold, returns bool."""
|
||||||
|
if self.nvme_attributes:
|
||||||
|
poh = self.nvme_attributes.get('power_on_hours', {}).get('raw', -1)
|
||||||
|
elif self.smart_attributes:
|
||||||
|
poh = self.smart_attributes.get(9, {}).get('raw', -1)
|
||||||
|
|
||||||
|
error_thresh = ATTRIBUTES['SMART'][9]['Error']
|
||||||
|
max_thresh = ATTRIBUTES['SMART'][9]['Maximum']
|
||||||
|
|
||||||
|
return error_thresh <= poh < max_thresh
|
||||||
|
|
||||||
def check_attributes(self):
|
def check_attributes(self):
|
||||||
"""Check NVMe / SMART attributes for errors, returns bool."""
|
"""Check NVMe / SMART attributes for errors, returns bool."""
|
||||||
attr_type = self.attr_type
|
attr_type = self.attr_type
|
||||||
|
|
@ -614,6 +629,83 @@ class State():
|
||||||
# Assuming layout definitions changes mid-run, ignoring
|
# Assuming layout definitions changes mid-run, ignoring
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def build_outer_panes(self):
|
||||||
|
"""Build top and side panes."""
|
||||||
|
clear_screen()
|
||||||
|
|
||||||
|
# Top
|
||||||
|
self.panes['Top'] = tmux_split_window(
|
||||||
|
behind=True, lines=2, vertical=True,
|
||||||
|
text=TOP_PANE_TEXT)
|
||||||
|
|
||||||
|
# Started
|
||||||
|
self.panes['Started'] = tmux_split_window(
|
||||||
|
lines=SIDE_PANE_WIDTH, target_pane=self.panes['Top'],
|
||||||
|
text='{BLUE}Started{CLEAR}\n{s}'.format(
|
||||||
|
s=time.strftime("%Y-%m-%d %H:%M %Z"),
|
||||||
|
**COLORS))
|
||||||
|
|
||||||
|
# Progress
|
||||||
|
self.panes['Progress'] = tmux_split_window(
|
||||||
|
lines=SIDE_PANE_WIDTH,
|
||||||
|
watch=self.progress_out)
|
||||||
|
|
||||||
|
def fix_tmux_panes(self):
|
||||||
|
"""Fix pane sizes if the window has been resized."""
|
||||||
|
needs_fixed = False
|
||||||
|
|
||||||
|
# Bail?
|
||||||
|
if not self.panes:
|
||||||
|
return
|
||||||
|
|
||||||
|
# Check layout
|
||||||
|
for k, v in self.tmux_layout.items():
|
||||||
|
if not v.get('Check'):
|
||||||
|
# Not concerned with the size of this pane
|
||||||
|
continue
|
||||||
|
# Get target
|
||||||
|
target = None
|
||||||
|
if k != 'Current':
|
||||||
|
if k not in self.panes:
|
||||||
|
# Skip missing panes
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
target = self.panes[k]
|
||||||
|
|
||||||
|
# Check pane size
|
||||||
|
x, y = tmux_get_pane_size(pane_id=target)
|
||||||
|
if v.get('x', False) and v['x'] != x:
|
||||||
|
needs_fixed = True
|
||||||
|
if v.get('y', False) and v['y'] != y:
|
||||||
|
needs_fixed = True
|
||||||
|
|
||||||
|
# Bail?
|
||||||
|
if not needs_fixed:
|
||||||
|
return
|
||||||
|
|
||||||
|
# Update layout
|
||||||
|
for k, v in self.tmux_layout.items():
|
||||||
|
# Get target
|
||||||
|
target = None
|
||||||
|
if k != 'Current':
|
||||||
|
if k not in self.panes:
|
||||||
|
# Skip missing panes
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
target = self.panes[k]
|
||||||
|
|
||||||
|
# Resize pane
|
||||||
|
tmux_resize_pane(pane_id=target, **v)
|
||||||
|
|
||||||
|
def fix_tmux_panes_loop(self):
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
self.fix_tmux_panes()
|
||||||
|
sleep(1)
|
||||||
|
except RuntimeError:
|
||||||
|
# Assuming layout definitions changes mid-run, ignoring
|
||||||
|
pass
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
"""Remove test objects, set log, and add devices."""
|
"""Remove test objects, set log, and add devices."""
|
||||||
self.disks = []
|
self.disks = []
|
||||||
|
|
@ -1135,8 +1227,13 @@ def run_hw_tests(state):
|
||||||
v['Objects'][-1].update_status('N/A')
|
v['Objects'][-1].update_status('N/A')
|
||||||
if k == TESTS_CPU[-1]:
|
if k == TESTS_CPU[-1]:
|
||||||
# Last CPU test run, post CPU results
|
# Last CPU test run, post CPU results
|
||||||
|
cpu_failed = False
|
||||||
|
for test in state.cpu.tests.values():
|
||||||
|
cpu_failed = cpu_failed or test.failed
|
||||||
|
cpu_failed = cpu_failed or not test.passed
|
||||||
|
color_code = 'Diags FAIL' if cpu_failed else 'Diags'
|
||||||
state.ost.post_device_results(
|
state.ost.post_device_results(
|
||||||
state.cpu, state.ticket_id, state.ticket_name)
|
state.cpu, state.ticket_id, state.ticket_name, color_code)
|
||||||
# Recheck attributes
|
# Recheck attributes
|
||||||
if state.tests['NVMe / SMART']['Enabled']:
|
if state.tests['NVMe / SMART']['Enabled']:
|
||||||
for test_obj in state.tests['NVMe / SMART']['Objects']:
|
for test_obj in state.tests['NVMe / SMART']['Objects']:
|
||||||
|
|
@ -1171,8 +1268,15 @@ def run_hw_tests(state):
|
||||||
if _disk_tests_enabled and state.disks and not state.ost.disabled:
|
if _disk_tests_enabled and state.disks and not state.ost.disabled:
|
||||||
print_standard('Posting results to osTicket...')
|
print_standard('Posting results to osTicket...')
|
||||||
for disk in state.disks:
|
for disk in state.disks:
|
||||||
|
# Set color code
|
||||||
|
color_code = 'Diags'
|
||||||
|
for test in disk.tests.values():
|
||||||
|
if test.disabled:
|
||||||
|
continue
|
||||||
|
if test.failed or not (test.passed or 'N/A' in test.status):
|
||||||
|
color_code = 'Diags FAIL'
|
||||||
state.ost.post_device_results(
|
state.ost.post_device_results(
|
||||||
disk, state.ticket_id, state.ticket_name)
|
disk, state.ticket_id, state.ticket_name, color_code)
|
||||||
|
|
||||||
# Check if disk checkbox needs updating
|
# Check if disk checkbox needs updating
|
||||||
all_disks_passed = True
|
all_disks_passed = True
|
||||||
|
|
@ -1200,7 +1304,9 @@ def run_hw_tests(state):
|
||||||
print_standard(' ')
|
print_standard(' ')
|
||||||
|
|
||||||
# Upload for review
|
# Upload for review
|
||||||
if ENABLED_UPLOAD_DATA and ask('Upload results for review?'):
|
if (ENABLED_UPLOAD_DATA
|
||||||
|
and DEBUG_MODE
|
||||||
|
and ask('Upload results for review?')):
|
||||||
try_and_print(
|
try_and_print(
|
||||||
message='Saving debug reports...',
|
message='Saving debug reports...',
|
||||||
function=save_debug_reports,
|
function=save_debug_reports,
|
||||||
|
|
@ -1652,6 +1758,9 @@ def run_nvme_smart_tests(state, test, update_mode=False):
|
||||||
if test.failed and not update_mode:
|
if test.failed and not update_mode:
|
||||||
for t in ['badblocks', 'I/O Benchmark']:
|
for t in ['badblocks', 'I/O Benchmark']:
|
||||||
dev.disable_test(t, 'Denied')
|
dev.disable_test(t, 'Denied')
|
||||||
|
if dev.is_aging() and not update_mode:
|
||||||
|
test.failed = True
|
||||||
|
test.update_status('FAIL')
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
update_progress_pane(state)
|
update_progress_pane(state)
|
||||||
|
|
|
||||||
|
|
@ -204,6 +204,9 @@ class osTicket():
|
||||||
|
|
||||||
# Device
|
# Device
|
||||||
report.append(dev.description)
|
report.append(dev.description)
|
||||||
|
if hasattr(dev, 'ram_total'):
|
||||||
|
report.append('{} RAM ({})'.format(
|
||||||
|
dev.ram_total, ', '.join(dev.ram_dimms)))
|
||||||
report.append(' ')
|
report.append(' ')
|
||||||
|
|
||||||
# Test reports
|
# Test reports
|
||||||
|
|
@ -240,6 +243,8 @@ class osTicket():
|
||||||
report.append('Volumes:')
|
report.append('Volumes:')
|
||||||
report.extend(self.generate_volume_report(dev, results))
|
report.extend(self.generate_volume_report(dev, results))
|
||||||
report.append(' ')
|
report.append(' ')
|
||||||
|
if not dev.is_4k_aligned():
|
||||||
|
report.append('! NOTE: One or more partitions are not 4K aligned')
|
||||||
|
|
||||||
# Asterisk
|
# Asterisk
|
||||||
if results['Asterisk']:
|
if results['Asterisk']:
|
||||||
|
|
@ -497,15 +502,15 @@ class osTicket():
|
||||||
# Done
|
# Done
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def post_device_results(self, dev, ticket_id, ticket_name):
|
def post_device_results(self, dev, ticket_id, ticket_name, color='Diags'):
|
||||||
"""Generate osTicket friendly report and post as response to ticket."""
|
"""Generate osTicket friendly report and post as response to ticket."""
|
||||||
if not dev.tests:
|
if not dev.tests:
|
||||||
# No test results available, aborting post
|
# No test results available, aborting post
|
||||||
return
|
return
|
||||||
response = self.generate_report(dev, ticket_id, ticket_name)
|
response = self.generate_report(dev, ticket_id, ticket_name)
|
||||||
self.post_response(response, ticket_id)
|
self.post_response(response, ticket_id, color)
|
||||||
|
|
||||||
def post_response(self, response, ticket_id):
|
def post_response(self, response, ticket_id, color='Normal'):
|
||||||
"""Post a reply to a ticket in osTicket."""
|
"""Post a reply to a ticket in osTicket."""
|
||||||
self.connect()
|
self.connect()
|
||||||
|
|
||||||
|
|
@ -520,12 +525,13 @@ class osTicket():
|
||||||
# Build SQL cmd
|
# Build SQL cmd
|
||||||
sql_cmd = "INSERT INTO `{Name}`.`{Response}`".format(
|
sql_cmd = "INSERT INTO `{Name}`.`{Response}`".format(
|
||||||
**OSTICKET['Database'], **OSTICKET['Tables'])
|
**OSTICKET['Database'], **OSTICKET['Tables'])
|
||||||
sql_cmd += " (ticket_id, staff_id, staff_name, response, created)"
|
sql_cmd += " (ticket_id, staff_id, staff_name, response, created, code)"
|
||||||
sql_cmd += " VALUES ("
|
sql_cmd += " VALUES ("
|
||||||
sql_cmd += " '{}',".format(ticket_id)
|
sql_cmd += " '{}',".format(ticket_id)
|
||||||
sql_cmd += " '{ID}', '{Name}',".format(**OSTICKET['Staff'])
|
sql_cmd += " '{ID}', '{Name}',".format(**OSTICKET['Staff'])
|
||||||
sql_cmd += " '{}',".format(response.replace("'", "\\'"))
|
sql_cmd += " '{}',".format(response.replace("'", "\\'"))
|
||||||
sql_cmd += " '{}'".format(time.strftime("%Y-%m-%d %H:%M:%S"))
|
sql_cmd += " '{}',".format(time.strftime("%Y-%m-%d %H:%M:%S"))
|
||||||
|
sql_cmd += " '{}'".format(OSTICKET['Color Codes'][color])
|
||||||
sql_cmd += " );"
|
sql_cmd += " );"
|
||||||
|
|
||||||
# Run SQL cmd
|
# Run SQL cmd
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,18 @@ def tmux_split_window(
|
||||||
return result.stdout.decode().strip()
|
return result.stdout.decode().strip()
|
||||||
|
|
||||||
|
|
||||||
|
def tmux_switch_client(target_session=None):
|
||||||
|
"""Switch to target tmux session, or previous if none specified."""
|
||||||
|
cmd = ['tmux', 'switch-client']
|
||||||
|
if target_session:
|
||||||
|
cmd.extend(['-t', target_session])
|
||||||
|
else:
|
||||||
|
# Switch to previous instead
|
||||||
|
cmd.append('-p')
|
||||||
|
|
||||||
|
run_program(cmd, check=False)
|
||||||
|
|
||||||
|
|
||||||
def tmux_update_pane(
|
def tmux_update_pane(
|
||||||
pane_id, command=None, working_dir=None,
|
pane_id, command=None, working_dir=None,
|
||||||
text=None, watch=None, watch_cmd='cat'):
|
text=None, watch=None, watch_cmd='cat'):
|
||||||
|
|
|
||||||
|
|
@ -1177,6 +1177,19 @@ def update_winaiorepair():
|
||||||
|
|
||||||
|
|
||||||
# Uninstallers
|
# Uninstallers
|
||||||
|
def update_eset_av_remover():
|
||||||
|
# ESET AVRemover32
|
||||||
|
## NOTE: Lives in .bin uncompressed
|
||||||
|
# Stop running processes
|
||||||
|
for exe in ['AVRemover32.exe', 'AVRemover64.exe']:
|
||||||
|
kill_process(exe)
|
||||||
|
|
||||||
|
# Download
|
||||||
|
dest = r'{}\AVRemover'.format(global_vars['BinDir'])
|
||||||
|
download_generic(dest, 'AVRemover.exe', SOURCE_URLS['AVRemover32'])
|
||||||
|
download_generic(dest, 'AVRemover64.exe', SOURCE_URLS['AVRemover64'])
|
||||||
|
|
||||||
|
|
||||||
def update_iobit_uninstaller():
|
def update_iobit_uninstaller():
|
||||||
# Stop running processes
|
# Stop running processes
|
||||||
kill_process('IObitUninstallerPortable.exe')
|
kill_process('IObitUninstallerPortable.exe')
|
||||||
|
|
|
||||||
|
|
@ -1,46 +1,11 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
## Wizard Kit: HW Diagnostics - Menu Launcher
|
## Wizard Kit: HW Diagnostics Launcher
|
||||||
|
|
||||||
|
source launch-in-tmux
|
||||||
|
|
||||||
SESSION_NAME="hw-diags"
|
SESSION_NAME="hw-diags"
|
||||||
WINDOW_NAME="Hardware Diagnostics"
|
WINDOW_NAME="Hardware Diagnostics"
|
||||||
MENU="hw-diags-menu"
|
TMUX_CMD="hw-diags-menu"
|
||||||
|
|
||||||
function ask() {
|
|
||||||
while :; do
|
|
||||||
read -p "$1 [Y/N] " -r answer
|
|
||||||
if echo "$answer" | egrep -iq '^(y|yes|sure)$'; then
|
|
||||||
return 0
|
|
||||||
elif echo "$answer" | egrep -iq '^(n|no|nope)$'; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
die () {
|
|
||||||
echo "$0:" "$@" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for running session
|
|
||||||
if tmux list-session | grep -q "$SESSION_NAME"; then
|
|
||||||
echo "WARNING: tmux session $SESSION_NAME already exists."
|
|
||||||
echo ""
|
|
||||||
if ask "Connect to current session?"; then
|
|
||||||
# Do nothing, the command below will attach/connect
|
|
||||||
echo ""
|
|
||||||
elif ask "Kill current session and start new session?"; then
|
|
||||||
tmux kill-session -t "$SESSION_NAME" || \
|
|
||||||
die "Failed to kill session: $SESSION_NAME"
|
|
||||||
else
|
|
||||||
echo "Aborted."
|
|
||||||
echo ""
|
|
||||||
echo -n "Press Enter to exit... "
|
|
||||||
read -r
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start session
|
|
||||||
tmux new-session -A -s "$SESSION_NAME" -n "$WINDOW_NAME" "$MENU" $*
|
|
||||||
|
|
||||||
|
launch_in_tmux "$@"
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ if __name__ == '__main__':
|
||||||
sleep(1)
|
sleep(1)
|
||||||
pause('Press Enter to exit...')
|
pause('Press Enter to exit...')
|
||||||
except SystemExit as sys_exit:
|
except SystemExit as sys_exit:
|
||||||
|
tmux_switch_client()
|
||||||
exit_script(sys_exit.code)
|
exit_script(sys_exit.code)
|
||||||
except:
|
except:
|
||||||
# Cleanup
|
# Cleanup
|
||||||
|
|
@ -59,6 +60,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
tmux_kill_all_panes()
|
tmux_kill_all_panes()
|
||||||
|
tmux_switch_client()
|
||||||
exit_script()
|
exit_script()
|
||||||
|
|
||||||
# vim: sts=2 sw=2 ts=2
|
# vim: sts=2 sw=2 ts=2
|
||||||
|
|
|
||||||
64
.bin/Scripts/launch-in-tmux
Executable file
|
|
@ -0,0 +1,64 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
## Wizard Kit: TMUX Launcher
|
||||||
|
|
||||||
|
function ask() {
|
||||||
|
while :; do
|
||||||
|
read -p "$1 [Y/N] " -r answer
|
||||||
|
if echo "$answer" | grep -Eiq '^(y|yes|sure)$'; then
|
||||||
|
return 0
|
||||||
|
elif echo "$answer" | grep -Eiq '^(n|no|nope)$'; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo "$0:" "$@" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function launch_in_tmux() {
|
||||||
|
# Check for required vars
|
||||||
|
[[ -n "${SESSION_NAME:-}" ]] || die "Required variable missing (SESSION_NAME)"
|
||||||
|
[[ -n "${WINDOW_NAME:-}" ]] || die "Required variable missing (WINDOW_NAME)"
|
||||||
|
[[ -n "${TMUX_CMD:-}" ]] || die "Required variable missing (TMUX_CMD)"
|
||||||
|
|
||||||
|
# Check for running session
|
||||||
|
if tmux list-session | grep -q "$SESSION_NAME"; then
|
||||||
|
echo "WARNING: tmux session $SESSION_NAME already exists."
|
||||||
|
echo ""
|
||||||
|
if ask "Connect to current session?"; then
|
||||||
|
if [[ -n "${TMUX:-}" ]]; then
|
||||||
|
# Running inside TMUX, switch to session
|
||||||
|
tmux switch-client -t "$SESSION_NAME"
|
||||||
|
else
|
||||||
|
# Running outside TMUX, attach to session
|
||||||
|
tmux attach-session -t "$SESSION_NAME"
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
elif ask "Kill current session and start new session?"; then
|
||||||
|
tmux kill-session -t "$SESSION_NAME" || \
|
||||||
|
die "Failed to kill session: $SESSION_NAME"
|
||||||
|
else
|
||||||
|
echo "Aborted."
|
||||||
|
echo ""
|
||||||
|
echo -n "Press Enter to exit... "
|
||||||
|
read -r
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start/Rename session
|
||||||
|
if [[ -n "${TMUX:-}" ]]; then
|
||||||
|
# Running inside TMUX, rename session/window and open the menu
|
||||||
|
tmux rename-session "$SESSION_NAME"
|
||||||
|
tmux rename-window "$WINDOW_NAME"
|
||||||
|
"$TMUX_CMD" "$@"
|
||||||
|
tmux rename-session "${SESSION_NAME}_DONE"
|
||||||
|
tmux rename-window "${WINDOW_NAME}_DONE"
|
||||||
|
else
|
||||||
|
# Running outside TMUX, start/attach to session
|
||||||
|
tmux new-session -s "$SESSION_NAME" -n "$WINDOW_NAME" "$TMUX_CMD" "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
@ -1,11 +1,18 @@
|
||||||
# Wizard Kit: Settings - Cleanup
|
'''Wizard Kit: Settings - Cleanup'''
|
||||||
|
# vim: sts=2 sw=2 ts=2
|
||||||
|
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
import psutil
|
|
||||||
try:
|
try:
|
||||||
|
# pylint: disable=import-error
|
||||||
import winreg
|
import winreg
|
||||||
|
HKU = winreg.HKEY_USERS
|
||||||
|
HKCR = winreg.HKEY_CLASSES_ROOT
|
||||||
|
HKCU = winreg.HKEY_CURRENT_USER
|
||||||
|
HKLM = winreg.HKEY_LOCAL_MACHINE
|
||||||
except ModuleNotFoundError:
|
except ModuleNotFoundError:
|
||||||
if psutil.WINDOWS:
|
if os.name == 'nt':
|
||||||
raise
|
raise
|
||||||
|
|
||||||
# d7II
|
# d7II
|
||||||
|
|
@ -33,10 +40,6 @@ DESKTOP_ITEMS = re.compile(
|
||||||
)
|
)
|
||||||
|
|
||||||
# Registry
|
# Registry
|
||||||
HKU = winreg.HKEY_USERS
|
|
||||||
HKCR = winreg.HKEY_CLASSES_ROOT
|
|
||||||
HKCU = winreg.HKEY_CURRENT_USER
|
|
||||||
HKLM = winreg.HKEY_LOCAL_MACHINE
|
|
||||||
UAC_DEFAULTS_WIN7 = {
|
UAC_DEFAULTS_WIN7 = {
|
||||||
r'Software\Microsoft\Windows\CurrentVersion\Policies\System': {
|
r'Software\Microsoft\Windows\CurrentVersion\Policies\System': {
|
||||||
'DWORD Items': {
|
'DWORD Items': {
|
||||||
|
|
@ -62,5 +65,3 @@ UAC_DEFAULTS_WIN10 = {
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
||||||
# vim: sts=2 sw=2 ts=2
|
|
||||||
|
|
|
||||||
|
|
@ -76,16 +76,16 @@ ATTRIBUTES = {
|
||||||
'NVMe': {
|
'NVMe': {
|
||||||
'critical_warning': {'Critical': True, 'Ignore': False, 'Warning': None, 'Error': 1, 'Maximum': None, },
|
'critical_warning': {'Critical': True, 'Ignore': False, 'Warning': None, 'Error': 1, 'Maximum': None, },
|
||||||
'media_errors': {'Critical': True, 'Ignore': False, 'Warning': None, 'Error': 1, 'Maximum': None, },
|
'media_errors': {'Critical': True, 'Ignore': False, 'Warning': None, 'Error': 1, 'Maximum': None, },
|
||||||
'power_on_hours': {'Critical': False, 'Ignore': True, 'Warning': 17532, 'Error': 26298, 'Maximum': None, },
|
'power_on_hours': {'Critical': False, 'Ignore': True, 'Warning': 17532, 'Error': 26298, 'Maximum': 122724,},
|
||||||
'unsafe_shutdowns': {'Critical': False, 'Ignore': True, 'Warning': 1, 'Error': None, 'Maximum': None, },
|
'unsafe_shutdowns': {'Critical': False, 'Ignore': True, 'Warning': 1, 'Error': None, 'Maximum': None, },
|
||||||
},
|
},
|
||||||
'SMART': {
|
'SMART': {
|
||||||
5: {'Hex': '05', 'Critical': True, 'Ignore': False, 'Warning': None, 'Error': 1, 'Maximum': None, },
|
5: {'Hex': '05', 'Critical': True, 'Ignore': False, 'Warning': None, 'Error': 1, 'Maximum': None, },
|
||||||
9: {'Hex': '09', 'Critical': False, 'Ignore': True, 'Warning': 17532, 'Error': 26298, 'Maximum': None, },
|
9: {'Hex': '09', 'Critical': False, 'Ignore': True, 'Warning': 17532, 'Error': 26298, 'Maximum': 122724,},
|
||||||
10: {'Hex': '10', 'Critical': False, 'Ignore': False, 'Warning': 1, 'Error': 10, 'Maximum': 10000, },
|
10: {'Hex': '10', 'Critical': False, 'Ignore': False, 'Warning': 1, 'Error': 10, 'Maximum': 10000, },
|
||||||
184: {'Hex': 'B8', 'Critical': False, 'Ignore': False, 'Warning': 1, 'Error': 10, 'Maximum': 10000, },
|
184: {'Hex': 'B8', 'Critical': False, 'Ignore': False, 'Warning': 1, 'Error': 10, 'Maximum': 10000, },
|
||||||
187: {'Hex': 'BB', 'Critical': False, 'Ignore': False, 'Warning': 1, 'Error': 10, 'Maximum': 10000, },
|
187: {'Hex': 'BB', 'Critical': False, 'Ignore': False, 'Warning': 1, 'Error': 10, 'Maximum': 10000, },
|
||||||
188: {'Hex': 'BC', 'Critical': False, 'Ignore': False, 'Warning': 1, 'Error': 10, 'Maximum': 10000, },
|
188: {'Hex': 'BC', 'Critical': False, 'Ignore': True, 'Warning': 1, 'Error': 10, 'Maximum': 10000, },
|
||||||
196: {'Hex': 'C4', 'Critical': False, 'Ignore': False, 'Warning': 1, 'Error': 10, 'Maximum': 10000, },
|
196: {'Hex': 'C4', 'Critical': False, 'Ignore': False, 'Warning': 1, 'Error': 10, 'Maximum': 10000, },
|
||||||
197: {'Hex': 'C5', 'Critical': True, 'Ignore': False, 'Warning': None, 'Error': 1, 'Maximum': None, },
|
197: {'Hex': 'C5', 'Critical': True, 'Ignore': False, 'Warning': None, 'Error': 1, 'Maximum': None, },
|
||||||
198: {'Hex': 'C6', 'Critical': True, 'Ignore': False, 'Warning': None, 'Error': 1, 'Maximum': None, },
|
198: {'Hex': 'C6', 'Critical': True, 'Ignore': False, 'Warning': None, 'Error': 1, 'Maximum': None, },
|
||||||
|
|
@ -94,9 +94,10 @@ ATTRIBUTES = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
ATTRIBUTE_COLORS = (
|
ATTRIBUTE_COLORS = (
|
||||||
|
# NOTE: The order here is important; least important to most important.
|
||||||
|
('Warning', 'YELLOW'),
|
||||||
('Error', 'RED'),
|
('Error', 'RED'),
|
||||||
('Maximum', 'PURPLE'),
|
('Maximum', 'PURPLE'),
|
||||||
('Warning', 'YELLOW'),
|
|
||||||
)
|
)
|
||||||
KEY_NVME = 'nvme_smart_health_information_log'
|
KEY_NVME = 'nvme_smart_health_information_log'
|
||||||
KEY_SMART = 'ata_smart_attributes'
|
KEY_SMART = 'ata_smart_attributes'
|
||||||
|
|
|
||||||
80
.bin/Scripts/settings/launchers.py
Normal file → Executable file
|
|
@ -1,4 +1,6 @@
|
||||||
# Wizard Kit: Settings - Launchers
|
'''Wizard Kit: Settings - Launchers'''
|
||||||
|
# pylint: disable=line-too-long
|
||||||
|
# vim: sts=2 sw=2 ts=2
|
||||||
|
|
||||||
LAUNCHERS = {
|
LAUNCHERS = {
|
||||||
r'(Root)': {
|
r'(Root)': {
|
||||||
|
|
@ -6,6 +8,53 @@ LAUNCHERS = {
|
||||||
'L_TYPE': 'Executable',
|
'L_TYPE': 'Executable',
|
||||||
'L_PATH': 'd7II',
|
'L_PATH': 'd7II',
|
||||||
'L_ITEM': 'd7II.exe',
|
'L_ITEM': 'd7II.exe',
|
||||||
|
'Extra Code': [
|
||||||
|
r'rem Pre-d7II safety checks',
|
||||||
|
r'rem NOTE: This is an ugly hack but it works',
|
||||||
|
r'',
|
||||||
|
r':Init2',
|
||||||
|
r'echo Running safety checks...',
|
||||||
|
r'set ARCH=32',
|
||||||
|
r'if /i "%PROCESSOR_ARCHITECTURE%" == "AMD64" set "ARCH=64"',
|
||||||
|
r'set "AV_REMOVER=%bin%\AVRemover\AVRemover.exe"',
|
||||||
|
r'set "PYTHON=%bin%\Python\x32\python.exe"',
|
||||||
|
r'if %ARCH% equ 64 (',
|
||||||
|
r' set "AV_REMOVER=%bin%\AVRemover\AVRemover64.exe"',
|
||||||
|
r' set "PYTHON=%bin%\Python\x64\python.exe"',
|
||||||
|
r')',
|
||||||
|
r'',
|
||||||
|
r':PythonChecks',
|
||||||
|
r'if not exist "%PYTHON%" goto ErrorPythonNotFound',
|
||||||
|
r'"%PYTHON%" --version >nul || goto ErrorPythonUnsupported',
|
||||||
|
r'echo Python: OK',
|
||||||
|
r'',
|
||||||
|
r':AVCheck',
|
||||||
|
r'rem Run ESETs AV Removal tool for tech to review',
|
||||||
|
r'echo Please check for running AV',
|
||||||
|
r'start "" /wait "%AV_REMOVER%"',
|
||||||
|
r'echo.',
|
||||||
|
r'echo Press Enter to Launch d7II...',
|
||||||
|
r'pause>nul',
|
||||||
|
r'goto DefineLaunch',
|
||||||
|
r'',
|
||||||
|
r':: Pre-d7II Errors',
|
||||||
|
r':ErrorPythonNotFound',
|
||||||
|
r'rem Broken Kit',
|
||||||
|
r'echo.',
|
||||||
|
r'echo ERROR: The Python executable is missing.',
|
||||||
|
r'echo This kit is damaged and needs to be rebuilt',
|
||||||
|
r'goto Abort',
|
||||||
|
r'',
|
||||||
|
r':ErrorPythonUnsupported',
|
||||||
|
r'rem The Windows installation lacks Windows update KB2999226 needed to run Python',
|
||||||
|
r'echo.',
|
||||||
|
r'echo ERROR: Failed to run Python, try installing Windows update KB2999226.',
|
||||||
|
r'echo NOTE: That update is from October 2015 so this system is SEVERELY outdated',
|
||||||
|
r'if exist "%bin%\..\Installers\Extras\Windows Updates" (',
|
||||||
|
r' start "" "explorer.exe" "%bin%\..\Installers\Extras\Windows Updates"',
|
||||||
|
r')',
|
||||||
|
r'goto Abort',
|
||||||
|
],
|
||||||
},
|
},
|
||||||
'System Setup': {
|
'System Setup': {
|
||||||
'L_TYPE': 'PyScript',
|
'L_TYPE': 'PyScript',
|
||||||
|
|
@ -66,6 +115,7 @@ LAUNCHERS = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
r'Data Transfers': {
|
r'Data Transfers': {
|
||||||
|
# pylint: disable=bad-continuation
|
||||||
"Fab's Autobackup Pro": {
|
"Fab's Autobackup Pro": {
|
||||||
'L_TYPE': 'Executable',
|
'L_TYPE': 'Executable',
|
||||||
'L_PATH': 'AutoBackupPro',
|
'L_PATH': 'AutoBackupPro',
|
||||||
|
|
@ -278,7 +328,7 @@ LAUNCHERS = {
|
||||||
'L_TYPE': 'Executable',
|
'L_TYPE': 'Executable',
|
||||||
'L_PATH': 'erunt',
|
'L_PATH': 'erunt',
|
||||||
'L_ITEM': 'ERUNT.EXE',
|
'L_ITEM': 'ERUNT.EXE',
|
||||||
'L_ARGS': '%client_dir%\Backups\Registry\%iso_date% sysreg curuser otherusers',
|
'L_ARGS': r'%client_dir%\Backups\Registry\%iso_date% sysreg curuser otherusers',
|
||||||
'L_ELEV': 'True',
|
'L_ELEV': 'True',
|
||||||
'Extra Code': [
|
'Extra Code': [
|
||||||
r'call "%bin%\Scripts\init_client_dir.cmd" /Logs',
|
r'call "%bin%\Scripts\init_client_dir.cmd" /Logs',
|
||||||
|
|
@ -330,13 +380,13 @@ LAUNCHERS = {
|
||||||
r'Drivers': {
|
r'Drivers': {
|
||||||
'Intel RST (Current Release)': {
|
'Intel RST (Current Release)': {
|
||||||
'L_TYPE': 'Executable',
|
'L_TYPE': 'Executable',
|
||||||
'L_PATH': '_Drivers\Intel RST',
|
'L_PATH': r'_Drivers\Intel RST',
|
||||||
'L_ITEM': 'SetupRST_17.2.exe',
|
'L_ITEM': 'SetupRST_17.2.exe',
|
||||||
'L_7ZIP': 'SetupRST_17.2.exe',
|
'L_7ZIP': 'SetupRST_17.2.exe',
|
||||||
},
|
},
|
||||||
'Intel RST (Previous Releases)': {
|
'Intel RST (Previous Releases)': {
|
||||||
'L_TYPE': 'Folder',
|
'L_TYPE': 'Folder',
|
||||||
'L_PATH': '_Drivers\Intel RST',
|
'L_PATH': r'_Drivers\Intel RST',
|
||||||
'L_ITEM': '.',
|
'L_ITEM': '.',
|
||||||
'L_NCMD': 'True',
|
'L_NCMD': 'True',
|
||||||
},
|
},
|
||||||
|
|
@ -352,7 +402,7 @@ LAUNCHERS = {
|
||||||
},
|
},
|
||||||
'Snappy Driver Installer Origin': {
|
'Snappy Driver Installer Origin': {
|
||||||
'L_TYPE': 'Executable',
|
'L_TYPE': 'Executable',
|
||||||
'L_PATH': '_Drivers\SDIO',
|
'L_PATH': r'_Drivers\SDIO',
|
||||||
'L_ITEM': 'SDIO.exe',
|
'L_ITEM': 'SDIO.exe',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -507,6 +557,20 @@ LAUNCHERS = {
|
||||||
'L_PATH': 'ConEmu',
|
'L_PATH': 'ConEmu',
|
||||||
'L_ITEM': 'ConEmu.exe',
|
'L_ITEM': 'ConEmu.exe',
|
||||||
},
|
},
|
||||||
|
'Disable Windows Updates': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'windows_updates.py',
|
||||||
|
'L_ARGS': '--disable',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
|
'Enable Windows Updates': {
|
||||||
|
'L_TYPE': 'PyScript',
|
||||||
|
'L_PATH': 'Scripts',
|
||||||
|
'L_ITEM': 'windows_updates.py',
|
||||||
|
'L_ARGS': '--enable',
|
||||||
|
'L_ELEV': 'True',
|
||||||
|
},
|
||||||
'Enter SafeMode': {
|
'Enter SafeMode': {
|
||||||
'L_TYPE': 'PyScript',
|
'L_TYPE': 'PyScript',
|
||||||
'L_PATH': 'Scripts',
|
'L_PATH': 'Scripts',
|
||||||
|
|
@ -562,7 +626,7 @@ LAUNCHERS = {
|
||||||
'L_TYPE': 'Executable',
|
'L_TYPE': 'Executable',
|
||||||
'L_PATH': 'XMPlay',
|
'L_PATH': 'XMPlay',
|
||||||
'L_ITEM': 'xmplay.exe',
|
'L_ITEM': 'xmplay.exe',
|
||||||
'L_ARGS': '"%bin%\XMPlay\music.7z"',
|
'L_ARGS': r'"%bin%\XMPlay\music.7z"',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
r'Repairs': {
|
r'Repairs': {
|
||||||
|
|
@ -627,7 +691,7 @@ LAUNCHERS = {
|
||||||
'L_TYPE': 'Executable',
|
'L_TYPE': 'Executable',
|
||||||
'L_PATH': 'RKill',
|
'L_PATH': 'RKill',
|
||||||
'L_ITEM': 'RKill.exe',
|
'L_ITEM': 'RKill.exe',
|
||||||
'L_ARGS': '-s -l %log_dir%\Tools\RKill.log',
|
'L_ARGS': r'-s -l %log_dir%\Tools\RKill.log',
|
||||||
'L_ELEV': 'True',
|
'L_ELEV': 'True',
|
||||||
'Extra Code': [
|
'Extra Code': [
|
||||||
r'call "%bin%\Scripts\init_client_dir.cmd" /Logs',
|
r'call "%bin%\Scripts\init_client_dir.cmd" /Logs',
|
||||||
|
|
@ -697,5 +761,3 @@ LAUNCHERS = {
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
||||||
# vim: sts=2 sw=2 ts=2
|
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@ TECH_PASSWORD='Sorted1201'
|
||||||
# Root Certificate Authority
|
# Root Certificate Authority
|
||||||
ROOT_CA_NAME='1201_Root_CA.crt'
|
ROOT_CA_NAME='1201_Root_CA.crt'
|
||||||
# Server IP addresses
|
# Server IP addresses
|
||||||
OFFICE_SERVER_IP='10.11.1.20'
|
OFFICE_SERVER_IP='10.120.1.15'
|
||||||
QUICKBOOKS_SERVER_IP='10.11.1.20'
|
QUICKBOOKS_SERVER_IP='10.120.1.15'
|
||||||
# Time Zones
|
# Time Zones
|
||||||
LINUX_TIME_ZONE='America/Los_Angeles' # See 'timedatectl list-timezones' for valid values
|
LINUX_TIME_ZONE='America/Los_Angeles' # See 'timedatectl list-timezones' for valid values
|
||||||
WINDOWS_TIME_ZONE='Pacific Standard Time' # See 'tzutil /l' for valid values
|
WINDOWS_TIME_ZONE='Pacific Standard Time' # See 'tzutil /l' for valid values
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,12 @@
|
||||||
# Wizard Kit: Settings - osTicket
|
# Wizard Kit: Settings - osTicket
|
||||||
|
|
||||||
OSTICKET = {
|
OSTICKET = {
|
||||||
|
'Color Codes': {
|
||||||
|
'Normal': '0',
|
||||||
|
'Contact': '1',
|
||||||
|
'Diags': '2',
|
||||||
|
'Diags FAIL': '3',
|
||||||
|
},
|
||||||
'Database': {
|
'Database': {
|
||||||
'Name': 'osticket',
|
'Name': 'osticket',
|
||||||
'User': 'wizardkit',
|
'User': 'wizardkit',
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,10 @@ MOZILLA_FIREFOX_UBO_PATH = r'{}\{}\ublock_origin.xpi'.format(
|
||||||
os.environ.get('PROGRAMFILES'),
|
os.environ.get('PROGRAMFILES'),
|
||||||
r'Mozilla Firefox\distribution\extensions')
|
r'Mozilla Firefox\distribution\extensions')
|
||||||
SETTINGS_GOOGLE_CHROME = {
|
SETTINGS_GOOGLE_CHROME = {
|
||||||
|
r'Software\Policies\Google\Chrome': {
|
||||||
|
'DWORD Items': {'DefaultNotificationsSetting': 2},
|
||||||
|
# 1: Allow, 2: Don't allow, 3: Ask
|
||||||
|
},
|
||||||
r'Software\Google\Chrome\Extensions\cjpalhdlnbpafiamejdnhcphjbkeiagm': {
|
r'Software\Google\Chrome\Extensions\cjpalhdlnbpafiamejdnhcphjbkeiagm': {
|
||||||
'SZ Items': {
|
'SZ Items': {
|
||||||
'update_url': 'https://clients2.google.com/service/update2/crx'},
|
'update_url': 'https://clients2.google.com/service/update2/crx'},
|
||||||
|
|
@ -170,6 +174,7 @@ SETTINGS_EXPLORER_USER = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
r'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced': {
|
r'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced': {
|
||||||
|
# Dup path so it Will be applied to all modes
|
||||||
'DWORD Items': {
|
'DWORD Items': {
|
||||||
# Launch Folder Windows in a Separate Process
|
# Launch Folder Windows in a Separate Process
|
||||||
'SeparateProcess': 1,
|
'SeparateProcess': 1,
|
||||||
|
|
|
||||||
|
|
@ -3,38 +3,40 @@
|
||||||
# vim: sts=2 sw=2 ts=2 tw=0
|
# vim: sts=2 sw=2 ts=2 tw=0
|
||||||
|
|
||||||
SOURCE_URLS = {
|
SOURCE_URLS = {
|
||||||
'Adobe Reader DC': 'http://ardownload.adobe.com/pub/adobe/reader/win/AcrobatDC/1901020098/AcroRdrDC1901020098_en_US.exe',
|
'Adobe Reader DC': 'https://ardownload2.adobe.com/pub/adobe/reader/win/AcrobatDC/1901220034/AcroRdrDC1901220034_en_US.exe',
|
||||||
'AdwCleaner': 'https://downloads.malwarebytes.com/file/adwcleaner',
|
'AdwCleaner': 'https://downloads.malwarebytes.com/file/adwcleaner',
|
||||||
'AIDA64': 'http://download.aida64.com/aida64engineer599.zip',
|
'AIDA64': 'http://download.aida64.com/aida64engineer600.zip',
|
||||||
'aria2': 'https://github.com/aria2/aria2/releases/download/release-1.34.0/aria2-1.34.0-win-32bit-build1.zip',
|
'aria2': 'https://github.com/aria2/aria2/releases/download/release-1.34.0/aria2-1.34.0-win-32bit-build1.zip',
|
||||||
'Autoruns': 'https://download.sysinternals.com/files/Autoruns.zip',
|
'Autoruns': 'https://download.sysinternals.com/files/Autoruns.zip',
|
||||||
'BleachBit': 'https://download.bleachbit.org/BleachBit-2.0-portable.zip',
|
'BleachBit': 'https://download.bleachbit.org/BleachBit-2.2-portable.zip',
|
||||||
'BlueScreenView32': 'http://www.nirsoft.net/utils/bluescreenview.zip',
|
'BlueScreenView32': 'http://www.nirsoft.net/utils/bluescreenview.zip',
|
||||||
'BlueScreenView64': 'http://www.nirsoft.net/utils/bluescreenview-x64.zip',
|
'BlueScreenView64': 'http://www.nirsoft.net/utils/bluescreenview-x64.zip',
|
||||||
'Caffeine': 'http://www.zhornsoftware.co.uk/caffeine/caffeine.zip',
|
'Caffeine': 'http://www.zhornsoftware.co.uk/caffeine/caffeine.zip',
|
||||||
'ClassicStartSkin': 'http://www.classicshell.net/forum/download/file.php?id=3001&sid=9a195960d98fd754867dcb63d9315335',
|
'ClassicStartSkin': 'http://www.classicshell.net/forum/download/file.php?id=3001&sid=9a195960d98fd754867dcb63d9315335',
|
||||||
'Du': 'https://download.sysinternals.com/files/DU.zip',
|
'Du': 'https://download.sysinternals.com/files/DU.zip',
|
||||||
'ERUNT': 'http://www.aumha.org/downloads/erunt.zip',
|
'ERUNT': 'http://www.aumha.org/downloads/erunt.zip',
|
||||||
'ESET Online Scanner': 'https://download.eset.com/com/eset/tools/online_scanner/latest/esetonlinescanner_enu.exe',
|
'ESET AVRemover32': 'https://download.eset.com/com/eset/tools/installers/av_remover/latest/avremover_nt32_enu.exe',
|
||||||
|
'ESET AVRemover64': 'https://download.eset.com/com/eset/tools/installers/av_remover/latest/avremover_nt64_enu.exe',
|
||||||
'ESET NOD32 AV': 'https://download.eset.com/com/eset/apps/home/eav/windows/latest/eav_nt64.exe',
|
'ESET NOD32 AV': 'https://download.eset.com/com/eset/apps/home/eav/windows/latest/eav_nt64.exe',
|
||||||
|
'ESET Online Scanner': 'https://download.eset.com/com/eset/tools/online_scanner/latest/esetonlinescanner_enu.exe',
|
||||||
'Everything32': 'https://www.voidtools.com/Everything-1.4.1.935.x86.en-US.zip',
|
'Everything32': 'https://www.voidtools.com/Everything-1.4.1.935.x86.en-US.zip',
|
||||||
'Everything64': 'https://www.voidtools.com/Everything-1.4.1.935.x64.en-US.zip',
|
'Everything64': 'https://www.voidtools.com/Everything-1.4.1.935.x64.en-US.zip',
|
||||||
'FastCopy': 'https://fastcopy.jp/archive/FastCopy380_installer.exe',
|
'FastCopy': 'http://ftp.vector.co.jp/71/78/2323/FastCopy382_installer.exe',
|
||||||
'FurMark': 'https://geeks3d.com/dl/get/569',
|
'FurMark': 'https://geeks3d.com/dl/get/569',
|
||||||
'Firefox uBO': 'https://addons.mozilla.org/firefox/downloads/file/1709472/ublock_origin-1.18.6-an+fx.xpi',
|
'Firefox uBO': 'https://addons.mozilla.org/firefox/downloads/file/3027669/ublock_origin-1.20.0-an+fx.xpi',
|
||||||
'HitmanPro32': 'https://dl.surfright.nl/HitmanPro.exe',
|
'HitmanPro32': 'https://dl.surfright.nl/HitmanPro.exe',
|
||||||
'HitmanPro64': 'https://dl.surfright.nl/HitmanPro_x64.exe',
|
'HitmanPro64': 'https://dl.surfright.nl/HitmanPro_x64.exe',
|
||||||
'HWiNFO': 'http://files2.majorgeeks.com/377527622c5325acc1cb937fb149d0de922320c0/systeminfo/hwi_602.zip',
|
'HWiNFO': 'http://files2.majorgeeks.com/8742c668ee52f7cbe5181d609ff800f3a37492c5/systeminfo/hwi_608.zip',
|
||||||
'Intel SSD Toolbox': r'https://downloadmirror.intel.com/28593/eng/Intel%20SSD%20Toolbox%20-%20v3.5.9.exe',
|
'Intel SSD Toolbox': r'https://downloadmirror.intel.com/28593/eng/Intel%20SSD%20Toolbox%20-%20v3.5.9.exe',
|
||||||
'IOBit_Uninstaller': r'https://portableapps.com/redirect/?a=IObitUninstallerPortable&s=s&d=pa&f=IObitUninstallerPortable_7.5.0.7.paf.exe',
|
'IOBit_Uninstaller': r'https://portableapps.com/redirect/?a=IObitUninstallerPortable&s=s&d=pa&f=IObitUninstallerPortable_7.5.0.7.paf.exe',
|
||||||
'KVRT': 'http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe',
|
'KVRT': 'http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe',
|
||||||
'LibreOffice': 'https://download.documentfoundation.org/libreoffice/stable/6.2.4/win/x86_64/LibreOffice_6.2.4_Win_x64.msi',
|
'LibreOffice': 'https://download.documentfoundation.org/libreoffice/stable/6.2.5/win/x86_64/LibreOffice_6.2.5_Win_x64.msi',
|
||||||
'Linux Reader': 'https://www.diskinternals.com/download/Linux_Reader.exe',
|
'Linux Reader': 'https://www.diskinternals.com/download/Linux_Reader.exe',
|
||||||
'Macs Fan Control': 'https://www.crystalidea.com/downloads/macsfancontrol_setup.exe',
|
'Macs Fan Control': 'https://www.crystalidea.com/downloads/macsfancontrol_setup.exe',
|
||||||
'NirCmd32': 'https://www.nirsoft.net/utils/nircmd.zip',
|
'NirCmd32': 'https://www.nirsoft.net/utils/nircmd.zip',
|
||||||
'NirCmd64': 'https://www.nirsoft.net/utils/nircmd-x64.zip',
|
'NirCmd64': 'https://www.nirsoft.net/utils/nircmd-x64.zip',
|
||||||
'NotepadPlusPlus': 'https://notepad-plus-plus.org/repository/7.x/7.6.4/npp.7.6.4.bin.minimalist.7z',
|
'NotepadPlusPlus': 'https://notepad-plus-plus.org/repository/7.x/7.7.1/npp.7.7.1.bin.minimalist.7z',
|
||||||
'Office Deployment Tool': 'https://download.microsoft.com/download/2/7/A/27AF1BE6-DD20-4CB4-B154-EBAB8A7D4A7E/officedeploymenttool_11509-33604.exe',
|
'Office Deployment Tool': 'https://download.microsoft.com/download/2/7/A/27AF1BE6-DD20-4CB4-B154-EBAB8A7D4A7E/officedeploymenttool_11617-33601.exe',
|
||||||
'ProduKey32': 'http://www.nirsoft.net/utils/produkey.zip',
|
'ProduKey32': 'http://www.nirsoft.net/utils/produkey.zip',
|
||||||
'ProduKey64': 'http://www.nirsoft.net/utils/produkey-x64.zip',
|
'ProduKey64': 'http://www.nirsoft.net/utils/produkey-x64.zip',
|
||||||
'PuTTY': 'https://the.earth.li/~sgtatham/putty/latest/w32/putty.zip',
|
'PuTTY': 'https://the.earth.li/~sgtatham/putty/latest/w32/putty.zip',
|
||||||
|
|
@ -43,14 +45,14 @@ SOURCE_URLS = {
|
||||||
'SDIO Themes': 'http://snappy-driver-installer.org/downloads/SDIO_Themes.zip',
|
'SDIO Themes': 'http://snappy-driver-installer.org/downloads/SDIO_Themes.zip',
|
||||||
'SDIO Torrent': 'http://snappy-driver-installer.org/downloads/SDIO_Update.torrent',
|
'SDIO Torrent': 'http://snappy-driver-installer.org/downloads/SDIO_Update.torrent',
|
||||||
'ShutUp10': 'https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe',
|
'ShutUp10': 'https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe',
|
||||||
'smartmontools': 'https://700-105252244-gh.circle-artifacts.com/0/builds/smartmontools-win32-setup-7.1-r4914.exe',
|
'smartmontools': 'https://738-105252244-gh.circle-artifacts.com/0/builds/smartmontools-win32-setup-7.1-r4934.exe',
|
||||||
'TDSSKiller': 'https://media.kaspersky.com/utilities/VirusUtilities/EN/tdsskiller.exe',
|
'TDSSKiller': 'https://media.kaspersky.com/utilities/VirusUtilities/EN/tdsskiller.exe',
|
||||||
'TestDisk': 'https://www.cgsecurity.org/testdisk-7.1-WIP.win.zip',
|
'TestDisk': 'https://www.cgsecurity.org/testdisk-7.1-WIP.win.zip',
|
||||||
'wimlib32': 'https://wimlib.net/downloads/wimlib-1.13.1-windows-i686-bin.zip',
|
'wimlib32': 'https://wimlib.net/downloads/wimlib-1.13.1-windows-i686-bin.zip',
|
||||||
'wimlib64': 'https://wimlib.net/downloads/wimlib-1.13.1-windows-x86_64-bin.zip',
|
'wimlib64': 'https://wimlib.net/downloads/wimlib-1.13.1-windows-x86_64-bin.zip',
|
||||||
'WinAIO Repair': 'http://www.tweaking.com/files/setups/tweaking.com_windows_repair_aio.zip',
|
'WinAIO Repair': 'http://www.tweaking.com/files/setups/tweaking.com_windows_repair_aio.zip',
|
||||||
'Winapp2': 'https://github.com/MoscaDotTo/Winapp2/archive/master.zip',
|
'Winapp2': 'https://github.com/MoscaDotTo/Winapp2/archive/master.zip',
|
||||||
'WizTree': 'https://antibody-software.com/files/wiztree_3_28_portable.zip',
|
'WizTree': 'https://antibody-software.com/files/wiztree_3_29_portable.zip',
|
||||||
'XMPlay 7z': 'https://support.xmplay.com/files/16/xmp-7z.zip?v=800962',
|
'XMPlay 7z': 'https://support.xmplay.com/files/16/xmp-7z.zip?v=800962',
|
||||||
'XMPlay Game': 'https://support.xmplay.com/files/12/xmp-gme.zip?v=515637',
|
'XMPlay Game': 'https://support.xmplay.com/files/12/xmp-gme.zip?v=515637',
|
||||||
'XMPlay RAR': 'https://support.xmplay.com/files/16/xmp-rar.zip?v=409646',
|
'XMPlay RAR': 'https://support.xmplay.com/files/16/xmp-rar.zip?v=409646',
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ BOOT_ENTRIES = {
|
||||||
BOOT_FILES = {
|
BOOT_FILES = {
|
||||||
# Directory: extension
|
# Directory: extension
|
||||||
'/arch/boot/syslinux': 'cfg',
|
'/arch/boot/syslinux': 'cfg',
|
||||||
'/boot/grub/': 'cfg',
|
'/boot/grub': 'cfg',
|
||||||
'/EFI/boot': 'conf',
|
'/EFI/boot': 'conf',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,85 +47,86 @@ OTHER_RESULTS = {
|
||||||
SETUP_ACTIONS = OrderedDict({
|
SETUP_ACTIONS = OrderedDict({
|
||||||
# Install software
|
# Install software
|
||||||
'Installing Programs': {'Info': True},
|
'Installing Programs': {'Info': True},
|
||||||
'VCR': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': install_vcredists, 'Just run': True,},
|
'VCR': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': install_vcredists, 'Just run': True,},
|
||||||
'ESET NOD32 AV': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': install_eset_nod32_av, 'If answer': 'ESET', 'KWArgs': {'msp': False},},
|
'ESET NOD32 AV': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': install_eset_nod32_av, 'If answer': 'ESET', 'KWArgs': {'msp': False},},
|
||||||
'LibreOffice': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': install_libreoffice,
|
'LibreOffice': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': install_libreoffice,
|
||||||
'If answer': 'LibreOffice', 'KWArgs': {'quickstart': False, 'register_mso_types': True, 'use_mso_formats': True, 'vcredist': False},
|
'If answer': 'LibreOffice', 'KWArgs': {'quickstart': False, 'register_mso_types': True, 'use_mso_formats': True, 'vcredist': False},
|
||||||
},
|
},
|
||||||
'Ninite bundle': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': install_ninite_bundle, 'KWArgs': {'cs': 'STARTED'},},
|
'Ninite bundle': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': install_ninite_bundle, 'KWArgs': {'cs': 'STARTED'},},
|
||||||
|
|
||||||
# Browsers
|
# Browsers
|
||||||
'Scanning for browsers': {'Info': True},
|
'Scanning for browsers': {'Info': True},
|
||||||
'Scan': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': scan_for_browsers, 'Just run': True, 'KWArgs': {'skip_ie': True},},
|
'Scan': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': scan_for_browsers, 'Just run': True, 'KWArgs': {'skip_ie': True},},
|
||||||
'Backing up browsers': {'Info': True},
|
'Backing up browsers': {'Info': True},
|
||||||
'Backup browsers': {'New': False, 'Fab': True, 'Cur': True, 'HW': False, 'Function': backup_browsers, 'Just run': True,},
|
'Backup browsers': {'New': False, 'Dat': True, 'Cur': True, 'HW': False, 'Function': backup_browsers, 'Just run': True,},
|
||||||
|
|
||||||
# Install extensions
|
# Install extensions
|
||||||
'Installing Extensions': {'Info': True},
|
'Installing Extensions': {'Info': True},
|
||||||
'Classic Shell skin': {'New': True, 'Fab': True, 'Cur': False, 'HW': False, 'Function': install_classicstart_skin, 'Win10 only': True,},
|
'Classic Shell skin': {'New': True, 'Dat': True, 'Cur': False, 'HW': False, 'Function': install_classicstart_skin, 'Win10 only': True,},
|
||||||
'Chrome extensions': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': install_chrome_extensions,},
|
'Chrome extensions': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': install_chrome_extensions,},
|
||||||
'Firefox extensions': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': install_firefox_extensions,},
|
'Firefox extensions': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': install_firefox_extensions,},
|
||||||
|
|
||||||
# Configure software'
|
# Configure software'
|
||||||
'Configuring Programs': {'Info': True},
|
'Configuring Programs': {'Info': True},
|
||||||
'Browser add-ons': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': install_adblock, 'Just run': True,
|
'Browser add-ons': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': install_adblock, 'Just run': True,
|
||||||
'Pause': 'Please enable uBlock Origin for all browsers',
|
'Pause': 'Please enable uBlock Origin for all browsers',
|
||||||
},
|
},
|
||||||
'Classic Start': {'New': True, 'Fab': True, 'Cur': False, 'HW': False, 'Function': config_classicstart, 'Win10 only': True,},
|
'Classic Start': {'New': True, 'Dat': True, 'Cur': False, 'HW': False, 'Function': config_classicstart, 'Win10 only': True,},
|
||||||
'Config Windows Updates': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': config_windows_updates, 'Win10 only': True,},
|
'Config Windows Updates': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': config_windows_updates, 'Win10 only': True,},
|
||||||
'Enable System Restore': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': enable_system_restore,},
|
'Enable System Restore': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': enable_system_restore,},
|
||||||
'Create System Restore': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': create_system_restore_point,},
|
'Create System Restore': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': create_system_restore_point,},
|
||||||
'Disable Fast Startup': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': disable_fast_startup, 'If answer': 'Fast-Hiber', 'Win10 only': True,},
|
'Disable Fast Startup': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': disable_fast_startup, 'If answer': 'Fast-Hiber', 'Win10 only': True,},
|
||||||
'Disable telemetry': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': disable_windows_telemetry, 'Win10 only': True,},
|
'Disable telemetry': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': disable_windows_telemetry, 'Win10 only': True,},
|
||||||
'Enable BSoD mini dumps': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': enable_mini_dumps,},
|
'Enable BSoD mini dumps': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': enable_mini_dumps,},
|
||||||
'Enable Hibernation': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': enable_hibernation, 'If answer': 'Fast-Hiber', 'Win10 only': True,},
|
'Enable Hibernation': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': enable_hibernation, 'If answer': 'Fast-Hiber', 'Win10 only': True,},
|
||||||
'Enable RegBack': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': enable_regback, 'Win10 only': True,},
|
'Enable RegBack': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': enable_regback, 'Win10 only': True,},
|
||||||
'Enable Windows Updates': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': enable_windows_updates, 'KWArgs': {'silent': True},},
|
'Enable Windows Updates': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': enable_windows_updates, 'KWArgs': {'silent': True},},
|
||||||
'Explorer (system)': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': config_explorer_system, 'Win10 only': True,},
|
'Explorer (system)': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': config_explorer_system, 'Win10 only': True,},
|
||||||
'Explorer (user)': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': config_explorer_user, 'Win10 only': True,},
|
'Explorer (user)': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': config_explorer_user, 'Win10 only': True,},
|
||||||
'Restart Explorer': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': restart_explorer,},
|
'Restart Explorer': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': restart_explorer,},
|
||||||
'Update Clock': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': update_clock,},
|
'Update Clock': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': update_clock,},
|
||||||
|
|
||||||
# Cleanup
|
# Cleanup
|
||||||
'Cleaning up': {'Info': True},
|
'Cleaning up': {'Info': True},
|
||||||
'AdwCleaner': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': cleanup_adwcleaner,},
|
'AdwCleaner': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': cleanup_adwcleaner,},
|
||||||
'd7II': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': cleanup_d7ii,},
|
'd7II': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': cleanup_d7ii,},
|
||||||
'Desktop': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': cleanup_desktop,},
|
'Desktop': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': cleanup_desktop,},
|
||||||
'Emsisoft s2cmd': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': cleanup_emsisoft,},
|
'Emsisoft s2cmd': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': cleanup_emsisoft,},
|
||||||
'Registry Backup(s)': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': cleanup_regbackups,},
|
'Registry Backup(s)': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': cleanup_regbackups,},
|
||||||
'KIT_NAME_FULL': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': delete_empty_folders,},
|
'Restore default UAC': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': restore_default_uac,},
|
||||||
|
'KIT_NAME_FULL': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': delete_empty_folders,},
|
||||||
|
|
||||||
# System Info
|
# System Info
|
||||||
'Exporting system info': {'Info': True},
|
'Exporting system info': {'Info': True},
|
||||||
'AIDA64 Report': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': run_aida64,},
|
'AIDA64 Report': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': run_aida64,},
|
||||||
'File listing': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': backup_file_list,},
|
'File listing': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': backup_file_list,},
|
||||||
'Power plans': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': backup_power_plans,},
|
'Power plans': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': backup_power_plans,},
|
||||||
'Product Keys': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': run_produkey,},
|
'Product Keys': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': run_produkey,},
|
||||||
'Registry': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': backup_registry,},
|
'Registry': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': backup_registry,},
|
||||||
|
|
||||||
# Show Summary
|
# Show Summary
|
||||||
'Summary': {'Info': True},
|
'Summary': {'Info': True},
|
||||||
'Operating System': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': show_os_name, 'KWArgs': {'ns': 'UNKNOWN', 'silent_function': False},},
|
'Operating System': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': show_os_name, 'KWArgs': {'ns': 'UNKNOWN', 'silent_function': False},},
|
||||||
'Activation': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': show_os_activation, 'KWArgs': {'ns': 'UNKNOWN', 'silent_function': False},},
|
'Activation': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': show_os_activation, 'KWArgs': {'ns': 'UNKNOWN', 'silent_function': False},},
|
||||||
'BIOS Activation': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': activate_with_bios, 'If not activated': True,},
|
'BIOS Activation': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': activate_with_bios, 'If not activated': True,},
|
||||||
'Secure Boot': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': check_secure_boot_status, 'KWArgs': {'show_alert': False},},
|
'Secure Boot': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': check_secure_boot_status, 'KWArgs': {'show_alert': False},},
|
||||||
'Installed RAM': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': show_installed_ram, 'KWArgs': {'ns': 'UNKNOWN', 'silent_function': False},},
|
'Installed RAM': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': show_installed_ram, 'KWArgs': {'ns': 'UNKNOWN', 'silent_function': False},},
|
||||||
'Temp size': {'New': False, 'Fab': False, 'Cur': True, 'HW': False, 'Function': show_temp_files_size, 'KWArgs': {'ns': 'UNKNOWN', 'silent_function': False},},
|
'Temp size': {'New': False, 'Dat': False, 'Cur': True, 'HW': False, 'Function': show_temp_files_size, 'KWArgs': {'ns': 'UNKNOWN', 'silent_function': False},},
|
||||||
'Show free space': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': show_free_space, 'Just run': True,},
|
'Show free space': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': show_free_space, 'Just run': True,},
|
||||||
'Installed AV': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': get_installed_antivirus, 'KWArgs': {'ns': 'UNKNOWN', 'print_return': True},},
|
'Installed AV': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': get_installed_antivirus, 'KWArgs': {'ns': 'UNKNOWN', 'print_return': True},},
|
||||||
'Installed Office': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': get_installed_office, 'KWArgs': {'ns': 'UNKNOWN', 'print_return': True},},
|
'Installed Office': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': get_installed_office, 'KWArgs': {'ns': 'UNKNOWN', 'print_return': True},},
|
||||||
'Partitions 4K aligned': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': check_4k_alignment, 'KWArgs': {'cs': 'TRUE', 'ns': 'FALSE'},},
|
'Partitions 4K aligned': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': check_4k_alignment, 'KWArgs': {'cs': 'TRUE', 'ns': 'FALSE'},},
|
||||||
|
|
||||||
# Open things
|
# Open things
|
||||||
'Opening Programs': {'Info': True},
|
'Opening Programs': {'Info': True},
|
||||||
'Device Manager': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': open_device_manager, 'KWArgs': {'cs': 'STARTED'},},
|
'Device Manager': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': open_device_manager, 'KWArgs': {'cs': 'STARTED'},},
|
||||||
'HWiNFO sensors': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': run_hwinfo_sensors, 'KWArgs': {'cs': 'STARTED'},},
|
'HWiNFO sensors': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': run_hwinfo_sensors, 'KWArgs': {'cs': 'STARTED'},},
|
||||||
'Snappy': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': open_snappy_driver_origin, 'KWArgs': {'cs': 'STARTED'},},
|
'Snappy': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': open_snappy_driver_origin, 'KWArgs': {'cs': 'STARTED'},},
|
||||||
'Speed test': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': open_speedtest, 'KWArgs': {'cs': 'STARTED'},},
|
'Speed test': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': open_speedtest, 'KWArgs': {'cs': 'STARTED'},},
|
||||||
'Windows Updates': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': open_windows_updates, 'KWArgs': {'cs': 'STARTED'},},
|
'Windows Updates': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': open_windows_updates, 'KWArgs': {'cs': 'STARTED'},},
|
||||||
'Windows Activation': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': open_windows_activation, 'If not activated': True, 'KWArgs': {'cs': 'STARTED'},},
|
'Windows Activation': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': open_windows_activation, 'If not activated': True, 'KWArgs': {'cs': 'STARTED'},},
|
||||||
'Sleep': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': sleep, 'Just run': True, 'KWArgs': {'seconds': 3},},
|
'Sleep': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': sleep, 'Just run': True, 'KWArgs': {'seconds': 3},},
|
||||||
'XMPlay': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': run_xmplay, 'KWArgs': {'cs': 'STARTED'},},
|
'XMPlay': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': run_xmplay, 'KWArgs': {'cs': 'STARTED'},},
|
||||||
})
|
})
|
||||||
SETUP_ACTION_KEYS = (
|
SETUP_ACTION_KEYS = (
|
||||||
'Function',
|
'Function',
|
||||||
|
|
@ -137,19 +138,19 @@ SETUP_ACTION_KEYS = (
|
||||||
)
|
)
|
||||||
SETUP_QUESTIONS = {
|
SETUP_QUESTIONS = {
|
||||||
# AV
|
# AV
|
||||||
'ESET': {'New': None, 'Fab': None, 'Cur': None, 'HW': False},
|
'ESET': {'New': None, 'Dat': None, 'Cur': None, 'HW': False},
|
||||||
'MSE': {'New': None, 'Fab': None, 'Cur': None, 'HW': False, 'Ninite': True},
|
'MSE': {'New': None, 'Dat': None, 'Cur': None, 'HW': False, 'Ninite': True},
|
||||||
|
|
||||||
# Fast Startup / Hibernation
|
# Fast Startup / Hibernation
|
||||||
'Fast-Hiber': {'New': None, 'Fab': None, 'Cur': None, 'HW': False},
|
'Fast-Hiber': {'New': None, 'Dat': None, 'Cur': None, 'HW': False},
|
||||||
|
|
||||||
# LibreOffice
|
# LibreOffice
|
||||||
'LibreOffice': {'New': None, 'Fab': None, 'Cur': None, 'HW': False, 'Ninite': True},
|
'LibreOffice': {'New': None, 'Dat': None, 'Cur': None, 'HW': False, 'Ninite': True},
|
||||||
|
|
||||||
# Ninite
|
# Ninite
|
||||||
'Base': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Ninite': True},
|
'Base': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Ninite': True},
|
||||||
'Missing': {'New': False, 'Fab': True, 'Cur': False, 'HW': False, 'Ninite': True},
|
'Missing': {'New': False, 'Dat': True, 'Cur': False, 'HW': False, 'Ninite': True},
|
||||||
'Standard': {'New': True, 'Fab': True, 'Cur': False, 'HW': False, 'Ninite': True},
|
'Standard': {'New': True, 'Dat': True, 'Cur': False, 'HW': False, 'Ninite': True},
|
||||||
}
|
}
|
||||||
# pylint: enable=bad-whitespace,line-too-long
|
# pylint: enable=bad-whitespace,line-too-long
|
||||||
|
|
||||||
|
|
@ -287,7 +288,7 @@ def get_mode():
|
||||||
setup_mode = None
|
setup_mode = None
|
||||||
mode_options = [
|
mode_options = [
|
||||||
{'Name': 'New', 'Display Name': 'New / Clean install (no data)'},
|
{'Name': 'New', 'Display Name': 'New / Clean install (no data)'},
|
||||||
{'Name': 'Fab', 'Display Name': 'Clean install with data migration'},
|
{'Name': 'Dat', 'Display Name': 'Clean install with data migration'},
|
||||||
{'Name': 'Cur', 'Display Name': 'Original OS (post-d7II or overinstall)'},
|
{'Name': 'Cur', 'Display Name': 'Original OS (post-d7II or overinstall)'},
|
||||||
{'Name': 'HW', 'Display Name': 'Hardware service (i.e. no software work)'},
|
{'Name': 'HW', 'Display Name': 'Hardware service (i.e. no software work)'},
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
# Uninstallers
|
# Uninstallers
|
||||||
print_info(' Uninstallers')
|
print_info(' Uninstallers')
|
||||||
|
try_and_print(message='ESET AV Remover...', function=update_eset_av_remover, other_results=other_results, width=40)
|
||||||
try_and_print(message='IObit Uninstaller...', function=update_iobit_uninstaller, other_results=other_results, width=40)
|
try_and_print(message='IObit Uninstaller...', function=update_iobit_uninstaller, other_results=other_results, width=40)
|
||||||
|
|
||||||
## Review ##
|
## Review ##
|
||||||
|
|
|
||||||
11
.bin/d7ii/3rd Party Tools/CreateRestorePoint.cmd
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
rem Enable System Restore
|
||||||
|
PowerShell -Command Enable-ComputerRestore -Drive %SYSTEMDRIVE%\
|
||||||
|
|
||||||
|
rem Create Restore Point
|
||||||
|
PowerShell -Command Checkpoint-Computer -Description 1201-d7II
|
||||||
|
|
||||||
|
endlocal
|
||||||
|
|
@ -5,7 +5,7 @@ Autoruns (Verify and Log)=Manages Startup Items
|
||||||
Google Chrome Software Removal Tool=Remove add-ons, extensions, toolbars, and other software that may interfere with the operation of Google Chrome.
|
Google Chrome Software Removal Tool=Remove add-ons, extensions, toolbars, and other software that may interfere with the operation of Google Chrome.
|
||||||
VipreRescueScanner (Deep Scan)=Virus scanner (Designed for both the Malware Removal and the Offline Operations tab)
|
VipreRescueScanner (Deep Scan)=Virus scanner (Designed for both the Malware Removal and the Offline Operations tab)
|
||||||
VipreRescueScanner (Quick Scan)=Virus scanner (Designed for both the Malware Removal and the Offline Operations tab)
|
VipreRescueScanner (Quick Scan)=Virus scanner (Designed for both the Malware Removal and the Offline Operations tab)
|
||||||
=Python Check
|
=Create Restore Point
|
||||||
[ReportDesc]
|
[ReportDesc]
|
||||||
Autoruns=Examined Windows startup items and removed unnecessary entries.
|
Autoruns=Examined Windows startup items and removed unnecessary entries.
|
||||||
Autoruns_Copy=Examined Windows startup items and removed unnecessary entries.
|
Autoruns_Copy=Examined Windows startup items and removed unnecessary entries.
|
||||||
|
|
@ -36,4 +36,4 @@ VipreRescueScanner (Quick Scan)=Ran virus scans (Vipre)
|
||||||
22=Repaired the Windows Update services responsible for Windows Update functionality.
|
22=Repaired the Windows Update services responsible for Windows Update functionality.
|
||||||
38=Performed repair routines to ensure the Winsock is operating properly.
|
38=Performed repair routines to ensure the Winsock is operating properly.
|
||||||
83=Examined internet speed/bandwidth.
|
83=Examined internet speed/bandwidth.
|
||||||
=Python compatibility check
|
=Create Restore Point
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ EmailBeforeExecution=0
|
||||||
PriorAlert=0
|
PriorAlert=0
|
||||||
[]
|
[]
|
||||||
PostRunApp=
|
PostRunApp=
|
||||||
AlwaysAttemptDownload=1
|
AlwaysAttemptDownload=0
|
||||||
DLafterXdays=.5
|
DLafterXdays=5
|
||||||
EmailBeforeExecution=0
|
EmailBeforeExecution=0
|
||||||
PriorAlert=0
|
PriorAlert=0
|
||||||
|
|
|
||||||
|
|
@ -782,7 +782,7 @@ WizardKit System Diagnostics=1
|
||||||
1=1
|
1=1
|
||||||
RKill (Auto)=1
|
RKill (Auto)=1
|
||||||
Disable Windows Updates=1
|
Disable Windows Updates=1
|
||||||
Python Check=1
|
Create Restore Point=1
|
||||||
[Malware3]
|
[Malware3]
|
||||||
ComboFix=0
|
ComboFix=0
|
||||||
ComboFix (Uninstall)=0
|
ComboFix (Uninstall)=0
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Python Check|Disable Windows Updates|98|RKill (Auto)|Kaspersky TDSSKiller (Silent)|WizardKit System Diagnostics|34|Emsisoft a2cmd Deep Scan|HitmanPro|1|98|
|
Create Restore Point|Disable Windows Updates|98|RKill (Auto)|Kaspersky TDSSKiller (Silent)|WizardKit System Diagnostics|34|Emsisoft a2cmd Deep Scan|HitmanPro|1|98|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,2 @@
|
||||||
Welcome to the [32m______[0m
|
[2J[HWelcome to the [32m______[0m
|
||||||
|
|
||||||
Some common commands:
|
|
||||||
[34m%[0m hw-diags
|
|
||||||
[34m%[0m hw-info
|
|
||||||
[34m%[0m mount-all-volumes
|
|
||||||
[34m%[0m mount-backup-shares
|
|
||||||
[34m%[0m connect-to-network
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,12 @@
|
||||||
## Setup network and update hostname
|
## Setup network and update hostname
|
||||||
|
|
||||||
# Wait for WiFi
|
# Wait for WiFi
|
||||||
sleep 1s
|
echo -n "Waiting for network... "
|
||||||
|
sleep 3s
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
# Set hostname
|
# Set hostname
|
||||||
|
echo -n "Updating hostname... "
|
||||||
IP="$(ip a show scope global \
|
IP="$(ip a show scope global \
|
||||||
| grep inet \
|
| grep inet \
|
||||||
| head -1 \
|
| head -1 \
|
||||||
|
|
@ -19,4 +22,5 @@ fi
|
||||||
if [[ "${NEW_HOSTNAME:+x}" ]]; then
|
if [[ "${NEW_HOSTNAME:+x}" ]]; then
|
||||||
sudo hostnamectl set-hostname "${NEW_HOSTNAME}"
|
sudo hostnamectl set-hostname "${NEW_HOSTNAME}"
|
||||||
fi
|
fi
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
|
|
|
||||||
0
.linux_items/include_x/airootfs/etc/skel/.Xauthority
Normal file
|
|
@ -68,12 +68,13 @@ bindsym Mod1+F4 kill
|
||||||
bindsym $mod+r exec "rofi -combi-modi window,drun,run -show combi -modi combi"
|
bindsym $mod+r exec "rofi -combi-modi window,drun,run -show combi -modi combi"
|
||||||
|
|
||||||
# misc app shortcuts
|
# misc app shortcuts
|
||||||
|
bindsym $mod+c exec "urxvt -title 'WKClone (ddrescue-tui)' -e ddrescue-tui clone"
|
||||||
bindsym $mod+d exec "urxvt -title 'Hardware Diagnostics' -e hw-diags"
|
bindsym $mod+d exec "urxvt -title 'Hardware Diagnostics' -e hw-diags"
|
||||||
bindsym $mod+f exec "thunar ~"
|
bindsym $mod+f exec "thunar ~"
|
||||||
bindsym $mod+i exec "hardinfo"
|
bindsym $mod+i exec "hardinfo"
|
||||||
bindsym $mod+m exec "urxvt -title 'Mount All Volumes' -e mount-all-volumes gui"
|
bindsym $mod+m exec "urxvt -title 'Mount All Volumes' -e mount-all-volumes gui"
|
||||||
bindsym $mod+s exec "urxvt -title 'Hardware Diagnostics' -e hw-diags --quick"
|
bindsym $mod+s exec "urxvt -title 'Hardware Diagnostics' -e hw-diags --quick"
|
||||||
bindsym $mod+t exec "urxvt -e zsh -c 'tmux new-session -A -t general; zsh'"
|
bindsym $mod+t exec "urxvt"
|
||||||
bindsym $mod+v exec "urxvt -title 'Hardware Sensors' -e watch -c -n1 -t hw-sensors"
|
bindsym $mod+v exec "urxvt -title 'Hardware Sensors' -e watch -c -n1 -t hw-sensors"
|
||||||
bindsym $mod+w exec "firefox"
|
bindsym $mod+w exec "firefox"
|
||||||
|
|
||||||
|
|
@ -320,4 +321,4 @@ bar {
|
||||||
height 26
|
height 26
|
||||||
}
|
}
|
||||||
|
|
||||||
exec --no-startup-id /home/tech/.update_x
|
exec urxvt -title "Initializing..." -e /home/tech/.update_x
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
#openbox-autostart
|
#openbox-autostart
|
||||||
|
|
||||||
$HOME/.update_x &
|
/usr/bin/urxvt -title "Initializing..." -e "$HOME/.update_x"
|
||||||
|
"$HOME/.start_desktop_apps" &
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -297,6 +297,11 @@
|
||||||
<menu>root-menu</menu>
|
<menu>root-menu</menu>
|
||||||
</action>
|
</action>
|
||||||
</keybind>
|
</keybind>
|
||||||
|
<keybind key="W-c">
|
||||||
|
<action name="Execute">
|
||||||
|
<command>urxvt -title "WKClone (ddrescue-tui)" -e ddrescue-tui clone</command>
|
||||||
|
</action>
|
||||||
|
</keybind>
|
||||||
<keybind key="W-d">
|
<keybind key="W-d">
|
||||||
<action name="Execute">
|
<action name="Execute">
|
||||||
<command>urxvt -title "Hardware Diagnostics" -e hw-diags</command>
|
<command>urxvt -title "Hardware Diagnostics" -e hw-diags</command>
|
||||||
|
|
@ -329,7 +334,7 @@
|
||||||
</keybind>
|
</keybind>
|
||||||
<keybind key="W-t">
|
<keybind key="W-t">
|
||||||
<action name="Execute">
|
<action name="Execute">
|
||||||
<command>urxvt -e zsh -c 'tmux new-session -A -t general; zsh'</command>
|
<command>urxvt</command>
|
||||||
</action>
|
</action>
|
||||||
</keybind>
|
</keybind>
|
||||||
<keybind key="W-v">
|
<keybind key="W-v">
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,7 @@ Down: ${downspeed}${goto 115}Up:${alignr}${upspeed}
|
||||||
#Network
|
#Network
|
||||||
${alignc}S H O R T C U T K E Y S
|
${alignc}S H O R T C U T K E Y S
|
||||||
${hr}
|
${hr}
|
||||||
|
[Super] + c${alignr}WKClone
|
||||||
[Super] + d${alignr}HW Diagnostics
|
[Super] + d${alignr}HW Diagnostics
|
||||||
[Super] + f${alignr}File Manager
|
[Super] + f${alignr}File Manager
|
||||||
[Super] + i${alignr}HW Information
|
[Super] + i${alignr}HW Information
|
||||||
|
|
|
||||||
24
.linux_items/include_x/airootfs/etc/skel/.start_desktop_apps
Executable file
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/env bash
|
||||||
|
#
|
||||||
|
## Start desktop apps based on WM
|
||||||
|
|
||||||
|
# Start common apps
|
||||||
|
feh --bg-fill "$HOME/.wallpaper"
|
||||||
|
compton --backend xrender --xrender-sync --xrender-sync-fence &
|
||||||
|
sleep 1s
|
||||||
|
x0vncserver -display :0 -passwordfile $HOME/.vnc/passwd -AlwaysShared &
|
||||||
|
conky &
|
||||||
|
nm-applet &
|
||||||
|
volumeicon &
|
||||||
|
|
||||||
|
# Start WM specific apps
|
||||||
|
if fgrep -q "i3" /proc/cmdline; then
|
||||||
|
# i3
|
||||||
|
i3-msg restart
|
||||||
|
else
|
||||||
|
# openbox
|
||||||
|
openbox --restart
|
||||||
|
tint2 &
|
||||||
|
cbatticon --hide-notification &
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
@ -6,6 +6,8 @@ REGEX_XRANDR='^.* ([0-9]+)x([0-9]+)\+[0-9]+\+[0-9]+.* ([0-9]+)mm x ([0-9]+)mm.*$
|
||||||
REGEX_URXVT='(URxvt.geometry:\s+).*'
|
REGEX_URXVT='(URxvt.geometry:\s+).*'
|
||||||
TEST_STATION_WALLPAPERS='/usr/share/wallpaper/test-stations'
|
TEST_STATION_WALLPAPERS='/usr/share/wallpaper/test-stations'
|
||||||
|
|
||||||
|
echo -n "Getting display details... "
|
||||||
|
|
||||||
# Get screen data
|
# Get screen data
|
||||||
xrandr_str="$(xrandr | grep mm | head -1)"
|
xrandr_str="$(xrandr | grep mm | head -1)"
|
||||||
width_px="$(echo "${xrandr_str}" | sed -r "s/${REGEX_XRANDR}/\1/")"
|
width_px="$(echo "${xrandr_str}" | sed -r "s/${REGEX_XRANDR}/\1/")"
|
||||||
|
|
@ -30,8 +32,12 @@ width_urxvt="$(echo "${width_px} * 112/1280" | bc)"
|
||||||
height_urxvt="$(echo "${height_px} * 33/720" | bc)"
|
height_urxvt="$(echo "${height_px} * 33/720" | bc)"
|
||||||
offset_urxvt="24"
|
offset_urxvt="24"
|
||||||
|
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
# Update settings if necessary
|
# Update settings if necessary
|
||||||
if [[ "${dpi}" -ge 192 ]]; then
|
if [[ "${dpi}" -ge 192 ]]; then
|
||||||
|
echo -n "Updating settings for HiDPI... "
|
||||||
|
|
||||||
# Conky
|
# Conky
|
||||||
sed -i 's/minimum_size 180 0/minimum_size 360 0/' "${HOME}/.conkyrc_base"
|
sed -i 's/minimum_size 180 0/minimum_size 360 0/' "${HOME}/.conkyrc_base"
|
||||||
sed -i 's/maximum_width 180/maximum_width 360/' "${HOME}/.conkyrc_base"
|
sed -i 's/maximum_width 180/maximum_width 360/' "${HOME}/.conkyrc_base"
|
||||||
|
|
@ -65,6 +71,9 @@ if [[ "${dpi}" -ge 192 ]]; then
|
||||||
width_urxvt="$(echo "${width_urxvt} / 2" | bc)"
|
width_urxvt="$(echo "${width_urxvt} / 2" | bc)"
|
||||||
height_urxvt="$(echo "${height_urxvt} / 2" | bc)"
|
height_urxvt="$(echo "${height_urxvt} / 2" | bc)"
|
||||||
offset_urxvt="$(echo "${offset_urxvt} * 2" | bc)"
|
offset_urxvt="$(echo "${offset_urxvt} * 2" | bc)"
|
||||||
|
|
||||||
|
# Done
|
||||||
|
echo "Done"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Update URxvt (Always)
|
# Update URxvt (Always)
|
||||||
|
|
@ -72,14 +81,19 @@ urxvt_geometry="${width_urxvt}x${height_urxvt}+${offset_urxvt}+${offset_urxvt}"
|
||||||
sed -i -r "s/${REGEX_URXVT}/\1${urxvt_geometry}/" "${HOME}/.Xresources"
|
sed -i -r "s/${REGEX_URXVT}/\1${urxvt_geometry}/" "${HOME}/.Xresources"
|
||||||
|
|
||||||
# Update conky
|
# Update conky
|
||||||
|
echo -n "Updating conky... "
|
||||||
$HOME/.update_conky
|
$HOME/.update_conky
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
# Update X
|
# Update X
|
||||||
|
echo -n "Updating X... "
|
||||||
xset s off
|
xset s off
|
||||||
xset -dpms
|
xset -dpms
|
||||||
xrdb -merge $HOME/.Xresources
|
xrdb -merge $HOME/.Xresources
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
# Set wallpaper
|
# Set wallpaper
|
||||||
|
echo -n "Setting wallpaper... "
|
||||||
_hostname="$(hostnamectl --static | sed 's/.1201.com//')"
|
_hostname="$(hostnamectl --static | sed 's/.1201.com//')"
|
||||||
_ip="$(ip a show scope global \
|
_ip="$(ip a show scope global \
|
||||||
| grep inet \
|
| grep inet \
|
||||||
|
|
@ -92,26 +106,10 @@ elif [[ -e "$TEST_STATION_WALLPAPERS/${_ip:+x}" ]]; then
|
||||||
else
|
else
|
||||||
feh --bg-fill "$HOME/.wallpaper"
|
feh --bg-fill "$HOME/.wallpaper"
|
||||||
fi
|
fi
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
# Start common desktop apps
|
# Start desktop apps for i3
|
||||||
compton --backend xrender --xrender-sync --xrender-sync-fence &
|
|
||||||
sleep 1s
|
|
||||||
x0vncserver -display :0 -passwordfile $HOME/.vnc/passwd -AlwaysShared &
|
|
||||||
conky &
|
|
||||||
nm-applet &
|
|
||||||
volumeicon &
|
|
||||||
|
|
||||||
# Start WM specific apps
|
|
||||||
if fgrep -q "i3" /proc/cmdline; then
|
if fgrep -q "i3" /proc/cmdline; then
|
||||||
# i3
|
i3-msg exec $HOME/.start_desktop_apps
|
||||||
i3-msg restart
|
|
||||||
else
|
|
||||||
# openbox
|
|
||||||
openbox --restart
|
|
||||||
tint2 &
|
|
||||||
cbatticon --hide-notification &
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prevent Xorg from being killed by .zlogin
|
|
||||||
touch "/tmp/x_ok"
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,6 @@
|
||||||
dbus-update-activation-environment --systemd DISPLAY
|
dbus-update-activation-environment --systemd DISPLAY
|
||||||
eval $(ssh-agent)
|
eval $(ssh-agent)
|
||||||
export SSH_AUTH_SOCK
|
export SSH_AUTH_SOCK
|
||||||
|
xrdb -merge $HOME/.Xresources
|
||||||
exec openbox-session
|
exec openbox-session
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
setterm -blank 0 -powerdown 0 2>/dev/null
|
setterm -blank 0 -powerdown 0 2>/dev/null
|
||||||
if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then
|
if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then
|
||||||
# Connect to network and update hostname
|
# Connect to network and update hostname
|
||||||
$HOME/.update_network
|
"${HOME}/.update_network"
|
||||||
|
|
||||||
# Trust added root CAs
|
# Trust added root CAs
|
||||||
|
echo -n "Updating certificate store... "
|
||||||
sudo trust extract-compat
|
sudo trust extract-compat
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
# Update settings if using i3
|
# Update settings if using i3
|
||||||
if fgrep -q "i3" /proc/cmdline; then
|
if fgrep -q "i3" /proc/cmdline; then
|
||||||
|
|
@ -14,18 +16,16 @@ if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then
|
||||||
|
|
||||||
# Start X or HW-diags
|
# Start X or HW-diags
|
||||||
if ! fgrep -q "nox" /proc/cmdline; then
|
if ! fgrep -q "nox" /proc/cmdline; then
|
||||||
# Kill Xorg after 30 seconds if it doesn't fully initialize
|
# Show freeze warning
|
||||||
(sleep 30s; if ! [[ -f "/tmp/x_ok" ]]; then pkill '(Xorg|startx)'; fi) &
|
echo ""
|
||||||
|
echo "NOTE: Not all GPUs/displays are supported."
|
||||||
|
echo " If the system is frozen on this screen"
|
||||||
|
echo " please restart and try CLI mode instead"
|
||||||
|
echo ""
|
||||||
|
|
||||||
# Try starting X
|
# Start x
|
||||||
startx >/dev/null
|
echo "Starting X..."
|
||||||
|
startx >/dev/null 2>&1
|
||||||
# Run Hw-Diags CLI if necessary
|
|
||||||
if ! [[ -f "/tmp/x_ok" ]]; then
|
|
||||||
echo "There was an issue starting Xorg, starting CLI interface..."
|
|
||||||
sleep 2s
|
|
||||||
hw-diags --cli
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
hw-diags --cli
|
hw-diags --cli
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 687 KiB After Width: | Height: | Size: 264 KiB |
BIN
Images/Linux.jpg
|
Before Width: | Height: | Size: 187 KiB After Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 59 KiB |
BIN
Images/WinPE.jpg
|
Before Width: | Height: | Size: 272 KiB After Width: | Height: | Size: 259 KiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |