This commit is contained in:
JMARyA 2023-01-25 07:49:21 +01:00
parent 37e69a851c
commit cef45e43a6
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
6 changed files with 79 additions and 86 deletions

86
Cargo.lock generated
View file

@ -44,9 +44,9 @@ dependencies = [
[[package]] [[package]]
name = "actix-http" name = "actix-http"
version = "3.2.2" version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c83abf9903e1f0ad9973cc4f7b9767fd5a03a583f51a5b7a339e07987cd2724" checksum = "0070905b2c4a98d184c4e81025253cb192aa8a73827553f38e9410801ceb35bb"
dependencies = [ dependencies = [
"actix-codec", "actix-codec",
"actix-rt", "actix-rt",
@ -75,6 +75,8 @@ dependencies = [
"rand", "rand",
"sha1", "sha1",
"smallvec", "smallvec",
"tokio",
"tokio-util",
"tracing", "tracing",
"zstd", "zstd",
] ]
@ -104,9 +106,9 @@ dependencies = [
[[package]] [[package]]
name = "actix-rt" name = "actix-rt"
version = "2.7.0" version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ea16c295198e958ef31930a6ef37d0fb64e9ca3b6116e6b93a8bdae96ee1000" checksum = "15265b6b8e2347670eb363c47fc8c75208b4a4994b27192f345fcbe707804f3e"
dependencies = [ dependencies = [
"futures-core", "futures-core",
"tokio", "tokio",
@ -114,9 +116,9 @@ dependencies = [
[[package]] [[package]]
name = "actix-server" name = "actix-server"
version = "2.1.1" version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0da34f8e659ea1b077bb4637948b815cd3768ad5a188fdcd74ff4d84240cd824" checksum = "3e8613a75dd50cc45f473cee3c34d59ed677c0f7b44480ce3b8247d7dc519327"
dependencies = [ dependencies = [
"actix-rt", "actix-rt",
"actix-service", "actix-service",
@ -153,9 +155,9 @@ dependencies = [
[[package]] [[package]]
name = "actix-web" name = "actix-web"
version = "4.2.1" version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d48f7b6534e06c7bfc72ee91db7917d4af6afe23e7d223b51e68fffbb21e96b9" checksum = "464e0fddc668ede5f26ec1f9557a8d44eda948732f40c6b0ad79126930eb775f"
dependencies = [ dependencies = [
"actix-codec", "actix-codec",
"actix-http", "actix-http",
@ -279,9 +281,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]] [[package]]
name = "base64" name = "base64"
version = "0.13.1" version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
@ -311,9 +313,9 @@ dependencies = [
[[package]] [[package]]
name = "brotli-decompressor" name = "brotli-decompressor"
version = "2.3.2" version = "2.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744"
dependencies = [ dependencies = [
"alloc-no-stdlib", "alloc-no-stdlib",
"alloc-stdlib", "alloc-stdlib",
@ -321,9 +323,9 @@ dependencies = [
[[package]] [[package]]
name = "bumpalo" name = "bumpalo"
version = "3.11.1" version = "3.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
[[package]] [[package]]
name = "bytes" name = "bytes"
@ -443,9 +445,9 @@ dependencies = [
[[package]] [[package]]
name = "cxx" name = "cxx"
version = "1.0.86" version = "1.0.87"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51d1075c37807dcf850c379432f0df05ba52cc30f279c5cfc43cc221ce7f8579" checksum = "b61a7545f753a88bcbe0a70de1fcc0221e10bfc752f576754fa91e663db1622e"
dependencies = [ dependencies = [
"cc", "cc",
"cxxbridge-flags", "cxxbridge-flags",
@ -455,9 +457,9 @@ dependencies = [
[[package]] [[package]]
name = "cxx-build" name = "cxx-build"
version = "1.0.86" version = "1.0.87"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5044281f61b27bc598f2f6647d480aed48d2bf52d6eb0b627d84c0361b17aa70" checksum = "f464457d494b5ed6905c63b0c4704842aba319084a0a3561cdc1359536b53200"
dependencies = [ dependencies = [
"cc", "cc",
"codespan-reporting", "codespan-reporting",
@ -470,15 +472,15 @@ dependencies = [
[[package]] [[package]]
name = "cxxbridge-flags" name = "cxxbridge-flags"
version = "1.0.86" version = "1.0.87"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61b50bc93ba22c27b0d31128d2d130a0a6b3d267ae27ef7e4fae2167dfe8781c" checksum = "43c7119ce3a3701ed81aca8410b9acf6fc399d2629d057b87e2efa4e63a3aaea"
[[package]] [[package]]
name = "cxxbridge-macro" name = "cxxbridge-macro"
version = "1.0.86" version = "1.0.87"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39e61fda7e62115119469c7b3591fd913ecca96fb766cfd3f2e2502ab7bc87a5" checksum = "65e07508b90551e610910fa648a1878991d367064997a596135b86df30daf07e"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -642,7 +644,7 @@ dependencies = [
[[package]] [[package]]
name = "gnupg" name = "gnupg"
version = "0.1.0" version = "0.1.0"
source = "git+https://git.hydrar.de/jmarya/gnupg-rs#6d7729cd72aa95aa221882633100b6017754339f" source = "git+https://git.hydrar.de/jmarya/gnupg-rs#3b57d7879b8bb676ffc860feac433611230118f6"
[[package]] [[package]]
name = "h2" name = "h2"
@ -1188,9 +1190,9 @@ dependencies = [
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.49" version = "1.0.50"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2"
dependencies = [ dependencies = [
"unicode-ident", "unicode-ident",
] ]
@ -1271,9 +1273,9 @@ dependencies = [
[[package]] [[package]]
name = "reqwest" name = "reqwest"
version = "0.11.13" version = "0.11.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68cc60575865c7831548863cc02356512e3f1dc2f3f82cb837d7fc4cc8f3c97c" checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9"
dependencies = [ dependencies = [
"base64", "base64",
"bytes", "bytes",
@ -1344,9 +1346,9 @@ checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2"
[[package]] [[package]]
name = "security-framework" name = "security-framework"
version = "2.7.0" version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" checksum = "7c4437699b6d34972de58652c68b98cb5b53a4199ab126db8e20ec8ded29a721"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"core-foundation", "core-foundation",
@ -1357,9 +1359,9 @@ dependencies = [
[[package]] [[package]]
name = "security-framework-sys" name = "security-framework-sys"
version = "2.6.1" version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4"
dependencies = [ dependencies = [
"core-foundation-sys", "core-foundation-sys",
"libc", "libc",
@ -1486,9 +1488,9 @@ dependencies = [
[[package]] [[package]]
name = "termcolor" name = "termcolor"
version = "1.1.3" version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
dependencies = [ dependencies = [
"winapi-util", "winapi-util",
] ]
@ -1548,9 +1550,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.24.1" version = "1.24.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d9f76183f91ecfb55e1d7d5602bd1d979e38a3a522fe900241cf195624d67ae" checksum = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"bytes", "bytes",
@ -1638,9 +1640,9 @@ dependencies = [
[[package]] [[package]]
name = "unicode-bidi" name = "unicode-bidi"
version = "0.3.8" version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58"
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
@ -1799,7 +1801,7 @@ checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
[[package]] [[package]]
name = "web-base" name = "web-base"
version = "0.1.0" version = "0.1.0"
source = "git+https://git.hydrar.de/jmarya/web-base#bbc19aab0ed51e4bda52a0c7935e9e328ed00323" source = "git+https://git.hydrar.de/jmarya/web-base#4ac976ed197f9feefa577e02c0f9c810f0623ee2"
dependencies = [ dependencies = [
"actix-files", "actix-files",
"actix-web", "actix-web",
@ -1918,18 +1920,18 @@ dependencies = [
[[package]] [[package]]
name = "zstd" name = "zstd"
version = "0.11.2+zstd.1.5.2" version = "0.12.2+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" checksum = "e9262a83dc741c0b0ffec209881b45dbc232c21b02a2b9cb1adb93266e41303d"
dependencies = [ dependencies = [
"zstd-safe", "zstd-safe",
] ]
[[package]] [[package]]
name = "zstd-safe" name = "zstd-safe"
version = "5.0.2+zstd.1.5.2" version = "6.0.2+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" checksum = "a6cf39f730b440bab43da8fb5faf5f254574462f73f260f85f7987f32154ff17"
dependencies = [ dependencies = [
"libc", "libc",
"zstd-sys", "zstd-sys",

View file

@ -13,7 +13,7 @@ pub struct Config {
} }
fn read_json_file(f: &str) -> Option<Value> { fn read_json_file(f: &str) -> Option<Value> {
return serde_json::from_str(&std::fs::read_to_string(f).ok()?).ok()?; serde_json::from_str(&std::fs::read_to_string(f).ok()?).ok()?
} }
impl Config { impl Config {
@ -24,23 +24,23 @@ impl Config {
} }
pub fn name(&self) -> Option<String> { pub fn name(&self) -> Option<String> {
return Option::from(self.root.get("name")?.as_str()?.to_string()); Option::from(self.root.get("name")?.as_str()?.to_string())
} }
pub fn email(&self) -> Option<String> { pub fn email(&self) -> Option<String> {
return Option::from(self.root.get("email")?.as_str()?.to_string()); Option::from(self.root.get("email")?.as_str()?.to_string())
} }
pub fn xmr_address(&self) -> Option<String> { pub fn xmr_address(&self) -> Option<String> {
return Option::from(self.root.get("xmr_address")?.as_str()?.to_string()); Option::from(self.root.get("xmr_address")?.as_str()?.to_string())
} }
fn color_n_fg(&self) -> Option<i64> { fn color_n_fg(&self) -> Option<i64> {
return Some(self.root.get("colors")?.get("fg")?.as_i64()?); self.root.get("colors")?.get("fg")?.as_i64()
} }
fn color_n_bg(&self) -> Option<i64> { fn color_n_bg(&self) -> Option<i64> {
return Some(self.root.get("colors")?.get("bg")?.as_i64()?); self.root.get("colors")?.get("bg")?.as_i64()
} }
pub fn fg_color(&self) -> Option<String> { pub fn fg_color(&self) -> Option<String> {
@ -48,12 +48,12 @@ impl Config {
let fg = col.get("special")?.get("foreground")?.as_str()?; let fg = col.get("special")?.get("foreground")?.as_str()?;
if let Some(fg_n) = self.color_n_fg() { if let Some(fg_n) = self.color_n_fg() {
let n = fg_n - 1; let n = fg_n - 1;
let fg = col.get("colors")?.get(format!("color{}", n))?.as_str()?; let fg = col.get("colors")?.get(format!("color{n}"))?.as_str()?;
return Some(fg.to_string()); return Some(fg.to_string());
} }
return Some(fg.to_string()); Some(fg.to_string())
} else { } else {
return None; None
} }
} }
@ -62,12 +62,12 @@ impl Config {
let fg = col.get("special")?.get("background")?.as_str()?; let fg = col.get("special")?.get("background")?.as_str()?;
if let Some(bg_n) = self.color_n_bg() { if let Some(bg_n) = self.color_n_bg() {
let n = bg_n - 1; let n = bg_n - 1;
let fg = col.get("colors")?.get(format!("color{}", n))?.as_str()?; let fg = col.get("colors")?.get(format!("color{n}"))?.as_str()?;
return Some(fg.to_string()); return Some(fg.to_string());
} }
return Some(fg.to_string()); Some(fg.to_string())
} else { } else {
return None; None
} }
} }
@ -75,6 +75,6 @@ impl Config {
let settings = self.root.get("notify")?.get("gotify")?; let settings = self.root.get("notify")?.get("gotify")?;
let host = settings.get("host")?.as_str()?.to_string(); let host = settings.get("host")?.as_str()?.to_string();
let token = settings.get("token")?.as_str()?.to_string(); let token = settings.get("token")?.as_str()?.to_string();
return Some(GotifySettings { host, token }); Some(GotifySettings { host, token })
} }
} }

View file

@ -32,9 +32,7 @@ async fn main() -> std::io::Result<()> {
.service(pages::index::message_page) .service(pages::index::message_page)
.service(pages::index::message_post); .service(pages::index::message_post);
let app = web_base::assign_pages(csrf.clone(), app); web_base::assign_pages(csrf.clone(), app)
app
}) })
.bind(("0.0.0.0", 8080))? .bind(("0.0.0.0", 8080))?
.run() .run()

View file

@ -5,8 +5,7 @@ pub fn encrypt(msg: String) -> String {
let pub_key = pgp let pub_key = pgp
.import_key(&std::fs::read_to_string("./config/pub.key").unwrap()) .import_key(&std::fs::read_to_string("./config/pub.key").unwrap())
.unwrap(); .unwrap();
let c = pgp.encrypt(&pub_key, &msg).unwrap(); pgp.encrypt(&pub_key, &msg).unwrap()
return c;
} }
pub fn save_msg(msg: String, name: &str) { pub fn save_msg(msg: String, name: &str) {

View file

@ -10,7 +10,7 @@ pub(crate) async fn build_site(
shadow: bool, shadow: bool,
config: &Data<Config>, config: &Data<Config>,
) -> HttpResponse<String> { ) -> HttpResponse<String> {
let BOOTSTRAP = html! { let bootstrap = html! {
link href="/bootstrap.min.css" rel="stylesheet"; link href="/bootstrap.min.css" rel="stylesheet";
link href="/bootstrap-icons.css" rel="stylesheet"; link href="/bootstrap-icons.css" rel="stylesheet";
link href="/bootstrap.bundle.min.js" rel="stylesheet"; link href="/bootstrap.bundle.min.js" rel="stylesheet";
@ -40,7 +40,7 @@ pub(crate) async fn build_site(
title { title {
(title) (title)
}; };
(BOOTSTRAP) (bootstrap)
}; };
body style=(c_style) class=(c_class) { body style=(c_style) class=(c_class) {
style { (g_style) }; style { (g_style) };
@ -49,5 +49,5 @@ pub(crate) async fn build_site(
}; };
}; };
return HttpResponse::Ok().message_body(r.into_string()).unwrap(); HttpResponse::Ok().message_body(r.into_string()).unwrap()
} }

View file

@ -16,18 +16,17 @@ pub async fn message_post(r: HttpRequest, f: Form<MessageForm>) -> impl Responde
let config: &web::Data<config::Config> = r.app_data().unwrap(); let config: &web::Data<config::Config> = r.app_data().unwrap();
crate::msg::save_msg(f.message.clone(), &f.msg_name.to_string()); crate::msg::save_msg(f.message.clone(), &f.msg_name.to_string());
crate::notification::notify( crate::notification::notify(
&format!("New Message from {}", f.msg_name.to_string()), &format!("New Message from {}", f.msg_name),
"New Message", "New Message",
config.clone(), config.clone(),
) )
.await; .await;
return web_base::func::redirect("/message"); web_base::func::redirect("/message")
} }
#[get("/message")] #[get("/message")]
pub async fn message_page(r: HttpRequest) -> impl Responder { pub async fn message_page(r: HttpRequest) -> impl Responder {
let config: &web::Data<config::Config> = r.app_data().unwrap(); let config: &web::Data<config::Config> = r.app_data().unwrap();
let host = web_base::func::get_host(&r);
let resp = html! { let resp = html! {
div class="container" style="margin-top: 25px" { div class="container" style="margin-top: 25px" {
@ -42,7 +41,7 @@ pub async fn message_page(r: HttpRequest) -> impl Responder {
} }
}; };
return pages::html_fn::build_site(resp.into_string(), "Message", false, true, config).await; pages::html_fn::build_site(resp.into_string(), "Message", false, true, config).await
} }
#[get("/mirrors.txt")] #[get("/mirrors.txt")]
@ -61,13 +60,11 @@ pub async fn mirrors(r: HttpRequest) -> impl Responder {
return pages::html_fn::build_site(resp.into_string(), "Mirrors", false, true, config) return pages::html_fn::build_site(resp.into_string(), "Mirrors", false, true, config)
.await; .await;
} }
let res: HttpResponse<String> = HttpResponse::Ok().message_body(content).unwrap(); return HttpResponse::Ok().message_body(content).unwrap();
return res;
} }
let res: HttpResponse<String> = HttpResponse::NotFound() HttpResponse::NotFound()
.message_body("".to_string()) .message_body("".to_string())
.unwrap(); .unwrap()
return res;
} }
#[get("/public_key")] #[get("/public_key")]
@ -80,7 +77,7 @@ pub async fn public_key(r: HttpRequest) -> impl Responder {
let pgp = gnupg::GnuPG::new().unwrap(); let pgp = gnupg::GnuPG::new().unwrap();
let key_name = pgp.import_key(&key).unwrap().name; let key_name = pgp.import_key(&key).unwrap().name;
let key = key.replace("\n", "<br>"); let key = key.replace('\n', "<br>");
let resp = html! { let resp = html! {
div class="container" style="margin-top: 25px" { div class="container" style="margin-top: 25px" {
@ -100,23 +97,21 @@ pub async fn public_key(r: HttpRequest) -> impl Responder {
} }
if let Ok(key_f) = std::fs::File::open("./config/pub.key") { if let Ok(key_f) = std::fs::File::open("./config/pub.key") {
if let Ok(key_data) = std::io::read_to_string(key_f) { if let Ok(key_data) = std::io::read_to_string(key_f) {
let res: HttpResponse<String> = HttpResponse::Ok() return HttpResponse::Ok()
.insert_header(header::ContentType::plaintext()) .insert_header(header::ContentType::plaintext())
.message_body(key_data) .message_body(key_data)
.unwrap(); .unwrap();
return res;
} }
} }
let res: HttpResponse<String> = HttpResponse::NotFound() HttpResponse::NotFound()
.message_body("".to_string()) .message_body("".to_string())
.unwrap(); .unwrap()
return res;
} }
fn build_information_block(conf: &web::Data<config::Config>) -> String { fn build_information_block(conf: &web::Data<config::Config>) -> String {
let name = conf.name().unwrap(); let name = conf.name().unwrap();
return html! { html! {
div class="container border-dark" style="margin-top: 20px" { div class="container border-dark" style="margin-top: 20px" {
img src="/assets/me" height="200" width="200" alt="Me" class="rounded"; img src="/assets/me" height="200" width="200" alt="Me" class="rounded";
br;br; br;br;
@ -124,7 +119,7 @@ fn build_information_block(conf: &web::Data<config::Config>) -> String {
hr; hr;
} }
} }
.into_string(); .into_string()
} }
fn build_contact_block(conf: &web::Data<config::Config>) -> String { fn build_contact_block(conf: &web::Data<config::Config>) -> String {
@ -140,7 +135,7 @@ fn build_contact_block(conf: &web::Data<config::Config>) -> String {
false => "".to_string(), false => "".to_string(),
}; };
return html! { html! {
div class="container border-dark" { div class="container border-dark" {
h1 { h1 {
span class="bi bi-person-lines-fill" style="vertical-align: middle;"; span class="bi bi-person-lines-fill" style="vertical-align: middle;";
@ -152,9 +147,9 @@ fn build_contact_block(conf: &web::Data<config::Config>) -> String {
hr; hr;
} }
} }
.into_string(); .into_string()
} else { } else {
return "".to_string(); "".to_string()
} }
} }
@ -175,7 +170,7 @@ fn build_donation_block(conf: &web::Data<config::Config>) -> String {
} }
.into_string() .into_string()
} else { } else {
return "".to_string(); "".to_string()
} }
} }
@ -191,6 +186,5 @@ pub(crate) async fn index(conf: web::Data<config::Config>) -> impl Responder {
{donation_block} {donation_block}
" "
); );
let r = crate::pages::html_fn::build_site(content, "About Me", false, true, &conf).await; crate::pages::html_fn::build_site(content, "About Me", false, true, &conf).await
return r;
} }