update 2025-02-06 20:38:17
This commit is contained in:
parent
91ffc88a3f
commit
723e9ab813
|
@ -215,7 +215,7 @@ return view.extend({
|
|||
|
||||
let ipv6_support = this.map.lookupOption('ipv6_support', section_id)[0].formvalue(section_id);
|
||||
try {
|
||||
let url = new URL(value);
|
||||
let url = new URL(value.replace(/^.*:\/\//, 'http://'));
|
||||
if (stubValidator.apply('hostname', url.hostname))
|
||||
return true;
|
||||
else if (stubValidator.apply('ip4addr', url.hostname))
|
||||
|
@ -249,7 +249,7 @@ return view.extend({
|
|||
return _('Expecting: %s').format(_('non-empty value'));
|
||||
|
||||
try {
|
||||
let url = new URL(value);
|
||||
let url = new URL(value.replace(/^.*:\/\//, 'http://'));
|
||||
if (stubValidator.apply('hostname', url.hostname))
|
||||
return true;
|
||||
else if (stubValidator.apply('ip4addr', url.hostname))
|
||||
|
@ -831,7 +831,7 @@ return view.extend({
|
|||
return _('Expecting: %s').format(_('non-empty value'));
|
||||
|
||||
try {
|
||||
let url = new URL(value);
|
||||
let url = new URL(value.replace(/^.*:\/\//, 'http://'));
|
||||
if (stubValidator.apply('hostname', url.hostname))
|
||||
return true;
|
||||
else if (stubValidator.apply('ip4addr', url.hostname))
|
||||
|
|
|
@ -574,7 +574,7 @@ function main() {
|
|||
if (main_node === 'urltest') {
|
||||
main_urltest_nodes = filter(uci.get(uciconfig, ucimain, 'main_urltest_nodes'), (v) => {
|
||||
if (!uci.get(uciconfig, v)) {
|
||||
log(sprintf('Node %s is gone, removing from urltest list.', node));
|
||||
log(sprintf('Node %s is gone, removing from urltest list.', v));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -594,7 +594,7 @@ function main() {
|
|||
if (main_udp_node === 'urltest') {
|
||||
main_udp_urltest_nodes = filter(uci.get(uciconfig, ucimain, 'main_udp_urltest_nodes'), (v) => {
|
||||
if (!uci.get(uciconfig, v)) {
|
||||
log(sprintf('Node %s is gone, removing from urltest list.', node));
|
||||
log(sprintf('Node %s is gone, removing from urltest list.', v));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -4285,7 +4285,7 @@ input[type="range"]:focus {
|
|||
</div>
|
||||
|
||||
<script>
|
||||
let playlist = [];
|
||||
let playlist = JSON.parse(localStorage.getItem('playlist')) || [];
|
||||
let currentIndex = 0;
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
|
@ -4294,13 +4294,15 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
|
||||
function clearPlaylist() {
|
||||
playlist = [];
|
||||
updatePlaylistUI();
|
||||
updatePlaylistUI();
|
||||
savePlaylistToLocalStorage();
|
||||
}
|
||||
|
||||
function addToPlaylist(mediaUrl, mediaTitle) {
|
||||
if (!playlist.some(item => item.url === mediaUrl)) {
|
||||
playlist.push({ url: mediaUrl, title: mediaTitle });
|
||||
updatePlaylistUI();
|
||||
savePlaylistToLocalStorage();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4366,6 +4368,7 @@ function removeFromPlaylist(index) {
|
|||
}
|
||||
}
|
||||
updatePlaylistUI();
|
||||
savePlaylistToLocalStorage();
|
||||
}
|
||||
|
||||
function playMedia(index) {
|
||||
|
@ -4459,6 +4462,10 @@ function openVideoPlayerModal() {
|
|||
const videoPlayerModal = new bootstrap.Modal(document.getElementById('videoPlayerModal'));
|
||||
videoPlayerModal.show();
|
||||
}
|
||||
|
||||
function savePlaylistToLocalStorage() {
|
||||
localStorage.setItem('playlist', JSON.stringify(playlist));
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
|
|
@ -137,7 +137,7 @@ o:value("ipv6_only", translate("IPv6 Only"))
|
|||
o = s:option(Button, "_stop", translate("Delete All Subscribe Node"))
|
||||
o.inputstyle = "remove"
|
||||
function o.write(e, e)
|
||||
luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua truncate all-node > /dev/null 2>&1")
|
||||
luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua truncate > /dev/null 2>&1")
|
||||
m.no_commit = true
|
||||
end
|
||||
|
||||
|
|
|
@ -1327,13 +1327,11 @@ local function truncate_nodes(add_from)
|
|||
end
|
||||
end
|
||||
end)
|
||||
if add_from then
|
||||
uci:foreach(appname, "subscribe_list", function(o)
|
||||
if add_from == "all-node" or add_from == o.remark then
|
||||
uci:delete(appname, o['.name'], "md5")
|
||||
end
|
||||
end)
|
||||
end
|
||||
uci:foreach(appname, "subscribe_list", function(o)
|
||||
if (not add_from) or add_from == o.remark then
|
||||
uci:delete(appname, o['.name'], "md5")
|
||||
end
|
||||
end)
|
||||
api.uci_save(uci, appname, true)
|
||||
end
|
||||
|
||||
|
|
|
@ -549,7 +549,9 @@ shunt_dns_config_file_port() {
|
|||
if [ "$(uci_get_by_type socks5_proxy socks5_auth nil)" != "noauth" ]; then
|
||||
# 全局socks 有密码,NetFlix不能使用auth验证,需设置为无密码的socks配置用于分流
|
||||
# 删除 NetFlix dns 端口密码验证
|
||||
sed -i -e 's/"auth"\s*:\s*"password"/\"auth\": \"noauth\"/g' \
|
||||
sed -i \
|
||||
-e '/"mixed"/d' \
|
||||
-e 's/"auth"\s*:\s*"password"/\"auth\": \"noauth\"/g' \
|
||||
-e '/"accounts": \[/,/\]/d' $shunt_config_file
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -21,13 +21,13 @@ define Download/geoip
|
|||
HASH:=f2f5f03da44d007fa91fb6a37c077c9efae8ad0269ef0e4130cf90b0822873e3
|
||||
endef
|
||||
|
||||
GEOSITE_VER:=20250206013957
|
||||
GEOSITE_VER:=20250206090256
|
||||
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
||||
define Download/geosite
|
||||
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
||||
URL_FILE:=dlc.dat
|
||||
FILE:=$(GEOSITE_FILE)
|
||||
HASH:=706c430129fd29bc004ae6fc89349f040d01ece360f3c26ac0de1467f9a645fb
|
||||
HASH:=d7d1ad2e68c835e6d1909aa8c264a9727415efaf72540c27692bfd6e9d2c7332
|
||||
endef
|
||||
|
||||
GEOSITE_IRAN_VER:=202502030035
|
||||
|
|
Loading…
Reference in New Issue