Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@remnawave/xtls-sdk

Package Overview
Dependencies
Maintainers
0
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@remnawave/xtls-sdk

A Typescript SDK for XRAY (XTLS) Core GRPC Api

  • 0.0.8
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

XTLS SDK

GitHub top language GitHub Repo stars

npm version GitHub Tag

Build Status Downloads License NPM Last Update

Known Vulnerabilities Coverage Status

A TypeScript SDK for interacting with XRAY (XTLS) Core via gRPC API. This package provides a type-safe interface for managing and monitoring your XRAY server, including statistics, user management, and connection information.

Features

  • 🔒 Type-safe API interactions
  • 📊 Comprehensive statistics monitoring
  • 👥 User management capabilities
  • 🔄 Connection monitoring
  • ⚡ Async/Promise-based API
  • 📝 Detailed error handling

Installation

npm install @remnawave/xtls-sdk
# or
yarn add @remnawave/xtls-sdk
# or
pnpm add @remnawave/xtls-sdk

Quick Start

import { XtlsApi } from '@remnawave/xtls-sdk';

// Initialize the API client
const api = new XtlsApi('127.0.0.1', '10085');

// Example: Get system statistics
const stats = await api.stats.getSysStats();
if (stats.isOk) {
  console.log('System Stats:', stats.data);
}

Core Features

Statistics Management

// System Statistics
const sysStats = await api.stats.getSysStats();

// User Statistics
const userStats = await api.stats.getUserStats('username');
const allUsers = await api.stats.getAllUsersStats();
const isOnline = await api.stats.getUserOnlineStatus('username');

// Traffic Statistics
const inbounds = await api.stats.getAllInboundsStats();
const outbounds = await api.stats.getAllOutboundsStats();

Response Handling

All API methods return a standardized response format:

interface ISdkResponse<T> {
  isOk: boolean;
  data?: T;
  message?: string;
  code?: string;
}

Example usage:

const response = await api.stats.getSysStats();

if (response.isOk) {
  // Success case
  console.log('Stats:', response.data);
} else {
  // Error case
  console.error(`Error ${response.code}: ${response.message}`);
}

Reset Options

Many methods support statistics reset functionality:

// Get stats and reset counters
const stats = await api.stats.getUserStats('username', true);

API Reference

XtlsApi

Main client class for interacting with the XRAY server.

const api = new XtlsApi(ip: string, port: string);

HandlerService

Service for managing inbound handlers and their users.

User Management Methods
MethodDescriptionParameters
getInboundUsers(tag: string)Get all users from an inboundtag: Inbound handler tag
getInboundUsersCount(tag: string)Get count of users in an inboundtag: Inbound handler tag
removeUser(tag: string, username: string)Remove a user from an inboundtag: Inbound handler tag
username: User to remove
Add User Methods
MethodDescriptionParameters
addTrojanUser(data: IAddTrojanUser)Add Trojan userdata: { tag, username, password, level }
addVlessUser(data: IAddVlessUser)Add VLESS userdata: { tag, username, uuid, flow, level }
addShadowsocksUser(data: IAddShadowsocksUser)Add Shadowsocks userdata: { tag, username, password, cipherType, ivCheck, level }
addShadowsocks2022User(data: IAddShadowsocks2022User)Add Shadowsocks 2022 userdata: { tag, username, key, level }
addSocksUser(data: IAddSocksUser)Add SOCKS userdata: { tag, username, socks_username, socks_password, level }
addHttpUser(data: IAddHttpUser)Add HTTP userdata: { tag, username, http_username, http_password, level }

Example usage:

// Get all users in an inbound
const users = await api.handler.getInboundUsers('main-inbound');
if (users.isOk) {
  console.log('Users:', users.data.users);
}

// Add a new Trojan user
const newUser = await api.handler.addTrojanUser({
  tag: 'main-inbound',
  username: 'user@example.com',
  password: 'secure-password',
  level: 0,
});

// Remove a user
const removed = await api.handler.removeUser('main-inbound', 'user@example.com');

// Get user count
const count = await api.handler.getInboundUsersCount('main-inbound');
if (count.isOk) {
  console.log('Total users:', count.data);
}

StatsService

Statistics management service.

MethodDescriptionParameters
getSysStats()Get system statisticsNone
getAllUsersStats(reset?: boolean)Get all users' statisticsreset: Reset stats after retrieval
getUserStats(username: string, reset?: boolean)Get specific user statisticsusername: Target user
reset: Reset stats after retrieval
getUserOnlineStatus(username: string)Check user online statususername: Target user
getAllInboundsStats(reset?: boolean)Get all inbound statisticsreset: Reset stats after retrieval
getInboundStats(inbound: string, reset?: boolean)Get specific inbound statisticsinbound: Inbound tag
reset: Reset stats after retrieval
getAllOutboundsStats(reset?: boolean)Get all outbound statisticsreset: Reset stats after retrieval
getOutboundStats(outbound: string, reset?: boolean)Get specific outbound statisticsoutbound: Outbound tag
reset: Reset stats after retrieval

Error Handling

The SDK provides detailed error information through the response object:

try {
  const response = await api.stats.getUserStats('username');
  if (!response.isOk) {
    console.error(`Operation failed: ${response.message}`);
    console.error(`Error code: ${response.code}`);
  }
} catch (error) {
  console.error('Unexpected error:', error);
}

Contributors

We ❤️‍🔥 contributors! If you'd like to contribute, please check out our Contributing Guidelines and feel free to submit a pull request or open an issue.

Check open issues to help the progress of this project.

Thanks to the all contributors who have helped improve XTLS SDK:

License

MIT License - see the LICENSE file for details.

Keywords

FAQs

Package last updated on 15 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc