mirror of https://github.com/stascorp/rdpwrap
feat: commit RDPWrapOffsetFinder binaries to tools/ and use them in CI instead of downloading at build time
parent
85b9a050ed
commit
b9ed7a7b05
@ -0,0 +1,111 @@
|
||||
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
|
||||
Expand-Archive -Path finder.zip -DestinationPath .\finder -Force
|
||||
|
||||
Write-Host "Zip contents:"
|
||||
Get-ChildItem -Recurse .\finder | Select-Object FullName
|
||||
|
||||
function Get-Bin($pattern, $hint) {
|
||||
$hits = Get-ChildItem -Recurse -Filter $pattern .\finder
|
||||
$m = $hits | Where-Object { $_.FullName -match $hint } | Select-Object -First 1
|
||||
if (-not $m) { $m = $hits | Select-Object -First 1 }
|
||||
return $m
|
||||
}
|
||||
|
||||
$x64exe = Get-Bin "RDPWrapOffsetFinder*.exe" "x64"
|
||||
$x86exe = Get-Bin "RDPWrapOffsetFinder*.exe" "x86|Win32|32"
|
||||
$x64dll = Get-Bin "Zydis*.dll" "x64"
|
||||
$x86dll = Get-Bin "Zydis*.dll" "x86|Win32|32"
|
||||
|
||||
if (-not $x86exe) { $x86exe = $x64exe }
|
||||
if (-not $x86dll) { $x86dll = $x64dll }
|
||||
if (-not $x64exe) { throw "Could not locate exe" }
|
||||
if (-not $x64dll) { throw "Could not locate 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
|
||||
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
|
||||
git diff --cached --quiet && { 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
|
||||
id: push
|
||||
|
||||
- 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 }}
|
||||
@ -0,0 +1,35 @@
|
||||
# RDPWrapOffsetFinder
|
||||
|
||||
Pre-built binaries of [llccd/RDPWrapOffsetFinder](https://github.com/llccd/RDPWrapOffsetFinder),
|
||||
committed here so that the CI pipeline and releases are self-contained and
|
||||
reproducible without depending on an external release being available at build time.
|
||||
|
||||
## Contents
|
||||
|
||||
```
|
||||
x64/
|
||||
RDPWrapOffsetFinder.exe # x86-64 build
|
||||
Zydis.dll # required runtime (x64)
|
||||
x86/
|
||||
RDPWrapOffsetFinder.exe # x86 32-bit build
|
||||
Zydis.dll # required runtime (x86)
|
||||
VERSION # version tag of the upstream release
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Extract the appropriate arch folder and run:
|
||||
|
||||
```
|
||||
.\RDPWrapOffsetFinder.exe C:\Windows\System32\termsrv.dll
|
||||
```
|
||||
|
||||
The output `[10.0.xxxxx.xxxxx]` section can be appended to `res/rdpwrap.ini`
|
||||
and submitted as a pull request.
|
||||
|
||||
## Updating
|
||||
|
||||
To update the binaries when llccd releases a new version, trigger the
|
||||
`Update RDPWrapOffsetFinder tools` workflow from the Actions tab
|
||||
(`.github/workflows/update-finder-tools.yml`).
|
||||
It will download the latest release, update this folder, and open a pull request.
|
||||
Loading…
Reference in new issue