🛸 Sync 2024-09-23 01:07:16

This commit is contained in:
github-actions[bot] 2024-09-23 01:07:16 +08:00
parent 564e9a82ce
commit d0ac147855
12 changed files with 235 additions and 126 deletions

View File

@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_MAINTAINER:=Thaolga <https://github.com/Thaolga/luci-app-nekoclash>
PKG_NAME:=luci-app-nekoclash
PKG_VERSION:=1.3.5
PKG_RELEASE:=43
PKG_RELEASE:=44
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

View File

@ -8,12 +8,20 @@ $allowed_files = [
];
$file = $_GET['file'] ?? '';
$max_lines = 100;
if (array_key_exists($file, $allowed_files)) {
$file_path = $allowed_files[$file];
if (file_exists($file_path)) {
echo htmlspecialchars(file_get_contents($file_path));
$lines = file($file_path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (count($lines) > $max_lines) {
$lines = array_slice($lines, -$max_lines);
file_put_contents($file_path, implode(PHP_EOL, $lines));
}
echo htmlspecialchars(implode(PHP_EOL, $lines));
} else {
http_response_code(404);
echo "File not found.";
@ -22,4 +30,4 @@ if (array_key_exists($file, $allowed_files)) {
http_response_code(403);
echo "Forbidden.";
}
?>
?>

View File

@ -326,8 +326,12 @@ $configDir = '/etc/neko/config';
$start_script_template = <<<EOF
#!/bin/bash
exec >> $logFile 2>&1
exec 2>> $singBoxLogFile
if command -v fw4 > /dev/null; then
echo "Detected fw4, configuring nftables rules..."
echo "FW4 Detected."
echo "Starting nftables."
echo '#!/usr/sbin/nft -f
@ -394,7 +398,8 @@ table inet singbox {
nft -f /etc/nftables.conf
elif command -v fw3 > /dev/null; then
echo "Detected fw3, configuring iptables rules..."
echo "FW3 Detected."
echo "Starting iptables."
iptables -t mangle -F
iptables -t mangle -X
@ -434,7 +439,8 @@ else
exit 1
fi
echo "启动sing-box使用配置文件%s"
echo "Configs : %s"
exec >> $singBoxLogFile 2>&1
/usr/bin/sing-box run -c %s
EOF;
@ -595,8 +601,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
exec("/etc/neko/core/start.sh > $singBoxLogFile 2>&1 &", $output, $returnVar);
$version = getSingboxVersion();
$pid = getSingboxPID();
$currentTimestamp = date('H:i:s');
$logMessage = $returnVar === 0
? "Sing-box has been started, version: $version" : "Failed to start Sing-box";
? "Sing-box started\n[$currentTimestamp] Core Detected : $version"
: "Failed to start Sing-box\n[$currentTimestamp]";
logToFile($logFile, $logMessage);
$singbox_status = $returnVar === 0 ? 1 : 0;
} elseif ($_POST['singbox'] === 'disable') {
@ -770,23 +778,6 @@ $singboxStartLogContent = readLogFile($singboxStartLogFile);
</tbody>
</table>
</div>
<div class="container container-bg border border-3 rounded-4 col-12 mb-4">
<h2 class="text-center p-2" style="margin-top: -15px; margin-bottom: 5px;">语音播报系统</h2>
<table class="table table-borderless mb-2" style="margin-bottom: 5px;">
<tbody>
<tr>
<td>
<div class="row mb-2" style="margin-bottom: 5px;">
<div class="col">
<input type="text" id="city-input" class="form-control" placeholder="如 Beijing" style="padding: 5px;">
</div>
<div class="col-auto">
<button onclick="saveCity()" class="btn btn-success" style="padding: 5px 10px;">保存城市</button
</td>
</tr>
</tbody>
</table>
</div>
<!DOCTYPE html>
<html lang="zh">
<head>
@ -978,15 +969,13 @@ $singboxStartLogContent = readLogFile($singboxStartLogFile);
fetchLogs();
setInterval(fetchLogs, 5000);
</script>
<div class="container container-bg border border-3 rounded-4 col-12 mb-4 d-flex justify-content-center" style="height: 60px;">
<div class="nav-buttons d-flex justify-content-center align-items-center" style="height: 100%;">
<a href="/nekoclash/mon.php" class="config-menu-button d-flex justify-content-center align-items-center" style="height: 40px; line-height: 40px; margin-top: -28px;" onclick="speakAndNavigate('打开Mihomo 管理面板', '/nekoclash/mon.php'); return false;">
打开Mihomo 管理面板
</a>
</div>
</div>
<a href="/nekoclash/mon.php" class="config-menu-button d-flex justify-content-center align-items-center"
style="height: 40px; width: 40px; line-height: 40px; border-radius: 50%; background-color: transparent; border: 5px solid; color: white; position: absolute; top: 20px; left: 20px; text-align: center; text-decoration: none; transition: opacity 0.3s; animation: borderAnimation 3s linear infinite;"
onclick="speakAndNavigate('打开Mihomo 管理面板', '/nekoclash/mon.php'); return false;"
onmouseover="this.style.opacity='0.8';" onmouseout="this.style.opacity='1';">
<i class="fas fa-cog"></i>
</a>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<script>
function speakAndNavigate(message, url) {
speakMessage(message);

View File

@ -2,6 +2,7 @@
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<style>
html, body {
margin: 0;
@ -174,10 +175,38 @@
padding: 0;
box-sizing: border-box;
}
.config-menu-button {
height: 40px;
width: 40px;
border-radius: 50%;
background-color: transparent;
border: 5px solid;
color: white;
position: absolute;
right: 20px;
text-align: center;
text-decoration: none;
transition: opacity 0.3s;
animation: borderAnimation 3s linear infinite;
display: flex;
align-items: center;
justify-content: center;
top: 20px;
}
.button-top-60 {
top: 60px;
}
</style>
</head>
<body>
<nav>
<a href="/nekoclash" class="config-menu-button button-top-60">
<i class="fas fa-home"></i>
</a>
<ul>
<li><a href="?page=upload" class="<?= (!isset($_GET['page']) || $_GET['page'] == 'upload') ? 'active' : '' ?>">Mihomo</a></li>
<li><a href="?page=upload_sb" class="<?= (isset($_GET['page']) && $_GET['page'] == 'upload_sb') ? 'active' : '' ?>">Sing-box</a></li>

View File

@ -0,0 +1,89 @@
<?php
ini_set('memory_limit', '128M');
function logMessage($message) {
$logFile = '/var/log/sing-box_update.log';
$timestamp = date('Y-m-d H:i:s');
file_put_contents($logFile, "[$timestamp] $message\n", FILE_APPEND);
}
function writeVersionToFile($version) {
$versionFile = '/etc/neko/core/version.txt';
file_put_contents($versionFile, $version);
}
$repo_owner = "Thaolga";
$repo_name = "luci-app-nekoclash";
$api_url = "https://api.github.com/repos/$repo_owner/$repo_name/releases/latest";
$curl_command = "curl -s -H 'User-Agent: PHP' --connect-timeout 10 " . escapeshellarg($api_url);
$response = shell_exec($curl_command);
if ($response === false || empty($response)) {
logMessage("GitHub API 请求失败,可能是网络问题或 GitHub API 限制。");
die("GitHub API 请求失败。请检查网络连接或稍后重试。");
}
$data = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
logMessage("解析 GitHub API 响应时出错: " . json_last_error_msg());
die("解析 GitHub API 响应时出错: " . json_last_error_msg());
}
$latest_version = $data['tag_name'] ?? '';
$current_version = '';
$install_path = '/usr/bin/sing-box';
$temp_file = '/tmp/sing-box.tar.gz';
$temp_dir = '/tmp/singbox_temp';
if (file_exists($install_path)) {
$current_version = trim(shell_exec("{$install_path} --version"));
}
$current_arch = trim(shell_exec("uname -m"));
$download_url = '';
switch ($current_arch) {
case 'aarch64':
$download_url = "https://github.com/Thaolga/luci-app-nekoclash/releases/download/sing-box/sing-box-puernya-linux-armv8.tar.gz";
break;
case 'x86_64':
$download_url = "https://github.com/Thaolga/luci-app-nekoclash/releases/download/sing-box/sing-box-puernya-linux-amd64.tar.gz";
break;
default:
die("未找到适合架构的下载链接: $current_arch");
}
if (trim($current_version) === trim($latest_version)) {
die("当前版本已是最新版本。");
}
exec("wget -O '$temp_file' '$download_url'", $output, $return_var);
if ($return_var !== 0) {
die("下载失败!");
}
if (!is_dir($temp_dir)) {
mkdir($temp_dir, 0755, true);
}
exec("tar -xzf '$temp_file' -C '$temp_dir'", $output, $return_var);
if ($return_var !== 0) {
die("解压失败!");
}
$extracted_file = glob("$temp_dir/CrashCore")[0] ?? '';
if ($extracted_file && file_exists($extracted_file)) {
exec("cp -f '$extracted_file' '$install_path'");
exec("chmod 0755 '$install_path'");
writeVersionToFile($latest_version);
echo "更新完成!当前版本: $latest_version";
} else {
die("解压后的文件 'CrashCore' 不存在。");
}
unlink($temp_file);
exec("rm -r '$temp_dir'");
?>

View File

@ -1,7 +1,7 @@
<?php
include './cfg.php';
include './video.php';
$themeDir = "$neko_www/assets/theme";
$tmpPath = "$neko_www/lib/selected_config.txt";
@ -58,49 +58,6 @@ $singBoxVersion = getSingboxVersion();
<script type="text/javascript" src="./assets/js/neko.js"></script>
</head>
<body>
<head>
<meta charset="UTF-8">
<head>
<meta charset="UTF-8">
<title>双击显示图标</title>
<style>
.container-sm {
margin: 20px auto;
}
</style>
</head>
<body>
<div class="container-sm text-center col-8">
<img src="./assets/img/neko.png" class="img-fluid mb-5" style="display: none;">
</div>
<script>
function toggleImage() {
var img = document.querySelector('.container-sm img');
var btn = document.getElementById('showHideButton');
if (img.style.display === 'none') {
img.style.display = 'block';
btn.innerText = '隐藏图标';
} else {
img.style.display = 'none';
btn.innerText = '显示图标';
}
}
function hideIcon() {
var img = document.querySelector('.container-sm img');
var btn = document.getElementById('showHideButton');
if (img.style.display === 'block') {
img.style.display = 'none';
btn.innerText = '显示图标';
}
}
document.body.ondblclick = function() {
toggleImage();
};
</script>
<div class="container-sm container-bg text-center callout border border-3 rounded-4 col-11">
<div class="row">
<a href="./" class="col btn btn-lg">首页</a>
@ -129,7 +86,6 @@ $singBoxVersion = getSingboxVersion();
</div>
</div>
</form>
<h2 class="text-center p-2 mb-3">软体资讯</h2>
<table class="table table-borderless mb-3">
<tbody>
@ -168,6 +124,7 @@ $singBoxVersion = getSingboxVersion();
</div>
<div class="text-center mt-2">
<button class="btn btn-pink" id="updateSingboxButton">更新 Singbox 内核</button>
<button class="btn btn-info" id="updatePuernyaButton">切换 Puernya 内核</button>
</div>
</div>
</div>
@ -242,7 +199,7 @@ $singBoxVersion = getSingboxVersion();
background-color: #90EE90;
}
#updateNekoButton:hover {
#updatePuernyaButton:hover {
background-color: #87CEFA;
}
</style>
@ -286,6 +243,26 @@ $singBoxVersion = getSingboxVersion();
xhr.send();
});
document.getElementById('updatePuernyaButton').addEventListener('click', function() {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'puernya.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
document.getElementById('logOutput').innerHTML = '开始下载核心更新...';
xhr.onload = function() {
if (xhr.status === 200) {
document.getElementById('logOutput').innerHTML += '\n核心更新完成';
document.getElementById('logOutput').innerHTML += '\n' + xhr.responseText;
} else {
document.getElementById('logOutput').innerHTML += '\n发生错误' + xhr.statusText;
}
};
xhr.send();
});
document.getElementById('updateCoreButton').addEventListener('click', function() {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'core.php', true);
@ -305,6 +282,24 @@ $singBoxVersion = getSingboxVersion();
xhr.send();
});
</script>
<div class="feature-box text-center">
<h2>语音播报系统</h2>
<tbody>
<tr>
<td>
<div class="row mb-2" style="margin-bottom: 5px;">
<div class="col">
<input type="text" id="city-input" class="form-control" placeholder="如 Beijing" style="padding: 5px;">
</div>
<div class="col-auto">
<button onclick="saveCity()" class="btn btn-success" style="padding: 5px 10px;">保存城市</button
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!DOCTYPE html>
<html lang="zh">
<head>

View File

@ -176,7 +176,7 @@ function formatSize($size) {
<?php
$subscriptionPath = '/etc/neko/proxy_provider/';
$subscriptionFile = $subscriptionPath . 'subscriptions.json';
$clashFile = $subscriptionPath . 'clash_config.yaml';
$clashFile = $subscriptionPath . 'subscription_6.yaml';
$message = "";
$decodedContent = "";

View File

@ -169,7 +169,6 @@ return view.extend({
o = s.taboption('advance',form.Value, 'advertiseRoutes', _('Expose Subnets'), _('Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>.'));
o.default = '';
o.depends('acceptRoutes', '1');
o.rmempty = true;
o = s.taboption('advance',form.Flag, 's2s', _('Site To Site'), _('Use site-to-site layer 3 networking to connect subnets on the Tailscale network.'));

View File

@ -13,11 +13,11 @@ msgstr ""
msgid "Accept subnet routes that other nodes advertise."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Access Control"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185
msgid "Additional Flags"
msgstr ""
@ -29,7 +29,7 @@ msgstr ""
msgid "Are you sure you want to logout and unbind the current device?"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195
msgid "Auth Key"
msgstr ""
@ -37,7 +37,7 @@ msgstr ""
msgid "Auto Mesh"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185
msgid "Available flags"
msgstr ""
@ -50,7 +50,7 @@ msgstr ""
msgid "Collecting data ..."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:188
msgid "Custom Server Settings"
msgstr ""
@ -74,7 +74,7 @@ msgstr ""
msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:184
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:183
msgid "Extra Settings"
msgstr ""
@ -106,7 +106,7 @@ msgstr ""
msgid "Interface Name"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
msgid "LAN access Tailscale"
msgstr ""
@ -114,7 +114,7 @@ msgstr ""
msgid "Leave blank to use the device's hostname."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185
msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale."
msgstr ""
@ -175,7 +175,7 @@ msgstr ""
msgid "RUNNING"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:192
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:191
msgid "Server Address"
msgstr ""
@ -203,11 +203,11 @@ msgstr ""
msgid "Tailscale"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176
msgid "Tailscale access LAN"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
msgid "Tailscale access WAN"
msgstr ""
@ -240,15 +240,15 @@ msgstr ""
msgid "Unable to get interface info: %s."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189
msgid "Use %s to deploy a private server."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:170
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
msgid "WAN access Tailscale"
msgstr ""

View File

@ -19,11 +19,11 @@ msgstr "使用 Tailscale 管理控制台的 DNS 配置。"
msgid "Accept subnet routes that other nodes advertise."
msgstr "接受其他节点广播的子网路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Access Control"
msgstr "访问控制"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185
msgid "Additional Flags"
msgstr "参数列表"
@ -35,7 +35,7 @@ msgstr "高级选项"
msgid "Are you sure you want to logout and unbind the current device?"
msgstr "是否注销当前登录并且解绑当前设备?"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195
msgid "Auth Key"
msgstr "认证密钥"
@ -43,7 +43,7 @@ msgstr "认证密钥"
msgid "Auto Mesh"
msgstr "自动组网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185
msgid "Available flags"
msgstr "可用参数"
@ -56,7 +56,7 @@ msgstr "基础选项"
msgid "Collecting data ..."
msgstr "正在收集数据..."
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:188
msgid "Custom Server Settings"
msgstr "自定义服务器"
@ -80,7 +80,7 @@ msgstr "公开网段"
msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>."
msgstr "广播子网路由至 Tailscale例如<code>10.0.0.0/24</code>。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:184
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:183
msgid "Extra Settings"
msgstr "附加选项"
@ -112,7 +112,7 @@ msgstr "接口信息"
msgid "Interface Name"
msgstr "接口名称"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
msgid "LAN access Tailscale"
msgstr "本地局域网访问虚拟局域网"
@ -120,7 +120,7 @@ msgstr "本地局域网访问虚拟局域网"
msgid "Leave blank to use the device's hostname."
msgstr "留空以使用设备的主机名。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185
msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale."
msgstr "额外参数的列表。格式:--flags=value例如 <code>--exit-node=10.0.0.1</code>。<br> 在 Tailscale 启动时的%s。"
@ -181,7 +181,7 @@ msgstr "端口"
msgid "RUNNING"
msgstr "运行中"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:192
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:191
msgid "Server Address"
msgstr "服务器地址"
@ -209,11 +209,11 @@ msgstr "运行日志"
msgid "Tailscale"
msgstr "Tailscale"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176
msgid "Tailscale access LAN"
msgstr "虚拟局域网访问本地局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
msgid "Tailscale access WAN"
msgstr "虚拟局域网访问本地广域网"
@ -246,15 +246,15 @@ msgstr "无法获取接口 %s 的信息:%s。"
msgid "Unable to get interface info: %s."
msgstr "无法获取接口信息:%s。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189
msgid "Use %s to deploy a private server."
msgstr "使用 %s 部署私有服务器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:170
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr "使用站点到站点的三层网络连接 Tailscale 中的子网。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
msgid "WAN access Tailscale"
msgstr "本地广域网访问虚拟局域网"

View File

@ -19,11 +19,11 @@ msgstr "使用 Tailscale 管理控制台的 DNS 設定。"
msgid "Accept subnet routes that other nodes advertise."
msgstr "接受其他節點廣播的子網路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Access Control"
msgstr "訪問控制"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185
msgid "Additional Flags"
msgstr "參數列表"
@ -35,7 +35,7 @@ msgstr "高級選項"
msgid "Are you sure you want to logout and unbind the current device?"
msgstr "是否註銷當前登錄並且解綁當前設備?"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195
msgid "Auth Key"
msgstr "認證密鑰"
@ -43,7 +43,7 @@ msgstr "認證密鑰"
msgid "Auto Mesh"
msgstr "自動組網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185
msgid "Available flags"
msgstr "可用參數"
@ -56,7 +56,7 @@ msgstr "基礎選項"
msgid "Collecting data ..."
msgstr "正在收集數據..."
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:188
msgid "Custom Server Settings"
msgstr "自定義伺服器"
@ -80,7 +80,7 @@ msgstr "公開網段"
msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>."
msgstr "廣播子網路由至 Tailscale例如<code>10.0.0.0/24</code>。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:184
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:183
msgid "Extra Settings"
msgstr "附加選項"
@ -112,7 +112,7 @@ msgstr "接口信息"
msgid "Interface Name"
msgstr "接口名稱"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
msgid "LAN access Tailscale"
msgstr "本地局域網訪問虛擬局域網"
@ -120,7 +120,7 @@ msgstr "本地局域網訪問虛擬局域網"
msgid "Leave blank to use the device's hostname."
msgstr "留空以使用設備的主機名。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185
msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale."
msgstr "額外參數的列表。格式:--flags=value例如 <code>--exit-node=10.0.0.1</code>。<br> 在 Tailscale 啟動時的%s。"
@ -181,7 +181,7 @@ msgstr "端口"
msgid "RUNNING"
msgstr "運行中"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:192
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:191
msgid "Server Address"
msgstr "伺服器地址"
@ -209,11 +209,11 @@ msgstr "運行日誌"
msgid "Tailscale"
msgstr "Tailscale"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176
msgid "Tailscale access LAN"
msgstr "虛擬局域網訪問本地局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
msgid "Tailscale access WAN"
msgstr "虛擬局域網訪問本地廣域網"
@ -246,15 +246,15 @@ msgstr "無法獲取接口 %s 的信息:%s。"
msgid "Unable to get interface info: %s."
msgstr "無法獲取接口信息:%s。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189
msgid "Use %s to deploy a private server."
msgstr "使用 %s 部署私有伺服器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:170
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr "使用站點到站點的三層網路連線 Tailscale 中的子網。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
msgid "WAN access Tailscale"
msgstr "本地廣域網訪問虛擬局域網"

View File

@ -6,8 +6,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=shadowsocks-rust
PKG_VERSION:=1.20.4
PKG_RELEASE:=76
PKG_VERSION:=1.21.0
PKG_RELEASE:=77
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/shadowsocks/shadowsocks-rust/tar.gz/v$(PKG_VERSION)?