跳到主要内容

Python SDK [community]

社区 SDK

此 SDK 完全由社区维护。

Remnawave Python SDK 是一个用于便捷与 RestAPI 类型交互的库。

✨ 主要特性

  • 基于控制器的设计:将功能分割到独立的控制器中以获得更大灵活性。只使用你需要的部分!
  • Pydantic 模型:强类型的请求和响应,提供更好的可靠性。
  • 快速序列化:由 orjson 驱动,实现高效的 JSON 处理。
  • 模块化使用:根据需要导入独立控制器或完整 SDK。
  • 自定义 HTTP 客户端支持:可以传入带有自定义请求头的 httpx.AsyncClient,以绕过各种检查。
  • Caddy 令牌集成:直接支持在 SDK 初始化时传入 caddy_token。

安装

pip install remnawave

使用

使用示例
import os
import asyncio

from remnawave import RemnawaveSDK # Updated import for new package
from remnawave.models import ( # Updated import path
UsersResponseDto,
UserResponseDto,
GetAllConfigProfilesResponseDto,
CreateInternalSquadRequestDto
)

async def main():
# URL to your panel (ex. https://vpn.com or http://127.0.0.1:3000)
base_url: str = os.getenv("REMNAWAVE_BASE_URL")
# Bearer Token from panel (section: API Tokens)
token: str = os.getenv("REMNAWAVE_TOKEN")

# Initialize the SDK
remnawave = RemnawaveSDK(base_url=base_url, token=token)

# Fetch all users
response: UsersResponseDto = await remnawave.users.get_all_users()
total_users: int = response.total
users: list[UserResponseDto] = response.users
print("Total users: ", total_users)
print("List of users: ", users)

if __name__ == "__main__":
asyncio.run(main())
以 Caddy 为 Web 服务器的使用示例
import os
import asyncio

from remnawave import RemnawaveSDK # Updated import for new package
from remnawave.models import ( # Updated import path
UsersResponseDto,
UserResponseDto,
GetAllConfigProfilesResponseDto,
CreateInternalSquadRequestDto
)

async def main():
# URL to your panel (ex. https://vpn.com or http://127.0.0.1:3000)
base_url: str = os.getenv("REMNAWAVE_BASE_URL")
# Bearer Token from panel (section: API Tokens)
token: str = os.getenv("REMNAWAVE_TOKEN")
# Bearer Token for Caddy Auth
caddy_token = os.getenv("CADDY_TOKEN_AUTH")

# Initialize the SDK
remnawave = RemnawaveSDK(base_url=base_url, token=token, caddy_token=caddy_token)

# Fetch all users
response: UsersResponseDto = await remnawave.users.get_all_users()
total_users: int = response.total
users: list[UserResponseDto] = response.users
print("Total users: ", total_users)
print("List of users: ", users)

if __name__ == "__main__":
asyncio.run(main())
使用自定义客户端的示例
import os
import asyncio
import httpx
from remnawave import RemnawaveSDK

async def main():
base_url = os.getenv("REMNAWAVE_BASE_URL")
token = os.getenv("REMNAWAVE_TOKEN")

# Custom client with headers
async with httpx.AsyncClient(headers={"hello": "world"}) as client:
# Initialize SDK with a custom client
remnawave = RemnawaveSDK(base_url=base_url, token=token, client=client)

# Fetch all users
response = await remnawave.users.get_all_users_v2()
print("Total users:", response.total)

asyncio.run(main())

项目链接