update 2026-10-27 07:31:06

This commit is contained in:
action committed 2026-10-27 07:31:06 +08:00
1 parent 197c60d843
commit a4d6470641
4213 files changed
-1575003

No files matched your search

-1
View File
@@ -1 +0,0 @@
/test
-11
View File
@@ -1,11 +0,0 @@
include $(TOPDIR)/rules.mk
LUCI_TITLE:=iStoreNAS Login Page
LUCI_DEPENDS:=+luci-theme-argon
PKG_VERSION:=1.0.0-r1
PKG_RELEASE:=
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature
-17
View File
@@ -1,17 +0,0 @@
# luci-theme-istorenas
Argon 主题,但修改登录界面,并且可配置默认登录后跳转路径。
### 修改登录后默认跳转路径
例如
```bash
cat >/etc/config/istorenas <<-EOF
config login
option landing_page "/cgi-bin/luci/istorenas/landing"
EOF
```
注意 `landing_page` 需要以 `/cgi-bin/luci/` 开头,如果需要跳转到其他位置,可以在 landing 页面再重定向。
注意 `landing_page` 必须在 Luci 中注册,不能是 404,不然无法登录。
@@ -1 +0,0 @@
argon
Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

@@ -1,249 +0,0 @@
#main {
width: 100vw;
height: 100vh;
position: relative;
overflow: hidden;
font-family: PingFang SC, helvetica neue, hiragino sans gb, arial, microsoft yahei ui, microsoft yahei, simsun, sans-serif
}
.section_login {
display: flex;
position: fixed;
right: 0;
top: 0;
background-color: rgba(255, 255, 255, .8);
min-width: 480px;
max-width: 640px;
height: 100%;
border-left: 1px solid rgba(255, 255, 255, .4);
justify-content: center;
align-items: center;
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px)
}
.section_login .section_body {
display: flex;
flex-wrap: wrap;
flex-flow: column;
width: 100%;
width: 360px
}
.section_login .section_body .title {
display: flex;
flex-flow: column
}
.section_login .section_body .title .logo {
display: flex;
gap: 8px;
width: 80px;
height: 80px;
padding: 8px;
box-sizing: border-box;
position: relative;
transform: rotate(-45deg)
}
.section_login .section_body .title .logo .logopath_1 {
position: relative;
overflow: hidden;
height: 0px;
width: 16px;
align-self: flex-end;
animation: logo_path-a798f117 .3s .6s ease-out forwards
}
.section_login .section_body .title .logo .logopath_2 {
position: relative;
overflow: hidden;
height: 0;
width: 16px;
animation: logo_path-a798f117 .3s .3s forwards
}
.section_login .section_body .title .logo .logopath_3 {
position: relative;
overflow: hidden;
height: 0;
width: 16px;
align-self: flex-end;
animation: logo_path-a798f117 .3s ease-in forwards
}
.section_login .section_body .title .logo .logopath_1 svg,
.section_login .section_body .title .logo .logopath_3 svg {
position: absolute;
bottom: 0
}
.section_login .section_body .title .text {
overflow-wrap: break-word;
color: rgba(0, 0, 0, .8);
font-size: 36px;
font-weight: 700;
text-align: left;
white-space: nowrap;
margin-bottom: 32px;
margin-top: 16px
}
.section_login .section_body .form_login {
display: flex;
flex-wrap: wrap;
flex-flow: column;
width: 100%
}
.section_login .section_body .form_login .label {
width: 28px;
height: 20px;
overflow-wrap: break-word;
color: rgba(0, 0, 0, .8);
font-size: 14px;
text-align: left;
white-space: nowrap;
margin-bottom: 8px
}
.section_login .section_body .form_login input {
background-color: rgba(255, 255, 255, .6);
border-radius: 8px;
width: 360px;
height: 48px;
border: 1px solid rgba(0, 0, 0, .1);
font-size: 16px;
margin-bottom: 32px;
padding: 0 16px;
box-sizing: border-box;
outline-style: none;
transition: .3s all;
color: rgba(0, 0, 0, .8)
}
.section_login .section_body .form_login input::placeholder {
color: rgba(0, 0, 0, .2)
}
.section_login .section_body .form_login input:hover {
border: 1px solid rgba(0, 0, 0, .2);
background-color: rgba(255, 255, 255, .8)
}
.section_login .section_body .form_login input:focus {
border: 1px solid rgb(0, 96, 255);
background-color: #fff;
box-shadow: 0 0 0 2px rgba(0, 96, 255, .1)
}
.section_login .section_body .form_login .btn_login {
height: 48px;
width: 180px;
box-sizing: border-box;
left: 0;
right: 0;
top: 0;
bottom: -1px;
background: radial-gradient(34.99% 256.21% at 72.3% 100%, rgba(47, 155, 255, .6), rgba(47, 155, 255, 0)), linear-gradient(180deg, #2f7dff, #0060ff);
border: 1px solid rgba(0, 0, 0, .08);
box-shadow: 0 16px 24px -16px rgba(0, 96, 255, .4), inset 0 0 12px rgba(255, 255, 255, .3);
border-radius: 8px;
margin-top: 32px;
align-self: flex-end;
font-size: 14px;
color: #fff;
transition: .3s all;
margin-top: 1rem;
width: 100%
}
.section_login .section_body .form_login .btn_login:hover {
filter: brightness(1.2);
cursor: pointer
}
.section_login .section_body .form_login .links {
width: 100%;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: flex-end
}
.section_login .section_body .form_login .links a {
font-size: .875em;
color: #057feb
}
.section_login .section_body .form_login .captcha {
position: relative;
width: 100%;
display: grid;
grid-template-columns: auto 8px 170px
}
.section_login .section_body .form_login .captcha input {
width: 100%;
margin-bottom: 1rem
}
.section_login .section_body .form_login .captcha .captcha_image {
height: 48px;
cursor: pointer;
width: 100%
}
.section_login .section_body .form_login .captcha .captcha_image img {
max-width: 100%
}
.section_login .section_body .form_login span.text {
display: block;
width: 100%;
color: #f05d41;
font-size: 14px
}
@media screen and (max-width: 680px) {
.section_login {
width: 100%;
max-width: 100%;
min-width: 100%;
padding: 0
}
}
@keyframes bg_scale-a798f117 {
to {
transform: scale(1)
}
}
@keyframes show_form-a798f117 {
to {
right: 0
}
}
@keyframes logo_path-a798f117 {
to {
height: 64px
}
}
.bg {
background-position: 50%;
background-repeat: no-repeat;
background-size: cover;
overflow: hidden;
position: fixed;
z-index: 0;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 100vw;
height: 100vh
}
@@ -1 +0,0 @@
../argon/footer.htm
@@ -1 +0,0 @@
../argon/header.htm
@@ -1,177 +0,0 @@
<%
local util = require "luci.util"
local http = require "luci.http"
local disp = require "luci.dispatcher"
local fs = require "nixio.fs"
local uci = require 'luci.model.uci'.cursor()
local boardinfo = util.ubus("system", "board")
local node = disp.context.dispatched
http.prepare_content('text/html; charset=UTF-8');
local change_action
local path = luci.http.getenv("REQUEST_URI")
if (path == "/cgi-bin/luci" or path == "/cgi-bin/luci/") and fs.access('/etc/config/istorenas') then
change_action = uci:get_first('istorenas', 'login', 'landing_page')
end
-%>
<!DOCTYPE html>
<html lang="<%=luci.i18n.context.lang%>">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
<%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %>
- 登录</title>
<link rel="shortcut icon" href="/luci-static/istorenas-login/favicon.ico">
<style>
body {
margin: 0;
font-size: 14px;
font-family: v-sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
line-height: 1.6;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: transparent;
}
body input {
font-family: inherit;
font-size: inherit;
}
</style>
<style>
.n-loading-bar-container {
z-index: 5999;
position: fixed;
top: 0;
left: 0;
right: 0;
height: 2px;
}
.n-loading-bar-container.fade-in-transition-enter-active {
transition: all 0.3s cubic-bezier(.4, 0, .2, 1) !important;
}
.n-loading-bar-container.fade-in-transition-leave-active {
transition: all 0.8s cubic-bezier(.4, 0, .2, 1) !important;
}
.n-loading-bar-container.fade-in-transition-enter-from,
.n-loading-bar-container.fade-in-transition-leave-to {
opacity: 0;
}
.n-loading-bar-container.fade-in-transition-leave-from,
.n-loading-bar-container.fade-in-transition-enter-to {
opacity: 1;
}
.n-loading-bar-container .n-loading-bar {
width: 100%;
transition:
max-width 4s linear,
background .2s linear;
height: var(--n-height);
}
.n-loading-bar-container .n-loading-bar.n-loading-bar--starting {
background: var(--n-color-loading);
}
.n-loading-bar-container .n-loading-bar.n-loading-bar--finishing {
background: var(--n-color-loading);
transition:
max-width .2s linear,
background .2s linear;
}
.n-loading-bar-container .n-loading-bar.n-loading-bar--error {
background: var(--n-color-error);
transition:
max-width .2s linear,
background .2s linear;
}
</style>
<style>
.errorbox {
color: red;
margin-bottom: 10px;
}
</style>
<link rel="stylesheet" crossorigin="" href="/luci-static/istorenas-login/style.css<%# ?v=PKG_VERSION %>">
</head>
<body>
<!-- header | sysauth -->
<div id="app">
<div class="n-config-provider" id="main">
<div></div>
<div class="bg" style="background-image: url(&quot;/luci-static/istorenas-login/background.png<%# ?v=PKG_VERSION %>&quot;);"></div>
<div class="section_login">
<div class="section_body">
<div class="title">
<div class="logo">
<div class="logopath_1"><svg width="16" height="64" viewBox="0 0 16 64" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M7.99984 0C3.5818 0 0 3.5818 0 7.99984C0 12.4186 3.58145 16 8.00018 16C12.4182 16 16 12.4182 16 8.00018C16 3.58145 12.4186 0 7.99984 0Z"
fill="#0060FF"></path>
<path
d="M7.99984 19.9999C3.5818 19.9999 0 23.5817 0 27.9998V47.9997C0 56.8365 7.1636 64.0001 16 63.9997V28.0001C16 23.5814 12.4186 19.9999 7.99984 19.9999Z"
fill="#0060FF"></path>
</svg></div>
<div class="logopath_2"><svg width="16" height="64" viewBox="0 0 16 64" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M15.9997 0C7.1636 0 0 7.1636 0 15.9997V64.0001C8.83676 64.0001 16 56.8368 16 48L15.9997 0Z"
fill="#0060FF"></path>
</svg></div>
<div class="logopath_3"><svg width="16" height="64" viewBox="0 0 16 64" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M0 0C8.83676 0 16 7.16325 16 16V35.0001C16 39.4181 12.4182 42.9999 8.00018 42.9999C3.5818 43.0002 0 39.4184 0 34.9997V0Z"
fill="#0060FF"></path>
</svg></div>
</div><span class="text">iStoreOS&nbsp;登录</span>
</div>
<form class="form_login" method="post"
<%- if change_action then %> action="<%=pcdata(change_action)%>" <% end -%>
>
<div class="errorbox"
<%- if fuser then %> style="opacity:1;"
<% else %> style="opacity:0;" <% end -%>
><%:Invalid username and/or password! Please try again.%></div>
<label class="label">账号</label>
<input class="input accout" name="luci_username" placeholder="请输入您的账号" required value="root">
<label class="label">密码</label>
<input class="input password" name="luci_password" type="password" placeholder="请输入您的密码" autofocus>
<button class="btn_login" type="submit">登&nbsp;录</button>
</form>
</div>
</div>
</div>
</div>
<!-- sysauth | footer -->
</body>
</html>
@@ -1,12 +0,0 @@
#!/bin/sh
if [ "$PKG_UPGRADE" != 1 ]; then
uci get luci.themes.iStoreNAS >/dev/null 2>&1 || \
uci batch <<-EOF
set luci.themes.iStoreNAS=/luci-static/istorenas
set luci.main.mediaurlbase=/luci-static/istorenas
commit luci
EOF
fi
exit 0