diff --git a/session-logs/2025-12-29-session.md b/session-logs/2025-12-29-session.md new file mode 100644 index 0000000..ff437c4 --- /dev/null +++ b/session-logs/2025-12-29-session.md @@ -0,0 +1,134 @@ +# GuruConnect Session Log - 2025-12-29 + +## Session Summary + +### What Was Accomplished +1. **Cleaned up stale persistent sessions** - Deleted 12 offline machines from PostgreSQL database +2. **Added machine deletion API with uninstall support** - Implemented full machine management endpoints +3. **Added AdminCommand protobuf message** - For server-to-agent commands (uninstall, restart, update) +4. **Implemented machine history export** - Sessions and events can be exported before deletion + +### Key Decisions +- Machine deletion has two modes: + - **Delete Only** (`DELETE /api/machines/:agent_id`) - Removes from DB, allows re-registration + - **Delete with Uninstall** (`DELETE /api/machines/:agent_id?uninstall=true`) - Sends uninstall command to agent if online +- History export available via `?export=true` query param or separate endpoint +- AdminCommand message types: ADMIN_UNINSTALL, ADMIN_RESTART, ADMIN_UPDATE + +### Problems Encountered +- Server endpoint returning 404 - new binary may not have been properly deployed +- Cross-compilation issues with ring crate for Windows MSVC on Linux + +--- + +## Credentials + +### GuruConnect Database (PostgreSQL) +- **Host:** 172.16.3.30 (localhost from server) +- **Database:** guruconnect +- **User:** guruconnect +- **Password:** gc_a7f82d1e4b9c3f60 +- **DATABASE_URL:** `postgres://guruconnect:gc_a7f82d1e4b9c3f60@localhost:5432/guruconnect` + +### Build Server SSH +- **Host:** 172.16.3.30 +- **User:** guru +- **Password:** Gptf*77ttb123!@#-rmm +- **Sudo Password:** Gptf*77ttb123!@#-rmm + +--- + +## Infrastructure + +### GuruConnect Server +- **Host:** 172.16.3.30 +- **Port:** 3002 +- **Binary:** `/home/guru/guru-connect/target/release/guruconnect-server` +- **Service:** guruconnect.service (systemd) +- **Log:** ~/gc-server.log + +### API Endpoints (NEW) +``` +GET /api/machines - List all persistent machines +GET /api/machines/:agent_id - Get machine info +GET /api/machines/:agent_id/history - Get full session/event history +DELETE /api/machines/:agent_id - Delete machine + Query params: + ?uninstall=true - Send uninstall command to agent + ?export=true - Include history in response +``` + +--- + +## Files Modified + +### Protobuf Schema +- `proto/guruconnect.proto` - Added AdminCommand message and AdminCommandType enum + +### Server Changes +- `server/src/main.rs` - Added machine API routes and handlers +- `server/src/api/mod.rs` - Added MachineInfo, MachineHistory, DeleteMachineParams types +- `server/src/db/machines.rs` - Existing delete_machine function used +- `server/src/db/sessions.rs` - Added get_sessions_for_machine() +- `server/src/db/events.rs` - Added get_events_for_machine() +- `server/src/session/mod.rs` - Added send_admin_command() and remove_agent() methods + +### Agent Changes +- `agent/src/session/mod.rs` - Added AdminCommand message handler +- `agent/src/main.rs` - Added ADMIN_UNINSTALL and ADMIN_RESTART error handlers + +--- + +## Important Commands + +### Query/Delete Machines from PostgreSQL +```bash +# Query all machines +ssh guru@172.16.3.30 'PGPASSWORD=gc_a7f82d1e4b9c3f60 psql -h localhost -U guruconnect -d guruconnect -c "SELECT agent_id, hostname, status FROM connect_machines;"' + +# Delete all offline machines +ssh guru@172.16.3.30 'PGPASSWORD=gc_a7f82d1e4b9c3f60 psql -h localhost -U guruconnect -d guruconnect -c "DELETE FROM connect_machines WHERE status = '\''offline'\'';"' +``` + +### Build Server +```bash +# Build for Linux +ssh guru@172.16.3.30 'cd ~/guru-connect && source ~/.cargo/env && cargo build -p guruconnect-server --release --target x86_64-unknown-linux-gnu' + +# Restart server +ssh guru@172.16.3.30 'pkill -f guruconnect-server; cd ~/guru-connect/server && DATABASE_URL="postgres://guruconnect:gc_a7f82d1e4b9c3f60@localhost:5432/guruconnect" nohup ~/guru-connect/target/release/guruconnect-server > ~/gc-server.log 2>&1 &' +``` + +--- + +## Pending Tasks + +1. **Debug 404 on /api/machines endpoint** - The new routes aren't being recognized + - May need to verify the correct binary is being executed + - Check if old process is still running on port 3002 + +2. **Test machine deletion flow end-to-end** + - Connect an agent + - Delete with uninstall flag + - Verify agent receives command and uninstalls + +3. **Build Windows agent binary** - Cross-compilation needs MSVC tools or use Windows build + +--- + +## Git Status + +Committed and pushed: +``` +commit dc7b742: Add machine deletion API with uninstall command support +- 8 files changed, 380 insertions(+), 6 deletions(-) +``` + +--- + +## Next Steps for Future Sessions + +1. Investigate why `/api/machines` returns 404 - likely old binary running +2. Use systemd properly for server management (need root access) +3. Build and test Windows agent with uninstall command handling +4. Add dashboard UI for machine management (list, delete with options)