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)
|
||||
|
||||
# Prep UFD
|
||||
print_info('Prep UFD')
|
||||
if not args['--update']:
|
||||
print_info('Prep UFD')
|
||||
prep_device(ufd_dev, UFD_LABEL, use_mbr=args['--use-mbr'])
|
||||
|
||||
# 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"
|
||||
|
||||
# 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
|
||||
|
||||
# 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
|
||||
|
||||
# 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
|
||||
$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
|
||||
|
||||
# Python: psutil
|
||||
|
|
|
|||
|
|
@ -2,42 +2,10 @@
|
|||
#
|
||||
## Wizard Kit: ddrescue TUI Launcher
|
||||
|
||||
source launch-in-tmux
|
||||
|
||||
SESSION_NAME="ddrescue-tui"
|
||||
WINDOW_NAME="ddrescue TUI"
|
||||
MENU="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" $*
|
||||
TMUX_CMD="ddrescue-tui-menu"
|
||||
|
||||
launch_in_tmux "$@"
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ if __name__ == '__main__':
|
|||
# Done
|
||||
print_standard('\nDone.')
|
||||
pause("Press Enter to exit...")
|
||||
tmux_switch_client()
|
||||
exit_script()
|
||||
except GenericAbort:
|
||||
abort()
|
||||
|
|
@ -55,6 +56,7 @@ if __name__ == '__main__':
|
|||
print_error(msg)
|
||||
abort()
|
||||
except SystemExit as sys_exit:
|
||||
tmux_switch_client()
|
||||
exit_script(sys_exit.code)
|
||||
except:
|
||||
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 settings.cleanup import *
|
||||
|
||||
|
||||
def cleanup_adwcleaner():
|
||||
"""Move AdwCleaner folders into the ClientDir."""
|
||||
source_path = r'{SYSTEMDRIVE}\AdwCleaner'.format(**global_vars['Env'])
|
||||
|
|
@ -70,6 +71,7 @@ def cleanup_cbs(dest_folder):
|
|||
|
||||
|
||||
def cleanup_d7ii():
|
||||
# pylint: disable=too-many-branches
|
||||
"""Sort d7II logs and remove temp items."""
|
||||
d7_path = r'{}\d7II'.format(global_vars['ClientDir'])
|
||||
d7_reports = r'{} Reports'.format(d7_path)
|
||||
|
|
@ -78,9 +80,9 @@ def cleanup_d7ii():
|
|||
# Logs & Reports
|
||||
if os.path.exists(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(
|
||||
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)
|
||||
log_dest = r'{SYSTEMDRIVE}\{prefix}\Logs\{date}'.format(
|
||||
prefix=KIT_NAME_SHORT,
|
||||
|
|
@ -138,13 +140,6 @@ def cleanup_d7ii():
|
|||
os.rmdir(d7_path)
|
||||
except OSError:
|
||||
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():
|
||||
"""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
|
||||
with winreg.OpenKeyEx(hive, key, 0, access) as 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))
|
||||
delete_registry_key(hive, subkey)
|
||||
|
||||
|
|
@ -247,7 +242,14 @@ def delete_registry_value(hive, key, 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__':
|
||||
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
|
||||
elif 'children' in vol_data:
|
||||
# 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):
|
||||
vol_data['show_data']['data'] += ' "{}"'.format(vol_data['label'])
|
||||
vol_data['show_data']['info'] = True
|
||||
|
|
|
|||
|
|
@ -281,6 +281,7 @@ class RecoveryState():
|
|||
raise GenericError('Unsupported mode')
|
||||
self.get_smart_source()
|
||||
self.set_working_dir()
|
||||
os.makedirs(global_vars['LogDir'], exist_ok=True)
|
||||
|
||||
def add_block_pair(self, source, dest):
|
||||
"""Run safety checks and append new BlockPair to internal list."""
|
||||
|
|
@ -289,10 +290,10 @@ class RecoveryState():
|
|||
if source.is_dir():
|
||||
raise GenericError('Invalid source "{}"'.format(
|
||||
source.path))
|
||||
elif not dest.is_dev():
|
||||
if not dest.is_dev():
|
||||
raise GenericError('Invalid destination "{}"'.format(
|
||||
dest.path))
|
||||
elif source.size > dest.size:
|
||||
if source.size > dest.size:
|
||||
raise GenericError(
|
||||
'Destination is too small, refusing to continue.')
|
||||
else:
|
||||
|
|
@ -300,13 +301,13 @@ class RecoveryState():
|
|||
if not source.is_dev():
|
||||
raise GenericError('Invalid source "{}"'.format(
|
||||
source.path))
|
||||
elif not dest.is_dir():
|
||||
if not dest.is_dir():
|
||||
raise GenericError('Invalid destination "{}"'.format(
|
||||
dest.path))
|
||||
elif (source.size * 1.2) > dest.size:
|
||||
if (source.size * 1.2) > dest.size:
|
||||
raise GenericError(
|
||||
'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(
|
||||
'Destination filesystem "{}" is not recommended.'.format(
|
||||
dest.fstype.upper()))
|
||||
|
|
@ -315,13 +316,25 @@ class RecoveryState():
|
|||
print_standard(' ')
|
||||
if not ask('Proceed anyways? (Strongly discouraged)'):
|
||||
raise GenericAbort()
|
||||
elif not is_writable_dir(dest):
|
||||
if not is_writable_dir(dest):
|
||||
raise GenericError(
|
||||
'Destination is not writable, refusing to continue.')
|
||||
elif not is_writable_filesystem(dest):
|
||||
if not is_writable_filesystem(dest):
|
||||
raise GenericError(
|
||||
'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
|
||||
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... ')
|
||||
|
||||
# Done
|
||||
run_program(['tmux', 'kill-window'])
|
||||
tmux_kill_all_panes()
|
||||
exit_script()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,12 @@ class CpuObj():
|
|||
continue
|
||||
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):
|
||||
"""Generate CPU report with data from all tests."""
|
||||
report = []
|
||||
|
|
@ -60,11 +66,8 @@ class CpuObj():
|
|||
report.append(' {}'.format(self.name))
|
||||
|
||||
# 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(' {} ({})'.format(ram_total, ', '.join(ram_dimms)))
|
||||
report.append(' {} ({})'.format(self.ram_total, ', '.join(self.ram_dimms)))
|
||||
|
||||
# Tests
|
||||
for test in self.tests.values():
|
||||
|
|
@ -163,6 +166,18 @@ class DiskObj():
|
|||
# self.dd_skip_extra == 0 is fine
|
||||
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):
|
||||
"""Check NVMe / SMART attributes for errors, returns bool."""
|
||||
attr_type = self.attr_type
|
||||
|
|
@ -614,6 +629,83 @@ class State():
|
|||
# Assuming layout definitions changes mid-run, ignoring
|
||||
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):
|
||||
"""Remove test objects, set log, and add devices."""
|
||||
self.disks = []
|
||||
|
|
@ -1135,8 +1227,13 @@ def run_hw_tests(state):
|
|||
v['Objects'][-1].update_status('N/A')
|
||||
if k == TESTS_CPU[-1]:
|
||||
# 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.cpu, state.ticket_id, state.ticket_name)
|
||||
state.cpu, state.ticket_id, state.ticket_name, color_code)
|
||||
# Recheck attributes
|
||||
if state.tests['NVMe / SMART']['Enabled']:
|
||||
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:
|
||||
print_standard('Posting results to osTicket...')
|
||||
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(
|
||||
disk, state.ticket_id, state.ticket_name)
|
||||
disk, state.ticket_id, state.ticket_name, color_code)
|
||||
|
||||
# Check if disk checkbox needs updating
|
||||
all_disks_passed = True
|
||||
|
|
@ -1200,7 +1304,9 @@ def run_hw_tests(state):
|
|||
print_standard(' ')
|
||||
|
||||
# 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(
|
||||
message='Saving 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:
|
||||
for t in ['badblocks', 'I/O Benchmark']:
|
||||
dev.disable_test(t, 'Denied')
|
||||
if dev.is_aging() and not update_mode:
|
||||
test.failed = True
|
||||
test.update_status('FAIL')
|
||||
|
||||
# Done
|
||||
update_progress_pane(state)
|
||||
|
|
|
|||
|
|
@ -204,6 +204,9 @@ class osTicket():
|
|||
|
||||
# Device
|
||||
report.append(dev.description)
|
||||
if hasattr(dev, 'ram_total'):
|
||||
report.append('{} RAM ({})'.format(
|
||||
dev.ram_total, ', '.join(dev.ram_dimms)))
|
||||
report.append(' ')
|
||||
|
||||
# Test reports
|
||||
|
|
@ -240,6 +243,8 @@ class osTicket():
|
|||
report.append('Volumes:')
|
||||
report.extend(self.generate_volume_report(dev, results))
|
||||
report.append(' ')
|
||||
if not dev.is_4k_aligned():
|
||||
report.append('! NOTE: One or more partitions are not 4K aligned')
|
||||
|
||||
# Asterisk
|
||||
if results['Asterisk']:
|
||||
|
|
@ -497,15 +502,15 @@ class osTicket():
|
|||
# Done
|
||||
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."""
|
||||
if not dev.tests:
|
||||
# No test results available, aborting post
|
||||
return
|
||||
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."""
|
||||
self.connect()
|
||||
|
||||
|
|
@ -520,12 +525,13 @@ class osTicket():
|
|||
# Build SQL cmd
|
||||
sql_cmd = "INSERT INTO `{Name}`.`{Response}`".format(
|
||||
**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 += " '{}',".format(ticket_id)
|
||||
sql_cmd += " '{ID}', '{Name}',".format(**OSTICKET['Staff'])
|
||||
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 += " );"
|
||||
|
||||
# Run SQL cmd
|
||||
|
|
|
|||
|
|
@ -141,6 +141,18 @@ def tmux_split_window(
|
|||
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(
|
||||
pane_id, command=None, working_dir=None,
|
||||
text=None, watch=None, watch_cmd='cat'):
|
||||
|
|
|
|||
|
|
@ -1177,6 +1177,19 @@ def update_winaiorepair():
|
|||
|
||||
|
||||
# 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():
|
||||
# Stop running processes
|
||||
kill_process('IObitUninstallerPortable.exe')
|
||||
|
|
|
|||
|
|
@ -1,46 +1,11 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
## Wizard Kit: HW Diagnostics - Menu Launcher
|
||||
## Wizard Kit: HW Diagnostics Launcher
|
||||
|
||||
source launch-in-tmux
|
||||
|
||||
SESSION_NAME="hw-diags"
|
||||
WINDOW_NAME="Hardware Diagnostics"
|
||||
MENU="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" $*
|
||||
TMUX_CMD="hw-diags-menu"
|
||||
|
||||
launch_in_tmux "$@"
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ if __name__ == '__main__':
|
|||
sleep(1)
|
||||
pause('Press Enter to exit...')
|
||||
except SystemExit as sys_exit:
|
||||
tmux_switch_client()
|
||||
exit_script(sys_exit.code)
|
||||
except:
|
||||
# Cleanup
|
||||
|
|
@ -59,6 +60,7 @@ if __name__ == '__main__':
|
|||
|
||||
# Done
|
||||
tmux_kill_all_panes()
|
||||
tmux_switch_client()
|
||||
exit_script()
|
||||
|
||||
# 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 psutil
|
||||
|
||||
try:
|
||||
# pylint: disable=import-error
|
||||
import winreg
|
||||
HKU = winreg.HKEY_USERS
|
||||
HKCR = winreg.HKEY_CLASSES_ROOT
|
||||
HKCU = winreg.HKEY_CURRENT_USER
|
||||
HKLM = winreg.HKEY_LOCAL_MACHINE
|
||||
except ModuleNotFoundError:
|
||||
if psutil.WINDOWS:
|
||||
if os.name == 'nt':
|
||||
raise
|
||||
|
||||
# d7II
|
||||
|
|
@ -33,10 +40,6 @@ DESKTOP_ITEMS = re.compile(
|
|||
)
|
||||
|
||||
# Registry
|
||||
HKU = winreg.HKEY_USERS
|
||||
HKCR = winreg.HKEY_CLASSES_ROOT
|
||||
HKCU = winreg.HKEY_CURRENT_USER
|
||||
HKLM = winreg.HKEY_LOCAL_MACHINE
|
||||
UAC_DEFAULTS_WIN7 = {
|
||||
r'Software\Microsoft\Windows\CurrentVersion\Policies\System': {
|
||||
'DWORD Items': {
|
||||
|
|
@ -62,5 +65,3 @@ UAC_DEFAULTS_WIN10 = {
|
|||
|
||||
if __name__ == '__main__':
|
||||
print("This file is not meant to be called directly.")
|
||||
|
||||
# vim: sts=2 sw=2 ts=2
|
||||
|
|
|
|||
|
|
@ -76,16 +76,16 @@ ATTRIBUTES = {
|
|||
'NVMe': {
|
||||
'critical_warning': {'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, },
|
||||
},
|
||||
'SMART': {
|
||||
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, },
|
||||
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, },
|
||||
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, },
|
||||
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, },
|
||||
|
|
@ -94,9 +94,10 @@ ATTRIBUTES = {
|
|||
},
|
||||
}
|
||||
ATTRIBUTE_COLORS = (
|
||||
# NOTE: The order here is important; least important to most important.
|
||||
('Warning', 'YELLOW'),
|
||||
('Error', 'RED'),
|
||||
('Maximum', 'PURPLE'),
|
||||
('Warning', 'YELLOW'),
|
||||
)
|
||||
KEY_NVME = 'nvme_smart_health_information_log'
|
||||
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 = {
|
||||
r'(Root)': {
|
||||
|
|
@ -6,6 +8,53 @@ LAUNCHERS = {
|
|||
'L_TYPE': 'Executable',
|
||||
'L_PATH': 'd7II',
|
||||
'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': {
|
||||
'L_TYPE': 'PyScript',
|
||||
|
|
@ -66,6 +115,7 @@ LAUNCHERS = {
|
|||
},
|
||||
},
|
||||
r'Data Transfers': {
|
||||
# pylint: disable=bad-continuation
|
||||
"Fab's Autobackup Pro": {
|
||||
'L_TYPE': 'Executable',
|
||||
'L_PATH': 'AutoBackupPro',
|
||||
|
|
@ -278,7 +328,7 @@ LAUNCHERS = {
|
|||
'L_TYPE': 'Executable',
|
||||
'L_PATH': 'erunt',
|
||||
'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',
|
||||
'Extra Code': [
|
||||
r'call "%bin%\Scripts\init_client_dir.cmd" /Logs',
|
||||
|
|
@ -330,13 +380,13 @@ LAUNCHERS = {
|
|||
r'Drivers': {
|
||||
'Intel RST (Current Release)': {
|
||||
'L_TYPE': 'Executable',
|
||||
'L_PATH': '_Drivers\Intel RST',
|
||||
'L_PATH': r'_Drivers\Intel RST',
|
||||
'L_ITEM': 'SetupRST_17.2.exe',
|
||||
'L_7ZIP': 'SetupRST_17.2.exe',
|
||||
},
|
||||
'Intel RST (Previous Releases)': {
|
||||
'L_TYPE': 'Folder',
|
||||
'L_PATH': '_Drivers\Intel RST',
|
||||
'L_PATH': r'_Drivers\Intel RST',
|
||||
'L_ITEM': '.',
|
||||
'L_NCMD': 'True',
|
||||
},
|
||||
|
|
@ -352,7 +402,7 @@ LAUNCHERS = {
|
|||
},
|
||||
'Snappy Driver Installer Origin': {
|
||||
'L_TYPE': 'Executable',
|
||||
'L_PATH': '_Drivers\SDIO',
|
||||
'L_PATH': r'_Drivers\SDIO',
|
||||
'L_ITEM': 'SDIO.exe',
|
||||
},
|
||||
},
|
||||
|
|
@ -507,6 +557,20 @@ LAUNCHERS = {
|
|||
'L_PATH': 'ConEmu',
|
||||
'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': {
|
||||
'L_TYPE': 'PyScript',
|
||||
'L_PATH': 'Scripts',
|
||||
|
|
@ -562,7 +626,7 @@ LAUNCHERS = {
|
|||
'L_TYPE': 'Executable',
|
||||
'L_PATH': 'XMPlay',
|
||||
'L_ITEM': 'xmplay.exe',
|
||||
'L_ARGS': '"%bin%\XMPlay\music.7z"',
|
||||
'L_ARGS': r'"%bin%\XMPlay\music.7z"',
|
||||
},
|
||||
},
|
||||
r'Repairs': {
|
||||
|
|
@ -627,7 +691,7 @@ LAUNCHERS = {
|
|||
'L_TYPE': 'Executable',
|
||||
'L_PATH': 'RKill',
|
||||
'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',
|
||||
'Extra Code': [
|
||||
r'call "%bin%\Scripts\init_client_dir.cmd" /Logs',
|
||||
|
|
@ -697,5 +761,3 @@ LAUNCHERS = {
|
|||
|
||||
if __name__ == '__main__':
|
||||
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_CA_NAME='1201_Root_CA.crt'
|
||||
# Server IP addresses
|
||||
OFFICE_SERVER_IP='10.11.1.20'
|
||||
QUICKBOOKS_SERVER_IP='10.11.1.20'
|
||||
OFFICE_SERVER_IP='10.120.1.15'
|
||||
QUICKBOOKS_SERVER_IP='10.120.1.15'
|
||||
# Time Zones
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
# Wizard Kit: Settings - osTicket
|
||||
|
||||
OSTICKET = {
|
||||
'Color Codes': {
|
||||
'Normal': '0',
|
||||
'Contact': '1',
|
||||
'Diags': '2',
|
||||
'Diags FAIL': '3',
|
||||
},
|
||||
'Database': {
|
||||
'Name': 'osticket',
|
||||
'User': 'wizardkit',
|
||||
|
|
|
|||
|
|
@ -27,6 +27,10 @@ MOZILLA_FIREFOX_UBO_PATH = r'{}\{}\ublock_origin.xpi'.format(
|
|||
os.environ.get('PROGRAMFILES'),
|
||||
r'Mozilla Firefox\distribution\extensions')
|
||||
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': {
|
||||
'SZ Items': {
|
||||
'update_url': 'https://clients2.google.com/service/update2/crx'},
|
||||
|
|
@ -170,6 +174,7 @@ SETTINGS_EXPLORER_USER = {
|
|||
},
|
||||
},
|
||||
r'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced': {
|
||||
# Dup path so it Will be applied to all modes
|
||||
'DWORD Items': {
|
||||
# Launch Folder Windows in a Separate Process
|
||||
'SeparateProcess': 1,
|
||||
|
|
|
|||
|
|
@ -3,38 +3,40 @@
|
|||
# vim: sts=2 sw=2 ts=2 tw=0
|
||||
|
||||
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',
|
||||
'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',
|
||||
'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',
|
||||
'BlueScreenView64': 'http://www.nirsoft.net/utils/bluescreenview-x64.zip',
|
||||
'Caffeine': 'http://www.zhornsoftware.co.uk/caffeine/caffeine.zip',
|
||||
'ClassicStartSkin': 'http://www.classicshell.net/forum/download/file.php?id=3001&sid=9a195960d98fd754867dcb63d9315335',
|
||||
'Du': 'https://download.sysinternals.com/files/DU.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 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',
|
||||
'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',
|
||||
'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',
|
||||
'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',
|
||||
'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',
|
||||
'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',
|
||||
'Macs Fan Control': 'https://www.crystalidea.com/downloads/macsfancontrol_setup.exe',
|
||||
'NirCmd32': 'https://www.nirsoft.net/utils/nircmd.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',
|
||||
'Office Deployment Tool': 'https://download.microsoft.com/download/2/7/A/27AF1BE6-DD20-4CB4-B154-EBAB8A7D4A7E/officedeploymenttool_11509-33604.exe',
|
||||
'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_11617-33601.exe',
|
||||
'ProduKey32': 'http://www.nirsoft.net/utils/produkey.zip',
|
||||
'ProduKey64': 'http://www.nirsoft.net/utils/produkey-x64.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 Torrent': 'http://snappy-driver-installer.org/downloads/SDIO_Update.torrent',
|
||||
'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',
|
||||
'TestDisk': 'https://www.cgsecurity.org/testdisk-7.1-WIP.win.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',
|
||||
'WinAIO Repair': 'http://www.tweaking.com/files/setups/tweaking.com_windows_repair_aio.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 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',
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ BOOT_ENTRIES = {
|
|||
BOOT_FILES = {
|
||||
# Directory: extension
|
||||
'/arch/boot/syslinux': 'cfg',
|
||||
'/boot/grub/': 'cfg',
|
||||
'/boot/grub': 'cfg',
|
||||
'/EFI/boot': 'conf',
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,85 +47,86 @@ OTHER_RESULTS = {
|
|||
SETUP_ACTIONS = OrderedDict({
|
||||
# Install software
|
||||
'Installing Programs': {'Info': True},
|
||||
'VCR': {'New': True, 'Fab': 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},},
|
||||
'LibreOffice': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': install_libreoffice,
|
||||
'VCR': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': install_vcredists, 'Just run': True,},
|
||||
'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, '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},
|
||||
},
|
||||
'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
|
||||
'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},
|
||||
'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
|
||||
'Installing Extensions': {'Info': True},
|
||||
'Classic Shell skin': {'New': True, 'Fab': 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,},
|
||||
'Firefox extensions': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': install_firefox_extensions,},
|
||||
'Classic Shell skin': {'New': True, 'Dat': True, 'Cur': False, 'HW': False, 'Function': install_classicstart_skin, 'Win10 only': True,},
|
||||
'Chrome extensions': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': install_chrome_extensions,},
|
||||
'Firefox extensions': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': install_firefox_extensions,},
|
||||
|
||||
# Configure software'
|
||||
'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',
|
||||
},
|
||||
'Classic Start': {'New': True, 'Fab': 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,},
|
||||
'Enable System Restore': {'New': True, 'Fab': 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,},
|
||||
'Disable Fast Startup': {'New': True, 'Fab': 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,},
|
||||
'Enable BSoD mini dumps': {'New': True, 'Fab': 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 RegBack': {'New': True, 'Fab': 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},},
|
||||
'Explorer (system)': {'New': True, 'Fab': 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,},
|
||||
'Restart Explorer': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': restart_explorer,},
|
||||
'Update Clock': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': update_clock,},
|
||||
'Classic Start': {'New': True, 'Dat': True, 'Cur': False, 'HW': False, 'Function': config_classicstart, '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, 'Dat': True, 'Cur': True, 'HW': True, 'Function': enable_system_restore,},
|
||||
'Create System Restore': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': create_system_restore_point,},
|
||||
'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, 'Dat': True, 'Cur': True, 'HW': False, 'Function': disable_windows_telemetry, 'Win10 only': True,},
|
||||
'Enable BSoD mini dumps': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': enable_mini_dumps,},
|
||||
'Enable Hibernation': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': enable_hibernation, 'If answer': 'Fast-Hiber', 'Win10 only': True,},
|
||||
'Enable RegBack': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': enable_regback, 'Win10 only': True,},
|
||||
'Enable Windows Updates': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': enable_windows_updates, 'KWArgs': {'silent': True},},
|
||||
'Explorer (system)': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': config_explorer_system, 'Win10 only': True,},
|
||||
'Explorer (user)': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': config_explorer_user, 'Win10 only': True,},
|
||||
'Restart Explorer': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': restart_explorer,},
|
||||
'Update Clock': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': update_clock,},
|
||||
|
||||
# Cleanup
|
||||
'Cleaning up': {'Info': True},
|
||||
'AdwCleaner': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': cleanup_adwcleaner,},
|
||||
'd7II': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': cleanup_d7ii,},
|
||||
'Desktop': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': cleanup_desktop,},
|
||||
'Emsisoft s2cmd': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': cleanup_emsisoft,},
|
||||
'Registry Backup(s)': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': cleanup_regbackups,},
|
||||
'KIT_NAME_FULL': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': delete_empty_folders,},
|
||||
'AdwCleaner': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': cleanup_adwcleaner,},
|
||||
'd7II': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': cleanup_d7ii,},
|
||||
'Desktop': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': cleanup_desktop,},
|
||||
'Emsisoft s2cmd': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': cleanup_emsisoft,},
|
||||
'Registry Backup(s)': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': cleanup_regbackups,},
|
||||
'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
|
||||
'Exporting system info': {'Info': True},
|
||||
'AIDA64 Report': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': run_aida64,},
|
||||
'File listing': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Function': backup_file_list,},
|
||||
'Power plans': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': backup_power_plans,},
|
||||
'Product Keys': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': run_produkey,},
|
||||
'Registry': {'New': True, 'Fab': True, 'Cur': True, 'HW': True, 'Function': backup_registry,},
|
||||
'AIDA64 Report': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': run_aida64,},
|
||||
'File listing': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': backup_file_list,},
|
||||
'Power plans': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': backup_power_plans,},
|
||||
'Product Keys': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': run_produkey,},
|
||||
'Registry': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': backup_registry,},
|
||||
|
||||
# Show Summary
|
||||
'Summary': {'Info': True},
|
||||
'Operating System': {'New': True, 'Fab': 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},},
|
||||
'BIOS Activation': {'New': True, 'Fab': 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},},
|
||||
'Installed RAM': {'New': True, 'Fab': 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},},
|
||||
'Show free space': {'New': True, 'Fab': 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 Office': {'New': True, 'Fab': 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'},},
|
||||
'Operating System': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': show_os_name, '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, 'Dat': True, 'Cur': True, 'HW': False, 'Function': activate_with_bios, 'If not activated': True,},
|
||||
'Secure Boot': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': check_secure_boot_status, 'KWArgs': {'show_alert': 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, 'Dat': False, 'Cur': True, 'HW': False, 'Function': show_temp_files_size, 'KWArgs': {'ns': 'UNKNOWN', 'silent_function': False},},
|
||||
'Show free space': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': show_free_space, 'Just run': 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, 'Dat': True, 'Cur': True, 'HW': False, 'Function': get_installed_office, 'KWArgs': {'ns': 'UNKNOWN', 'print_return': True},},
|
||||
'Partitions 4K aligned': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': check_4k_alignment, 'KWArgs': {'cs': 'TRUE', 'ns': 'FALSE'},},
|
||||
|
||||
# Open things
|
||||
'Opening Programs': {'Info': True},
|
||||
'Device Manager': {'New': True, 'Fab': 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'},},
|
||||
'Snappy': {'New': True, 'Fab': 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'},},
|
||||
'Windows Updates': {'New': True, 'Fab': 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'},},
|
||||
'Sleep': {'New': True, 'Fab': 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'},},
|
||||
'Device Manager': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': open_device_manager, 'KWArgs': {'cs': 'STARTED'},},
|
||||
'HWiNFO sensors': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': run_hwinfo_sensors, 'KWArgs': {'cs': 'STARTED'},},
|
||||
'Snappy': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': open_snappy_driver_origin, 'KWArgs': {'cs': 'STARTED'},},
|
||||
'Speed test': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': open_speedtest, 'KWArgs': {'cs': 'STARTED'},},
|
||||
'Windows Updates': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Function': open_windows_updates, '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, 'Dat': True, 'Cur': True, 'HW': True, 'Function': sleep, 'Just run': True, 'KWArgs': {'seconds': 3},},
|
||||
'XMPlay': {'New': True, 'Dat': True, 'Cur': True, 'HW': True, 'Function': run_xmplay, 'KWArgs': {'cs': 'STARTED'},},
|
||||
})
|
||||
SETUP_ACTION_KEYS = (
|
||||
'Function',
|
||||
|
|
@ -137,19 +138,19 @@ SETUP_ACTION_KEYS = (
|
|||
)
|
||||
SETUP_QUESTIONS = {
|
||||
# AV
|
||||
'ESET': {'New': None, 'Fab': None, 'Cur': None, 'HW': False},
|
||||
'MSE': {'New': None, 'Fab': None, 'Cur': None, 'HW': False, 'Ninite': True},
|
||||
'ESET': {'New': None, 'Dat': None, 'Cur': None, 'HW': False},
|
||||
'MSE': {'New': None, 'Dat': None, 'Cur': None, 'HW': False, 'Ninite': True},
|
||||
|
||||
# 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': {'New': None, 'Fab': None, 'Cur': None, 'HW': False, 'Ninite': True},
|
||||
'LibreOffice': {'New': None, 'Dat': None, 'Cur': None, 'HW': False, 'Ninite': True},
|
||||
|
||||
# Ninite
|
||||
'Base': {'New': True, 'Fab': True, 'Cur': True, 'HW': False, 'Ninite': True},
|
||||
'Missing': {'New': False, 'Fab': True, 'Cur': False, 'HW': False, 'Ninite': True},
|
||||
'Standard': {'New': True, 'Fab': True, 'Cur': False, 'HW': False, 'Ninite': True},
|
||||
'Base': {'New': True, 'Dat': True, 'Cur': True, 'HW': False, 'Ninite': True},
|
||||
'Missing': {'New': False, 'Dat': 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
|
||||
|
||||
|
|
@ -287,7 +288,7 @@ def get_mode():
|
|||
setup_mode = None
|
||||
mode_options = [
|
||||
{'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': 'HW', 'Display Name': 'Hardware service (i.e. no software work)'},
|
||||
]
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ if __name__ == '__main__':
|
|||
|
||||
# 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)
|
||||
|
||||
## 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.
|
||||
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)
|
||||
=Python Check
|
||||
=Create Restore Point
|
||||
[ReportDesc]
|
||||
Autoruns=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.
|
||||
38=Performed repair routines to ensure the Winsock is operating properly.
|
||||
83=Examined internet speed/bandwidth.
|
||||
=Python compatibility check
|
||||
=Create Restore Point
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ EmailBeforeExecution=0
|
|||
PriorAlert=0
|
||||
[]
|
||||
PostRunApp=
|
||||
AlwaysAttemptDownload=1
|
||||
DLafterXdays=.5
|
||||
AlwaysAttemptDownload=0
|
||||
DLafterXdays=5
|
||||
EmailBeforeExecution=0
|
||||
PriorAlert=0
|
||||
|
|
|
|||
|
|
@ -782,7 +782,7 @@ WizardKit System Diagnostics=1
|
|||
1=1
|
||||
RKill (Auto)=1
|
||||
Disable Windows Updates=1
|
||||
Python Check=1
|
||||
Create Restore Point=1
|
||||
[Malware3]
|
||||
ComboFix=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
|
||||
|
||||
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
|
||||
[2J[HWelcome to the [32m______[0m
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,12 @@
|
|||
## Setup network and update hostname
|
||||
|
||||
# Wait for WiFi
|
||||
sleep 1s
|
||||
echo -n "Waiting for network... "
|
||||
sleep 3s
|
||||
echo "Done"
|
||||
|
||||
# Set hostname
|
||||
echo -n "Updating hostname... "
|
||||
IP="$(ip a show scope global \
|
||||
| grep inet \
|
||||
| head -1 \
|
||||
|
|
@ -19,4 +22,5 @@ fi
|
|||
if [[ "${NEW_HOSTNAME:+x}" ]]; then
|
||||
sudo hostnamectl set-hostname "${NEW_HOSTNAME}"
|
||||
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"
|
||||
|
||||
# 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+f exec "thunar ~"
|
||||
bindsym $mod+i exec "hardinfo"
|
||||
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+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+w exec "firefox"
|
||||
|
||||
|
|
@ -320,4 +321,4 @@ bar {
|
|||
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
|
||||
|
||||
$HOME/.update_x &
|
||||
/usr/bin/urxvt -title "Initializing..." -e "$HOME/.update_x"
|
||||
"$HOME/.start_desktop_apps" &
|
||||
|
||||
|
|
|
|||
|
|
@ -297,6 +297,11 @@
|
|||
<menu>root-menu</menu>
|
||||
</action>
|
||||
</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">
|
||||
<action name="Execute">
|
||||
<command>urxvt -title "Hardware Diagnostics" -e hw-diags</command>
|
||||
|
|
@ -329,7 +334,7 @@
|
|||
</keybind>
|
||||
<keybind key="W-t">
|
||||
<action name="Execute">
|
||||
<command>urxvt -e zsh -c 'tmux new-session -A -t general; zsh'</command>
|
||||
<command>urxvt</command>
|
||||
</action>
|
||||
</keybind>
|
||||
<keybind key="W-v">
|
||||
|
|
|
|||
|
|
@ -153,6 +153,7 @@ Down: ${downspeed}${goto 115}Up:${alignr}${upspeed}
|
|||
#Network
|
||||
${alignc}S H O R T C U T K E Y S
|
||||
${hr}
|
||||
[Super] + c${alignr}WKClone
|
||||
[Super] + d${alignr}HW Diagnostics
|
||||
[Super] + f${alignr}File Manager
|
||||
[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+).*'
|
||||
TEST_STATION_WALLPAPERS='/usr/share/wallpaper/test-stations'
|
||||
|
||||
echo -n "Getting display details... "
|
||||
|
||||
# Get screen data
|
||||
xrandr_str="$(xrandr | grep mm | head -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)"
|
||||
offset_urxvt="24"
|
||||
|
||||
echo "Done"
|
||||
|
||||
# Update settings if necessary
|
||||
if [[ "${dpi}" -ge 192 ]]; then
|
||||
echo -n "Updating settings for HiDPI... "
|
||||
|
||||
# Conky
|
||||
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"
|
||||
|
|
@ -65,6 +71,9 @@ if [[ "${dpi}" -ge 192 ]]; then
|
|||
width_urxvt="$(echo "${width_urxvt} / 2" | bc)"
|
||||
height_urxvt="$(echo "${height_urxvt} / 2" | bc)"
|
||||
offset_urxvt="$(echo "${offset_urxvt} * 2" | bc)"
|
||||
|
||||
# Done
|
||||
echo "Done"
|
||||
fi
|
||||
|
||||
# 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"
|
||||
|
||||
# Update conky
|
||||
echo -n "Updating conky... "
|
||||
$HOME/.update_conky
|
||||
echo "Done"
|
||||
|
||||
# Update X
|
||||
echo -n "Updating X... "
|
||||
xset s off
|
||||
xset -dpms
|
||||
xrdb -merge $HOME/.Xresources
|
||||
echo "Done"
|
||||
|
||||
# Set wallpaper
|
||||
echo -n "Setting wallpaper... "
|
||||
_hostname="$(hostnamectl --static | sed 's/.1201.com//')"
|
||||
_ip="$(ip a show scope global \
|
||||
| grep inet \
|
||||
|
|
@ -92,26 +106,10 @@ elif [[ -e "$TEST_STATION_WALLPAPERS/${_ip:+x}" ]]; then
|
|||
else
|
||||
feh --bg-fill "$HOME/.wallpaper"
|
||||
fi
|
||||
echo "Done"
|
||||
|
||||
# Start common desktop apps
|
||||
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
|
||||
# Start desktop apps for i3
|
||||
if fgrep -q "i3" /proc/cmdline; then
|
||||
# i3
|
||||
i3-msg restart
|
||||
else
|
||||
# openbox
|
||||
openbox --restart
|
||||
tint2 &
|
||||
cbatticon --hide-notification &
|
||||
i3-msg exec $HOME/.start_desktop_apps
|
||||
fi
|
||||
|
||||
# Prevent Xorg from being killed by .zlogin
|
||||
touch "/tmp/x_ok"
|
||||
|
||||
|
|
|
|||
|
|
@ -3,5 +3,6 @@
|
|||
dbus-update-activation-environment --systemd DISPLAY
|
||||
eval $(ssh-agent)
|
||||
export SSH_AUTH_SOCK
|
||||
xrdb -merge $HOME/.Xresources
|
||||
exec openbox-session
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
setterm -blank 0 -powerdown 0 2>/dev/null
|
||||
if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then
|
||||
# Connect to network and update hostname
|
||||
$HOME/.update_network
|
||||
"${HOME}/.update_network"
|
||||
|
||||
# Trust added root CAs
|
||||
echo -n "Updating certificate store... "
|
||||
sudo trust extract-compat
|
||||
echo "Done"
|
||||
|
||||
# Update settings if using i3
|
||||
if fgrep -q "i3" /proc/cmdline; then
|
||||
|
|
@ -14,18 +16,16 @@ if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then
|
|||
|
||||
# Start X or HW-diags
|
||||
if ! fgrep -q "nox" /proc/cmdline; then
|
||||
# Kill Xorg after 30 seconds if it doesn't fully initialize
|
||||
(sleep 30s; if ! [[ -f "/tmp/x_ok" ]]; then pkill '(Xorg|startx)'; fi) &
|
||||
# Show freeze warning
|
||||
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
|
||||
startx >/dev/null
|
||||
|
||||
# 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
|
||||
# Start x
|
||||
echo "Starting X..."
|
||||
startx >/dev/null 2>&1
|
||||
else
|
||||
hw-diags --cli
|
||||
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 |