Deploy: Added url correcter
This commit is contained in:
@@ -5,5 +5,6 @@ POSTGRES_PASSWORD=postgres
|
|||||||
POSTGRES_DB=postgres
|
POSTGRES_DB=postgres
|
||||||
POSTGRES_HOST=postgres
|
POSTGRES_HOST=postgres
|
||||||
POSTGRES_PORT=5432
|
POSTGRES_PORT=5432
|
||||||
|
DOMAIN_NAME=localhost
|
||||||
|
|
||||||
COMPOSE_PROJECT_NAME=nwxraybot
|
COMPOSE_PROJECT_NAME=nwxraybot
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
from nwxraybot.bot import NwXrayBot
|
from nwxraybot.bot import NwXrayBot
|
||||||
from nwxraybot.config import Settings
|
from nwxraybot.config import Settings
|
||||||
from nwxraybot.utils import get_code, get_subscription_info
|
from nwxraybot.utils import (get_code, get_correct_user_url,
|
||||||
|
get_subscription_info)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class Settings(BaseSettings):
|
|||||||
postgres_db: str = Field('db', env="POSTGRES_DB")
|
postgres_db: str = Field('db', env="POSTGRES_DB")
|
||||||
postgres_host: str = Field('localhost', env="POSTGRES_HOST")
|
postgres_host: str = Field('localhost', env="POSTGRES_HOST")
|
||||||
postgres_port: int = Field(5432, env="POSTGRES_PORT")
|
postgres_port: int = Field(5432, env="POSTGRES_PORT")
|
||||||
|
domain_name: str = Field('localhost', env="DOMAIN_NAME")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def postgres_url(self) -> str:
|
def postgres_url(self) -> str:
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ from nwxraybot.fsm import BroadcastStates
|
|||||||
from nwxraybot.meta import Handler
|
from nwxraybot.meta import Handler
|
||||||
from nwxraybot.middlewares import AdminMiddleware
|
from nwxraybot.middlewares import AdminMiddleware
|
||||||
from nwxraybot.models import User
|
from nwxraybot.models import User
|
||||||
from nwxraybot.utils import get_subscription_info
|
from nwxraybot.utils import get_correct_user_url
|
||||||
|
|
||||||
|
|
||||||
class AdminHandler(Handler):
|
class AdminHandler(Handler):
|
||||||
@@ -45,13 +45,15 @@ class AdminHandler(Handler):
|
|||||||
await message.reply('Вы ввели команду в неверном формате. Вводите в формате:\n``` /adduser name vless://.... 01.01.1970 00:00```', parse_mode=ParseMode.MARKDOWN)
|
await message.reply('Вы ввели команду в неверном формате. Вводите в формате:\n``` /adduser name vless://.... 01.01.1970 00:00```', parse_mode=ParseMode.MARKDOWN)
|
||||||
return
|
return
|
||||||
user_dict = match.groupdict()
|
user_dict = match.groupdict()
|
||||||
|
url = user_dict['url']
|
||||||
|
url = get_correct_user_url(url)
|
||||||
date = None
|
date = None
|
||||||
if user_dict['date']:
|
if user_dict['date']:
|
||||||
date = datetime.strptime(f"{user_dict['date']} {
|
date = datetime.strptime(f"{user_dict['date']} {
|
||||||
user_dict['time']}", "%d.%m.%Y %H:%M")
|
user_dict['time']}", "%d.%m.%Y %H:%M")
|
||||||
code = get_code()
|
code = get_code()
|
||||||
new_user = User(
|
new_user = User(
|
||||||
name=user_dict['name'], url=user_dict['url'], time=date, code=code)
|
name=user_dict['name'], url=url, time=date, code=code)
|
||||||
new_user.save()
|
new_user.save()
|
||||||
await message.answer(f'Пользователь создан. Вот его ссылка для доступа:\n`https://t.me/nwproxybot?start={code}`', parse_mode=ParseMode.MARKDOWN)
|
await message.answer(f'Пользователь создан. Вот его ссылка для доступа:\n`https://t.me/nwproxybot?start={code}`', parse_mode=ParseMode.MARKDOWN)
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,13 @@ import logging
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from secrets import token_urlsafe
|
from secrets import token_urlsafe
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
from urllib.parse import parse_qs, urlencode, urlparse, urlunparse
|
||||||
|
|
||||||
|
from nwxraybot import Settings
|
||||||
from nwxraybot.models import User
|
from nwxraybot.models import User
|
||||||
|
|
||||||
|
config = Settings()
|
||||||
|
|
||||||
|
|
||||||
def get_subscription_info(telegram_id: str) -> str:
|
def get_subscription_info(telegram_id: str) -> str:
|
||||||
user: User = User.select().where(User.telegram_id == telegram_id).first()
|
user: User = User.select().where(User.telegram_id == telegram_id).first()
|
||||||
@@ -20,3 +24,16 @@ def get_subscription_info(telegram_id: str) -> str:
|
|||||||
|
|
||||||
def get_code(length: int = 10) -> str:
|
def get_code(length: int = 10) -> str:
|
||||||
return token_urlsafe(length)[:length]
|
return token_urlsafe(length)[:length]
|
||||||
|
|
||||||
|
|
||||||
|
def get_correct_user_url(url: str) -> str:
|
||||||
|
parsed_url = urlparse(url)
|
||||||
|
query = parse_qs(parsed_url.query)
|
||||||
|
query['fp'] = 'chrome'
|
||||||
|
query['alpn'] = 'h2,h3'
|
||||||
|
query['packetEncoding'] = 'xudp'
|
||||||
|
query['security'] = 'tls'
|
||||||
|
new_query = urlencode(query, doseq=True)
|
||||||
|
new_url = urlunparse((parsed_url.scheme, parsed_url.netloc.replace("127.0.0.1:1234", f"{
|
||||||
|
config.domain_name}:443"), parsed_url.path, parsed_url.params, new_query, parsed_url.fragment))
|
||||||
|
return new_url
|
||||||
|
|||||||
Reference in New Issue
Block a user