@@ -30,7 +30,7 @@ use boringtun::noise::{rate_limiter::RateLimiter, TunnResult};
3030use db_connector:: models:: chargers:: Charger ;
3131use diesel:: prelude:: * ;
3232use futures_util:: lock:: Mutex ;
33- use ipnetwork:: IpNetwork ;
33+ use ipnetwork:: { IpNetwork , Ipv4Network } ;
3434use rand:: TryRngCore ;
3535use rand_core:: OsRng ;
3636
@@ -76,7 +76,31 @@ async fn create_tunn(
7676 . select ( Charger :: as_select ( ) )
7777 . load ( & mut conn) ?
7878 } else {
79- return Err ( anyhow:: Error :: msg ( Error :: UnknownPeer ) ) ;
79+ let IpNetwork :: V4 ( ip) = ip else {
80+ return Err ( anyhow:: Error :: msg ( Error :: UnknownPeer ) ) ;
81+ } ;
82+ let ip = Ipv4Network :: new ( ip. ip ( ) , 24 ) ?;
83+ let test = map. iter ( ) . filter ( |( k, _v) | {
84+ let ipv4 = match * k {
85+ IpNetwork :: V4 ( ipv4) => ipv4,
86+ _ => return false ,
87+ } ;
88+ ip. contains ( ipv4. ip ( ) )
89+ } ) . collect :: < Vec < _ > > ( ) ;
90+ if !test. is_empty ( ) {
91+ let charger_ids: Vec < uuid:: Uuid > = test
92+ . iter ( )
93+ . flat_map ( |( _k, v) | v. iter ( ) . map ( |c| c. id ) )
94+ . collect ( ) ;
95+ log:: info!( "Found possible matches for ip '{ip}: {charger_ids:?}'" ) ;
96+ chargers:: chargers
97+ . filter ( chargers:: id. eq_any ( charger_ids) )
98+ . select ( Charger :: as_select ( ) )
99+ . load ( & mut conn) ?
100+ } else {
101+ log:: info!( "Could not find charger for ip '{ip}'" ) ;
102+ return Err ( anyhow:: Error :: msg ( Error :: UnknownPeer ) ) ;
103+ }
80104 }
81105 } ;
82106
@@ -251,7 +275,7 @@ pub async fn run_server(
251275 . ok ( ) ;
252276 }
253277 }
254- log:: debug !( "Adding management connection from {addr}" ) ;
278+ log:: info !( "Adding management connection from {addr}" ) ;
255279 tunn_data. clone ( )
256280 }
257281 }
0 commit comments