first commit

This commit is contained in:
MoonDev
2025-05-21 07:55:46 +03:00
commit 96ea504b10
28 changed files with 919 additions and 0 deletions

104
test.py Normal file
View File

@@ -0,0 +1,104 @@
import aiohttp
import asyncio
import json
class V2rayAController:
def __init__(self, host='http://localhost:2017', username='admin', password='admin'):
self.host = host
self.username = username
self.password = password
self.token = None
self.session = None
async def authenticate(self):
"""Аутентификация и получение токена"""
self.session = aiohttp.ClientSession()
auth_url = f"{self.host}/api/login"
credentials = {
'username': self.username,
'password': self.password
}
try:
async with self.session.post(auth_url, json=credentials) as response:
if response.status == 200:
data = await response.json()
self.token = data.get('data').get('token')
print("V2RayA auth OK")
return True
else:
print(f"Ошибка аутентификации: {response.status}")
return False
except Exception as e:
print(f"Ошибка при аутентификации: {e}")
return False
async def enable_proxy(self):
"""Включение прокси"""
if not self.token:
print("Не выполнен вход. Пожалуйста, сначала выполните аутентификацию")
return False
url = f"{self.host}/api/v2ray"
headers = {'Authorization': f"Bearer {self.token}"}
data = {}
try:
async with self.session.post(url, headers=headers, json=data) as response:
if response.status == 200:
print("Прокси успешно включен")
return True
else:
print(f"Ошибка при включении прокси: {response.status}")
return False
except Exception as e:
print(f"Ошибка при включении прокси: {e}")
return False
async def disable_proxy(self):
"""Выключение прокси"""
if not self.token:
print("Не выполнен вход. Пожалуйста, сначала выполните аутентификацию")
return False
url = f"{self.host}/api/v2ray"
headers = {'Authorization': f"Bearer {self.token}"}
data = {'operation': 'stop'}
try:
async with self.session.delete(url, headers=headers, json=data) as response:
if response.status == 200:
print("Прокси успешно выключен")
return True
else:
print(f"Ошибка при выключении прокси: {response.status}")
return False
except Exception as e:
print(f"Ошибка при выключении прокси: {e}")
return False
async def close(self):
"""Закрытие сессии"""
if self.session:
await self.session.close()
async def main():
# Инициализация контроллера
controller = V2rayAController(
host='http://localhost:2017',
username='admin123',
password='admin123'
)
# Аутентификация
if await controller.authenticate():
# Примеры использования
await controller.enable_proxy()
await asyncio.sleep(20) # Пауза для демонстрации
await controller.disable_proxy()
# Закрытие сессии
await controller.close()
if __name__ == "__main__":
asyncio.run(main())