From 2036b6a645af2915e22e68be59b416167e662ae0 Mon Sep 17 00:00:00 2001 From: Defend Date: Fri, 17 Feb 2017 15:29:04 +0300 Subject: [PATCH] Release 19 --- .idea/workspace (1).xml | 899 ++++++++++++++++++ .idea/workspace.xml | 167 +++- ctServer.iml | 1 + lib/javax.json.jar | Bin 0 -> 77629 bytes out/production/ctServer/client.class | Bin 7135 -> 0 bytes out/production/ctServer/console.class | Bin 4548 -> 0 bytes .../ctServer/ctServer$ClientInfo.class | Bin 796 -> 0 bytes out/production/ctServer/ctServer.class | Bin 3356 -> 0 bytes src/client.java | 81 +- src/console.java | 47 +- src/ctServer.java | 67 +- src/socketInfo.java | 118 +++ 12 files changed, 1221 insertions(+), 159 deletions(-) create mode 100644 .idea/workspace (1).xml create mode 100644 lib/javax.json.jar delete mode 100644 out/production/ctServer/client.class delete mode 100644 out/production/ctServer/console.class delete mode 100644 out/production/ctServer/ctServer$ClientInfo.class delete mode 100644 out/production/ctServer/ctServer.class create mode 100644 src/socketInfo.java diff --git a/.idea/workspace (1).xml b/.idea/workspace (1).xml new file mode 100644 index 0000000..ed098dd --- /dev/null +++ b/.idea/workspace (1).xml @@ -0,0 +1,899 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1470646840402 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.8 + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index aff860f..0983aa1 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -28,8 +28,8 @@ - - + + @@ -37,11 +37,11 @@ - - + + - - + + @@ -52,8 +52,20 @@ - - + + + + + + + + + + + + + + @@ -81,7 +93,9 @@ @@ -95,8 +109,8 @@ @@ -131,6 +145,34 @@ - + + + + + + + + - - + + - - + + - + - + + - + @@ -673,7 +729,6 @@ - @@ -691,13 +746,13 @@ - file://$PROJECT_DIR$/src/console.java - 48 + file://$PROJECT_DIR$/src/client.java + 53 - - @@ -829,46 +884,74 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - - - + - - + + - - + + @@ -877,8 +960,8 @@ - - + + @@ -887,8 +970,8 @@ - - + + diff --git a/ctServer.iml b/ctServer.iml index c90834f..abd9608 100644 --- a/ctServer.iml +++ b/ctServer.iml @@ -7,5 +7,6 @@ + \ No newline at end of file diff --git a/lib/javax.json.jar b/lib/javax.json.jar new file mode 100644 index 0000000000000000000000000000000000000000..5a5ebc6bbd901e976797a9faca41056de88c4160 GIT binary patch literal 77629 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�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 C|DnME literal 0 HcmV?d00001 diff --git a/out/production/ctServer/client.class b/out/production/ctServer/client.class deleted file mode 100644 index 220a390f6d503ff8f13e6cccbf7c8e8e2c77438d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7135 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 Gg7*M;L<-FS diff --git a/out/production/ctServer/ctServer$ClientInfo.class b/out/production/ctServer/ctServer$ClientInfo.class deleted file mode 100644 index c15da564f1c2947c8415650567b6ae06891e6b24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 796 zcmZuu+iufP5S)`Z@uhB?OK)78mI6tEhD+b5kRSvp!qh0S^1z#uo)%ZGjT|QupM~-O z;(-s~qY!i4q^SfCJF{ocp4svG_n)7?0371b!V>P8u&}4#zJdn|9xA9SXjs_CBb7bY zaiF6qp!MH(-U?KlbARGDLq9re_R=JX&R+7a>pE=#<73zL+?MMI6x#jvu_vH=-Pf(` zq2_fyut#**7sYA&;!FBfpn6U2O&o{PkEmBX3Zfu=C6KQ-`jl_QCsJV52_ktsz8J{F z^9La-6(=70Vc$;zb)FTq^m8y0uv%dtqqGy9#sYRHie%CX{n1GBZrvHCJ()~ovbX5s zT>V6j(j=xY<7gPpJXpPWoDAi=KuuhpKRi%tu(5$n8#b10tSDGjP*PAJHB3Fcl~-O0(6_;lvNe(mfT}sDEnwcX`HKA3OYiOZ??J zOy!Z8scdFUry0|1#`K#pEoV%(9-5uO55Z4NwzP^mMyD*qnp>cHv?Wk>+sJBKlTkP28 iL<6;}3ANb-;~%9r7bI$Ht|9fKrz=!Z_m5ZeyrNRSCEaL$@q#})sSZozpOayRBJWmI3CPXFkDvff`S(%sNG4^u?o zHg}~`Nkg|fBq*6w{G?%%VV!%QwasL6kD0M~8H|~umTqU$hJ?*GTzB@w9lIU7$ry08 zME6RNq7v4)SHdNsNkX_pcuzX5pD7qjovr z-Ki0JwzkK#jK1vHu#rBf4<|_p^`zo@a!^m3;#?rgcEV(s>XLT)T^3Im@sq9<30rH6 zF_q>jW~WVSw4?4Y4UXxiB_UGcb=nv;PB#zewr!+EK0TS!5;m+NPiadZbDUeop`e>t z<3+Wr)&Zz5n@kR*Op99gosJvhHbJCzDb8FMouo!RJ<5dkkYL51odg6Bxm$2UT+A{3sm{Ur0Qyx#H ziMl64=PF9>9Z(BgYzkJrf|nG0ho~&+77)c!*>v2v+Z0%q7sF~2j%esYHxpbWmQ;v_ zE8Ph$cnz3208h$0*4HQx1uvzx1fB1wEXSI}&Tt`_u z4wsXO6@A8@U-r`}x?EH^v?u4F>84qO*D{geutN;#l;PUr(~Y!=)a$@jLUytB;I` zevFnlSiELGDieA#YxEx%EQbpo-!RVAgl&)S$=V5niZ+y}S)Ta55o0(zdV>?iG|0MR9ND|jr;*S<&s!XwKprKMsF(1yzeZ{ zRzdGgYCD`40v%)oemyQmCKFIpyJ9+N!|vN}P-N42mvFSJDaPnFj&R4-Um_;-`r^q{ z#^6i4m7f%VjG$;(?t-E_A)$kN4?20~3~}fjC` zKCXU;7{J}!Yc2!s!G4~Ch~i#SDD3f5Ss7{X&BJqO7T(^5p*hIA`WhG7WN(`<>ab;1z0t6NcyCS0A~^eI;t!FYvi5 z5)6?;eIA>>JgRs?V>Z)&g|+fdK76+7@OZpVxKPI?J-ocA>x% z6)pHXF?D`+g|Y^C%9Whr3oxpcj3#vK{Bqj{!pTE`$Cg?R&}n9%4Ai zr`UapeC&K`9mEiMK27QolwGIGeg%gV99D3ItHeBAXAEU4i3*M?xZmMAN{+SKW{L)G z7X1%=tz8Np@USKh;6WM^HQ}W@ej0pxz4sq)qGB4icsnbnaLd9Kg!riRGOMw35@Gn) zJR+=`&C^)Bw5yy)6=_>$ur&v{XWc+&sCphXByFpl!FB=Djv3rGhui0|^HAk1YI{R< zp?aPP*{(isn=DL)<(JXLO;~RE4Z>l08V$}#AR5bIr+YPn#!IW*2G7ZKZhjt3wA$P_ zgFA8vw#(eynY;c%yN`xiBED-3vyFY#P1J3?h2Qa+z@PCahVItI!>kDu`fvj~v5Nh; zjS>ymL&Z z;2Mt7_Jg#3KYot~@CO{D2g6JCQ^rsCW3(;t3uC{tlgTGjv(D9~ cil = ctServer.clientInfoList; console.out("Server","/list"); - for(int i = 0; ctServer.sessions[i]; i++){ - if(ctServer.sockets.get(Integer.valueOf(i)).socketAuthed) { - ctServer.ClientInfo ci = cil.get(i); - console.out("Socket " + i, "VKID " + ci.VKID + " and PROTOCOL " + ci.PROTOCOL); + for(int i = 0; socketInfo.SOCKETID.size() > i; i++){ + int id = socketInfo.SOCKETID.get(i); + if(socketInfo.isProtocolAuth(id)) { + console.socket(id,"VKID " + socketInfo.VKID.get(id) + " and PROTOCOL " + socketInfo.PROTOCOL.get(id)); }else{ - console.out("Socket "+ i,"Not authed!"); + console.socket(id,"Protocol not checked!"); } } break; case "/kick": - if(sx.length < 2) { - console.out("Server","/kick - Укажите имя сокета"); + sid = Integer.valueOf(sx[1]); + if(socketInfo.findSocket(Integer.valueOf(sx[1])) != -1){ + socketInfo.getClient(sid).close(); } break; case "/help": @@ -72,17 +71,23 @@ public class console extends Thread{ console.out("Server","ctServer Proto Defend Development 2016"); break; case "/send": - if(ctServer.sessions[Integer.valueOf(sx[1])]) { - if ((ctServer.sockets.size() >= Integer.valueOf(sx[1])) && (Integer.valueOf(sx[1]) >= 0)) { - ctServer.sockets.get(Integer.valueOf(sx[1])).sendSocket(sx[2]); + sid = socketInfo.findSocket(Integer.valueOf(sx[1])); + if(sid != -1){ + String msg = ""; + for (int i = 2; i < sx.length ; i++) { + msg += " "; + msg += sx[i]; } + socketInfo.getClient(Integer.valueOf(sx[1])).sendSocket(msg); } break; default: console.out("Server","Введите /help для помощи"); } }catch (IOException e){ - + console.out("Console","Something goes wrong..."); + }catch (NumberFormatException e){ + console.out("Console","Hey guy, don't be so crazy!!!"); } } } diff --git a/src/ctServer.java b/src/ctServer.java index f0800a5..9162b71 100644 --- a/src/ctServer.java +++ b/src/ctServer.java @@ -1,68 +1,53 @@ import java.net.*; import java.io.*; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.regex.Pattern; public class ctServer { - public static Boolean[] sessions; - public static List sockets; - public static int socketID; - public static ArrayList clientInfoList; +// public static int socketID; +// public static ArrayList socketInfoList; - public static class ClientInfo{ - public static String VKID, ROLE, PROTOCOL, EVENT, TRACKID; - public static int TIME; - public static Boolean notEmpty = false; - public static void destroy(){ - VKID = null; - ROLE = null; - PROTOCOL = null; - EVENT = null; - TRACKID = null; - TIME = 0; - notEmpty = false; - } - } - public static boolean checkClient(client c, String[] args){ - ClientInfo ci = new ClientInfo(); - ci.destroy(); + public static boolean checkClient(socketInfo socketID, String[] args){ + /* + socketInfo flow = new socketInfo(); + //TODO: Устарело + //TODO: перенести в console.java try { for (String name : args) { Pattern main = Pattern.compile(":"); String[] sx = main.split(name); switch (sx[0]) { case "PROTOCOL": - ci.PROTOCOL = sx[1]; + flow.PROTOCOL = sx[1]; break; case "VKID": - ci.VKID = sx[1]; + flow.VKID = sx[1]; break; } } - if (!ci.VKID.equals("")) { - if (!ci.PROTOCOL.equals("")) { - clientInfoList.add(c.socketID, ci); - c.httpAuthed = true; + if (!flow.VKID.equals("")) { + if (!flow.PROTOCOL.equals("")) { + flow.httpAuth = true; + socketInfoList.set(flow.SOCKETID, flow); console.debug("Авторизация произошла!"); return true; } } } catch (NullPointerException e){ return false; + }finally { + flow.close(); + System.gc(); } + */ return false; } public static void main(String[] args) throws IOException{ - sessions = new Boolean[1000]; - for (int i = 0; i < sessions.length; i++) { - sessions[i] = false; - } - clientInfoList = new ArrayList<>(); - sockets = new ArrayList<>(); + socketInfo.init(); +// socketID = 0; try{ new console().consoleListner(); } @@ -77,19 +62,7 @@ public class ctServer { while(true) { Socket socket = ss.accept(); try { - for(int i = 0; ctServer.sessions.length > i; i++){ - if(ctServer.sessions[i] == null){ - ctServer.socketID = i; - ctServer.sessions[i] = true; - break; - } - if(ctServer.sessions[i] == false){ - ctServer.socketID = i; - ctServer.sessions[i] = true; - break; - } - } - new client().openSocket(socket); + new client().openSocket(socket); } catch (IOException e) { socket.close(); } diff --git a/src/socketInfo.java b/src/socketInfo.java new file mode 100644 index 0000000..9b5e14b --- /dev/null +++ b/src/socketInfo.java @@ -0,0 +1,118 @@ +import java.util.ArrayList; +import java.util.function.BooleanSupplier; + +/** + * Created by itsmy_000 on 13.08.2016. + */ +public class socketInfo { + public static ArrayList ROLE, PROTOCOL, EVENT, TRACKID; + public static ArrayList VKID, TIME, SOCKETID, PARTYID; + public static ArrayList ONLINE, httpAuth, protocolAuth; + public static ArrayList CLIENT; + public static Integer sid; + + + public static void init(){ + sid = 0; + VKID = new ArrayList<>(); + TIME = new ArrayList<>(); + ROLE = new ArrayList<>(); + EVENT = new ArrayList<>(); + CLIENT = new ArrayList<>(); + PARTYID = new ArrayList<>(); + TRACKID = new ArrayList<>(); + PROTOCOL = new ArrayList<>(); + SOCKETID = new ArrayList<>(); + ONLINE = new ArrayList<>(); + httpAuth = new ArrayList<>(); + protocolAuth = new ArrayList<>(); + } + + public static void create(client c, Integer sid){ + VKID.add(0); + TIME.add(0); + ROLE.add(""); + EVENT.add(""); + ONLINE.add(true); + CLIENT.add(c); + TRACKID.add(""); + PROTOCOL.add(""); + PARTYID.add(0); + SOCKETID.add(sid); + httpAuth.add(false); + protocolAuth.add(false); + } + + public static void close(Integer sid){ + int s = findSocket(sid); + VKID.remove(s); + ROLE.remove(s); + PROTOCOL.remove(s); + EVENT.remove(s); + TRACKID.remove(s); + SOCKETID.remove(s); + TIME.remove(s); + PARTYID.remove(s); + CLIENT.remove(s); + ONLINE.remove(s); + httpAuth.remove(s); + protocolAuth.remove(s); + } + + public static Integer getNewID(){ + sid++; + return sid; + } + + public static Integer findSocket(int s){ + int id = -1; + for (int i = 0; i < SOCKETID.size(); i++) { + if(SOCKETID.get(i) == s){ + id = i; + } + + } + return id; + } + + public static void setHttpAuth(Integer sid, Boolean b){ + int s = findSocket(sid); + if(s == -1) return; + httpAuth.set(s, b); + } + + public static void setProtocol(Integer sid, Integer vkid, Integer pid, String role){ + int s = findSocket(sid); + if(s == -1) return; + protocolAuth.set(s, true); + VKID.set(s, vkid); + PARTYID.set(s, pid); + ROLE.set(s, role); + } + + public static Boolean isProtocolAuth(Integer sid){ + int s = findSocket(sid); + if(s == -1) return Boolean.FALSE; + return protocolAuth.get(s); + } + + public static Boolean isHttpAuth(Integer sid){ + int s = findSocket(sid); + if(s == -1) return Boolean.FALSE; + return httpAuth.get(s); + } + + public static Boolean isOnline(Integer sid){ + int s = findSocket(sid); + if(s == -1) return Boolean.FALSE; + return ONLINE.get(s); + } + + public static client getClient(Integer sid){ + int s = findSocket(sid); + if(s == -1) return null; + return socketInfo.CLIENT.get(s); + } + + +}