From b25733d8a15ca43140bab205128bf558dde4e4dc Mon Sep 17 00:00:00 2001 From: matsfunk Date: Wed, 30 Dec 2020 19:27:21 +0100 Subject: [PATCH] v1.20 - changed access to lastAction in client class, which helps for server-based client that can now override this method - reduced ping sent out depending on lastAction - fixed wrong event count in metrics (should have been five times higher) --- server/dist/OOCSI_server.jar | Bin 593362 -> 593301 bytes .../nl/tue/id/oocsi/server/OOCSIServer.java | 11 +++++++---- .../nl/tue/id/oocsi/server/model/Client.java | 10 +++++++++- .../nl/tue/id/oocsi/server/model/Server.java | 12 ++++++------ .../oocsi/server/services/SocketClient.java | 4 ++-- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/server/dist/OOCSI_server.jar b/server/dist/OOCSI_server.jar index 617e766d2ca28476238f4439936b2e2fa90573a2..b37e8c67eebae53a94b46a50e4c426adbc06ef54 100644 GIT binary patch delta 32374 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%0D<{;FQqKLhU1uo8nhhcg42< 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 z z0JV00SLn5a$pwzD&|W>;`Hc&sS*P_htBBxO42S7{CK!A)h6!dt2o}H*8Q5=yfxx8T z#eMBK6xmM66Vt=6eJ-Sz8Bs1D!L4C9W(U`j9GV>yg;{znVd~kqU3FLq%Kr$B*4mD3 zx&zC?q0_oAu0f;MLZkoOF6n7IA{t9WLCRDa`w5&Y@4+mbxWTz+O!c%$B8D~%Ly{f* zgt|}Ner`T&`(6Xb!vqqlgDg7uubbC&zyv*mqC5Bx7I`!dMt3{-D?-__b#ZktzfQyA zBk05wNp$j^OzDI|)@W%be_h!En8<-|_n+ZzrkqcTqvB3}FWsX}FD}rgQS`wcoTAb` z&(XtB)MrYLH4RPw%zrl>_8GJ(@a>=07J-&o+lT#HsFNx>8qe69T*_6BGvy-&vE zWy}|Fpi_ofp8+-#=dU&zB8s?CoepM^h&+DQTm>KuEMpP~gq~0JE96O3AvJ2il(W_=&7erO_3m2W< zONydTUHq=-1Cwwpd}*?~4u|)Ci*Uryv~Ir5rW=aw;-J!Q$PpZ1!VeDC+k?%=LXCUi z4l{bNDfDQ4%%!E1m@0edva_X;#dp~Bhm%bBb-MF6U>y|(SuV=?#?NO7Z91$@n+(y= z@BEtrS0ZNB2B>nT;gt`9RS=b+Xqy)HC$7zbFPY!@?P~u{ zw+qHUU6siX{y4Gy0qkZynl(VFKi~uby`sr_`4pRh?=l!@g75F`O;G$#*pKP`!B5QR zw{FfyVU|3Acm<{Jr(vnnPrme2^yV{P!J{{Qh(MrOkIiYRIaBw>q+zqfVCk;s{`*#2 zVGbRpHj3iz+y5!>DtI(xJ+kYeW-?AcJ^!^O9ik+mQG%koi~e%@ z7MwC2`LhSoQoQ6Z)9j@jS>*VO|6HgMuD+IT^*iu4RiG)B_Jf5aQPD4cKR@^d{!AVI zGTn9HP)N6z-#MneVE@l)&_0TZy7aTyt0AzAm8$>yvVNM!pp=8Y^zysSXz=jazkP8i z0PE93I3!XHgsSPyAf}Q(=h6NxVekmSeLzqjuys%mujvO)X>8Y~QZK?N(uTho z*B3~=`Hn%o2-5q_PYQ9*K9e5HY7mdPfZk#s)~|@;$S?~sUN(M1(_X|5nlzEmNq*D* z9Ig`*nkL|CZUUn}=*z`DCs%i8<20!B0#rIvKsh!UX|T8^s5qH3ggLOpbi$wGctS!} z0{Y5ST93~OZDMhi39WRRn1X6pT>Kn3E^M*JE_i``9iEWK36wQJEP{)VhnW*llsHc> zRj_Y)md!@$1Xl#Xxm|n^=rC<>F8#~yT*i_6GfMPrPQMq121P*T1$$}XZNWlA=~w3X z#50Ypds+f~OZ1q+Fzqr&{==q<~*SPoO`7t|(LQz)tt=1ynwmAoNjh!hN( z!>~{Y&ga-?=z%a74l~umqV6oh#mo0E>-N_opx*&{!IMB=o)7A!Q8SEu9Tx zZX6VxFVNkuM*myLdwqa`EKq4CvJ>OZVVoQh11I0j1)V4{2hbQhOC0RWW(eA4nCCzy9b((ecg}`y cK`eMg5PV9Io+VgF8eJ0S%9FXy@H`>(e~W|z6951J delta 32796 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 120000 || !existingClient.isConnected()) { - OOCSIServer.log("Client " + existingClient.getName() + for (Client client : clients.values()) { + if (client.lastAction() + 120000 < now || !client.isConnected()) { + OOCSIServer.log("Client " + client.getName() + " has not responded for 120 secs and will be disconnected"); // remove from presence tracking if tracking - presence.timeout(existingClient.getName(), existingClient.getName()); + presence.timeout(client.getName(), client.getName()); - removeClient(existingClient); + removeClient(client); } } } diff --git a/server/src/nl/tue/id/oocsi/server/services/SocketClient.java b/server/src/nl/tue/id/oocsi/server/services/SocketClient.java index de12887..1d895b4 100644 --- a/server/src/nl/tue/id/oocsi/server/services/SocketClient.java +++ b/server/src/nl/tue/id/oocsi/server/services/SocketClient.java @@ -240,7 +240,7 @@ public void run() { if ((inputLine = input.readLine()) != null) { // update last action - lastAction = System.currentTimeMillis(); + touch(); // do some filtering for SSH clients connecting and other abuse if (inputLine.length() > 200) { @@ -297,7 +297,7 @@ public void run() { while ((inputLine = input.readLine()) != null) { // update last action - lastAction = System.currentTimeMillis(); + touch(); // clean input from PD clients if (type == ClientType.PD) {