- Custom fork of QZ Tray 2.2.x with certificate validation bypassed - Implemented pairing key (HMAC) authentication as replacement - Modified files: PrintSocketClient.java (certificate check disabled) - New files: PairingAuth.java, PairingConfigDialog.java - Excluded build artifacts (out/, lib/javafx*) from repository - Library JARs included for dependency management
72 lines
1.4 KiB
NSIS
72 lines
1.4 KiB
NSIS
!define StrLoc "!insertmacro StrLoc"
|
|
|
|
!macro StrLoc ResultVar String SubString StartPoint
|
|
Push "${String}"
|
|
Push "${SubString}"
|
|
Push "${StartPoint}"
|
|
Call StrLoc
|
|
Pop "${ResultVar}"
|
|
!macroend
|
|
|
|
Function StrLoc
|
|
/*After this point:
|
|
------------------------------------------
|
|
$R0 = StartPoint (input)
|
|
$R1 = SubString (input)
|
|
$R2 = String (input)
|
|
$R3 = SubStringLen (temp)
|
|
$R4 = StrLen (temp)
|
|
$R5 = StartCharPos (temp)
|
|
$R6 = TempStr (temp)*/
|
|
|
|
;Get input from user
|
|
Exch $R0
|
|
Exch
|
|
Exch $R1
|
|
Exch 2
|
|
Exch $R2
|
|
Push $R3
|
|
Push $R4
|
|
Push $R5
|
|
Push $R6
|
|
|
|
;Get "String" and "SubString" length
|
|
StrLen $R3 $R1
|
|
StrLen $R4 $R2
|
|
;Start "StartCharPos" counter
|
|
StrCpy $R5 0
|
|
|
|
;Loop until "SubString" is found or "String" reaches its end
|
|
${Do}
|
|
;Remove everything before and after the searched part ("TempStr")
|
|
StrCpy $R6 $R2 $R3 $R5
|
|
|
|
;Compare "TempStr" with "SubString"
|
|
${If} $R6 == $R1
|
|
${If} $R0 == `<`
|
|
IntOp $R6 $R3 + $R5
|
|
IntOp $R0 $R4 - $R6
|
|
${Else}
|
|
StrCpy $R0 $R5
|
|
${EndIf}
|
|
${ExitDo}
|
|
${EndIf}
|
|
;If not "SubString", this could be "String"'s end
|
|
${If} $R5 >= $R4
|
|
StrCpy $R0 ``
|
|
${ExitDo}
|
|
${EndIf}
|
|
;If not, continue the loop
|
|
IntOp $R5 $R5 + 1
|
|
${Loop}
|
|
|
|
;Return output to user
|
|
Pop $R6
|
|
Pop $R5
|
|
Pop $R4
|
|
Pop $R3
|
|
Pop $R2
|
|
Exch
|
|
Pop $R1
|
|
Exch $R0
|
|
FunctionEnd |