package Ġl aval ink . server . io Ċ Ċ import Ġl aval ink . server . config . Server Config Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . server . Server HttpRequest Ċ import Ġorg . springframework . http . server . Server HttpResponse Ċ import Ġorg . springframework . stereotype . Controller Ċ import Ġorg . springframework . web . socket . WebSocket Handler Ċ import Ġorg . springframework . web . socket . server . Handshake Interceptor Ċ Ċ @ Controller Ċ class ĠHand shake Interceptor Impl Ġ@ Autowired Ċ constructor ( private Ġval Ġserver Config : ĠServer Config , Ġprivate Ġval Ġsocket Server : ĠSocket Server ) Ġ: ĠHand shake Interceptor Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Handshake Interceptor Impl :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġcredentials Ġand Ġsets Ġthe ĠL aval ink Ġversion Ġheader ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġauthenticated ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġbefore Handshake ( request : ĠServer HttpRequest , Ġresponse : ĠServer HttpResponse , Ġws Handler : ĠWebSocket Handler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes : ĠMap < String , ĠAny >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġrequest . headers . getFirst (" Authorization ") ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= Ġpassword Ġ== Ġserver Config . password ĊĊĠĠĠĠĠĠĠ Ġif Ġ( matches ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Incoming Ġconnection Ġfrom Ġ" Ġ+ Ġrequest . remote Address ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Authentication Ġfailed Ġfrom Ġ" Ġ+ Ġrequest . remote Address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . set StatusCode ( HttpStatus . UN AUTHORIZ ED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresume Key Ġ= Ġrequest . headers . getFirst (" Resume - Key ") ĊĠĠĠĠĠĠĠ Ġval Ġres uming Ġ= Ġresume Key Ġ!= Ġnull Ġ&& Ġsocket Server . can Resume ( resume Key ) ĊĠĠĠĠĠĠĠ Ġresponse . headers . add (" Session - Res umed ", Ġres uming . toString ()) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmatches ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠNo Ġaction Ġrequired ĊĠĠĠ Ġoverride Ġfun Ġafter Handshake ( request : ĠServer HttpRequest , Ġresponse : ĠServer HttpResponse , Ġws Handler : ĠWebSocket Handler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception : ĠException ?) Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ