Compare commits

...

7 commits

5 changed files with 133 additions and 12 deletions

88
Cargo.lock generated
View file

@ -513,6 +513,19 @@ dependencies = [
"cfg-if", "cfg-if",
] ]
[[package]]
name = "env_logger"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
dependencies = [
"humantime",
"is-terminal",
"log",
"regex",
"termcolor",
]
[[package]] [[package]]
name = "equivalent" name = "equivalent"
version = "1.0.1" version = "1.0.1"
@ -632,6 +645,12 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hermit-abi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
[[package]] [[package]]
name = "http" name = "http"
version = "0.2.12" version = "0.2.12"
@ -655,6 +674,12 @@ version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "humantime"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]] [[package]]
name = "idna" name = "idna"
version = "0.5.0" version = "0.5.0"
@ -675,6 +700,17 @@ dependencies = [
"hashbrown", "hashbrown",
] ]
[[package]]
name = "is-terminal"
version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
dependencies = [
"hermit-abi",
"libc",
"windows-sys 0.52.0",
]
[[package]] [[package]]
name = "itoa" name = "itoa"
version = "1.0.10" version = "1.0.10"
@ -854,6 +890,16 @@ version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "pretty_env_logger"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "865724d4dbe39d9f3dd3b52b88d859d66bcb2d6a0acfd5ea68a65fb66d4bdc1c"
dependencies = [
"env_logger",
"log",
]
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.79" version = "1.0.79"
@ -1089,12 +1135,23 @@ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]]
name = "termcolor"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
dependencies = [
"winapi-util",
]
[[package]] [[package]]
name = "thirappu-vizha" name = "thirappu-vizha"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"actix-web", "actix-web",
"clap", "clap",
"log",
"pretty_env_logger",
"serde", "serde",
"serde_json", "serde_json",
"url", "url",
@ -1254,6 +1311,37 @@ version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
dependencies = [
"winapi",
]
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]] [[package]]
name = "windows-sys" name = "windows-sys"
version = "0.48.0" version = "0.48.0"

View file

@ -8,6 +8,8 @@ edition = "2021"
[dependencies] [dependencies]
actix-web = "4.5.1" actix-web = "4.5.1"
clap = { version = "4", features = ["derive"] } clap = { version = "4", features = ["derive"] }
log = "0.4.21"
pretty_env_logger = "0.5.0"
serde = { version = "1.0.197", features = ["derive"] } serde = { version = "1.0.197", features = ["derive"] }
serde_json = "1.0.114" serde_json = "1.0.114"
url = { version = "2.5.0", features = ["serde"] } url = { version = "2.5.0", features = ["serde"] }

View file

Before

Width:  |  Height:  |  Size: 428 KiB

After

Width:  |  Height:  |  Size: 428 KiB

View file

@ -2,6 +2,7 @@
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
use std::fmt::Display;
use std::os::unix::fs::symlink as unix_symlink; use std::os::unix::fs::symlink as unix_symlink;
use std::process::Command; use std::process::Command;
@ -9,30 +10,38 @@ use actix_web::web::ServiceConfig;
use actix_web::HttpResponse; use actix_web::HttpResponse;
use actix_web::{get, http::header, post, web, App, HttpServer, Responder}; use actix_web::{get, http::header, post, web, App, HttpServer, Responder};
use clap::Parser; use clap::Parser;
use log::info;
use url::Url; use url::Url;
fn thirappu(ribbon: &str, store: &str) { fn thirappu(ribbon: &str, store: &str) {
let ribbon = format!("/etc/nginx/sites-enabled/{ribbon}"); let ribbon_link = format!("/etc/nginx/sites-enabled/{ribbon}");
let store_original = format!("/etc/nginx/sites-available/{store}"); let store_original = format!("/etc/nginx/sites-available/{store}");
let store_link = format!("/etc/nginx/sites-enabled/{store}"); let store_link = format!("/etc/nginx/sites-enabled/{store}");
std::fs::remove_file(ribbon).unwrap(); std::fs::remove_file(ribbon_link).unwrap();
info!("removed store");
unix_symlink(store_original, store_link).unwrap(); unix_symlink(store_original, store_link).unwrap();
info!("Linked store");
Command::new("nginx") Command::new("nginx")
.args(["-s", "reload"]) .args(["-s", "reload"])
.output() .output()
.unwrap(); .unwrap();
info!("nginx reloaded");
} }
fn reset(ribbon: &str, store: &str) { fn reset(ribbon: &str, store: &str) {
let ribbon_link = format!("/etc/nginx/sites-enabled/{ribbon}"); let ribbon_link = format!("/etc/nginx/sites-enabled/{ribbon}");
let ribbon_original = format!("/etc/nginx/sites-available/{store}"); let ribbon_original = format!("/etc/nginx/sites-available/{ribbon}");
let store_link = format!("/etc/nginx/sites-enabled/{store}"); let store_link = format!("/etc/nginx/sites-enabled/{store}");
info!("resetting vizha: store_link {store_link} ribbon_link: {ribbon_link} ribbon_original: {ribbon_original}");
std::fs::remove_file(store_link).unwrap(); std::fs::remove_file(store_link).unwrap();
info!("Removed store link");
unix_symlink(ribbon_original, ribbon_link).unwrap(); unix_symlink(ribbon_original, ribbon_link).unwrap();
info!("Linked ribbon");
Command::new("nginx") Command::new("nginx")
.args(["-s", "reload"]) .args(["-s", "reload"])
.output() .output()
.unwrap(); .unwrap();
info!("nginx reloaded");
} }
#[derive(Parser, Debug, Clone)] #[derive(Parser, Debug, Clone)]
@ -53,6 +62,19 @@ struct Args {
store_weburl: Url, store_weburl: Url,
} }
impl Display for Args {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"port: {} ribbon: {} store: {} store_weburl: {}",
self.port,
self.ribbon,
self.store,
self.store_weburl.to_string()
)
}
}
#[get("/reset")] #[get("/reset")]
async fn reset_get() -> impl Responder { async fn reset_get() -> impl Responder {
let reset = include_str!("./reset.html"); let reset = include_str!("./reset.html");
@ -67,7 +89,7 @@ async fn reset_post(ctx: web::Data<Args>) -> impl Responder {
reset(&ctx.ribbon, &ctx.store); reset(&ctx.ribbon, &ctx.store);
HttpResponse::Found() HttpResponse::Found()
.append_header((header::LOCATION, "/")) .append_header((header::LOCATION, ctx.store_weburl.to_string()))
.finish() .finish()
} }
@ -82,7 +104,7 @@ async fn open_post(ctx: web::Data<Args>) -> impl Responder {
#[get("/curtain.jpeg")] #[get("/curtain.jpeg")]
async fn curtain_jpeg() -> impl Responder { async fn curtain_jpeg() -> impl Responder {
let curtain = include_bytes!("./curatain.jpeg"); let curtain = include_bytes!("./curtain.jpeg");
let curtain = actix_web::web::Bytes::from_static(curtain); let curtain = actix_web::web::Bytes::from_static(curtain);
@ -108,7 +130,16 @@ fn services(cfg: &mut ServiceConfig) {
#[actix_web::main] // or #[tokio::main] #[actix_web::main] // or #[tokio::main]
async fn main() -> std::io::Result<()> { async fn main() -> std::io::Result<()> {
if std::env::var("RUST_LOG").is_err() {
std::env::set_var("RUST_LOG", "info");
}
pretty_env_logger::init();
let args = Args::parse(); let args = Args::parse();
info!("Starting server with {args}");
let data = web::Data::new(args.clone()); let data = web::Data::new(args.clone());
HttpServer::new(move || App::new().app_data(data.clone()).configure(services)) HttpServer::new(move || App::new().app_data(data.clone()).configure(services))
.bind(("127.0.0.1", args.port))? .bind(("127.0.0.1", args.port))?

View file

@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
<div id='curtain'> <div id='curtain'>
<h1>Please wait while the store is being provisioned</h1> <h1>Please wait while the store is being provisioned</h1>
<h1 id="countdown">10</h1> <h1 id="countdown">5</h1>
<div class='left'></div> <div class='left'></div>
<div class='right'></div> <div class='right'></div>
@ -81,7 +81,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
width: 50%; width: 50%;
height: 100%; height: 100%;
filter: brightness(180%); filter: brightness(180%);
background-image: url("./curatain-min.jpeg"); background-image: url("./curtain.jpeg");
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
} }
@ -283,13 +283,13 @@ SPDX-License-Identifier: AGPL-3.0-or-later
function detectSpaceKey(event) { function detectSpaceKey(event) {
if(event.keyCode == 13) { if(event.keyCode == 13) {
showTime(); showTime();
var form = document.createElement("form"); fetch("/", {method: "post"}).then(() =>
form.setAttribute("action", "/"); startCountdown()
form.setAttribute("method", "post"); );
} }
// startCountdown();
} }
function showTime() { function showTime() {