Skip to content

Commit e4971af

Browse files
authored
Merge pull request #314 from rcmaehl/0.8.0.0-dev
0.7.5.0
2 parents d937df5 + 3c043d7 commit e4971af

File tree

5 files changed

+191
-135
lines changed

5 files changed

+191
-135
lines changed

Includes/_Logging.au3

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
#include <Date.au3>
44
#include <FileConstants.au3>
55

6-
Global $hLogs[5] = _
6+
Global $hLogs[6] = _
77
[FileOpen(@LocalAppDataDir & "\MSEdgeRedirect\logs\AppFailures.log", $FO_APPEND), _
88
FileOpen(@LocalAppDataDir & "\MSEdgeRedirect\logs\AppGeneral.log", $FO_APPEND), _
99
FileOpen(@LocalAppDataDir & "\MSEdgeRedirect\logs\AppSecurity.log", $FO_APPEND), _
10+
FileOpen(@LocalAppDataDir & "\MSEdgeRedirect\logs\Install.log", $FO_APPEND), _
1011
FileOpen(@LocalAppDataDir & "\MSEdgeRedirect\logs\PEBIAT.log", $FO_APPEND), _
1112
FileOpen(@LocalAppDataDir & "\MSEdgeRedirect\logs\URIFailures.log", $FO_APPEND)]
1213

13-
Global Enum $AppFailures, $AppGeneral, $AppSecurity, $PEBIAT, $URIFailures
14+
Global Enum $AppFailures, $AppGeneral, $AppSecurity, $Install, $PEBIAT, $URIFailures
1415

1516
Func _Log($hLog, $sMsg)
1617

Includes/_Settings.au3

Lines changed: 48 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -53,50 +53,57 @@ Func _GetSettingValue($sSetting)
5353
Local $vReturn = Null
5454
Local Static $bPortable
5555

56-
If $sSetting = "SetPortable" Then $bPortable = True
57-
58-
Select
56+
Switch $sSetting
57+
Case "PerUser"
58+
$vReturn = Number(RegRead("HKLM\SOFTWARE\Policies\Robert Maehl Software\MSEdgeRedirect", "PerUser"))
59+
Case "RunUnsafe"
60+
$vReturn = Number(RegRead("HKLM\SOFTWARE\Policies\Robert Maehl Software\MSEdgeRedirect", "RunUnsafe"))
61+
Case "SetPortable"
62+
$bPortable = True
63+
Case Else
64+
Select
65+
66+
Case RegRead("HKLM\SOFTWARE\Policies\Robert Maehl Software\MSEdgeRedirect", $sSetting)
67+
Switch @extended
68+
Case $REG_SZ Or $REG_EXPAND_SZ
69+
$vReturn = RegRead("HKLM\SOFTWARE\Policies\Robert Maehl Software\MSEdgeRedirect", $sSetting)
70+
Case $REG_DWORD Or $REG_QWORD
71+
$vReturn = Number(RegRead("HKLM\SOFTWARE\Policies\Robert Maehl Software\MSEdgeRedirect", $sSetting))
72+
Case Else
73+
FileWrite($hLogs[$AppFailures], _NowCalc() & " - Invalid Registry Key Type: " & $sSetting & @CRLF)
74+
EndSwitch
75+
76+
Case RegRead("HKLM\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting) And Not $bPortable
77+
Switch @extended
78+
Case $REG_SZ Or $REG_EXPAND_SZ
79+
$vReturn = RegRead("HKLM\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting)
80+
Case $REG_DWORD Or $REG_QWORD
81+
$vReturn = Number(RegRead("HKLM\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting))
82+
Case Else
83+
FileWrite($hLogs[$AppFailures], _NowCalc() & " - Invalid Registry Key Type: " & $sSetting & @CRLF)
84+
EndSwitch
85+
86+
Case RegRead("HKCU\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting) And Not $bPortable
87+
Switch @extended
88+
Case $REG_SZ Or $REG_EXPAND_SZ
89+
$vReturn = RegRead("HKCU\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting)
90+
Case $REG_DWORD Or $REG_QWORD
91+
$vReturn = Number(RegRead("HKCU\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting))
92+
Case Else
93+
FileWrite($hLogs[$AppFailures], _NowCalc() & " - Invalid Registry Key Type: " & $sSetting & @CRLF)
94+
EndSwitch
95+
96+
Case Not IniRead(@LocalAppDataDir & "\MSEdgeRedirect\Settings.ini", "Settings", $sSetting, Null) = Null And Not $bPortable
97+
$vReturn = _Bool(IniRead(@LocalAppDataDir & "\MSEdgeRedirect\Settings.ini", "Settings", $sSetting, False))
98+
99+
Case Not IniRead(@ScriptDir & "\MSEdgeRedirect\Settings.ini", "Settings", $sSetting, Null) = Null
100+
$vReturn = _Bool(IniRead(@ScriptDir & "\MSEdgeRedirect\Settings.ini", "Settings", $sSetting, False))
59101

60-
Case RegRead("HKLM\SOFTWARE\Policies\Robert Maehl Software\MSEdgeRedirect", $sSetting)
61-
Switch @extended
62-
Case $REG_SZ Or $REG_EXPAND_SZ
63-
$vReturn = RegRead("HKLM\SOFTWARE\Policies\Robert Maehl Software\MSEdgeRedirect", $sSetting)
64-
Case $REG_DWORD Or $REG_QWORD
65-
$vReturn = Number(RegRead("HKLM\SOFTWARE\Policies\Robert Maehl Software\MSEdgeRedirect", $sSetting))
66-
Case Else
67-
FileWrite($hLogs[$AppFailures], _NowCalc() & " - Invalid Registry Key Type: " & $sSetting & @CRLF)
68-
EndSwitch
69-
70-
Case RegRead("HKLM\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting) And Not $bPortable
71-
Switch @extended
72-
Case $REG_SZ Or $REG_EXPAND_SZ
73-
$vReturn = RegRead("HKLM\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting)
74-
Case $REG_DWORD Or $REG_QWORD
75-
$vReturn = Number(RegRead("HKLM\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting))
76102
Case Else
77-
FileWrite($hLogs[$AppFailures], _NowCalc() & " - Invalid Registry Key Type: " & $sSetting & @CRLF)
78-
EndSwitch
79-
80-
Case RegRead("HKCU\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting) And Not $bPortable
81-
Switch @extended
82-
Case $REG_SZ Or $REG_EXPAND_SZ
83-
$vReturn = RegRead("HKCU\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting)
84-
Case $REG_DWORD Or $REG_QWORD
85-
$vReturn = Number(RegRead("HKCU\SOFTWARE\Robert Maehl Software\MSEdgeRedirect", $sSetting))
86-
Case Else
87-
FileWrite($hLogs[$AppFailures], _NowCalc() & " - Invalid Registry Key Type: " & $sSetting & @CRLF)
88-
EndSwitch
89-
90-
Case Not IniRead(@LocalAppDataDir & "\MSEdgeRedirect\Settings.ini", "Settings", $sSetting, Null) = Null And Not $bPortable
91-
$vReturn = _Bool(IniRead(@LocalAppDataDir & "\MSEdgeRedirect\Settings.ini", "Settings", $sSetting, False))
103+
$vReturn = False
92104

93-
Case Not IniRead(@ScriptDir & "\MSEdgeRedirect\Settings.ini", "Settings", $sSetting, Null) = Null
94-
$vReturn = _Bool(IniRead(@ScriptDir & "\MSEdgeRedirect\Settings.ini", "Settings", $sSetting, False))
95-
96-
Case Else
97-
$vReturn = False
98-
99-
EndSelect
105+
EndSelect
106+
EndSwitch
100107

101108
Return $vReturn
102109

Includes/_URLModifications.au3

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ Func _ChangeNewsProvider($sURL)
6161
"autos(\/enthusiasts)?" & _
6262
"|comics" & _
6363
"|companies" & _
64+
"|health(\/other)" & _
6465
"|medical" & _
6566
"|news(\/crime|\/other|\/politics|\/us)?" & _
6667
"|newsscienceandtechnology" & _
@@ -126,6 +127,9 @@ Func _ChangeSearchEngine($sURL)
126127
Case "Google"
127128
$sURL = "https://www.google.com/search?q=" & $sURL
128129

130+
Case "Lemmy"
131+
$sURL = "https://search-lemmy.com/results?query=" & $sURL
132+
129133
Case "Sogou"
130134
$sURL = "https://www.sogou.com/web?query=" & $sURL
131135

@@ -288,28 +292,46 @@ Func _ModifyURL($sURL)
288292

289293
EndFunc
290294

291-
Func _RedirectCMDDecode($sCMDLine)
295+
Func _CMDLineDecode($sCMDLine)
292296

293297
Local $aTemp
298+
Local $aUrlMeta
294299
Local $aCMDLine_1D
295300
Local $aCMDLine_2D[0][0]
296301

302+
$sCMDLine = StringReplace($sCMDLine, "--single-argument ", "Method=Undefined&")
297303
$sCMDLine = StringReplace($sCMDLine, "--edge-redirect", "Method")
298-
If StringInStr($sCMDLine, "://") Then ; #211
299-
$sCMDLine = StringReplace($sCMDLine, "&", "%26")
300-
$sCMDLine = StringReplace($sCMDLine, "/", "%2F")
301-
$sCMDLine = StringReplace($sCMDLine, "=", "%3D")
302-
$sCMDLine = StringReplace($sCMDLine, "URL%3D", "URL=")
303-
$sCMDLine = StringReplace($sCMDLine, "Method%3D", "Method=")
304+
305+
If StringInStr($sCMDLine, "?url=") Or StringInStr($sCMDLine, "&url=") Then
306+
$sCMDLine = StringRegExpReplace($sCMDLine, "(?i)microsoft-edge:\??[\/]*", "&")
307+
Else
308+
$sCMDLine = StringRegExpReplace($sCMDLine, "(?i)microsoft-edge:\??[\/]*", "&url=")
304309
EndIf
305-
$sCMDLine = StringReplace($sCMDLine, "microsoft-edge:?", "&")
306-
$sCMDLine = StringRegExpReplace($sCMDLine, "(?i)microsoft-edge:[\/]*", "&url=")
310+
If StringInStr($sCMDLine, "?url=") Then $sCMDLine = StringReplace($sCMDLine, "?url", "url")
311+
312+
$sCMDLine = StringReplace($sCMDLine, "&&", "&")
313+
314+
;TODO: Add url=<url> somehow if "url=" doesn't exist. Method=<whatver> screws this up.
315+
307316
$aCMDLine_1D = StringSplit($sCMDLine, "&", $STR_NOCOUNT)
308317
Redim $aCMDLine_2D[UBound($aCMDLine_1D)][2]
309318
For $iLoop = 0 To UBound($aCMDLine_1D) - 1 Step 1
310319
$aTemp = StringSplit($aCMDLine_1D[$iLoop], "=")
311320
$aCMDLine_2D[$iLoop][0] = $aTemp[1]
312-
If $aTemp[0] >= 2 Then $aCMDLine_2D[$iLoop][1] = $aTemp[2]
321+
If $aTemp[0] >= 2 Then
322+
Switch $aTemp[1]
323+
Case "hubappsubpath"
324+
$aTemp[2] = _WinAPI_UrlUnescape($aTemp[2])
325+
Case "upn"
326+
$aTemp[2] = _WinAPI_UrlUnescape($aTemp[2])
327+
Case "url"
328+
If StringInStr($aTemp[2], "%2F") Then $aTemp[2] = _WinAPI_UrlUnescape($aTemp[2])
329+
If $aTemp[0] >= 3 Then $aTemp[2] = _ArrayToString($aTemp, "=", 2)
330+
Case Else
331+
;;;
332+
EndSwitch
333+
$aCMDLine_2D[$iLoop][1] = $aTemp[2]
334+
EndIf
313335
Next
314336

315337
Return $aCMDLine_2D

MSEdgeRedirect.au3

Lines changed: 45 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
#AutoIt3Wrapper_Res_Comment=https://www.msedgeredirect.com
88
#AutoIt3Wrapper_Res_CompanyName=Robert Maehl Software
99
#AutoIt3Wrapper_Res_Description=MSEdgeRedirect
10-
#AutoIt3Wrapper_Res_Fileversion=0.7.4.0
10+
#AutoIt3Wrapper_Res_Fileversion=0.7.5.0
1111
#AutoIt3Wrapper_Res_ProductName=MSEdgeRedirect App & Service
12-
#AutoIt3Wrapper_Res_ProductVersion=0.7.4.0
12+
#AutoIt3Wrapper_Res_ProductVersion=0.7.5.0
1313
#AutoIt3Wrapper_Res_LegalCopyright=Robert Maehl, using LGPL 3 License
1414
#AutoIt3Wrapper_Res_Language=1033
1515
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
@@ -142,29 +142,34 @@ Func FixTreeIntegrity($aCMDLine)
142142

143143
Local $iParent = _WinAPI_GetParentProcess()
144144

145-
If _WinAPI_GetProcessName($iParent) = "MSEdge.exe" Then
145+
Switch _WinAPI_GetProcessName($iParent)
146+
147+
Case "MSEdge.exe"
146148

147-
FileWrite($hLogs[$AppGeneral], _NowCalc() & " - " & "Caught MSEdge Parent Process, Launched by " & _WinAPI_GetProcessName(_WinAPI_GetParentProcess($iParent)) & ", Grabbing Parameters." & @CRLF)
149+
FileWrite($hLogs[$AppGeneral], _NowCalc() & " - " & "Caught MSEdge Parent Process, Launched by " & _WinAPI_GetProcessName(_WinAPI_GetParentProcess($iParent)) & ", Grabbing Parameters." & @CRLF)
148150

149-
Local $aAdjust
151+
Local $aAdjust
150152

151-
; Enable "SeDebugPrivilege" privilege for obtain full access rights to another processes
152-
Local $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
153+
; Enable "SeDebugPrivilege" privilege for obtain full access rights to another processes
154+
Local $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
153155

154-
_WinAPI_AdjustTokenPrivileges($hToken, $SE_DEBUG_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust)
156+
_WinAPI_AdjustTokenPrivileges($hToken, $SE_DEBUG_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust)
155157

156-
Redim $aCMDLine[2]
157-
$aCMDLine[0] = 0
158-
$aCMDLine[1] = _WinAPI_GetProcessFileName($iParent)
158+
Redim $aCMDLine[2]
159+
$aCMDLine[0] = 0
160+
$aCMDLine[1] = _WinAPI_GetProcessFileName($iParent)
159161

160-
_ArrayConcatenate($aCMDLine, StringSplit(_WinAPI_GetProcessCommandLine($iParent), " ", $STR_NOCOUNT))
162+
_ArrayConcatenate($aCMDLine, StringSplit(_WinAPI_GetProcessCommandLine($iParent), " ", $STR_NOCOUNT))
161163

162-
$aCMDLine[0] = UBound($aCMDLine) - 1
164+
$aCMDLine[0] = UBound($aCMDLine) - 1
163165

164-
ProcessClose($iParent)
166+
ProcessClose($iParent)
165167

166-
EndIf
168+
Case "MSEdgeRedirect.exe"
169+
170+
_SafeRun(StringReplace($aEdges[1], "msedge.exe", "msedge_IFEO.exe"), $aCMDLine[3])
167171

172+
EndSwitch
168173
Return $aCMDLine
169174

170175
EndFunc
@@ -176,6 +181,7 @@ Func ProcessCMDLine()
176181
Local $aPIDs
177182
Local $bHide = _GetSettingValue("NoTray")
178183
Local $hFile = @ScriptDir & ".\Setup.ini"
184+
Local $bForce = False
179185
Local $iParams = $CmdLine[0]
180186
Local $sCMDLine = _ArrayToString($CmdLine, " ", 1)
181187
Local $bSilent = False
@@ -189,7 +195,6 @@ Func ProcessCMDLine()
189195
$CMDLine = RepairCMDLine($CMDLine)
190196

191197
If _ArraySearch($aEdges, $CMDLine[1]) > 0 Then ; Image File Execution Options Mode
192-
RunHTTPCheck()
193198
ActiveMode($CMDLine)
194199
If Not _GetSettingValue("NoUpdates") And Random(1, 10, 1) = 1 Then RunUpdateCheck()
195200
Exit
@@ -204,6 +209,7 @@ Func ProcessCMDLine()
204209
@TAB & "/admin " & @TAB & "Attempts to run MSEdgeRedirect as admin" & @CRLF & _
205210
@TAB & "/change " & @TAB & "Reruns Installer" & @CRLF & _
206211
@TAB & "/hide " & @TAB & "Hides the tray icon" & @CRLF & _
212+
@TAB & "/force " & @TAB & "Skips Safety Checks" & @CRLF & _
207213
@TAB & "/kill " & @TAB & "Kills other MSEdgeRedirect processes" & @CRLF & _
208214
@TAB & "/portable " & @TAB & "Runs MSEdgeRedirect in portable mode" & @CRLF & _
209215
@TAB & "/repair " & @TAB & "Repairs IFEO directory junctions" & @CRLF & _
@@ -224,6 +230,9 @@ Func ProcessCMDLine()
224230
Case "/change"
225231
RunSetup(True, $bSilent, 1)
226232
Exit
233+
Case "/f", "/force"
234+
$bForce = True
235+
_ArrayDelete($CmdLine, 1)
227236
Case "/h", "/hide"
228237
$bHide = True
229238
_ArrayDelete($CmdLine, 1)
@@ -316,9 +325,10 @@ Func ProcessCMDLine()
316325

317326
If $hFile = "WINGET" Then
318327
;;;
319-
Else
328+
ElseIf Not $bForce Then
320329
RunArchCheck($bSilent)
321-
RunHTTPCheck($bSilent)
330+
Else
331+
;;;
322332
EndIf
323333

324334
If Not $bPortable Then
@@ -371,6 +381,7 @@ Func ProcessCMDLine()
371381
RunSetup(True, $bSilent, 0, $hFile)
372382
EndSelect
373383
EndIf
384+
RunHTTPCheck()
374385
ReactiveMode($bHide)
375386

376387
EndFunc
@@ -540,7 +551,7 @@ Func _DecodeAndRun($sEdge = $aEdges[1], $sCMDLine = "")
540551
$sCMDLine = StringReplace($sCMDLine, "--single-argument ", "")
541552
Switch _GetSettingValue("PDFApp")
542553
Case "Default"
543-
If RunPDFCheck() And _IsSafePDF($sCMDLine) Then ShellExecute($sCMDLine)
554+
If RunPDFCheck() And _IsSafePDF($sCMDLine) Then ShellExecute('"' & $sCMDLine & '"')
544555
Case Else
545556
ShellExecute(_GetSettingValue("PDFApp"), '"' & $sCMDLine & '"')
546557
EndSwitch
@@ -568,49 +579,34 @@ Func _DecodeAndRun($sEdge = $aEdges[1], $sCMDLine = "")
568579
Case Else
569580
FileWrite($hLogs[$URIFailures], _NowCalc() & " - Invalid App URL: " & $sCMDLine & @CRLF)
570581
EndSelect
571-
Case StringInStr($sCMDLine, "bing.com/chat") ; Fix BingAI
572-
If _GetSettingValue("NoPDFs") Then _SafeRun($sEdge, $sCMDLine)
573-
Case StringInStr($sCMDLine, "&url=") ; Fix Windows 11 Widgets
574-
ContinueCase
575-
Case StringInStr($sCMDLine, "--edge-redirect")
576-
$aCMDLine = _RedirectCMDDecode($sCMDLine)
577-
578-
For $iLoop = 0 To Ubound($aCMDLine) - 1 Step 1
579-
If $aCMDLine[$iLoop][0] = "url" Then
580-
$sURL = $aCMDLine[$iLoop][1]
581-
If StringInStr($sURL, "%2F") Then $sURL = _WinAPI_UrlUnescape($sURL)
582-
ExitLoop
583-
EndIf
584-
Next
585-
586-
If $sURL = "" Then
587-
FileWrite($hLogs[$URIFailures], _NowCalc() & " - Command Line Missing Needed Parameters: " & $sCMDLine & @CRLF)
582+
Case StringInStr($sCMDLine, "bing.com/chat") Or StringInStr($sCMDLine, "bing.com%2Fchat") ; Fix BingAI
583+
If _GetSettingValue("NoChat") Then
584+
;;;
588585
Else
589-
FileWrite($hLogs[$AppGeneral], _NowCalc() & " - Caught 'Edge-Redirect' Call:" & @CRLF & _ArrayToString($aCMDLine, ": ") & @CRLF)
590-
If _IsSafeURL($sURL) Then
591-
$sURL = _ModifyURL($sURL)
592-
ShellExecute($sURL)
593-
Else
594-
FileWrite($hLogs[$URIFailures], _NowCalc() & " - Invalid URL: " & $sCMDLine & @CRLF)
595-
EndIf
586+
_SafeRun($sEdge, $sCMDLine)
587+
EndIf
588+
Case StringInStr($sCMDLine, "ux=copilot")
589+
If _GetSettingValue("NoPilot") Then
590+
ShellExecute("ms-settings:")
591+
Else
592+
_SafeRun($sEdge, $sCMDLine)
596593
EndIf
594+
Case StringInStr($sCMDLine, "&url=") ; Fix Windows 11 Widgets
595+
ContinueCase
597596
Case StringInStr($sCMDLine, "microsoft-edge:")
598-
If Not StringInStr($sCMDLine, "url=") Then $sCMDLine = StringRegExpReplace($sCMDLine, "microsoft-edge:[\/]*", "microsoft-edge:?url=")
599-
600-
$aCMDLine = _RedirectCMDDecode($sCMDLine)
597+
$aCMDLine = _CMDLineDecode($sCMDLine)
601598

602599
For $iLoop = 0 To Ubound($aCMDLine) - 1 Step 1
603600
If $aCMDLine[$iLoop][0] = "url" Then
604-
$sURL = $aCMDLine[$iLoop][1]
605-
If StringInStr($sURL, "%2F") Then $sURL = _WinAPI_UrlUnescape($sURL)
601+
$sURL = $aCMDLine[$iLoop][1]
606602
ExitLoop
607603
EndIf
608604
Next
609605

610606
If $sURL = "" Then
611607
FileWrite($hLogs[$URIFailures], _NowCalc() & " - Command Line Missing Needed Parameters: " & $sCMDLine & @CRLF)
612608
Else
613-
FileWrite($hLogs[$AppGeneral], _NowCalc() & " - Caught 'Microsoft-Edge' Call:" & @CRLF & _ArrayToString($aCMDLine, ": ") & @CRLF)
609+
FileWrite($hLogs[$AppGeneral], _NowCalc() & " - Caught Valid URI Call:" & @CRLF & _ArrayToString($aCMDLine, ": ") & @CRLF)
614610
If _IsSafeURL($sURL) Then
615611
$sURL = _ModifyURL($sURL)
616612
ShellExecute($sURL)

0 commit comments

Comments
 (0)