argo79/Reticulum_Entry_Points_Map

GitHub: argo79/Reticulum_Entry_Points_Map

REPMAP 是一个轻量级的 Reticulum 去中心化网络交互式地图工具,提供实时节点发现、自动地理位置定位和内置网络诊断功能。

Stars: 0 | Forks: 0

# 🌐 Reticulum Entry Points 地图 **带有自动地理位置定位、节点发现和高级网络诊断工具的 Reticulum 网络入口点交互式地图。** [![Network](https://img.shields.io/badge/Network-Reticulum-blue)](https://reticulum.network/) [![Python](https://img.shields.io/badge/Python-3.6+-green)](https://www.python.org/) [![License](https://img.shields.io/badge/License-MIT-yellow)](LICENSE) [![Version](https://img.shields.io/badge/Version-1.1.0-orange)](https://github.com/argo79/Reticulum_Entry_Points_Map/releases) [![Stars](https://img.shields.io/github/stars/argo79/Reticulum_Entry_Points_Map?style=social)](https://github.com/argo79/Reticulum_Entry_Points_Map/stargazers) [![Forks](https://img.shields.io/github/forks/argo79/Reticulum_Entry_Points_Map?style=social)](https://github.com/argo79/Reticulum_Entry_Points_Map/network/members) [![Issues](https://img.shields.io/github/issues/argo79/Reticulum_Entry_Points_Map)](https://github.com/argo79/Reticulum_Entry_Points_Map/issues) [![Last Commit](https://img.shields.io/github/last-commit/argo79/Reticulum_Entry_Points_Map)](https://github.com/argo79/Reticulum_Entry_Points_Map/commits/main)

Reticulum Entry Points Map

## 🌍 概述 **Reticulum Entry Points Map** 是一个轻量级的 Python 应用程序,可自动发现公开的 Reticulum 入口点,并将其显示在交互式的 Leaflet 地图上。 该项目将自动节点发现、IP 和 WHOIS 地理位置定位、交互式可视化以及内置的网络诊断整合到了一个单一的 Web 界面中。 专为网络管理员和 Reticulum 爱好者设计,它允许你在不依赖外部数据库或重型框架的情况下实时检查公共网络。 ### 主要功能 - 🌍 自动发现 Reticulum 节点 - 🗺️ 交互式 Leaflet 地图 - 📍 自动地理位置定位 - 🏠 本地节点可视化 - 🔄 自动刷新 - 📡 REST API - 🔍 集成 rnprobe 和 rnpath - 📏 距离测量尺 - ⭕ 半径绘制工具 - 🔲 标记聚类 - 📱 响应式界面 - ⚡ 轻量级 Python 服务器 # 📋 目录 - [概述](#-overview) - [功能](#-features) - [要求](#-requirements) - [快速安装](#-quick-installation) - [高级节点命令](#-advanced-node-commands) - [配置](#-configuration) - [REST API](#-rest-api) - [项目结构](#-project-structure) - [自定义](#-customization) - [故障排除](#-troubleshooting) - [发布入口点](#-publishing-an-entry-point) - [路线图](#-roadmap) - [贡献](#-contributing) - [许可证](#-license) # ✨ 功能 | 功能 | 描述 | |---------|-------------| | 🗺️ 交互式地图 | 在 Leaflet 地图上显示所有可发现的 Reticulum 节点 | | 📍 自动地理位置定位 | 使用显式坐标、IP 查询、WHOIS 和节点名称 | | 🔄 自动刷新 | 每 30 分钟刷新一次网络 | | 🏠 本地节点支持 | 自动显示本地服务器 | | 📊 REST API | 用于外部应用程序的 JSON endpoint | | ⚡ 轻量级 | 纯 Python 实现,依赖极少 | | 🏷️ 节点标签 | 缩放时标签变为可见 | | 📏 距离测量尺 | 直接在地图上测量距离 | | ⭕ 半径工具 | 绘制圆形并估算覆盖范围 | | 🔲 标记聚类 | 自动对附近的标记进行分组 | | 🔍 过滤器 | 按类型和可用性过滤节点 | | 🎯 诊断工具 | rnprobe、rnpath、ping、netcat 和 nmap 集成 | # 📋 要求 - Python **3.6** 或更高版本 - 已安装并配置好 Reticulum - 互联网连接 - `whois` *(可选但推荐)* # 🚀 快速安装 ## 克隆仓库 ``` git clone https://github.com/argo79/Reticulum_Entry_Points_Map.git cd Reticulum_Entry_Points_Map ``` 或手动下载该项目。 所需文件: ``` reticulum_map.py locations.py map.html style.css ruler.js ``` ## 配置本地节点(可选) 编辑 **reticulum_map.py** 的开头部分。 ``` LOCAL_NODE_CONFIG = { "name": "My Node", "latitude": 45.605, "longitude": 12.2435, "reachable_on": "my.public.ip", "port": 4242, } ``` ## 启动服务器 ``` python3 reticulum_map.py ``` ## 打开 Web 界面 在浏览器中打开: ``` http://localhost:8484 ```

主交互式地图。

# 🎯 高级节点命令 该地图集成了多个网络诊断工具,可以直接从 Web 界面执行。 | 命令 | 描述 | |---------|-------------| | **rnprobe** | 测试与 Reticulum 节点的连接性 | | **rnpath** | 显示到某个节点的当前路由 | | **rnpath -d** | 删除缓存的路由 | | **Ping** | 发送 ICMP ping 数据包 | | **Nmap** | 执行 TCP 端口扫描 | | **Netcat** | 测试 TCP 连接性 | | **Discovery Hash** | 计算处理程序的发现哈希 | | **Discover All** | 列出所有可发现的处理程序 | ## 可用的发现哈希 该应用程序可以自动计算多个 Reticulum 服务的发现哈希。 - 🔵 Probe Hash - 📨 LXMF Propagation - 📬 LXMF Delivery - 📞 Audio Call - 🌐 Nomad Network Node

带有集成网络工具的节点弹出窗口。

# ⚙️ 配置 大多数设置可以直接在 **reticulum_map.py** 中自定义。 ``` PORT = 8484 REFRESH_MINUTES = 30 LOCAL_NODE_CONFIG = { "enabled": True, "name": "My Reticulum Node", "latitude": 45.605, "longitude": 12.2435, "reachable_on": "203.0.113.10", "port": 4242, } ``` ## 🌍 自动地理位置定位 节点位置使用多种方法按优先级顺序确定。 1. 节点公告中包含的显式 GPS 坐标。 2. 使用 **ip-api.com** 进行 IP 查询。 3. 本地 WHOIS 分析。 4. 从节点名称中提取的位置关键字。 这种分层方法允许大多数公共节点自动定位,即使没有 GPS 坐标也能实现。

自动节点地理位置定位。

# 📡 REST API 内置的 HTTP 服务器暴露了多个 endpoint,用于自动化和集成。 | 方法 | Endpoint | 描述 | |---------|----------|-------------| | GET | `/data` | 以 JSON 格式返回每个已发现的节点 | | GET | `/refresh` | 强制刷新节点数据 | | GET | `/localnode` | 返回本地节点信息 | | GET | `/get_hash//` | 计算发现哈希 | | GET | `/rnprobe_hash/` | 执行 **rnprobe** | | GET | `/rnpath_hash/` | 执行 **rnpath** | | GET | `/rnpath_drop/` | 移除缓存的路由 | | GET | `/ping/` | 执行 ICMP ping | | GET | `/netcat//` | TCP 连接性测试 | | GET | `/nmap/` | 端口扫描 | | GET | `/nmap//` | 扫描特定的 TCP 端口 | ## 示例请求 检索每个已发现的节点。 ``` curl http://localhost:8484/data ``` 计算特定 transport 的 Probe hash。 ``` curl http://localhost:8484/get_hash/c00058ab8a97b8cd5e20e5e570ad45d5/rnstransport.probe ``` 示例响应。 ``` { "success": true, "transport_id": "c00058ab8a97b8cd5e20e5e570ad45d5", "handler": "rnstransport.probe", "hash": "ca655871b843def1277cc3416cdeed54", "timestamp": "2026-07-24T21:00:44.089847" } ```

针对桌面、平板和移动设备优化的响应式界面。

# 🗂️ 项目结构 ``` Reticulum_Entry_Points_Map/ ├── reticulum_map.py ├── locations.py ├── map.html ├── style.css ├── ruler.js ├── robots.txt ├── sitemap.xml ├── nodes.json ├── nodes_geo.json ├── geo_cache.json ├── hash_cache.pkl └── img/ ├── REPMap.jpg ├── REPMap1.jpg ├── REPMap2.jpg ├── REPMap3.jpg └── REPMap4.jpg ``` # 🔧 自定义 ## 添加自定义位置 你可以通过编辑 `locations.py` 来改进自动地理位置定位。 示例: ``` LOCATIONS = { "milan": { "lat": 45.4642, "lng": 9.1900 }, "rome": { "lat": 41.9028, "lng": 12.4964 }, "berlin": { "lat": 52.5200, "lng": 13.4050 }, "new york": { "lat": 40.7128, "lng": -74.0060 } } ``` 地理位置定位引擎在回退到 WHOIS 信息之前,会先在节点名称中搜索匹配的关键字。 ## 自定义 Web 界面 前端完全由静态文件组成。 你可以自由修改: - `map.html` - `style.css` - `ruler.js` 或者用你自己的界面完全替换它们。 Python 服务器会自动从项目目录中提供所有的静态文件。 # 🐛 故障排除 ## 找不到 rnstatus 验证 Reticulum 是否已正确安装。 ``` which rnstatus rnstatus -h ``` 如果未安装: ``` pip install rns ``` ## 安装 WHOIS ### Debian / Ubuntu ``` sudo apt install whois ``` ### Arch Linux ``` sudo pacman -S whois ``` ### Fedora ``` sudo dnf install whois ``` WHOIS 是可选的,但能改善节点地理位置定位。 ## 服务器无响应 验证以下各项: - Python 正在运行。 - 端口 **8484** 未被阻止。 - 没有防火墙阻止访问。 - Reticulum 运行正常。 ## 地址已被使用 找到使用端口 **8484** 的进程。 ``` sudo lsof -i :8484 ``` 终止它。 ``` sudo kill -9 PID ``` 将 **PID** 替换为 `lsof` 返回的进程 ID。 ## 地图为空 如果地图为空: - 验证 Reticulum 是否正在运行; - 执行 `rnstatus`; - 确保存在一些可发现的节点; - 检查终端是否有错误。 ## 地理位置定位失败 可能的原因: - 私有 IP 地址 - VPN endpoint - 缺少 WHOIS 包 - 未知的节点名称 - IP 查询 API 临时故障 节点公告中包含的坐标始终具有最高优先级。 # 📍 发布入口点 要使你的入口点自动显示在地图上,请将以下选项添加到你的 Reticulum 配置中。 配置文件: ``` ~/.reticulum/config ``` 示例: ``` discoverable = Yes discovery_name = My Backbone Node announce_interval = 240 discovery_stamp_value = 24 latitude = 45.4642 longitude = 9.1900 height = 15 ``` ## 完整示例 ``` [Default Interface] type = AutoInterface enabled = Yes [[Backbone Listener]] type = BackboneInterface interface_enabled = True mode = gateway listen_on = port = 4242 discoverable = Yes discovery_name = RNS Backbone WORLD announce_interval = 360 discovery_stamp_value = 24 latitude = 45.4642 longitude = 9.1900 height = 15 ``` 编辑配置后,只需重启 Reticulum。 在几个宣告间隔后,你的入口点将自动出现在公共地图上。 # 🔒 隐私 只有配置为以下形式的入口点: ``` discoverable = Yes ``` 才会出现在地图上。 除了 Reticulum 已通过 Discovery 协议发布的信息外,不会收集任何额外信息。 如果省略了 GPS 坐标,应用程序将尝试使用 IP 地理位置定位和 WHOIS 信息来估算位置。 # ⚙️ 性能 典型的资源使用情况: | 资源 | 使用情况 | |----------|------:| | RAM | ~25 MB | | CPU | <1% 空闲 | | 刷新间隔 | 30 分钟 | | 支持的节点 | 数千个 | 该服务器非常轻量,可以在 Raspberry Pi、VPS 实例和低功耗硬件上运行。 # 📄 许可证 该项目在 **MIT License** 下发布。 有关完整的许可证文本,请参阅 [LICENSE](LICENSE) 文件。 # 👨‍💻 作者 ## Arg0net - 📧 **电子邮件:** arg0netds@gmail.com - 🐙 **GitHub:** https://github.com/argo79 - 🔑 **Reticulum LXMF Identity** ``` lxmf.cb04d68b73c76647dc61a530089b7dce ``` # 🌟 鸣谢 特别感谢使该软件成为可能的项目和人员。 - 🌐 **Reticulum Network** 创建了真正去中心化的网络协议。 - 🗺️ **Leaflet** 提供了交互式地图库。 - 📍 **ip-api.com** 提供了免费的 IP 地理位置定位服务。 - 🛰️ 每一个为全球网络做出贡献的 Reticulum 节点运营商。 - 🇮🇹 **Reticulum Italia** 社区提供的测试、想法和反馈。 # 📊 项目统计
[![Stars](https://img.shields.io/github/stars/argo79/Reticulum_Entry_Points_Map?style=social)](https://github.com/argo79/Reticulum_Entry_Points_Map/stargazers) [![Forks](https://img.shields.io/github/forks/argo79/Reticulum_Entry_Points_Map?style=social)](https://github.com/argo79/Reticulum_Entry_Points_Map/network/members) [![Issues](https://img.shields.io/github/issues/argo79/Reticulum_Entry_Points_Map)](https://github.com/argo79/Reticulum_Entry_Points_Map/issues) [![Pull Requests](https://img.shields.io/github/issues-pr/argo79/Reticulum_Entry_Points_Map)](https://github.com/argo79/Reticulum_Entry_Points_Map/pulls) [![Last Commit](https://img.shields.io/github/last-commit/argo79/Reticulum_Entry_Points_Map)](https://github.com/argo79/Reticulum_Entry_Points_Map/commits/main)
# ❤️ 支持该项目 如果你觉得这个项目有用,请考虑支持它的开发。 你可以通过以下方式提供帮助: - ⭐ 为仓库加星标。 - 🍴 Fork 该项目。 - 🐛 报告 Bug。 - 💡 建议新功能。 - 📖 改进文档。 - 🔧 提交 Pull Request。 - 📢 与其他 Reticulum 用户分享该项目。 # 🤝 贡献 随时欢迎你的贡献。 1. Fork 该仓库。 2. 创建一个功能分支。 ``` git checkout -b feature/my-feature ``` 3. 提交你的更改。 ``` git commit -m "Add new feature" ``` 4. 推送该分支。 ``` git push origin feature/my-feature ``` 5. 发起一个 Pull Request。 请尽量保持编码风格与项目其余部分一致。 # 🚀 未来想法 未来可能的改进包括: - 🌍 多个地图提供商。 - 🛰️ 使用 WebSockets 进行实时节点更新。 - 📈 历史节点统计。 - 网络健康状况仪表板。 - 🌐 IPv6 可视化改进。 - 📡 Mesh 拓扑可视化。 - 🧭 路由质量指标。 - 🔐 API endpoint 的可选身份验证。 - 📱 渐进式 Web 应用程序 (PWA)。 - 🌙 深色和浅色主题。 # 📷 截图 ## 节点信息

## 自动地理位置定位

## Rnpath 命令

## Rnprobe 命令

## 圆形范围

## 线性距离

☕ 支持开发

如果你觉得这个项目有用,请考虑给我买杯虚拟咖啡!☕ 每一份贡献,无论大小,都有助于保持项目的活力并支持未来的开发。

### 💰 捐赠 [![Donate XRP](https://img.shields.io/badge/Donate-XRP-00A9FF?style=flat&logo=ripple)](https://ripple.com/xrp/) [![Donate XMR](https://img.shields.io/badge/Donate-XMR-FF6600?style=flat&logo=monero)](https://www.getmonero.org/) [![Donate ETH](https://img.shields.io/badge/Donate-ETH-3C3C3D?style=flat&logo=ethereum)](https://ethereum.org/) | 加密货币 | 地址 | |----------------|---------| | **XRP (Ripple)** | `rBKbetm51vuQQfg4Yo8fvweRya7gedcr9J` | | **XMR (Monero)** | `87jacZEtYvXcgnvEp7wu45gLwRBYpvwMr3N9dqhNipPWV69XwQX658tS73VEdghLopG1wA4STEdMPcGF8Tc3e18eJyQ4kMA` | | **ETH (Ethereum)** | `0xd2d85288df96B4162814Ca7492039620371b9D81` | **由 Arg0net 用 ❤️ 制作**
📡 **Reticulum Identity** ``` lxmf.04511923b68ae34e0fda5721d82f596f ```
⭐ 如果你喜欢这个项目,请考虑在 GitHub 上给它点个 **Star**。
标签:Leaflet, Python, Reticulum, 去中心化网络, 后端开发, 情报分析, 数据可视化, 无后门, 网络拓扑可视化, 网络测绘, 网络诊断, 调试辅助, 逆向工具