Skip to main content

A Python library and CLI tool for managing NPS (djylb/nps) proxy servers

Project description

nps-ctl

PyPI version CI License: GPL-3.0

English | 中文

一个用于管理 NPS 代理服务器的 Python 库和命令行工具。

注意: 本项目基于 djylb/nps,这是原版 ehang-io/nps(自 2021 年起停止维护)的活跃维护分支。API 兼容两个分支,但推荐使用 djylb/nps。

本项目会根据需求持续迭代,我也无意搞开源再闭源,请不要为了存档而 fork。如果觉得好用,欢迎加个 Star。

功能特性

  • API 客户端:类型安全的 NPS HTTP API Python 封装
  • 多节点支持:通过统一界面管理多台 NPS 边缘服务器
  • 集群同步:跨边缘节点同步客户端、隧道和域名映射
  • NPC 部署:通过 SSH 安装、配置和管理 NPC 客户端
  • 命令行工具:Rich 终端界面,支持所有操作
  • 最小依赖:仅需 rich 用于终端输出

安装

pip install nps-ctl

可选:SOCKS5 代理支持

pip install nps-ctl PySocks

快速开始

作为库使用

from nps_ctl import NPSClient

# 连接到单台 NPS 服务器
client = NPSClient(
    base_url="https://nps.example.com",
    auth_key="your_auth_key"
)

# 列出所有客户端
clients = client.list_clients()
for c in clients:
    print(f"{c['Id']}: {c['VerifyKey']}")

# 添加新客户端
client.add_client(remark="my-server", vkey="unique-key")

作为命令行工具

# 查看所有边缘节点状态
nps-ctl status

# 列出指定边缘节点的客户端
nps-ctl client list --edge nps-asia

# 从一个边缘节点同步配置到其他所有节点
nps-ctl sync --from nps-asia

# 向所有边缘节点添加域名映射
nps-ctl add-host --domain app.example.com --client my-server --target :8080

# 从 clients.toml 推送客户端配置到边缘节点
nps-ctl npc client-push

# 检查各机器上的 NPC 客户端状态
nps-ctl npc status

配置

创建 config/edges.toml 文件:

[edges.nps-asia]
api_url = "https://nps-asia.example.com"
auth_key = "your_auth_key"
region = "Asia"

[edges.nps-us]
api_url = "https://nps-us.example.com"
auth_key = "your_auth_key"
region = "US"

可选,创建 config/clients.toml 用于 NPC 客户端管理:

[clients.my-server]
ssh_host = "user@my-server.example.com"
vkey = "unique-verify-key"
edges = ["nps-asia", "nps-us"]

API 参考

NPSClient

单节点 NPS 服务器客户端。

  • list_clients() - 获取所有客户端
  • add_client() - 添加新客户端
  • edit_client() - 修改客户端
  • del_client() - 删除客户端
  • list_tunnels() - 获取所有隧道
  • add_tunnel() - 添加新隧道
  • list_hosts() - 获取所有域名映射
  • add_host() - 添加新域名映射

NPSCluster

多节点管理器。

  • get_all_clients() - 从所有节点获取客户端
  • sync_from() - 从源边缘节点同步配置到目标节点
  • broadcast_host() - 向所有节点添加域名映射

开发

# 安装开发依赖
pip install -e ".[dev,test]"

# 代码检查和类型检查
make lint

# 运行测试
make test

# 构建包
make build

许可证

GPL-3.0 — 详见 LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nps_ctl-0.4.0.tar.gz (70.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nps_ctl-0.4.0-py3-none-any.whl (77.8 kB view details)

Uploaded Python 3

File details

Details for the file nps_ctl-0.4.0.tar.gz.

File metadata

  • Download URL: nps_ctl-0.4.0.tar.gz
  • Upload date:
  • Size: 70.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for nps_ctl-0.4.0.tar.gz
Algorithm Hash digest
SHA256 f62ed1b689570adbb85af7d070ab852fd2cff81268916b4db07233e0236f8502
MD5 55e072dca7553d5d438940e6c1b16860
BLAKE2b-256 4e1ccce33b59d7d019d90784f355f8c8aee41576682a3be019c73b0112f79e94

See more details on using hashes here.

File details

Details for the file nps_ctl-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: nps_ctl-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 77.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for nps_ctl-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 06a1f59e7d57baa73e27dd77c0e587dad2fb4894e2db18318fd4fce29e4ec8d3
MD5 ff607fcb6cba508aefb8ce76fd49f662
BLAKE2b-256 39d76f3f3527e4e709709fb6c9d37b12994eec30cfa4a9a75228ab2096099062

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page