feat: add version updater and statistics enhancements (fixes #29)
- 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
This commit is contained in:
+130
-16
@@ -1,39 +1,47 @@
|
||||
|
||||
# 🛡️ 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.
|
||||
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.
|
||||
Quickly locate devices using partial or approximate matches with wildcard support (`*`, `?`).
|
||||
|
||||
- 📦 **Batch Move Devices**
|
||||
Move multiple devices between groups or policies easily.
|
||||
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.
|
||||
- 🕵️ **Device History Search**
|
||||
Track agent executions with configurable date ranges (1-365 days) and CSV export.
|
||||
|
||||
- 🧰 **Prepare Policies for Enforcement**
|
||||
Validate and stage policies before pushing them to enforcement.
|
||||
Multi-step wizard to validate and stage policies before pushing to enforcement.
|
||||
|
||||
- 💤 **Find Quiet Hosts**
|
||||
Identify devices ready for enforcement.
|
||||
Identify inactive devices ready for enforcement using Rust-powered analysis.
|
||||
|
||||
- 🎛️ **TUI**
|
||||
Navigate with arrow keys and F-key shortcuts using a custom ANSI-colored terminal UI.
|
||||
- 🔐 **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
|
||||
|
||||
- ⚙️ **Rust-based Async API Calls**
|
||||
Improve performance and concurrency with a Rust-powered backend.
|
||||
|
||||
- ✅ **Carbon Black-style Local Approval**
|
||||
Enable local user approvals for policy exceptions and enforcement actions.
|
||||
@@ -43,9 +51,105 @@ Python/Rust/Oxide toolkit for secure, auditable, and automated airlock agent and
|
||||
|
||||
---
|
||||
|
||||
## 🧑💻 Requirements
|
||||
## 📦 Installation
|
||||
|
||||
[airlock_libs](https://git.racooncity.org/brotoskyj/-/packages/pypi/airlock-libs/)
|
||||
### 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*
|
||||
|
||||
---
|
||||
|
||||
@@ -55,5 +159,15 @@ Python/Rust/Oxide toolkit for secure, auditable, and automated airlock agent and
|
||||
|
||||
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/license/agpl-3.0.html](https://www.gnu.org/license/agpl-3.0.html)
|
||||
[https://www.gnu.org/licenses/agpl-3.0.html](https://www.gnu.org/licenses/agpl-3.0.html)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user