1
0
Fork 1
mirror of https://github.com/thatmattlove/hyperglass.git synced 2026-04-17 21:38:27 +00:00
Commit graph

1757 commits

Author SHA1 Message Date
Carlos Santos
d1e42f554e
Merge pull request #2 from WilhelmZA/structured
Structured
2025-09-26 12:10:37 -03:00
Wilhelm Schonfeldt
c394d93326 Fix: Export BGPRoute class in data models __init__.py
- Add BGPRoute import and export in hyperglass.models.data.__init__.py
- This allows BGP parsers to properly import BGPRoute for validation
- Resolves ImportError when starting hyperglass application
2025-09-26 16:59:10 +02:00
Wilhelm Schonfeldt
6af39fb5be Fix: Standardize BGP parsers to use BGPRoute objects and harmonize variable naming
- Add BGPRoute import to Juniper, Arista, and FRR parsers
- Change all parsers to instantiate BGPRoute objects instead of raw dictionaries
- Harmonize variable naming across all BGP parsers:
  - Use 'route_data' for dictionary variable
  - Use 'routes' for output list
  - Use 'route' for loop variable
- Ensure consistent validation behavior across MikroTik, Huawei, Juniper, Arista, and FRR
- All parsers now properly invoke BGP table class validation
2025-09-26 16:53:36 +02:00
Wilhelm Schonfeldt
d025630b83 Fix: Make Huawei BGP parser conform to MikroTik approach
- Remove custom __init__ from HuaweiBGPRouteTable class
- Use standard BGPRouteTable inheritance like MikroTik does
- Add BGPRoute import and instantiate BGPRoute objects in bgp_table()
- Enable proper Pydantic validation for both table and routes
- Ensure consistent behavior across all BGP parsers
- Update .gitignore to exclude dev-build.sh and dev-docker/
2025-09-26 16:37:51 +02:00
Carlos Santos
29ec2b8f24
Merge branch 'thatmattlove:main' into main 2025-09-26 09:42:16 -03:00
Carlos Santos
6d600ab31b
Merge pull request #1 from WilhelmZA/structured
Added broader support for external RPKI validation.
2025-09-26 09:32:00 -03:00
Wilhelm Schonfeldt
4414d2ec03 fix(ui): improve BGP table field display formatting
- Fix MED field showing N/A when value is 0 (now correctly shows 0)
- Hide Originator field when empty instead of showing N/A
- Hide Age field when not available instead of showing N/A
- Add HideableField component for fields that should be hidden when empty
- Update string output formatting to skip hidden fields in text export

Resolves display issues where valid zero values and unavailable fields
were showing as N/A instead of proper formatting or being hidden.
2025-09-26 13:30:44 +02:00
Wilhelm Schonfeldt
716687db63 fix(plugins): improve MikroTik traceroute output deduplication
- Add IPv6 address pattern matching alongside IPv4
- Extract SENT count from traceroute lines to prioritize complete data
- Keep lines with highest SENT count (final results) instead of first occurrence
- Maintain original hop order while using best data for each IP
- Prefer non-timeout results when SENT counts are equal

Fixes issues where IPv4 showed early results (SENT=1) instead of final (SENT=3)
and IPv6 showed all intermediate steps instead of final consolidated results.
2025-09-26 13:03:23 +02:00
Wilhelm Schonfeldt
5ace4fdf97 fix(plugins): improve type checking for structured output
- Split type checking into two separate conditions for clarity
- Add early return when output contains non-string objects
- Ensure structured output like MikrotikBGPRouteTable passes through unchanged
- Prevent AttributeError on .strip() for tuple containing structured data

Resolves remaining crashes when processing already-structured BGP route data.
2025-09-26 12:45:10 +02:00
Wilhelm Schonfeldt
10ab164ee6 fix(plugins): handle non-string output in MikroTik garbage plugin
- Add type checking to handle already-processed structured output
- Skip processing when output is not raw strings (e.g., BGPRouteTable objects)
- Prevents AttributeError when trying to call .strip() on tuple/structured data

Fixes crash when MikroTik garbage plugin runs after structured parsing plugins.
2025-09-26 12:40:55 +02:00
Wilhelm Schonfeldt
120af851d1 fix(plugins): improve MikroTik output cleaning for all directives
- Change MikrotikGarbageOutput to apply to ALL MikroTik platform commands using common=True
- Add specialized traceroute output cleaning to handle progressive output and paging prompts
- Remove interactive paging prompts (-- [Q quit|C-z pause])
- Deduplicate traceroute hops to show only final results
- Clean up command echoes and empty progress lines
- Apply to custom directives automatically without manual configuration

Fixes messy traceroute output with repeated progress updates and interactive prompts.
2025-09-26 12:30:27 +02:00
Wilhelm Schonfeldt
8f7fcac4b1 docs: Add comprehensive configuration documentation and user guide
- Add complete configuration reference (complete-config.mdx) with detailed parameter documentation, examples, and descriptions for all config.yaml options
- Add user guide (user-guide.mdx) explaining hostname resolution, 'My IP' feature, query types, and troubleshooting for end users
- Add quick-start configuration examples (quick-start.mdx) with 8 real-world scenarios: minimal, corporate, privacy-focused, high-performance, ISP, enterprise, development, and monitoring setups
- Update navigation structure (_meta.tsx files) to integrate new documentation sections
- Provide comprehensive coverage of DNS-over-HTTPS hostname resolution, myip.wtf IP detection, web UI customization, logging/webhooks, structured output, and theme configuration
- Include practical examples, use cases, troubleshooting tips, and best practices throughout

This addresses documentation gaps by providing both technical reference material for administrators and user-focused guidance for end users, with extensive real-world configuration examples.
2025-09-26 12:12:27 +02:00
Wilhelm Schonfeldt
7a6388bd39 fix: Improve handling of missing data fields in MikroTik BGP parser
- Update MikroTik parser to return -1 for unavailable age data instead of "0"
- Change age property return type from string to int for consistency
- Enhance frontend Age component to display "N/A" when age is -1
- Improve MonoField component to handle empty/undefined values gracefully
- Add appropriate tooltips and styling for missing data indicators

This addresses the issue where MikroTik devices don't provide route age
and source RID information, ensuring the UI displays user-friendly
indicators instead of potentially misleading placeholder values.
2025-09-26 11:55:51 +02:00
Wilhelm Schonfeldt
b2a05994aa fix: Improve error message for community name validation and clean up test formatting 2025-09-26 11:49:27 +02:00
Wilhelm Schonfeldt
eabd98b606 feat: Add BGP community friendly names and enhance RPKI configuration
- Add new 'name' mode for BGP communities to append friendly names
  - New configuration option `structured.communities.mode: name`
  - Community mappings via `structured.communities.names` dictionary
  - Communities display as "65000:1000 - Upstream Any" in UI
  - Backward compatible with existing permit/deny modes

- Enhance RPKI configuration documentation
  - Document both Cloudflare and Routinator backend options
  - Add `structured.rpki.backend` and `structured.rpki.rpki_server_url` parameters
  - Clarify Routinator web API endpoint usage vs RTR port
  - Add comprehensive configuration examples

- Update structured output platform support
  - Document all supported platforms: Arista EOS, FRRouting, Huawei VRP, Juniper Junos, Mikrotik RouterOS/SwitchOS

- Frontend enhancements
  - Parse comma-separated community format in UI components
  - Display friendly names alongside community codes
  - Maintain existing functionality for communities without names

- Add validation and examples
  - Validate that 'name' mode has community mappings configured
  - Include example configuration and test cases
  - Generic examples using ASN 65000 instead of specific networks
2025-09-26 11:32:29 +02:00
Wilhelm Schonfeldt
e78685d8c6 Enhance MikroTik BGP route handling by adding BGPRoute import and simplifying BGPRouteTable initialization 2025-09-26 10:04:56 +02:00
Wilhelm Schonfeldt
ae6a1a0bb8 Refactor code for improved readability and consistency across multiple files using black 2025-09-26 09:43:06 +02:00
Wilhelm Schonfeldt
22c8f8310e Add requests dependency to pyproject.toml 2025-09-26 09:37:58 +02:00
Wilhelm Schonfeldt
1d79ec4f5a Merge remote-tracking branch 'structured/main' into structured 2025-09-26 09:37:06 +02:00
Jason Hall
b52a383691 fixes formatting 2025-09-25 23:40:58 -04:00
Jason Hall
937ccaa171 updates CHANGELOG 2025-09-25 23:19:58 -04:00
Chumy
8f690adb5c Fix bug: Directives will be error on deserialize rules and field with None type 2025-09-25 23:17:21 -04:00
Carlos Santos
c66d6d162d
Update poetry.lock update erro typer click 2025-09-25 19:59:55 -03:00
Carlos Santos
e31e6419c9
Update requirements.lock update typer erro click 2025-09-25 19:59:15 -03:00
Carlos Santos
fac4a80690
Update requirements-dev.lock update typer erro click 2025-09-25 19:58:45 -03:00
Carlos Santos
993926ec2a
Update pyproject.toml update typer erro click 2025-09-25 19:58:07 -03:00
Carlos Santos
62fc058db8
Update Dockerfile update CLICK ERRO typer 2025-09-25 19:57:22 -03:00
Wilhelm Schonfeldt
8131853daa Added broader support for external RPKI validation.
Expanded params config for rpki server URL and backend type for query switching and lookup handling.
Initial support for routinator server API endpoint.
2025-09-25 20:35:47 +02:00
Carlos Santos
b3d4834d3b
Update mikrotik.py rpki ajustado pelo wilhelm_pa 2025-09-17 17:00:45 -03:00
Carlos Santos
63da21b504
Update mikrotik.py 2025-09-13 15:53:27 -03:00
Carlos Santos
65a4b3f369
Rename sample_config.yaml to sample_config 2025-09-13 05:09:34 -03:00
Carlos Santos
22b6c9243e
Update README.md 2025-09-13 05:08:19 -03:00
Carlos Santos
b589cefcd4
Update README.md 2025-09-13 04:20:05 -03:00
Carlos Santos
cb0389b8f4
Update README.md 2025-09-13 04:19:41 -03:00
Carlos Santos
d0e5acae37
Update README.md 2025-09-13 04:13:22 -03:00
Carlos Santos
7542dfc155
Update README.md 2025-09-13 03:49:09 -03:00
Carlos Santos
2c37f6cd24
Update README.md 2025-09-13 03:48:14 -03:00
Carlos Santos
bba91229f9
Update README.md 2025-09-13 03:35:03 -03:00
Carlos Santos
6f7fa08822
Update README.md 2025-09-13 03:34:23 -03:00
Carlos Santos
2adfed104c
Update README.md 2025-09-13 03:29:17 -03:00
Carlos Santos
1dfe987a6e
Update bgp_route_huawei.py 2025-09-13 03:21:22 -03:00
Carlos Santos
0b5bcc37c1
Update huawei.py 2025-09-13 03:10:38 -03:00
Carlos Santos
cfee0639a3
Create sample_device.yaml 2025-09-13 03:08:37 -03:00
Carlos Santos
ef129f309c
Rename sample_terms-and-conditions.md to sample_terms-and-conditions 2025-09-13 03:08:13 -03:00
Carlos Santos
432704a759
Rename sample_hyperglass.env to sample_hyperglass 2025-09-13 03:08:01 -03:00
Carlos Santos
1514265b18
Rename sample_directives_mikrotik.yaml to sample_directives_mikrotik 2025-09-13 03:07:47 -03:00
Carlos Santos
7ad947bdc8
Rename sample_directives_juniper.yaml to sample_directives_juniper 2025-09-13 03:07:35 -03:00
Carlos Santos
d33532ea45
Rename sample_directives_huawei.yaml to sample_directives_huawei 2025-09-13 03:07:25 -03:00
Carlos Santos
7d7a501ea1
Rename sample_devices2.yaml to sample_devices2 2025-09-13 03:07:12 -03:00
Carlos Santos
d496a260b3
Rename sample_devices.yaml to sample_devices2.yaml 2025-09-13 03:06:17 -03:00