Replies: 5 comments
-
|
Has now been fixed with recent PR merges |
Beta Was this translation helpful? Give feedback.
-
|
Thanks, PR#121 does help improve the headless workflow, but I still don't see a way for it open projects from a server. The /server/ API endpoints allows for checking out a program, but that only appears to create a lock and not actually download any program files. Is this still unsupported, or am I missing something? |
Beta Was this translation helpful? Give feedback.
-
|
From my understanding this is still currently unsupported, i will look into it. |
Beta Was this translation helpful? Give feedback.
-
|
Confirming what @t0xk said: opening a server-checked-out program inside the headless container is currently not supported end-to-end. The The GUI plugin (FrontEnd mode) does support this end-to-end via I'll re-scope #33's promise of |
Beta Was this translation helpful? Give feedback.
-
|
Update for everyone landing here — partial progress in v5.10.x. After digging into this, the root cause is that What you need for the workflow to work todayThe local project mounted into the headless container must be a shared project bound to the same server repository. Two ways to create one: # Option A — Ghidra GUI, one-time setup
File → New Project → Shared Project → connect to ghidra://host:port → choose repo
# Save the resulting .gpr + project directory; mount both into the container
# Option B — analyzeHeadless from a workstation with Ghidra
analyzeHeadless /local/projectsdir MySharedProject \
-connect ghidra://host:port/repo-name -user <user>
# Then mount /local/projectsdir into the containerOnce that shared project is mounted at Step 3 is the critical sanity check that the v5.10.x changes now make easy. What v5.10.x just shipped to make the failure mode obviousTwo diagnostic improvements on main (live after next plugin redeploy):
{
"has_project": true,
"project_name": "diablo2",
"file_count": 577,
"program_count": 577,
"project_server_bound": true,
"server": "10.0.10.30:13100",
"server_repo": "diablo2"
}If
{
"success": false,
"error": "Program not found in project: /Vanilla/1.13d/D2Common.dll (project contains 0 program file(s))",
"requested_path": "/Vanilla/1.13d/D2Common.dll",
"diagnostics": {
"project_open": true,
"project_name": "fresh_local_project",
"project_server_bound": false,
"available_program_paths": [],
"suggestion": "Project is local-only (not bound to a Ghidra Server). If you intended a server-checked-out file, the local project must be a shared project — create one via Ghidra GUI or `analyzeHeadless -connect ghidra://host:port/repo` and mount it into this container, then reopen it via /open_project."
}
}When the project IS shared but the path is wrong, the failure includes a preview of what's actually in the project so you can correct the path without dumping the whole tree: {
"diagnostics": {
"project_server_bound": true,
"server": "10.0.10.30:13100",
"server_repo": "diablo2",
"available_program_paths": [
"/Vanilla/1.00/D2Client.dll",
"/Vanilla/1.00/D2Common.dll",
"/Vanilla/1.13d/D2Client.dll",
"/Vanilla/1.13d/D2Common.dll",
...
]
}
}Still on the deckThe real fix that closes #119 fully is an endpoint that creates a shared-bound local project on demand without requiring an out-of-container setup step. That's still tracked here — it needs @j4s0n @t0xk — if you redeploy v5.10.x after merge and run the four-step sequence above, |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I am trying to use the headless Docker container with a remote Ghidra server. The
/serverAPIs allow me to authenticate, view repos, view files in a repo, and check out files from the repo. However, I can't figure out a way to open a file once it has been checked out. I can see the files exist in the headless container's ghidra-data share. I've tried getting the/open_program,/open_project, and/load_program_from_projectto no avail.I noticed the notes in Issue #33 mention an initial intention to add a
POST /program/open-sharedfor this method, but it doesn't look like that was ever done. I think Issue #46 was related to a similar issue, but the OP never responded.Any advice on how to accomplish this?
Beta Was this translation helpful? Give feedback.
All reactions