woah what
This commit is contained in:
Generated
+63
-1
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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());
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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>
|
||||||
Reference in New Issue
Block a user