Security improvements: - Added sanitize_numeric_string to remove dangerous characters - Limited input string length to prevent DoS attacks (20 chars for numbers) - Added is_finite? checks to prevent infinity/NaN values - Validate coordinate ranges (lat: -90 to 90, lng: -180 to 180) - Added safe_parse_coordinate with proper validation - Updated to_float in EncodingUtils with security validations - Protected against integer overflow in coordinate conversions - Added sanitize_path_string for APRS path validation All coordinate inputs from users are now: 1. Sanitized to remove injection characters 2. Length-limited to prevent resource exhaustion 3. Validated for finite values (no infinity/NaN) 4. Checked against valid geographic ranges 5. Given safe fallback defaults 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
18 lines
1.2 KiB
Markdown
18 lines
1.2 KiB
Markdown
# Product Overview
|
|
|
|
Aprsme is an APRS (Automatic Packet Reporting System) web application that provides real-time tracking and visualization of amateur radio packets. The application connects to APRS-IS servers to receive and process amateur radio position reports, weather data, and other telemetry.
|
|
|
|
## Core Features
|
|
|
|
- **Real-time Map Visualization**: Interactive map showing APRS stations and their positions
|
|
- **Packet Processing**: Ingests and processes APRS packets from APRS-IS network
|
|
- **Station Information**: Detailed views of individual callsigns and their activity
|
|
- **Weather Data**: Weather station reporting and visualization
|
|
- **Bad Packet Analysis**: Monitoring and analysis of malformed packets
|
|
- **Multi-language Support**: Internationalization with English, Spanish, German, and French
|
|
- **User Authentication**: User accounts and session management
|
|
- **API Access**: RESTful API for programmatic access to data
|
|
|
|
## Technical Architecture
|
|
|
|
The application uses a GenStage-based packet processing pipeline to handle high-volume APRS data streams, with PostgreSQL for persistence and Phoenix LiveView for real-time web interfaces. Background job processing is handled by Oban for maintenance tasks like packet cleanup.
|