Metadata-Version: 2.3
Name: nautobot-app-vpn
Version: 2.0.1
Summary: VPN APP
License: Apache-2.0
Keywords: nautobot,nautobot-app,nautobot-plugin
Author: ISS World Services
Author-email: GITSO-Network@group.issworld.com
Requires-Python: >=3.11,<3.13
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Provides-Extra: all
Requires-Dist: django (>=4.2,<5.0)
Requires-Dist: djangorestframework (>=3.15,<4.0)
Requires-Dist: nautobot (>=3.0,<4.0) ; python_version == "3.11"
Requires-Dist: neo4j (>=5.0,<6.0)
Project-URL: Documentation, https://github.com/iss-world/nautobot-app-vpn?tab=readme-ov-file#readme
Project-URL: Homepage, https://github.com/iss-world/nautobot-app-vpn
Project-URL: Repository, https://github.com/iss-world/nautobot-app-vpn
Description-Content-Type: text/markdown

# Nautobot VPN App

<p align="center">
  <img src="https://raw.githubusercontent.com/iss-world/nautobot-app-vpn/main/docs/images/icon-nautobot_app_vpn.png" width="200" alt="Nautobot VPN App Logo">
</p>

<p align="center">
  <a href="https://github.com/iss-world/nautobot-app-vpn/actions/workflows/ci.yml">
    <img src="https://github.com/iss-world/nautobot-app-vpn/actions/workflows/ci.yml/badge.svg" alt="CI Status">
  </a>
  <a href="https://pypi.org/project/nautobot-app-vpn/">
    <img src="https://img.shields.io/pypi/v/nautobot-app-vpn.svg" alt="PyPI Version">
  </a>
  <a href="https://pypi.org/project/nautobot-app-vpn/">
    <img src="https://img.shields.io/pypi/dm/nautobot-app-vpn.svg" alt="PyPI Downloads">
  </a>
</p>

<p align="center">
  <em>An App for <a href="https://www.nautobot.com">Nautobot</a></em>
</p>



## Overview
A Nautobot plugin designed to model, visualize, and manage VPN infrastructure, including IPSec tunnels, IKE gateways, crypto profiles, and dynamic topology diagrams sourced from Neo4j.

---

## Key Features

- IKE Gateway and IPSec Tunnel modeling
- Inline or default crypto profile selection
- Dynamic tunnel provisioning form with interface auto-selection
- Topology visualization via Neo4j + Cytoscape


---

## Requirements

- Nautobot >= 3.0,<4.0 (validated on 3.0.1)
- Python >= 3.11
- Neo4j >= 5.0 (for topology view)

---

## Installation

### 1. Install via pip

```bash
pip install nautobot-app-vpn
```

### 2. Enable the plugin

In your `nautobot_config.py`, add to `PLUGINS` and configure Neo4j settings:

NEO4J_URI = "bolt://neo4j:7687"
NEO4J_USER = "neo4j"
NEO4J_PASSWORD = os.getenv("NEO4J_PASSWORD", "testneo4j")

```python
PLUGINS = [
    "nautobot_app_vpn",
    # ...
]

PLUGINS_CONFIG = {
    "nautobot_app_vpn": {
        "map": {
        "style_url": "https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",
        "attribution": "&copy; OpenStreetMap contributors &copy; CARTO"
        }
    },
}
```

---

## Docker/Compose Setup (Optional)

If you are using `docker-compose`, include this plugin in your `plugin_requirements.txt`:

```text
nautobot_app_vpn
```

Then rebuild Nautobot:

```bash
docker-compose build nautobot
```

---

## Usage

### Topology View

The plugin provides a Neo4j-powered dashboard under **Plugins > VPN Dashboard**, enabling visualization of active IPSec tunnels and their metadata using Open Street Map.

### Forms for Provisioning

- Auto-select interfaces based on ISP zone tags
- Auto-populate IPs from synced device data
- Support dynamic IP tunnels
- Create or select IKE/IPsec crypto profiles

---

## Screenshots

![VPN Menu](https://raw.githubusercontent.com/iss-world/nautobot-app-vpn/main/docs/images/image.png)

![VPN Dashboard](https://raw.githubusercontent.com/iss-world/nautobot-app-vpn/main/docs/images/image-1.png)

![IKE Crypto](https://raw.githubusercontent.com/iss-world/nautobot-app-vpn/main/docs/images/image-2.png)

![IPsec Crypto](https://raw.githubusercontent.com/iss-world/nautobot-app-vpn/main/docs/images/image-3.png)

![IKE Gateway](https://raw.githubusercontent.com/iss-world/nautobot-app-vpn/main/docs/images/image-4.png)

![IPSec Tunnel](https://raw.githubusercontent.com/iss-world/nautobot-app-vpn/main/docs/images/image-5.png)

![Tunnel Monitor](https://raw.githubusercontent.com/iss-world/nautobot-app-vpn/main/docs/images/image-6.png)

---

## Development

### Clone and install in editable mode:

```bash
git clone https://github.com/iss-world/nautobot-app-vpn.git
cd nautobot-app-vpn
poetry install
```

### Run linters locally

```bash
ruff check .
yamllint .
```

---

## Contributing

Pull requests are welcome! Please ensure code follows Nautobot plugin guidelines and passes all checks.

---

## License

Apache License 2.0. See [LICENSE](https://github.com/iss-world/nautobot-app-vpn/blob/main/LICENSE) for details.

---

## Author

Maintained by [@npolisetty26](https://github.com/npolisetty26)

