♻️ Simple & Efficient Gemini-to-HTTP Proxy fuwn.net
proxy gemini-protocol protocol gemini http rust
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 65 lines 2.7 kB view raw
1use std::sync::LazyLock; 2 3pub static ENVIRONMENT: LazyLock<Environment> = 4 LazyLock::new(Environment::from_environment); 5 6pub struct Environment { 7 pub root: String, 8 pub css_external: Option<String>, 9 pub primary_colour: Option<String>, 10 pub favicon_external: Option<String>, 11 pub mathjax: bool, 12 pub head: Option<String>, 13 pub header: Option<String>, 14 pub plain_text_route: Option<String>, 15 pub condense_links: Vec<String>, 16 pub condense_links_at_headings: Vec<String>, 17 pub proxy_by_default: bool, 18 pub keep_gemini: Option<Vec<String>>, 19 pub embed_images: Option<String>, 20 pub http09: bool, 21 pub http09_port: u16, 22} 23 24impl Environment { 25 fn from_environment() -> Self { 26 Self { 27 root: std::env::var("ROOT").unwrap_or_else(|_| { 28 log::warn!( 29 "could not use ROOT from environment variables, proceeding with \ 30 default root: gemini://fuwn.me" 31 ); 32 "gemini://fuwn.me".to_string() 33 }), 34 css_external: std::env::var("CSS_EXTERNAL").ok(), 35 primary_colour: std::env::var("PRIMARY_COLOUR").ok(), 36 favicon_external: std::env::var("FAVICON_EXTERNAL").ok(), 37 mathjax: std::env::var("MATHJAX") 38 .map(|v| v.to_lowercase() == "true") 39 .unwrap_or(true), 40 head: std::env::var("HEAD").ok(), 41 header: std::env::var("HEADER").ok(), 42 plain_text_route: std::env::var("PLAIN_TEXT_ROUTE").ok(), 43 condense_links: std::env::var("CONDENSE_LINKS") 44 .map(|s| s.split(',').map(String::from).collect()) 45 .unwrap_or_default(), 46 condense_links_at_headings: std::env::var("CONDENSE_LINKS_AT_HEADINGS") 47 .map(|s| s.split(',').map(String::from).collect()) 48 .unwrap_or_default(), 49 proxy_by_default: std::env::var("PROXY_BY_DEFAULT") 50 .map(|v| v.to_lowercase() == "true") 51 .unwrap_or(true), 52 keep_gemini: std::env::var("KEEP_GEMINI") 53 .ok() 54 .map(|s| s.split(',').map(String::from).collect()), 55 embed_images: std::env::var("EMBED_IMAGES").ok(), 56 http09: std::env::var("HTTP09") 57 .map(|v| v.to_lowercase() == "true") 58 .unwrap_or(false), 59 http09_port: std::env::var("HTTP09_PORT") 60 .ok() 61 .and_then(|p| p.parse().ok()) 62 .unwrap_or(90), 63 } 64 } 65}