From 4c1ddf0aa62e15117af4b58683f1da0e6d201c3d Mon Sep 17 00:00:00 2001 From: midoks Date: Mon, 8 Jun 2020 08:06:14 +0800 Subject: [PATCH] v2ray --- plugins/v2ray/ico.png | Bin 0 -> 439 bytes plugins/v2ray/index.html | 19 ++++ plugins/v2ray/index.py | 164 ++++++++++++++++++++++++++++++++ plugins/v2ray/info.json | 14 +++ plugins/v2ray/install.sh | 46 +++++++++ plugins/v2ray/js/shadowsocks.js | 92 ++++++++++++++++++ plugins/v2ray/tmp/v2ray.json | 43 +++++++++ 7 files changed, 378 insertions(+) create mode 100644 plugins/v2ray/ico.png create mode 100755 plugins/v2ray/index.html create mode 100755 plugins/v2ray/index.py create mode 100755 plugins/v2ray/info.json create mode 100755 plugins/v2ray/install.sh create mode 100755 plugins/v2ray/js/shadowsocks.js create mode 100644 plugins/v2ray/tmp/v2ray.json diff --git a/plugins/v2ray/ico.png b/plugins/v2ray/ico.png new file mode 100644 index 0000000000000000000000000000000000000000..b5047906b31a71e0002fe03f7a541e9f7c9cd8b6 GIT binary patch literal 439 zcmV;o0Z9IdP)9`0O)xI!XhP`>F)qgheZmq zW~+%ZT0L~8`!{Al_37n&-U=aR&w>wvV5Zgq6^IIe@~iv5=aj!FMm`9Fg~|!6rd|a~ z08OG!40KW60^q#{{GLL#;=J9jYbm63dKnsv7-}J>#CtMAzlpJVm{buH1Drw_=gO7= z02Taw2L67X{)#c$j51!QEk~Nk1Or9v#WKh1v}J3wucJR`pj}84F|X4$Wc4m$o8XVT zyiRxj7zW3vQ`I#ilQzJ_U;t3{n1RoK4;)TaG8sZlxt^120JBb;fT9Ork_F-p13(n7 h7gJ`Smog%pTmh~{RzS5%{H_21002ovPDHLkV1gq#yLbQq literal 0 HcmV?d00001 diff --git a/plugins/v2ray/index.html b/plugins/v2ray/index.html new file mode 100755 index 000000000..b675c6865 --- /dev/null +++ b/plugins/v2ray/index.html @@ -0,0 +1,19 @@ +
+
+
+

服务

+

自启动

+

配置修改

+

日志

+

说明

+
+
+
+
+
+
+ \ No newline at end of file diff --git a/plugins/v2ray/index.py b/plugins/v2ray/index.py new file mode 100755 index 000000000..53ee215e2 --- /dev/null +++ b/plugins/v2ray/index.py @@ -0,0 +1,164 @@ +# coding:utf-8 + +import sys +import io +import os +import time +import shutil + +sys.path.append(os.getcwd() + "/class/core") +import public + +app_debug = False +if public.isAppleSystem(): + app_debug = True + + +def getPluginName(): + return 'v2ray' + + +def getPluginDir(): + return public.getPluginDir() + '/' + getPluginName() + + +def getServerDir(): + return public.getServerDir() + '/' + getPluginName() + + +def getArgs(): + args = sys.argv[2:] + tmp = {} + args_len = len(args) + + if args_len == 1: + t = args[0].strip('{').strip('}') + t = t.split(':') + tmp[t[0]] = t[1] + elif args_len > 1: + for i in range(len(args)): + t = args[i].split(':') + tmp[t[0]] = t[1] + + return tmp + + +def checkArgs(data, ck=[]): + for i in range(len(ck)): + if not ck[i] in data: + return (False, public.returnJson(False, '参数:(' + ck[i] + ')没有!')) + return (True, public.returnJson(True, 'ok')) + + +def status(): + cmd = "ps -ef|grep ssserver |grep -v grep | awk '{print $2}'" + data = public.execShell(cmd) + if data[0] == '': + return 'stop' + return 'start' + + +def start(): + + shell_cmd = 'service ' + getPluginName() + ' start' + data = public.execShell(shell_cmd) + + if data[0] == '': + return 'ok' + return data[1] + + +def stop(): + shell_cmd = 'service ' + getPluginName() + ' stop' + + data = public.execShell(shell_cmd) + if data[0] == '': + return 'ok' + return data[1] + + +def restart(): + shell_cmd = 'service ' + getPluginName() + ' restart' + data = public.execShell(shell_cmd) + if data[0] == '': + return 'ok' + return data[1] + + +def reload(): + shell_cmd = 'service ' + getPluginName() + ' reload' + data = public.execShell(shell_cmd) + if data[0] == '': + return 'ok' + return data[1] + + +def getPathFile(): + if public.isAppleSystem(): + return getServerDir() + '/config.json' + return '/etc/v2ray/config.json' + + +def getInitDFile(): + if app_debug: + return '/tmp/' + getPluginName() + return '/etc/init.d/' + getPluginName() + + +def initdStatus(): + if not app_debug: + if public.isAppleSystem(): + return "Apple Computer does not support" + initd_bin = getInitDFile() + if os.path.exists(initd_bin): + return 'ok' + return 'fail' + + +def initdInstall(): + import shutil + if not app_debug: + if public.isAppleSystem(): + return "Apple Computer does not support" + + public.execShell('chmod +x ' + initd_bin) + public.execShell('chkconfig --add ' + getPluginName()) + return 'ok' + + +def initdUinstall(): + if not app_debug: + if public.isAppleSystem(): + return "Apple Computer does not support" + + public.execShell('chkconfig --del ' + getPluginName()) + return 'ok' + + +def getLog(): + return '/var/log/shadowsocks.log' + +if __name__ == "__main__": + func = sys.argv[1] + if func == 'status': + print status() + elif func == 'start': + print start() + elif func == 'stop': + print stop() + elif func == 'restart': + print restart() + elif func == 'reload': + print reload() + elif func == 'conf': + print getPathFile() + elif func == 'initd_status': + print initdStatus() + elif func == 'initd_install': + print initdInstall() + elif func == 'initd_uninstall': + print initdUinstall() + elif func == 'run_log': + print getLog() + else: + print 'error' diff --git a/plugins/v2ray/info.json b/plugins/v2ray/info.json new file mode 100755 index 000000000..ab21e6cc2 --- /dev/null +++ b/plugins/v2ray/info.json @@ -0,0 +1,14 @@ +{ + "title":"v2ray", + "tip":"soft", + "name":"v2ray", + "type":"运行环境", + "ps":"v2ray", + "versions":"1.0", + "shell":"install.sh", + "checks":"server/v2ray", + "author":"midoks", + "home":"https://github.com/v2ray/v2ray-core", + "date":"2020-06-08", + "pid": "4" +} \ No newline at end of file diff --git a/plugins/v2ray/install.sh b/plugins/v2ray/install.sh new file mode 100755 index 000000000..bc75c7993 --- /dev/null +++ b/plugins/v2ray/install.sh @@ -0,0 +1,46 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH + + +curPath=`pwd` +rootPath=$(dirname "$curPath") +rootPath=$(dirname "$rootPath") +serverPath=$(dirname "$rootPath") + + +install_tmp=${rootPath}/tmp/mw_install.pl + +SYSOS=`uname` + +Install_v2ray() +{ + isStart="" + echo '正在安装脚本文件...' > $install_tmp + mkdir -p $serverPath/v2ray + echo '1.0' > $serverPath/v2ray/version.pl + + if [ "Darwin" == "$SYSOS" ];then + echo 'macosx unavailable' > $install_tmp + cat $curPath/tmp/v2ray.json > $serverPath/v2ray/config.json + exit 0 + fi + + bash <(curl -L -s https://install.direct/go.sh) + cat $curPath/tmp/v2ray.json > /etc/v2ray/config.json + + echo 'install complete' > $install_tmp +} + +Uninstall_v2ray() +{ + rm -rf $serverPath/v2ray + echo "Uninstall completed" > $install_tmp +} + +action=$1 +if [ "${1}" == 'install' ];then + Install_v2ray +else + Uninstall_v2ray +fi diff --git a/plugins/v2ray/js/shadowsocks.js b/plugins/v2ray/js/shadowsocks.js new file mode 100755 index 000000000..ebfaed948 --- /dev/null +++ b/plugins/v2ray/js/shadowsocks.js @@ -0,0 +1,92 @@ +function str2Obj(str){ + var data = {}; + kv = str.split('&'); + for(i in kv){ + v = kv[i].split('='); + data[v[0]] = v[1]; + } + return data; +} + +function lpPost(method,args,callback, title){ + + var _args = null; + if (typeof(args) == 'string'){ + _args = JSON.stringify(str2Obj(args)); + } else { + _args = JSON.stringify(args); + } + + var _title = '正在获取...'; + if (typeof(title) != 'undefined'){ + _title = title; + } + + var loadT = layer.msg(_title, { icon: 16, time: 0, shade: 0.3 }); + $.post('/plugins/run', {name:'shadowsocks', func:method, args:_args}, function(data) { + layer.close(loadT); + if (!data.status){ + layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); + return; + } + + if(typeof(callback) == 'function'){ + callback(data); + } + },'json'); +} + +function lpAsyncPost(method,args){ + var _args = null; + if (typeof(args) == 'string'){ + _args = JSON.stringify(str2Obj(args)); + } else { + _args = JSON.stringify(args); + } + + var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); + return syncPost('/plugins/run', {name:'l2tp', func:method, args:_args}); +} + +function userList(){ + lpPost('user_list', '' ,function(data){ + var rdata = $.parseJSON(data['data']); + + if (!rdata['status']){ + layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']}); + return; + } + var list = rdata['data']; + + var con = ''; + con += '
'; + con += ''; + con += ''; + con += ''; + con += ''; + con += ''; + + con += ''; + + for (var i = 0; i < list.length; i++) { + con += ''+ + '' + + '' + + ''; + } + + con += ''; + con += '
用户密码操作(添加)
' + list[i]['user']+'' + list[i]['pwd']+'改密|删除
'; + + $(".soft-man-con").html(con); + }); +} + + + +function readme(){ + var readme = '
    '; + readme += '
  • 需开放配置文件[port_password]端口
  • '; + readme += '
'; + $('.soft-man-con').html(readme); +} diff --git a/plugins/v2ray/tmp/v2ray.json b/plugins/v2ray/tmp/v2ray.json new file mode 100644 index 000000000..013d51573 --- /dev/null +++ b/plugins/v2ray/tmp/v2ray.json @@ -0,0 +1,43 @@ +{ + "inbounds": [{ + "port": 34861, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": "6e1e5234-05ee-45fe-b28d-80e91edb7f30", + "level": 1, + "alterId": 64 + } + ] + } + }], + "outbounds": [{ + "protocol": "freedom", + "settings": {} + },{ + "protocol": "blackhole", + "settings": {}, + "tag": "blocked" + }], + "routing": { + "rules": [ + { + "type": "field", + "ip": ["geoip:private"], + "outboundTag": "blocked" + } + ] + }, + "inboundDetour": [ + { + "protocol": "shadowsocks", + "port": 30008, + "settings": { + "method": "aes-256-cfb", + "password": "123123123", + "udp": false + } + } + ] +}