update 2025-01-24 16:24:40

This commit is contained in:
kenzok8 2025-01-24 16:24:40 +08:00
parent 3fe73bb41f
commit e8e407e9f3
12 changed files with 286 additions and 231 deletions

View File

@ -29,6 +29,8 @@ $dash_link = $neko_cfg['ctrl_host'] . ':' . $neko_cfg['ctrl_port'] . '/ui/dashbo
<link href="./assets/css/custom.css" rel="stylesheet">
<link href="./assets/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="./assets/theme/<?php echo $neko_theme ?>" rel="stylesheet">
<link rel="stylesheet" href="styles.css?v=<?php echo time(); ?>" />
<script src="script.js?v=<?php echo time(); ?>"></script>
<script type="text/javascript" src="./assets/js/feather.min.js"></script>
<script type="text/javascript" src="./assets/js/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="./assets/js/bootstrap.min.js"></script>

View File

@ -169,6 +169,8 @@ $razordVersion = getRazordVersion();
<link href="./assets/theme/<?php echo $neko_theme ?>" rel="stylesheet">
<link href="./assets/css/custom.css" rel="stylesheet">
<link href="./assets/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link rel="stylesheet" href="styles.css?v=<?php echo time(); ?>" />
<script src="script.js?v=<?php echo time(); ?>"></script>
<script type="text/javascript" src="./assets/js/bootstrap.min.js"></script>
<script type="text/javascript" src="./assets/js/feather.min.js"></script>
<script type="text/javascript" src="./assets/bootstrap/bootstrap.bundle.min.js"></script>
@ -221,14 +223,16 @@ $razordVersion = getRazordVersion();
</div>
<div class="col-12 col-md-6 mb-3" style="padding-right: 1.3rem;" >
<div class="d-flex justify-content-between gap-2">
<input class="btn btn-info btn-custom" type="submit" value="🖫 更改主题">
<button class="btn btn-info btn-custom" type="submit">
<i class="bi bi-paint-bucket"></i> 更改主题
</button>
<button type="button" class="btn btn-success" data-bs-toggle="modal" data-bs-target="#colorModal">
主题编辑器
<i class="bi-palette"></i> 主题编辑器
</button>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#filesModal">
上传并管理背景图片
<i class="bi-upload"></i> 上传并管理背景图片
</button>
</div>
</div>
@ -624,11 +628,11 @@ $razordVersion = getRazordVersion();
<form method="POST" action="theme.php" id="themeForm" enctype="multipart/form-data">
<div class="row">
<div class="col-md-6 mb-3">
<label for="primaryColor" class="form-label"></label>
<label for="primaryColor" class="form-label">导航栏文本</label>
<input type="color" class="form-control" name="primaryColor" id="primaryColor" value="#0ceda2">
</div>
<div class="col-md-6 mb-3">
<label for="secondaryColor" class="form-label"></label>
<label for="secondaryColor" class="form-label">导航栏悬停文本</label>
<input type="color" class="form-control" name="secondaryColor" id="secondaryColor" value="#00ffff">
</div>
<div class="col-md-6 mb-3">
@ -637,54 +641,62 @@ $razordVersion = getRazordVersion();
</div>
<div class="col-md-6 mb-3">
<label for="infoBgSubtle" class="form-label">信息背景色</label>
<input type="color" class="form-control" name="infoBgSubtle" id="infoBgSubtle" value="#6a5acd">
<input type="color" class="form-control" name="infoBgSubtle" id="infoBgSubtle" value="#087990">
</div>
<div class="col-md-6 mb-3">
<label for="backgroundColor" class="form-label">背景色</label>
<label for="backgroundColor" class="form-label">背景色</label>
<input type="color" class="form-control" name="backgroundColor" id="backgroundColor" value="#20cdd9">
</div>
<div class="col-md-6 mb-3">
<label for="primaryBorderSubtle" class="form-label">文本色</label>
<label for="primaryBorderSubtle" class="form-label">文本色</label>
<input type="color" class="form-control" name="primaryBorderSubtle" id="primaryBorderSubtle" value="#1815d1">
</div>
<div class="col-md-6 mb-3">
<label for="selectColor" class="form-label">主边框颜色</label>
<label for="placeholderColor" class="form-label">输入框文本色</label>
<input type="color" class="form-control" name="placeholderColor" id="placeholderColor" value="#f82af2">
</div>
<div class="col-md-6 mb-3">
<label for="logTextColor" class="form-label">日志文本色</label>
<input type="color" class="form-control" name="logTextColor" id="logTextColor" value="#f8f9fa">
</div>
<div class="col-md-6 mb-3">
<label for="selectColor" class="form-label">主边框背景色</label>
<input type="color" class="form-control" name="selectColor" id="selectColor" value="#087990">
</div>
<div class="col-md-6 mb-3">
<label for="bodyColor" class="form-label">文本颜色 1</label>
<label for="bodyColor" class="form-label">表格文本色 1</label>
<input type="color" class="form-control" name="bodyColor" id="bodyColor" value="#00ccff">
</div>
<div class="col-md-6 mb-3">
<label for="tertiaryColor" class="form-label">文本颜色 2</label>
<label for="tertiaryColor" class="form-label">表格文本色 2</label>
<input type="color" class="form-control" name="tertiaryColor" id="tertiaryColor" value="#00ff00">
</div>
<div class="col-md-6 mb-3">
<label for="tertiaryRgbColor" class="form-label">文本3</label>
<label for="tertiaryRgbColor" class="form-label">表格文本色 3</label>
<input type="color" class="form-control" name="tertiaryRgbColor" id="tertiaryRgbColor" value="#1e90ff">
</div>
<div class="col-md-6 mb-3">
<label for="heading1Color" class="form-label">标题1</label>
<input type="color" class="form-control" name="heading1Color" id="heading1Color" value="#00a2e8">
<label for="heading1Color" class="form-label">标题1</label>
<input type="color" class="form-control" name="heading1Color" id="heading1Color" value="#21e4f2">
</div>
<div class="col-md-6 mb-3">
<label for="heading2Color" class="form-label">标题2</label>
<input type="color" class="form-control" name="heading2Color" id="heading2Color" value="#00a2e8">
<label for="heading2Color" class="form-label">标题2</label>
<input type="color" class="form-control" name="heading2Color" id="heading2Color" value="#65f1fb">
</div>
<div class="col-md-6 mb-3">
<label for="heading3Color" class="form-label">标题3</label>
<label for="heading3Color" class="form-label">标题3</label>
<input type="color" class="form-control" name="heading3Color" id="heading3Color" value="#ffcc00">
</div>
<div class="col-md-6 mb-3">
<label for="heading4Color" class="form-label">标题4</label>
<label for="heading4Color" class="form-label">标题4</label>
<input type="color" class="form-control" name="heading4Color" id="heading4Color" value="#ff4500">
</div>
<div class="col-md-6 mb-3">
<label for="heading5Color" class="form-label">标题5</label>
<input type="color" class="form-control" name="heading5Color" id="heading5Color" value="#7d5fff">
<label for="heading5Color" class="form-label">标题5</label>
<input type="color" class="form-control" name="heading5Color" id="heading5Color" value="#ba13f6">
</div>
<div class="col-md-6 mb-3">
<label for="heading6Color" class="form-label">标题6</label>
<label for="heading6Color" class="form-label">标题6</label>
<input type="color" class="form-control" name="heading6Color" id="heading6Color" value="#00ffff">
</div>
</div>
@ -878,18 +890,20 @@ function formatSize($size) {
document.getElementById('secondaryColor').value = '#00ffff';
document.getElementById('bodyBgColor').value = '#087990';
document.getElementById('bodyColor').value = '#00ccff';
document.getElementById('infoBgSubtle').value = '#6a5acd';
document.getElementById('infoBgSubtle').value = '#087990';
document.getElementById('selectColor').value = '#087990';
document.getElementById('tertiaryColor').value = '#00ff00';
document.getElementById('tertiaryRgbColor').value = '#1e90ff';
document.getElementById('heading1Color').value = '#00a2e8';
document.getElementById('heading2Color').value = '#00a2e8';
document.getElementById('heading1Color').value = '#21e4f2';
document.getElementById('heading2Color').value = '#65f1fb';
document.getElementById('heading3Color').value = '#ffcc00';
document.getElementById('heading4Color').value = '#ff4500';
document.getElementById('heading5Color').value = '#7d5fff';
document.getElementById('heading5Color').value = '#ba13f6';
document.getElementById('heading6Color').value = '#00ffff';
document.getElementById('primaryBorderSubtle').value = '#1815d1';
document.getElementById('backgroundColor').value = '#20cdd9';
document.getElementById('placeholderColor').value = '#f82af2';
document.getElementById('logTextColor').value = '#f8f9fa';
localStorage.clear();
});
@ -912,6 +926,8 @@ function formatSize($size) {
heading6Color: document.getElementById('heading6Color').value,
primaryBorderSubtle: document.getElementById('primaryBorderSubtle').value,
backgroundColor: document.getElementById('backgroundColor').value,
placeholderColor: document.getElementById('placeholderColor').value,
logTextColor: document.getElementById('logTextColor').value,
useBackgroundImage: document.getElementById('useBackgroundImage').checked,
backgroundImage: document.getElementById('backgroundImage').value
};
@ -946,6 +962,8 @@ function formatSize($size) {
document.getElementById('heading6Color').value = settings.heading6Color;
document.getElementById('primaryBorderSubtle').value = settings.primaryBorderSubtle;
document.getElementById('backgroundColor').value = settings.backgroundColor;
document.getElementById('placeholderColor').value = settings.placeholderColor;
document.getElementById('logTextColor').value = settings.logTextColor;
document.getElementById('useBackgroundImage').checked = settings.useBackgroundImage;
const backgroundImageContainer = document.getElementById('backgroundImageContainer');
@ -968,6 +986,8 @@ function formatSize($size) {
localStorage.setItem('heading6Color', settings.heading6Color);
localStorage.setItem('primaryBorderSubtle', settings.primaryBorderSubtle);
localStorage.setItem('backgroundColor', settings.backgroundColor);
localStorage.setItem('placeholderColor', settings.placeholderColor);
localStorage.setItem('logTextColor', settings.logTextColor);
localStorage.setItem('useBackgroundImage', settings.useBackgroundImage);
localStorage.setItem('backgroundImage', settings.backgroundImage);
};
@ -1217,11 +1237,11 @@ function selectOperation(type) {
? '开始下载 Dashboard 面板更新...'
: '未知面板更新类型...',
description: selectedPanel === 'zashboard'
? '正在更新 Zashboard 面板到最新版本dist-cdn-fonts.zip,如遇无法显示清除浏览器缓存。'
? '正在更新 Zashboard 面板到最新版本dist-cdn-fonts.zip'
: selectedPanel === 'Zashboard'
? '正在更新 Zashboard 面板到最新版本dist.zip,如遇无法显示清除浏览器缓存。'
? '正在更新 Zashboard 面板到最新版本dist.zip'
: selectedPanel === 'yacd-meat'
? '正在更新 Yacd-Meat 面板到最新版本,如遇无法显示清除浏览器缓存。'
? '正在更新 Yacd-Meat 面板到最新版本'
: selectedPanel === 'metacubexd'
? '正在更新 Metacubexd 面板到最新版本'
: selectedPanel === 'dashboard'

View File

@ -410,7 +410,7 @@ EOL;
echo "<div class='text-center' mb-3>";
echo "<button class='btn btn-info me-3' type='button' onclick='copyToClipboard()'><i class='bi bi-clipboard'></i> 复制到剪贴</button>";
echo "<input type='hidden' name='saveContent' value='1'>";
echo "<button class='btn btn-success' type='submit'><i class='bi bi-save'></i>保存修改</button>";
echo "<button class='btn btn-success' type='submit'><i class='bi bi-save'></i> 保存修改</button>";
echo "</div>";
echo "</form>";
echo "</div>";

View File

@ -4,17 +4,19 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$secondaryColor = $_POST['secondaryColor'] ?? '#00ffff';
$bodyBgColor = $_POST['bodyBgColor'] ?? '#087990';
$bodyColor = $_POST['bodyColor'] ?? '#00ccff';
$infoBgSubtle = $_POST['infoBgSubtle'] ?? '#6a5acd';
$infoBgSubtle = $_POST['infoBgSubtle'] ?? '#087990';
$primaryBorderSubtle = $_POST['primaryBorderSubtle'] ?? '#1815d1';
$tertiaryColor = $_POST['tertiaryColor'] ?? '#00ff00';
$tertiaryRgbColor = $_POST['tertiaryRgbColor'] ?? '#1e90ff';
$selectColor = $_POST['selectColor'] ?? '#087990';
$backgroundColor = $_POST['backgroundColor'] ?? '#20cdd9';
$heading1Color = $_POST['heading1Color'] ?? '#00a2e8';
$heading2Color = $_POST['heading2Color'] ?? '#00a2e8';
$placeholderColor = $_POST['placeholderColor'] ?? '#f82af2';
$logTextColor = $_POST['logTextColor'] ?? '#f8f9fa';
$heading1Color = $_POST['heading1Color'] ?? '#21e4f2';
$heading2Color = $_POST['heading2Color'] ?? '#65f1fb';
$heading3Color = $_POST['heading3Color'] ?? '#ffcc00';
$heading4Color = $_POST['heading4Color'] ?? '#ff4500';
$heading5Color = $_POST['heading5Color'] ?? '#7d5fff';
$heading5Color = $_POST['heading5Color'] ?? '#ba13f6';
$heading6Color = $_POST['heading6Color'] ?? '#00ffff';
$uploadedImagePath = '';
@ -42,6 +44,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
--bs-body-bg: $bodyBgColor;
--bs-body-color: $bodyColor;
--bs-info-bg-subtle: $infoBgSubtle;
--placeholder-color: $placeholderColor;
--bs-primary-border-subtle: $primaryBorderSubtle;
--bs-tertiary: $tertiaryColor;
@ -49,7 +52,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
--bs-tertiary-color: $primaryBorderSubtle;
--bs-tertiary-color-rgb: $backgroundColor;
--bs-form-select: $selectColor;
--log-text-color: $logTextColor;
--bs-heading-1: $heading1Color;
--bs-heading-2: $heading2Color;
--bs-heading-3: $heading3Color;
@ -83,22 +86,32 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
" . ($uploadedImagePath && empty($backgroundImagePath) ? "background-image: url('$uploadedImagePath'); background-repeat: no-repeat; background-position: center center; background-attachment: fixed; background-size: cover;" : "") . "
}
h1 { color: var(--bs-heading-1); }
h2 { color: var(--bs-heading-2); }
h3 { color: var(--bs-heading-3); }
h4 { color: var(--bs-heading-4); }
h5 { color: var(--bs-heading-5); }
h6 { color: var(--bs-heading-6); }
h1 { color: var(--bs-heading-1) !important; }
h2 { color: var(--bs-heading-2) !important; }
h3 { color: var(--bs-heading-3) !important; }
h4 { color: var(--bs-heading-4) !important; }
h5 { color: var(--bs-heading-5) !important; }
h6 { color: var(--bs-heading-6) !important; }
input::placeholder { color: #ffffff !important; }
.table, .form-control, .card, button, label, li, td, th, blockquote, q, code, pre {
background-color: transparent;
color: #ffffff;
input::placeholder { color: #ffffff !important; }
.table, .form-control, .card, button, label, li, td, th, blockquote, q, code, pre {
background-color: transparent;
color: #ffffff;
}
input::placeholder {
color: blue !important;
font-weight: bold;
input::placeholder {
color: var(--placeholder-color) !important;
font-weight: bold;
}
.alert-info {
color: #FF00FF;
}
#plugin_log,
#bin_logs,
#singbox_log {
color: var(--log-text-color);
}
.detail-label {
@ -199,6 +212,26 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
color: #ffffff;
}
.btn-primary:hover {
background-color: #0069d9;
}
.btn-success:hover {
background-color: #218838;
}
.btn-info:hover {
background-color: #17a2b8;
}
.btn-warning:hover {
background-color: #e0a800;
}
.btn-pink:hover {
background-color: #d6336c;
}
.container-bg {
border-radius: 12px;
box-shadow: var(--bs-shadow-medium);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -33,8 +33,8 @@
name="theme-color"
content="#FFFFFF"
/>
<script type="module" crossorigin src="./assets/index-CP5L6Jr1.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-CUIhpdYS.css">
<script type="module" crossorigin src="./assets/index-DqRnidtX.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-Bt6wtUNb.css">
<link rel="manifest" href="./manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="./registerSW.js"></script></head>
<body class="overflow-hidden overscroll-none">
<div id="app"></div>

View File

@ -1 +1 @@
if(!self.define){let e,i={};const s=(s,n)=>(s=new URL(s+".js",n).href,i[s]||new Promise((i=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=i,document.head.appendChild(e)}else e=s,importScripts(s),i()})).then((()=>{let e=i[s];if(!e)throw new Error(`Module ${s} didnt register its module`);return e})));self.define=(n,r)=>{const f=e||("document"in self?document.currentScript.src:"")||location.href;if(i[f])return;let c={};const d=e=>s(e,f),o={module:{uri:f},exports:c,require:d};i[f]=Promise.all(n.map((e=>o[e]||d(e)))).then((e=>(r(...e),c)))}}define(["./workbox-3e8df8c8"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"assets/index-CP5L6Jr1.js",revision:null},{url:"assets/index-CUIhpdYS.css",revision:null},{url:"index.html",revision:"9ea7da4e83e493dc3c0f6c96ea9f84bc"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"favicon.svg",revision:"7f1c4521acc10694fefef8f72dd2ea5f"},{url:"pwa-192x192.png",revision:"021df52501f4357c03eebd808f40dc6a"},{url:"pwa-512x512.png",revision:"d2f759aaabcb2c44ff52b27fde3de6e0"},{url:"pwa-maskable-192x192.png",revision:"7cd11dc5f0490b349d23eef5591d10e5"},{url:"pwa-maskable-512x512.png",revision:"8c97dc367a85a5a1eba523b24f79d03b"},{url:"manifest.webmanifest",revision:"c452912633990899ffe790f985ad0db9"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
if(!self.define){let e,i={};const n=(n,s)=>(n=new URL(n+".js",s).href,i[n]||new Promise((i=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=i,document.head.appendChild(e)}else e=n,importScripts(n),i()})).then((()=>{let e=i[n];if(!e)throw new Error(`Module ${n} didnt register its module`);return e})));self.define=(s,r)=>{const f=e||("document"in self?document.currentScript.src:"")||location.href;if(i[f])return;let d={};const t=e=>n(e,f),o={module:{uri:f},exports:d,require:t};i[f]=Promise.all(s.map((e=>o[e]||t(e)))).then((e=>(r(...e),d)))}}define(["./workbox-3e8df8c8"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"assets/index-Bt6wtUNb.css",revision:null},{url:"assets/index-DqRnidtX.js",revision:null},{url:"index.html",revision:"a6fe46348527c1c8304d4883d456fddf"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"favicon.svg",revision:"7f1c4521acc10694fefef8f72dd2ea5f"},{url:"pwa-192x192.png",revision:"021df52501f4357c03eebd808f40dc6a"},{url:"pwa-512x512.png",revision:"d2f759aaabcb2c44ff52b27fde3de6e0"},{url:"pwa-maskable-192x192.png",revision:"7cd11dc5f0490b349d23eef5591d10e5"},{url:"pwa-maskable-512x512.png",revision:"8c97dc367a85a5a1eba523b24f79d03b"},{url:"manifest.webmanifest",revision:"c452912633990899ffe790f985ad0db9"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));

View File

@ -1 +1 @@
v1.57.0
v1.59.0

View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=vsftpd
PKG_VERSION:=3.0.5
PKG_RELEASE:=5
PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://security.appspot.com/downloads/

View File

@ -141,7 +141,7 @@ start_service() {
mkdir -m 0755 -p "$DEFAULT_SECURE_CHROOT"
chown root:root "$DEFAULT_SECURE_CHROOT"
config_get_bool conf_file global conf_file ""
config_get conf_file global conf_file ""
if [ -n "$conf_file" ]; then
# use user defined conf file instead of UCI
OUTPUT_CONF="$conf_file"