2424@ Slf4j 
2525public  class  WsOauthHandlerBase  extends  WsHandlerBase  {
2626
27+ 	protected  String  name ;
2728	protected  OauthTokenManager  tokenHandler ;
2829	protected  Set <WsConnectContext > clientsConnected  = ConcurrentHashMap .newKeySet ();
2930	protected  Set <WsConnectContext > clientsQuarantined  = ConcurrentHashMap .newKeySet ();
@@ -35,8 +36,9 @@ public class WsOauthHandlerBase extends WsHandlerBase {
3536		return  t ;
3637	});
3738
38- 	public  WsOauthHandlerBase () {
39+ 	public  WsOauthHandlerBase (String   name ) {
3940		super ();
41+ 		this .name  = name ;
4042		ShutdownHook .register (() -> {
4143			hb .close ();
4244			hb  = null ;
@@ -50,7 +52,7 @@ public WsOauthHandlerBase() {
5052						s .getRemote ().sendPing (ByteBuffer .allocate (1 ));
5153					} catch  (Exception  e ) {
5254						try  {
53- 							s .close (1000 , "heartbeat failed" );
55+ 							s .close (1000 , "("   +  name  +  ")  heartbeat failed" );
5456						} catch  (Exception  ignore ) {
5557						}
5658					}
@@ -64,49 +66,50 @@ void setTokenHandler(OauthTokenManager tokenHandler) {
6466	}
6567
6668	public  void  removeClient (Session  session ) {
67- 		log .debug ("Removing client: [{}]" , session .getRemoteAddress ());
69+ 		log .debug ("("   +  name  +  ")  Removing client: [{}]" , session .getRemoteAddress ());
6870		clientsConnected .removeIf (client  -> client .session .equals (session ));
6971		clientsQuarantined .removeIf (client  -> client .session .equals (session ));
7072	}
7173
7274	public  WsConnectContext  getClient (Session  session ) {
73- 		log .debug ("Getting client: [{}]" , session .getRemoteAddress ());
75+ 		log .debug ("("   +  name  +  ")  Getting client: [{}]" , session .getRemoteAddress ());
7476		return  clientsConnected .stream ().filter (client  -> client .session .equals (session )).findFirst ().orElse (null );
7577	}
7678
7779	public  WsConnectContext  getQuarantinedClient (Session  session ) {
78- 		log .debug ("Getting quarantined client: [{}]" , session .getRemoteAddress ());
80+ 		log .debug ("("   +  name  +  ")  Getting quarantined client: [{}]" , session .getRemoteAddress ());
7981		return  clientsQuarantined .stream ().filter (client  -> client .session .equals (session )).findFirst ().orElse (null );
8082	}
8183
8284	public  boolean  isQuarantined (Session  session ) {
83- 		log .debug ("Checking if client is quarantined: [{}]" , session .getRemoteAddress ());
85+ 		log .debug ("("   +  name  +  ")  Checking if client is quarantined: [{}]" , session .getRemoteAddress ());
8486		return  clientsQuarantined .stream ().anyMatch (client  -> client .session .equals (session ));
8587	}
8688
8789	public  boolean  isConnected (Session  session ) {
88- 		log .debug ("Checking if client is connected: [{}]" , session .getRemoteAddress ());
90+ 		log .debug ("("   +  name  +  ")  Checking if client is connected: [{}]" , session .getRemoteAddress ());
8991		return  clientsConnected .stream ().anyMatch (client  -> client .session .equals (session ));
9092	}
9193
9294	@ Override 
9395	public  void  onConnect (WsConnectContext  ctx ) throws  Exception  {
94- 		log .debug ("New client tries to connect: [{}]" , ctx .session .getRemoteAddress ());
96+ 		log .debug ("("   +  name  +  ")  New client tries to connect: [{}]" , ctx .session .getRemoteAddress ());
9597		String  token  = ctx .header ("Authorization" );
9698		if  (token  == null  || token .isEmpty ()) {
97- 			log .warn ("No token provided for client: [{}]\n Sending connection into quarantine." ,
99+ 			log .warn ("("   +  name  +  ")  No token provided for client: [{}]\n Sending connection into quarantine." ,
98100					ctx .session .getRemoteAddress ());
99101			clientsQuarantined .add (ctx );
100102			return ;
101103		}
102- 		log .debug ("New client token: [{}]" , token );
104+ 		log .debug ("("   +  name  +  ")  New client token: [{}]" , token );
103105		try  {
104106			String  tenantId  = tokenHandler .checkAccess (token );
105107			tenantIdsBySession .put (ctx .session , tenantId );
106108			clientsConnected .add (ctx );
107109		} catch  (Exception  e ) {
108- 			log .debug ("Token validation failed for client [{}]. Disconnecting." , ctx .session .getRemoteAddress (), e );
109- 			ctx .session .close (1000 , "Unauthorized access with invalid token" );
110+ 			log .debug ("("  + name  + ") Token validation failed for client [{}]. Disconnecting." ,
111+ 					ctx .session .getRemoteAddress (), e );
112+ 			ctx .session .close (1000 , "("  + name  + ") Unauthorized access with invalid token" );
110113			return ;
111114		}
112115	}
@@ -116,29 +119,32 @@ public void onMsg(WsMessageContext ctx) throws Exception {
116119	}
117120
118121	public  final  void  onMessage (WsMessageContext  ctx ) throws  Exception  {
119- 		log .debug ("Received from [{}]: [{}]" , ctx .session .getRemoteAddress (), ctx .message ());
122+ 		log .debug ("("   +  name  +  ")  Received from [{}]: [{}]" , ctx .session .getRemoteAddress (), ctx .message ());
120123		if  (isQuarantined (ctx .session )) {
121- 			log .warn ("Client [{}] is quarantined, checking message for standard authorization-bearer-token." ,
124+ 			log .warn (
125+ 					"("  + name 
126+ 							+ ") Client [{}] is quarantined, checking message for standard authorization-bearer-token." ,
122127					ctx .session .getRemoteAddress ());
123128			if  (ctx .message () == null  || !ctx .message ().startsWith ("Bearer " )) {
124- 				log .warn ("Invalid message from quarantined client [{}]. Disconnecting." ,
129+ 				log .warn ("("   +  name  +  ")  Invalid message from quarantined client [{}]. Disconnecting." ,
125130						ctx .session .getRemoteAddress ());
126131				removeClient (ctx .session );
127- 				ctx .session .close (1000 , "Unauthorized access from quarantined client" );
132+ 				ctx .session .close (1000 , "("   +  name  +  ")  Unauthorized access from quarantined client" );
128133				return ;
129134			}
130135			try  {
131136				String  tenantId  = tokenHandler .checkAccess (ctx .message ());
132137				tenantIdsBySession .put (ctx .session , tenantId );
133138				WsConnectContext  client  = getQuarantinedClient (ctx .session );
134- 				log .debug ("Client [{}] passed token validation. Moving from quarantine to connected." ,
139+ 				log .debug ("("   +  name  +  ")  Client [{}] passed token validation. Moving from quarantine to connected." ,
135140						ctx .session .getRemoteAddress ());
136141				clientsQuarantined .removeIf (c  -> c .session .equals (ctx .session ));
137142				clientsConnected .add (client );
138143				return ;
139144			} catch  (Exception  e ) {
140- 				log .debug ("Token validation failed for client [{}]. Disconnecting." , ctx .session .getRemoteAddress (), e );
141- 				ctx .session .close (1000 , "Unauthorized access with invalid token" );
145+ 				log .debug ("("  + name  + ") Token validation failed for client [{}]. Disconnecting." ,
146+ 						ctx .session .getRemoteAddress (), e );
147+ 				ctx .session .close (1000 , "("  + name  + ") Unauthorized access with invalid token" );
142148				return ;
143149			}
144150		}
@@ -147,28 +153,30 @@ public final void onMessage(WsMessageContext ctx) throws Exception {
147153
148154	@ Override 
149155	public  void  onBinaryMessage (WsBinaryMessageContext  ctx ) throws  Exception  {
150- 		log .debug ("Received binary message from [{}]: [{}] bytes" , ctx .session .getRemoteAddress (), ctx .data ().length );
156+ 		log .debug ("("  + name  + ") Received binary message from [{}]: [{}] bytes" , ctx .session .getRemoteAddress (),
157+ 				ctx .data ().length );
151158		if  (isQuarantined (ctx .session )) {
152- 			log .warn ("Invalid Message from quarantined client [{}]. Disconnecting." , ctx .session .getRemoteAddress ());
159+ 			log .warn ("("  + name  + ") Invalid Message from quarantined client [{}]. Disconnecting." ,
160+ 					ctx .session .getRemoteAddress ());
153161			removeClient (ctx .session );
154- 			ctx .session .close (1000 , "Unauthorized access from quarantined client" );
162+ 			ctx .session .close (1000 , "("   +  name  +  ")  Unauthorized access from quarantined client" );
155163			return ;
156164		}
157165	}
158166
159167	@ Override 
160168	public  void  onClose (WsCloseContext  ctx ) throws  Exception  {
161- 		log .debug ("Disconnected client: [{}]" , ctx .session .getRemoteAddress ());
169+ 		log .debug ("("   +  name  +  ")  Disconnected client: [{}]" , ctx .session .getRemoteAddress ());
162170		removeClient (ctx .session );
163171	}
164172
165173	@ Override 
166174	public  void  onError (WsErrorContext  ctx ) throws  Exception  {
167175		Throwable  t  = ctx .error ();
168176		if  (t  instanceof  EOFException  || t  instanceof  IOException ) {
169- 			log .debug ("Client disconnected [{}]." , ctx .session .getRemoteAddress ());
177+ 			log .debug ("("   +  name  +  ")  Client disconnected [{}]." , ctx .session .getRemoteAddress ());
170178		} else  {
171- 			log .error ("Unexpected error on [{}]." , ctx .session .getRemoteAddress (), t );
179+ 			log .error ("("   +  name  +  ")  Unexpected error on [{}]." , ctx .session .getRemoteAddress (), t );
172180		}
173181		removeClient (ctx .session );
174182	}
0 commit comments