Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
from fastapi import FastAPI, Request, Depends, HTTPException, status from fastapi.responses import HTMLResponse from fastapi.security import HTTPBasic, HTTPBasicCredentials import uvicorn import asyncio import socket import threading import logging from rich.console import Console from rich.panel import Panel import struct import select import secrets # إعداد تسجيل الأخطاء logging.basicConfig( filename='socks5.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s' ) console = Console() app = FastAPI(title="TzX Team SOCKS5 Server") # إعداد المصادقة الأساسية security = HTTPBasic() USERNAME = "admin" # يمكنك تغييره PASSWORD = "TzX2999" # يمكنك تغييره # التحقق من اسم المستخدم وكلمة المرور def verify_credentials(credentials: HTTPBasicCredentials = Depends(security)): correct_username = secrets.compare_digest(credentials.username, USERNAME) correct_password = secrets.compare_digest(credentials.password, PASSWORD) if not (correct_username and correct_password): raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="اسم المستخدم أو كلمة المرور غير صحيحة", headers={"WWW-Authenticate": "Basic"}, ) return credentials.username # حالة الخادوم server_running = False server_thread = None server_instance = None # HTML للواجهة الفاخرة html_content = """
TzX Team - Future Coding 2999
TzX Team
SOCKS5 Server: Stopped
تشغيل الخادوم
إيقاف الخادوم
تواصل مع المطور
انضم إلى القناة
الأوامر:
الاتصال بالخادوم: استخدم عميل SOCKS5 على
127.0.0.1:1081
إعداد العميل: ضبط البروكسي على SOCKS5 مع العنوان
127.0.0.1
والمنفذ
1081
مراقبة السجلات: تحقق من ملف
socks5.log
لتتبع الاتصالات
إيقاف الخادوم: اضغط على زر "إيقاف الخادوم" أو Ctrl+C في الطرفية
""" class SOCKS5Server: def __init__(self, host='127.0.0.1', port=1081, max_connections=100): self.host = host self.port = port self.max_connections = max_connections self.server_socket = None self.running = False def setup_socket(self): self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.server_socket.bind((self.host, self.port)) self.server_socket.listen(self.max_connections) console.print(Panel(f"SOCKS5 Server started on {self.host}:{self.port} | TzX Team", style="bold cyan")) async def handle_auth(self, client_socket, addr): try: loop = asyncio.get_running_loop() data = await loop.sock_recv(client_socket, 1024) if not data or data[0] != 0x05: return False nmethods = data[1] methods = data[2:2 + nmethods] if 0x00 not in methods: await loop.sock_sendall(client_socket, b'\x05\xff') return False await loop.sock_sendall(client_socket, b'\x05\x00') return True except Exception as e: logging.error(f"Client {addr}: Auth error - {e}") return False async def handle_request(self, client_socket, addr): try: loop = asyncio.get_running_loop() data = await loop.sock_recv(client_socket, 1024) if not data or data[0] != 0x05: return False cmd, _, atype = data[1:4] if cmd != 0x01: await loop.sock_sendall(client_socket, b'\x05\x07\x00\x01\x00\x00\x00\x00\x00\x00') return False if atype == 0x01: # IPv4 dest_addr = socket.inet_ntoa(data[4:8]) dest_port = struct.unpack('>H', data[8:10])[0] elif atype == 0x03: # Domain name addr_len = data[4] dest_addr = data[5:5 + addr_len].decode() dest_port = struct.unpack('>H', data[5 + addr_len:7 + addr_len])[0] else: await loop.sock_sendall(client_socket, b'\x05\x08\x00\x01\x00\x00\x00\x00\x00\x00') return False target_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: target_socket.connect((dest_addr, dest_port)) await loop.sock_sendall(client_socket, b'\x05\x00\x00\x01' + socket.inet_aton('0.0.0.0') + b'\x00\x00') return target_socket except Exception as e: await loop.sock_sendall(client_socket, b'\x05\x04\x00\x01\x00\x00\x00\x00\x00\x00') logging.error(f"Client {addr}: Connection to {dest_addr}:{dest_port} failed - {e}") return False except Exception as e: logging.error(f"Client {addr}: Request error - {e}") return False async def relay_data(self, client_socket, target_socket, addr): try: loop = asyncio.get_running_loop() while True: r, _, _ = await loop.run_in_executor(None, select.select, [client_socket, target_socket], [], []) if client_socket in r: data = await loop.sock_recv(client_socket, 4096) if not data: break await loop.sock_sendall(target_socket, data) if target_socket in r: data = await loop.sock_recv(target_socket, 4096) if not data: break await loop.sock_sendall(client_socket, data) except Exception as e: logging.error(f"Client {addr}: Relay error - {e}") finally: client_socket.close() target_socket.close() async def handle_client(self, client_socket, addr): try: if not await self.handle_auth(client_socket, addr): return target_socket = await self.handle_request(client_socket, addr) if target_socket: console.print(f"[green]Client {addr}: Connected to target | TzX Team[/green]") await self.relay_data(client_socket, target_socket, addr) else: console.print(f"[red]Client {addr}: Connection failed | TzX Team[/red]") except Exception as e: logging.error(f"Client {addr}: General error - {e}") finally: client_socket.close() async def accept_connections(self): loop = asyncio.get_running_loop() while self.running: try: client_socket, addr = await loop.sock_accept(self.server_socket) loop.create_task(self.handle_client(client_socket, addr)) except Exception as e: if self.running: logging.error(f"Accept error: {e}") def start(self): if not self.running: self.running = True self.setup_socket() asyncio.run(self.accept_connections()) def stop(self): if self.running: self.running = False if self.server_socket: self.server_socket.close() console.print("[yellow]SOCKS5 Server stopped | TzX Team[/yellow]") @app.get("/", response_class=HTMLResponse) async def root(username: str = Depends(verify_credentials)): return HTMLResponse(content=html_content) @app.post("/start_server") async def start_server(username: str = Depends(verify_credentials)): global server_running, server_thread, server_instance if not server_running: server_instance = SOCKS5Server() server_thread = threading.Thread(target=server_instance.start, daemon=True) server_thread.start() server_running = True return {"message": "SOCKS5 Server: Running | Port: 1081"} return {"message": "SOCKS5 Server: Already Running"} @app.post("/stop_server") async def stop_server(username: str = Depends(verify_credentials)): global server_running, server_thread, server_instance if server_running: server_instance.stop() server_running = False server_thread = None server_instance = None return {"message": "SOCKS5 Server: Stopped"} return {"message": "SOCKS5 Server: Already Stopped"} if __name__ == "__main__": uvicorn.run(app, host="127.0.0.1", port=1080, log_level="error")
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)