Add initial webfinger

O01eg
Apr 22, 2022, 9:24 AM
YXH3KDBRBW5ILKOLYDHHZPZ2OTM63SW7THCIGUAP4VAPRDT2JHVAC

Dependencies

  • [2] FVYTV3D2 Add custom notes to new games feed
  • [3] XS5FAAN4 Add well-known host-meta page
  • [4] WVHXYKCV Add postgresql pools
  • [5] WLWTNO4Y Create form to request game password change link
  • [6] DNFB7TNI Add new pages and links to slow games and reset game password
  • [7] 7R6HAATP Optional publish static files if use reverse-proxy
  • [8] 556ZESEO Add RSS for new games
  • [9] CMA5SKJ3 Copy turns Atom generator
  • [10] WW3KRXX6 Add page for reset game password
  • [11] HZDCKIXQ Use constants for templates
  • [*] 4MZ4VIR7 Initial commit

Change contents

  • replacement in src/pages/well_known.rs at line 1
    [3.38][3.39:75]()
    use actix_web::{web, HttpResponse};
    [3.38]
    [3.75]
    use actix_web::{web, HttpRequest, HttpResponse};
  • edit in src/pages/well_known.rs at line 20
    [3.683]
    #[actix_web::get("/.well-known/webfinger")]
    pub async fn webfinger(req: HttpRequest, data: web::Data<WebData<'_>>) -> HttpResponse {
    let mut resource = None;
    for params in req.query_string().split('&') {
    if let Some((k, v)) = params.split_once('=') {
    if k == "resource" {
    resource = Some(v);
    }
    }
    }
    let resource = match resource {
    Some(r) => r,
    None => {
    log::warn!("Webfinger not found resource in {}", req.query_string());
    return HttpResponse::BadRequest().body("Incorrect query");
    }
    };
    let resource_clean = resource.trim_start_matches("acct:");
    let mut parts = resource_clean.splitn(3, '@');
    let (user, domain) = match (parts.next(), parts.next(), parts.next()) {
    (Some(u), Some(d), None) => (u, d),
    _ => {
    log::error!("Webfinger incorrect resource {}", resource);
    return HttpResponse::NotFound().body("Not found");
    }
    };
    if domain != data.base_domain {
    log::error!("Webfinger incorrect resource domain {}", resource);
    return HttpResponse::NotFound().body("Not found");
    }
    log::info!("Webfinger resource user: {}", user);
    HttpResponse::NotFound().body("Not found")
    }
  • edit in src/pages/atom/games.rs at line 69
    [2.839][4.1961:1962](),[4.1961][4.1961:1962](),[4.1962][2.840:880]()
    log::info!("Notes: {}", notes);
  • replacement in src/main.rs at line 21
    [4.1626][3.705:739]()
    use pages::well_known::host_meta;
    [4.1626]
    [4.744]
    use pages::well_known;
  • replacement in src/main.rs at line 176
    [4.2461][3.740:811]()
    .route("/.well-known/host-meta", web::get().to(host_meta))
    [4.2461]
    [4.1998]
    .route(
    "/.well-known/host-meta",
    web::get().to(well_known::host_meta),
    )
  • replacement in src/main.rs at line 184
    [4.3403][4.3961:3995](),[4.3961][4.3961:3995]()
    .service(atom_turns);
    [4.3403]
    [4.261]
    .service(atom_turns)
    .service(well_known::webfinger);