diff --git a/TGBeta.ps1 b/TGBeta.ps1
index ad4b7a5..8481c8a 100644
--- a/TGBeta.ps1
+++ b/TGBeta.ps1
@@ -12,6 +12,17 @@
### need to have the fetch button check if Install-DattoRMM function exist if not run the build in helpder function to fetch sites
### need to move the tweaks to the tweeks tab
+### To Modify as of January 27 2025
+
+### let's start thinking about the write-log -TaskCategory "On-boarding" or "Off-boarding"
+### need RGB color codes form john, once we picked the RGBA colors
+### add the .net silent install tweaks to toolkit
+### for the reg tweak need to do/undo function maybe it should have it own check box list
+### added offboard check boxes for dattormm, dattodeb, rocketcyber, cyberQP, SVSHelpdesk and Splashtop
+### for the offboarding button, we need to fix the uninstall-svsmsp module
+### need to fix path in the uninstall-DattoEDR -
+####### ❌ [Error] [GeneralTask] Uninstallation command 'C:\Program Files\Infocyte\Agent\agent.exe' not found. (Event ID: 3000) - bad path
+
#region Write-Log
@@ -738,73 +749,35 @@ function GetHtmlContent {
+
Tweaks
-
-
Exit
@@ -961,56 +934,14 @@ function GetHtmlContent {
});
function triggerTweaks() {
- // Gather all selected tweaks
- const selectedTweaks = [];
- document.querySelectorAll('#tweaksTab input[type="checkbox"]').forEach(checkbox => {
- if (checkbox.checked) {
- selectedTweaks.push(checkbox.name); // Use 'name' as the identifier
- }
- });
-
- if (selectedTweaks.length === 0) {
- appendLog("No tweaks selected. Please select at least one tweak.", "red");
- return;
+ const setedgedefaultsearch = document.querySelector('input[name="setedgedefaultsearch"]');
+
+
+ if (setedgedefaultsearch.checked) {
+ fetch('/setedgedefaultsearch', { method: 'GET' })
}
-
- // Send selected tweaks to the backend
- fetch('/runTweaks', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({ tweaks: selectedTweaks })
- })
- .then(response => {
- if (!response.ok) {
- throw new Error(`Failed to apply tweaks: ${response.statusText}`);
- }
- return response.json();
- })
- .then(data => {
- // Log successes and errors
- if (data.Success && data.Success.length > 0) {
- data.Success.forEach(tweak => appendLog(`Successfully applied: ${tweak}`, "green"));
- }
- if (data.Errors && data.Errors.length > 0) {
- data.Errors.forEach(error => appendLog(`Error: ${error}`, "red"));
- }
- })
- .catch(error => {
- appendLog(`Unexpected error: ${error.message}`, "red");
- });
}
- function appendLog(message, color = "white") {
- const log = document.createElement('p');
- log.style.color = color;
- log.textContent = message;
- document.getElementById('logArea').appendChild(log);
- }
-
-
-
function toggleDattoRMMOptions() {
const checkbox = document.getElementById('installDattoRMMCheckbox');
@@ -1031,22 +962,14 @@ function GetHtmlContent {
tabButtons.forEach(button => {
button.addEventListener('click', () => {
- console.log(`Tab button clicked: ${button.dataset.tab}`); // Log which tab button was clicked
tabButtons.forEach(btn => {
btn.classList.remove('active');
btn.setAttribute('aria-expanded', 'false');
});
tabContents.forEach(tab => tab.classList.remove('active'));
-
button.classList.add('active');
button.setAttribute('aria-expanded', 'true');
- const targetTab = document.getElementById(button.dataset.tab);
- console.log(`Activating tab: ${button.dataset.tab}`);
- if (targetTab) {
- targetTab.classList.add('active');
- } else {
- console.error(`Tab not found: ${button.dataset.tab}`);
- }
+ document.getElementById(button.dataset.tab).classList.add('active');
});
});
@@ -1714,9 +1637,9 @@ try {
if ($request.HttpMethod -eq "POST") {
try {
# Step 1: Read the Request Body
- $bodyStream = New-Object IO.StreamReader $request.InputStream
- $body = $bodyStream.ReadToEnd()
- $requestData = ConvertFrom-Json $body
+ $bodyStream = New-Object IO.StreamReader $request.InputStream
+ $body = $bodyStream.ReadToEnd()
+ $requestData = ConvertFrom-Json $body
# Step 2: Validate Input
$tweaks = $requestData.tweaks
@@ -1729,63 +1652,46 @@ try {
return
}
- # Step 3: Define Lookup Table for Tweaks
- $tweakActions = @{
- "setWindowsPerformanceCheckbox" = { .\Set-WindowsPerformance.ps1 }
- "stopUnnecessaryServicesCheckbox" = { .\Stop-UnnecessaryServices.ps1 }
- "setedgedefaultsearchCheckbox" = { Set-EdgeDefaultSearchEngine }
- "disableAnimationsCheckbox" = { Disable-Animations }
- "optimizePerformanceCheckbox" = { Optimize-Performance }
- "increaseFontSizeCheckbox" = { Increase-FontSize }
- "enableDarkModeCheckbox" = { Enable-DarkMode }
- "clearTempFilesCheckbox" = { Clear-TempFiles }
- }
-
- # Step 4: Process Each Selected Tweak
- $tweaksProcessed = @()
- $errors = @()
+ # Step 3: Run Selected Tweaks
foreach ($tweak in $tweaks) {
- if ($tweakActions[$tweak]) {
- try {
- # Execute the tweak function or script
- $tweakActions[$tweak].Invoke()
- Write-LogHybrid -Message "Tweak '$tweak' applied successfully." -Level "Info"
- $tweaksProcessed += $tweak
- } catch {
- # Log and collect errors for this tweak
- $errorMessage = "Failed to apply tweak '$tweak': $($_.Exception.Message)"
- Write-LogHybrid -Message $errorMessage -Level "Error"
- $errors += $errorMessage
+ switch ($tweak) {
+ "enableDarkModeCheckbox" {
+ Write-LogHybrid -Message "Running tweak: Set Edge Default Search Engine" -Level "Info"
+ Set-EdgeDefaultSearchEngine
+ }
+ "disableAnimationsCheckbox" {
+ Write-LogHybrid -Message "Running tweak: Disable Animations" -Level "Info"
+ #Disable-Animations
+ }
+ "optimizePerformanceCheckbox" {
+ Write-LogHybrid -Message "Running tweak: Optimize Performance" -Level "Info"
+ #Optimize-Performance
+ }
+ "increaseFontSizeCheckbox" {
+ Write-LogHybrid -Message "Running tweak: Increase Font Size" -Level "Info"
+ #Increase-FontSize
+ }
+ default {
+ Write-LogHybrid -Message "Unknown tweak: $tweak" -Level "Warning"
}
- } else {
- # Handle unknown tweaks
- Write-LogHybrid -Message "Unknown tweak: $tweak" -Level "Warning"
- $errors += "Unknown tweak: $tweak"
}
}
- # Step 5: Return Summary of Results
- $responseData = @{
- Success = $tweaksProcessed
- Errors = $errors
- }
- $responseString = $responseData | ConvertTo-Json -Depth 2
+ # Step 4: Return Success Response
+ $responseString = "Selected tweaks executed successfully."
$response.StatusCode = 200
} catch {
- # Handle General Errors
$responseString = "Error processing tweaks: $($_.Exception.Message)"
- Write-LogHybrid -Message $responseString -Level "Error"
$response.StatusCode = 500
}
- # Step 6: Send Response
+ # Send the Response
$buffer = [System.Text.Encoding]::UTF8.GetBytes($responseString)
- $response.ContentType = "application/json"
+ $response.ContentType = "text/plain"
$response.ContentLength64 = $buffer.Length
$response.OutputStream.Write($buffer, 0, $buffer.Length)
$response.OutputStream.Close()
} else {
- # Handle Unsupported HTTP Methods
$responseString = "Method not allowed. Use POST."
$response.StatusCode = 405
$buffer = [System.Text.Encoding]::UTF8.GetBytes($responseString)
@@ -1795,7 +1701,6 @@ try {
}
-
# ----------------------------------------------------------------
# 4) NEW ROUTE: /getLogs
# Returns $Global:LogCache as JSON for the polling function