mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
Telegram bridge: slidgram + SOCKS5 proxy, mod_privilege (XEP-0356), XEP audit
- docker-compose: сервис slidgram (Slidge->Telegram, внешний компонент XEP-0114) - кастомный образ slidgram-proxy: SOCKS5-патч (SLIDGRAM_PROXY -> Pyrogram) для маршрутизации через VPS01 - prosody: component telegram.nixg.ru (5347), component_secret в секции Component (0.11!), mod_privilege + privileged_entities (roster sync мостов), mod_pubsub включён - modules/mod_privilege.lua (community, hg.prosody.im) - docs/slidgram/: офлайн-копия документации slidgram (slidge.im) - README: секции 'Функциональность (XEP)' и 'Мост Telegram'; XEP-AUDIT.md (полный аудит XEP) - STATUS.md: мост ПОДКЛЮЧЁН, privilege, аудит
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
# Кастомный образ slidgram с поддержкой SOCKS5-прокси для маршрутизации Telegram
|
||||
# через VPS01 (SSH-туннель SOCKS5 172.27.0.1:1080, вне РФ).
|
||||
# Базовый: codeberg.org/slidge/slidgram:latest
|
||||
# Примечание: pysocks (модуль `socks`) УЖЕ есть в базовом образе (PySocks-1.7.1).
|
||||
|
||||
FROM codeberg.org/slidge/slidgram:latest
|
||||
|
||||
# Патч: добавить поддержку прокси в slidgram
|
||||
COPY patch-telegram.py /tmp/patch-telegram.py
|
||||
COPY patch-gateway.py /tmp/patch-gateway.py
|
||||
RUN python /tmp/patch-telegram.py && python /tmp/patch-gateway.py
|
||||
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Патч slidgram/gateway.py: передать SOCKS5-прокси из env SLIDGRAM_PROXY в Client при регистрации."""
|
||||
from pathlib import Path
|
||||
|
||||
p = Path("/venv/lib/python3.13/site-packages/slidgram/gateway.py")
|
||||
src = p.read_text()
|
||||
|
||||
old = ''' tg_client = Client(
|
||||
str(user_jid.bare),
|
||||
phone_number=phone,
|
||||
api_id=registration_form.get("api_id") or config.API_ID,
|
||||
api_hash=registration_form.get("api_hash") or config.API_HASH,
|
||||
workdir=global_config.HOME_DIR,
|
||||
)
|
||||
'''
|
||||
new = ''' _proxy = None
|
||||
_proxy_url = __import__("os").environ.get("SLIDGRAM_PROXY", "")
|
||||
if _proxy_url and _proxy_url.startswith("socks5://"):
|
||||
_h = _proxy_url.split("://", 1)[1]
|
||||
_host, _, _port = _h.partition(":")
|
||||
_proxy = dict(scheme="socks5", hostname=_host, port=int(_port))
|
||||
tg_client = Client(
|
||||
str(user_jid.bare),
|
||||
phone_number=phone,
|
||||
api_id=registration_form.get("api_id") or config.API_ID,
|
||||
api_hash=registration_form.get("api_hash") or config.API_HASH,
|
||||
workdir=global_config.HOME_DIR,
|
||||
proxy=_proxy,
|
||||
)
|
||||
'''
|
||||
assert old in src, "gateway.py: шаблон не найден"
|
||||
p.write_text(src.replace(old, new, 1))
|
||||
print("gateway.py patched OK")
|
||||
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Патч slidgram/telegram.py: прокинуть SOCKS5-прокси из env SLIDGRAM_PROXY в Client."""
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
p = Path("/venv/lib/python3.13/site-packages/slidgram/telegram.py")
|
||||
src = p.read_text()
|
||||
|
||||
old = ''' def __init__(self, name: str) -> None:
|
||||
super().__init__(name, workdir=str(global_config.HOME_DIR))
|
||||
'''
|
||||
new = ''' def __init__(self, name: str) -> None:
|
||||
import os
|
||||
_proxy = None
|
||||
_proxy_url = os.environ.get("SLIDGRAM_PROXY", "")
|
||||
if _proxy_url and _proxy_url.startswith("socks5://"):
|
||||
_h = _proxy_url.split("://", 1)[1]
|
||||
_host, _, _port = _h.partition(":")
|
||||
_proxy = dict(scheme="socks5", hostname=_host, port=int(_port))
|
||||
super().__init__(name, workdir=str(global_config.HOME_DIR), proxy=_proxy)
|
||||
'''
|
||||
assert old in src, "telegram.py: шаблон не найден"
|
||||
p.write_text(src.replace(old, new, 1))
|
||||
print("telegram.py patched OK")
|
||||
Reference in New Issue
Block a user