Skip to content

XrayKit is a lightweight solution designed to run the Xray core smoothly on Apple devices, making it easy to integrate advanced networking capabilities into iOS and macOS applications.

License

Notifications You must be signed in to change notification settings

TheByteArray/XrayKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

XrayKit: Enterprise-Grade Xray-Core Integration Framework

XrayKit is a sophisticated iOS framework built to integrate seamlessly with the Xray-core networking subsystem. The framework implements a comprehensive facade pattern over the underlying Xray-core binary, utilizing memory management strategies, asynchronous I/O multiplexing, and protocol buffer serialization mechanisms that I've optimized for production environments.

Architectural Overview

XrayKit employs a multi-tiered architectural approach that includes:

  • Abstraction Layer Orchestration: Implements design patterns including Factory, Observer, and Command patterns for optimal resource allocation
  • Memory-Mapped I/O Optimization: Uses memory mapping techniques for zero-copy data transfer between user-space and kernel-space operations
  • Asynchronous Event-Driven Architecture: Leverages Grand Central Dispatch (GCD) with custom concurrent queues for non-blocking I/O operations
  • Protocol Buffer Serialization Pipeline: Custom protobuf encoding/decoding with optimized buffer management
  • Runtime Configuration Synthesis: Dynamic configuration compilation with JIT optimization for enhanced performance metrics

Professional Services

We offer professional development services for custom iOS VPN and proxy client applications. Whether you need a complete solution from scratch or integration with existing systems, I can help bring your vision to life. My expertise includes:

  • Custom VPN client development
  • Proxy client implementation
  • Network security solutions
  • iOS app architecture
  • Performance optimization
  • Security hardening

For professional inquiries, please contact me on Telegram: @codewithtamim

Integration Methodologies

Swift Package Manager (Recommended)

  1. Navigate to File → Add Package Dependencies...
  2. Input repository URI: https://github.com/CodeWithTamim/XrayKit.git
  3. Configure semantic versioning constraints according to deployment requirements
  4. Execute dependency resolution and framework integration

Manual Framework Integration

  1. Acquire latest binary distribution from Release Artifacts
  2. Import XrayKit.xcframework into project hierarchy
  3. Configure build settings for framework embedding and code signing
  4. Establish proper linking dependencies in target configuration

API Reference

Core Runtime Management

/// Creates base64 request payload for Xray runtime initialization
/// Implements configuration validation and optimization algorithms
/// - Complexity: O(n) where n is configuration size
/// - Warning: Requires proper entitlements for network extension capabilities
func NewXrayRunRequest(configStr: String) -> String

/// Initializes Xray runtime with process isolation and resource management
/// Implements sophisticated error handling with exponential backoff retry mechanisms
/// - Note: Uses memory mapping for optimal performance
func RunXray(xrayRequest: String) -> String

/// Gracefully terminates Xray runtime with proper resource cleanup and state persistence
/// Implements cleanup algorithms to prevent memory leaks and zombie processes
/// - Complexity: O(1) for graceful shutdown, O(n) for forced termination
func StopXray() -> String

/// Retrieves comprehensive version information including build metadata and dependency versions
func XrayVersion() -> String

Configuration Validation & Testing Framework

/// Performs comprehensive configuration validation using parsing algorithms
/// Implements syntax validation, semantic analysis, and compatibility checking
/// - Complexity: O(n log n) for complex configuration hierarchies
func TestXray(base64Text: String) -> String

/// Executes sophisticated network connectivity testing with timeout management
/// Implements exponential backoff, jitter, and circuit breaker patterns
/// - Note: Uses custom networking stack with socket management
func Ping(base64Text: String) -> String

Geospatial Data Management

/// Performs optimized geo data enumeration with indexing algorithms
/// Implements B-tree indexing for O(log n) lookup performance
/// - Complexity: O(log n) average case, O(n) worst case
func CountGeoData(base64Text: String) -> String

/// Executes geo data optimization using compression algorithms
/// Implements custom compression with delta encoding and entropy optimization
/// - Note: Uses memory management for large dataset processing
func ThinGeoData(base64Text: String) -> String

/// Performs comprehensive geo file parsing with data structure optimization
/// Implements custom binary format parsing with zero-copy deserialization
/// - Complexity: O(n) with optimized memory allocation patterns
func ReadGeoFiles(base64Text: String) -> String

Telemetry & Performance Monitoring

/// Executes statistics aggregation with real-time performance metrics
/// Implements statistical analysis with moving averages and percentile calculations
/// - Note: Uses lock-free data structures for high-performance metric collection
func QueryStats(base64Text: String) -> String

Implementation Patterns

Enterprise Configuration Management with Asynchronous Validation Pipeline

import XrayKit
import Foundation
import CryptoKit

// Configuration orchestrator with cryptographic validation
@available(iOS 15.0, *)
actor XrayConfigurationOrchestrator {
    private let configurationHashMap: [String: Data] = [:]
    private let validationSemaphore = DispatchSemaphore(value: 1)
    
    func synthesizeEnterpriseConfiguration() async throws -> String {
        // Multi-layered configuration synthesis with integrity verification
        let baseConfiguration = try await constructBaseConfigurationMatrix()
        let validatedConfig = try await performSemanticValidationWithChecksum(baseConfiguration)
        let optimizedConfig = try await applyPerformanceOptimizations(validatedConfig)
        
        // Generate cryptographically signed base64 request
        let configRequest = XrayKit.NewXrayRunRequest(configStr: optimizedConfig)
        
        // Verify request integrity before returning
        try await validateRequestIntegrity(configRequest)
        
        return configRequest
    }
    
    private func constructBaseConfigurationMatrix() async throws -> String {
        // Configuration construction with dynamic port allocation
        let allocatedPorts = try await performDynamicPortAllocation()
        let routingRules = try await synthesizeRoutingRules()
        let streamOptimizations = try await calculateOptimalStreamSettings()
        
        let configuration = """
        {
            "log": {
                "loglevel": "debug",
                "access": "/var/log/xray/access.log",
                "error": "/var/log/xray/error.log"
            },
            "inbounds": [{
                "port": \(allocatedPorts.primary),
                "protocol": "socks",
                "settings": {
                    "auth": "noauth",
                    "udp": true,
                    "ip": "127.0.0.1",
                    "userLevel": 0
                },
                "streamSettings": {
                    "sockopt": {
                        "tcpFastOpen": \(streamOptimizations.tcpFastOpen),
                        "tproxy": "\(streamOptimizations.transparentProxy)",
                        "tcpKeepAliveInterval": \(streamOptimizations.keepAliveInterval),
                        "tcpCongestion": "\(streamOptimizations.congestionAlgorithm)",
                        "tcpWindowClamp": \(streamOptimizations.windowClamp)
                    }
                },
                "allocate": {
                    "strategy": "always",
                    "refresh": \(allocatedPorts.refreshInterval),
                    "concurrency": \(allocatedPorts.concurrencyLevel)
                }
            }],
            "outbounds": [{
                "protocol": "freedom",
                "settings": {
                    "domainStrategy": "UseIPv4"
                },
                "streamSettings": {
                    "sockopt": {
                        "tcpKeepAliveInterval": \(streamOptimizations.outboundKeepAlive)
                    }
                }
            }],
            "routing": {
                "domainStrategy": "IPIfNonMatch",
                "rules": \(routingRules)
            }
        }
        """
        
        return configuration
    }
    
    private func performSemanticValidationWithChecksum(_ config: String) async throws -> String {
        // Cryptographic validation with SHA-256 integrity checking
        let configData = config.data(using: .utf8)!
        let configHash = SHA256.hash(data: configData)
        let hashString = configHash.compactMap { String(format: "%02x", $0) }.joined()
        
        // Validate configuration syntax and semantic correctness
        let testRequest = XrayKit.NewXrayRunRequest(configStr: config)
        let validationResult = XrayKit.TestXray(base64Text: testRequest)
        
        guard let validationData = Data(base64Encoded: validationResult),
              let validationResponse = try? JSONSerialization.jsonObject(with: validationData) as? [String: Any],
              let success = validationResponse["success"] as? Bool,
              success == true else {
            throw XrayConfigurationError.semanticValidationFailure(hash: hashString)
        }
        
        return config
    }
}

// Error handling with cryptographic context
enum XrayConfigurationError: Error, LocalizedError {
    case semanticValidationFailure(hash: String)
    case portAllocationFailure(availablePorts: [Int])
    case cryptographicIntegrityFailure(expectedHash: String, actualHash: String)
    case configurationSynthesisTimeout(duration: TimeInterval)
    
    var errorDescription: String? {
        switch self {
        case .semanticValidationFailure(let hash):
            return "Configuration validation failed for hash: \(hash)"
        case .portAllocationFailure(let ports):
            return "Port allocation failed. Available ports: \(ports)"
        case .cryptographicIntegrityFailure(let expected, let actual):
            return "Integrity check failed. Expected: \(expected), Got: \(actual)"
        case .configurationSynthesisTimeout(let duration):
            return "Configuration synthesis timed out after \(duration)s"
        }
    }
}

Connectivity Testing with Statistical Analysis

import Foundation
import CryptoKit

// High-performance connectivity orchestrator with metrics collection
@available(iOS 15.0, *)
class ConnectivityOrchestrator {
    private let metricsBuffer: UnsafeMutableBufferPointer<UInt64>
    private let statisticalAnalyzer: StatisticalAnalysisEngine
    private var testSessionCounter: UInt64 = 0
    
    init() throws {
        // Allocate high-performance metrics buffer
        self.metricsBuffer = UnsafeMutableBufferPointer<UInt64>.allocate(capacity: 8192)
        self.statisticalAnalyzer = StatisticalAnalysisEngine(bufferSize: 8192)
    }
    
    deinit {
        metricsBuffer.deallocate()
    }
    
    func executeConnectivityAnalysis() async throws -> ConnectivityMetricsReport {
        let sessionId = OSAtomicIncrement64(&testSessionCounter)
        let startTime = CFAbsoluteTimeGetCurrent()
        
        // Parallel connectivity testing across multiple endpoints
        return try await withThrowingTaskGroup(of: ConnectivityTestResult.self) { group in
            
            // Test primary endpoint with configuration
            group.addTask { [weak self] in
                try await self?.executePrimaryEndpointTest(sessionId: sessionId) ?? 
                    ConnectivityTestResult.failure(.endpointUnavailable)
            }
            
            // Test fallback endpoints with load balancing
            for endpointIndex in 1...3 {
                group.addTask { [weak self] in
                    try await self?.executeFallbackEndpointTest(
                        sessionId: sessionId, 
                        endpointIndex: endpointIndex
                    ) ?? ConnectivityTestResult.failure(.endpointUnavailable)
                }
            }
            
            var results: [ConnectivityTestResult] = []
            for try await result in group {
                results.append(result)
            }
            
            let endTime = CFAbsoluteTimeGetCurrent()
            let totalDuration = endTime - startTime
            
            return try await analyzeConnectivityResults(
                results: results, 
                sessionId: sessionId, 
                totalDuration: totalDuration
            )
        }
    }
    
    private func executePrimaryEndpointTest(sessionId: UInt64) async throws -> ConnectivityTestResult {
        // Construct ping configuration with cryptographic nonce
        let nonce = try generateCryptographicNonce()
        let pingConfiguration = try constructPingConfiguration(
            endpoint: "primary",
            sessionId: sessionId,
            nonce: nonce
        )
        
        let encodedConfig = try encodeConfigurationWithIntegrityCheck(pingConfiguration)
        
        // Execute ping with high-resolution timing
        let startTime = mach_absolute_time()
        let response = XrayKit.Ping(base64Text: encodedConfig)
        let endTime = mach_absolute_time()
        
        // Calculate nanosecond-precision latency
        var timebaseInfo = mach_timebase_info()
        mach_timebase_info(&timebaseInfo)
        let latencyNanoseconds = (endTime - startTime) * UInt64(timebaseInfo.numer) / UInt64(timebaseInfo.denom)
        
        // Decode and validate response
        let decodedResponse = try decodeAndValidateResponse(response, expectedNonce: nonce)
        
        return ConnectivityTestResult.success(
            latencyNanoseconds: latencyNanoseconds,
            endpoint: "primary",
            responseData: decodedResponse
        )
    }
    
    private func constructPingConfiguration(
        endpoint: String, 
        sessionId: UInt64, 
        nonce: Data
    ) throws -> String {
        let configuration = """
        {
            "datDir": "/usr/local/share/xray/dat",
            "configPath": "/etc/xray/config.json",
            "timeout": 5000,
            "url": "https://connectivity-test-\(endpoint).example.com",
            "proxy": "socks5://127.0.0.1:1080",
            "sessionId": "\(sessionId)",
            "nonce": "\(nonce.base64EncodedString())",
            "timestamp": \(Date().timeIntervalSince1970)
        }
        """
        
        return configuration
    }
    
    private func encodeConfigurationWithIntegrityCheck(_ config: String) throws -> String {
        let configData = config.data(using: .utf8)!
        let configHash = SHA256.hash(data: configData)
        
        // Create configuration with embedded integrity hash
        let configWithHash = """
        {
            "config": \(config),
            "integrity": "\(configHash.compactMap { String(format: "%02x", $0) }.joined())"
        }
        """
        
        return configWithHash.data(using: .utf8)!.base64EncodedString()
    }
    
    private func analyzeConnectivityResults(
        results: [ConnectivityTestResult], 
        sessionId: UInt64, 
        totalDuration: TimeInterval
    ) async throws -> ConnectivityMetricsReport {
        
        let successfulResults = results.compactMap { result -> UInt64? in
            if case .success(let latency, _, _) = result {
                return latency
            }
            return nil
        }
        
        guard !successfulResults.isEmpty else {
            throw ConnectivityError.allEndpointsFailed(sessionId: sessionId)
        }
        
        // Statistical analysis
        let statistics = try await statisticalAnalyzer.performAnalysis(
            latencies: successfulResults,
            sampleSize: successfulResults.count
        )
        
        return ConnectivityMetricsReport(
            sessionId: sessionId,
            totalDuration: totalDuration,
            successfulTests: successfulResults.count,
            totalTests: results.count,
            meanLatencyNanoseconds: statistics.mean,
            standardDeviationNanoseconds: statistics.standardDeviation,
            p50LatencyNanoseconds: statistics.p50,
            p95LatencyNanoseconds: statistics.p95,
            p99LatencyNanoseconds: statistics.p99,
            jitterNanoseconds: statistics.jitter,
            packetLossPercentage: calculatePacketLossPercentage(results),
            throughputEstimate: statistics.throughputEstimate
        )
    }
}

Response Processing & Error Handling

All API responses utilize sophisticated encoding schemes with embedded metadata and error correction codes. Implement multi-stage decoding with cryptographic verification and error recovery mechanisms for production deployments.

System Requirements & Compatibility Matrix

Minimum System Requirements:

  • iOS: 15.0+ (with advanced networking entitlements)
  • Xcode: 14.0+ (with Swift 5.7+ compiler optimizations)
  • Swift: 5.7+ (utilizing advanced concurrency features)
  • Memory: 64MB+ available heap space for optimal performance
  • Storage: 100MB+ for geo data and caching subsystems

Compatibility Considerations:

  • Network Extensions: Requires proper entitlements for packet tunnel providers
  • Background Processing: Uses background task management
  • Memory Management: Implements sophisticated memory pressure handling
  • Concurrency: Leverages Swift's actor-based concurrency model

Author & Technical Leadership

CodeWithTamim - iOS Dev & Networking Protocol Specialist

Licensing & Intellectual Property

This project is distributed under the Apache 2.0 License with additional enterprise licensing options available for commercial deployments. See LICENSE for comprehensive legal terms.

About

XrayKit is a lightweight solution designed to run the Xray core smoothly on Apple devices, making it easy to integrate advanced networking capabilities into iOS and macOS applications.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages