init
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
# napalm-fritzbox
|
||||
|
||||
NAPALM community driver for **AVM FritzBox** routers (read-only, via TR-064).
|
||||
|
||||
## Requirements
|
||||
|
||||
| Dependency | Minimum version |
|
||||
|---|---|
|
||||
| Python | 3.9 |
|
||||
| NAPALM | 4.0 |
|
||||
| fritzconnection | 1.13 |
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install napalm-fritzbox
|
||||
```
|
||||
|
||||
Or from source:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/napalm-automation-community/napalm-fritzbox
|
||||
cd napalm-fritzbox
|
||||
pip install -e .
|
||||
```
|
||||
|
||||
## Quick start
|
||||
|
||||
```python
|
||||
from napalm import get_network_driver
|
||||
|
||||
driver = get_network_driver("fritzbox")
|
||||
with driver(
|
||||
"192.168.178.1",
|
||||
"user",
|
||||
"pass",
|
||||
optional_args={"use_tls": True},
|
||||
) as d:
|
||||
print(d.get_facts())
|
||||
print(d.get_wan_status())
|
||||
print(d.get_hosts())
|
||||
```
|
||||
|
||||
### Example
|
||||
|
||||
```python
|
||||
driver = get_network_driver("fritzbox")
|
||||
d = driver("fritz.box", "user", "pass")
|
||||
d.open()
|
||||
|
||||
print(d.get_wan_status())
|
||||
print(d.get_port_forwards())
|
||||
print(d.get_ssids())
|
||||
print(d.get_wireless_clients())
|
||||
d.close()
|
||||
```
|
||||
|
||||
## Optional arguments
|
||||
|
||||
| Argument | Default | Description |
|
||||
|---|---|---|
|
||||
| `use_tls` | `True` | Use HTTPS (port 49443) instead of HTTP (port 49000) |
|
||||
| `port` | `49443` / `49000` | Override the TR-064 port |
|
||||
|
||||
FritzBox serves TR-064 over HTTPS with a self-signed certificate; `fritzconnection`
|
||||
does not verify it, so no separate `verify` option is needed.
|
||||
|
||||
## Limitations
|
||||
|
||||
- Read-only: configuration management methods (`load_merge_candidate`,
|
||||
`commit_config`, ...) are not implemented.
|
||||
- `get_nat_translations()` is derived from the enabled port-forwarding rules —
|
||||
TR-064 does not expose a live connection-tracking table.
|
||||
- `get_vpn_tunnels()` returns an empty dict — FritzOS does not expose VPN
|
||||
tunnel status via TR-064.
|
||||
- `channel_width`, `tx_power` and `frequency` in `get_radio_status()` are not
|
||||
available via TR-064 and are reported as `0`.
|
||||
|
||||
## Development
|
||||
|
||||
```bash
|
||||
pip install -e ".[dev]"
|
||||
pytest tests/
|
||||
```
|
||||
|
||||
## CI
|
||||
|
||||
This project includes a GitHub Actions workflow that:
|
||||
- Runs unit tests across Python 3.9–3.12
|
||||
- Builds sdist and wheel
|
||||
|
||||
See [.github/workflows/ci.yml](.github/workflows/ci.yml).
|
||||
|
||||
## License
|
||||
|
||||
Apache 2.0 — see [LICENSE](LICENSE).
|
||||
Reference in New Issue
Block a user