1- use std:: collections:: HashMap ;
21use crate :: db:: DB ;
32use crate :: runtime:: AvailableBackends ;
43use crate :: settings:: { BackendIdentifier , Setting } ;
54use rand:: seq:: SliceRandom ;
6- use std:: convert:: Infallible ;
7- use std:: fmt:: format;
8- use std:: net:: IpAddr ;
9- use std:: ops:: Index ;
10- use std:: sync:: { Arc , LazyLock , Mutex } ;
11- use axum:: body:: Body ;
5+ use std:: sync:: { Arc , Mutex } ;
126use axum:: extract:: { Request , State } ;
137use axum:: http:: { StatusCode , Uri } ;
148use axum:: response:: { IntoResponse , Response } ;
159use crate :: Client ;
16- use regex:: Regex ;
17-
18- fn debug_request ( req : Request < Body > ) -> Result < Response < Body > , Infallible > {
19- let body_str = format ! ( "{:?}" , req) ;
20- Ok ( Response :: new ( Body :: from ( body_str) ) )
21- }
2210
2311fn create_route (
2412 pad_id : Option < String > ,
@@ -41,7 +29,7 @@ fn create_route(
4129 } ;
4230 match result {
4331 Some ( backend_id) => {
44- let mut available_backends = available_backends. lock ( ) . unwrap ( ) ;
32+ let available_backends = available_backends. lock ( ) . unwrap ( ) ;
4533 if available_backends. available . is_empty ( ) {
4634 log:: error!( "No available backends" ) ;
4735 return None ;
@@ -50,8 +38,7 @@ fn create_route(
5038 if available_backends
5139 . up
5240 . iter ( )
53- . position ( |e| e == & backend_id)
54- . is_some ( )
41+ . any ( |e| e == & backend_id)
5542 {
5643 Some ( backend_id)
5744 } else {
@@ -78,7 +65,7 @@ fn create_route(
7865 . choose ( & mut rand:: thread_rng ( ) )
7966 . unwrap ( ) ;
8067 {
81- let mut locked_db = db. lock ( ) . unwrap ( ) ;
68+ let locked_db = db. lock ( ) . unwrap ( ) ;
8269 locked_db. set ( & format ! ( "padId:{}" , pad_id) , new_backend) ;
8370 }
8471 log:: info!( "Creating new association for pad {} with backend {}" , pad_id, new_backend) ;
@@ -99,10 +86,6 @@ pub struct StateOfReverseProxy {
9986 pub setting : Setting ,
10087}
10188
102- static RESOURCES : LazyLock < HashMap < String , String > > = LazyLock :: new ( HashMap :: new) ;
103-
104- static PADINDEX_REGEX : LazyLock < Regex > = LazyLock :: new ( ||Regex :: new ( "^/padbootstrap-[a-zA-Z0-9]+.min.js$" ) . unwrap ( ) ) ;
105-
10689
10790pub async fn handler ( State ( client) : State < StateOfReverseProxy > , mut req : Request ) ->
10891 Result < Response ,
@@ -159,14 +142,3 @@ pub fn get_pad_id(uri: &Uri) -> Option<String> {
159142 }
160143 pad_id
161144}
162-
163-
164- mod tests {
165- use crate :: reverse_proxy:: PADINDEX_REGEX ;
166-
167- #[ test]
168- fn test_pad_index_regex ( ) {
169- let path = "/padbootstrap-KK7I7qP9I3E.min.js" ;
170- assert ! ( PADINDEX_REGEX . is_match( path) ) ;
171- }
172- }
0 commit comments