""" VLESS protocol implementation. """ from typing import List, Dict, Any, Optional from .base import BaseProtocol from ..models import User, VlessUser class VlessProtocol(BaseProtocol): """VLESS protocol handler.""" def __init__(self, port: int, tag: Optional[str] = None, listen: str = "0.0.0.0", network: str = "tcp"): super().__init__(port, tag, listen, network) def _default_tag(self) -> str: return "vless-inbound" def create_inbound_config(self, users: List[VlessUser]) -> Dict[str, Any]: """Create VLESS inbound configuration.""" config = self._base_inbound_config() config.update({ "protocol": "vless", "settings": { "_TypedMessage_": "xray.proxy.vless.inbound.Config", "clients": [self._user_to_client(user) for user in users], "decryption": "none" }, "streamSettings": { "network": self.network } }) return {"inbounds": [config]} def create_user_config(self, user: VlessUser) -> Dict[str, Any]: """Create user configuration for VLESS.""" return { "inboundTag": self.tag, "proxySettings": { "_TypedMessage_": "xray.proxy.vless.inbound.Config", "clients": [self._user_to_client(user)] } } def generate_client_link(self, user: VlessUser, hostname: str) -> str: """Generate VLESS client link.""" return f"vless://{user.uuid}@{hostname}:{self.port}?encryption=none&type={self.network}#{user.email}" def _user_to_client(self, user: VlessUser) -> Dict[str, Any]: """Convert VlessUser to client configuration.""" return { "id": user.uuid, "level": user.level, "email": user.email }