Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Поддержка vless #23

Open
Yurbos opened this issue Aug 10, 2024 · 2 comments
Open

Поддержка vless #23

Yurbos opened this issue Aug 10, 2024 · 2 comments

Comments

@Yurbos
Copy link

Yurbos commented Aug 10, 2024

Так как большинство протоколов уже научились обнаруживать и блокировать, необходимо поддержать протокол vless.

У меня получилось добавить поддержку самостоятельно, посредством подмены одного из существующих впн(не было желания разбираться как добавить штатно)

Выкладываю примерный порядок действий, чтобы можно было проще интегрировать новый протокол.

  1. opkg install xray

  2. Получаем конфиг стрингу вида
    vless://{{{{{ID}}}}}}}@{{{{{{{IP}}}}}}}:443?type=tcp&security=reality&fp=firefox&pbk={{{{{{{KEY}}}}}}}}&sni={{{{{{{SNI}}}}}}}}&sid=ffffffffff&spx=%2F#{{{{{{{NAME}}}}}}}}}

  3. vi /opt/etc/xray/config.json
    Не осилил сам собрать конфиг, сделал странную компиляцию из всякого, но оно работает.
    config.json

  4. так как в конфиге выше я поднял xray но том же порту что и vmess, просто прибиваю vmess
    mv /opt/etc/init.d/S24v2ray /opt/root/S24v2ray

Мне было лень править под себя кнопки в боте, поэтому и подменил один из прописанных впн.
В моём случае список для vmess пробрасывается в демона с vless.

Единственное что сделал это в боте поправил рестарт сервисов и там вписал /opt/etc/init.d/S24xray для рестарта

@Yurbos
Copy link
Author

Yurbos commented Oct 6, 2024

Накидал очень плохо пахнущий код, но он работает для xray

def vless(key):
# global password, localportvless
encodedkey = key
vless_raw_conf = encodedkey
vless_id = vless_raw_conf.split("&")[0].split("?")[0].split("@")[0].split("//")[1]
vless_ip = vless_raw_conf.split("&")[0].split("?")[0].split("@")[1].split(":")[0]
vless_port = vless_raw_conf.split("&")[0].split("?")[0].split("@")[1].split(":")[1]
vless_type = vless_raw_conf.split("&")[0].split("?")[1].split("=")[1]
vless_conf = vless_raw_conf.split("&")
vless_conf.pop(0)
vless_security = vless_conf[0].split("=")[1]
vless_fp = vless_conf[1].split("=")[1]
vless_pbk = vless_conf[2].split("=")[1]
vless_sni = vless_conf[3].split("=")[1]
vless_sid = vless_conf[4].split("=")[1]
vless_spx = vless_conf[5].split("=")[1]
f = open('/opt/etc/xray/config.json', 'w')
sh = '{\n'
'"dns": {\n'
' "disableFallback": true,\n'
' "servers": [\n'
' {\n'
' "address": "https://8.8.8.8/dns-query",\n'
' "domains": [],\n'
' "queryStrategy": ""\n'
' },\n'
' {\n'
' "address": "localhost",\n'
' "domains": [],\n'
' "queryStrategy": ""\n'
' }\n'
' ],\n'
' "tag": "dns"\n'
' },\n'
' "inbounds": [\n'
' {\n'
' "port": 10810,\n'
' "listen": "::",\n'
' "protocol": "dokodemo-door",\n'
' "settings": {\n'
' "network": "tcp",\n'
' "followRedirect": true\n'
' },\n'
' "sniffing": {\n'
' "enabled": true,\n'
' "destOverride": [\n'
' "http",\n'
' "tls"\n'
' ]\n'
' }\n'
' },\n'
' {\n'
' "listen": "127.0.0.1",\n'
' "port": 2081,\n'
' "protocol": "http",\n'
' "sniffing": {\n'
' "destOverride": [\n'
' "http",\n'
' "tls",\n'
' "quic"\n'
' ],\n'
' "enabled": true,\n'
' "metadataOnly": false,\n'
' "routeOnly": true\n'
' },\n'
' "tag": "http-in"\n'
' }\n'
' ],\n'
' "log": {\n'
' "loglevel": "warning"\n'
' },\n'
' "outbounds": [\n'
' {\n'
' "domainStrategy": "AsIs",\n'
' "flow": null,\n'
' "protocol": "vless",\n'
' "settings": {\n'
' "vnext": [\n'
' {\n'
' "address": "' + str(vless_ip) + '",\n'
' "port": ' + str(vless_port) + ',\n'
' "users": [\n'
' {\n'
' "encryption": "none",\n'
' "flow": "",\n'
' "id": "' + str(vless_id) +'"\n'
' }\n'
' ]\n'
' }\n'
' ]\n'
' },\n'
' "streamSettings": {\n'
' "network": "' + str(vless_type) + '",\n'
' "realitySettings": {\n'
' "fingerprint": "' + str(vless_fp) + '",\n'
' "publicKey": "' + str(vless_pbk) + '",\n'
' "serverName": "' + str(vless_sni) + '",\n'
' "shortId": "' + str(vless_sid) + '",\n'
' "spiderX": "/"\n'
' },\n'
' "security": "' + str(vless_security) + '"\n'
' },\n'
' "tag": "proxy"\n'
' },\n'
' {\n'
' "domainStrategy": "",\n'
' "protocol": "freedom",\n'
' "tag": "direct"\n'
' },\n'
' {\n'
' "domainStrategy": "",\n'
' "protocol": "freedom",\n'
' "tag": "bypass"\n'
' },\n'
' {\n'
' "protocol": "blackhole",\n'
' "tag": "block"\n'
' },\n'
' {\n'
' "protocol": "dns",\n'
' "proxySettings": {\n'
' "tag": "proxy",\n'
' "transportLayer": true\n'
' },\n'
' "settings": {\n'
' "address": "8.8.8.8",\n'
' "network": "tcp",\n'
' "port": 53,\n'
' "userLevel": 1\n'
' },\n'
' "tag": "dns-out"\n'
' }\n'
' ],\n'
' "policy": {\n'
' "levels": {\n'
' "1": {\n'
' "connIdle": 30\n'
' }\n'
' },\n'
' "system": {\n'
' "statsOutboundDownlink": true,\n'
' "statsOutboundUplink": true\n'
' }\n'
' },\n'
' "routing": {\n'
' "domainStrategy": "AsIs",\n'
' "rules": [\n'
' {\n'
' "inboundTag": [\n'
' "socks-in",\n'
' "http-in"\n'
' ],\n'
' "outboundTag": "dns-out",\n'
' "port": "53",\n'
' "type": "field"\n'
' },\n'
' {\n'
' "outboundTag": "proxy",\n'
' "port": "0-65535",\n'
' "type": "field"\n'
' }\n'
' ]\n'
' },\n'
' "stats": {}\n'
'}\n'
''
f.write(sh)
f.close()

@Yurbos
Copy link
Author

Yurbos commented Oct 6, 2024

да, мне было лень сворачивать json
да, оно громоздкое

желающие могут поправить

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant