Browse Source

Release 22

master
Defend 7 years ago
parent
commit
812e515146
  1. 292
      .idea/workspace.xml
  2. 194
      src/client.java
  3. 55
      src/console.java
  4. 4
      src/ctServer.java
  5. 6
      src/eventHandler.java
  6. 46
      src/socketInfo.java

292
.idea/workspace.xml

@ -28,8 +28,8 @@
<file leaf-file-name="ctServer.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/ctServer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="485">
<caret line="32" column="1" selection-start-line="32" selection-start-column="1" selection-end-line="32" selection-end-column="1" />
<state relative-caret-position="255">
<caret line="15" column="16" selection-start-line="15" selection-start-column="16" selection-end-line="15" selection-end-column="16" />
<folding>
<element signature="imports" expanded="true" />
</folding>
@ -40,10 +40,15 @@
<file leaf-file-name="console.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/console.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="264">
<caret line="67" column="90" selection-start-line="67" selection-start-column="90" selection-end-line="67" selection-end-column="90" />
<state relative-caret-position="187">
<caret line="11" column="4" selection-start-line="11" selection-start-column="4" selection-end-line="11" selection-end-column="4" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#consoleListner#0;class#console#0" expanded="false" />
<element signature="method#out#0;class#console#0" expanded="false" />
<element signature="method#socket#0;class#console#0" expanded="false" />
<element signature="method#debug#0;class#console#0" expanded="false" />
<element signature="method#run#0;class#console#0" expanded="false" />
</folding>
</state>
</provider>
@ -52,31 +57,32 @@
<file leaf-file-name="socketInfo.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/socketInfo.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="264">
<caret line="89" column="37" selection-start-line="89" selection-start-column="37" selection-end-line="89" selection-end-column="37" />
<state relative-caret-position="-804">
<caret line="72" column="53" selection-start-line="72" selection-start-column="34" selection-end-line="72" selection-end-column="53" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="client.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/client.java">
<file leaf-file-name="eventHandler.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/eventHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="162">
<caret line="63" column="28" selection-start-line="63" selection-start-column="28" selection-end-line="63" selection-end-column="28" />
<folding>
<element signature="imports" expanded="true" />
</folding>
<state relative-caret-position="68">
<caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JsonParser.class" pinned="false" current-in-tab="false">
<entry file="jar://$PROJECT_DIR$/lib/javax.json.jar!/javax/json/stream/JsonParser.class">
<file leaf-file-name="client.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/client.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="204">
<caret line="30" column="16" selection-start-line="30" selection-start-column="16" selection-end-line="30" selection-end-column="16" />
<folding />
<state relative-caret-position="-5">
<caret line="98" column="33" selection-start-line="98" selection-start-column="33" selection-end-line="98" selection-end-column="33" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#bytesToStringUTFCustom#0;class#client#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -100,10 +106,11 @@
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/main.java" />
<option value="$PROJECT_DIR$/src/ctServer.java" />
<option value="$PROJECT_DIR$/lib/javax.json.jar!/javax/json/stream/JsonParser.class" />
<option value="$PROJECT_DIR$/src/socketInfo.java" />
<option value="$PROJECT_DIR$/src/console.java" />
<option value="$PROJECT_DIR$/src/ctServer.java" />
<option value="$PROJECT_DIR$/src/eventHandler.java" />
<option value="$PROJECT_DIR$/src/client.java" />
</list>
</option>
@ -145,9 +152,8 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="Scratches" />
<pane id="PackagesPane" />
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<PATH>
@ -166,8 +172,37 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="ctServer" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ctServer" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="ctServer" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ctServer" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="lib" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
@ -180,8 +215,9 @@
<property name="GenerateAntBuildDialog.backupFiles" value="true" />
<property name="GenerateAntBuildDialog.outputFileNameProperty" value="ctserver" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="restartRequiresConfirmation" value="false" />
</component>
<component name="RunManager" selected="Application.Unnamed">
<component name="RunManager" selected="Application.Debug">
<configuration default="true" type="#com.intellij.j2meplugin.run.J2MEConfigurationType" factoryName="J2ME">
<module name="" />
<USER_OPTIONS />
@ -623,7 +659,7 @@
<configuration default="true" type="osgi.bnd.run" factoryName="Test Launcher (JUnit)">
<method />
</configuration>
<configuration default="false" name="Unnamed" type="Application" factoryName="Application">
<configuration default="false" name="Debug" type="Application" factoryName="Application" singleton="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="ctServer" />
<option name="VM_PARAMETERS" value="" />
@ -639,7 +675,7 @@
<method />
</configuration>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="Application.Unnamed" />
<item index="0" class="java.lang.String" itemvalue="Application.Debug" />
</list>
</component>
<component name="ShelveChangesManager" show_recycled="false">
@ -661,25 +697,36 @@
<workItem from="1470936508138" duration="9814000" />
<workItem from="1470992276279" duration="9337000" />
<workItem from="1471206887598" duration="5117000" />
<workItem from="1471213151749" duration="371000" />
<workItem from="1471272205780" duration="10014000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="92242000" />
<option name="totallyTimeSpent" value="102627000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
<is-autoscroll-to-source value="true" />
</todo-panel>
<todo-panel id="all">
<are-packages-shown value="true" />
<is-autoscroll-to-source value="true" />
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1066" extended-state="6" />
<editor active="true" />
<editor active="false" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3290461" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3279743" sideWeight="0.4792111" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3876853" sideWeight="0.5444984" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3858521" sideWeight="0.45550162" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3858521" sideWeight="0.45550162" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32839224" sideWeight="0.4978678" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
@ -689,7 +736,7 @@
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39935064" sideWeight="0.47708333" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39871383" sideWeight="0.47708333" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
@ -712,7 +759,7 @@
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<option name="time" value="33" />
<option name="time" value="39" />
</breakpoint-manager>
<watches-manager />
</component>
@ -721,6 +768,110 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/ctServer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="527">
<caret line="32" column="1" selection-start-line="32" selection-start-column="1" selection-end-line="32" selection-end-column="1" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/console.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1037">
<caret line="67" column="90" selection-start-line="67" selection-start-column="90" selection-end-line="67" selection-end-column="90" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#consoleListner#0;class#console#0" expanded="false" />
<element signature="method#out#0;class#console#0" expanded="false" />
<element signature="method#socket#0;class#console#0" expanded="false" />
<element signature="method#debug#0;class#console#0" expanded="false" />
<element signature="method#run#0;class#console#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/socketInfo.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1496">
<caret line="89" column="37" selection-start-line="89" selection-start-column="37" selection-end-line="89" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/client.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#bytesToStringUTFCustom#0;class#client#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/javax.json.jar!/javax/json/stream/JsonParser.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="425">
<caret line="30" column="16" selection-start-line="30" selection-start-column="16" selection-end-line="30" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/ctServer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="527">
<caret line="32" column="1" selection-start-line="32" selection-start-column="1" selection-end-line="32" selection-end-column="1" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/console.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1037">
<caret line="67" column="90" selection-start-line="67" selection-start-column="90" selection-end-line="67" selection-end-column="90" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#consoleListner#0;class#console#0" expanded="false" />
<element signature="method#out#0;class#console#0" expanded="false" />
<element signature="method#socket#0;class#console#0" expanded="false" />
<element signature="method#debug#0;class#console#0" expanded="false" />
<element signature="method#run#0;class#console#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/socketInfo.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1496">
<caret line="89" column="37" selection-start-line="89" selection-start-column="37" selection-end-line="89" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/client.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#bytesToStringUTFCustom#0;class#client#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/javax.json.jar!/javax/json/stream/JsonParser.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="425">
<caret line="30" column="16" selection-start-line="30" selection-start-column="16" selection-end-line="30" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/ctServer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="527">
@ -737,6 +888,11 @@
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#consoleListner#0;class#console#0" expanded="false" />
<element signature="method#out#0;class#console#0" expanded="false" />
<element signature="method#socket#0;class#console#0" expanded="false" />
<element signature="method#debug#0;class#console#0" expanded="false" />
<element signature="method#run#0;class#console#0" expanded="false" />
</folding>
</state>
</provider>
@ -747,6 +903,7 @@
<caret line="62" column="9" selection-start-line="62" selection-start-column="9" selection-end-line="62" selection-end-column="9" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#bytesToStringUTFCustom#0;class#client#0" expanded="false" />
</folding>
</state>
</provider>
@ -767,6 +924,11 @@
<caret line="64" column="91" selection-start-line="64" selection-start-column="91" selection-end-line="64" selection-end-column="91" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#consoleListner#0;class#console#0" expanded="false" />
<element signature="method#out#0;class#console#0" expanded="false" />
<element signature="method#socket#0;class#console#0" expanded="false" />
<element signature="method#debug#0;class#console#0" expanded="false" />
<element signature="method#run#0;class#console#0" expanded="false" />
</folding>
</state>
</provider>
@ -777,6 +939,7 @@
<caret line="54" column="20" selection-start-line="54" selection-start-column="20" selection-end-line="54" selection-end-column="20" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#bytesToStringUTFCustom#0;class#client#0" expanded="false" />
</folding>
</state>
</provider>
@ -797,6 +960,11 @@
<caret line="34" column="5" selection-start-line="34" selection-start-column="5" selection-end-line="34" selection-end-column="5" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#consoleListner#0;class#console#0" expanded="false" />
<element signature="method#out#0;class#console#0" expanded="false" />
<element signature="method#socket#0;class#console#0" expanded="false" />
<element signature="method#debug#0;class#console#0" expanded="false" />
<element signature="method#run#0;class#console#0" expanded="false" />
</folding>
</state>
</provider>
@ -807,6 +975,7 @@
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#bytesToStringUTFCustom#0;class#client#0" expanded="false" />
</folding>
</state>
</provider>
@ -828,6 +997,11 @@
<caret line="67" column="13" selection-start-line="67" selection-start-column="13" selection-end-line="67" selection-end-column="13" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#consoleListner#0;class#console#0" expanded="false" />
<element signature="method#out#0;class#console#0" expanded="false" />
<element signature="method#socket#0;class#console#0" expanded="false" />
<element signature="method#debug#0;class#console#0" expanded="false" />
<element signature="method#run#0;class#console#0" expanded="false" />
</folding>
</state>
</provider>
@ -838,6 +1012,7 @@
<caret line="86" column="50" selection-start-line="86" selection-start-column="50" selection-end-line="86" selection-end-column="50" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#bytesToStringUTFCustom#0;class#client#0" expanded="false" />
</folding>
</state>
</provider>
@ -859,6 +1034,11 @@
<caret line="67" column="13" selection-start-line="67" selection-start-column="13" selection-end-line="67" selection-end-column="13" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#consoleListner#0;class#console#0" expanded="false" />
<element signature="method#out#0;class#console#0" expanded="false" />
<element signature="method#socket#0;class#console#0" expanded="false" />
<element signature="method#debug#0;class#console#0" expanded="false" />
<element signature="method#run#0;class#console#0" expanded="false" />
</folding>
</state>
</provider>
@ -869,6 +1049,7 @@
<caret line="43" column="30" selection-start-line="43" selection-start-column="30" selection-end-line="43" selection-end-column="30" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#bytesToStringUTFCustom#0;class#client#0" expanded="false" />
</folding>
</state>
</provider>
@ -897,33 +1078,30 @@
</state>
</provider>
</entry>
<entry file="jar://E:/ProfessionalPrograms/JDK8/src.zip!/java/util/ArrayList.java" />
<entry file="file://$PROJECT_DIR$/ctserver.xml" />
<entry file="file://$PROJECT_DIR$/module_ctserver.xml" />
<entry file="file://$PROJECT_DIR$/package-list" />
<entry file="jar://E:/ProfessionalPrograms/JDK8/src.zip!/java/net/SocketInputStream.java" />
<entry file="jar://$PROJECT_DIR$/lib/javax.json.jar!/javax/json/stream/JsonParser.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="204">
<state relative-caret-position="425">
<caret line="30" column="16" selection-start-line="30" selection-start-column="16" selection-end-line="30" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/ctServer.java">
<entry file="jar://E:/ProfessionalPrograms/JDK8/src.zip!/java/util/ArrayList.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="485">
<caret line="32" column="1" selection-start-line="32" selection-start-column="1" selection-end-line="32" selection-end-column="1" />
<folding>
<element signature="imports" expanded="true" />
</folding>
<state relative-caret-position="181">
<caret line="430" column="0" selection-start-line="430" selection-start-column="0" selection-end-line="430" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/console.java">
<entry file="file://$PROJECT_DIR$/src/ctServer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="264">
<caret line="67" column="90" selection-start-line="67" selection-start-column="90" selection-end-line="67" selection-end-column="90" />
<state relative-caret-position="255">
<caret line="15" column="16" selection-start-line="15" selection-start-column="16" selection-end-line="15" selection-end-column="16" />
<folding>
<element signature="imports" expanded="true" />
</folding>
@ -932,18 +1110,42 @@
</entry>
<entry file="file://$PROJECT_DIR$/src/socketInfo.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="264">
<caret line="89" column="37" selection-start-line="89" selection-start-column="37" selection-end-line="89" selection-end-column="37" />
<state relative-caret-position="-804">
<caret line="72" column="53" selection-start-line="72" selection-start-column="34" selection-end-line="72" selection-end-column="53" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/eventHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="68">
<caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/console.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="187">
<caret line="11" column="4" selection-start-line="11" selection-start-column="4" selection-end-line="11" selection-end-column="4" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#consoleListner#0;class#console#0" expanded="false" />
<element signature="method#out#0;class#console#0" expanded="false" />
<element signature="method#socket#0;class#console#0" expanded="false" />
<element signature="method#debug#0;class#console#0" expanded="false" />
<element signature="method#run#0;class#console#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/client.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="162">
<caret line="63" column="28" selection-start-line="63" selection-start-column="28" selection-end-line="63" selection-end-column="28" />
<state relative-caret-position="-5">
<caret line="98" column="33" selection-start-line="98" selection-start-column="33" selection-end-line="98" selection-end-column="33" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#bytesToStringUTFCustom#0;class#client#0" expanded="false" />
</folding>
</state>
</provider>

194
src/client.java

@ -41,6 +41,7 @@ public class client extends Thread {
if(!socketInfo.isOnline(id)){
return;
}
sendSocket("{\"fn\":\"close\",\"reason\":\"\"}");
try {
in.close();
out.close();
@ -57,15 +58,27 @@ public class client extends Thread {
return;
}
while (socketInfo.isOnline(id)) {
// Получение сообщения
String msg = readSocket();
// Сохранение данных из сообщения
parseInput(msg);
// Проверка протокола
if(!socketInfo.isProtocolAuth(id)){socketInfo.checkProtocol(id);}
if(!socketInfo.isProtocolAuth(id)){sendSocket("{\"fn\":\"bad_protocol\"}");close();}
if(!socketInfo.isProtocolAuth(id)){close();}
//TODO: подключить Event Handler
//TODO: проверить ROLE клиента
//TODO: выполнить событие в зависимости от ROLE клиента
//RoleChecker -> socketInfo
//eventFilter -> eventHandler
//eventFilter > switch > EVENT & ROLE
//eventFilter >> eventMaker >> client.socket
//TODO: убрать ECHO сообщение
sendSocket(msg);
}
}
private String bytesToStringUTFCustom(int[] ints) {
//TODO: добавить поддержку русского языка
char[] buffer = new char[ints.length];
for (int i = 0; i < buffer.length; i++) {
char c = (char) ints[i];
@ -98,9 +111,7 @@ public class client extends Thread {
+ "\r\n\r\n")
.getBytes("UTF-8");
out.write(response, 0, response.length);
} catch (IOException e) {
console.out("Server Error:", e.toString());
} catch (NoSuchAlgorithmException e) {
} catch (IOException | NoSuchAlgorithmException e) {
console.out("Server Error:", e.toString());
}
socket.setSoTimeout(0);
@ -110,7 +121,6 @@ public class client extends Thread {
}
} catch (SocketException e) {
console.debug("исключение 22");
//TODO: написать исключение если сокет закрыт
} catch (NoSuchElementException e) {
console.socket(id, "Handshake Timeout (2000ms)");
socketInfo.setHttpAuth(id, false);
@ -138,32 +148,29 @@ public class client extends Thread {
System.arraycopy(response, 0, r, 2, response.length);
r[0] = (byte) 129;
r[1] = (byte) (response.length);
} else if (message.length() < 65535) {
r = new byte[response.length + 4];
System.arraycopy(response, 0, r, 4, response.length);
r[0] = (byte) 129;
r[1] = (byte) 126;
r[2] = (byte) (response.length >>> 8);
r[3] = (byte) (response.length);
} else if (response.length < Long.MAX_VALUE) {
r = new byte[response.length + 8];
System.arraycopy(response, 0, r, 8, response.length);
r[0] = (byte) 129;
r[1] = (byte) 127;
r[2] = (byte) (response.length >>> 56);
r[3] = (byte) (response.length >>> 48);
r[4] = (byte) (response.length >>> 40);
r[5] = (byte) (response.length >>> 32);
r[6] = (byte) (response.length >>> 24);
r[7] = (byte) (response.length >>> 16);
r[8] = (byte) (response.length >>> 8);
r[9] = (byte) (response.length);
} else {
if (message.length() < 65535) {
r = new byte[response.length + 4];
System.arraycopy(response, 0, r, 4, response.length);
r[0] = (byte) 129;
r[1] = (byte) 126;
r[2] = (byte) (response.length >>> 8);
r[3] = (byte) (response.length);
} else {
if (response.length > Long.MAX_VALUE) {
console.out("Socket Exception", "Too long message for sending! (>64bit)");
return false;
}
r = new byte[response.length + 8];
System.arraycopy(response, 0, r, 8, response.length);
r[0] = (byte) 129;
r[1] = (byte) 127;
r[2] = (byte) (response.length >>> 56);
r[3] = (byte) (response.length >>> 48);
r[4] = (byte) (response.length >>> 40);
r[5] = (byte) (response.length >>> 32);
r[6] = (byte) (response.length >>> 24);
r[7] = (byte) (response.length >>> 16);
r[8] = (byte) (response.length >>> 8);
r[9] = (byte) (response.length);
}
console.out("Socket Exception", "Too long message for sending! (>64bit)");
return false;
}
try {
out.write(r, 0, r.length);
@ -180,7 +187,6 @@ public class client extends Thread {
String out = "";
try {
int[] MSG = new int[0];
int OPCOUNT = 1;
int LENGTH;
int KEYFRAME = 0;
int[] KEY = new int[4];
@ -194,60 +200,49 @@ public class client extends Thread {
return null;
case 129:
LENGTH = in.read(); //читаем второй бит с данными о размере сообщения
//TODO: which и switch OPCOUNT - необходимо убрать
while (OPCOUNT < 4) {
switch (OPCOUNT) {
case 1:
switch (LENGTH) { //узнаем длину сообщения
default:
KEYFRAME = 2;
break;
case 254:
KEYFRAME = 4; //126-65535
break;
case 255:
KEYFRAME = 10; //65535-...
break;
}
switch (LENGTH) { //узнаем длину сообщения
default:
KEYFRAME = 2;
break;
case 254:
KEYFRAME = 4; //126-65535
break;
case 255:
KEYFRAME = 10; //65535-...
break;
}
switch (KEYFRAME) {
case 2:
switch (KEYFRAME) {
case 2:
MSG = new int[LENGTH - 128];
break;
case 4:
LENGTH = (in.read() << 8) + (in.read());
MSG = new int[LENGTH];
break;
case 10:
LENGTH = (in.read() << 56)
+ (in.read() << 48)
+ (in.read() << 40)
+ (in.read() << 32)
+ (in.read() << 24)
+ (in.read() << 16)
+ (in.read() << 8)
+ (in.read());
MSG = new int[LENGTH];
break;
}
for (int i = 0; i < 4; i++) {
KEY[i] = in.read();
}
for (int j = 0; j < (MSG.length); j++) {
int enc = in.read();
MSG[j] = (byte) (enc ^ KEY[j & 0x3]);
}
MSG = new int[LENGTH - 128];
break;
case 4:
LENGTH = (in.read() << 8) + (in.read());
MSG = new int[LENGTH];
break;
case 10:
LENGTH = (in.read() << 56)
+ (in.read() << 48)
+ (in.read() << 40)
+ (in.read() << 32)
+ (in.read() << 24)
+ (in.read() << 16)
+ (in.read() << 8)
+ (in.read());
MSG = new int[LENGTH];
break;
case 3:
if (MSG.length > 0) {
out = bytesToStringUTFCustom(MSG);
} else {
return null;
}
}
OPCOUNT++;
}
for (int i = 0; i < 4; i++) {
KEY[i] = in.read();
}
for (int j = 0; j < (MSG.length); j++) {
int enc = in.read();
MSG[j] = (byte) (enc ^ KEY[j & 0x3]);
}
if (MSG.length > 0) {
out = bytesToStringUTFCustom(MSG);
} else {
return null;
}
}
} catch (IOException e) {
console.out("Socket Exception", "Client socket is closed?! Closing socket connection!");
@ -295,40 +290,3 @@ public class client extends Thread {
}
}
// public void sControl(){
// try{
// while (true) {
// String input = reader.readLine();
// if(input == null){break;}
// Pattern main = Pattern.compile(";");
// if(!httpAuth) {
// if (!ctServer.checkClient(this, main.split(input))) {
// writer.println("CONNECT_DENIED");
// break;
// }
// }
// switch (input) {
// case "EXIT":
// socket.close();
// break;
// default:
// writer.println("Client info - " + socket.getRemoteSocketAddress().toString());
// console.out("Socket "+socketID+" Message",input);
// }
// }
// } catch (IOException e) {
// console.out("Server Error:", e.toString());
// } finally {
// close();
// try {
// socket.close();
// console.out("Server", "Socket "+socketID+" disconnected!");
// } catch (IOException e) {
// console.out("Server","System socket closing error!");
// }catch (NullPointerException e){
//
// }
//
// }
// }

55
src/console.java

@ -53,6 +53,7 @@ public class console extends Thread{
try{
line = in.readLine();
Integer sid;
Integer id;
Pattern main = Pattern.compile(" ");
String[] sx = main.split(line);
switch (sx[0]){
@ -73,28 +74,60 @@ public class console extends Thread{
break;
case "/kick":
sid = Integer.valueOf(sx[1]);
if(socketInfo.findSocket(Integer.valueOf(sx[1])) != -1){
if(socketInfo.findSocket.bySID(Integer.valueOf(sx[1])) != -1){
socketInfo.getClient(sid).close();
}
break;
case "/help":
console.out("Server","/kick [socketid] для отключения сокета от сервера");
console.out("Server","/list для отображения всех клиентов");
console.out("Server","/info [socketid] для отображения полной информации о данном клиенте");
console.out("Server","/send [socketid] [msg] отладочная команда");
console.out("Server","ctServer Proto Defend Development 2016");
break;
case "/send":
sid = socketInfo.findSocket(Integer.valueOf(sx[1]));
sid = socketInfo.findSocket.bySID(Integer.valueOf(sx[1]));
if(sid != -1){
String msg = "";
String msg = "";
for (int i = 2; i < sx.length ; i++) {
msg += " ";
msg += sx[i];
}
socketInfo.getClient(Integer.valueOf(sx[1])).sendSocket(msg);
socketInfo.getClient(Integer.valueOf(sx[1])).sendSocket(msg);
}
break;
case "/info":
if(sx.length < 3){
console.out("Server","/info [pid/sid] <id>");
} else {
switch (sx[1]) {
case "sid":
sid = Integer.valueOf(sx[2]);
id = socketInfo.findSocket.bySID(sid);
if(id == -1){break;}
console.socket(sid,"VKID " + socketInfo.VKID.get(id)
+ " PROTOCOL " + socketInfo.PROTOCOL.get(id)
+ " EVENT " + socketInfo.EVENT.get(id)
+ " PARTYID " + socketInfo.PARTYID.get(id)
+ " TRACKDURATION " + socketInfo.DURATION.get(id));
break;
case "pid":
ArrayList<Integer> a = socketInfo.findSocket.byPID(Integer.valueOf(sx[2]));
for (int i = 0; i < a.size(); i++) {
id = a.get(i);
console.socket(socketInfo.SOCKETID.get(id),"VKID " + socketInfo.VKID.get(id)
+ " PROTOCOL " + socketInfo.PROTOCOL.get(id)
+ " EVENT " + socketInfo.EVENT.get(id)
+ " PARTYID " + socketInfo.PARTYID.get(id)
+ " TRACKDURATION " + socketInfo.DURATION.get(id));
}
break;
default:
console.out("Server", "/info [pid/sid] <id>");
break;
}
}
break;
case "/help":
console.out("Server","/kick [socketid] для отключения сокета от сервера");
console.out("Server","/list для отображения всех клиентов");
console.out("Server","/info pid/sid [id] для отображения полной информации о данном клиенте");
console.out("Server","/send [socketid] [msg] отладочная команда");
console.out("Server","ctServer Proto Defend Development 2016");
break;
default: console.out("Server","Введите /help для помощи");
}

4
src/ctServer.java

@ -5,11 +5,11 @@ public class ctServer {
public static void main(String[] args) throws IOException{
socketInfo.init();
// socketID = 0;
//TODO: оптимизация идентификаторов сокетов
try{
new console().consoleListner();
}
catch (IOException e){
catch (IOException ignored){
}
int port = 80;

6
src/eventHandler.java

@ -0,0 +1,6 @@
/**
* Created by itsmy on 15.08.2016.
*/
public class eventHandler extends client {
}

46
src/socketInfo.java

@ -1,4 +1,7 @@
import com.sun.istack.internal.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.function.BooleanSupplier;
/**
@ -46,7 +49,7 @@ public class socketInfo {
}
public static void close(Integer sid){
int s = findSocket(sid);
int s = findSocket.bySID(sid);
VKID.remove(s);
ROLE.remove(s);
PROTOCOL.remove(s);
@ -67,25 +70,38 @@ public class socketInfo {
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;
public static class findSocket extends socketInfo{
public static Integer bySID(Integer s){
int id = -1;
for (int i = 0; i < SOCKETID.size(); i++) {
if(SOCKETID.get(i).equals(s)){
id = i;
}
}
return id;
}
public static ArrayList<Integer> byPID(Integer pid){
ArrayList<Integer> a = new ArrayList<>();
for (int i = 0; i < PARTYID.size(); i++) {
if(PARTYID.get(i).equals(pid)){
a.add(i);
}
}
return a;
}
return id;
}
public static void setHttpAuth(Integer sid, Boolean b){
int s = findSocket(sid);
int s = findSocket.bySID(sid);
if(s == -1) return;
httpAuth.set(s, b);
}
public static void checkProtocol(Integer sid){
int s = findSocket(sid);
int s = findSocket.bySID(sid);
if(s == -1) return;
if(PROTOCOL.get(s).equals("1A")){
protocolAuth.set(s, true);
@ -93,31 +109,31 @@ public class socketInfo {
}
public static Boolean isProtocolAuth(Integer sid){
int s = findSocket(sid);
int s = findSocket.bySID(sid);
if(s == -1) return Boolean.FALSE;
return protocolAuth.get(s);
}
public static Boolean isHttpAuth(Integer sid){
int s = findSocket(sid);
int s = findSocket.bySID(sid);
if(s == -1) return Boolean.FALSE;
return httpAuth.get(s);
}
public static Boolean isOnline(Integer sid){
int s = findSocket(sid);
int s = findSocket.bySID(sid);
if(s == -1) return Boolean.FALSE;
return ONLINE.get(s);
}
public static client getClient(Integer sid){
int s = findSocket(sid);
int s = findSocket.bySID(sid);
if(s == -1) return null;
return socketInfo.CLIENT.get(s);
}
public static void setString(Integer sid, String keyName, String value) {
int s = findSocket(sid);
int s = findSocket.bySID(sid);
if (s == -1) return;
switch (keyName) {
case "fn":
@ -133,7 +149,7 @@ public class socketInfo {
}
public static void setInteger(Integer sid, String keyName, Integer value){
int s = findSocket(sid);
int s = findSocket.bySID(sid);
if(s == -1) return;
switch (keyName){
case "vk_id": VKID.set(s, value);

Loading…
Cancel
Save