diff --git a/.gitignore b/.gitignore index a39efc4..2ca20eb 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ TODO-IMPROVEMENTS.md upx-reference.txt Overlord-Desktop-Tauri\* plugin-clipreplace -claude.md # Node/Bun node_modules/ @@ -47,10 +46,16 @@ dist-clients/* # Plugins Overlord-Server/plugins/*.zip Overlord-Server/plugins/.plugin-state.json -plugin-sample-go/*.wasm -plugin-sample-go/*.zip -plugin-sample-go/*.h -plugin-hrdp/* +plugins/sample-go/*.wasm +plugins/sample-go/*.zip +plugins/sample-go/*.h +plugins/hrdp/* +plugins/netscan/ +plugins/sysprofile/ +plugins/build-netscan.bat +plugins/build-netscan.sh +plugins/build-sysprofile.bat +plugins/build-sysprofile.sh # Runtime data Overlord-Server/data/ diff --git a/go.work b/go.work index 37e9e63..d70ec44 100644 --- a/go.work +++ b/go.work @@ -2,5 +2,5 @@ go 1.26.0 use ( ./Overlord-Client - ./plugin-sample-go/native + ./plugins/sample-go/native ) diff --git a/PLUGINS.md b/plugins/PLUGINS.md similarity index 99% rename from PLUGINS.md rename to plugins/PLUGINS.md index 523e6ef..9710b61 100644 --- a/PLUGINS.md +++ b/plugins/PLUGINS.md @@ -164,13 +164,13 @@ The `hostInfo` buffer passed to `PluginOnLoad` is JSON: ## 3) Sample plugins by language -### Go (`plugin-sample-go/`) +### Go (`sample-go/`) Go plugins use `-buildmode=c-shared` with platform-specific export wrappers. **Project structure:** ``` -plugin-sample-go/native/ +sample-go/native/ ├─ main.go (shared core logic) ├─ exports_unix.go (exports for Linux/macOS) ├─ exports_windows.go (exports for Windows) @@ -213,13 +213,13 @@ CGO_ENABLED=1 go build -buildmode=c-shared -o sample-windows-amd64.dll ./native --- -### C (`plugin-sample-c/`) +### C (`sample-c/`) Pure C plugins are the simplest — no runtime, no GC, fully unloadable. **Project structure:** ``` -plugin-sample-c/ +sample-c/ ├─ native/plugin.c ├─ sample-c.html ├─ sample-c.css @@ -278,13 +278,13 @@ gcc -shared -fPIC -O2 -o sample-c-linux-amd64.so plugin.c --- -### C++ (`plugin-sample-cpp/`) +### C++ (`sample-cpp/`) C++ plugins can use the full standard library (STL containers, `std::mutex`, `std::string`, etc.) while still being fully unloadable. **Project structure:** ``` -plugin-sample-cpp/ +sample-cpp/ ├─ native/plugin.cpp ├─ sample-cpp.html ├─ sample-cpp.css @@ -310,13 +310,13 @@ g++ -shared -fPIC -O2 -o sample-cpp-linux-amd64.so plugin.cpp --- -### Rust (`plugin-sample-rust/`) +### Rust (`sample-rust/`) Rust plugins compile as `cdylib` crates. Exports use `#[no_mangle]` and `extern "C"`. **Project structure:** ``` -plugin-sample-rust/ +sample-rust/ ├─ native/ │ ├─ Cargo.toml │ └─ src/lib.rs @@ -819,7 +819,7 @@ The fingerprint (64-char hex SHA-256) is printed to the console. Add it to your ```bash cd Overlord-Server -bun run scripts/plugin-sign.ts --key my-signing-key.key ../plugin-sample-go/sample.zip +bun run scripts/plugin-sign.ts --key my-signing-key.key ../plugins/sample-go/sample.zip ``` This injects a `signature.json` into the ZIP containing the Ed25519 public key and signature. diff --git a/build-plugin-c.bat b/plugins/build-plugin-c.bat similarity index 98% rename from build-plugin-c.bat rename to plugins/build-plugin-c.bat index 422e8aa..12e74bc 100644 --- a/build-plugin-c.bat +++ b/plugins/build-plugin-c.bat @@ -2,7 +2,7 @@ setlocal enabledelayedexpansion set "ROOT=%~dp0" -set "PLUGIN_DIR=%ROOT%plugin-sample-c" +set "PLUGIN_DIR=%ROOT%sample-c" if not "%~1"=="" set "PLUGIN_DIR=%~1" set "NATIVE_DIR=%PLUGIN_DIR%\native" diff --git a/build-plugin-c.sh b/plugins/build-plugin-c.sh similarity index 98% rename from build-plugin-c.sh rename to plugins/build-plugin-c.sh index d86751e..43326df 100644 --- a/build-plugin-c.sh +++ b/plugins/build-plugin-c.sh @@ -2,7 +2,7 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -PLUGIN_DIR="${1:-${ROOT_DIR}/plugin-sample-c}" +PLUGIN_DIR="${1:-${ROOT_DIR}/sample-c}" NATIVE_DIR="${PLUGIN_DIR}/native" PLUGIN_NAME="sample-c" ZIP_OUT="${PLUGIN_DIR}/${PLUGIN_NAME}.zip" diff --git a/build-plugin-cpp.bat b/plugins/build-plugin-cpp.bat similarity index 98% rename from build-plugin-cpp.bat rename to plugins/build-plugin-cpp.bat index a65115a..2d9ee68 100644 --- a/build-plugin-cpp.bat +++ b/plugins/build-plugin-cpp.bat @@ -2,7 +2,7 @@ setlocal enabledelayedexpansion set "ROOT=%~dp0" -set "PLUGIN_DIR=%ROOT%plugin-sample-cpp" +set "PLUGIN_DIR=%ROOT%sample-cpp" if not "%~1"=="" set "PLUGIN_DIR=%~1" set "NATIVE_DIR=%PLUGIN_DIR%\native" diff --git a/build-plugin-cpp.sh b/plugins/build-plugin-cpp.sh similarity index 98% rename from build-plugin-cpp.sh rename to plugins/build-plugin-cpp.sh index 2f10af3..c84f101 100644 --- a/build-plugin-cpp.sh +++ b/plugins/build-plugin-cpp.sh @@ -2,7 +2,7 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -PLUGIN_DIR="${1:-${ROOT_DIR}/plugin-sample-cpp}" +PLUGIN_DIR="${1:-${ROOT_DIR}/sample-cpp}" NATIVE_DIR="${PLUGIN_DIR}/native" PLUGIN_NAME="sample-cpp" ZIP_OUT="${PLUGIN_DIR}/${PLUGIN_NAME}.zip" diff --git a/build-plugin-rust.bat b/plugins/build-plugin-rust.bat similarity index 98% rename from build-plugin-rust.bat rename to plugins/build-plugin-rust.bat index 68c04be..0896c0f 100644 --- a/build-plugin-rust.bat +++ b/plugins/build-plugin-rust.bat @@ -2,7 +2,7 @@ setlocal enabledelayedexpansion set "ROOT=%~dp0" -set "PLUGIN_DIR=%ROOT%plugin-sample-rust" +set "PLUGIN_DIR=%ROOT%sample-rust" if not "%~1"=="" set "PLUGIN_DIR=%~1" set "NATIVE_DIR=%PLUGIN_DIR%\native" diff --git a/build-plugin-rust.sh b/plugins/build-plugin-rust.sh similarity index 97% rename from build-plugin-rust.sh rename to plugins/build-plugin-rust.sh index b66931b..c22d254 100644 --- a/build-plugin-rust.sh +++ b/plugins/build-plugin-rust.sh @@ -2,7 +2,7 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -PLUGIN_DIR="${1:-${ROOT_DIR}/plugin-sample-rust}" +PLUGIN_DIR="${1:-${ROOT_DIR}/sample-rust}" NATIVE_DIR="${PLUGIN_DIR}/native" PLUGIN_NAME="sample-rust" ZIP_OUT="${PLUGIN_DIR}/${PLUGIN_NAME}.zip" diff --git a/build-plugin.bat b/plugins/build-plugin.bat similarity index 98% rename from build-plugin.bat rename to plugins/build-plugin.bat index b5df345..fa27c90 100644 --- a/build-plugin.bat +++ b/plugins/build-plugin.bat @@ -2,7 +2,7 @@ setlocal enabledelayedexpansion set "ROOT=%~dp0" -set "PLUGIN_DIR=%ROOT%plugin-sample-go" +set "PLUGIN_DIR=%ROOT%sample-go" if not "%~1"=="" set "PLUGIN_DIR=%~1" set "NATIVE_DIR=%PLUGIN_DIR%\native" diff --git a/build-plugin.sh b/plugins/build-plugin.sh similarity index 97% rename from build-plugin.sh rename to plugins/build-plugin.sh index 7cdec1f..20f0ae8 100644 --- a/build-plugin.sh +++ b/plugins/build-plugin.sh @@ -2,7 +2,7 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -PLUGIN_DIR="${1:-${ROOT_DIR}/plugin-sample-go}" +PLUGIN_DIR="${1:-${ROOT_DIR}/sample-go}" NATIVE_DIR="${PLUGIN_DIR}/native" PLUGIN_NAME="sample" ZIP_OUT="${PLUGIN_DIR}/${PLUGIN_NAME}.zip" diff --git a/plugin-sample-c/native/plugin.c b/plugins/sample-c/native/plugin.c similarity index 100% rename from plugin-sample-c/native/plugin.c rename to plugins/sample-c/native/plugin.c diff --git a/plugin-sample-c/sample-c.css b/plugins/sample-c/sample-c.css similarity index 100% rename from plugin-sample-c/sample-c.css rename to plugins/sample-c/sample-c.css diff --git a/plugin-sample-c/sample-c.html b/plugins/sample-c/sample-c.html similarity index 100% rename from plugin-sample-c/sample-c.html rename to plugins/sample-c/sample-c.html diff --git a/plugin-sample-c/sample-c.js b/plugins/sample-c/sample-c.js similarity index 100% rename from plugin-sample-c/sample-c.js rename to plugins/sample-c/sample-c.js diff --git a/plugin-sample-cpp/native/plugin.cpp b/plugins/sample-cpp/native/plugin.cpp similarity index 100% rename from plugin-sample-cpp/native/plugin.cpp rename to plugins/sample-cpp/native/plugin.cpp diff --git a/plugin-sample-cpp/sample-cpp.css b/plugins/sample-cpp/sample-cpp.css similarity index 100% rename from plugin-sample-cpp/sample-cpp.css rename to plugins/sample-cpp/sample-cpp.css diff --git a/plugin-sample-cpp/sample-cpp.html b/plugins/sample-cpp/sample-cpp.html similarity index 100% rename from plugin-sample-cpp/sample-cpp.html rename to plugins/sample-cpp/sample-cpp.html diff --git a/plugin-sample-cpp/sample-cpp.js b/plugins/sample-cpp/sample-cpp.js similarity index 100% rename from plugin-sample-cpp/sample-cpp.js rename to plugins/sample-cpp/sample-cpp.js diff --git a/plugin-sample-go/README.md b/plugins/sample-go/README.md similarity index 89% rename from plugin-sample-go/README.md rename to plugins/sample-go/README.md index 3d381ed..70a2643 100644 --- a/plugin-sample-go/README.md +++ b/plugins/sample-go/README.md @@ -1,6 +1,6 @@ # Sample Go Plugin (sample) -This sample lives at the repo root and builds a native Go plugin. +This sample lives in the `plugins/` directory and builds a native Go plugin. ## Files to include in the plugin zip @@ -43,7 +43,7 @@ Click "Send event" and the plugin will echo back to the server logs. The plugin receives host metadata in the `init` payload. The sample plugin shows how to detect the host OS and branch logic (see -`plugin-sample-go/native/main.go`). For example: +`sample-go/native/main.go`). For example: - If `host.os == "windows"`, you can safely run Windows-only flows (e.g., WinAPI-backed behavior). - Otherwise, skip or provide a fallback path. diff --git a/plugin-sample-go/native/exports_unix.go b/plugins/sample-go/native/exports_unix.go similarity index 100% rename from plugin-sample-go/native/exports_unix.go rename to plugins/sample-go/native/exports_unix.go diff --git a/plugin-sample-go/native/exports_windows.go b/plugins/sample-go/native/exports_windows.go similarity index 100% rename from plugin-sample-go/native/exports_windows.go rename to plugins/sample-go/native/exports_windows.go diff --git a/plugin-sample-go/native/go.mod b/plugins/sample-go/native/go.mod similarity index 100% rename from plugin-sample-go/native/go.mod rename to plugins/sample-go/native/go.mod diff --git a/plugin-sample-go/native/main.go b/plugins/sample-go/native/main.go similarity index 100% rename from plugin-sample-go/native/main.go rename to plugins/sample-go/native/main.go diff --git a/plugin-sample-go/native/sample-plugin.h b/plugins/sample-go/native/sample-plugin.h similarity index 100% rename from plugin-sample-go/native/sample-plugin.h rename to plugins/sample-go/native/sample-plugin.h diff --git a/plugin-sample-go/sample.css b/plugins/sample-go/sample.css similarity index 100% rename from plugin-sample-go/sample.css rename to plugins/sample-go/sample.css diff --git a/plugin-sample-go/sample.html b/plugins/sample-go/sample.html similarity index 100% rename from plugin-sample-go/sample.html rename to plugins/sample-go/sample.html diff --git a/plugin-sample-go/sample.js b/plugins/sample-go/sample.js similarity index 100% rename from plugin-sample-go/sample.js rename to plugins/sample-go/sample.js diff --git a/plugins/sample-rust/native/Cargo.lock b/plugins/sample-rust/native/Cargo.lock new file mode 100644 index 0000000..cd2a1be --- /dev/null +++ b/plugins/sample-rust/native/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "sample-rust" +version = "0.1.0" diff --git a/plugin-sample-rust/native/Cargo.toml b/plugins/sample-rust/native/Cargo.toml similarity index 100% rename from plugin-sample-rust/native/Cargo.toml rename to plugins/sample-rust/native/Cargo.toml diff --git a/plugin-sample-rust/native/src/lib.rs b/plugins/sample-rust/native/src/lib.rs similarity index 100% rename from plugin-sample-rust/native/src/lib.rs rename to plugins/sample-rust/native/src/lib.rs diff --git a/plugins/sample-rust/native/target/.rustc_info.json b/plugins/sample-rust/native/target/.rustc_info.json new file mode 100644 index 0000000..fcbbdfa --- /dev/null +++ b/plugins/sample-rust/native/target/.rustc_info.json @@ -0,0 +1 @@ +{"rustc_fingerprint":2568544898921049753,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.94.0 (4a4ef493e 2026-03-02)\nbinary: rustc\ncommit-hash: 4a4ef493e3a1488c6e321570238084b38948f6db\ncommit-date: 2026-03-02\nhost: x86_64-pc-windows-msvc\nrelease: 1.94.0\nLLVM version: 21.1.8\n","stderr":""},"12004014463585500860":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\this1\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\this1\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/plugin-sample-rust/sample-rust.css b/plugins/sample-rust/sample-rust.css similarity index 100% rename from plugin-sample-rust/sample-rust.css rename to plugins/sample-rust/sample-rust.css diff --git a/plugin-sample-rust/sample-rust.html b/plugins/sample-rust/sample-rust.html similarity index 100% rename from plugin-sample-rust/sample-rust.html rename to plugins/sample-rust/sample-rust.html diff --git a/plugin-sample-rust/sample-rust.js b/plugins/sample-rust/sample-rust.js similarity index 100% rename from plugin-sample-rust/sample-rust.js rename to plugins/sample-rust/sample-rust.js diff --git a/plugins/sample-rust/sample-rust.zip b/plugins/sample-rust/sample-rust.zip new file mode 100644 index 0000000..91480b0 Binary files /dev/null and b/plugins/sample-rust/sample-rust.zip differ