From 99ba5777336324ceddfb539029213b9826a7b850 Mon Sep 17 00:00:00 2001 From: User Date: Mon, 19 Jul 2021 21:25:07 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D1=8C=D1=82?= =?UTF-8?q?=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 13 + .old 0/dtlauncher-client/App.config | 6 + .old 0/dtlauncher-client/Program.cs | 153 ++++ .../Properties/AssemblyInfo.cs | 35 + .../dtlauncher-client.csproj | 52 ++ .old 0/dtlauncher-server/App.config | 6 + .old 0/dtlauncher-server/Program.cs | 145 ++++ .../Properties/AssemblyInfo.cs | 35 + .../dtlauncher-server.csproj | 56 ++ .old 0/dtlauncher.sln | 36 + .old 1/dtlauncher-client/App.config | 6 + .old 1/dtlauncher-client/Program.cs | 161 ++++ .../Properties/AssemblyInfo.cs | 35 + .old 1/dtlauncher-client/bin.rar | Bin 0 -> 18214 bytes .../dtlauncher-client.csproj | 52 ++ .old 1/dtlauncher-client/dtlauncher/DTLib.dll | Bin 0 -> 25088 bytes .../dtlauncher-client/dtlauncher/client.cfg | 2 + .../dtlauncher/dtlauncher-client.exe | Bin 0 -> 7680 bytes .../dtlauncher/gui/files_tab.gui | 61 ++ .../dtlauncher/gui/servers_tab.gui | 61 ++ .../dtlauncher/gui/settings_tab.gui | 61 ++ .../dtlauncher/gui/start_tab.gui | 61 ++ .old 1/dtlauncher-server/App.config | 6 + .old 1/dtlauncher-server/Program.cs | 151 ++++ .../Properties/AssemblyInfo.cs | 35 + .../dtlauncher-server.csproj | 56 ++ .old 1/dtlauncher.sln | 36 + .old 2/DTLib/ColoredText.cs | 122 ++++ .old 2/DTLib/ConsoleGUI.cs | 257 +++++++ .old 2/DTLib/DTLib.csproj | 49 ++ .old 2/DTLib/FileWork.cs | 43 ++ .old 2/DTLib/NetWork.cs | 370 ++++++++++ .old 2/DTLib/Properties/AssemblyInfo.cs | 35 + .old 2/DTLib/SecureHasher.cs | 97 +++ .old 2/DTLib/SecureRandom.cs | 37 + .old 2/DTLib/SimpleConverter.cs | 82 +++ .old 2/DTLib/TImer.cs | 31 + .old 2/dtlauncher-client-win/App.config | 6 + .old 2/dtlauncher-client-win/App.xaml | 9 + .old 2/dtlauncher-client-win/App.xaml.cs | 11 + .../dtlauncher-client-win/LauncherWindow.xaml | 12 + .../LauncherWindow.xaml.cs | 46 ++ .old 2/dtlauncher-client-win/LoginWindow.xaml | 37 + .../dtlauncher-client-win/LoginWindow.xaml.cs | 143 ++++ .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-client-win.csproj | 104 +++ .old 2/dtlauncher-server-win/App.config | 6 + .old 2/dtlauncher-server-win/App.xaml | 96 +++ .old 2/dtlauncher-server-win/App.xaml.cs | 11 + .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-server-win/ServerWindow.xaml | 12 + .../ServerWindow.xaml.cs | 117 +++ .../dtlauncher-server-win.csproj | 124 ++++ .old 2/dtlauncher.sln | 36 + .old 3/DTLib/ColoredText.cs | 122 ++++ .old 3/DTLib/ConsoleGUI.cs | 257 +++++++ .old 3/DTLib/DTLib.csproj | 49 ++ .old 3/DTLib/FileWork.cs | 43 ++ .old 3/DTLib/NetWork.cs | 370 ++++++++++ .old 3/DTLib/Properties/AssemblyInfo.cs | 35 + .old 3/DTLib/SecureHasher.cs | 97 +++ .old 3/DTLib/SecureRandom.cs | 37 + .old 3/DTLib/SimpleConverter.cs | 82 +++ .old 3/DTLib/TImer.cs | 31 + .old 3/dtlauncher-client-win/App.config | 6 + .old 3/dtlauncher-client-win/App.xaml | 166 +++++ .old 3/dtlauncher-client-win/App.xaml.cs | 11 + .../dtlauncher-client-win/LauncherWindow.xaml | 91 +++ .../LauncherWindow.xaml.cs | 91 +++ .old 3/dtlauncher-client-win/LoginWindow.xaml | 42 ++ .../dtlauncher-client-win/LoginWindow.xaml.cs | 144 ++++ .../dtlauncher-client-win/ProgramLabel.xaml | 33 + .../ProgramLabel.xaml.cs | 75 ++ .old 3/dtlauncher-client-win/ProgramName.xaml | 19 + .../dtlauncher-client-win/ProgramName.xaml.cs | 15 + .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../divinity2devcut_background.jpg | Bin 0 -> 447894 bytes .../dtlauncher-client-win.csproj | 124 ++++ .old 3/dtlauncher-server-win/App.config | 6 + .old 3/dtlauncher-server-win/App.xaml | 94 +++ .old 3/dtlauncher-server-win/App.xaml.cs | 11 + .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-server-win/ServerWindow.xaml | 12 + .../ServerWindow.xaml.cs | 116 +++ .../dtlauncher-server-win.csproj | 127 ++++ .old 3/dtlauncher.sln | 36 + .old 4/DTLib/Color.cs | 57 ++ .old 4/DTLib/ColoredConsole.cs | 83 +++ .old 4/DTLib/CompressedArray.cs | 72 ++ .old 4/DTLib/DTLib.csproj | 52 ++ .old 4/DTLib/FileWork.cs | 167 +++++ .old 4/DTLib/Hasher.cs | 59 ++ .old 4/DTLib/NetWork.cs | 290 ++++++++ .old 4/DTLib/Properties/AssemblyInfo.cs | 35 + .old 4/DTLib/PublicLog.cs | 16 + .old 4/DTLib/SecureRandom.cs | 37 + .old 4/DTLib/SimpleConverter.cs | 88 +++ .old 4/DTLib/TImer.cs | 36 + .old 4/DTLib/XXHash.cs | 180 +++++ .old 4/dtlauncher-client-win/App.config | 6 + .old 4/dtlauncher-client-win/App.xaml | 166 +++++ .old 4/dtlauncher-client-win/App.xaml.cs | 11 + .../dtlauncher-client-win/LauncherWindow.xaml | 98 +++ .../LauncherWindow.xaml.cs | 102 +++ .old 4/dtlauncher-client-win/LoginWindow.xaml | 45 ++ .../dtlauncher-client-win/LoginWindow.xaml.cs | 142 ++++ .../dtlauncher-client-win/ProgramLabel.xaml | 33 + .../ProgramLabel.xaml.cs | 115 +++ .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-client-win.csproj | 125 ++++ .old 4/dtlauncher-client-win/dtscript.ico | Bin 0 -> 9662 bytes .old 4/dtlauncher-server-win/App.config | 6 + .old 4/dtlauncher-server-win/App.xaml | 166 +++++ .old 4/dtlauncher-server-win/App.xaml.cs | 11 + .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-server-win/ServerWindow.xaml | 37 + .../ServerWindow.xaml.cs | 117 +++ .../dtlauncher-server-win.csproj | 127 ++++ .old 4/dtlauncher.sln | 40 + .old 4/dtscript/App.config | 6 + .old 4/dtscript/MainClass.cs | 48 ++ .old 4/dtscript/Properties/AssemblyInfo.cs | 35 + .old 4/dtscript/ScriptRunner.cs | 441 +++++++++++ .old 4/dtscript/dtscript.csproj | 96 +++ .old 4/dtscript/dtscript.ico | Bin 0 -> 9662 bytes .old 4/dtscript/dtscript.sln | 26 + .old 5/dtlauncher-client-win/App.config | 6 + .old 5/dtlauncher-client-win/App.xaml | 166 +++++ .old 5/dtlauncher-client-win/App.xaml.cs | 11 + .../dtlauncher-client-win/LauncherWindow.xaml | 98 +++ .../LauncherWindow.xaml.cs | 102 +++ .old 5/dtlauncher-client-win/LoginWindow.xaml | 42 ++ .../dtlauncher-client-win/LoginWindow.xaml.cs | 122 ++++ .../dtlauncher-client-win/ProgramLabel.xaml | 33 + .../ProgramLabel.xaml.cs | 115 +++ .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-client-win.csproj | 125 ++++ .old 5/dtlauncher-client-win/dtscript.ico | Bin 0 -> 9662 bytes .old 5/dtlauncher-server-win/App.config | 6 + .old 5/dtlauncher-server-win/Program.cs | 121 +++ .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-server-win.csproj | 111 +++ .old 5/dtlauncher.sln | 45 ++ .old 5/updater/App.config | 6 + .old 5/updater/Program.cs | 39 + .old 5/updater/Properties/AssemblyInfo.cs | 36 + .old 5/updater/dtlib/ColoredConsole.cs | 83 +++ .old 5/updater/dtlib/FileWork.cs | 168 +++++ .old 5/updater/dtlib/Hasher.cs | 59 ++ .old 5/updater/dtlib/NetWork.cs | 277 +++++++ .old 5/updater/dtlib/SimpleConverter.cs | 88 +++ .old 5/updater/dtlib/TImer.cs | 36 + .old 5/updater/dtlib/XXHash.cs | 180 +++++ .old 5/updater/updater.csproj | 82 +++ .old 6/DTLib/Color.cs | 23 + .old 6/DTLib/ColoredConsole.cs | 73 ++ .old 6/DTLib/CompressedArray.cs | 72 ++ .old 6/DTLib/DTLib.csproj | 55 ++ .old 6/DTLib/Dtsod.cs | 174 +++++ .old 6/DTLib/FileWork.cs | 202 +++++ .old 6/DTLib/Hasher.cs | 61 ++ .old 6/DTLib/NetWork.cs | 180 +++++ .old 6/DTLib/Properties/AssemblyInfo.cs | 35 + .old 6/DTLib/PublicLog.cs | 16 + .old 6/DTLib/SecureRandom.cs | 37 + .old 6/DTLib/SimpleConverter.cs | 161 ++++ .old 6/DTLib/TImer.cs | 36 + .old 6/DTLib/XXHash.cs | 180 +++++ .old 6/DTLib/cs9somefix.cs | 8 + .old 6/dtlauncher-client-win/App.config | 6 + .old 6/dtlauncher-client-win/App.xaml | 165 +++++ .old 6/dtlauncher-client-win/App.xaml.cs | 35 + .../dtlauncher-client-win/LauncherWindow.xaml | 98 +++ .../LauncherWindow.xaml.cs | 102 +++ .old 6/dtlauncher-client-win/LoginWindow.xaml | 42 ++ .../dtlauncher-client-win/LoginWindow.xaml.cs | 122 ++++ .../dtlauncher-client-win/ProgramLabel.xaml | 33 + .../ProgramLabel.xaml.cs | 115 +++ .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-client-win.csproj | 129 ++++ .old 6/dtlauncher-client-win/dtscript.ico | Bin 0 -> 9662 bytes .old 6/dtlauncher-server-win/App.config | 6 + .../dtlauncher-server-win/DtlauncherServer.cs | 167 +++++ .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-server-win.csproj | 112 +++ .old 6/dtlauncher.sln | 44 ++ .old 6/dtscript/App.config | 6 + .old 6/dtscript/MainClass.cs | 53 ++ .old 6/dtscript/Properties/AssemblyInfo.cs | 35 + .old 6/dtscript/ScriptRunner.cs | 447 ++++++++++++ .old 6/dtscript/dtscript.csproj | 98 +++ .old 6/dtscript/dtscript.ico | Bin 0 -> 9662 bytes .old 6/dtscript/dtscript.sln | 26 + .old 6/dtscript/dtscript_doc.txt | 63 ++ .old 6/updater/App.config | 6 + .old 6/updater/Properties/AssemblyInfo.cs | 35 + .old 6/updater/Updater.cs | 110 +++ .old 6/updater/updater.csproj | 84 +++ dtlauncher-client-win/App.config | 6 + dtlauncher-client-win/App.xaml | 165 +++++ dtlauncher-client-win/App.xaml.cs | 36 + dtlauncher-client-win/LauncherWindow.xaml | 98 +++ dtlauncher-client-win/LauncherWindow.xaml.cs | 117 +++ dtlauncher-client-win/LoginWindow.xaml | 51 ++ dtlauncher-client-win/LoginWindow.xaml.cs | 153 ++++ dtlauncher-client-win/ProgramLabel.xaml | 33 + dtlauncher-client-win/ProgramLabel.xaml.cs | 118 +++ .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-client-win.csproj | 128 ++++ dtlauncher-client-win/logo-D.ico | Bin 0 -> 38078 bytes dtlauncher-server-win/App.config | 6 + dtlauncher-server-win/DtlauncherServer.cs | 221 ++++++ .../Properties/AssemblyInfo.cs | 53 ++ .../Properties/Resources.Designer.cs | 70 ++ .../Properties/Resources.resx | 117 +++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../dtlauncher-server-win.csproj | 112 +++ dtlauncher.sln | 55 ++ installer/dtlauncher/DTLib.dll | Bin 0 -> 30208 bytes installer/dtlauncher/dtlauncher.exe | Bin 0 -> 50688 bytes installer/dtlauncher/updater.dtsod | 2 + installer/installer.vdproj | 687 ++++++++++++++++++ updater/App.config | 6 + updater/Properties/AssemblyInfo.cs | 35 + updater/Updater.cs | 112 +++ updater/logo-D.ico | Bin 0 -> 38078 bytes updater/updater.csproj | 95 +++ 272 files changed, 19884 insertions(+) create mode 100644 .editorconfig create mode 100644 .old 0/dtlauncher-client/App.config create mode 100644 .old 0/dtlauncher-client/Program.cs create mode 100644 .old 0/dtlauncher-client/Properties/AssemblyInfo.cs create mode 100644 .old 0/dtlauncher-client/dtlauncher-client.csproj create mode 100644 .old 0/dtlauncher-server/App.config create mode 100644 .old 0/dtlauncher-server/Program.cs create mode 100644 .old 0/dtlauncher-server/Properties/AssemblyInfo.cs create mode 100644 .old 0/dtlauncher-server/dtlauncher-server.csproj create mode 100644 .old 0/dtlauncher.sln create mode 100644 .old 1/dtlauncher-client/App.config create mode 100644 .old 1/dtlauncher-client/Program.cs create mode 100644 .old 1/dtlauncher-client/Properties/AssemblyInfo.cs create mode 100644 .old 1/dtlauncher-client/bin.rar create mode 100644 .old 1/dtlauncher-client/dtlauncher-client.csproj create mode 100644 .old 1/dtlauncher-client/dtlauncher/DTLib.dll create mode 100644 .old 1/dtlauncher-client/dtlauncher/client.cfg create mode 100644 .old 1/dtlauncher-client/dtlauncher/dtlauncher-client.exe create mode 100644 .old 1/dtlauncher-client/dtlauncher/gui/files_tab.gui create mode 100644 .old 1/dtlauncher-client/dtlauncher/gui/servers_tab.gui create mode 100644 .old 1/dtlauncher-client/dtlauncher/gui/settings_tab.gui create mode 100644 .old 1/dtlauncher-client/dtlauncher/gui/start_tab.gui create mode 100644 .old 1/dtlauncher-server/App.config create mode 100644 .old 1/dtlauncher-server/Program.cs create mode 100644 .old 1/dtlauncher-server/Properties/AssemblyInfo.cs create mode 100644 .old 1/dtlauncher-server/dtlauncher-server.csproj create mode 100644 .old 1/dtlauncher.sln create mode 100644 .old 2/DTLib/ColoredText.cs create mode 100644 .old 2/DTLib/ConsoleGUI.cs create mode 100644 .old 2/DTLib/DTLib.csproj create mode 100644 .old 2/DTLib/FileWork.cs create mode 100644 .old 2/DTLib/NetWork.cs create mode 100644 .old 2/DTLib/Properties/AssemblyInfo.cs create mode 100644 .old 2/DTLib/SecureHasher.cs create mode 100644 .old 2/DTLib/SecureRandom.cs create mode 100644 .old 2/DTLib/SimpleConverter.cs create mode 100644 .old 2/DTLib/TImer.cs create mode 100644 .old 2/dtlauncher-client-win/App.config create mode 100644 .old 2/dtlauncher-client-win/App.xaml create mode 100644 .old 2/dtlauncher-client-win/App.xaml.cs create mode 100644 .old 2/dtlauncher-client-win/LauncherWindow.xaml create mode 100644 .old 2/dtlauncher-client-win/LauncherWindow.xaml.cs create mode 100644 .old 2/dtlauncher-client-win/LoginWindow.xaml create mode 100644 .old 2/dtlauncher-client-win/LoginWindow.xaml.cs create mode 100644 .old 2/dtlauncher-client-win/Properties/AssemblyInfo.cs create mode 100644 .old 2/dtlauncher-client-win/Properties/Resources.Designer.cs create mode 100644 .old 2/dtlauncher-client-win/Properties/Resources.resx create mode 100644 .old 2/dtlauncher-client-win/Properties/Settings.Designer.cs create mode 100644 .old 2/dtlauncher-client-win/Properties/Settings.settings create mode 100644 .old 2/dtlauncher-client-win/dtlauncher-client-win.csproj create mode 100644 .old 2/dtlauncher-server-win/App.config create mode 100644 .old 2/dtlauncher-server-win/App.xaml create mode 100644 .old 2/dtlauncher-server-win/App.xaml.cs create mode 100644 .old 2/dtlauncher-server-win/Properties/AssemblyInfo.cs create mode 100644 .old 2/dtlauncher-server-win/Properties/Resources.Designer.cs create mode 100644 .old 2/dtlauncher-server-win/Properties/Resources.resx create mode 100644 .old 2/dtlauncher-server-win/Properties/Settings.Designer.cs create mode 100644 .old 2/dtlauncher-server-win/Properties/Settings.settings create mode 100644 .old 2/dtlauncher-server-win/ServerWindow.xaml create mode 100644 .old 2/dtlauncher-server-win/ServerWindow.xaml.cs create mode 100644 .old 2/dtlauncher-server-win/dtlauncher-server-win.csproj create mode 100644 .old 2/dtlauncher.sln create mode 100644 .old 3/DTLib/ColoredText.cs create mode 100644 .old 3/DTLib/ConsoleGUI.cs create mode 100644 .old 3/DTLib/DTLib.csproj create mode 100644 .old 3/DTLib/FileWork.cs create mode 100644 .old 3/DTLib/NetWork.cs create mode 100644 .old 3/DTLib/Properties/AssemblyInfo.cs create mode 100644 .old 3/DTLib/SecureHasher.cs create mode 100644 .old 3/DTLib/SecureRandom.cs create mode 100644 .old 3/DTLib/SimpleConverter.cs create mode 100644 .old 3/DTLib/TImer.cs create mode 100644 .old 3/dtlauncher-client-win/App.config create mode 100644 .old 3/dtlauncher-client-win/App.xaml create mode 100644 .old 3/dtlauncher-client-win/App.xaml.cs create mode 100644 .old 3/dtlauncher-client-win/LauncherWindow.xaml create mode 100644 .old 3/dtlauncher-client-win/LauncherWindow.xaml.cs create mode 100644 .old 3/dtlauncher-client-win/LoginWindow.xaml create mode 100644 .old 3/dtlauncher-client-win/LoginWindow.xaml.cs create mode 100644 .old 3/dtlauncher-client-win/ProgramLabel.xaml create mode 100644 .old 3/dtlauncher-client-win/ProgramLabel.xaml.cs create mode 100644 .old 3/dtlauncher-client-win/ProgramName.xaml create mode 100644 .old 3/dtlauncher-client-win/ProgramName.xaml.cs create mode 100644 .old 3/dtlauncher-client-win/Properties/AssemblyInfo.cs create mode 100644 .old 3/dtlauncher-client-win/Properties/Resources.Designer.cs create mode 100644 .old 3/dtlauncher-client-win/Properties/Resources.resx create mode 100644 .old 3/dtlauncher-client-win/Properties/Settings.Designer.cs create mode 100644 .old 3/dtlauncher-client-win/Properties/Settings.settings create mode 100644 .old 3/dtlauncher-client-win/divinity2devcut_background.jpg create mode 100644 .old 3/dtlauncher-client-win/dtlauncher-client-win.csproj create mode 100644 .old 3/dtlauncher-server-win/App.config create mode 100644 .old 3/dtlauncher-server-win/App.xaml create mode 100644 .old 3/dtlauncher-server-win/App.xaml.cs create mode 100644 .old 3/dtlauncher-server-win/Properties/AssemblyInfo.cs create mode 100644 .old 3/dtlauncher-server-win/Properties/Resources.Designer.cs create mode 100644 .old 3/dtlauncher-server-win/Properties/Resources.resx create mode 100644 .old 3/dtlauncher-server-win/Properties/Settings.Designer.cs create mode 100644 .old 3/dtlauncher-server-win/Properties/Settings.settings create mode 100644 .old 3/dtlauncher-server-win/ServerWindow.xaml create mode 100644 .old 3/dtlauncher-server-win/ServerWindow.xaml.cs create mode 100644 .old 3/dtlauncher-server-win/dtlauncher-server-win.csproj create mode 100644 .old 3/dtlauncher.sln create mode 100644 .old 4/DTLib/Color.cs create mode 100644 .old 4/DTLib/ColoredConsole.cs create mode 100644 .old 4/DTLib/CompressedArray.cs create mode 100644 .old 4/DTLib/DTLib.csproj create mode 100644 .old 4/DTLib/FileWork.cs create mode 100644 .old 4/DTLib/Hasher.cs create mode 100644 .old 4/DTLib/NetWork.cs create mode 100644 .old 4/DTLib/Properties/AssemblyInfo.cs create mode 100644 .old 4/DTLib/PublicLog.cs create mode 100644 .old 4/DTLib/SecureRandom.cs create mode 100644 .old 4/DTLib/SimpleConverter.cs create mode 100644 .old 4/DTLib/TImer.cs create mode 100644 .old 4/DTLib/XXHash.cs create mode 100644 .old 4/dtlauncher-client-win/App.config create mode 100644 .old 4/dtlauncher-client-win/App.xaml create mode 100644 .old 4/dtlauncher-client-win/App.xaml.cs create mode 100644 .old 4/dtlauncher-client-win/LauncherWindow.xaml create mode 100644 .old 4/dtlauncher-client-win/LauncherWindow.xaml.cs create mode 100644 .old 4/dtlauncher-client-win/LoginWindow.xaml create mode 100644 .old 4/dtlauncher-client-win/LoginWindow.xaml.cs create mode 100644 .old 4/dtlauncher-client-win/ProgramLabel.xaml create mode 100644 .old 4/dtlauncher-client-win/ProgramLabel.xaml.cs create mode 100644 .old 4/dtlauncher-client-win/Properties/AssemblyInfo.cs create mode 100644 .old 4/dtlauncher-client-win/Properties/Resources.Designer.cs create mode 100644 .old 4/dtlauncher-client-win/Properties/Resources.resx create mode 100644 .old 4/dtlauncher-client-win/Properties/Settings.Designer.cs create mode 100644 .old 4/dtlauncher-client-win/Properties/Settings.settings create mode 100644 .old 4/dtlauncher-client-win/dtlauncher-client-win.csproj create mode 100644 .old 4/dtlauncher-client-win/dtscript.ico create mode 100644 .old 4/dtlauncher-server-win/App.config create mode 100644 .old 4/dtlauncher-server-win/App.xaml create mode 100644 .old 4/dtlauncher-server-win/App.xaml.cs create mode 100644 .old 4/dtlauncher-server-win/Properties/AssemblyInfo.cs create mode 100644 .old 4/dtlauncher-server-win/Properties/Resources.Designer.cs create mode 100644 .old 4/dtlauncher-server-win/Properties/Resources.resx create mode 100644 .old 4/dtlauncher-server-win/Properties/Settings.Designer.cs create mode 100644 .old 4/dtlauncher-server-win/Properties/Settings.settings create mode 100644 .old 4/dtlauncher-server-win/ServerWindow.xaml create mode 100644 .old 4/dtlauncher-server-win/ServerWindow.xaml.cs create mode 100644 .old 4/dtlauncher-server-win/dtlauncher-server-win.csproj create mode 100644 .old 4/dtlauncher.sln create mode 100644 .old 4/dtscript/App.config create mode 100644 .old 4/dtscript/MainClass.cs create mode 100644 .old 4/dtscript/Properties/AssemblyInfo.cs create mode 100644 .old 4/dtscript/ScriptRunner.cs create mode 100644 .old 4/dtscript/dtscript.csproj create mode 100644 .old 4/dtscript/dtscript.ico create mode 100644 .old 4/dtscript/dtscript.sln create mode 100644 .old 5/dtlauncher-client-win/App.config create mode 100644 .old 5/dtlauncher-client-win/App.xaml create mode 100644 .old 5/dtlauncher-client-win/App.xaml.cs create mode 100644 .old 5/dtlauncher-client-win/LauncherWindow.xaml create mode 100644 .old 5/dtlauncher-client-win/LauncherWindow.xaml.cs create mode 100644 .old 5/dtlauncher-client-win/LoginWindow.xaml create mode 100644 .old 5/dtlauncher-client-win/LoginWindow.xaml.cs create mode 100644 .old 5/dtlauncher-client-win/ProgramLabel.xaml create mode 100644 .old 5/dtlauncher-client-win/ProgramLabel.xaml.cs create mode 100644 .old 5/dtlauncher-client-win/Properties/AssemblyInfo.cs create mode 100644 .old 5/dtlauncher-client-win/Properties/Resources.Designer.cs create mode 100644 .old 5/dtlauncher-client-win/Properties/Resources.resx create mode 100644 .old 5/dtlauncher-client-win/Properties/Settings.Designer.cs create mode 100644 .old 5/dtlauncher-client-win/Properties/Settings.settings create mode 100644 .old 5/dtlauncher-client-win/dtlauncher-client-win.csproj create mode 100644 .old 5/dtlauncher-client-win/dtscript.ico create mode 100644 .old 5/dtlauncher-server-win/App.config create mode 100644 .old 5/dtlauncher-server-win/Program.cs create mode 100644 .old 5/dtlauncher-server-win/Properties/AssemblyInfo.cs create mode 100644 .old 5/dtlauncher-server-win/Properties/Resources.Designer.cs create mode 100644 .old 5/dtlauncher-server-win/Properties/Resources.resx create mode 100644 .old 5/dtlauncher-server-win/Properties/Settings.Designer.cs create mode 100644 .old 5/dtlauncher-server-win/Properties/Settings.settings create mode 100644 .old 5/dtlauncher-server-win/dtlauncher-server-win.csproj create mode 100644 .old 5/dtlauncher.sln create mode 100644 .old 5/updater/App.config create mode 100644 .old 5/updater/Program.cs create mode 100644 .old 5/updater/Properties/AssemblyInfo.cs create mode 100644 .old 5/updater/dtlib/ColoredConsole.cs create mode 100644 .old 5/updater/dtlib/FileWork.cs create mode 100644 .old 5/updater/dtlib/Hasher.cs create mode 100644 .old 5/updater/dtlib/NetWork.cs create mode 100644 .old 5/updater/dtlib/SimpleConverter.cs create mode 100644 .old 5/updater/dtlib/TImer.cs create mode 100644 .old 5/updater/dtlib/XXHash.cs create mode 100644 .old 5/updater/updater.csproj create mode 100644 .old 6/DTLib/Color.cs create mode 100644 .old 6/DTLib/ColoredConsole.cs create mode 100644 .old 6/DTLib/CompressedArray.cs create mode 100644 .old 6/DTLib/DTLib.csproj create mode 100644 .old 6/DTLib/Dtsod.cs create mode 100644 .old 6/DTLib/FileWork.cs create mode 100644 .old 6/DTLib/Hasher.cs create mode 100644 .old 6/DTLib/NetWork.cs create mode 100644 .old 6/DTLib/Properties/AssemblyInfo.cs create mode 100644 .old 6/DTLib/PublicLog.cs create mode 100644 .old 6/DTLib/SecureRandom.cs create mode 100644 .old 6/DTLib/SimpleConverter.cs create mode 100644 .old 6/DTLib/TImer.cs create mode 100644 .old 6/DTLib/XXHash.cs create mode 100644 .old 6/DTLib/cs9somefix.cs create mode 100644 .old 6/dtlauncher-client-win/App.config create mode 100644 .old 6/dtlauncher-client-win/App.xaml create mode 100644 .old 6/dtlauncher-client-win/App.xaml.cs create mode 100644 .old 6/dtlauncher-client-win/LauncherWindow.xaml create mode 100644 .old 6/dtlauncher-client-win/LauncherWindow.xaml.cs create mode 100644 .old 6/dtlauncher-client-win/LoginWindow.xaml create mode 100644 .old 6/dtlauncher-client-win/LoginWindow.xaml.cs create mode 100644 .old 6/dtlauncher-client-win/ProgramLabel.xaml create mode 100644 .old 6/dtlauncher-client-win/ProgramLabel.xaml.cs create mode 100644 .old 6/dtlauncher-client-win/Properties/AssemblyInfo.cs create mode 100644 .old 6/dtlauncher-client-win/Properties/Resources.Designer.cs create mode 100644 .old 6/dtlauncher-client-win/Properties/Resources.resx create mode 100644 .old 6/dtlauncher-client-win/Properties/Settings.Designer.cs create mode 100644 .old 6/dtlauncher-client-win/Properties/Settings.settings create mode 100644 .old 6/dtlauncher-client-win/dtlauncher-client-win.csproj create mode 100644 .old 6/dtlauncher-client-win/dtscript.ico create mode 100644 .old 6/dtlauncher-server-win/App.config create mode 100644 .old 6/dtlauncher-server-win/DtlauncherServer.cs create mode 100644 .old 6/dtlauncher-server-win/Properties/AssemblyInfo.cs create mode 100644 .old 6/dtlauncher-server-win/Properties/Resources.Designer.cs create mode 100644 .old 6/dtlauncher-server-win/Properties/Resources.resx create mode 100644 .old 6/dtlauncher-server-win/Properties/Settings.Designer.cs create mode 100644 .old 6/dtlauncher-server-win/Properties/Settings.settings create mode 100644 .old 6/dtlauncher-server-win/dtlauncher-server-win.csproj create mode 100644 .old 6/dtlauncher.sln create mode 100644 .old 6/dtscript/App.config create mode 100644 .old 6/dtscript/MainClass.cs create mode 100644 .old 6/dtscript/Properties/AssemblyInfo.cs create mode 100644 .old 6/dtscript/ScriptRunner.cs create mode 100644 .old 6/dtscript/dtscript.csproj create mode 100644 .old 6/dtscript/dtscript.ico create mode 100644 .old 6/dtscript/dtscript.sln create mode 100644 .old 6/dtscript/dtscript_doc.txt create mode 100644 .old 6/updater/App.config create mode 100644 .old 6/updater/Properties/AssemblyInfo.cs create mode 100644 .old 6/updater/Updater.cs create mode 100644 .old 6/updater/updater.csproj create mode 100644 dtlauncher-client-win/App.config create mode 100644 dtlauncher-client-win/App.xaml create mode 100644 dtlauncher-client-win/App.xaml.cs create mode 100644 dtlauncher-client-win/LauncherWindow.xaml create mode 100644 dtlauncher-client-win/LauncherWindow.xaml.cs create mode 100644 dtlauncher-client-win/LoginWindow.xaml create mode 100644 dtlauncher-client-win/LoginWindow.xaml.cs create mode 100644 dtlauncher-client-win/ProgramLabel.xaml create mode 100644 dtlauncher-client-win/ProgramLabel.xaml.cs create mode 100644 dtlauncher-client-win/Properties/AssemblyInfo.cs create mode 100644 dtlauncher-client-win/Properties/Resources.Designer.cs create mode 100644 dtlauncher-client-win/Properties/Resources.resx create mode 100644 dtlauncher-client-win/Properties/Settings.Designer.cs create mode 100644 dtlauncher-client-win/Properties/Settings.settings create mode 100644 dtlauncher-client-win/dtlauncher-client-win.csproj create mode 100644 dtlauncher-client-win/logo-D.ico create mode 100644 dtlauncher-server-win/App.config create mode 100644 dtlauncher-server-win/DtlauncherServer.cs create mode 100644 dtlauncher-server-win/Properties/AssemblyInfo.cs create mode 100644 dtlauncher-server-win/Properties/Resources.Designer.cs create mode 100644 dtlauncher-server-win/Properties/Resources.resx create mode 100644 dtlauncher-server-win/Properties/Settings.Designer.cs create mode 100644 dtlauncher-server-win/Properties/Settings.settings create mode 100644 dtlauncher-server-win/dtlauncher-server-win.csproj create mode 100644 dtlauncher.sln create mode 100644 installer/dtlauncher/DTLib.dll create mode 100644 installer/dtlauncher/dtlauncher.exe create mode 100644 installer/dtlauncher/updater.dtsod create mode 100644 installer/installer.vdproj create mode 100644 updater/App.config create mode 100644 updater/Properties/AssemblyInfo.cs create mode 100644 updater/Updater.cs create mode 100644 updater/logo-D.ico create mode 100644 updater/updater.csproj diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..b872f8f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +[*.cs] + +# IDE0058: Значение выражения никогда не используется +dotnet_diagnostic.IDE0058.severity = none + +# IDE0008: Использование явного типа +dotnet_diagnostic.IDE0008.severity = none + +# IDE0040: Добавьте модификаторы доступности +dotnet_diagnostic.IDE0040.severity = none + +# Default severity for analyzer diagnostics with category 'Style' +dotnet_analyzer_diagnostic.category-Style.severity = none diff --git a/.old 0/dtlauncher-client/App.config b/.old 0/dtlauncher-client/App.config new file mode 100644 index 0000000..193aecc --- /dev/null +++ b/.old 0/dtlauncher-client/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.old 0/dtlauncher-client/Program.cs b/.old 0/dtlauncher-client/Program.cs new file mode 100644 index 0000000..211d681 --- /dev/null +++ b/.old 0/dtlauncher-client/Program.cs @@ -0,0 +1,153 @@ +using DTLib; +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Threading; + +namespace dtlauncher_client +{ + class Program + { + static ConsoleGUI gui = new ConsoleGUI(90, 30); + static Socket mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + static string logfile = $"logs\\client-{DateTime.UtcNow}.log".Replace(':', '-').Replace(' ', '_'); + static bool enter = false; + + static void Main() + { + try + { + Console.Title = "dtlauncher"; + gui.ReadFromFile("gui\\start_tab.gui"); + gui.ShowAll(); + NetWork.Log += Log; + // подключение к серверу + /*mainSocket.Connect(new IPEndPoint(Dns.GetHostAddresses( + FileWork.ReadFromConfig("client.cfg", "central server ip"))[0], + Convert.ToInt32(FileWork.ReadFromConfig("client.cfg", "central server port")))); + mainSocket.ReceiveTimeout = 5000; + gui.ChangeLine(3, 4, 'y', "trying to connect to the main server..."); + string recieved = mainSocket.Request("new user connection try").ToStr(); + if (recieved != "new user connection created") + throw new Exception("can't connect to the main server"); + gui.ChangeLine(3, 5, 'g', "connected to the main server"); + //NetWork.RequestServersList(mainSocket); + gui.ResetCursor();*/ + Input(); + } + catch (Exception e) + { + Log("r", "\nerror:\n" + e.Message + "\n" + e.StackTrace + '\n'); + Console.ReadLine(); + } + } + + static string inputText = ""; + static void Input() + { + while (true) + { + ConsoleKeyInfo readKeyResult = Console.ReadKey(true); // Считывание ввода + switch (readKeyResult.Key) + { + case ConsoleKey.F1: + gui.ReadFromFile("gui\\files_tab.gui"); + for (sbyte i = 3; i < 89; i++) + gui.ChangeColor(i, 1, 'w'); + for (sbyte i = 3; i < 13; i++) + gui.ChangeColor(i, 1, 'c'); + gui.UpdateAll(); + break; + case ConsoleKey.F2: + gui.ReadFromFile("gui\\servers_tab.gui"); + for (sbyte i = 3; i < 89; i++) + gui.ChangeColor(i, 1, 'w'); + for (sbyte i = 19; i < 31; i++) + gui.ChangeColor(i, 1, 'c'); + gui.UpdateAll(); + break; + case ConsoleKey.F3: + gui.ReadFromFile("gui\\settings_tab.gui"); + for (sbyte i = 3; i < 89; i++) + gui.ChangeColor(i, 1, 'w'); + for (sbyte i = 37; i < 50; i++) + gui.ChangeColor(i, 1, 'c'); + gui.UpdateAll(); + break; + case ConsoleKey.F4: + return; + case ConsoleKey.F5: + Console.Clear(); + gui.ShowAll(); + break; + case ConsoleKey.F6: + break; + /*case ConsoleKey.F7: + break; + case ConsoleKey.F8: + break; + case ConsoleKey.F9: + break; + case ConsoleKey.F10: + break; + case ConsoleKey.F11: + break; + case ConsoleKey.F12: + break; + case ConsoleKey.UpArrow: + break; + case ConsoleKey.DownArrow: + break; + case ConsoleKey.LeftArrow: + break; + case ConsoleKey.RightArrow: + break; + case ConsoleKey.PageUp: + break; + case ConsoleKey.PageDown: + break; + case ConsoleKey.Home: + break; + case ConsoleKey.End: + break; + case ConsoleKey.Escape: + break; + case ConsoleKey.Enter: + enter = true; + break; + case ConsoleKey.Backspace: + if (inputText.Length > 0) + inputText = inputText.Remove(inputText.Length - 1); + break;*/ + default: + inputText += readKeyResult.KeyChar; + break; + } + } + } + static void Log(string color, string msg) + { + ColoredText.WriteColored(color, msg); + FileWork.Log(logfile, msg); + } + + static void Log(string[] input) + { + if (input.Length % 2 == 0) + { + ColoredText.WriteColored(input); + string str = ""; + for (ushort i = 0; i < input.Length; i++) + { + str += input[++i]; + } + FileWork.Log(logfile, str); + } + else + { + throw new Exception("error in Log(): every text string must have color string before"); + } + } + } +} diff --git a/.old 0/dtlauncher-client/Properties/AssemblyInfo.cs b/.old 0/dtlauncher-client/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a46c9ad --- /dev/null +++ b/.old 0/dtlauncher-client/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("dtlauncher-client")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("dtlauncher-client")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("eab95dec-0d9b-4e17-8875-0159358ac240")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/.old 0/dtlauncher-client/dtlauncher-client.csproj b/.old 0/dtlauncher-client/dtlauncher-client.csproj new file mode 100644 index 0000000..541ab01 --- /dev/null +++ b/.old 0/dtlauncher-client/dtlauncher-client.csproj @@ -0,0 +1,52 @@ + + + + + Debug + AnyCPU + {EAB95DEC-0D9B-4E17-8875-0159358AC240} + Exe + dtlauncher_client + dtlauncher-client + v4.8 + 512 + true + true + + + AnyCPU + none + true + bin\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + {ce793497-2d5c-42d8-b311-e9b32af9cdfb} + DTLib + + + + + del /f /q dtlauncher-client.exe.config + + \ No newline at end of file diff --git a/.old 0/dtlauncher-server/App.config b/.old 0/dtlauncher-server/App.config new file mode 100644 index 0000000..193aecc --- /dev/null +++ b/.old 0/dtlauncher-server/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.old 0/dtlauncher-server/Program.cs b/.old 0/dtlauncher-server/Program.cs new file mode 100644 index 0000000..f0e9b2d --- /dev/null +++ b/.old 0/dtlauncher-server/Program.cs @@ -0,0 +1,145 @@ +using DTLib; +using System; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using static DTLib.NetWork; + +namespace dtlauncher_server +{ + class Program + { + static ConsoleGUI gui = new ConsoleGUI(90, 30); + static string logfile = $"logs\\client-{DateTime.UtcNow}.log".Replace(':', '-').Replace(' ', '_'); + static Socket mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + //static Dictionary users = new Dictionary(); + + static void Main(string[] args) + { + while (true) + { + try + { + Console.Title = "dtlauncher server"; + gui.ReadFromFile("gui\\main.gui"); + gui.ShowAll(); + NetWork.Log += Log; + Log("b", $"<{FileWork.ReadFromConfig("server.cfg", "server ip")}> : <{Convert.ToInt32(FileWork.ReadFromConfig("server.cfg", "server port"))}>\n"); + mainSocket.Bind(new IPEndPoint(IPAddress.Parse( + FileWork.ReadFromConfig("server.cfg", "server ip")), + Convert.ToInt32(FileWork.ReadFromConfig("server.cfg", "server port")))); + Log("g", "server started succesfully\n"); + //Thread userCheckThread = new Thread(CloseUnusedUserThreads); + //userCheckThread.Start(); + try + { + mainSocket.Listen(200); + while (true) + { + var userSocket = mainSocket.Accept(); + var userThread = new Thread(new ParameterizedThreadStart(UserStart)); + //users.Add(userSocket, userThread); + userThread.Start(userSocket); + } + } + catch (Exception ex) + { + Log("r", $"handler error:\n message:\n {ex.Message}\nmethod:\n {ex.TargetSite}\n"); + } + } + catch (Exception ex) + { + if (mainSocket.IsBound) mainSocket.CloseSocket(); + Log("r", $"Main() error:\n message:\n {ex.Message}\nmethod:\n {ex.TargetSite}\n"); + } + Thread.Sleep(1500); + } + } + + static void Log(string color, string msg) + { + ColoredText.WriteColored(color, msg); + FileWork.Log(logfile, msg); + } + + static void Log(string[] input) + { + if (input.Length % 2 == 0) + { + ColoredText.WriteColored(input); + string str = ""; + for (ushort i = 0; i < input.Length; i++) + { + str += input[++i]; + } + FileWork.Log(logfile, str); + } + else + { + throw new Exception("error in Log(): every text string must have color string before"); + } + } + + static void UserStart(dynamic _handlerSocket) + { + Socket handlerSocket = (Socket)_handlerSocket; + try + { + string recieved = handlerSocket.GetData().ToStr(); + if (recieved == "new user connection try") + { + handlerSocket.Send("new user connection created".ToBytes()); + while (true) + { + recieved = handlerSocket.GetData().ToStr(); + switch (recieved) + { + // ответ на NetWork.Ping() + case "ping": + handlerSocket.Send("pong".ToBytes()); + break; + // отправка списка активных серверов + case "requesting servers list": + + break; + case "requesting file": + recieved = handlerSocket.GetData().ToStr(); + break; + default: + throw new Exception("unknown request: " + recieved); + } + } + } + + else + { + throw new Exception("incorrect connection try"); + } + + } + catch (Exception ex) + { + Log("y", $"UserStart() error:\n message:\n {ex.Message}\n"); + handlerSocket.CloseSocket(); + Thread.CurrentThread.Abort(); + } + } + + /*static void CloseUnusedUserThreads() + { + while (true) + { + foreach (Socket s in users.Keys) + { + if (!NetWork.Ping(s)) + { + Log("y", "closing unused user thread\n"); + users[s].Abort(); + users.Remove(s); + } + } + Thread.Sleep(300000); + } + }*/ + } +} diff --git a/.old 0/dtlauncher-server/Properties/AssemblyInfo.cs b/.old 0/dtlauncher-server/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..13ba653 --- /dev/null +++ b/.old 0/dtlauncher-server/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("dtlauncher-server")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("dtlauncher-server")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("4f183e7c-a23d-4f5f-933c-f9f32bdc403a")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/.old 0/dtlauncher-server/dtlauncher-server.csproj b/.old 0/dtlauncher-server/dtlauncher-server.csproj new file mode 100644 index 0000000..38fca35 --- /dev/null +++ b/.old 0/dtlauncher-server/dtlauncher-server.csproj @@ -0,0 +1,56 @@ + + + + + Debug + AnyCPU + {4F183E7C-A23D-4F5F-933C-F9F32BDC403A} + Exe + dtlauncher_server + dtlauncher-server + v4.8 + 512 + true + true + + + AnyCPU + none + true + bin\ + DEBUG;TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + {ce793497-2d5c-42d8-b311-e9b32af9cdfb} + DTLib + + + + + + + + + del /f /q dtlauncher-server.exe.config + + \ No newline at end of file diff --git a/.old 0/dtlauncher.sln b/.old 0/dtlauncher.sln new file mode 100644 index 0000000..85d73f0 --- /dev/null +++ b/.old 0/dtlauncher.sln @@ -0,0 +1,36 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30907.101 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dtlauncher-client", "dtlauncher-client\dtlauncher-client.csproj", "{EAB95DEC-0D9B-4E17-8875-0159358AC240}" + ProjectSection(ProjectDependencies) = postProject + {CE793497-2D5C-42D8-B311-E9B32AF9CDFB} = {CE793497-2D5C-42D8-B311-E9B32AF9CDFB} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dtlauncher-server", "dtlauncher-server\dtlauncher-server.csproj", "{4F183E7C-A23D-4F5F-933C-F9F32BDC403A}" + ProjectSection(ProjectDependencies) = postProject + {CE793497-2D5C-42D8-B311-E9B32AF9CDFB} = {CE793497-2D5C-42D8-B311-E9B32AF9CDFB} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DTLib", "..\DTLib\DTLib.csproj", "{CE793497-2D5C-42D8-B311-E9B32AF9CDFB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Build|Any CPU = Build|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EAB95DEC-0D9B-4E17-8875-0159358AC240}.Build|Any CPU.ActiveCfg = Build|Any CPU + {EAB95DEC-0D9B-4E17-8875-0159358AC240}.Build|Any CPU.Build.0 = Build|Any CPU + {4F183E7C-A23D-4F5F-933C-F9F32BDC403A}.Build|Any CPU.ActiveCfg = Build|Any CPU + {4F183E7C-A23D-4F5F-933C-F9F32BDC403A}.Build|Any CPU.Build.0 = Build|Any CPU + {CE793497-2D5C-42D8-B311-E9B32AF9CDFB}.Build|Any CPU.ActiveCfg = Build|Any CPU + {CE793497-2D5C-42D8-B311-E9B32AF9CDFB}.Build|Any CPU.Build.0 = Build|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E6569C0C-DD32-4F7D-AD4C-DBC5434D2F8C} + EndGlobalSection +EndGlobal diff --git a/.old 1/dtlauncher-client/App.config b/.old 1/dtlauncher-client/App.config new file mode 100644 index 0000000..193aecc --- /dev/null +++ b/.old 1/dtlauncher-client/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.old 1/dtlauncher-client/Program.cs b/.old 1/dtlauncher-client/Program.cs new file mode 100644 index 0000000..6969987 --- /dev/null +++ b/.old 1/dtlauncher-client/Program.cs @@ -0,0 +1,161 @@ +using DTLib; +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using static DTLib.NetWork; + +namespace dtlauncher_client +{ + class Program + { + static DTLib.ConsoleGUI.Window gui = new DTLib.ConsoleGUI.Window(90, 30); + static Socket mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + static string logfile = $"logs\\client-{DateTime.Now}.log".Replace(':', '-').Replace(' ', '_'); + //static bool enter = false; + //static string inputText = ""; + + static void Main() + { + try + { + Console.Title = "dtlauncher"; + gui.ReadFromFile("gui\\start_tab.gui"); + gui.ShowAll(); + NetWork.Log += Log; + Log("b", "launcher is starting\n"); + // подключение к серверу + mainSocket.Connect(new IPEndPoint(Dns.GetHostAddresses( + FileWork.ReadFromConfig("client.cfg", "central server ip"))[0], + Convert.ToInt32(FileWork.ReadFromConfig("client.cfg", "central server port")))); + mainSocket.ReceiveTimeout = 2000; + gui.ChangeLine(3, 4, 'y', "trying to connect to the main server..."); + string recieved = mainSocket.Request("new user connection try").ToStr(); + if (recieved != "new user connection created") + throw new Exception("can't connect to the main server"); + gui.ChangeLine(3, 5, 'g', "connected to the main server"); + //NetWork.RequestServersList(mainSocket); + gui.ResetCursor(); + Input(); + } + catch (System.Threading.ThreadAbortException) + { + + } + catch (Exception e) + { + Log("r", "\nerror:\n" + e.Message + "\n" + e.StackTrace + '\n'); + Console.ResetColor(); + Console.ReadLine(); + } + } + + static void Input() + { + while (true) + { + ConsoleKeyInfo readKeyResult = Console.ReadKey(true); // Считывание ввода + switch (readKeyResult.Key) + { + case ConsoleKey.F1: + gui.ReadFromFile("gui\\files_tab.gui"); + for (sbyte i = 3; i < 89; i++) + gui.ChangeColor(i, 1, 'w'); + for (sbyte i = 3; i < 13; i++) + gui.ChangeColor(i, 1, 'c'); + gui.UpdateAll(); + break; + case ConsoleKey.F2: + gui.ReadFromFile("gui\\servers_tab.gui"); + for (sbyte i = 3; i < 89; i++) + gui.ChangeColor(i, 1, 'w'); + for (sbyte i = 19; i < 31; i++) + gui.ChangeColor(i, 1, 'c'); + gui.UpdateAll(); + break; + case ConsoleKey.F3: + gui.ReadFromFile("gui\\settings_tab.gui"); + for (sbyte i = 3; i < 89; i++) + gui.ChangeColor(i, 1, 'w'); + for (sbyte i = 37; i < 50; i++) + gui.ChangeColor(i, 1, 'c'); + gui.UpdateAll(); + break; + case ConsoleKey.F4: + Log("m", SimpleConverter.Truncate(9 / 4).ToString()); + break; + case ConsoleKey.F5: + Console.Clear(); + gui.ShowAll(); + break; + case ConsoleKey.F6: + mainSocket.FSP_Download(new FSP_FileObject("share\\file.arc", "downloads\\file.arc")); + break; + case ConsoleKey.F7: + break; + /*case ConsoleKey.F8: + break; + case ConsoleKey.F9: + break; + case ConsoleKey.F10: + break; + case ConsoleKey.F11: + break; + case ConsoleKey.F12: + break; + case ConsoleKey.UpArrow: + break; + case ConsoleKey.DownArrow: + break; + case ConsoleKey.LeftArrow: + break; + case ConsoleKey.RightArrow: + break; + case ConsoleKey.PageUp: + break; + case ConsoleKey.PageDown: + break; + case ConsoleKey.Home: + break; + case ConsoleKey.End: + break; + case ConsoleKey.Escape: + break; + case ConsoleKey.Enter: + enter = true; + break; + case ConsoleKey.Backspace: + if (inputText.Length > 0) + inputText = inputText.Remove(inputText.Length - 1); + break;*/ + default: + //inputText += readKeyResult.KeyChar; + break; + } + } + } + static void Log(string color, string msg) + { + ColoredText.WriteColored(color, msg); + FileWork.Log(logfile, msg); + } + + static void Log(string[] input) + { + if (input.Length % 2 == 0) + { + ColoredText.WriteColored(input); + string str = ""; + for (ushort i = 0; i < input.Length; i++) + { + str += input[++i]; + } + FileWork.Log(logfile, str); + } + else + { + throw new Exception("error in Log(): every text string must have color string before"); + } + } + } +} diff --git a/.old 1/dtlauncher-client/Properties/AssemblyInfo.cs b/.old 1/dtlauncher-client/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a46c9ad --- /dev/null +++ b/.old 1/dtlauncher-client/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("dtlauncher-client")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("dtlauncher-client")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("eab95dec-0d9b-4e17-8875-0159358ac240")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/.old 1/dtlauncher-client/bin.rar b/.old 1/dtlauncher-client/bin.rar new file mode 100644 index 0000000000000000000000000000000000000000..80669e73271762c32bf6608041fed69237c3d851 GIT binary patch literal 18214 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 n_;TjwL9u7&4&PDLk!jnspfWMVWr8TNJT{d literal 0 HcmV?d00001 diff --git a/.old 1/dtlauncher-client/dtlauncher-client.csproj b/.old 1/dtlauncher-client/dtlauncher-client.csproj new file mode 100644 index 0000000..541ab01 --- /dev/null +++ b/.old 1/dtlauncher-client/dtlauncher-client.csproj @@ -0,0 +1,52 @@ + + + + + Debug + AnyCPU + {EAB95DEC-0D9B-4E17-8875-0159358AC240} + Exe + dtlauncher_client + dtlauncher-client + v4.8 + 512 + true + true + + + AnyCPU + none + true + bin\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + {ce793497-2d5c-42d8-b311-e9b32af9cdfb} + DTLib + + + + + del /f /q dtlauncher-client.exe.config + + \ No newline at end of file diff --git a/.old 1/dtlauncher-client/dtlauncher/DTLib.dll b/.old 1/dtlauncher-client/dtlauncher/DTLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..9dcb486b8d0463bf27e2f86ab132ec5194643bf0 GIT binary patch literal 25088 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 z z4Kg;!*f3+mjO7{2Gj@crBd|Hd{bMDfKdgjPv9T}lY>$t`#;-$+ffH`ib?%~ewiXEM zVASoAXde5LPww-}LBAZv@(9KjC}ln`@0Uk{e|`N`yJmF0bUgT})qU@(dp>-TVaHbL zc2u`RhTUj^N}4wEgKh_PdzNX(#vTaTzE@GX09PBXHMj~fgs=+0QmE9GSjCu}TH;j9 zy>6SjZE#0VFgV3?5aq;Cw^`ChV-%hih8Ej~$wVk@3lNq4=hjhAJ~tdfoT+2gkQ1YA5o7+Gh4T;-%nK*r$!gPQ=8IPx~sSmw&)caEqSL# zZ}BZX{Q*W!{*s>B@E*)t_E-63wHSyu&+$hp7rteKiC=b06L}$BW?KQgwmIRmk6$$Q zKi4xJFH#fB;@?+R+&(<$?apL2Kn{Xc{J3orTm5@Qp) zBlgPJ$g@?aKl{wcsN+@SOUuE(LSmwND*wzq)p0oNb7J{N-t^ zNXYWVA63c=-k?le6>3=kw>vDg3&%tcdejX^4~~rd7=}ORORF8I<%47nhgp8;kVb7* z>WMyOUInEZY$`waIaAXzk>UGA^^fn$;RC#Z#Qso+SU!C6!wC6dDeBIvsN+W=Ssa_U zpk%q?r;|6)lI7i~!Q*H-Z1cTc+0Je}X4nLJKN_|nN0r;`LK_dQ%Cd`a!_ro|u!?cm z#rvUR8_V(yS*F60vhG$KmiaLW&tnX2_`%G8Nb?AXVL#sn4B&u{1GbEMA}>xSDUN^Y z83g|{g@6B7sYlI3KlJh=84oudMQ`CXEV1))zYo5VVLOX+QM`@hIWPL6Z0`c`<5skF zF@_QNFkdmk$~No|_TNO=$zGi7!)4N@3)b@Eq9M#f2HuDx@+NwJayz)-zt3k_{Ra8g Q<^O$5{{NQ#*LmRo0NU<35dZ)H literal 0 HcmV?d00001 diff --git a/.old 1/dtlauncher-client/dtlauncher/client.cfg b/.old 1/dtlauncher-client/dtlauncher/client.cfg new file mode 100644 index 0000000..4248c8f --- /dev/null +++ b/.old 1/dtlauncher-client/dtlauncher/client.cfg @@ -0,0 +1,2 @@ +central server ip: m1net.keenetic.pro +central server port: 20000 \ No newline at end of file diff --git a/.old 1/dtlauncher-client/dtlauncher/dtlauncher-client.exe b/.old 1/dtlauncher-client/dtlauncher/dtlauncher-client.exe new file mode 100644 index 0000000000000000000000000000000000000000..11715bb97962f11f783c7d96357e478d29f5a9e4 GIT binary patch literal 7680 zcmeHLdu$xXdH;5A??|4ci;t8Y{a8FVRL|S|jXl`ca#BPT*l+qS7P3(V_$cE=zcT=Mtm)-a~YY`Zwxo zH)5gBLhl)FpCI~GyozkD?ju@{{=30U}RtEK0K^zmBS~9?gDm2`7y^8g?-a0 zPV14F#T3U*C#@;0is>f6_TD&+LJmwae*H3c`!%uE}HG%1u z2s+TtBIn6)3luCdNxl&>@;K|kEKNLsQ5o_I;~r$(CYC@nlAAvsVZT_%!dNnZo}|AO zKna?E(?aBL<1YKNbz7z)uS3A!UgMBEG-yTGlGz;q@)UP(Lu>Ck`5v@`4BGFAq_<}Z z@_FDQX;$c)EC?49KfOCCHJwV^Kd=)c*|k~5(fRzY&V-MC^7Fg4$WDdWn((_6Vq1jB zcC!W^X%=}%zW%3lCt|K4W?Wu*h3-a-w2oeb-UoxQl#Jy*%^^sHgQHnw!$8tmtedRNZJFoO@E`+lTV%N|54 zb0pK_zkwTO=8|eGvDbIfT~lwmOXD{eh1Ze!1G(PZ{@(q4hZz$m7w}KO+Wi30Uc9kC z#?w6&O2;b%%t38fewlu5ik6^&r)~GibK@hZA42~nsP4YY^=FwE1rBQGH|Z=!^s=^} z*EO~dPu2W|Dz)5k4SxyC630^Ua7{F$N8TprhuXVh2^!EDF4LQ1ucI%3B|&#+|EMSE zD++!{!HmwBU#hmD+Jmayq2(d_AH+~9%mwY8;CwmuBRxqUG1_5&i}3>U=#2TA-VOc# zgLZo&ZmZz87mVQuI7vf=+`oMZ*STMgfy_ON{kAqICWS z?IhiAu+%qTD@8vchSvcT^aOPBs8zfW1s?k?^h3SR7*f47J+A*3rD>z_GT;a4Rhl%J z|6%%x{x~?kzBB4wHMn=OJL-K>e;U1u_1<%c@sq0e-YtW$YS1$gZOcgPadl46Xm5-& z^jS_IEf{Sy7}H>pxwir)X*b|4)TiKK1&0(ISMbdWUQo~i+(eFQUsbT8;Is5;%Fs1> z5F@-s-$QgiN1xPhr#}TXOMgLsMmc(cT>TLJJv|jWM*j*=Mv%S1*f_?k8Iyo-H#Eq8 zlV%`0W4xU-?Vi{iwQ1isTzX7dxkml)`7yFd0!{0!>YyaxcG?ZtP5pp-XdH0Af^SrCSmE!XGr&(N%v%+- zsQ}CsdKfUEPixy~iM~U|QuM}fwxg24dy9X){5$f+C3=@?XqEI;e9`<<9Mk@|7w+$; zqo@3Q*%gB{GCkqU=7xPQ@LhqoK0;72uzl$|votm}d1=I7@Lb=@(|PHHV%T?mDe`ny zlw8XeR1o2%snD{oOv_sLln4T=ASeK7xGV!-&NzWH>k0^2`7!Ai#~gHAzc9yj)w*Jz zc0yoAtWZol#fX2x@xXK0@(Lnq`o&pBO-euXZQq@)lmt!r_7xGT=7e7u5w0je2c0ZC z`JoVt-E0}X5iwgX6f8K>zzzGws&ft8P!NdXtXome+yE`DyeL}oN`o|QNyK3c2WYY2 zHxp{Ac)&A429EDFq-sP2V9qI&r4`}`)}m?!Yjq<^`LZ3Z zB@FweigXH>Z%8VZEU(g#Ia~HZq=Rk3&aC4)VG}hUx>nhX}oLFq6IvN~J zRf13yb5%{bYAmn`QM4Bk(uQeQphDRpj@Eg^kxq+H)#pliq;tr1Y3j1Sz%|Cj_m!$% zI%PRt-G-QRh0Woj(M4ORz||(%J)$!1&G|I!3QN+IQ!Kd{mNzeCC}ee(sTod~S-!-C z#UzgAFy-tJn4GPuX&-*qERHxTTOp14vd9(QUykOP**`!?nCNj` z%?9MCh{#29|c~p!+a?}dJH9X}diJR5Ij#)*=t&m^3H15Ho#gmX1wM}^n zamul%Odj@x%OtQPP`m+;oe5D_Aj1|-V0=Iu(8Eul z71pt#8mUP|SY>|pxM4R3|8Sn&$5IQRm8;a%+8m{uEwNoXbhG@t_X=1J0rNydHrgJ} zfb8G@#b534N-5S_8~jru z(Qd^}UAuKlE9vcme{s@NsZ@fr9qm_BU}{Yzz|elRm9@0r-(nh?VZ>4`r0MCO*_k&b&3gIcCJ?V&e&Xj zfO~DN{4=-BT5n}t`;HZ1FAe*0bWy0STpd7#$mOxsb6MU+<_XpMJy;z9UESGDq9uGe zqe;{&Iifo!61E1=mgP4)U|RkhL07vu}xupouN@W%QqZ+ zp*@ZMIN(_HwU)kP{QA}C#uDj@+C=zNsEPqtqf}A2A2M!6t)FAnb$lG_A+JC7xACHB@TsvjuGRFY;_1ce7X1#;EL!*ur{XaTYeoE`y+8VJ zLipm%v5IIVWxs;aT8b~Sjql{t4xXC55oidoL-HD3TH)u7PBA^;Y@9d<{l8T68(9?Ejgn4c-OW|5_}$#~C5) zqH9lpD`VFf$A}uoBy{?aE2}eABO*7Wi|ByL!%7{iv#~lC14?EHqvLa05wpuh^i0g` zm04UZ_sTHQzcsxSzy8*Dj~-tvx+c!ve4RYjg~h$g6rSzpacwx(b#8jBXQ0arLd(lr zuJ4IsT@?{@9Ut6~+>ktKRqwVYRCvL$uCnxw1h~5ut)Qpq*wPRDxvefm+?KKQtbmHqkD+RPfBMVcbZc^+1npP8~p$D6hU1pCb z#Jq4#m*KH4D;W3Y{VPItnPq3l#-$EnoU`0OR0pM$?7M+CHP`p8@crn%dJw>HbYCq) cgP7RAtzcoor&;>XrhWFevHl+a|1Sdn3n*4-ZvX%Q literal 0 HcmV?d00001 diff --git a/.old 1/dtlauncher-client/dtlauncher/gui/files_tab.gui b/.old 1/dtlauncher-client/dtlauncher/gui/files_tab.gui new file mode 100644 index 0000000..b04b4b6 --- /dev/null +++ b/.old 1/dtlauncher-client/dtlauncher/gui/files_tab.gui @@ -0,0 +1,61 @@ +┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ +┃ [F1] files ┃ [F2] servers ┃ [F3] settings ┃ [F4] exit ┃ [F5] refresh ┃ +┣━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━┫ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┃ │ ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww diff --git a/.old 1/dtlauncher-client/dtlauncher/gui/servers_tab.gui b/.old 1/dtlauncher-client/dtlauncher/gui/servers_tab.gui new file mode 100644 index 0000000..fa90ecc --- /dev/null +++ b/.old 1/dtlauncher-client/dtlauncher/gui/servers_tab.gui @@ -0,0 +1,61 @@ +┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ +┃ [F1] files ┃ [F2] servers ┃ [F3] settings ┃ [F4] exit ┃ [F5] refresh ┃ +┣━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━┫ +┃ name ping ┃ +┠────────────────────────────────────────────────────────────────────────────────────────┨ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww diff --git a/.old 1/dtlauncher-client/dtlauncher/gui/settings_tab.gui b/.old 1/dtlauncher-client/dtlauncher/gui/settings_tab.gui new file mode 100644 index 0000000..1730a22 --- /dev/null +++ b/.old 1/dtlauncher-client/dtlauncher/gui/settings_tab.gui @@ -0,0 +1,61 @@ +┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ +┃ [F1] files ┃ [F2] servers ┃ [F3] settings ┃ [F4] exit ┃ [F5] refresh ┃ +┣━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━┫ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww diff --git a/.old 1/dtlauncher-client/dtlauncher/gui/start_tab.gui b/.old 1/dtlauncher-client/dtlauncher/gui/start_tab.gui new file mode 100644 index 0000000..1730a22 --- /dev/null +++ b/.old 1/dtlauncher-client/dtlauncher/gui/start_tab.gui @@ -0,0 +1,61 @@ +┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ +┃ [F1] files ┃ [F2] servers ┃ [F3] settings ┃ [F4] exit ┃ [F5] refresh ┃ +┣━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━┫ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┃ ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww diff --git a/.old 1/dtlauncher-server/App.config b/.old 1/dtlauncher-server/App.config new file mode 100644 index 0000000..193aecc --- /dev/null +++ b/.old 1/dtlauncher-server/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.old 1/dtlauncher-server/Program.cs b/.old 1/dtlauncher-server/Program.cs new file mode 100644 index 0000000..ea60a46 --- /dev/null +++ b/.old 1/dtlauncher-server/Program.cs @@ -0,0 +1,151 @@ +using DTLib; +using System; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using static DTLib.NetWork; + +namespace dtlauncher_server +{ + class Program + { + //static ConsoleGUI gui = new ConsoleGUI(90, 30); + static string logfile = $"logs\\server-{DateTime.Now}.log".Replace(':', '-').Replace(' ', '_'); + static Socket mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + //static Dictionary users = new Dictionary(); + + static void Main(string[] args) + { + while (true) + { + try + { + Console.Title = "dtlauncher server"; + //gui.ReadFromFile("gui\\main.gui"); + //gui.ShowAll(); + NetWork.Log += Log; + Log("b", $"<{FileWork.ReadFromConfig("server.cfg", "server ip")}> : <{Convert.ToInt32(FileWork.ReadFromConfig("server.cfg", "server port"))}>\n"); + mainSocket.Bind(new IPEndPoint(IPAddress.Parse( + FileWork.ReadFromConfig("server.cfg", "server ip")), + Convert.ToInt32(FileWork.ReadFromConfig("server.cfg", "server port")))); + Log("g", "server started succesfully\n"); + //Thread userCheckThread = new Thread(CloseUnusedUserThreads); + //userCheckThread.Start(); + try + { + mainSocket.Listen(200); + while (true) + { + var userSocket = mainSocket.Accept(); + var userThread = new Thread(new ParameterizedThreadStart(UserStart)); + //users.Add(userSocket, userThread); + userThread.Start(userSocket); + } + } + catch (Exception ex) + { + Log("r", $"handler error:\n message:\n {ex.Message}\nmethod:\n {ex.TargetSite}\n"); + } + } + catch (ThreadAbortException) + { + + } + catch (Exception ex) + { + if (mainSocket.IsBound) mainSocket.CloseSocket(); + Log("r", $"Main() error:\n message:\n {ex.Message}\nmethod:\n {ex.TargetSite}\n"); + } + Thread.Sleep(1500); + } + } + + static void Log(string color, string msg) + { + ColoredText.WriteColored(color, "[" + DateTime.Now.ToString() + "]: " + msg); + FileWork.Log(logfile, msg); + } + + static void Log(string[] input) + { + if (input.Length % 2 == 0) + { + input[1] = "[" + DateTime.Now.ToString() + "]: " + input[1]; + ColoredText.WriteColored(input); + string str = ""; + for (ushort i = 0; i < input.Length; i++) + { + str += input[++i]; + } + FileWork.Log(logfile, str); + } + else + { + throw new Exception("error in Log(): every text string must have color string before"); + } + } + + static void UserStart(dynamic _handlerSocket) + { + Socket handlerSocket = (Socket)_handlerSocket; + Log("g", "user connected\n"); + try + { + string recieved = handlerSocket.GetData().ToStr(); + if (recieved == "new user connection try") + { + handlerSocket.Send("new user connection created".ToBytes()); + while (true) + { + recieved = handlerSocket.GetData().ToStr(); + switch (recieved) + { + // ответ на NetWork.Ping() + case "ping": + handlerSocket.Send("pong".ToBytes()); + break; + // отправка списка активных серверов + case "requesting servers list": + + break; + case "requesting file download": + handlerSocket.FSP_Upload(); + break; + default: + throw new Exception("unknown request: " + recieved); + } + } + } + + else + { + throw new Exception("incorrect connection try"); + } + + } + catch (Exception ex) + { + Log("y", $"UserStart() error:\n message:\n {ex.Message}\n{ex.StackTrace}\n"); + handlerSocket.CloseSocket(); + Thread.CurrentThread.Abort(); + } + } + + /*static void CloseUnusedUserThreads() + { + while (true) + { + foreach (Socket s in users.Keys) + { + if (!NetWork.Ping(s)) + { + Log("y", "closing unused user thread\n"); + users[s].Abort(); + users.Remove(s); + } + } + Thread.Sleep(300000); + } + }*/ + } +} diff --git a/.old 1/dtlauncher-server/Properties/AssemblyInfo.cs b/.old 1/dtlauncher-server/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..13ba653 --- /dev/null +++ b/.old 1/dtlauncher-server/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("dtlauncher-server")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("dtlauncher-server")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("4f183e7c-a23d-4f5f-933c-f9f32bdc403a")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/.old 1/dtlauncher-server/dtlauncher-server.csproj b/.old 1/dtlauncher-server/dtlauncher-server.csproj new file mode 100644 index 0000000..38fca35 --- /dev/null +++ b/.old 1/dtlauncher-server/dtlauncher-server.csproj @@ -0,0 +1,56 @@ + + + + + Debug + AnyCPU + {4F183E7C-A23D-4F5F-933C-F9F32BDC403A} + Exe + dtlauncher_server + dtlauncher-server + v4.8 + 512 + true + true + + + AnyCPU + none + true + bin\ + DEBUG;TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + {ce793497-2d5c-42d8-b311-e9b32af9cdfb} + DTLib + + + + + + + + + del /f /q dtlauncher-server.exe.config + + \ No newline at end of file diff --git a/.old 1/dtlauncher.sln b/.old 1/dtlauncher.sln new file mode 100644 index 0000000..85d73f0 --- /dev/null +++ b/.old 1/dtlauncher.sln @@ -0,0 +1,36 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30907.101 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dtlauncher-client", "dtlauncher-client\dtlauncher-client.csproj", "{EAB95DEC-0D9B-4E17-8875-0159358AC240}" + ProjectSection(ProjectDependencies) = postProject + {CE793497-2D5C-42D8-B311-E9B32AF9CDFB} = {CE793497-2D5C-42D8-B311-E9B32AF9CDFB} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dtlauncher-server", "dtlauncher-server\dtlauncher-server.csproj", "{4F183E7C-A23D-4F5F-933C-F9F32BDC403A}" + ProjectSection(ProjectDependencies) = postProject + {CE793497-2D5C-42D8-B311-E9B32AF9CDFB} = {CE793497-2D5C-42D8-B311-E9B32AF9CDFB} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DTLib", "..\DTLib\DTLib.csproj", "{CE793497-2D5C-42D8-B311-E9B32AF9CDFB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Build|Any CPU = Build|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EAB95DEC-0D9B-4E17-8875-0159358AC240}.Build|Any CPU.ActiveCfg = Build|Any CPU + {EAB95DEC-0D9B-4E17-8875-0159358AC240}.Build|Any CPU.Build.0 = Build|Any CPU + {4F183E7C-A23D-4F5F-933C-F9F32BDC403A}.Build|Any CPU.ActiveCfg = Build|Any CPU + {4F183E7C-A23D-4F5F-933C-F9F32BDC403A}.Build|Any CPU.Build.0 = Build|Any CPU + {CE793497-2D5C-42D8-B311-E9B32AF9CDFB}.Build|Any CPU.ActiveCfg = Build|Any CPU + {CE793497-2D5C-42D8-B311-E9B32AF9CDFB}.Build|Any CPU.Build.0 = Build|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E6569C0C-DD32-4F7D-AD4C-DBC5434D2F8C} + EndGlobalSection +EndGlobal diff --git a/.old 2/DTLib/ColoredText.cs b/.old 2/DTLib/ColoredText.cs new file mode 100644 index 0000000..a8147cd --- /dev/null +++ b/.old 2/DTLib/ColoredText.cs @@ -0,0 +1,122 @@ +using System; + +namespace DTLib +{ + // + // изменение цвета текста в консоли + // + static public class ColoredText + { + // присвоение цвета тексту + static public ConsoleColor ParseColor(string color) + { + switch (color) + { + //case "magneta": + case "m": + return ConsoleColor.Magenta; + //case "green": + case "g": + return ConsoleColor.Green; + //case "red": + case "r": + return ConsoleColor.Red; + //case "yellow": + case "y": + return ConsoleColor.Yellow; + //case "white": + case "w": + return ConsoleColor.White; + //case "blue": + case "b": + return ConsoleColor.Blue; + //case "cyan": + case "c": + return ConsoleColor.Cyan; + //case "gray": + case "a": + return ConsoleColor.Gray; + //case "black": + case "t": + return ConsoleColor.Black; + default: + throw new Exception("incorrect color: " + color); + } + } + + // вывод цветного текста + static public void WriteColored(string[] input) + { + if (input.Length % 2 == 0) + { + string str = ""; + for (ushort i = 0; i < input.Length; i++) + { + var c = ParseColor(input[i]); + if (Console.ForegroundColor != c) + { + Console.Write(str); + Console.ForegroundColor = c; + str = ""; + } + str += input[++i]; + } + if (str != "") + Console.Write(str); + } + else + { + throw new Exception("error in WriteColored(): every text string must have color string before"); + } + } + + /*static public void WriteColoredB(string[] input) + { + if (input.Length % 3 == 0) + { + string str = ""; + for (ushort i = 0; i < input.Length; i++) + { + var f = ParseColor(input[i]); + var b = ParseColor(input[++i]); + if (Console.ForegroundColor != f || Console.BackgroundColor != b) + { + Console.Write(str); + Console.ForegroundColor = f; + Console.BackgroundColor = b; + str = ""; + } + str += input[++i]; + } + if (str != "") + Console.Write(str); + } + else + { + throw new Exception("error in WriteColored(): every text string must have color string before"); + } + }*/ + + static public void WriteColored(string color, string text) + { + var c = ParseColor(color); + if (Console.ForegroundColor != c) + { + Console.ForegroundColor = c; + } + Console.Write(text); + } + + // ввод цветного текста + static public string ReadColored(string color) + { + var c = ParseColor(color); + if (Console.ForegroundColor != c) + { + Console.ForegroundColor = c; + } + string text = Console.ReadLine(); + return text; + } + } +} \ No newline at end of file diff --git a/.old 2/DTLib/ConsoleGUI.cs b/.old 2/DTLib/ConsoleGUI.cs new file mode 100644 index 0000000..7e4351d --- /dev/null +++ b/.old 2/DTLib/ConsoleGUI.cs @@ -0,0 +1,257 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; + +namespace DTLib.ConsoleGUI +{ + // + // создание gui из текста в консоли + // + public class Window + { + public int WindowWidth { get; private set; } + public int WindowHeight { get; private set; } + public char[,] Text; + public char[,] nowText; + public char[,] TextColors; + public char[,] nowTextColors; + + public Window(int windowWidth, int windowHeight) + { + WindowWidth = windowWidth; + WindowHeight = windowHeight; + Text = new char[windowWidth, windowHeight]; + TextColors = new char[windowWidth, windowHeight]; + nowText = new char[windowWidth, windowHeight]; + nowTextColors = new char[windowWidth, windowHeight]; + Console.WindowWidth = WindowWidth + 1; + Console.WindowHeight = WindowHeight + 1; + Console.BufferWidth = WindowWidth + 1; + Console.BufferHeight = WindowHeight + 1; + Console.OutputEncoding = SimpleConverter.UTF8; + Console.InputEncoding = SimpleConverter.UTF8; + Console.CursorVisible = false; + // заполнение массивов + for (sbyte y = 0; y < WindowHeight; y++) + { + for (sbyte x = 0; x < WindowWidth; x++) + { + Text[x, y] = ' '; + nowText[x, y] = ' '; + TextColors[x, y] = 'w'; + nowTextColors[x, y] = 'w'; + } + } + } + + // считывает массив символов из файла + // ширина и высота текста должны быть как указанные при инициализации объекта этого класса + public void ReadFromFile(string path) + { + var r = new StreamReader(path, SimpleConverter.UTF8); + char[] s = new char[1]; + // считывание текста + sbyte y = 0, x = 0; + r.Read(s, 0, 1); + while (!r.EndOfStream && y < WindowHeight) + { + if (x == WindowWidth) + { + r.Read(s, 0, 1); + x = 0; + y++; + } + else + { + Text[x, y] = s[0]; + x++; + } + r.Read(s, 0, 1); + } + r.Read(s, 0, 1); + // считывание цвета + // если не находит цвет в файле, оставляет старый + if (s[0] == '\n') + { + r.Read(s, 0, 1); + y = 0; + x = 0; + while (!r.EndOfStream && y < WindowHeight) + { + if (x == WindowWidth) + { + r.Read(s, 0, 1); + x = 0; + y++; + } + else + { + TextColors[x, y] = s[0]; + x++; + } + r.Read(s, 0, 1); + } + } + r.Close(); + } + + public void ResetCursor() + { + Console.SetCursorPosition(0, WindowHeight); + } + + // заменяет символ выведенный, использовать после ShowAll() + public void ChangeChar(sbyte x, sbyte y, char ch) + { + Text[x, y] = ch; + nowText[x, y] = ch; + Console.SetCursorPosition(x, y); + ColoredText.WriteColored(TextColors[x, y].ToString(), ch.ToString()); + } + + public void ChangeColor(sbyte x, sbyte y, char color) + { + TextColors[x, y] = color; + nowTextColors[x, y] = color; + Console.SetCursorPosition(x, y); + ColoredText.WriteColored(color.ToString(), Text[x, y].ToString()); + } + + public void ChangeCharAndColor(sbyte x, sbyte y, char color, char ch) + { + Text[x, y] = ch; + nowText[x, y] = ch; + TextColors[x, y] = color; + nowTextColors[x, y] = color; + Console.SetCursorPosition(x, y); + ColoredText.WriteColored(color.ToString(), ch.ToString()); + } + + public void ChangeLine(sbyte x, sbyte y, char color, string line) + { + Console.SetCursorPosition(x, y); + for (sbyte i = 0; i < line.Length; i++) + { + Text[x + i, y] = line[i]; + nowText[x + i, y] = line[i]; + TextColors[x + i, y] = color; + nowTextColors[x + i, y] = color; + } + ColoredText.WriteColored(color.ToString(), line); + } + + // выводит все символы + public void ShowAll() + { + var l = new List(); + for (sbyte y = 0; y < WindowHeight; y++) + { + for (sbyte x = 0; x < WindowWidth; x++) + { + l.Add(TextColors[x, y].ToString()); + l.Add(Text[x, y].ToString()); + nowText[x, y] = Text[x, y]; + nowTextColors[x, y] = TextColors[x, y]; + } + l.Add("w"); + l.Add("\n"); + } + ColoredText.WriteColored(l.ToArray()); + //Console.WriteLine(); + } + + public void UpdateAll() + { + for (sbyte y = 0; y < WindowHeight; y++) + { + for (sbyte x = 0; x < WindowWidth; x++) + { + Console.SetCursorPosition(x, y); + if (TextColors[x, y] != nowTextColors[x, y] || Text[x, y] != nowText[x, y]) + { + ColoredText.WriteColored(TextColors[x, y].ToString(), Text[x, y].ToString()); + nowText[x, y] = Text[x, y]; + nowTextColors[x, y] = TextColors[x, y]; + } + } + Console.Write('\n'); + } + } + + + + public async void ChangeCharAsync(sbyte x, sbyte y, char ch) + { + await Task.Run(() => + { + ChangeChar(x, y, ch); + }); + } + + public async void ChangeColorAsync(sbyte x, sbyte y, char color) + { + await Task.Run(() => + { + ChangeColor(x, y, color); + }); + } + + public async void ChangeCharAndColorAsync(sbyte x, sbyte y, char color, char ch) + { + await Task.Run(() => + { + ChangeCharAndColor(x, y, color, ch); + }); + } + + public async void ChangeLineAsync(sbyte x, sbyte y, char color, string line) + { + await Task.Run(() => + { + ChangeLine(x, y, color, line); + }); + } + + public async void ShowAllAsync() + { + await Task.Run(() => + { + ShowAll(); + }); + } + + public async void UpdateAllAsync() + { + await Task.Run(() => + { + UpdateAll(); + }); + } + } + + public class Tab + { + public Window Window; + public string Name; + + public Tab(Window window) + { + Window = window; + } + } + + public class Box + { + public Tab Tab; + public int LeftTopCorner, Width, Heigth; + + public Box(Tab tab, int leftTopCorner, int width, int heigth) + { + Tab = tab; + LeftTopCorner = leftTopCorner; + Width = width; + Heigth = heigth; + } + } +} diff --git a/.old 2/DTLib/DTLib.csproj b/.old 2/DTLib/DTLib.csproj new file mode 100644 index 0000000..99fb4aa --- /dev/null +++ b/.old 2/DTLib/DTLib.csproj @@ -0,0 +1,49 @@ + + + + + Debug + AnyCPU + {CE793497-2D5C-42D8-B311-E9B32AF9CDFB} + Library + Properties + DTLib + DTLib + v4.8 + 512 + true + + + none + true + bin\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.old 2/DTLib/FileWork.cs b/.old 2/DTLib/FileWork.cs new file mode 100644 index 0000000..8758afd --- /dev/null +++ b/.old 2/DTLib/FileWork.cs @@ -0,0 +1,43 @@ +using System; +using System.IO; + +namespace DTLib +{ + public static class FileWork + { + public static void Log(string logfile, string msg) + { + lock (new object()) + { + var st = File.Open(logfile, FileMode.Append); + var writer = new StreamWriter(st, SimpleConverter.UTF8); + string logMsg = $"[{DateTime.Now}]: {msg}"; + writer.Write(logMsg); + writer.Close(); + st.Close(); + } + } + + public static void DirExistenceCheck(string dir) + { + if (!Directory.Exists(dir)) + Directory.CreateDirectory(dir); + } + + static public string ReadFromConfig(string configfile, string key) + { + var reader = new StreamReader(configfile); + while (!reader.EndOfStream) + { + string st = reader.ReadLine(); + if (!st.StartsWith("#") && st.Contains(key + ": ")) + { + reader.Close(); + return st.Remove(0, st.IndexOf(key + ": ") + key.Length + 2); + } + } + reader.Close(); + return null; + } + } +} diff --git a/.old 2/DTLib/NetWork.cs b/.old 2/DTLib/NetWork.cs new file mode 100644 index 0000000..de6fd21 --- /dev/null +++ b/.old 2/DTLib/NetWork.cs @@ -0,0 +1,370 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Threading; + +namespace DTLib +{ + // + // некоторые полезные методы для работы с TCP сокетами (Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) + // + static public class NetWork + { + public delegate void LogDelegate(string[] msg); + // можно присвоить методы этому делегату чтоб выводить логи + static public LogDelegate Log; + static void LogSimple(string color, string msg) + { + Log(new string[] { color, msg }); + } + + // правильно закрывает сокет + static public void CloseSocket(this Socket socket) + { + socket.Shutdown(SocketShutdown.Both); + socket.Close(); + } + // получение информации (сокет должен быть в режиме Listen) + static public byte[] GetData(this Socket socket) + { + List output = new List(); + byte[] data = new byte[256]; + do + { + int amount = socket.Receive(data, data.Length, 0); + for (int i = 0; i < amount; i++) + output.Add(data[i]); + } + while (socket.Available > 0); + return output.ToArray(); + } + + // отправка запроса и получение ответа на него (сокет должен быть в режиме Listen) + static public byte[] Request(this Socket socket, string request) + { + socket.Send(request.ToBytes()); + return GetData(socket); + } + + static public byte[] Request(this Socket socket, byte[] request) + { + socket.Send(request); + return GetData(socket); + } + + /*static public MessageObject SplitMessage(byte[] recieved) + { + if (recieved.Length != 2284) throw new Exception("incorrect message length: " + recieved.Length); + var msg = new MessageObject(); + msg.Number = recieved[2]; + for (byte i = 3; i < 9; i++) + { + msg.Number = msg.Number * 10 + recieved[i]; + } + msg.Datetime = new DateTime(recieved[9] * 100 + recieved[10], recieved[11], recieved[12], + recieved[13], recieved[14], recieved[15]); + for (byte i = 16; i < 22; i++) + { + msg.Sender = msg.Sender * 10 + recieved[i]; + } + for (byte i = 22; i < 28; i++) + { + msg.Channel = msg.Channel * 10 + recieved[i]; + } + List text = new List(); + for (short i = 28; i < 2028; i++) + { + text.Add(recieved[i]); + } + msg.Text = text.ToStr(); + Log($"message <{msg.Number}> is had recieved"); + return msg; + }*/ + + static public void FtpDownload(string address, string login, string password, string outfile) + { + try + { + // debug + Log(new string[] { + "y", "file on server: <", "c",address, "y",">\nfile on client: <", + "c",outfile,"y", ">\n"}); + // создание запроса + // "ftp://m1net.keenetic.pro:20000/" + @infile + FtpWebRequest request = (FtpWebRequest)WebRequest.Create(address); + request.Credentials = new NetworkCredential(login, password); + request.Method = WebRequestMethods.Ftp.DownloadFile; + // получение ответа на запрос + FtpWebResponse response = (FtpWebResponse)request.GetResponse(); + Stream responseStream = response.GetResponseStream(); + FileStream fs = new FileStream(@Directory.GetCurrentDirectory() + '\\' + @outfile, FileMode.Create); + byte[] buffer = new byte[64]; + int size = 0; + + while ((size = responseStream.Read(buffer, 0, buffer.Length)) > 0) + { + fs.Write(buffer, 0, size); + } + fs.Close(); + response.Close(); + } + catch (WebException e) + { + throw new Exception("ftp error:\n" + ((FtpWebResponse)e.Response).StatusDescription + '\n'); + } + } + + static public ServerObject[] RequestServersList(Socket centralServer) + { + List servers = new List(); + string[] lines = Request(centralServer, "a356a4257dbf9d87c77cf87c3c694b30160b6ddfd3db82e7f62320207109e352").ToStr().Split('\n'); + for (int i = 0; i < lines.Length; i++) + { + string[] properties = lines[i].Split(','); + servers.Add(new ServerObject(properties[0], properties[1], properties[2])); + } + return servers.ToArray(); + } + + static public string PingIP(string address) + { + Process proc = new Process(); + proc.StartInfo.FileName = "cmd.exe"; + proc.StartInfo.Arguments = "/c @echo off & chcp 65001 >nul & ping -n 5 " + address; + proc.StartInfo.CreateNoWindow = true; + proc.StartInfo.UseShellExecute = false; + proc.StartInfo.RedirectStandardOutput = true; + proc.Start(); + var outStream = proc.StandardOutput; + var rezult = outStream.ReadToEnd(); + rezult = rezult.Remove(0, rezult.LastIndexOf('=') + 2); + return rezult.Remove(rezult.Length - 4); + } + + static public bool Ping(this Socket socket) + { + var rec = Request(socket, "ab53bf045004875fb17086f7f992b0514fb96c038f336e0bfc21609b20303f07"); + if (rec.ToStr() == "91b5c0383b75fb1708f00486f7f9b96c038ab3bfc21059b20176f603692b05e0") + { + return true; + } + else return false; + } + + static public void FSP_Download(this Socket mainSocket, FSP_FileObject file) + { + Log(new string[] { "c", $"remote socket accepted download request: {file.ClientFilePath}\n" }); + mainSocket.Send("requesting file download".ToBytes()); + string answ = mainSocket.GetPackageClear(64, "<", ">").ToStr(); + if (answ != "download request accepted") + throw new Exception($"FSP_Download() error: a download socket recieved an incorrect message: {answ}\n"); + mainSocket.SendPackage(276, file.ServerFilePath.ToBytes(), "", ""); + file.Size = Convert.ToUInt32(mainSocket.GetPackageClear(64, "", "").ToStr()); + file.Hash = mainSocket.GetPackageClear(64, "", ""); + mainSocket.SendPackage(64, "ready".ToBytes(), "<", ">"); + file.Stream = File.Open(file.ClientFilePath, FileMode.Create, FileAccess.Write); + int packagesCount = 0; + byte[] buffer = new byte[5120]; + var hashstr = file.Hash.HashToString(); + int fullPackagesCount = SimpleConverter.Truncate(file.Size / buffer.Length); + // рассчёт скорости + int seconds = 0; + var speedCounter = new Timer(true, 1000, () => + { + seconds++; + LogSimple("c", $"speed= {packagesCount * buffer.Length / (seconds * 1000)} kb/s\n"); + }); + // получение файла + for (; packagesCount < fullPackagesCount; packagesCount++) + { + string header = $"<{packagesCount}>"; + buffer = mainSocket.GetPackageRaw(buffer.Length + 2 + header.Length, header, "<>"); + file.Stream.Write(buffer, 0, buffer.Length); + file.Stream.Flush(); + } + Log(new string[] { "y", " full packages recieved\n" }); + speedCounter.Stop(); + // получение остатка + mainSocket.SendPackage(64, "remain request".ToBytes(), "<", ">"); + buffer = mainSocket.GetPackageRaw(Convert.ToInt32(file.Size - fullPackagesCount * 5120) + 16, "", ""); + file.Stream.Write(buffer, 0, buffer.Length); + file.Stream.Flush(); + file.Stream.Close(); + Log(new string[] { "g", $" file {file.ClientFilePath} ({packagesCount * 5120 + buffer.Length} of {file.Size} bytes) downloaded.\n" }); + } + + static public void FSP_Upload(this Socket mainSocket) + { + mainSocket.SendPackage(64, "download request accepted".ToBytes(), "<", ">"); + var file = new FSP_FileObject(); + file.ServerFilePath = mainSocket.GetPackageClear(276, "", "").ToStr(); + file.Size = new FileInfo(file.ServerFilePath).Length; + file.Hash = new SecureHasher(256).HashFile(file.ServerFilePath); + mainSocket.SendPackage(64, file.Size.ToString().ToBytes(), "", ""); + mainSocket.SendPackage(64, file.Hash, "", ""); + if (mainSocket.GetPackageClear(64, "<", ">").ToStr() != "ready") + throw new Exception("user socket isn't ready"); + Log(new string[] { "c", $"local socket accepted file download request: {file.ServerFilePath}\n" }); + file.Stream = new FileStream(file.ServerFilePath, FileMode.Open, FileAccess.Read); + byte[] buffer = new byte[5120]; + var hashstr = file.Hash.HashToString(); + int packagesCount = 0; + int seconds = 0; + // рассчёт скорости + var speedCounter = new Timer(true, 1000, () => + { + seconds++; + LogSimple("c", $"speed= {packagesCount * buffer.Length / (seconds * 1000)} kb/s\n"); + }); + // отправка файла + int fullPackagesCount = SimpleConverter.Truncate(file.Size / buffer.Length); + for (; packagesCount < fullPackagesCount; packagesCount++) + { + string header = $"<{packagesCount}>"; + file.Stream.Read(buffer, 0, buffer.Length); + try { mainSocket.SendPackage(buffer.Length + 2 + header.Length, buffer, header, "<>"); } + catch (Exception ex) { Log(new string[] { "r", "FSP_Upload() error: " + ex.Message + "\n" + ex.StackTrace + '\n' }); } + } + Log(new string[] { "y", " full packages send\n" }); + speedCounter.Stop(); + // досылка остатка + var req = mainSocket.GetPackageClear(64, "<", ">"); + if (req.ToStr() != "remain request") + { + throw new Exception("FSP_Upload() error: didn't get remain request"); + } + buffer = new byte[Convert.ToInt32(file.Size - file.Stream.Position)]; + file.Stream.Read(buffer, 0, buffer.Length); + mainSocket.SendPackage(buffer.Length + 16, buffer, "", ""); + file.Stream.Close(); + Log(new string[] { "g", $" file {file.ServerFilePath} ({packagesCount * 5120 + buffer.Length} of {file.Size} bytes) uploaded.\n" }); + } + + // убирает пустые байты в конце пакета + static public byte[] GetPackageClear(this Socket socket, int packageSize, string startsWith, string endsWith) + { + byte[] data = socket.GetPackageRaw(packageSize, startsWith, endsWith); + bool clean = false; + for (int i = 0; !clean; i++) + { + if (data[i] != 00) + { + if (i != 0) data = data.Remove(0, i); + clean = true; + } + else clean = i == data.Length - 1; + } + return data; + } + //не убирает пустые байты в конце пакета + static public byte[] GetPackageRaw(this Socket socket, int packageSize, string startsWith, string endsWith) + { + byte[] data = new byte[packageSize]; + //Log(new string[] { "y", $"GetPackage() packegesize=<","c",packageSize.ToString(), + // "y", "> startsWith=<", "c", startsWith, "y", "> endsWith=<", "c", endsWith, "y", ">\n" }); + for (short s = 0; s < 2000; s += 10) + { + if (socket.Available >= packageSize) + { + socket.Receive(data, packageSize, 0); + if (data.StartsWith(startsWith) & data.EndsWith(endsWith)) + { + data = data.Remove(0, startsWith.ToBytes().Length); + data = data.Remove(data.Length - endsWith.ToBytes().Length, endsWith.ToBytes().Length); + return data; + } + else throw new Exception($"GetPackage() error: has got incorrect package\n"); + } + else Thread.Sleep(10); + } + throw new Exception($"GetPackage() error: timeout\n"); + } + + static public void SendPackage(this Socket socket, int length, byte[] data, string startsWith, string endsWith) + { + var list = new List(); + list.AddRange(startsWith.ToBytes()); + int i = startsWith.ToBytes().Length + endsWith.ToBytes().Length + data.Length; + //Log(new string[] { "y", $"SendPackage() length=<","c",length.ToString(),"y", "> packegesize=<","c",i.ToString(), + // "y", "> data.Length=<","c",data.Length.ToString(), "y", "> startsWith=<", "c", startsWith, "y", "> endsWith=<", "c", endsWith, "y", ">\n" }); + if (i > length) throw new Exception("SendPackage() error: int length is too small\n"); + for (; i < length; i++) + list.Add(0); + list.AddRange(data); + list.AddRange(endsWith.ToBytes()); + socket.Send(list.ToArray()); + } + } + + public class FSP_FileObject + { + public string ServerFilePath; + public string ClientFilePath; + public long Size; + public byte[] Hash; + public Stream Stream; + + public FSP_FileObject(string serverFile, string clientFile) + { + ServerFilePath = serverFile; + ClientFilePath = clientFile; + } + + public FSP_FileObject() { } + } + + public class ServerObject + { + public string Address; + public string Name; + public string Speed; + + public ServerObject(string address, string name, string speed) + { + Address = address; + Name = name; + Speed = speed; + } + } + + public class MessageObject + { + public uint Number; + public DateTime Datetime; + public int Sender; + public int Channel; + public string Text; + + public MessageObject() { } + + public MessageObject(byte[] recieved) + { + if (recieved.Length != 2284) throw new Exception("incorrect message length: " + recieved.Length); + Number = recieved[2]; + for (byte i = 3; i < 9; i++) + { + Number = Number * 10 + recieved[i]; + } + Datetime = new DateTime(recieved[9] * 100 + recieved[10], recieved[11], recieved[12], + recieved[13], recieved[14], recieved[15]); + for (byte i = 16; i < 22; i++) + { + Sender = Sender * 10 + recieved[i]; + } + for (byte i = 22; i < 28; i++) + { + Channel = Channel * 10 + recieved[i]; + } + List text = new List(); + for (short i = 28; i < 2028; i++) + { + text.Add(recieved[i]); + } + Text = text.ToStr(); + //Log($"message <{Number}> is had recieved"); + } + } +} diff --git a/.old 2/DTLib/Properties/AssemblyInfo.cs b/.old 2/DTLib/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c0201c5 --- /dev/null +++ b/.old 2/DTLib/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные со сборкой. +[assembly: AssemblyTitle("DTLib")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("DTLib")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("ce793497-2d5c-42d8-b311-e9b32af9cdfb")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/.old 2/DTLib/SecureHasher.cs b/.old 2/DTLib/SecureHasher.cs new file mode 100644 index 0000000..691664d --- /dev/null +++ b/.old 2/DTLib/SecureHasher.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Security.Cryptography; + +namespace DTLib +{ + // + // создаёт хеши из массива байт, двух массивов байт, стрима + // + public class SecureHasher + { + private dynamic hasher; + + // можно указать размер хеша (по умолчанию 256 байт) + public SecureHasher(short type) + { + switch (type) + { + case 256: + hasher = SHA256.Create(); + break; + case 384: + hasher = SHA384.Create(); + break; + case 512: + hasher = SHA512.Create(); + break; + default: + throw new Exception("unknown hash algorithm type: " + type + "\nin shouid be 256, 384 or 512\n"); + } + } + public SecureHasher() + { + hasher = SHA256.Create(); + } + + // просто хеш + public byte[] Hash(byte[] input) + { + return hasher.ComputeHash(input); + } + + // хеш из двух массивов + public byte[] HashSalt(byte[] input, byte[] salt) + { + List rez = new List(); + rez.AddRange(input); + rez.AddRange(salt); + return hasher.ComputeHash(rez.ToArray()); + } + + // читает стрим и вычисляет хеш всей инфы в нём + public byte[] HashStream(Stream st) + { + byte[] data = new byte[1024]; + List rez = new List(); + int offset = 0; + while (offset < st.Length) + { + offset += st.Read(data, offset, 1024); + rez.AddRange(hasher.ComputeHash(data)); + } + return hasher.ComputeHash(rez.ToArray()); + } + + // Хеш двух массивов в цикле. + // Работает быстро, так что вполне можно использовать количество циклов до 8к + + public byte[] HashSaltCycled(byte[] input, byte[] salt, ushort cycles) + { + for (uint i = 0; i < cycles; i++) + { + input = HashSalt(input, salt); + } + return input; + } + + public byte[] HashCycled(byte[] input, ushort cycles) + { + for (uint i = 0; i < cycles; i++) + { + input = Hash(input); + } + return input; + } + + public byte[] HashFile(string filename) + { + var md5 = MD5.Create(); + var stream = File.OpenRead(filename); + var hash = HashSaltCycled(md5.ComputeHash(stream), filename.ToBytes(), 512); + stream.Close(); + return hash; + } + } +} diff --git a/.old 2/DTLib/SecureRandom.cs b/.old 2/DTLib/SecureRandom.cs new file mode 100644 index 0000000..98217cf --- /dev/null +++ b/.old 2/DTLib/SecureRandom.cs @@ -0,0 +1,37 @@ +using System.Security.Cryptography; + +namespace DTLib +{ + // + // Вычисление псевдослучайного числа из множества параметров. + // Работает медленнее чем класс System.Random, но производит более случайные значения + // + public class SecureRandom + { + private RNGCryptoServiceProvider crypt = new RNGCryptoServiceProvider(); + + // получение массива случайных байтов + public byte[] NextBytes(uint length) + { + byte[] output = new byte[length]; + crypt.GetNonZeroBytes(output); + return output; + } + + // получение случайного числа от 0 до 2147483647 + /*public int NextInt(uint from, int to) + { + int output = 0; + int rez = 0; + while (true) + { + rez = output * 10 + NextBytes(1)[0]; + if (rez < to && rez > from) + { + output = rez; + return output; + } + } + }*/ + } +} diff --git a/.old 2/DTLib/SimpleConverter.cs b/.old 2/DTLib/SimpleConverter.cs new file mode 100644 index 0000000..9f6c1a3 --- /dev/null +++ b/.old 2/DTLib/SimpleConverter.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DTLib +{ + // + // содержит методы расширения для конвертации байт в строку и наоборот + // + public static class SimpleConverter + { + static public Encoding UTF8 = new UTF8Encoding(false); + // байты в кодировке UTF8 в строку + static public string ToStr(this byte[] bytes) + { + return UTF8.GetString(bytes); + } + static public string ToStr(this List bytes) + { + return UTF8.GetString(bytes.ToArray()); + } + + static public List ToList(this byte[] input) + { + var list = new List(); + list.AddRange(input); + return list; + } + + static public byte[] Remove(this byte[] input, int startIndex, int count) + { + List list = input.ToList(); + list.RemoveRange(startIndex, count); + return list.ToArray(); + } + + // строку в байты + static public byte[] ToBytes(this string str) + { + return UTF8.GetBytes(str); + } + + // хеш в виде массива байт в строку (хеш изначально не в кодировке UTF8, так что метод выше не работает с ним) + static public string HashToString(this byte[] hash) + { + var builder = new StringBuilder(); + for (int i = 0; i < hash.Length; i++) + { + builder.Append(hash[i].ToString("x2")); + } + return builder.ToString(); + } + + static public bool StartsWith(this byte[] source, byte[] startsWith) + { + for (int i = 0; i < startsWith.Length; i++) + { + if (source[i] != startsWith[i]) + return false; + } + return true; + } + + static public bool StartsWith(this byte[] source, string startsWith) + => StartsWith(source, startsWith.ToBytes()); + + static public bool EndsWith(this byte[] source, byte[] endsWith) + { + for (int i = 0; i < endsWith.Length; i++) + { + if (source[source.Length - endsWith.Length + i] != endsWith[i]) + return false; + } + return true; + } + static public bool EndsWith(this byte[] source, string endsWith) + => EndsWith(source, endsWith.ToBytes()); + + static public int Truncate(decimal number) + => Convert.ToInt32(Math.Truncate(number)); + } +} diff --git a/.old 2/DTLib/TImer.cs b/.old 2/DTLib/TImer.cs new file mode 100644 index 0000000..2383078 --- /dev/null +++ b/.old 2/DTLib/TImer.cs @@ -0,0 +1,31 @@ +using System; +using System.Threading; + +namespace DTLib +{ + public class Timer + { + public Thread TimerThread; + bool Repeat; + public Timer(bool repeat, int delay, Action method) + { + Repeat = repeat; + TimerThread = new Thread(() => + { + do + { + Thread.Sleep(delay); + method(); + } while (Repeat); + }); + TimerThread.Start(); + } + + public void Stop() + { + Repeat = false; + //throw new Exception("thread stop\n"); + TimerThread.Abort(); + } + } +} diff --git a/.old 2/dtlauncher-client-win/App.config b/.old 2/dtlauncher-client-win/App.config new file mode 100644 index 0000000..193aecc --- /dev/null +++ b/.old 2/dtlauncher-client-win/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.old 2/dtlauncher-client-win/App.xaml b/.old 2/dtlauncher-client-win/App.xaml new file mode 100644 index 0000000..87bbcc3 --- /dev/null +++ b/.old 2/dtlauncher-client-win/App.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/.old 2/dtlauncher-client-win/App.xaml.cs b/.old 2/dtlauncher-client-win/App.xaml.cs new file mode 100644 index 0000000..4aa3d80 --- /dev/null +++ b/.old 2/dtlauncher-client-win/App.xaml.cs @@ -0,0 +1,11 @@ +using System.Windows; + +namespace dtlauncher_client_win +{ + /// + /// Логика взаимодействия для App.xaml + /// + public partial class App : Application + { + } +} diff --git a/.old 2/dtlauncher-client-win/LauncherWindow.xaml b/.old 2/dtlauncher-client-win/LauncherWindow.xaml new file mode 100644 index 0000000..7b406c3 --- /dev/null +++ b/.old 2/dtlauncher-client-win/LauncherWindow.xaml @@ -0,0 +1,12 @@ + + + + + diff --git a/.old 2/dtlauncher-client-win/LauncherWindow.xaml.cs b/.old 2/dtlauncher-client-win/LauncherWindow.xaml.cs new file mode 100644 index 0000000..f920ce1 --- /dev/null +++ b/.old 2/dtlauncher-client-win/LauncherWindow.xaml.cs @@ -0,0 +1,46 @@ +using DTLib; +using System; +using System.Net; +using System.Net.Sockets; +using System.Windows; +using static DTLib.NetWork; + +namespace dtlauncher_client_win +{ + /// + /// Логика взаимодействия для LauncherWindow.xaml + /// + public partial class LauncherWindow : Window + { + Socket socket; + string logfile; + + public LauncherWindow(Socket _socket, string _logfile) + { + InitializeComponent(); + socket = _socket; + logfile = _logfile; + NetWork.Log += Log; + //mainSocket.FSP_Download(new FSP_FileObject("share\\file.arc", "downloads\\file.arc")); + } + + void Log(string msg) + { + msg = "[" + DateTime.Now.ToString() + "]: " + msg; + FileWork.Log(logfile, msg); + //LogBox.Text += msg; + } + + void Log(string[] input) + { + if (input.Length % 2 == 0) + { + string str = ""; + for (ushort i = 0; i < input.Length; i++) + str += input[++i]; + Log(str); + } + else throw new Exception("error in Log(): every text string must have color string before"); + } + } +} diff --git a/.old 2/dtlauncher-client-win/LoginWindow.xaml b/.old 2/dtlauncher-client-win/LoginWindow.xaml new file mode 100644 index 0000000..c5b0e39 --- /dev/null +++ b/.old 2/dtlauncher-client-win/LoginWindow.xaml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + +