mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
luci-app-ssr-plus:Fix Socks5 startup errors (#4310)
* luci-app-ssr-plus:Fix Socks5 startup errors * luci-app-ssr-plus:Fix pdnsd EOF warning errors * luci-app-ssr-plus: ssr-switch Adjust Output * luci-app-ssr-plus: Data Update
This commit is contained in:
parent
3ad7a35c91
commit
8a02b49078
@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-ssr-plus
|
||||
PKG_VERSION:=176
|
||||
PKG_RELEASE:=4
|
||||
PKG_RELEASE:=5
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
|
@ -243,7 +243,6 @@ o.rmempty = true
|
||||
o:depends("type", "v2ray")
|
||||
|
||||
-- [[ TCP部分 ]]--
|
||||
|
||||
-- TCP伪装
|
||||
o = s:option(ListValue, "tcp_guise", translate("Camouflage Type"))
|
||||
o:depends("transport", "tcp")
|
||||
@ -262,7 +261,6 @@ o:depends("tcp_guise", "http")
|
||||
o.rmempty = true
|
||||
|
||||
-- [[ WS部分 ]]--
|
||||
|
||||
-- WS域名
|
||||
o = s:option(Value, "ws_host", translate("WebSocket Host"))
|
||||
o:depends("transport", "ws")
|
||||
@ -274,7 +272,6 @@ o:depends("transport", "ws")
|
||||
o.rmempty = true
|
||||
|
||||
-- [[ H2部分 ]]--
|
||||
|
||||
-- H2域名
|
||||
o = s:option(Value, "h2_host", translate("HTTP/2 Host"))
|
||||
o:depends("transport", "h2")
|
||||
@ -286,7 +283,6 @@ o:depends("transport", "h2")
|
||||
o.rmempty = true
|
||||
|
||||
-- [[ QUIC部分 ]]--
|
||||
|
||||
o = s:option(ListValue, "quic_security", translate("QUIC Security"))
|
||||
o:depends("transport", "quic")
|
||||
o.rmempty = true
|
||||
@ -309,7 +305,6 @@ o:value("dtls", "DTLS 1.2")
|
||||
o:value("wireguard", "WireGuard")
|
||||
|
||||
-- [[ mKCP部分 ]]--
|
||||
|
||||
o = s:option(ListValue, "kcp_guise", translate("Camouflage Type"))
|
||||
o:depends("transport", "kcp")
|
||||
o:value("none", translate("None"))
|
||||
|
@ -7,7 +7,6 @@ local shadowsocksr = "shadowsocksr"
|
||||
local uci = luci.model.uci.cursor()
|
||||
|
||||
m = Map(shadowsocksr, translate("ShadowSocksR Plus+ Settings"))
|
||||
|
||||
m:section(SimpleSection).template = "shadowsocksr/status"
|
||||
|
||||
local server_table = {}
|
||||
|
@ -84,7 +84,6 @@ o.remove = function(self, section, value)
|
||||
nixio.fs.writefile(escconf, "")
|
||||
end
|
||||
|
||||
|
||||
s:tab("block", translate("Black Domain List"))
|
||||
|
||||
local blockconf = "/etc/ssr/black.list"
|
||||
|
@ -49,9 +49,6 @@ if m.uci:get(shadowsocksr, sid) ~= "server_config" then
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
-- [[ Server Setting ]]--
|
||||
s = m:section(NamedSection, sid, "server_config")
|
||||
s.anonymous = true
|
||||
|
@ -14,7 +14,6 @@ end)
|
||||
m = Map(shadowsocksr, translate("Servers subscription and manage"))
|
||||
|
||||
-- Server Subscribe
|
||||
|
||||
s = m:section(TypedSection, "server_subscribe")
|
||||
s.anonymous = true
|
||||
|
||||
@ -22,7 +21,6 @@ o = s:option(Flag, "auto_update", translate("Auto Update"))
|
||||
o.rmempty = false
|
||||
o.description = translate("Auto Update Server subscription, GFW list and CHN route")
|
||||
|
||||
|
||||
o = s:option(ListValue, "auto_update_time", translate("Update time (every day)"))
|
||||
for t = 0,23 do
|
||||
o:value(t, t..":00")
|
||||
@ -53,7 +51,6 @@ o = s:option(Flag, "proxy", translate("Through proxy update"))
|
||||
o.rmempty = false
|
||||
o.description = translate("Through proxy update list, Not Recommended ")
|
||||
|
||||
|
||||
o = s:option(Button,"subscribe", translate("Update All Subscribe Severs"))
|
||||
o.rawhtml = true
|
||||
o.template = "shadowsocksr/subscribe"
|
||||
@ -114,7 +111,6 @@ o = s:option(DummyValue, "server", translate("Ping Latency"))
|
||||
o.template="shadowsocksr/ping"
|
||||
o.width="10%"
|
||||
|
||||
|
||||
node = s:option(Button,"apply_node",translate("Apply"))
|
||||
node.inputstyle = "apply"
|
||||
node.write = function(self, section)
|
||||
|
@ -514,6 +514,8 @@ server=/.api.pureapk.com/127.0.0.1#5335
|
||||
ipset=/.api.pureapk.com/gfwlist
|
||||
server=/.api.recaptcha.net/127.0.0.1#5335
|
||||
ipset=/.api.recaptcha.net/gfwlist
|
||||
server=/.api.tenor.com/127.0.0.1#5335
|
||||
ipset=/.api.tenor.com/gfwlist
|
||||
server=/.apiary.io/127.0.0.1#5335
|
||||
ipset=/.apiary.io/gfwlist
|
||||
server=/.apidocs.linksalpha.com/127.0.0.1#5335
|
||||
@ -746,8 +748,6 @@ server=/.bbc.co.uk/127.0.0.1#5335
|
||||
ipset=/.bbc.co.uk/gfwlist
|
||||
server=/.bbc.com/127.0.0.1#5335
|
||||
ipset=/.bbc.com/gfwlist
|
||||
server=/.bbc.in/127.0.0.1#5335
|
||||
ipset=/.bbc.in/gfwlist
|
||||
server=/.bbcchinese.com/127.0.0.1#5335
|
||||
ipset=/.bbcchinese.com/gfwlist
|
||||
server=/.bbchat.tv/127.0.0.1#5335
|
||||
@ -4024,8 +4024,6 @@ server=/.hitbtc.com/127.0.0.1#5335
|
||||
ipset=/.hitbtc.com/gfwlist
|
||||
server=/.hitomi.la/127.0.0.1#5335
|
||||
ipset=/.hitomi.la/gfwlist
|
||||
server=/.hiwifi.com/127.0.0.1#5335
|
||||
ipset=/.hiwifi.com/gfwlist
|
||||
server=/.hizb-ut-tahrir.info/127.0.0.1#5335
|
||||
ipset=/.hizb-ut-tahrir.info/gfwlist
|
||||
server=/.hizb-ut-tahrir.org/127.0.0.1#5335
|
||||
@ -4894,8 +4892,6 @@ server=/.kepard.com/127.0.0.1#5335
|
||||
ipset=/.kepard.com/gfwlist
|
||||
server=/.kex.com/127.0.0.1#5335
|
||||
ipset=/.kex.com/gfwlist
|
||||
server=/.keycdn.com/127.0.0.1#5335
|
||||
ipset=/.keycdn.com/gfwlist
|
||||
server=/.khabdha.org/127.0.0.1#5335
|
||||
ipset=/.khabdha.org/gfwlist
|
||||
server=/.khmusic.com.tw/127.0.0.1#5335
|
||||
@ -4934,8 +4930,6 @@ server=/.kk-whys.co.jp/127.0.0.1#5335
|
||||
ipset=/.kk-whys.co.jp/gfwlist
|
||||
server=/.kkbox.com/127.0.0.1#5335
|
||||
ipset=/.kkbox.com/gfwlist
|
||||
server=/.kknews.cc/127.0.0.1#5335
|
||||
ipset=/.kknews.cc/gfwlist
|
||||
server=/.kmuh.org.tw/127.0.0.1#5335
|
||||
ipset=/.kmuh.org.tw/gfwlist
|
||||
server=/.kobo.com/127.0.0.1#5335
|
||||
@ -6306,8 +6300,6 @@ server=/.openvpn.org/127.0.0.1#5335
|
||||
ipset=/.openvpn.org/gfwlist
|
||||
server=/.openwebster.com/127.0.0.1#5335
|
||||
ipset=/.openwebster.com/gfwlist
|
||||
server=/.openwrt.org.cn/127.0.0.1#5335
|
||||
ipset=/.openwrt.org.cn/gfwlist
|
||||
server=/.opml.radiotime.com/127.0.0.1#5335
|
||||
ipset=/.opml.radiotime.com/gfwlist
|
||||
server=/.opus-gaming.com/127.0.0.1#5335
|
||||
@ -6678,6 +6670,8 @@ server=/.pornhub.com/127.0.0.1#5335
|
||||
ipset=/.pornhub.com/gfwlist
|
||||
server=/.pornhubdeutsch.net/127.0.0.1#5335
|
||||
ipset=/.pornhubdeutsch.net/gfwlist
|
||||
server=/.pornhubpremium.com/127.0.0.1#5335
|
||||
ipset=/.pornhubpremium.com/gfwlist
|
||||
server=/.pornmm.net/127.0.0.1#5335
|
||||
ipset=/.pornmm.net/gfwlist
|
||||
server=/.pornoxo.com/127.0.0.1#5335
|
||||
@ -6970,8 +6964,6 @@ server=/.rcinet.ca/127.0.0.1#5335
|
||||
ipset=/.rcinet.ca/gfwlist
|
||||
server=/.rconversation.blogs.com/127.0.0.1#5335
|
||||
ipset=/.rconversation.blogs.com/gfwlist
|
||||
server=/.read01.com/127.0.0.1#5335
|
||||
ipset=/.read01.com/gfwlist
|
||||
server=/.read100.com/127.0.0.1#5335
|
||||
ipset=/.read100.com/gfwlist
|
||||
server=/.readingtimes.com.tw/127.0.0.1#5335
|
||||
@ -7472,8 +7464,6 @@ server=/.sino-monthly.com/127.0.0.1#5335
|
||||
ipset=/.sino-monthly.com/gfwlist
|
||||
server=/.sinoants.com/127.0.0.1#5335
|
||||
ipset=/.sinoants.com/gfwlist
|
||||
server=/.sinocast.com/127.0.0.1#5335
|
||||
ipset=/.sinocast.com/gfwlist
|
||||
server=/.sinocism.com/127.0.0.1#5335
|
||||
ipset=/.sinocism.com/gfwlist
|
||||
server=/.sinomontreal.ca/127.0.0.1#5335
|
||||
@ -8872,8 +8862,6 @@ server=/.twitterrific.com/127.0.0.1#5335
|
||||
ipset=/.twitterrific.com/gfwlist
|
||||
server=/.twittertim.es/127.0.0.1#5335
|
||||
ipset=/.twittertim.es/gfwlist
|
||||
server=/.twitthat.com/127.0.0.1#5335
|
||||
ipset=/.twitthat.com/gfwlist
|
||||
server=/.twitturk.com/127.0.0.1#5335
|
||||
ipset=/.twitturk.com/gfwlist
|
||||
server=/.twitturly.com/127.0.0.1#5335
|
||||
@ -9084,8 +9072,6 @@ server=/.uyghurcongress.org/127.0.0.1#5335
|
||||
ipset=/.uyghurcongress.org/gfwlist
|
||||
server=/.uyghurensemble.co.uk/127.0.0.1#5335
|
||||
ipset=/.uyghurensemble.co.uk/gfwlist
|
||||
server=/.uyghurpen.org/127.0.0.1#5335
|
||||
ipset=/.uyghurpen.org/gfwlist
|
||||
server=/.uyghurpress.com/127.0.0.1#5335
|
||||
ipset=/.uyghurpress.com/gfwlist
|
||||
server=/.uyghurstudies.org/127.0.0.1#5335
|
||||
@ -9334,8 +9320,6 @@ server=/.vpnworldwide.com/127.0.0.1#5335
|
||||
ipset=/.vpnworldwide.com/gfwlist
|
||||
server=/.vporn.com/127.0.0.1#5335
|
||||
ipset=/.vporn.com/gfwlist
|
||||
server=/.vpser.net/127.0.0.1#5335
|
||||
ipset=/.vpser.net/gfwlist
|
||||
server=/.vraiesagesse.net/127.0.0.1#5335
|
||||
ipset=/.vraiesagesse.net/gfwlist
|
||||
server=/.vrmtr.com/127.0.0.1#5335
|
||||
@ -9504,8 +9488,6 @@ server=/.wezhiyong.org/127.0.0.1#5335
|
||||
ipset=/.wezhiyong.org/gfwlist
|
||||
server=/.wezone.net/127.0.0.1#5335
|
||||
ipset=/.wezone.net/gfwlist
|
||||
server=/.wforum.com/127.0.0.1#5335
|
||||
ipset=/.wforum.com/gfwlist
|
||||
server=/.wha.la/127.0.0.1#5335
|
||||
ipset=/.wha.la/gfwlist
|
||||
server=/.whatblocked.com/127.0.0.1#5335
|
||||
@ -9694,8 +9676,6 @@ server=/.wtbn.org/127.0.0.1#5335
|
||||
ipset=/.wtbn.org/gfwlist
|
||||
server=/.wtfpeople.com/127.0.0.1#5335
|
||||
ipset=/.wtfpeople.com/gfwlist
|
||||
server=/.wuerkaixi.com/127.0.0.1#5335
|
||||
ipset=/.wuerkaixi.com/gfwlist
|
||||
server=/.wufafangwen.com/127.0.0.1#5335
|
||||
ipset=/.wufafangwen.com/gfwlist
|
||||
server=/.wufi.org.tw/127.0.0.1#5335
|
||||
@ -9756,10 +9736,6 @@ server=/.www.powerpointninja.com/127.0.0.1#5335
|
||||
ipset=/.www.powerpointninja.com/gfwlist
|
||||
server=/.www.s4miniarchive.com/127.0.0.1#5335
|
||||
ipset=/.www.s4miniarchive.com/gfwlist
|
||||
server=/.www.shadowsocks.com/127.0.0.1#5335
|
||||
ipset=/.www.shadowsocks.com/gfwlist
|
||||
server=/.www.shwchurch.org/127.0.0.1#5335
|
||||
ipset=/.www.shwchurch.org/gfwlist
|
||||
server=/.www.taup.org.tw/127.0.0.1#5335
|
||||
ipset=/.www.taup.org.tw/gfwlist
|
||||
server=/.www.wan-press.org/127.0.0.1#5335
|
||||
@ -10170,16 +10146,10 @@ server=/.zhongguorenquan.org/127.0.0.1#5335
|
||||
ipset=/.zhongguorenquan.org/gfwlist
|
||||
server=/.zhongguotese.net/127.0.0.1#5335
|
||||
ipset=/.zhongguotese.net/gfwlist
|
||||
server=/.zhongmeng.org/127.0.0.1#5335
|
||||
ipset=/.zhongmeng.org/gfwlist
|
||||
server=/.zhoushuguang.com/127.0.0.1#5335
|
||||
ipset=/.zhoushuguang.com/gfwlist
|
||||
server=/.zhreader.com/127.0.0.1#5335
|
||||
ipset=/.zhreader.com/gfwlist
|
||||
server=/.zhuangbi.me/127.0.0.1#5335
|
||||
ipset=/.zhuangbi.me/gfwlist
|
||||
server=/.zhuanxing.cn/127.0.0.1#5335
|
||||
ipset=/.zhuanxing.cn/gfwlist
|
||||
server=/.zhuatieba.com/127.0.0.1#5335
|
||||
ipset=/.zhuatieba.com/gfwlist
|
||||
server=/.zhuichaguoji.org/127.0.0.1#5335
|
||||
@ -10202,8 +10172,6 @@ server=/.zodgame.us/127.0.0.1#5335
|
||||
ipset=/.zodgame.us/gfwlist
|
||||
server=/.zomobo.net/127.0.0.1#5335
|
||||
ipset=/.zomobo.net/gfwlist
|
||||
server=/.zonaeuropa.com/127.0.0.1#5335
|
||||
ipset=/.zonaeuropa.com/gfwlist
|
||||
server=/.zonghexinwen.com/127.0.0.1#5335
|
||||
ipset=/.zonghexinwen.com/gfwlist
|
||||
server=/.zonghexinwen.net/127.0.0.1#5335
|
||||
|
@ -248,9 +248,9 @@ start_dns() {
|
||||
[ -z "$usr_dns" ] && usr_dns="8.8.8.8"
|
||||
[ -z "$usr_port" ] && usr_port="53"
|
||||
[ -d /var/etc ] || mkdir -p /var/etc
|
||||
if [ ! -d /var/pdnsd ]; then
|
||||
if [ ! -f "/var/pdnsd/pdnsd.cache" ]; then
|
||||
mkdir -p /var/pdnsd
|
||||
echo -ne "pd13\000\000\000\000" >/var/pdnsd/pdnsd.cache
|
||||
touch /var/pdnsd/pdnsd.cache
|
||||
chown -R nobody:nogroup /var/pdnsd
|
||||
fi
|
||||
cat <<-EOF >/var/etc/pdnsd.conf
|
||||
|
@ -4014,6 +4014,8 @@
|
||||
103.149.246.0/23
|
||||
103.149.248.0/23
|
||||
103.150.24.0/23
|
||||
103.150.66.0/23
|
||||
103.150.72.0/23
|
||||
103.192.0.0/22
|
||||
103.192.4.0/22
|
||||
103.192.8.0/22
|
||||
|
@ -127,7 +127,7 @@ while [ "1" == "1" ]; do #死循环
|
||||
else
|
||||
kill -9 $(ps | grep pdnsd | grep -v grep | awk '{print $1}') >/dev/null 2>&1
|
||||
fi
|
||||
(/usr/sbin/pdnsd -c /var/etc/pdnsd.conf -d &)
|
||||
(/usr/sbin/pdnsd -c /var/etc/pdnsd.conf &)
|
||||
fi
|
||||
fi
|
||||
#dns2socks
|
||||
|
@ -82,7 +82,7 @@ test_proxy() {
|
||||
search_proxy() {
|
||||
let server_count=server_count+1
|
||||
[ "$normal_flag" == "1" -a "$server_count" -le "$server_locate" ] && return 0
|
||||
[ "$(uci_get_by_name $1 switch_enable)" != "1" ] && return 1
|
||||
[ "$(uci_get_by_name $1 switch_enable 0)" != "1" ] && return 1
|
||||
[ $ENABLE_SERVER != nil ] && return 0
|
||||
[ "$1" == "$CURRENT_SERVER" ] && return 0
|
||||
local servername=$(uci_get_by_name $1 server)
|
||||
@ -136,7 +136,7 @@ start() {
|
||||
#缺省服务器正常,切换回来
|
||||
CURRENT_SERVER=$DEFAULT_SERVER
|
||||
switch_proxy $CURRENT_SERVER
|
||||
echo "$(date "+%Y-%m-%d %H:%M:%S") switch to default ["$(uci_get_by_name $CURRENT_SERVER server)"] proxy!" >>/tmp/ssrplus.log
|
||||
echo "$(date "+%Y-%m-%d %H:%M:%S") switch to default "$(uci_get_by_name $CURRENT_SERVER alias)" proxy!" >>/tmp/ssrplus.log
|
||||
else
|
||||
echo "$(date "+%Y-%m-%d %H:%M:%S") Main server is NOT avilable.Continue using current server." >>/tmp/ssrplus.log
|
||||
fi
|
||||
@ -157,7 +157,7 @@ start() {
|
||||
CURRENT_SERVER=$ENABLE_SERVER
|
||||
switch_proxy $CURRENT_SERVER
|
||||
normal_flag=1
|
||||
echo "$(date "+%Y-%m-%d %H:%M:%S") ShadowsocksR server switch OK" >>/tmp/ssrplus.log
|
||||
echo "$(date "+%Y-%m-%d %H:%M:%S") Switch to "$(uci_get_by_name $CURRENT_SERVER alias)" proxy!" >>/tmp/ssrplus.log
|
||||
else
|
||||
switch_proxy $CURRENT_SERVER
|
||||
normal_flag=1
|
||||
|
@ -1,71 +1,70 @@
|
||||
#!/bin/sh
|
||||
cat <<-EOF >$1
|
||||
base {
|
||||
log_debug = off;
|
||||
log_info = off;
|
||||
log = stderr;
|
||||
daemon = on;
|
||||
redirector = iptables;
|
||||
reuseport = on;
|
||||
}
|
||||
base {
|
||||
log_debug = off;
|
||||
log_info = off;
|
||||
log = stderr;
|
||||
daemon = on;
|
||||
redirector = iptables;
|
||||
reuseport = on;
|
||||
}
|
||||
EOF
|
||||
|
||||
if [ "$2" == "socks5" ]; then
|
||||
if [ "$3" == "tcp" ]; then
|
||||
if [ "$7" == "0" ]; then
|
||||
cat <<-EOF >>$1
|
||||
redsocks {
|
||||
bind = "0.0.0.0:$4";
|
||||
relay = "$5:$6";
|
||||
type = socks5;
|
||||
autoproxy = 0;
|
||||
timeout = 10;
|
||||
}
|
||||
EOF
|
||||
else
|
||||
cat <<-EOF >>$1
|
||||
redsocks {
|
||||
bind = "0.0.0.0:$4";
|
||||
relay = "$5:$6";
|
||||
type = socks5;
|
||||
autoproxy = 0;
|
||||
timeout = 10;
|
||||
login = "$8";
|
||||
password = "$9";
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
else
|
||||
if [ "$7" == "0" ]; then
|
||||
cat <<-EOF >>$1
|
||||
redudp {
|
||||
bind = "0.0.0.0:$4";
|
||||
relay = "$5:$6";
|
||||
type = socks5;
|
||||
udp_timeout = 10;
|
||||
}
|
||||
EOF
|
||||
else
|
||||
cat <<-EOF >>$1
|
||||
redudp {
|
||||
bind = "0.0.0.0:$4";
|
||||
relay = "$5:$6";
|
||||
type = socks5;
|
||||
udp_timeout = 10;
|
||||
login = "$8";
|
||||
password = "$9";
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
if [ "$3" == "tcp" ]; then
|
||||
if [ "$7" == "0" ]; then
|
||||
cat <<-EOF >>$1
|
||||
redsocks {
|
||||
bind = "0.0.0.0:$4";
|
||||
relay = "$5:$6";
|
||||
type = socks5;
|
||||
autoproxy = 0;
|
||||
timeout = 10;
|
||||
}
|
||||
EOF
|
||||
else
|
||||
cat <<-EOF >>$1
|
||||
redsocks {
|
||||
bind = "0.0.0.0:$4";
|
||||
type = direct;
|
||||
interface = $3;
|
||||
autoproxy = 0;
|
||||
timeout = 10;
|
||||
}
|
||||
EOF
|
||||
cat <<-EOF >>$1
|
||||
redsocks {
|
||||
bind = "0.0.0.0:$4";
|
||||
relay = "$5:$6";
|
||||
type = socks5;
|
||||
autoproxy = 0;
|
||||
timeout = 10;
|
||||
login = "$8";
|
||||
password = "$9";
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
else
|
||||
if [ "$7" == "0" ]; then
|
||||
cat <<-EOF >>$1
|
||||
redudp {
|
||||
bind = "0.0.0.0:$4";
|
||||
relay = "$5:$6";
|
||||
type = socks5;
|
||||
udp_timeout = 10;
|
||||
}
|
||||
EOF
|
||||
else
|
||||
cat <<-EOF >>$1
|
||||
redudp {
|
||||
bind = "0.0.0.0:$4";
|
||||
relay = "$5:$6";
|
||||
type = socks5;
|
||||
udp_timeout = 10;
|
||||
login = "$8";
|
||||
password = "$9";
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
else
|
||||
cat <<-EOF >>$1
|
||||
redsocks {
|
||||
bind = "0.0.0.0:$4";
|
||||
type = direct;
|
||||
interface = $3;
|
||||
autoproxy = 0;
|
||||
timeout = 10;
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user