🎄 Sync 2026-04-29 20:35:25

This commit is contained in:
github-actions[bot] committed 2026-04-29 20:35:25 +08:00
1 parent f595d41c87
commit d3860fd411
28 files changed
+408 -46

No files matched your search

+2 -2
View File
@@ -5,8 +5,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=CloudflareSpeedTest
PKG_VERSION:=2.3.4
PKG_RELEASE:=1
PKG_VERSION:=2.3.5
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/XIU2/CloudflareSpeedTest/tar.gz/v$(PKG_VERSION)?
+2 -2
View File
@@ -5,8 +5,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ddns-go
PKG_VERSION:=6.16.12
PKG_RELEASE:=10
PKG_VERSION:=6.16.13
PKG_RELEASE:=11
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/jeessy2/ddns-go/tar.gz/v$(PKG_VERSION)?
+71
View File
@@ -0,0 +1,71 @@
include $(TOPDIR)/rules.mk
-include $(dir $(lastword $(MAKEFILE_LIST)))../version.mk
PKG_NAME:=easytier-noweb
PKG_VERSION:=$(or $(EASYTIER_VERSION),2.6.2)
PKG_RELEASE:=1
ifeq ($(ARCH),mipsel)
APP_ARCH:=mipsel
endif
ifeq ($(ARCH),mips)
APP_ARCH:=mips
endif
ifeq ($(ARCH),arm)
APP_ARCH:=arm
endif
ifeq ($(BOARD),kirkwood)
APP_ARCH:=arm
endif
ifeq ($(ARCH),armv7)
APP_ARCH:=armv7
endif
ifeq ($(ARCH),aarch64)
APP_ARCH:=aarch64
endif
ifeq ($(ARCH),arm64)
APP_ARCH:=aarch64
endif
ifeq ($(ARCH),armv8)
APP_ARCH:=aarch64
endif
ifeq ($(ARCH),x86_64)
APP_ARCH:=x86_64
endif
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
SECTION:=net
CATEGORY:=Network
TITLE:=A simple, decentralized mesh VPN with WireGuard support.
DEPENDS:=@(x86_64||arm||aarch64||mipsel||mips) +kmod-tun
URL:=https://github.com/EasyTier/EasyTier
MENU:=1
endef
define Package/$(PKG_NAME)/description
A simple, decentralized mesh VPN with WireGuard support.
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
if [ ! -f $(PKG_BUILD_DIR)/easytier-core ]; then \
wget https://github.com/EasyTier/EasyTier/releases/download/v$(PKG_VERSION)/easytier-linux-$(APP_ARCH)-v$(PKG_VERSION).zip -O $(PKG_BUILD_DIR)/easytier-$(PKG_VERSION).zip; \
unzip -o -j $(PKG_BUILD_DIR)/easytier-$(PKG_VERSION).zip -d $(PKG_BUILD_DIR); \
rm -f $(PKG_BUILD_DIR)/easytier-$(PKG_VERSION).zip; \
fi
endef
define Build/Compile
endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/easytier-core $(1)/usr/bin/easytier-core
$(INSTALL_BIN) $(PKG_BUILD_DIR)/easytier-cli $(1)/usr/bin/easytier-cli
endef
$(eval $(call BuildPackage,$(PKG_NAME)))
+9 -4
View File
@@ -3,7 +3,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=easytier
PKG_VERSION:=$(or $(EASYTIER_VERSION),2.6.2)
PKG_RELEASE:=4
PKG_RELEASE:=5
ifeq ($(ARCH),mipsel)
APP_ARCH:=mipsel
@@ -37,6 +37,8 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
RSTRIP:=:
define Package/$(PKG_NAME)
SECTION:=net
CATEGORY:=Network
@@ -74,10 +76,13 @@ endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/easytier-core $(1)/usr/bin/easytier-core
$(INSTALL_BIN) $(PKG_BUILD_DIR)/easytier-cli $(1)/usr/bin/easytier-cli
$(CP) $(PKG_BUILD_DIR)/easytier-core $(1)/usr/bin/
chmod 0755 $(1)/usr/bin/easytier-core
$(CP) $(PKG_BUILD_DIR)/easytier-cli $(1)/usr/bin/
chmod 0755 $(1)/usr/bin/easytier-cli
ifdef CONFIG_EASYTIER_INCLUDE_WEBCONSOLE
$(INSTALL_BIN) $(PKG_BUILD_DIR)/easytier-web-embed $(1)/usr/bin/easytier-web
$(CP) $(PKG_BUILD_DIR)/easytier-web-embed $(1)/usr/bin/easytier-web
chmod 0755 $(1)/usr/bin/easytier-web
endif
endef
+1 -1
View File
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=hickory-dns
PKG_VERSION:=0.26.0-beta.2
PKG_RELEASE:=16
PKG_RELEASE:=17
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/hickory-dns/hickory-dns/tar.gz/v$(PKG_VERSION)?
@@ -12,6 +12,12 @@ zone_path = "/etc/hickory-dns/lan.zone"
journal_path = "/var/lib/hickory-dns/lan.jrnl"
allow_update = true
[[zones.stores.tsig_keys]]
name = "update-key."
key_file = "/etc/hickory-dns/update.key"
algorithm = "hmac-sha256"
fudge = 300
[[zones]]
zone = "."
zone_type = "External"
+9
View File
@@ -6,8 +6,17 @@ STOP=51
PROG=/usr/bin/hickory-dns
CONF=/etc/hickory-dns/forwarder.toml
TSIG_KEY=/etc/hickory-dns/update.key
generate_tsig_key() {
[ -f "$TSIG_KEY" ] && return 0
dd if=/dev/urandom bs=32 count=1 of="$TSIG_KEY" 2>/dev/null
chown nobody:nogroup "$TSIG_KEY" 2>/dev/null || true
chmod 400 "$TSIG_KEY"
}
start_service() {
generate_tsig_key
procd_open_instance hickory-dns
procd_set_param command $PROG -c $CONF -q
procd_set_param user nobody
+1 -1
View File
@@ -13,7 +13,7 @@ futures = "0.3.11"
netlink-packet-route = {version = "0.21" }
netlink-packet-core= {version ="0.7"}
clap = { version = "4.0", default-features = false, features = ["cargo", "derive", "help", "std", "suggestions"] }
hickory-proto = { git = "https://github.com/hickory-dns/hickory-dns.git", rev = "34a4cca1a707b642052b427938b7d1e8aaa71e3a" }
hickory-proto = { git = "https://github.com/hickory-dns/hickory-dns.git", rev = "34a4cca1a707b642052b427938b7d1e8aaa71e3a", features = ["dnssec-ring"] }
ubus = "0.1.6"
serde_json = "1.0.108"
+1 -1
View File
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=ipv6-neigh
PKG_VERSION:=0.1.0
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_BUILD_DEPENDS:=rust/host
PKG_BUILD_PARALLEL:=1
+9 -4
View File
@@ -1,7 +1,8 @@
use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
use std::time::{SystemTime, UNIX_EPOCH};
use hickory_proto::op::{Message, ResponseCode, update_message};
use hickory_proto::rr::{Name, RData, RecordSet, RecordType};
use hickory_proto::rr::{Name, RData, RecordSet, RecordType, TSigner};
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio::net::TcpStream;
@@ -9,11 +10,12 @@ use tokio::net::TcpStream;
pub(crate) struct DnsUpdater {
server_addr: SocketAddr,
zone: Name,
signer: TSigner,
}
impl DnsUpdater {
pub fn new(server_addr: SocketAddr, zone: Name) -> Self {
Self { server_addr, zone }
pub fn new(server_addr: SocketAddr, zone: Name, signer: TSigner) -> Self {
Self { server_addr, zone, signer }
}
/// Create or append a AAAA record.
@@ -89,7 +91,10 @@ impl DnsUpdater {
}
/// Send a DNS message over TCP (2-byte length prefix + message bytes) and read the response.
async fn send_tcp(&self, msg: Message) -> Result<Message, Box<dyn std::error::Error>> {
async fn send_tcp(&self, mut msg: Message) -> Result<Message, Box<dyn std::error::Error>> {
let now = SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs();
msg.finalize(&self.signer, now)?;
let bytes = msg.to_vec()?;
let len = u16::try_from(bytes.len())?;
+16 -1
View File
@@ -12,6 +12,8 @@ use rtnetlink::{Error, Handle, new_connection};
use clap::Parser;
use hickory_proto::rr::Name;
use hickory_proto::rr::TSigner;
use hickory_proto::rr::rdata::tsig::TsigAlgorithm;
use netlink_sys::{AsyncSocket, SocketAddr};
mod db;
mod op;
@@ -39,6 +41,12 @@ struct Cli {
/// DNS zone to update (e.g. "lan")
#[clap(short, long, default_value = "lan")]
zone: String,
/// Path to TSIG key file (raw HMAC secret)
#[clap(short, long, default_value = "/etc/hickory-dns/update.key")]
key_file: std::path::PathBuf,
/// TSIG key name
#[clap(short = 'n', long, default_value = "update-key.")]
key_name: String,
}
#[derive(Debug)]
@@ -135,7 +143,14 @@ async fn main() -> Result<(), ()> {
let args = Cli::parse();
let private_subnet = args.private_subnet;
let zone = Name::from_ascii(&args.zone).expect("invalid zone name");
let updater = db::DnsUpdater::new(args.dns_server, zone);
let key_data = std::fs::read(&args.key_file)
.unwrap_or_else(|e| panic!("failed to read TSIG key file {:?}: {e}", args.key_file));
let key_name = Name::from_ascii(&args.key_name).expect("invalid TSIG key name");
let signer = TSigner::new(key_data, TsigAlgorithm::HmacSha256, key_name, 300)
.expect("invalid TSIG key");
let updater = db::DnsUpdater::new(args.dns_server, zone, signer);
let (connection, handle, _) = new_connection().unwrap();
tokio::spawn(connection);
@@ -28,6 +28,21 @@ return L.view.extend({
var m, s, o;
var boardinfo = res[0];
function normalizeSchedulerValue(value) {
if (value == null)
return value;
var normalized = String(value).trim();
if (normalized.endsWith('.o'))
normalized = normalized.slice(0, -2);
if (normalized.startsWith('mptcp_'))
normalized = normalized.slice(6);
return normalized;
}
m = new form.Map('network', _('MPTCP'),_('Networks MPTCP settings.'));
s = m.section(form.TypedSection, 'globals');
@@ -73,11 +88,19 @@ return L.view.extend({
}
if (parseFloat(boardinfo.kernel.substring(0,3)) > 6) {
scheduler.cfgvalue = function(section_id) {
return normalizeSchedulerValue(uci.get('network', section_id, 'mptcp_scheduler'));
};
scheduler.write = function(section_id, value) {
uci.set('network', section_id, 'mptcp_scheduler', normalizeSchedulerValue(value));
};
scheduler.load = function(section_id) {
return L.resolveDefault(fs.list('/usr/share/bpf/scheduler'), []).then(L.bind(function(entries) {
for (var i = 0; i < entries.length; i++)
if (entries[i].type == 'file' && entries[i].name.match(/\.o$/))
this.value(entries[i].name);
this.value(normalizeSchedulerValue(entries[i].name), entries[i].name);
return this.super('load', [section_id]);
}, this));
};
+3
View File
@@ -225,6 +225,7 @@ msgid ""
"The number of MPTCP-level retransmission intervals with no traffic and "
"pending outstanding data on a given subflow required to declare it stale"
msgstr ""
"Количество интервалов повторной передачи MPTCP без трафика и с ожидающими данными на заданном подпотоке, необходимых для его объявления устаревшим"
#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914
msgid "Upload:"
@@ -317,9 +318,11 @@ msgid ""
"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP "
"connection"
msgstr ""
"задаёт максимальное количество подопций ADD_ADDR, принимаемых для каждого соединения MPTCP"
#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59
msgid ""
"specifies the maximum number of additional subflows allowed for each MPTCP "
"connection"
msgstr ""
"задаёт максимальное количество дополнительных подпотоков, разрешённых для каждого соединения MPTCP"
@@ -57,6 +57,172 @@ end
local methods = {
-- -----------------------------------------------------------------------
-- Settings: global MPTCP (network.globals)
-- -----------------------------------------------------------------------
-- Returns all configurable global MPTCP settings from network.globals.
get_settings = {
call = function()
local result = {}
local string_fields = {
"multipath", "mptcp_checksum", "mptcp_debug",
"mptcp_path_manager", "mptcp_scheduler", "mptcp_syn_retries",
"mptcp_version", "congestion", "mptcp_pm_type",
"mptcp_disable_initial_config", "mptcp_force_multipath",
"mptcpd_enable", "mptcp_subflows", "mptcp_stale_loss_cnt",
"mptcp_add_addr_accepted", "mptcp_add_addr_timeout",
"mptcp_blackhole_timeout", "mptcp_close_timeout",
"mptcp_syn_retrans_before_tcp_fallback",
"mptcp_fullmesh_num_subflows", "mptcp_fullmesh_create_on_err",
"mptcp_ndiffports_num_subflows", "mptcp_rr_cwnd_limited",
"mptcp_rr_num_segments"
}
local list_fields = {
"mptcpd_path_manager", "mptcpd_plugins",
"mptcpd_addr_flags", "mptcpd_notify_flags"
}
for _, field in ipairs(string_fields) do
local val = uci:get("network", "globals", field)
if val ~= nil then result[field] = val end
end
for _, field in ipairs(list_fields) do
local val = uci:get_list("network", "globals", field)
result[field] = val or {}
end
return result
end
},
-- Writes one or more global MPTCP settings to network.globals and commits.
-- All parameters are optional; only provided (non-empty) ones are written.
-- List fields (mptcpd_path_manager, mptcpd_plugins, mptcpd_addr_flags,
-- mptcpd_notify_flags) must be passed as JSON arrays.
set_settings = {
args = {
mptcp_checksum = "",
mptcp_debug = "",
mptcp_path_manager = "",
mptcp_scheduler = "",
mptcp_syn_retries = "",
mptcp_version = "",
congestion = "",
mptcp_pm_type = "",
mptcp_disable_initial_config = "",
mptcp_force_multipath = "",
mptcpd_enable = "",
mptcpd_path_manager = {},
mptcpd_plugins = {},
mptcpd_addr_flags = {},
mptcpd_notify_flags = {},
mptcp_subflows = "",
mptcp_stale_loss_cnt = "",
mptcp_add_addr_accepted = "",
mptcp_add_addr_timeout = "",
mptcp_blackhole_timeout = "",
mptcp_close_timeout = "",
mptcp_syn_retrans_before_tcp_fallback = "",
mptcp_fullmesh_num_subflows = "",
mptcp_fullmesh_create_on_err = "",
mptcp_ndiffports_num_subflows = "",
mptcp_rr_cwnd_limited = "",
mptcp_rr_num_segments = ""
},
call = function(args)
local string_fields = {
"mptcp_checksum", "mptcp_debug", "mptcp_path_manager",
"mptcp_scheduler", "mptcp_syn_retries", "mptcp_version",
"congestion", "mptcp_pm_type", "mptcp_disable_initial_config",
"mptcp_force_multipath", "mptcpd_enable", "mptcp_subflows",
"mptcp_stale_loss_cnt", "mptcp_add_addr_accepted",
"mptcp_add_addr_timeout", "mptcp_blackhole_timeout",
"mptcp_close_timeout", "mptcp_syn_retrans_before_tcp_fallback",
"mptcp_fullmesh_num_subflows", "mptcp_fullmesh_create_on_err",
"mptcp_ndiffports_num_subflows", "mptcp_rr_cwnd_limited",
"mptcp_rr_num_segments"
}
local list_fields = {
"mptcpd_path_manager", "mptcpd_plugins",
"mptcpd_addr_flags", "mptcpd_notify_flags"
}
for _, field in ipairs(string_fields) do
if args[field] ~= nil and args[field] ~= "" then
uci:set("network", "globals", field, args[field])
end
end
for _, field in ipairs(list_fields) do
if args[field] ~= nil and type(args[field]) == "table" then
uci:set_list("network", "globals", field, args[field])
end
end
uci:save("network")
uci:commit("network")
return { result = "ok" }
end
},
-- -----------------------------------------------------------------------
-- Settings: per-interface MPTCP (network.interface)
-- -----------------------------------------------------------------------
-- Returns multipath settings for all interfaces (or a single one when
-- the optional "iface" argument is provided).
get_interface_settings = {
args = { iface = "" },
call = function(args)
local iface = args.iface or ""
if iface ~= "" then
local section = uci:get_all("network", iface)
if not section or section[".type"] ~= "interface" then
return { error = "Interface not found" }
end
return {
multipath = section["multipath"] or "off",
multipath_weight = section["multipath_weight"] or "100"
}
end
local result = {}
uci:foreach("network", "interface", function(s)
local name = s[".name"]
result[name] = {
multipath = s["multipath"] or "off",
multipath_weight = s["multipath_weight"] or "100"
}
end)
return result
end
},
-- Sets multipath and/or multipath_weight for the given interface.
-- "iface" is required; "multipath" and "multipath_weight" are optional.
-- Valid values for multipath: "on", "off", "master", "backup".
set_interface_settings = {
args = { iface = "", multipath = "", multipath_weight = "" },
call = function(args)
local iface = args.iface or ""
if iface == "" then
return { error = "Interface name required" }
end
local section = uci:get_all("network", iface)
if not section or section[".type"] ~= "interface" then
return { error = "Interface not found" }
end
if args.multipath ~= nil and args.multipath ~= "" then
uci:set("network", iface, "multipath", args.multipath)
end
if args.multipath_weight ~= nil and args.multipath_weight ~= "" then
uci:set("network", iface, "multipath_weight", args.multipath_weight)
end
uci:save("network")
uci:commit("network")
return { result = "ok" }
end
},
-- -----------------------------------------------------------------------
-- Bandwidth / diagnostics (existing methods below)
-- -----------------------------------------------------------------------
-- Returns per-interface bandwidth arrays plus a "total" entry.
-- Each value is an array of [ts, rx_bytes, rx_pkts, tx_bytes, tx_pkts].
multipath_bandwidth = {
@@ -18,7 +18,11 @@
"mptcp_fullmesh",
"mptcp_monitor",
"mptcp_connections",
"mptcp_check_trace"
"mptcp_check_trace",
"get_settings",
"set_settings",
"get_interface_settings",
"set_interface_settings"
]
}
},
+1 -1
View File
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall
PKG_VERSION:=26.4.15
PKG_RELEASE:=101
PKG_RELEASE:=102
PKG_PO_VERSION:=$(PKG_VERSION)
PKG_CONFIG_DEPENDS:= \
@@ -555,6 +555,7 @@ o:depends({singbox_dns_mode = "udp"})
o:depends({singbox_dns_mode = "tcp"})
o = s:option(Value, "remote_dns_doh", translate("Remote DNS DoH"))
o.description = translate("Format: URL[,IP] (omit the latter if URL is an IP)")
o:value("https://1.1.1.1/dns-query", "1.1.1.1 (CloudFlare)")
o:value("https://1.1.1.2/dns-query", "1.1.1.2 (CloudFlare-Security)")
o:value("https://8.8.4.4/dns-query", "8.8.4.4 (Google)")
@@ -565,7 +566,7 @@ o:value("https://208.67.222.222/dns-query", "208.67.222.222 (OpenDNS)")
o:value("https://dns.adguard.com/dns-query,94.140.14.14", "94.140.14.14 (AdGuard)")
o:value("https://doh.libredns.gr/dns-query,116.202.176.26", "116.202.176.26 (LibreDNS)")
o:value("https://doh.libredns.gr/ads,116.202.176.26", "116.202.176.26 (LibreDNS-NoAds)")
o.default = "https://1.1.1.1/dns-query"
o.default = o.keylist[1]
o.validate = function(self, value, t)
if value ~= "" then
value = api.trim(value)
@@ -444,7 +444,8 @@ o:depends({singbox_dns_mode = "tcp"})
---- DoH
o = s:taboption("DNS", Value, "remote_dns_doh", translate("Remote DNS DoH"))
o.default = "https://1.1.1.1/dns-query"
o.description = translate("Format: URL[,IP] (omit the latter if URL is an IP)")
o.default = o.keylist[1]
o:value("https://1.1.1.1/dns-query", "1.1.1.1 (CloudFlare)")
o:value("https://1.1.1.2/dns-query", "1.1.1.2 (CloudFlare-Security)")
o:value("https://8.8.4.4/dns-query", "8.8.4.4 (Google)")
+3
View File
@@ -220,6 +220,9 @@ msgstr "请求协议"
msgid "Remote DNS DoH"
msgstr "远程 DNS DoH"
msgid "Format: URL[,IP] (omit the latter if URL is an IP)"
msgstr "格式:URL[,IP](URL 为 IP 时可省略后半部分)"
msgid "Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address)."
msgstr "用于 DNS 查询时通知 DNS 服务器,客户端所在的地理位置(不能是私有 IP 地址)。"
@@ -286,17 +286,22 @@ function add_rule(var)
if domain == "" or domain:find("#") then
return
end
table.insert(excluded_domain, domain)
excluded_domain[domain] = true
end
local function check_excluded_domain(domain)
if domain == "" or domain:find("#") then
return false
end
for k,v in ipairs(excluded_domain) do
if domain == v or domain:sub(-#("."..v)) == "."..v then
if excluded_domain[domain] then
return true
end
local pos = domain:find(".", 1, true)
while pos do
if excluded_domain[domain:sub(pos + 1)] then
return true
end
pos = domain:find(".", pos + 1, true)
end
return false
end
+35 -6
View File
@@ -44,6 +44,8 @@ msgid ""
"Download speed (kbit/s) (ingress) set to 0 to selectively disable ingress "
"shaping:"
msgstr ""
"Скорость загрузки (Кбит/с) (входящий трафик), установите 0 для отключения "
"формирования входящего трафика:"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:58
msgid "Enable SQM"
@@ -63,6 +65,7 @@ msgstr ""
msgid ""
"Explicit congestion notification (ECN) status on outbound packets (egress)."
msgstr ""
"Состояние явного уведомления о перегрузке (ECN) для исходящих пакетов (egress)."
#: applications/luci-app-sqm/root/usr/share/rpcd/acl.d/luci-app-sqm.json:3
msgid "Grant UCI access for luci-app-sqm"
@@ -82,7 +85,7 @@ msgstr ""
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:142
msgid "Ignore DSCP on ingress:"
msgstr ""
msgstr "Игнорировать DSCP для входящего трафика:"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:89
msgid "Interface name"
@@ -93,12 +96,16 @@ msgid ""
"Latency target for egress, e.g. 5ms [units: s, ms, or us]; leave empty for "
"automatic selection, put in the word default for the qdisc's default."
msgstr ""
"Целевая задержка для исходящего трафика, напр. 5ms [единицы: s, ms, или us]; оставьте пустым для "
"автоматического выбора, введите слово default для значения по умолчанию qdisc."
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:172
msgid ""
"Latency target for ingress, e.g 5ms [units: s, ms, or us]; leave empty for "
"automatic selection, put in the word default for the qdisc's default."
msgstr ""
"Целевая задержка для входящего трафика, напр. 5ms [единицы: s, ms, или us]; оставьте пустым для "
"автоматического выбора, введите слово default для значения по умолчанию qdisc."
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:74
msgid "Link Layer Adaptation"
@@ -109,6 +116,8 @@ msgid ""
"Maximal Size for size and rate calculations, tcMTU (byte); needs to be >= "
"interface MTU + overhead:"
msgstr ""
"Максимальный размер для расчётов размера и скорости, tcMTU (байт); должен быть >= "
"MTU интерфейса + накладные расходы:"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:213
msgid ""
@@ -122,14 +131,16 @@ msgid ""
"Number of entries in size/rate tables, TSIZE; for ATM choose TSIZE = (tcMTU "
"+ 1) / 16:"
msgstr ""
"Количество записей в таблицах размер/скорость, TSIZE; для ATM выберите TSIZE = (tcMTU "
"+ 1) / 16:"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:193
msgid "Per Packet Overhead (byte):"
msgstr ""
msgstr "Накладные расходы на пакет (байт):"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:73
msgid "Queue Discipline"
msgstr ""
msgstr "Дисциплина очереди"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:120
msgid "Queue setup script"
@@ -144,6 +155,8 @@ msgid ""
"Queuing disciplines useable on this system. After installing a new qdisc, "
"you need to restart the router to see updates!"
msgstr ""
"Дисциплины очереди, доступные на этой системе. После установки нового qdisc "
"необходимо перезагрузить маршрутизатор, чтобы увидеть обновления!"
#: applications/luci-app-sqm/root/usr/share/luci/menu.d/luci-app-sqm.json:3
msgid "SQM QoS"
@@ -154,18 +167,24 @@ msgid ""
"Show Advanced Linklayer Options, (only needed if MTU > 1500). Advanced "
"options will only be used as long as this box is checked."
msgstr ""
"Показать расширенные параметры канального уровня (нужны только если MTU > 1500). "
"Расширенные параметры используются только пока этот флажок установлен."
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:133
msgid ""
"Show and Use Advanced Configuration. Advanced options will only be used as "
"long as this box is checked."
msgstr ""
"Показать и использовать расширенную конфигурацию. Расширенные параметры "
"используются только пока этот флажок установлен."
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:160
msgid ""
"Show and Use Dangerous Configuration. Dangerous options will only be used as "
"long as this box is checked."
msgstr ""
"Показать и использовать опасную конфигурацию. Опасные параметры "
"используются только пока этот флажок установлен."
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:64
msgid "Smart Queue Management"
@@ -173,7 +192,7 @@ msgstr "Умное управление очередью"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:136
msgid "Squash DSCP on inbound packets (ingress):"
msgstr ""
msgstr "Обнулить DSCP для входящих пакетов (ingress):"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:83
msgid ""
@@ -181,18 +200,25 @@ msgid ""
"disable the sqm initscript manually under System Startup menu in case this "
"change was not wished for."
msgstr ""
"Интерфейс SQM только что включил скрипт инициализации sqm от вашего имени. Не забудьте "
"вручную отключить скрипт инициализации sqm в меню запуска системы, если это изменение "
"не было желаемым."
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:48
msgid ""
"The SQM service seems to be disabled. Please use the button below to "
"activate this service."
msgstr ""
"Похоже, служба SQM отключена. Используйте кнопку ниже для "
"активации этой службы."
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:96
msgid ""
"Upload speed (kbit/s) (egress) set to 0 to selectively disable egress "
"shaping:"
msgstr ""
"Скорость отдачи (Кбит/с) (исходящий трафик), установите 0 для отключения "
"формирования исходящего трафика:"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:103
msgid "Verbosity of SQM's output into the system log."
@@ -200,11 +226,11 @@ msgstr "Детальность вывода SQM в системный журна
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:187
msgid "Which link layer to account for:"
msgstr ""
msgstr "Какой канальный уровень учитывать:"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:218
msgid "Which linklayer adaptation mechanism to use; for testing only"
msgstr ""
msgstr "Какой механизм адаптации канального уровня использовать; только для тестирования"
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:65
msgid ""
@@ -212,6 +238,9 @@ msgid ""
"traffic shaping, better mixing (Fair Queueing), active queue length "
"management (AQM) and prioritisation on one network interface."
msgstr ""
"С помощью <abbr title=\"Smart Queue Management\">SQM</abbr> вы можете включить "
"формирование трафика, улучшенное смешивание (справедливая очередь), активное управление "
"длиной очереди (AQM) и расстановку приоритетов на одном сетевом интерфейсе."
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:107
#: applications/luci-app-sqm/htdocs/luci-static/resources/view/network/sqm.js:149
+1 -1
View File
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-wechatpush
PKG_VERSION:=3.6.12
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_MAINTAINER:=tty228 <tty228@yeah.net>
PKG_CONFIG_DEPENDS:= \
@@ -256,11 +256,21 @@ return view.extend({
o.depends('jsonpath', '/usr/share/wechatpush/api/msmtp.json');
o.placeholder = "25";
o = s.taboption('basic', form.Flag, 'smtp_tls', _('Enable TLS'));
o = s.taboption('basic', form.ListValue, 'smtp_tls', _('Enable/Disable TLS'));
o.depends('jsonpath', '/usr/share/wechatpush/api/msmtp.json');
o.widget = 'radio';
o.value('on', _('Enable'));
o.value('off', _('Disable'));
o.value('', _('Ignore'));
o.default = '';
o = s.taboption('basic', form.Flag, 'smtp_starttls', _('Enable STARTTLS'));
o = s.taboption('basic', form.ListValue, 'smtp_starttls', _('Enable/Disable STARTTLS'));
o.depends('jsonpath', '/usr/share/wechatpush/api/msmtp.json');
o.widget = 'radio';
o.value('on', _('Enable'));
o.value('off', _('Disable'));
o.value('', _('Ignore'));
o.default = '';
o = s.taboption('basic', form.Value, 'smtp_user', _('User'));
o.depends('jsonpath', '/usr/share/wechatpush/api/msmtp.json');
+4 -4
View File
@@ -231,11 +231,11 @@ msgstr "SMTP 服务器"
msgid "SMTP Port"
msgstr "SMTP 端口"
msgid "Enable TLS"
msgstr "启用 TLS"
msgid "Enable/Disable TLS"
msgstr "启用/禁用 TLS"
msgid "Enable STARTTLS"
msgstr "启用 STARTTLS"
msgid "Enable/Disable STARTTLS"
msgstr "启用/禁用 STARTTLS"
msgid "User"
msgstr "用户名"
@@ -2,7 +2,7 @@
"_api": "这是 msmtp api 文件",
"_api": "【msmtp】",
"url": "msmtp --host=${smtp_host} --port=${smtp_port} ${smtp_tls:+--tls=on} ${smtp_tls:---tls=off} ${smtp_starttls:+--tls-starttls=on} ${smtp_starttls:---tls-starttls=off} ${smtp_user:+--auth=on --user=$smtp_user} ${smtp_passwordeval:+--passwordeval=\\\"$smtp_passwordeval\\\"} ${smtp_from:+--from=$smtp_from} ${smtp_from_full_name:+-F\\\"$smtp_from_full_name\\\"} ${recipient_email}",
"url": "msmtp --host=${smtp_host} --port=${smtp_port} ${smtp_tls:+--tls=$smtp_tls} ${smtp_starttls:+--tls-starttls=$smtp_starttls} ${smtp_user:+--auth=on --user=$smtp_user} ${smtp_passwordeval:+--passwordeval=\\\"$smtp_passwordeval\\\"} ${smtp_from:+--from=$smtp_from} ${smtp_from_full_name:+-F\\\"$smtp_from_full_name\\\"} ${recipient_email}",
"data": "${tempjsonpath}",
"content_type": "",
"command": "'\"To: \\(.to)\\nSubject: \\(.subject)\\nContent-Type: text/html\\n\\n\\(.body)\"'",
+1 -1
View File
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=mptcp
PKG_VERSION:=6.1
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_MAINTAINER:=Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
+6 -4
View File
@@ -74,10 +74,12 @@ global_multipath_settings() {
[ -z "$mptcp_close_timeout" ] || sysctl -qew net.mptcp.close_timeout="$mptcp_close_timeout"
[ -z "$mptcp_syn_retrans_before_tcp_fallback" ] || sysctl -qew net.mptcp.syn_retrans_before_tcp_fallback="$mptcp_syn_retrans_before_tcp_fallback"
[ -z "$mptcp_blackhole_timeout" ] || sysctl -qew net.mptcp.blackhole_timeout="$mptcp_blackhole_timeout"
if [ -n "$mptcp_scheduler" ] && [ -d /usr/share/bpf/scheduler ]; then
for scheduler in /usr/share/bpf/scheduler/*.o; do
[ -f "$scheduler" ] && bpftool struct_ops register "$scheduler" >/dev/null 2>&1
done
if [ -n "$mptcp_scheduler" ]; then
if [ -d /usr/share/bpf/scheduler ]; then
for scheduler in /usr/share/bpf/scheduler/*.o; do
[ -f "$scheduler" ] && bpftool struct_ops register "$scheduler" >/dev/null 2>&1
done
fi
local sched="${mptcp_scheduler#mptcp_}"; sched="${sched%.o}"
sysctl -qew net.mptcp.scheduler="$sched" >/dev/null 2>&1
fi
+7 -3
View File
@@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=teleproxy
PKG_VERSION:=4.12.0
PKG_RELEASE:=5
PKG_VERSION:=4.12.2
PKG_RELEASE:=6
PKG_MAINTAINER:=Kosntantine Shevlakov <shevlakov@132lan.ru>
PKG_LICENSE:=GPLv2
@@ -10,7 +10,7 @@ PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/teleproxy/teleproxy.git
PKG_SOURCE_VERSION:=1785ace7dfa4bda781c8e52be483e4db22282681
PKG_SOURCE_VERSION:=06ecb7a06d02669677a0f669119b29f7e9d1d743
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
@@ -28,6 +28,10 @@ define Package/$(PKG_NAME)
DEPENDS:=+libopenssl +zlib
endef
define Package/$(PKG_NAME)/conffiles
/etc/config/$(PKG_NAME)
endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/bin \
$(1)/usr/share \