-
-
Save zjx20/25dff5a670ca55d8aba223f508691dfb to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# brew install jq | |
# brew install qrencode | |
config_file=v2rayx*.json | |
rss_file=rss.txt | |
cat $config_file | \ | |
jq --raw-output ' | |
def cred: | |
"\(.settings.vnext[0].users[0].security):\(.settings.vnext[0].users[0].id)@\(.settings.vnext[0].address):\(.settings.vnext[0].port)" | |
; | |
def network: | |
if .streamSettings.network == "ws" then | |
"path=\(.streamSettings.wsSettings.path)&obfs=websocket&obfsParam=\(.streamSettings.tlsSettings.serverName)" | |
else | |
"obfs=none" | |
end | |
; | |
def tls: | |
if .streamSettings.security == "tls" then | |
"tls=1&peer=\(.streamSettings.tlsSettings.serverName)" | |
else | |
"tls=0" | |
end | |
; | |
def mux: | |
if .mux?.enabled? then "mux=1" else "mux=0" end | |
; | |
def alterid: | |
"\(.settings.vnext[0].users[0].alterId)" | |
; | |
.outbounds | map(select(.protocol == "vmess")) | .[] | | |
cred as $cred | | |
network as $network | | |
tls as $tls | | |
mux as $mux | | |
alterid as $alterid | | |
{ cred: $cred, remarks: .tag, network: $network, tls: $tls, mux: $mux, alterid: $alterid } | | |
.cred = @base64 "\(.cred)" | .remarks = @uri "\(.remarks)" | | |
"vmess://\(.cred)?remarks=\(.remarks)&\(.network)&\(.tls)&\(.mux)&alterId=\(.alterid)"' | \ | |
base64 > $rss_file | |
# put $rss_file to somewhere, then your qr code for the subscribe link is | |
rss_url="https://yourserver/rss.txt" | |
qrencode -t ANSI $(echo "sub://$(echo "$rss_url" | base64)") |
@zjx20
Thank you for your instant response. However, I couldn't import this vmess URL into Nekoray or V2rayNG apps.
@zjx20
ooh, thanks. I didn't know there are different types of vmess URL !
@zjx20
I would also love to know how to convert a JSON file to a URL, but the English of "base64 decode output file" is just way too much for me, I'm not an IT guy.
@mulezic Sorry, I can't help you if you are not familiar with this IT stuff (e.g. shell scripts, base64 encoding, etc.). Maybe you can say more about what you're trying to do, and maybe it can be solved in a different way.
@mulezic OK, I understand. You can tell me what server software or script you are using, what client you are planning to use, and also a sample json config (without sensitive information). I can help you determine the feasibility of the situation.
@agn-7
shadowrocket can recognize the QR code and the content. Since there isn't a standard for the vmess URL schema and the subscription, don't expect it works for every app.
After converting your config file, we get:
Since you're not enabling TLS, the script produced a null value for the
obfsParam
param, which might cause problems.