Open Yurbos opened 3 months ago
Накидал очень плохо пахнущий код, но он работает для xray
def vless(key):
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()
да, мне было лень сворачивать json да, оно громоздкое
желающие могут поправить
Так как большинство протоколов уже научились обнаруживать и блокировать, необходимо поддержать протокол vless.
У меня получилось добавить поддержку самостоятельно, посредством подмены одного из существующих впн(не было желания разбираться как добавить штатно)
Выкладываю примерный порядок действий, чтобы можно было проще интегрировать новый протокол.
opkg install xray
Получаем конфиг стрингу вида vless://{{{{{ID}}}}}}}@{{{{{{{IP}}}}}}}:443?type=tcp&security=reality&fp=firefox&pbk={{{{{{{KEY}}}}}}}}&sni={{{{{{{SNI}}}}}}}}&sid=ffffffffff&spx=%2F#{{{{{{{NAME}}}}}}}}}
vi /opt/etc/xray/config.json Не осилил сам собрать конфиг, сделал странную компиляцию из всякого, но оно работает. config.json
так как в конфиге выше я поднял xray но том же порту что и vmess, просто прибиваю vmess mv /opt/etc/init.d/S24v2ray /opt/root/S24v2ray
Мне было лень править под себя кнопки в боте, поэтому и подменил один из прописанных впн. В моём случае список для vmess пробрасывается в демона с vless.
Единственное что сделал это в боте поправил рестарт сервисов и там вписал /opt/etc/init.d/S24xray для рестарта