luci-app-ssr-plus: sync with upstream source

This commit is contained in:
CN_SZTL 2020-04-30 20:33:23 +08:00
parent 8db35ef623
commit 8d6fa8a4f7
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
5 changed files with 98 additions and 157 deletions

View File

@ -1,10 +1,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-ssr-plus
PKG_VERSION:=176
PKG_RELEASE:=7
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
PKG_VERSION:=177
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
@ -20,7 +18,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray
config PACKAGE_$(PKG_NAME)_INCLUDE_Trojan
bool "Include Trojan"
default y if i386||x86_64||arm||aarch64
config PACKAGE_$(PKG_NAME)_INCLUDE_Redsocks2
bool "Include Redsocks2"
default y if i386||x86_64||arm||aarch64
@ -34,14 +32,10 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server
default y if i386||x86_64||arm||aarch64
endef
define Package/$(PKG_NAME)
SECTION:=luci
CATEGORY:=LuCI
SUBMENU:=3. Applications
TITLE:=SS/SSR/V2Ray/Trojan LuCI interface
PKGARCH:=all
DEPENDS:=+shadowsocksr-libev-alt +ipset +ip-full +iptables-mod-tproxy +dnsmasq-full +coreutils +coreutils-base64 +pdnsd-alt +wget +lua +libuci-lua \
+microsocks +dns2socks +shadowsocks-libev-ss-local +shadowsocksr-libev-ssr-local +shadowsocks-libev-ss-redir +simple-obfs +tcpping +proxychains-ng \
LUCI_TITLE:=SS/SSR/V2Ray/Trojan LuCI interface
LUCI_PKGARCH:=all
LUCI_DEPENDS:=+shadowsocksr-libev-alt +ipset +ip-full +iptables-mod-tproxy +dnsmasq-full +coreutils +coreutils-base64 +pdnsd-alt +wget +lua +libuci-lua \
+microsocks +dns2socks +shadowsocks-libev-ss-local +shadowsocksr-libev-ssr-local +shadowsocks-libev-ss-redir +simple-obfs +tcpping \
+PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_plugin:v2ray-plugin \
+PACKAGE_$(PKG_NAME)_INCLUDE_V2ray:v2ray \
+PACKAGE_$(PKG_NAME)_INCLUDE_Trojan:trojan \
@ -49,72 +43,7 @@ define Package/$(PKG_NAME)
+PACKAGE_$(PKG_NAME)_INCLUDE_Redsocks2:redsocks2 \
+PACKAGE_$(PKG_NAME)_INCLUDE_Kcptun:kcptun-client \
+PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server:shadowsocksr-libev-server
endef
define Build/Prepare
endef
include $(TOPDIR)/feeds/luci/luci.mk
define Build/Compile
endef
define Package/$(PKG_NAME)/conffiles
/etc/ssr_ip
/etc/china_ssr.txt
/etc/config/shadowsocksr
/etc/config/white.list
/etc/config/black.list
/etc/config/netflix.list
/etc/dnsmasq.ssr/ad.conf
/etc/dnsmasq.ssr/gfw_list.conf
endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/etc
$(INSTALL_DATA) ./root/etc/china_ssr.txt $(1)/etc/china_ssr.txt
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./root/etc/config/shadowsocksr $(1)/etc/config/shadowsocksr
$(INSTALL_DATA) ./root/etc/config/*.list $(1)/etc/config/
$(INSTALL_DIR) $(1)/etc/dnsmasq.oversea
$(INSTALL_DATA) ./root/etc/dnsmasq.oversea/* $(1)/etc/dnsmasq.oversea/
$(INSTALL_DIR) $(1)/etc/dnsmasq.ssr
$(INSTALL_DATA) ./root/etc/dnsmasq.ssr/* $(1)/etc/dnsmasq.ssr/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./root/etc/init.d/* $(1)/etc/init.d/
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./root/etc/uci-defaults/* $(1)/etc/uci-defaults/
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./root/usr/bin/* $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/share/shadowsocksr
$(INSTALL_BIN) ./root/usr/share/shadowsocksr/*.sh $(1)/usr/share/shadowsocksr/
$(INSTALL_DATA) ./root/usr/share/shadowsocksr/*.lua $(1)/usr/share/shadowsocksr/
$(INSTALL_DIR) $(1)/usr/share/rpcd/acl.d
$(INSTALL_DATA) ./root/usr/share/rpcd/acl.d/*.json $(1)/usr/share/rpcd/acl.d/
$(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller
$(INSTALL_DATA) ./luasrc/controller/*.lua $(1)/usr/lib/lua/luci/controller/
$(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi/shadowsocksr
$(INSTALL_DATA) ./luasrc/model/cbi/shadowsocksr/*.lua $(1)/usr/lib/lua/luci/model/cbi/shadowsocksr/
$(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/shadowsocksr
$(INSTALL_DATA) ./luasrc/view/shadowsocksr/* $(1)/usr/lib/lua/luci/view/shadowsocksr/
$(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n
po2lmo ./po/zh_Hans/ssr-plus.po $(1)/usr/lib/lua/luci/i18n/ssr-plus.zh-cn.lmo
endef
define Package/$(PKG_NAME)/postrm
#!/bin/sh
rm -rf /etc/china_ssr.txt /etc/dnsmasq.ssr /etc/dnsmasq.oversea /etc/config/shadowsocksr /etc/config/black.list \
/etc/config/gfw.list /etc/config/white.list /etc/config/netflix.list /etc/config/netflixip.list 2>/dev/null
endef
$(eval $(call BuildPackage,$(PKG_NAME)))
# call BuildPackage - OpenWrt buildroot signature

View File

@ -47,15 +47,15 @@
var s = document.getElementById(urlname + '-status');
if (!s)
return false;
var v_server = document.getElementsByName('cbid.shadowsocksr.' + sid + '.server')[0];
var v_port = document.getElementsByName('cbid.shadowsocksr.' + sid + '.server_port')[0];
var v_protocol = document.getElementsByName('cbid.shadowsocksr.' + sid + '.protocol')[0];
var v_method = document.getElementsByName('cbid.shadowsocksr.' + sid + '.encrypt_method')[0];
var v_obfs = document.getElementsByName('cbid.shadowsocksr.' + sid + '.obfs')[0];
var v_password = document.getElementsByName('cbid.shadowsocksr.' + sid + '.password')[0];
var v_obfs_param = document.getElementsByName('cbid.shadowsocksr.' + sid + '.obfs_param')[0];
var v_protocol_param = document.getElementsByName('cbid.shadowsocksr.' + sid + '.protocol_param')[0];
var v_alias = document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0];
var v_server = document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server')[0];
var v_port = document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server_port')[0];
var v_protocol = document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.protocol')[0];
var v_method = document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.encrypt_method')[0];
var v_obfs = document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.obfs')[0];
var v_password = document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.password')[0];
var v_obfs_param = document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.obfs_param')[0];
var v_protocol_param = document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.protocol_param')[0];
var v_alias = document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.alias')[0];
var ssr_str = v_server.value + ":" +
v_port.value + ":" +
v_protocol.value + ":" +
@ -104,8 +104,8 @@
if (ssu[0] == "ssr") {
var sstr = b64decsafe(ssu[1]);
var ploc = sstr.indexOf("/?");
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].value = "ssr";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.type')[0].value = "ssr";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
var url0, param = "";
if (ploc > 0) {
url0 = sstr.substr(0, ploc);
@ -123,17 +123,17 @@
pdict[decodeURIComponent(b[0])] = decodeURIComponent(b[1] || '');
}
}
document.getElementsByName('cbid.shadowsocksr.' + sid + '.server')[0].value = ssm[1];
document.getElementsByName('cbid.shadowsocksr.' + sid + '.server_port')[0].value = ssm[2];
document.getElementsByName('cbid.shadowsocksr.' + sid + '.protocol')[0].value = ssm[3];
document.getElementsByName('cbid.shadowsocksr.' + sid + '.encrypt_method')[0].value = ssm[4];
document.getElementsByName('cbid.shadowsocksr.' + sid + '.obfs')[0].value = ssm[5];
document.getElementsByName('cbid.shadowsocksr.' + sid + '.password')[0].value = b64decsafe(ssm[6]);
document.getElementsByName('cbid.shadowsocksr.' + sid + '.obfs_param')[0].value = dictvalue(pdict, 'obfsparam');
document.getElementsByName('cbid.shadowsocksr.' + sid + '.protocol_param')[0].value = dictvalue(pdict, 'protoparam');
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server')[0].value = ssm[1];
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server_port')[0].value = ssm[2];
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.protocol')[0].value = ssm[3];
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.encrypt_method')[0].value = ssm[4];
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.obfs')[0].value = ssm[5];
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.password')[0].value = b64decsafe(ssm[6]);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.obfs_param')[0].value = dictvalue(pdict, 'obfsparam');
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.protocol_param')[0].value = dictvalue(pdict, 'protoparam');
var rem = pdict['remarks'];
if (typeof (rem) != 'undefined' && rem != '' && rem.length > 0)
document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0].value = b64decutf8safe(rem);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.alias')[0].value = b64decutf8safe(rem);
s.innerHTML = "<font color='green'>导入ShadowsocksR配置信息成功</font>";
return false;
} else if (ssu[0] == "ss") {
@ -169,35 +169,35 @@
method = userInfo.substr(0, userInfoSplitIndex);
password = userInfo.substr(userInfoSplitIndex + 1);
}
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].value = "ss";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
document.getElementsByName('cbid.shadowsocksr.' + sid + '.server')[0].value = server;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.server_port')[0].value = port;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.password')[0].value = password || "";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.encrypt_method_ss')[0].value = method || "";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.plugin')[0].value = plugin || "";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.plugin_opts')[0].value = pluginOpts || "";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.type')[0].value = "ss";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server')[0].value = server;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server_port')[0].value = port;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.password')[0].value = password || "";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.encrypt_method_ss')[0].value = method || "";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.plugin')[0].value = plugin || "";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.plugin_opts')[0].value = pluginOpts || "";
if (param != undefined) {
document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0].value = decodeURI(param);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.alias')[0].value = decodeURI(param);
}
s.innerHTML = "<font color='green'>导入Shadowsocks配置信息成功</font>";
} else {
var sstr = b64decsafe(url0);
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].value = "ss";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.type')[0].value = "ss";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
var team = sstr.split('@');
console.log(param);
var part1 = team[0].split(':');
var part2 = team[1].split(':');
document.getElementsByName('cbid.shadowsocksr.' + sid + '.server')[0].value = part2[0];
document.getElementsByName('cbid.shadowsocksr.' + sid + '.server_port')[0].value = part2[1];
document.getElementsByName('cbid.shadowsocksr.' + sid + '.password')[0].value = part1[1];
document.getElementsByName('cbid.shadowsocksr.' + sid + '.encrypt_method_ss')[0].value = part1[0];
document.getElementsByName('cbid.shadowsocksr.' + sid + '.plugin')[0].value = "";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.plugin_opts')[0].value = "";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server')[0].value = part2[0];
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server_port')[0].value = part2[1];
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.password')[0].value = part1[1];
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.encrypt_method_ss')[0].value = part1[0];
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.plugin')[0].value = "";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.plugin_opts')[0].value = "";
if (param != undefined) {
document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0].value = decodeURI(param);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.alias')[0].value = decodeURI(param);
}
s.innerHTML = "<font color='green'>导入Shadowsocks配置信息成功</font>";
}
@ -213,8 +213,8 @@
}
var sstr = url0;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].value = "trojan";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.type')[0].value = "trojan";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
var team = sstr.split('@');
var password = team[0]
var serverPart = team[1].split(':');
@ -230,63 +230,63 @@
}
}
document.getElementsByName('cbid.shadowsocksr.' + sid + '.server')[0].value = serverPart[0];
document.getElementsByName('cbid.shadowsocksr.' + sid + '.server_port')[0].value = port;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.password')[0].value = password;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls')[0].checked = true;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls')[0].dispatchEvent(event);
document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls_host')[0].value = queryParam.peer || '';
document.getElementsByName('cbid.shadowsocksr.' + sid + '.insecure')[0].checked = queryParam.allowInsecure === '1';
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server')[0].value = serverPart[0];
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server_port')[0].value = port;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.password')[0].value = password;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.tls')[0].checked = true;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.tls')[0].dispatchEvent(event);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.tls_host')[0].value = queryParam.peer || '';
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.insecure')[0].checked = queryParam.allowInsecure === '1';
if (param != undefined) {
document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0].value = decodeURI(param);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.alias')[0].value = decodeURI(param);
}
s.innerHTML = "<font color='green'>导入Trojan配置信息成功</font>";
return false;
} else if (ssu[0] == "vmess") {
var sstr = b64DecodeUnicode(ssu[1]);
var ploc = sstr.indexOf("/?");
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].value = "v2ray";
document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.type')[0].value = "v2ray";
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
var url0, param = "";
if (ploc > 0) {
url0 = sstr.substr(0, ploc);
param = sstr.substr(ploc + 2);
}
var ssm = JSON.parse(sstr);
document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0].value = ssm.ps;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.server')[0].value = ssm.add;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.server_port')[0].value = ssm.port;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.alter_id')[0].value = ssm.aid;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.vmess_id')[0].value = ssm.id;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.transport')[0].value = ssm.net;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.transport')[0].dispatchEvent(event);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.alias')[0].value = ssm.ps;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server')[0].value = ssm.add;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.server_port')[0].value = ssm.port;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.alter_id')[0].value = ssm.aid;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.vmess_id')[0].value = ssm.id;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.transport')[0].value = ssm.net;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.transport')[0].dispatchEvent(event);
if (ssm.net == "tcp") {
document.getElementsByName('cbid.shadowsocksr.' + sid + '.http_host')[0].value = ssm.host;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.http_path')[0].value = ssm.path;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.http_host')[0].value = ssm.host;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.http_path')[0].value = ssm.path;
}
if (ssm.net == "ws") {
document.getElementsByName('cbid.shadowsocksr.' + sid + '.ws_host')[0].value = ssm.host;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.ws_path')[0].value = ssm.path;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.ws_host')[0].value = ssm.host;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.ws_path')[0].value = ssm.path;
}
if (ssm.net == "h2") {
document.getElementsByName('cbid.shadowsocksr.' + sid + '.h2_host')[0].value = ssm.host;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.h2_path')[0].value = ssm.path;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.h2_host')[0].value = ssm.host;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.h2_path')[0].value = ssm.path;
}
if (ssm.net == "quic") {
document.getElementsByName('cbid.shadowsocksr.' + sid + '.quic_security')[0].value = ssm.securty;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.quic_key')[0].value = ssm.key;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.quic_security')[0].value = ssm.securty;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.quic_key')[0].value = ssm.key;
}
if (ssm.net == "kcp") {
document.getElementsByName('cbid.shadowsocksr.' + sid + '.kcp_guise')[0].value = ssm.type;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.kcp_guise')[0].value = ssm.type;
}
if (ssm.tls == "tls") {
document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls')[0].checked = true;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls')[0].dispatchEvent(event);
document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls_host')[0].value = ssm.host;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.tls')[0].checked = true;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.tls')[0].dispatchEvent(event);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.tls_host')[0].value = ssm.host;
}
document.getElementsByName('cbid.shadowsocksr.' + sid + '.mux')[0].checked = true;
document.getElementsByName('cbid.shadowsocksr.' + sid + '.mux')[0].dispatchEvent(event);
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.mux')[0].checked = true;
document.getElementsByName('widget.cbid.shadowsocksr.' + sid + '.mux')[0].dispatchEvent(event);
s.innerHTML = "<font color='green'>导入V2ray配置信息成功</font>";
return false;
}

View File

@ -741,7 +741,11 @@ stop() {
killall -q -9 dns2socks
killall -q -9 microsocks
killall -q -9 redsocks2
killall -q -9 pdnsd
if [ -f /var/run/pdnsd.pid ]; then
kill $(cat /var/run/pdnsd.pid) >/dev/null 2>&1
else
kill -9 $(busybox ps -w | grep pdnsd | grep -v grep | awk '{print $1}') >/dev/null 2>&1
fi
if [ -f "/tmp/dnsmasq.d/dnsmasq-ssr.conf" ]; then
rm -f /tmp/dnsmasq.d/dnsmasq-ssr.conf /tmp/dnsmasq.ssr/* /tmp/dnsmasq.oversea/*
/etc/init.d/dnsmasq restart >/dev/null 2>&1

View File

@ -0,0 +1,8 @@
/etc/ssr_ip
/etc/china_ssr.txt
/etc/config/shadowsocksr
/etc/config/white.list
/etc/config/black.list
/etc/config/netflix.list
/etc/dnsmasq.ssr/ad.conf
/etc/dnsmasq.ssr/gfw_list.conf

View File

@ -1,11 +1,11 @@
{
"luci-app-ssr-plus": {
"description": "Grant UCI access for luci-app-ssr-plus",
"read": {
"uci": [ "shadowsocksr" ]
"description": "Grant UCI access for luci-app-ssr-plus",
"read": {
"uci": [ "shadowsocksr" ]
},
"write": {
"uci": [ "shadowsocksr" ]
"write": {
"uci": [ "shadowsocksr" ]
}
}
}