woah what

This commit is contained in:
lda
2025-12-16 17:34:56 +07:00 Unverified
parent ed38899362
commit 73278074c5
9 changed files with 98 additions and 10 deletions
Generated
+63 -1
View File
@@ -482,6 +482,12 @@ dependencies = [
"pin-project-lite", "pin-project-lite",
] ]
[[package]]
name = "http-range-header"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c"
[[package]] [[package]]
name = "httparse" name = "httparse"
version = "1.10.1" version = "1.10.1"
@@ -677,6 +683,16 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]]
name = "mime_guess"
version = "2.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
dependencies = [
"mime",
"unicase",
]
[[package]] [[package]]
name = "miniz_oxide" name = "miniz_oxide"
version = "0.8.9" version = "0.8.9"
@@ -1220,6 +1236,19 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "tokio-util"
version = "0.7.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
"pin-project-lite",
"tokio",
]
[[package]] [[package]]
name = "tower" name = "tower"
version = "0.5.2" version = "0.5.2"
@@ -1236,6 +1265,32 @@ dependencies = [
"tracing", "tracing",
] ]
[[package]]
name = "tower-http"
version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
dependencies = [
"bitflags",
"bytes",
"futures-core",
"futures-util",
"http",
"http-body",
"http-body-util",
"http-range-header",
"httpdate",
"mime",
"mime_guess",
"percent-encoding",
"pin-project-lite",
"tokio",
"tokio-util",
"tower-layer",
"tower-service",
"tracing",
]
[[package]] [[package]]
name = "tower-layer" name = "tower-layer"
version = "0.3.3" version = "0.3.3"
@@ -1290,6 +1345,12 @@ dependencies = [
"tracing-core", "tracing-core",
] ]
[[package]]
name = "unicase"
version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.18" version = "1.0.18"
@@ -1310,7 +1371,7 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
[[package]] [[package]]
name = "wakey" name = "wakey"
version = "0.1.6" version = "0.2.0-alpha"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"axum", "axum",
@@ -1326,6 +1387,7 @@ dependencies = [
"strum", "strum",
"thiserror 2.0.16", "thiserror 2.0.16",
"tokio", "tokio",
"tower-http",
"urlencoding", "urlencoding",
] ]
+2 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "wakey" name = "wakey"
version = "0.1.6" version = "0.2.0-alpha"
edition = "2024" edition = "2024"
publish = ["gitea"] publish = ["gitea"]
@@ -24,6 +24,7 @@ tokio = { version = "1.47.1", features = [
"io-util", "io-util",
"macros", "macros",
] } ] }
tower-http = { version = "0.6.8", features = ["fs"] }
urlencoding = "2.1.3" urlencoding = "2.1.3"
[profile.release] [profile.release]
+17 -1
View File
@@ -48,10 +48,11 @@ sh "`$DEPLOY" $RemoteTmp $RemotePath $RestartFlag
} }
function Invoke-Scp { function Invoke-Scp {
param($Local, $Dest, $Pass, $HostKey, [switch]$Quiet) param($Local, $Dest, $Pass, $HostKey, [switch]$Quiet, [switch]$Recurse)
if ($pscp = Get-Command pscp.exe -ErrorAction SilentlyContinue) { if ($pscp = Get-Command pscp.exe -ErrorAction SilentlyContinue) {
$arguments = @('-scp') $arguments = @('-scp')
if ($Quiet) { $arguments += '-q' } if ($Quiet) { $arguments += '-q' }
if ($Recurse) { $arguments += '-r' }
if ($HostKey) { $arguments += @('-batch', '-hostkey', $HostKey) } if ($HostKey) { $arguments += @('-batch', '-hostkey', $HostKey) }
if ($Pass) { $arguments += @('-pw', $Pass) } if ($Pass) { $arguments += @('-pw', $Pass) }
$arguments += @($Local, $Dest) $arguments += @($Local, $Dest)
@@ -60,6 +61,7 @@ function Invoke-Scp {
else { else {
$arguments = @('-O') $arguments = @('-O')
if ($Quiet) { $arguments += '-q' } if ($Quiet) { $arguments += '-q' }
if ($Recurse) { $arguments += '-r' }
$arguments += @($Local, $Dest) $arguments += @($Local, $Dest)
Invoke-Ext -Exe 'scp' -Arguments $arguments -Label 'scp' Invoke-Ext -Exe 'scp' -Arguments $arguments -Label 'scp'
} }
@@ -103,6 +105,20 @@ try {
# Push main binary # Push main binary
Invoke-Scp -Local $localBin -Dest $destTmp -Pass $Pass -HostKey $HostKey -Quiet:$Quiet Invoke-Scp -Local $localBin -Dest $destTmp -Pass $Pass -HostKey $HostKey -Quiet:$Quiet
# Push static assets
$localStatic = Join-Path $repoRoot "static"
if (Test-Path $localStatic) {
# Assuming RemotePath is like /root/.bin/wakey, we want /root/.bin/static
# So we push 'static' directory to /root/.bin/
$remoteDir = Split-Path $RemotePath -Parent
# Ensure remote dir exists (ssh mkdir -p)
Invoke-Ssh -Cmd "mkdir -p $remoteDir" -User $User -Remote $HostName -Pass $Pass -Quiet:$Quiet
# SCP -r static user@host:/root/.bin/
# Note: pscp/scp behavior: if dest is a dir, it copies the source dir INTO it.
Invoke-Scp -Local $localStatic -Dest "$User@${HostName}:$remoteDir/" -Pass $Pass -HostKey $HostKey -Quiet:$Quiet -Recurse
}
# Push deploy helper if exists # Push deploy helper if exists
if (Test-Path $localDeploy) { if (Test-Path $localDeploy) {
Invoke-Scp -Local $localDeploy -Dest "$User@${HostName}:$deployTmp" -Pass $Pass -HostKey $HostKey -Quiet:$Quiet Invoke-Scp -Local $localDeploy -Dest "$User@${HostName}:$deployTmp" -Pass $Pass -HostKey $HostKey -Quiet:$Quiet
+6
View File
@@ -52,6 +52,12 @@ if (Test-Path $deploySrc) {
Set-Content -NoNewline -LiteralPath (Join-Path $rootDir "remote_deploy_wakey.sh") -Value $deployContent -Encoding UTF8 Set-Content -NoNewline -LiteralPath (Join-Path $rootDir "remote_deploy_wakey.sh") -Value $deployContent -Encoding UTF8
} }
# Copy static assets
$staticSrc = Join-Path $root "static"
if (Test-Path $staticSrc) {
Copy-Item -Recurse $staticSrc (Join-Path $rootDir "static") -Force
}
# Copy all OpenWrt init scripts present in repo # Copy all OpenWrt init scripts present in repo
Get-ChildItem (Join-Path $root 'scripts/init/openwrt') -File | ForEach-Object { Get-ChildItem (Join-Path $root 'scripts/init/openwrt') -File | ForEach-Object {
$dest = Join-Path $etcDir $_.Name $dest = Join-Path $etcDir $_.Name
+1 -1
View File
@@ -18,7 +18,7 @@ macro_rules! hehe {
} }
hehe! { hehe! {
file HOME_2_HTML "../static/home_2.html" file HOME_2_HTML "../static/index.html"
folder home_2 { folder home_2 {
file DOM_JS "../static/home_2/dom.js" file DOM_JS "../static/home_2/dom.js"
file LEASES_JS "../static/home_2/leases.js" file LEASES_JS "../static/home_2/leases.js"
+6 -3
View File
@@ -20,12 +20,15 @@ use std::io;
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
#[tokio::main] #[tokio::main]
async fn entry() -> io::Result<()> { async fn entry() -> io::Result<()> {
use crate::route::{api_router, home_2, home_2_route}; use crate::route::api_router;
use axum::routing::get_service;
use tower_http::services::ServeDir;
let app = Router::new() let app = Router::new()
// .route("/home", get(home)) // .route("/home", get(home))
.route("/", get(home_2)) // .route("/", get(home_2))
.merge(home_2_route()) // .merge(home_2_route())
.nest_service("/", get_service(ServeDir::new("static")))
// .route("/status", get(get_status_2)) // .route("/status", get(get_status_2))
.nest("/api", api_router()); .nest("/api", api_router());
+1 -1
View File
@@ -39,7 +39,7 @@ pub fn home_2_route() -> Router {
"/home_2/styles.css", "/home_2/styles.css",
get(|| async { get(|| async {
( (
[ [
(header::CONTENT_TYPE, "text/css; charset=utf-8"), (header::CONTENT_TYPE, "text/css; charset=utf-8"),
(header::CACHE_CONTROL, "public, max-age=300"), (header::CACHE_CONTROL, "public, max-age=300"),
], ],
+1
View File
@@ -34,6 +34,7 @@ function updatePreview() {
const raw = getName(elName); const raw = getName(elName);
const host = extractHostLikeBackend(raw); const host = extractHostLikeBackend(raw);
elPreview.textContent = host && host !== raw ? `${host}` : ""; elPreview.textContent = host && host !== raw ? `${host}` : "";
return host;
} }
function pickTarget(value) { function pickTarget(value) {
+1 -2
View File
@@ -30,8 +30,7 @@
<span title="available keys: name, ips, macs, devs, nuds" <span title="available keys: name, ips, macs, devs, nuds"
>(?name=...)</span >(?name=...)</span
> >
on this page to view the status.<!-- and header (X-Target-Name) so either extractor on this page to view the status.</span
path works. --></span
><span id="preview" class="tiny"></span ><span id="preview" class="tiny"></span
><a id="permalink" href="#">permalink</a> ><a id="permalink" href="#">permalink</a>
</div> </div>