mirror of https://github.com/stascorp/rdpwrap
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
4.9 KiB
121 lines
4.9 KiB
name: Update RDPWrapOffsetFinder tools
|
|
|
|
# Run manually to pull a new version of llccd/RDPWrapOffsetFinder into tools/.
|
|
# The workflow commits the updated binaries and opens a pull request.
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag:
|
|
description: "llccd release tag to fetch (leave blank for latest)"
|
|
required: false
|
|
default: ""
|
|
|
|
env:
|
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
|
|
jobs:
|
|
update:
|
|
runs-on: windows-2022
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Download and extract RDPWrapOffsetFinder
|
|
id: fetch
|
|
shell: pwsh
|
|
run: |
|
|
$tag = "${{ github.event.inputs.tag }}"
|
|
if ($tag -eq "") {
|
|
$apiUrl = "https://api.github.com/repos/llccd/RDPWrapOffsetFinder/releases/latest"
|
|
} else {
|
|
$apiUrl = "https://api.github.com/repos/llccd/RDPWrapOffsetFinder/releases/tags/$tag"
|
|
}
|
|
|
|
$release = Invoke-RestMethod -Uri $apiUrl -Headers @{ "User-Agent" = "rdpwrap-ci" }
|
|
$version = $release.tag_name
|
|
Write-Host "Fetching version $version"
|
|
|
|
$asset = $release.assets | Where-Object { $_.name -like "*.zip" } | Select-Object -First 1
|
|
if (-not $asset) { throw "No zip asset found in release $version" }
|
|
|
|
Invoke-WebRequest -Uri $asset.browser_download_url -OutFile finder.zip -UseBasicParsing
|
|
Expand-Archive -Path finder.zip -DestinationPath .\finder -Force
|
|
|
|
Write-Host "Zip contents:"
|
|
Get-ChildItem -Recurse .\finder | Select-Object FullName, Length
|
|
|
|
# The llccd zip uses "64bit/" and "32bit/" subfolder names.
|
|
# We pick the symbol-enabled exe (not the _nosymbol variant) from each arch folder.
|
|
function Get-Bin($filter, $archHint) {
|
|
$hits = Get-ChildItem -Recurse .\finder -Filter $filter |
|
|
Where-Object { $_.FullName -match $archHint } |
|
|
Where-Object { $_.Name -notmatch "nosymbol" }
|
|
return ($hits | Select-Object -First 1)
|
|
}
|
|
|
|
$x64exe = Get-Bin "RDPWrapOffsetFinder*.exe" "64bit"
|
|
$x64dll = Get-Bin "Zydis*.dll" "64bit"
|
|
$x86exe = Get-Bin "RDPWrapOffsetFinder*.exe" "32bit"
|
|
$x86dll = Get-Bin "Zydis*.dll" "32bit"
|
|
|
|
# Fall back to x64 if the release only ships one arch
|
|
if (-not $x86exe) { $x86exe = $x64exe }
|
|
if (-not $x86dll) { $x86dll = $x64dll }
|
|
if (-not $x64exe) { throw "Could not locate x64 exe" }
|
|
if (-not $x64dll) { throw "Could not locate x64 Zydis.dll" }
|
|
|
|
New-Item -ItemType Directory -Path tools\RDPWrapOffsetFinder\x64 -Force | Out-Null
|
|
New-Item -ItemType Directory -Path tools\RDPWrapOffsetFinder\x86 -Force | Out-Null
|
|
|
|
Copy-Item $x64exe.FullName tools\RDPWrapOffsetFinder\x64\RDPWrapOffsetFinder.exe -Force
|
|
Copy-Item $x64dll.FullName tools\RDPWrapOffsetFinder\x64\Zydis.dll -Force
|
|
Copy-Item $x86exe.FullName tools\RDPWrapOffsetFinder\x86\RDPWrapOffsetFinder.exe -Force
|
|
Copy-Item $x86dll.FullName tools\RDPWrapOffsetFinder\x86\Zydis.dll -Force
|
|
Set-Content -Path tools\RDPWrapOffsetFinder\VERSION -Value $version
|
|
|
|
Write-Host "Staged tools:"
|
|
Get-ChildItem -Recurse tools\RDPWrapOffsetFinder | Select-Object FullName, Length
|
|
|
|
echo "version=$version" >> $env:GITHUB_OUTPUT
|
|
|
|
- name: Commit and push to a new branch
|
|
id: push
|
|
shell: pwsh
|
|
run: |
|
|
$version = "${{ steps.fetch.outputs.version }}"
|
|
$branch = "chore/update-finder-tools-$version"
|
|
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
git checkout -b $branch
|
|
git add tools/RDPWrapOffsetFinder
|
|
if ((git diff --cached --name-only) -eq "") {
|
|
Write-Host "No changes - tools already up to date"
|
|
exit 0
|
|
}
|
|
git commit -m "chore: update RDPWrapOffsetFinder tools to $version"
|
|
git push origin $branch
|
|
echo "branch=$branch" >> $env:GITHUB_OUTPUT
|
|
|
|
- name: Create pull request
|
|
if: steps.push.outputs.branch != ''
|
|
shell: pwsh
|
|
run: |
|
|
$version = "${{ steps.fetch.outputs.version }}"
|
|
$branch = "${{ steps.push.outputs.branch }}"
|
|
gh pr create `
|
|
--title "chore: update RDPWrapOffsetFinder tools to $version" `
|
|
--body "Automated update of the committed RDPWrapOffsetFinder binaries in ``tools/RDPWrapOffsetFinder/`` to upstream release $version.
|
|
|
|
Triggered manually via the **Update RDPWrapOffsetFinder tools** workflow.
|
|
Merge to include the updated binaries in the next INI release." `
|
|
--base master `
|
|
--head $branch
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|