본문으로 건너뛰기

Python SDK [community]

커뮤니티 SDK

이 SDK는 커뮤니티에 의해 완전히 유지 관리됩니다.

Remnawave Python SDK는 RestAPI 타입과 편리하게 상호작용하기 위한 라이브러리입니다.

✨ 주요 기능

  • 컨트롤러 기반 설계: 유연성을 위해 기능을 별도의 컨트롤러로 분리. 필요한 것만 사용하세요!
  • Pydantic 모델: 더 나은 신뢰성을 위한 강력한 타입의 요청 및 응답.
  • 빠른 직렬화: 효율적인 JSON 처리를 위한 orjson 사용.
  • 모듈식 사용: 필요에 따라 개별 컨트롤러 또는 전체 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를 웹서버로 사용하는 예시
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())

프로젝트 링크