|
Download docs/ARCHITECTURE.md from meccatronis/iosdiag: direct link, hf CLI and curl.
- Browser
- Download file 5.6 kB
-
https://huggingface.co/meccatronis/iosdiag/resolve/main/docs/ARCHITECTURE.md
- Command line
-
hf download hf://meccatronis/iosdiag/docs/ARCHITECTURE.md
-
curl -L -o ARCHITECTURE.md https://huggingface.co/meccatronis/iosdiag/resolve/main/docs/ARCHITECTURE.md
5.6 kB
| # iOSDiag Architecture | |
| ## Overview | |
| iOSDiag is built on a layered architecture that separates concerns and enables modularity, testability, and extensibility. | |
| ## Architecture Layers | |
| ### 1. Transport Layer | |
| **Location**: `src/transport/` | |
| Handles communication with iOS devices via different protocols: | |
| - **USBMUX**: Direct USB connection via usbmuxd daemon | |
| - **CoreDevice**: Network-based tunnel for newer iOS versions | |
| **Key Components**: | |
| - `Transport` trait: Abstract interface for device communication | |
| - `IoStream` trait: Abstract interface for data streams | |
| - Protocol-specific implementations | |
| ### 2. Security & Pairing Layer | |
| **Location**: `src/security/` | |
| Manages device pairing and cryptographic operations: | |
| - **Pairing**: Establish trust with devices | |
| - **Crypto**: RSA/ECDSA operations, certificate handling | |
| - **PairingStore**: Persistent storage of pair records | |
| **Key Components**: | |
| - `PairRecord`: Device pairing information | |
| - `PairingStore`: Pair record management | |
| - Cryptographic utilities | |
| ### 3. Service Layer | |
| **Location**: `src/services/` | |
| Implements iOS service clients: | |
| - **Lockdown**: Device configuration and service management | |
| - **DiagnosticsRelay**: Hardware diagnostics data | |
| - **CrashReport**: Crash and panic logs | |
| - **Syslog**: System logs | |
| **Key Components**: | |
| - Service client implementations | |
| - Message protocol handling | |
| - Response parsing | |
| ### 4. Collection Layer | |
| **Location**: `src/collectors/` | |
| Gathers evidence from devices: | |
| - **DeviceInfo**: Device identification | |
| - **Battery**: Battery health metrics | |
| - **Charging**: Power path information | |
| - **NAND**: Storage health | |
| - **Wi-Fi**: Radio diagnostics | |
| - **Thermal**: Temperature sensors | |
| - **Reboot**: Restart and panic events | |
| **Key Components**: | |
| - `Collector` trait: Evidence gathering interface | |
| - Collector implementations | |
| - `EvidenceItem`: Standardized evidence format | |
| ### 5. Normalization Layer | |
| **Location**: `src/normalize/` | |
| Converts raw evidence to canonical format: | |
| - **CanonicalReport**: Standardized data structure | |
| - **Adapters**: Format conversion utilities | |
| - **Versioning**: Schema versioning support | |
| **Key Components**: | |
| - `CanonicalReport`: Normalized data model | |
| - JSON schema definitions | |
| - Version management | |
| ### 6. Inference Layer | |
| **Location**: `src/inference/` | |
| Analyzes evidence and generates findings: | |
| - **InferenceEngine**: Rule evaluation | |
| - **RuleDSL**: Rule definition language | |
| - **Scoring**: Confidence calculation | |
| **Key Components**: | |
| - `InferenceEngine`: Main analysis engine | |
| - `DiagnosticRule`: Rule definitions | |
| - `Scorer`: Confidence scoring | |
| ### 7. Report Layer | |
| **Location**: `src/report/` | |
| Generates output reports: | |
| - **JSON**: Structured data export | |
| - **HTML**: Human-readable reports | |
| - **PDF**: Printable reports | |
| **Key Components**: | |
| - `Report`: Report data model | |
| - `ReportBuilder`: Builder pattern for reports | |
| - Format-specific generators | |
| ### 8. CLI Layer | |
| **Location**: `crates/iosdiag-cli/` | |
| Command-line interface: | |
| - Device discovery | |
| - Pairing management | |
| - Diagnostics collection | |
| - Report generation | |
| ## Data Flow | |
| ``` | |
| User Input (CLI) | |
| ↓ | |
| Transport Selection | |
| ↓ | |
| Device Discovery | |
| ↓ | |
| Pairing/Authentication | |
| ↓ | |
| Service Connection | |
| ↓ | |
| Evidence Collection | |
| ↓ | |
| Data Normalization | |
| ↓ | |
| Inference Analysis | |
| ↓ | |
| Report Generation | |
| ↓ | |
| Output (JSON/HTML/PDF) | |
| ``` | |
| ## Module Dependencies | |
| ``` | |
| CLI | |
| ├── Core Library | |
| │ ├── Transport | |
| │ │ └── Security | |
| │ ├── Services | |
| │ │ └── Security | |
| │ ├── Collectors | |
| │ │ └── Services | |
| │ ├── Normalize | |
| │ │ └── Collectors | |
| │ ├── Inference | |
| │ │ └── Normalize | |
| │ └── Report | |
| │ └── Normalize | |
| └── Knowledge Base | |
| └── Inference | |
| ``` | |
| ## Design Patterns | |
| ### 1. Trait-Based Abstraction | |
| - `Transport`, `IoStream`, `Collector` traits enable pluggable implementations | |
| - Facilitates testing with mock implementations | |
| ### 2. Builder Pattern | |
| - `ReportBuilder` for constructing complex reports | |
| - Fluent API for configuration | |
| ### 3. Strategy Pattern | |
| - Multiple transport implementations (USBMUX, CoreDevice) | |
| - Multiple report formats (JSON, HTML, PDF) | |
| ### 4. Factory Pattern | |
| - `create_transport()` for transport instantiation | |
| - `generate_report()` for report generation | |
| ## Error Handling | |
| Comprehensive error types: | |
| - `TransportError`: Communication failures | |
| - `ProtocolError`: Protocol violations | |
| - `SecurityError`: Authentication/pairing issues | |
| - `ServiceError`: Service-level errors | |
| - `CollectorError`: Data collection failures | |
| - `InferenceError`: Analysis failures | |
| ## Concurrency | |
| - **Async/Await**: Tokio-based async runtime | |
| - **Send + Sync**: Thread-safe components | |
| - **Mutex**: Protected shared state | |
| ## Testing Strategy | |
| - **Unit Tests**: Individual module testing | |
| - **Integration Tests**: Multi-module workflows | |
| - **Fixtures**: Mock data and responses | |
| - **Smoke Tests**: End-to-end scenarios | |
| ## Extension Points | |
| 1. **New Collectors**: Implement `Collector` trait | |
| 2. **New Services**: Add service client implementations | |
| 3. **New Rules**: Add YAML rules to knowledge base | |
| 4. **New Transports**: Implement `Transport` trait | |
| 5. **New Report Formats**: Add format generators | |
| ## Performance Considerations | |
| - Lazy loading of collectors | |
| - Parallel evidence collection | |
| - Streaming report generation | |
| - Efficient plist parsing | |
| - Connection pooling for services | |
| ## Security Considerations | |
| - No private key exposure | |
| - Secure pair record storage | |
| - TLS for network communication | |
| - Input validation | |
| - Cryptographic verification | |
| --- | |
| **Last Updated**: 2026-02-10 | |
| **Version**: 1.0.0 | |