🎨 Sync 2026-11-12 00:28:00

This commit is contained in:
github-actions[bot] committed 2026-11-12 00:28:00 +08:00
1 parent 67c4a47b97
commit 2197585600
12 files changed
+84 -85

No files matched your search

+2 -2
View File
@@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=frp
PKG_VERSION:=0.71.0
PKG_RELEASE:=10
PKG_VERSION:=0.71.1
PKG_RELEASE:=11
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/fatedier/frp/tar.gz/v$(PKG_VERSION)?
@@ -813,9 +813,23 @@ function renderListeners(s, uciconfig, isClient) {
o.depends('type', 'vless');
o.modalonly = true;
const initVlessEncryptionOption = function(o, key) {
o = s.taboption('field_vless_encryption', form.Value, 'vless_encryption_hmpayload', _('Payload'));
o.readonly = true;
o.depends('vless_decryption', '1');
o.modalonly = true;
o = s.taboption('field_vless_encryption', CBIDummyCopyValue, '_vless_encryption_decryption', _('decryption'));
o.depends('vless_decryption', '1');
o.modalonly = true;
o = s.taboption('field_vless_encryption', CBIDummyCopyValue, '_vless_encryption_encryption', _('encryption'));
o.depends('vless_decryption', '1');
o.modalonly = true;
// common part
const initVlessEncryptionOption = function(o, key, load_callback = v => v) {
o.load = function(section_id) {
return new VlessEncryption(uci.get(uciconfig, section_id, 'vless_encryption_hmpayload'))[key];
return load_callback(new VlessEncryption(uci.get(uciconfig, section_id, 'vless_encryption_hmpayload'))[key]);
}
o.onchange = function(ev, section_id, value) {
let UIEl = this.section.getUIElement(section_id, 'vless_encryption_hmpayload');
@@ -832,29 +846,16 @@ function renderListeners(s, uciconfig, isClient) {
});
}
o.write = function() {};
o.depends('vless_decryption', '1');
o.modalonly = true;
}
o = s.taboption('field_vless_encryption', form.Value, 'vless_encryption_hmpayload', _('Payload'));
o.readonly = true;
o.depends('vless_decryption', '1');
o.modalonly = true;
o = s.taboption('field_vless_encryption', CBIDummyCopyValue, '_vless_encryption_decryption', _('decryption'));
o.depends('vless_decryption', '1');
o.modalonly = true;
o = s.taboption('field_vless_encryption', CBIDummyCopyValue, '_vless_encryption_encryption', _('encryption'));
o.depends('vless_decryption', '1');
o.modalonly = true;
o = s.taboption('field_vless_encryption', form.ListValue, 'vless_encryption_method', _('Encryption method'));
o.default = hm.vless_encryption.methods[0][0];
hm.vless_encryption.methods.forEach((res) => {
o.value.apply(o, res);
})
initVlessEncryptionOption(o, 'method');
o.depends('vless_decryption', '1');
o.modalonly = true;
o = s.taboption('field_vless_encryption', form.RichListValue, 'vless_encryption_xormode', _('XOR mode'));
o.default = hm.vless_encryption.xormodes[0][0];
@@ -862,8 +863,6 @@ function renderListeners(s, uciconfig, isClient) {
o.value.apply(o, res);
})
initVlessEncryptionOption(o, 'xormode');
o.depends('vless_decryption', '1');
o.modalonly = true;
o = s.taboption('field_vless_encryption', hm.RichValue, 'vless_encryption_ticket', _('Server') +' '+ _('RTT'));
o.default = hm.vless_encryption.tickets[0][0];
@@ -881,8 +880,6 @@ function renderListeners(s, uciconfig, isClient) {
return true;
}
o.rmempty = false;
o.depends('vless_decryption', '1');
o.modalonly = true;
o = s.taboption('field_vless_encryption', form.ListValue, 'vless_encryption_rtt', _('Client') +' '+ _('RTT'));
o.default = hm.vless_encryption.rtts[0][0];
@@ -891,8 +888,6 @@ function renderListeners(s, uciconfig, isClient) {
})
initVlessEncryptionOption(o, 'rtt');
o.rmempty = false;
o.depends('vless_decryption', '1');
o.modalonly = true;
o = s.taboption('field_vless_encryption', hm.less_25_12 ? hm.DynamicList : form.DynamicList, 'vless_encryption_paddings', _('Paddings'), // @less_25_12
_('The server and client can set different padding parameters.') + '</br>' +
@@ -912,8 +907,6 @@ function renderListeners(s, uciconfig, isClient) {
return true;
}
o.allowduplicates = true;
o.depends('vless_decryption', '1');
o.modalonly = true;
o = s.taboption('field_vless_encryption', hm.GenText, 'vless_encryption_keypairs', _('Keypairs'));
o.placeholder = '[\n {\n "type": "vless-x25519",\n "server": "cP5Oy9MOpTaBKKE17Pfd56mbb1CIfp5EMpyBYqr2EG8",\n "client": "khEcQMT8j41xWmGYKpZtQ4vd8_9VWyFVmmCDIhRJ-Uk"\n },\n {\n "type": "vless-mlkem768",\n "server": "UHPx3nf-FVxF95byAw0YG025aQNw9HxKej-MiG5AhTcdW_WFpHlTVYQU5NHmXP6tmljSnB2iPmSQ29fisGxEog",\n "client": "h4sdZgCc5-ZefvQ8mZmReOWQdxYb0mwngMdl7pKhYEZZpGWHUPKAmxug87Bgj3GqSHs195QeVpxfrMLNB5J..."\n },\n ...\n]';
@@ -985,9 +978,11 @@ function renderListeners(s, uciconfig, isClient) {
return node;
}
o.load = function(section_id) {
return JSON.stringify(new VlessEncryption(uci.get(uciconfig, section_id, 'vless_encryption_hmpayload'))['keypairs'], null, 2);
}
initVlessEncryptionOption(o, 'keypairs',
(keypairs) => JSON.stringify(keypairs, null, 2)
);
const keypairs_onchange = o.onchange;
o.onchange = function() {};
o.validate = function(section_id, value) {
let result = hm.validateJson.call(this, section_id, value);
@@ -995,18 +990,7 @@ function renderListeners(s, uciconfig, isClient) {
let keypairs = JSON.parse(value.trim());
if (Array.isArray(keypairs) && keypairs.length >= 1) {
let UIEl = this.section.getUIElement(section_id, 'vless_encryption_hmpayload');
let newpayload = new VlessEncryption(UIEl.getValue()).setKey('keypairs', keypairs);
UIEl.setValue(newpayload.toString());
[
['server', '_vless_encryption_decryption'],
['client', '_vless_encryption_encryption']
].forEach(([side, option]) => {
UIEl = this.section.getUIElement(section_id, option);
UIEl.setValue(newpayload.toString('mihomo', side));
});
keypairs_onchange.call(this, null, section_id, keypairs);
} else
return _('Expecting: %s').format(_('least one keypair required'));
@@ -1015,8 +999,6 @@ function renderListeners(s, uciconfig, isClient) {
return result;
}
o.rmempty = false;
o.depends('vless_decryption', '1');
o.modalonly = true;
// @xhttp-config其他的配置
@@ -1382,6 +1382,19 @@ return view.extend({
so.depends('type', 'vless');
so.modalonly = true;
so = ss.taboption('field_vless_encryption', form.Value, 'vless_encryption_encryption', _('encryption'));
so.renderWidget = function(/* ... */) {
let node = form.Value.prototype.renderWidget.apply(this, arguments);
node.firstChild.style.width = '30em';
return node;
}
so.rmempty = false;
so.depends('vless_encryption', '1');
so.modalonly = true;
// common part
const initVlessEncryptionClientOption = function(o, key) {
o.load = function(section_id) {
const value = uci.get(data[0], section_id, 'vless_encryption_encryption');
@@ -1398,20 +1411,10 @@ return view.extend({
UIEl.setValue(newpayload.toString());
}
o.write = function() {};
o.depends('vless_encryption', '1');
o.modalonly = true;
}
so = ss.taboption('field_vless_encryption', form.Value, 'vless_encryption_encryption', _('encryption'));
so.renderWidget = function(/* ... */) {
let node = form.Value.prototype.renderWidget.apply(this, arguments);
node.firstChild.style.width = '30em';
return node;
}
so.rmempty = false;
so.depends('vless_encryption', '1');
so.modalonly = true;
so = ss.taboption('field_vless_encryption', form.ListValue, 'vless_encryption_rtt', _('Client') +' '+ _('RTT'));
so.default = hm.vless_encryption.rtts[0][0];
hm.vless_encryption.rtts.forEach((res) => {
@@ -1419,8 +1422,6 @@ return view.extend({
})
initVlessEncryptionClientOption(so, 'rtt');
so.rmempty = false;
so.depends('vless_encryption', '1');
so.modalonly = true;
so = ss.taboption('field_vless_encryption', hm.less_25_12 ? hm.DynamicList : form.DynamicList, 'vless_encryption_paddings', _('Paddings'), // @less_25_12
_('The server and client can set different padding parameters.') + '</br>' +
@@ -1440,8 +1441,6 @@ return view.extend({
return true;
}
so.allowduplicates = true;
so.depends('vless_encryption', '1');
so.modalonly = true;
// @ 下面支持填写针对download-settings的上下行分离配置
+1 -1
View File
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall
PKG_VERSION:=26.11.11
PKG_RELEASE:=375
PKG_RELEASE:=376
PKG_PO_VERSION:=$(PKG_VERSION)
PKG_CONFIG_DEPENDS:= \
@@ -256,7 +256,7 @@
document.head.appendChild(styleNode)
// trace back from option -> select -> body for background color
const panelRadius = styleSelect.borderRadius;
const optionColor = !lv_isTransparent(styleSelect.backgroundColor) ? styleSelect.backgroundColor : !lv_isTransparent(styleOption.backgroundColor) ? styleOption.backgroundColor : styleBody.backgroundColor
const optionColor = !lv_isTransparent(styleOption.backgroundColor) ? styleOption.backgroundColor : !lv_isTransparent(styleSelect.backgroundColor) ? styleSelect.backgroundColor : styleBody.backgroundColor
const titleColor = lv_getColorSchema(optionColor) === "light" ? lv_darker(optionColor, 30) : lv_lighter(optionColor, 30)
// 自带箭头已占据布局空间,右内边距使用主题的左内边距
const selectStyleCSS = [`#${CSS.escape(cbid + ".display")} {`, lv_style2Css(styleSelect, styleNames), lv_style2Css(styleSelect, ["backgroundColor"]), `padding-right: ${styleSelect.paddingLeft} !important;`, "}"]
@@ -23,7 +23,7 @@ if node then
end
end
-%>
<script src="<%=resource%>/view/<%=appname%>/Sortable.min.js?v=1.15.7"></script>
<script src="<%=resource%>/view/<%=appname%>/Sortable.min.js"></script>
<script src="<%=resource%>/view/<%=appname%>/node_list_sort.js"></script>
<style>
@@ -139,7 +139,17 @@ table td, .table .td {
}
._now_use_bg {
background: #5e72e445 !important;
/* Argon: --primary, Bootstrap: --primary-color-high,
Aurora: --brand, Vantage: --v-accent */
--pw-accent: var(--primary,
var(--primary-color-high,
var(--brand,
var(--v-accent,
var(--accent, currentColor)))));
/* Prefer each theme's own soft accent surface. */
background-color: var(--brand-subtle,
var(--v-accent-soft,
color-mix(in srgb, var(--pw-accent) 27%, transparent))) !important;
}
.ping a,
@@ -149,12 +159,6 @@ table td, .table .td {
cursor: pointer;
}
@media (prefers-color-scheme: dark) {
._now_use_bg {
background: #4a90e2 !important;
}
}
.td.cbi-section-actions {
text-align: right !important;
}
@@ -411,6 +415,11 @@ table td, .table .td {
font-size: 13px;
}
.pw-group-select > .cbi-dropdown > ul:not(.dropdown) {
padding-top: 0;
padding-bottom: 0;
}
.pw-group-select > .cbi-dropdown > ul:not(.dropdown) > li,
.pw-group-select > .cbi-dropdown > .open {
height: 26px;
+1 -1
View File
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall2
PKG_VERSION:=26.11.11
PKG_RELEASE:=176
PKG_RELEASE:=177
PKG_PO_VERSION:=$(PKG_VERSION)
PKG_CONFIG_DEPENDS:= \
@@ -137,7 +137,17 @@ table td, .table .td {
}
._now_use_bg {
background: #5e72e445 !important;
/* Argon: --primary, Bootstrap: --primary-color-high,
Aurora: --brand, Vantage: --v-accent */
--pw-accent: var(--primary,
var(--primary-color-high,
var(--brand,
var(--v-accent,
var(--accent, currentColor)))));
/* Prefer each theme's own soft accent surface. */
background-color: var(--brand-subtle,
var(--v-accent-soft,
color-mix(in srgb, var(--pw-accent) 27%, transparent))) !important;
}
.ping a,
@@ -147,12 +157,6 @@ table td, .table .td {
cursor: pointer;
}
@media (prefers-color-scheme: dark) {
._now_use_bg {
background: #4a90e2 !important;
}
}
.td.cbi-section-actions {
text-align: right !important;
}
@@ -409,6 +413,11 @@ table td, .table .td {
font-size: 13px;
}
.pw-group-select > .cbi-dropdown > ul:not(.dropdown) {
padding-top: 0;
padding-bottom: 0;
}
.pw-group-select > .cbi-dropdown > ul:not(.dropdown) > li,
.pw-group-select > .cbi-dropdown > .open {
height: 26px;
+3 -3
View File
@@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-trafficctl
PKG_VERSION:=1.30.1
PKG_RELEASE:=28
PKG_VERSION:=1.30.2
PKG_RELEASE:=29
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Denis Iusupov <yusdyr@gmail.com>
@@ -28,7 +28,7 @@ LUCI_DESCRIPTION:=Per-device traffic monitoring, rate limiting (nft/iptables), \
# optional there, for wired-only builds), but it stays here so the upgrade from
# 1.28.0 does not drop it and silently turn every WiFi block into a temporary
# ban. trafficctl on its own does not need it.
LUCI_DEPENDS:=+trafficctl +conntrack +curl +tc +iw +hostapd-utils +luci-base +rpcd
LUCI_DEPENDS:=+trafficctl +conntrack +curl +tc +iw +kmod-nft-netdev +hostapd-utils +luci-base +rpcd
LUCI_PKGARCH:=all
include $(TOPDIR)/feeds/luci/luci.mk
+2 -2
View File
@@ -5,8 +5,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mihomo
PKG_VERSION:=1.19.33
PKG_RELEASE:=37
PKG_VERSION:=1.19.34
PKG_RELEASE:=38
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/metacubex/mihomo/tar.gz/v$(PKG_VERSION)?
+1 -1
View File
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=teleproxy
PKG_VERSION:=4.16.1
PKG_RELEASE:=28
PKG_RELEASE:=29
PKG_MAINTAINER:=Kosntantine Shevlakov <shevlakov@132lan.ru>
PKG_LICENSE:=GPLv2
+1 -1
View File
@@ -6,7 +6,7 @@ Index: teleproxy/src/common/rdtsc_32bit.h
+#ifndef RDTSC_EMUL_H
+#define RDTSC_EMUL_H
+
+#if defined(__arm__) || defined(__mips__) || defined(__mipsel__)
+#if !defined(__i386__) && !defined(__x86_64__) && !defined(__aarch64__)
+#include <time.h>
+
+static inline unsigned long long rdtsc(void) {