e1e0cb7ac7
- Implemented version checking system with update notifications - Integrated Git for fetching and downloading the latest version - Added statistics updates - Removed unused code across the project - Condensed project structure - Updated README - Cleaned up UI
174 lines
4.4 KiB
Markdown
174 lines
4.4 KiB
Markdown
# 🛡️ Loxide
|
|
|
|
Python/Rust/Oxide toolkit for secure, auditable, and automated Airlock agent and policy management. Designed for enterprise environments, it supports advanced policy workflows, device tracking, and terminal-based interaction.
|
|
|
|

|
|

|
|

|
|

|
|
|
|
---
|
|
|
|
## 🚀 Features
|
|
|
|
- 🔍 **Fuzzy Device Search**
|
|
Quickly locate devices using partial or approximate matches with wildcard support (`*`, `?`).
|
|
|
|
- 📦 **Batch Move Devices**
|
|
Move multiple devices between groups or policies easily with multi-select and file import.
|
|
|
|
- 🔄 **Toggle Enforcement/Audit Policies**
|
|
Seamlessly switch devices between enforcement and audit modes.
|
|
|
|
- 🕵️ **Device History Search**
|
|
Track agent executions with configurable date ranges (1-365 days) and CSV export.
|
|
|
|
- 🧰 **Prepare Policies for Enforcement**
|
|
Multi-step wizard to validate and stage policies before pushing to enforcement.
|
|
|
|
- 💤 **Find Quiet Hosts**
|
|
Identify inactive devices ready for enforcement using Rust-powered analysis.
|
|
|
|
- 🔐 **OTP Management**
|
|
Generate, revoke, and monitor one-time passwords for agents.
|
|
|
|
- 📋 **Server Log Viewer**
|
|
Real-time server activity monitoring with DataTable display.
|
|
|
|
- 🎛️ **Modern TUI**
|
|
Full keyboard navigation with Textual framework, toast notifications, and color-coded results.
|
|
|
|
---
|
|
|
|
## 🧭 Roadmap
|
|
|
|
|
|
- ✅ **Carbon Black-style Local Approval**
|
|
Enable local user approvals for policy exceptions and enforcement actions.
|
|
|
|
- 📊 **Audit Logging & Export**
|
|
Add detailed logging and export capabilities for compliance and analysis.
|
|
|
|
---
|
|
|
|
## 📦 Installation
|
|
|
|
### Prerequisites
|
|
- Python 3.10+
|
|
- Access to Airlock API
|
|
- Network access to private PyPI server
|
|
|
|
### Install Dependencies
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### Requirements
|
|
|
|
```
|
|
# Core TUI
|
|
textual==6.5.0
|
|
|
|
# API and data handling
|
|
requests==2.32.5
|
|
pandas==2.3.3
|
|
numpy==2.3.4
|
|
|
|
# Database
|
|
pymongo==4.15.3
|
|
|
|
# Security
|
|
cryptography==46.0.3
|
|
keyring==25.6.0
|
|
|
|
# Utilities
|
|
python-dotenv==1.2.1
|
|
tqdm==4.67.1
|
|
urllib3==2.5.0
|
|
pyperclip==1.11.0
|
|
|
|
# Private package
|
|
--extra-index-url https://git.racooncity.org/api/packages/brotoskyj/pypi/simple/
|
|
airlock_libs==5.2.1
|
|
```
|
|
|
|
See also: [airlock_libs](https://git.racooncity.org/brotoskyj/-/packages/pypi/airlock-libs/)
|
|
|
|
---
|
|
|
|
## 📖 Usage
|
|
|
|
```bash
|
|
python Loxide.py
|
|
```
|
|
|
|
### Keyboard Shortcuts
|
|
|
|
| Key | Action |
|
|
|-----|--------|
|
|
| `Tab` | Navigate between elements |
|
|
| `Enter` | Select/Confirm |
|
|
| `Escape` | Go back / Cancel |
|
|
| `←` `→` | Navigate tabs |
|
|
| `r` | Refresh (context-dependent) |
|
|
| `e` | Export to CSV |
|
|
| `q` | Quit application |
|
|
|
|
---
|
|
|
|
## 🏗️ Architecture
|
|
|
|
```
|
|
Loxide/
|
|
├── Loxide.py # Main entry point
|
|
├── API.py # AirlockAPIWrapper
|
|
├── setup.py # Initialization & logging
|
|
├── configmanager.py # Config management
|
|
│
|
|
├── models/ # Data models
|
|
├── services/ # Business logic
|
|
├── utils/ # Helper functions
|
|
│
|
|
└── TUI/
|
|
├── Screens/ # Workflow screens
|
|
│ ├── policyprepworkflowscreen.py
|
|
│ ├── quietagentworkflowscreen.py
|
|
│ ├── agentmoveoperations.py
|
|
│ ├── otprevokescreen.py
|
|
│ └── executionhistoryscreen.py
|
|
│
|
|
└── Widgets/ # Reusable components
|
|
├── policyselector.py
|
|
├── multiagentselector.py
|
|
└── serverlogwidget.py
|
|
```
|
|
|
|
---
|
|
|
|
## 👥 Authors
|
|
|
|
- **Brandon Wickline** - *Lead Python Developer*
|
|
- **James Brotosky** - *Lead Rust Developer*
|
|
|
|
---
|
|
|
|
## 📜 License
|
|
|
|
**Loxide** is licensed under the **GNU Affero General Public License v3.0**.
|
|
|
|
You may copy, distribute, and modify the software under the terms of the AGPL-3.0 license.
|
|
|
|
```
|
|
Copyright (C) 2025 James Brotosky, Brandon Wickline
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published
|
|
by the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
```
|
|
|
|
See the [LICENSE](LICENSE.md) file for full details, or visit
|
|
[https://www.gnu.org/licenses/agpl-3.0.html](https://www.gnu.org/licenses/agpl-3.0.html)
|
|
|