V47NQLKFHWLZMRGEVV2K6IBBKRSPHR672ATFGARCCM7Z7LJZKQHAC RSIBXP3SKUXZ7BVRC5OJZTNGCZSWNFHF74OZM5OOWKU52GHURMHQC MGRTVGLJX4D5YAJGKTVETEKYNLTQZRSV7EJSFWFTWQOTYXTCA2XAC KDKRTAYJBTOXY75T2U5B236L3SEHC7RPCDNYD2H3JZ3ZNQD3NSEAC FUCFD4UVRUXDHG24MYEHF2E5E23BIFVKTRGLNBPBVKFLONVSMHTAC G4JCZ5F77PDA3ZLXDECLYSS76BRLSDEKU7KMILS5N57ETO2VJO6QC MUTHALNPGO4X2H2CGG7JBQXFYNBUC2ZSZLMFPHSKQ7LAGR3ZGSBAC WXRGEQOELNXAKIG2CT7G6OZWTFLNWPISLWHZ5B76HFUNNHYOFCCQC 4MZ4VIR7FU3PQ3WKJI6TJIKYOIIBODFEPKLMQ32S4AKPZSDFO6AQC HTYEGVBU6MODOOW4UPEGSHLH4CQFYCDSFVAF2MRQW2RCDP7ITNXQC FJBHDA5FYN4EE2ZRJCS4AKGIILJ6VR3OE423IQA5EKJ37CXJQLMAC BCXEUKX6RVE4UQE46ITSQY2NXYK3MJT7HHL7CJOM7T4OOOCADMIAC K7FOI6UNZ4UO2WEZ5DO4FHHVJDEJGYV5ZBWUHJZA7DWZ52TODBNAC OWZ67OECVVLVFN2Z7XWITYBU6YUIU42E3SIJDCRKF7M4XDX5XKHAC BKHQHXZQDFC6SSIQ3XBNIBYQJBD3EN6VFKK7VBWY4BOT2H2ZRQAAC WVHXYKCVPKAFVMXBEMD3IHG54RKOIDSOCVNR3OIPEZQG36IGYJZQC return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());}};let stmt_save = match dbclient_rw.prepare("UPDATE auth.mastodon_appsSET client_id = $1, client_secret = $2WHERE client_id IS NULLAND client_secret IS NULLAND reg_sess_id = $3AND domain = $4;",).await{Ok(stmt) => stmt,Err(e) => {log::error!("Pool RW statement save error {}", e);
let (client_id, _client_secret) =if let (Some(client_id), Some(client_secret)) = (opt_client_id, opt_client_secret) {(client_id, client_secret)} else {if reg_sess_id != old_reg_sess_id {// Some one else registering same domain, try again laterlog::warn!("Mastodon domain {} registration session {} conflict with {}",domain,reg_sess_id,old_reg_sess_id);return HttpResponse::Found().append_header((header::LOCATION, "index.html")).finish();}
let (client_id, _client_secret) = if let (Some(client_id), Some(client_secret)) =(opt_client_id, opt_client_secret){(client_id, client_secret)} else {if reg_sess_id != old_reg_sess_id {// Some one else registering same domain, try again laterlog::warn!("Mastodon domain {} registration session {} conflict with {}",domain,reg_sess_id,old_reg_sess_id);return HttpResponse::Found().append_header((header::LOCATION, "index.html")).finish();}
// Try to register on Mastodon domainmatch register_in_mastodon(&domain, ®_sess_id, &data).await {Ok(res) => res,Err(_) => {
// Try to register on Mastodon domainmatch register_in_mastodon(&domain, ®_sess_id, &data).await {Ok(res) => {let updated = match dbclient_rw.execute(&stmt_save, &[&res.0, &res.1, ®_sess_id, &domain]).await{Ok(c) => c,Err(e) => {log::error!("Pool RW execute update error {}", e);return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());}};if updated == 1 {res} else {log::error!("Pool RW execute update row error {}", updated);
let website_redirect = format!("{}{}", website, "mastodon-redirect.html");let location = format!("https://{}/oauth/authorize?client_id={}&scope=read:accounts&redirect_uri={}&response_type=code", domain, client_id, website_redirect);
let website_redirect = format!("{}mastodon-redirect-{}.html", website, domain);let location = format!("https://{}/oauth/authorize?client_id={}&scope=read:accounts&redirect_uri={}&response_type=code", domain, pct_str::PctString::encode(client_id.chars(), pct_str::URIReserved).as_str(), pct_str::PctString::encode(website_redirect.chars(), pct_str::URIReserved).as_str());
name = "foreign-types"version = "0.3.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"dependencies = ["foreign-types-shared",][[package]]name = "foreign-types-shared"version = "0.1.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"[[package]]
[[package]]name = "openssl"version = "0.10.66"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1"dependencies = ["bitflags 2.6.0","cfg-if","foreign-types","libc","once_cell","openssl-macros","openssl-sys",][[package]]name = "openssl-macros"version = "0.1.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"dependencies = ["proc-macro2","quote","syn",]