fpfeng / nnr-moe-cli

NNR的非官方CLI工具

Home Page:https://nnr.moe

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NNR的非官方CLI工具

对HTTP API的简单封装,调用成功会返回原始JSON,请自行发挥后续数据操作

安装

https://github.com/fpfeng/nnr-moe-cli/releases 获取适合你的二进制文件

wget -O nnr-moe-cli https://github.com/fpfeng/nnr-moe-cli/releases/latest/download/nnr-moe-cli_linux_amd64
sudo mv nnr-moe-cli /usr/local/bin/nnr-moe-cli && chmod +x /usr/local/bin/nnr-moe-cli

使用

先在 https://nnr.moe/user/setting 获取你的的API密钥,存为环境变量

export NNRMOE_TOKEN="..."

打开 https://nnr.moe/knowledge/API%E6%96%87%E6%A1%A3 查看下面规则命令的参数说明

获取所有可使用节点

nnr-moe-cli  --token $NNRMOE_TOKEN servers
nnr-moe-cli  --token $NNRMOE_TOKEN servers|jq # 格式化查看非必需

获取所有规则

nnr-moe-cli  --token $NNRMOE_TOKEN rules

添加规则

nnr-moe-cli  --token $NNRMOE_TOKEN add-rule --sid 运行`servers`结果里面的sid --remote 8.8.8.8 --rport 22 --type tcp --name ssh8888

编辑规则

nnr-moe-cli  --token $NNRMOE_TOKEN edit-rule --rid 运行`rules`结果里面的rid --remote 8.8.8.8 --rport 53 --type tcp+udp --name dns8888

删除规则

nnr-moe-cli  --token $NNRMOE_TOKEN delete-rule --rid 规则结果里面的rid

获取单个规则

nnr-moe-cli  --token $NNRMOE_TOKEN get-rule --rid `规则id`

获取单个节点

nnr-moe-cli  --token $NNRMOE_TOKEN get-server --sid `节点id`

复杂使用例子

从http调用生成ss订阅字符串然后转换配置

  1. 配置你落地ss监听端口55555并在nnr添加规则,对应脚本里使用select(.rport == 55555)过滤得到所有ss规则。当然可以换成例如规则备注含有666对应select( .name|contains("666") ),记得安装jq
  2. 保存生成订阅的脚本到/usr/local/bin/nnr2sip002.sh
#!/bin/bash
#https://github.com/shadowsocks/shadowsocks-org/wiki/SIP002-URI-Scheme
method="chacha20-ietf-poly1305";
password="yoursspassword";
export userinfo=$(echo -ne "$method:$password" | base64 -w 0 );
nnrmoe_token="..";
nnr-moe-cli --token $nnrmoe_token rules | jq -c '.Data[] | select(.rport == 55555)' | jq '.host,.port,.name' -r | xargs -d '\n' -n 3 bash -c 'echo ss://$userinfo@$0:$1#$2' | base64 -w 0
  • 如果设置了Cloudflare DDNS,可以用sid替换host字段组装域名
nnr-moe-cli --token $nnrmoe_token rules | jq -c '.Data[] | select(.rport == 55555)' | jq '.sid,.port,.name' -r | xargs -d '\n' -n 3 bash -c 'echo ss://$userinfo@$0.yourdomain.com:$1#$2' | base64 -w 0
  1. 安装openresty后添加配置
    location /nnr2sip002 {
        add_header Content-Type "text/html; charset=UTF-8";
        content_by_lua_block {
                local handle = io.popen('/usr/local/bin/nnr2sip002.sh')
                local result, err = handle:read('*a')
                handle:close()
                ngx.say(result)
        }
    }
  1. 使用tindy2013/subconverter补全分流规则并转换配置,这一步可以用网页版例如 https://acl4ssr-sub.github.io 操作,订阅链接就是上一步得到的http://你的域名或ip/nnr2sip002

About

NNR的非官方CLI工具

https://nnr.moe

License:MIT License


Languages

Language:Go 100.0%