mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-11-01 15:13:56 +08:00
update 2026-07-17 01:09:25
This commit is contained in:
1 parent
8c5da3fb13
commit
613eaa5c7e
9 files changed
+318
-60
No files matched your search
+2
-2
@@ -8,12 +8,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=ddns-go
|
PKG_NAME:=ddns-go
|
||||||
PKG_VERSION:=6.17.1
|
PKG_VERSION:=6.17.2
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://codeload.github.com/jeessy2/ddns-go/tar.gz/v$(PKG_VERSION)?
|
PKG_SOURCE_URL:=https://codeload.github.com/jeessy2/ddns-go/tar.gz/v$(PKG_VERSION)?
|
||||||
PKG_HASH:=05ae7ef07241113ee2cd861be530524f06856fc7368b84846db5137a477277ea
|
PKG_HASH:=dcf9b5795c6e546c2d7d9fa0cccdb57589440273ee606dac8a0bbc8f6be54afb
|
||||||
|
|
||||||
PKG_LICENSE:=MIT
|
PKG_LICENSE:=MIT
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-passwall
|
PKG_NAME:=luci-app-passwall
|
||||||
PKG_VERSION:=26.7.15
|
PKG_VERSION:=26.7.16
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||||
|
|
||||||
|
|||||||
@@ -228,12 +228,24 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
filter: brightness(1.08);
|
filter: brightness(1.08);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 700px) {
|
/* 手机端优化 */
|
||||||
|
#ssr-clash-main-buttons {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 900px) {
|
||||||
#ssr-clash-modal {
|
#ssr-clash-modal {
|
||||||
|
top: 8px;
|
||||||
|
left: 8px;
|
||||||
width: calc(100vw - 16px);
|
width: calc(100vw - 16px);
|
||||||
max-height: calc(100vh - 24px);
|
max-height: calc(100vh - 24px);
|
||||||
min-height: min(420px, calc(100vh - 24px));
|
min-height: min(420px, calc(100vh - 24px));
|
||||||
padding: 10px 12px 12px;
|
padding: 10px 12px 12px;
|
||||||
|
transform: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ssr-clash-modal-header {
|
#ssr-clash-modal-header {
|
||||||
@@ -249,21 +261,85 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ssr-clash-modal-header #ssr-clash-rules-add {
|
#ssr-clash-modal-header #ssr-clash-rules-add {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ssr-clash-modal-actions .btn,
|
||||||
|
#ssr-clash-main-buttons .btn {
|
||||||
|
flex: 1 1 0;
|
||||||
|
margin: 0 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
if (!window.ssrXHR) {
|
||||||
|
window.ssrXHR = (function() {
|
||||||
|
function encode(data) {
|
||||||
|
var pairs = [];
|
||||||
|
var key;
|
||||||
|
for (key in (data || {})) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
||||||
|
pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key] == null ? '' : data[key]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pairs.join('&');
|
||||||
|
}
|
||||||
|
|
||||||
|
function request(method, url, data, callback) {
|
||||||
|
var lower = method.toLowerCase();
|
||||||
|
if (window.XHR && typeof window.XHR[lower] === 'function') {
|
||||||
|
return window.XHR[lower](url, data, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
var payload = encode(data);
|
||||||
|
var finalUrl = url;
|
||||||
|
|
||||||
|
if (lower === 'get' && payload) {
|
||||||
|
finalUrl += (url.indexOf('?') === -1 ? '?' : '&') + payload;
|
||||||
|
}
|
||||||
|
|
||||||
|
xhr.open(method, finalUrl, true);
|
||||||
|
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||||
|
if (lower !== 'get') {
|
||||||
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
|
||||||
|
}
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState !== 4) return;
|
||||||
|
|
||||||
|
var rv = null;
|
||||||
|
try {
|
||||||
|
rv = JSON.parse(xhr.responseText || 'null');
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
if (callback) callback(xhr, rv);
|
||||||
|
};
|
||||||
|
xhr.send(lower === 'get' ? null : payload);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
get: function(url, data, callback) {
|
||||||
|
return request('GET', url, data, callback);
|
||||||
|
},
|
||||||
|
post: function(url, data, callback) {
|
||||||
|
return request('POST', url, data, callback);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof(window.ssrClashRefreshSubscription) !== "function") {
|
if (typeof(window.ssrClashRefreshSubscription) !== "function") {
|
||||||
window.ssrClashRefreshSubscription = function(btn, sid) {
|
window.ssrClashRefreshSubscription = function(btn, sid) {
|
||||||
var original = btn.value;
|
var original = btn.value;
|
||||||
btn.disabled = true;
|
btn.disabled = true;
|
||||||
btn.value = '<%:Reloading YAML...%>';
|
btn.value = '<%:Reloading YAML...%>';
|
||||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_refresh")%>', {
|
window.ssrXHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_refresh")%>', {
|
||||||
sid: sid
|
sid: sid
|
||||||
}, function(x, result) {
|
}, function(x, result) {
|
||||||
btn.disabled = false;
|
btn.disabled = false;
|
||||||
@@ -288,7 +364,7 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
}
|
}
|
||||||
btn.disabled = true;
|
btn.disabled = true;
|
||||||
btn.value = '<%:Resetting Defaults...%>';
|
btn.value = '<%:Resetting Defaults...%>';
|
||||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_reset_defaults")%>', {
|
window.ssrXHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_reset_defaults")%>', {
|
||||||
sid: sid
|
sid: sid
|
||||||
}, function(x, result) {
|
}, function(x, result) {
|
||||||
btn.disabled = false;
|
btn.disabled = false;
|
||||||
@@ -642,7 +718,7 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
|
|
||||||
select.onchange = function() {
|
select.onchange = function() {
|
||||||
setPanelStatus('<%:Switching...%>', '#0072c3');
|
setPanelStatus('<%:Switching...%>', '#0072c3');
|
||||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_switch")%>', {
|
window.ssrXHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_switch")%>', {
|
||||||
sid: currentPanelSid,
|
sid: currentPanelSid,
|
||||||
group: group.name,
|
group: group.name,
|
||||||
name: select.value
|
name: select.value
|
||||||
@@ -699,7 +775,7 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
payload['rule_' + index + '_policy_group'] = rule.policy_group || '';
|
payload['rule_' + index + '_policy_group'] = rule.policy_group || '';
|
||||||
});
|
});
|
||||||
|
|
||||||
XHR.post('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_client_rule_save")%>', payload, function(x, result) {
|
window.ssrXHR.post('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_client_rule_save")%>', payload, function(x, result) {
|
||||||
btn.disabled = false;
|
btn.disabled = false;
|
||||||
btn.value = original;
|
btn.value = original;
|
||||||
if (result && result.success) {
|
if (result && result.success) {
|
||||||
@@ -733,7 +809,7 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
if (importBtn) importBtn.style.display = '';
|
if (importBtn) importBtn.style.display = '';
|
||||||
if (refreshBtn) refreshBtn.style.display = 'none';
|
if (refreshBtn) refreshBtn.style.display = 'none';
|
||||||
|
|
||||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_client_policies")%>', {
|
window.ssrXHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_client_policies")%>', {
|
||||||
sid: sid
|
sid: sid
|
||||||
}, function(x, result) {
|
}, function(x, result) {
|
||||||
if (!result || !result.active) {
|
if (!result || !result.active) {
|
||||||
@@ -785,7 +861,7 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
if (exportBtn) exportBtn.style.display = 'none';
|
if (exportBtn) exportBtn.style.display = 'none';
|
||||||
if (importBtn) importBtn.style.display = 'none';
|
if (importBtn) importBtn.style.display = 'none';
|
||||||
if (refreshBtn) refreshBtn.style.display = '';
|
if (refreshBtn) refreshBtn.style.display = '';
|
||||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_groups")%>', {
|
window.ssrXHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_groups")%>', {
|
||||||
sid: sid
|
sid: sid
|
||||||
}, function(x, result) {
|
}, function(x, result) {
|
||||||
if (result && result.sid) {
|
if (result && result.sid) {
|
||||||
@@ -842,6 +918,7 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
var customRulesBtn = document.getElementById('ssr-clash-main-client-rules');
|
var customRulesBtn = document.getElementById('ssr-clash-main-client-rules');
|
||||||
var resetBtn = document.getElementById('ssr-clash-main-reset-defaults');
|
var resetBtn = document.getElementById('ssr-clash-main-reset-defaults');
|
||||||
var panelBtn = document.getElementById('ssr-clash-main-open');
|
var panelBtn = document.getElementById('ssr-clash-main-open');
|
||||||
|
var btnContainer = document.getElementById('ssr-clash-main-buttons');
|
||||||
if (!select || !row || !customRulesBtn || !resetBtn || !panelBtn) {
|
if (!select || !row || !customRulesBtn || !resetBtn || !panelBtn) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -852,11 +929,13 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
customRulesBtn.setAttribute('data-sid', sid);
|
customRulesBtn.setAttribute('data-sid', sid);
|
||||||
resetBtn.setAttribute('data-sid', sid);
|
resetBtn.setAttribute('data-sid', sid);
|
||||||
panelBtn.setAttribute('data-sid', sid);
|
panelBtn.setAttribute('data-sid', sid);
|
||||||
|
if (btnContainer) btnContainer.style.display = 'flex';
|
||||||
} else {
|
} else {
|
||||||
row.style.display = 'none';
|
row.style.display = 'none';
|
||||||
customRulesBtn.setAttribute('data-sid', '');
|
customRulesBtn.setAttribute('data-sid', '');
|
||||||
resetBtn.setAttribute('data-sid', '');
|
resetBtn.setAttribute('data-sid', '');
|
||||||
panelBtn.setAttribute('data-sid', '');
|
panelBtn.setAttribute('data-sid', '');
|
||||||
|
if (btnContainer) btnContainer.style.display = 'none';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -872,9 +951,11 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
var modalMask = document.getElementById('ssr-clash-modal-mask');
|
var modalMask = document.getElementById('ssr-clash-modal-mask');
|
||||||
var wrap = document.getElementById('ssr-clash-main-panel-wrap');
|
var wrap = document.getElementById('ssr-clash-main-panel-wrap');
|
||||||
var row = wrap ? wrap.closest('.cbi-value') : null;
|
var row = wrap ? wrap.closest('.cbi-value') : null;
|
||||||
|
var btnContainer = document.getElementById('ssr-clash-main-buttons');
|
||||||
|
|
||||||
if (row && !clashNodes['<%=current_sid%>']) {
|
if (row && !clashNodes['<%=current_sid%>']) {
|
||||||
row.style.display = 'none';
|
row.style.display = 'none';
|
||||||
|
if (btnContainer) btnContainer.style.display = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (select) {
|
if (select) {
|
||||||
@@ -955,7 +1036,7 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
modalRulesClearBtn.disabled = true;
|
modalRulesClearBtn.disabled = true;
|
||||||
XHR.post('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_client_rule_clear")%>', {
|
window.ssrXHR.post('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "clash_client_rule_clear")%>', {
|
||||||
sid: currentEditorSid
|
sid: currentEditorSid
|
||||||
}, function(x, result) {
|
}, function(x, result) {
|
||||||
modalRulesClearBtn.disabled = false;
|
modalRulesClearBtn.disabled = false;
|
||||||
@@ -984,27 +1065,29 @@ local current_sid = self.map:get(section, "global_server") or "nil"
|
|||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<input
|
<div id="ssr-clash-main-buttons">
|
||||||
type="button"
|
<input
|
||||||
id="ssr-clash-main-client-rules"
|
type="button"
|
||||||
class="btn cbi-button"
|
id="ssr-clash-main-client-rules"
|
||||||
value="<%:Custom Client Proxies Rules%>"
|
class="btn cbi-button"
|
||||||
title="<%:Custom Client Proxies Rules%>"
|
value="<%:Custom Client Proxies Rules%>"
|
||||||
data-sid="<%=current_sid%>" />
|
title="<%:Custom Client Proxies Rules%>"
|
||||||
<input
|
data-sid="<%=current_sid%>" />
|
||||||
type="button"
|
<input
|
||||||
id="ssr-clash-main-reset-defaults"
|
type="button"
|
||||||
class="btn cbi-button"
|
id="ssr-clash-main-reset-defaults"
|
||||||
value="<%:Reset Default Proxies Rules%>"
|
class="btn cbi-button"
|
||||||
title="<%:Reset Default Proxies Rules%>"
|
value="<%:Reset Default Proxies Rules%>"
|
||||||
data-sid="<%=current_sid%>" />
|
title="<%:Reset Default Proxies Rules%>"
|
||||||
<input
|
data-sid="<%=current_sid%>" />
|
||||||
type="button"
|
<input
|
||||||
id="ssr-clash-main-open"
|
type="button"
|
||||||
class="btn cbi-button cbi-button-apply"
|
id="ssr-clash-main-open"
|
||||||
value="<%:Mihomo Pannel%>"
|
class="btn cbi-button cbi-button-apply"
|
||||||
title="<%:Mihomo Pannel%>"
|
value="<%:Mihomo Pannel%>"
|
||||||
data-sid="<%=current_sid%>" />
|
title="<%:Mihomo Pannel%>"
|
||||||
|
data-sid="<%=current_sid%>" />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="ssr-clash-modal-mask"></div>
|
<div id="ssr-clash-modal-mask"></div>
|
||||||
<div id="ssr-clash-modal" role="dialog" aria-modal="true" aria-labelledby="ssr-clash-modal-title">
|
<div id="ssr-clash-modal" role="dialog" aria-modal="true" aria-labelledby="ssr-clash-modal-title">
|
||||||
|
|||||||
@@ -59,6 +59,62 @@ end
|
|||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
//<![CDATA[
|
//<![CDATA[
|
||||||
|
if (!window.ssrXHR) {
|
||||||
|
window.ssrXHR = (function() {
|
||||||
|
function encode(data) {
|
||||||
|
var pairs = [];
|
||||||
|
var key;
|
||||||
|
for (key in (data || {})) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
||||||
|
pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key] == null ? '' : data[key]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pairs.join('&');
|
||||||
|
}
|
||||||
|
|
||||||
|
function request(method, url, data, callback) {
|
||||||
|
var lower = method.toLowerCase();
|
||||||
|
if (window.XHR && typeof window.XHR[lower] === "function") {
|
||||||
|
return window.XHR[lower](url, data, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
var payload = encode(data);
|
||||||
|
var finalUrl = url;
|
||||||
|
|
||||||
|
if (lower === "get" && payload) {
|
||||||
|
finalUrl += (url.indexOf('?') === -1 ? '?' : '&') + payload;
|
||||||
|
}
|
||||||
|
|
||||||
|
xhr.open(method, finalUrl, true);
|
||||||
|
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||||
|
if (lower !== "get") {
|
||||||
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
|
||||||
|
}
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState !== 4) return;
|
||||||
|
|
||||||
|
var rv = null;
|
||||||
|
try {
|
||||||
|
rv = JSON.parse(xhr.responseText || 'null');
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
if (callback) callback(xhr, rv);
|
||||||
|
};
|
||||||
|
xhr.send(lower === "get" ? null : payload);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
get: function(url, data, callback) {
|
||||||
|
return request('GET', url, data, callback);
|
||||||
|
},
|
||||||
|
post: function(url, data, callback) {
|
||||||
|
return request('POST', url, data, callback);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
|
||||||
window.addEventListener('load', function () {
|
window.addEventListener('load', function () {
|
||||||
const doms = document.getElementsByClassName('pingtime');
|
const doms = document.getElementsByClassName('pingtime');
|
||||||
const ports = document.getElementsByClassName("socket-connected");
|
const ports = document.getElementsByClassName("socket-connected");
|
||||||
@@ -165,7 +221,7 @@ end
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
port.innerHTML = '<font style=\"color:#0072c3\">connect</font>';
|
port.innerHTML = '<font style=\"color:#0072c3\">connect</font>';
|
||||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "ping")%>', {
|
window.ssrXHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "ping")%>', {
|
||||||
index,
|
index,
|
||||||
sid: dom.getAttribute("data-sid"),
|
sid: dom.getAttribute("data-sid"),
|
||||||
domain: dom.getAttribute("hint"),
|
domain: dom.getAttribute("hint"),
|
||||||
@@ -280,7 +336,7 @@ end
|
|||||||
var server_page = pageElem ? pageElem.value : '<%=self.server_page or 1%>';
|
var server_page = pageElem ? pageElem.value : '<%=self.server_page or 1%>';
|
||||||
var server_page_size = pageSizeElem ? pageSizeElem.value : '<%=self.server_page_size or 0%>';
|
var server_page_size = pageSizeElem ? pageSizeElem.value : '<%=self.server_page_size or 0%>';
|
||||||
if (input) input.value = order;
|
if (input) input.value = order;
|
||||||
XHR.post('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "save_order")%>', {
|
window.ssrXHR.post('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "save_order")%>', {
|
||||||
order: order,
|
order: order,
|
||||||
page: server_page,
|
page: server_page,
|
||||||
page_size: server_page_size
|
page_size: server_page_size
|
||||||
|
|||||||
@@ -197,6 +197,77 @@ end
|
|||||||
|
|
||||||
<!-- tblsection -->
|
<!-- tblsection -->
|
||||||
<div class="cbi-section cbi-tblsection" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
|
<div class="cbi-section cbi-tblsection" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
|
||||||
|
<script type="text/javascript">
|
||||||
|
if (!window.ssrXHR) {
|
||||||
|
window.ssrXHR = (function() {
|
||||||
|
function encode(data) {
|
||||||
|
var pairs = [];
|
||||||
|
var key;
|
||||||
|
for (key in (data || {})) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
||||||
|
pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key] == null ? '' : data[key]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pairs.join('&');
|
||||||
|
}
|
||||||
|
|
||||||
|
function request(method, url, data, callback) {
|
||||||
|
var lower = method.toLowerCase();
|
||||||
|
if (window.XHR && typeof window.XHR[lower] === "function") {
|
||||||
|
return window.XHR[lower](url, data, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
var payload = encode(data);
|
||||||
|
var finalUrl = url;
|
||||||
|
|
||||||
|
if (lower === "get" && payload) {
|
||||||
|
finalUrl += (url.indexOf('?') === -1 ? '?' : '&') + payload;
|
||||||
|
}
|
||||||
|
|
||||||
|
xhr.open(method, finalUrl, true);
|
||||||
|
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||||
|
if (lower !== "get") {
|
||||||
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
|
||||||
|
}
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState !== 4) return;
|
||||||
|
|
||||||
|
var rv = null;
|
||||||
|
try {
|
||||||
|
rv = JSON.parse(xhr.responseText || 'null');
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
if (callback) callback(xhr, rv);
|
||||||
|
};
|
||||||
|
xhr.send(lower === "get" ? null : payload);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
get: function(url, data, callback) {
|
||||||
|
return request('GET', url, data, callback);
|
||||||
|
},
|
||||||
|
post: function(url, data, callback) {
|
||||||
|
return request('POST', url, data, callback);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof window.ssrDeleteNode !== "function") {
|
||||||
|
window.ssrDeleteNode = function(sid) {
|
||||||
|
window.ssrXHR.post('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "delete_node")%>', {
|
||||||
|
sid: sid
|
||||||
|
}, function(x, result) {
|
||||||
|
result = result || {};
|
||||||
|
if (result.ret == 1) {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<% if self.title and #self.title > 0 then -%>
|
<% if self.title and #self.title > 0 then -%>
|
||||||
<h3><%=self.title%></h3>
|
<h3><%=self.title%></h3>
|
||||||
<%- end %>
|
<%- end %>
|
||||||
@@ -244,22 +315,10 @@ end
|
|||||||
%> onclick="location.href='<%=self:extedit(section)%>'"
|
%> onclick="location.href='<%=self:extedit(section)%>'"
|
||||||
<%- end
|
<%- end
|
||||||
%> alt="<%:Edit%>" title="<%:Edit%>" />
|
%> alt="<%:Edit%>" title="<%:Edit%>" />
|
||||||
<% end; if self.addremove then %>
|
<% end; if self.addremove then %>
|
||||||
<input class="btn cbi-button cbi-button-remove" type="button" value="<%:Delete%>"
|
<input class="btn cbi-button cbi-button-remove" type="button" value="<%:Delete%>"
|
||||||
onclick="
|
onclick="return window.ssrDeleteNode('<%=k%>')"
|
||||||
var sid = '<%=k%>';
|
/>
|
||||||
XHR.post('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "delete_node")%>', {
|
|
||||||
sid: sid
|
|
||||||
}, function(x, result) {
|
|
||||||
result = result || {};
|
|
||||||
if (result.ret == 1) {
|
|
||||||
window.location.reload();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
"
|
|
||||||
/>
|
|
||||||
<%- end -%>
|
<%- end -%>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -20,6 +20,36 @@ local function width(o)
|
|||||||
end
|
end
|
||||||
-%>
|
-%>
|
||||||
<script type="text/javascript">//<![CDATA[
|
<script type="text/javascript">//<![CDATA[
|
||||||
|
function ssrPost(url, data, callback) {
|
||||||
|
if (window.XHR && typeof window.XHR.post === 'function') {
|
||||||
|
return window.XHR.post(url, data, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
var payload = [];
|
||||||
|
var key;
|
||||||
|
for (key in (data || {})) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
||||||
|
payload.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key] == null ? '' : data[key]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
xhr.open('POST', url, true);
|
||||||
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
|
||||||
|
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState !== 4) return;
|
||||||
|
|
||||||
|
var rv = null;
|
||||||
|
try {
|
||||||
|
rv = JSON.parse(xhr.responseText || 'null');
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
if (callback) callback(xhr, rv);
|
||||||
|
};
|
||||||
|
xhr.send(payload.join('&'));
|
||||||
|
}
|
||||||
|
|
||||||
window.ssrUpdateSubscribeItem = window.ssrUpdateSubscribeItem || function(btn) {
|
window.ssrUpdateSubscribeItem = window.ssrUpdateSubscribeItem || function(btn) {
|
||||||
if (!btn) return false;
|
if (!btn) return false;
|
||||||
|
|
||||||
@@ -72,9 +102,9 @@ end
|
|||||||
for (var field in fields) {
|
for (var field in fields) {
|
||||||
var value = fields[field];
|
var value = fields[field];
|
||||||
var promise = new Promise(function(resolve, reject) {
|
var promise = new Promise(function(resolve, reject) {
|
||||||
XHR.post(
|
ssrPost(
|
||||||
'<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "toggle_subscribe_item_enabled")%>',
|
'<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "toggle_subscribe_item_enabled")%>',
|
||||||
{ sid: sid, field: field, value: value },
|
{ sid: sid, field: field, value: value },
|
||||||
function(x, rv) {
|
function(x, rv) {
|
||||||
if (rv && Number(rv.ret) === 1) {
|
if (rv && Number(rv.ret) === 1) {
|
||||||
resolve();
|
resolve();
|
||||||
@@ -112,7 +142,7 @@ end
|
|||||||
if (!confirm('<%:Are you sure you want to delete subscribe link: %s ?%>'.replace('%s', sid))) return;
|
if (!confirm('<%:Are you sure you want to delete subscribe link: %s ?%>'.replace('%s', sid))) return;
|
||||||
|
|
||||||
btn.disabled = true;
|
btn.disabled = true;
|
||||||
XHR.post('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "delete_subscribe_item")%>',
|
ssrPost('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "delete_subscribe_item")%>',
|
||||||
{ sid: sid },
|
{ sid: sid },
|
||||||
function(x, rv) {
|
function(x, rv) {
|
||||||
btn.disabled = false;
|
btn.disabled = false;
|
||||||
@@ -218,7 +248,7 @@ end
|
|||||||
btn.disabled = true;
|
btn.disabled = true;
|
||||||
btn.value = '<%:Adding...%>';
|
btn.value = '<%:Adding...%>';
|
||||||
|
|
||||||
XHR.post(
|
ssrPost(
|
||||||
'<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "add_subscribe_item")%>',
|
'<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "add_subscribe_item")%>',
|
||||||
{},
|
{},
|
||||||
function(x, rv) {
|
function(x, rv) {
|
||||||
|
|||||||
@@ -1,5 +1,35 @@
|
|||||||
<script type="text/javascript">//<![CDATA[
|
<script type="text/javascript">//<![CDATA[
|
||||||
(function() {
|
(function() {
|
||||||
|
function ssrPost(url, data, callback) {
|
||||||
|
if (window.XHR && typeof window.XHR.post === 'function') {
|
||||||
|
return window.XHR.post(url, data, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
var payload = [];
|
||||||
|
var key;
|
||||||
|
for (key in (data || {})) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
||||||
|
payload.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key] == null ? '' : data[key]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
xhr.open('POST', url, true);
|
||||||
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
|
||||||
|
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState !== 4) return;
|
||||||
|
|
||||||
|
var rv = null;
|
||||||
|
try {
|
||||||
|
rv = JSON.parse(xhr.responseText || 'null');
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
if (callback) callback(xhr, rv);
|
||||||
|
};
|
||||||
|
xhr.send(payload.join('&'));
|
||||||
|
}
|
||||||
|
|
||||||
function bindSubscribeItemEnabledAutoSave() {
|
function bindSubscribeItemEnabledAutoSave() {
|
||||||
var root = document.getElementById('cbi-shadowsocksr-server_subscribe_item');
|
var root = document.getElementById('cbi-shadowsocksr-server_subscribe_item');
|
||||||
if (!root || root.getAttribute('data-enabled-autosave-bound') === '1') {
|
if (!root || root.getAttribute('data-enabled-autosave-bound') === '1') {
|
||||||
@@ -21,7 +51,7 @@
|
|||||||
var original = target.checked;
|
var original = target.checked;
|
||||||
target.disabled = true;
|
target.disabled = true;
|
||||||
|
|
||||||
XHR.post(
|
ssrPost(
|
||||||
'<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "toggle_subscribe_item_enabled")%>',
|
'<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr", "toggle_subscribe_item_enabled")%>',
|
||||||
{ sid: sid, enabled: original ? '1' : '0' },
|
{ sid: sid, enabled: original ? '1' : '0' },
|
||||||
function(x, rv) {
|
function(x, rv) {
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=tuic-client
|
PKG_NAME:=tuic-client
|
||||||
PKG_VERSION:=1.8.10
|
PKG_VERSION:=1.8.11
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://codeload.github.com/Itsusinn/tuic/tar.gz/v$(PKG_VERSION)?
|
PKG_SOURCE_URL:=https://codeload.github.com/Itsusinn/tuic/tar.gz/v$(PKG_VERSION)?
|
||||||
PKG_HASH:=ac47f9d8b4f820031236e255f8012ee6858ae50ab56550bf98ad8e0d07b0d977
|
PKG_HASH:=4513c9add6b3a1ffb49026d7308fe488b33e8b0b2d3d1f1c89c06768b479b56a
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||||
|
|||||||
@@ -21,13 +21,13 @@ define Download/geoip
|
|||||||
HASH:=b71d1999439dde2de2d2b6844a2befa50c50211ff739785c005ca7c230a17d6a
|
HASH:=b71d1999439dde2de2d2b6844a2befa50c50211ff739785c005ca7c230a17d6a
|
||||||
endef
|
endef
|
||||||
|
|
||||||
GEOSITE_VER:=20260715085145
|
GEOSITE_VER:=20260716111426
|
||||||
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
||||||
define Download/geosite
|
define Download/geosite
|
||||||
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
||||||
URL_FILE:=dlc.dat
|
URL_FILE:=dlc.dat
|
||||||
FILE:=$(GEOSITE_FILE)
|
FILE:=$(GEOSITE_FILE)
|
||||||
HASH:=b342b28f84550f71da1b05e2d18347270ba81afd11b4d16692c537e3c4085ee7
|
HASH:=13ffc92b1dc3eba4a0df478281fe618dfa4a2aec51c96c54bc25913a4d9f71de
|
||||||
endef
|
endef
|
||||||
|
|
||||||
GEOSITE_IRAN_VER:=202607130116
|
GEOSITE_IRAN_VER:=202607130116
|
||||||
|
|||||||
Reference in new issue
Block a user