DTLib added as nuget packages

This commit is contained in:
timerix 2023-11-17 17:58:27 +06:00
parent e3a3fb5e5e
commit 518ac74dc7
17 changed files with 155 additions and 137 deletions

View File

@ -1,5 +1,6 @@
using Avalonia.Interactivity;
using Avalonia.Threading;
using DTLib.Logging;
namespace Launcher.Client.Avalonia.GUI;
@ -10,9 +11,9 @@ public partial class LauncherWindow : Window
InitializeComponent();
LogBox.Text = Logger.Buffer;
Logger.MessageSent += LogHandler;
LogfileLabel.Content = Logger.LogfileName.Remove(0,Logger.LogfileName.LastIndexOf(Путь.Разд)+1);
LogfileLabel.Content = Logger.LogfileName.Remove(0,Logger.LogfileName.LastIndexOf(Path.Sep)+1);
LogfileLabel.PointerPressed += (_,_)=>
Process.Start("explorer.exe", LauncherLogger.LogfileDir);
Process.Start("explorer.exe", LauncherLogger.LogfileDir.ToString()!);
LogfileLabel.PointerEnter += (_,_)=>LogfileLabel.Foreground=App.MySelectionColor;
LogfileLabel.PointerLeave += (_,_)=>LogfileLabel.Foreground=App.MyWhite;
LibraryButton.TabGrid = LibraryGrid;
@ -26,14 +27,14 @@ public partial class LauncherWindow : Window
ProgramGrid.IsVisible = false;
SelectTab(LibraryButton, null);
FillProgramsPanel();
Logger.Log("launcher started");
Logger.LogInfo(nameof(LauncherWindow),"launcher started");
try
{
throw new Exception("aaa");
}
catch (Exception ex)
{
LogError("main window", ex);
LogError(nameof(LauncherWindow), ex);
}
}
@ -58,15 +59,15 @@ public partial class LauncherWindow : Window
private void FillProgramsPanel()
{
Logger.Log("reading descriptors...");
string[] descriptors = Directory.GetFiles("descriptors");
Logger.LogInfo(nameof(LauncherWindow),"reading descriptors...");
var descriptors = Directory.GetFiles("descriptors");
Programs = new Program[descriptors.Length];
for (ushort i = 0; i < descriptors.Length; i++)
{
string descriptor = descriptors[i];
var descriptor = descriptors[i];
if(descriptor.EndsWith(".descriptor"))
{
Logger.Log('\t'+descriptor);
Logger.LogInfo(nameof(LauncherWindow), descriptor.ToString());
Programs[i] = new Program(descriptors[i]);
ProgramsPanel.Children.Add(Programs[i].ProgramLabel);
Programs[i].ProgramSelectedEvent += SelectProgram;
@ -92,7 +93,7 @@ public partial class LauncherWindow : Window
NameLabel.Content = selectedProg.Name;
DescriptionBox.Text = selectedProg.Description;
BackgroundImage.Source = new Bitmap(
$"{Directory.GetCurrent()}{Путь.Разд}backgrounds{Путь.Разд}{selectedProg.BackgroundFile}");
$"{Directory.GetCurrent()}{Path.Sep}backgrounds{Path.Sep}{selectedProg.BackgroundFile}");
ProgramSettingsViever.Content = selectedProg.SettingsPanel;
DisplayingProgram = selectedProg;
}

View File

@ -9,6 +9,6 @@ public partial class ProgramLabel : UserControl
InitializeComponent();
NameLabel.Content = label;
IconImage.Source = new Bitmap(
$"{Directory.GetCurrent()}{Путь.Разд}icons{Путь.Разд}{icon}");
$"{Directory.GetCurrent()}{Path.Sep}icons{Path.Sep}{icon}");
}
}

View File

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<RootNamespace>Launcher.Client.Avalonia</RootNamespace>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>disable</Nullable>
<DebugType>full</DebugType>
@ -24,9 +24,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\DTLib\DTLib.Network\DTLib.Network.csproj" />
<ProjectReference Include="..\..\DTLib\DTLib.Dtsod\DTLib.Dtsod.csproj" />
<ProjectReference Include="..\..\DTLib\DTLib\DTLib.csproj" />
<ProjectReference Include="..\Launcher.Client\Launcher.Client.csproj" />
</ItemGroup>

View File

@ -11,6 +11,8 @@ global using DTLib.Extensions;
global using Launcher.Client;
global using static Launcher.Client.LauncherClient;
global using static Launcher.Client.Avalonia.LauncherMain;
using DTLib.Ben.Demystifier;
using DTLib.Logging;
using Launcher.Client.Avalonia.GUI;
namespace Launcher.Client.Avalonia;
@ -43,8 +45,8 @@ public static class LauncherMain
public static void LogError(string context, Exception ex)
{
string errmsg = $"{ex.Message}\n{ex.StackTrace}";
string errmsg = ex.ToStringDemystified();
MessageBox.Show($"{context} ERROR", errmsg);
Logger.Log(errmsg);
Logger.LogError("Main", errmsg);
}
}

View File

@ -23,7 +23,7 @@ public class Program
public event Action<Program> ProgramSelectedEvent;
public Program(string descriptorFile)
public Program(IOPath descriptorFile)
{
DtsodV23 descriptor= new(File.ReadAllText(descriptorFile));
Name = descriptor["name"];
@ -38,7 +38,7 @@ public class Program
ProgramLabel = new ProgramLabel(Name, IconFile);
ProgramLabel.PointerPressed += (_, _) => ProgramSelectedEvent?.Invoke(this);
SettingsFile = $"settings{Путь.Разд}{Directory}.settings";
SettingsFile = $"settings{Path.Sep}{Directory}.settings";
Settings = File.Exists(SettingsFile)
? DtsodConverter.UpdateByDefault(
new DtsodV23(File.ReadAllText(SettingsFile)),

View File

@ -1,4 +1,5 @@
using System.Windows.Media.Imaging;
using DTLib.Logging;
namespace Launcher.Client.WPF.GUI;
@ -9,9 +10,9 @@ public partial class LauncherWindow : Window
InitializeComponent();
LogBox.Text = Logger.Buffer;
Logger.MessageSent += LogHandler;
LogfileLabel.Content = Logger.LogfileName.Remove(0,Logger.LogfileName.LastIndexOf(Путь.Разд)+1);
LogfileLabel.Content = Logger.LogfileName.Remove(0,Logger.LogfileName.LastIndexOf(Path.Sep)+1);
LogfileLabel.MouseLeftButtonDown += (_,_)=>
Process.Start("explorer.exe", LauncherLogger.LogfileDir);
Process.Start("explorer.exe", LauncherLogger.LogfileDir.ToString()!);
LogfileLabel.MouseEnter += (_,_)=>LogfileLabel.Foreground=App.MySelectionColor;
LogfileLabel.MouseLeave += (_,_)=>LogfileLabel.Foreground=App.MyWhite;
LibraryButton.TabGrid = LibraryGrid;
@ -25,7 +26,7 @@ public partial class LauncherWindow : Window
ProgramGrid.Visibility = Visibility.Hidden;
SelectTab(LibraryButton, null);
FillProgramsPanel();
Logger.Log("launcher started");
Logger.LogInfo(nameof(LauncherWindow),"launcher started");
}
void LogHandler(string m) => Dispatcher.Invoke(()=>LogBox.Text += m);
@ -49,15 +50,15 @@ public partial class LauncherWindow : Window
private void FillProgramsPanel()
{
Logger.Log("reading descriptors...");
string[] descriptors = Directory.GetFiles("descriptors");
Logger.LogInfo(nameof(LauncherWindow),"reading descriptors...");
var descriptors = Directory.GetFiles("descriptors");
Programs = new Program[descriptors.Length];
for (ushort i = 0; i < descriptors.Length; i++)
{
string descriptor = descriptors[i];
var descriptor = descriptors[i];
if(descriptor.EndsWith(".descriptor"))
{
Logger.Log('\t'+descriptor);
Logger.LogInfo(nameof(LauncherWindow),descriptor.ToString());
Programs[i] = new Program(descriptors[i]);
ProgramsPanel.Children.Add(Programs[i].ProgramLabel);
Programs[i].ProgramSelectedEvent += SelectProgram;
@ -84,7 +85,7 @@ public partial class LauncherWindow : Window
DescriptionBox.Text = selectedProg.Description;
BackgroundImage.Source =
new BitmapImage(new Uri(
$"{Directory.GetCurrent()}{Путь.Разд}backgrounds{Путь.Разд}{selectedProg.BackgroundFile}",
$"{Directory.GetCurrent()}{Path.Sep}backgrounds{Path.Sep}{selectedProg.BackgroundFile}",
UriKind.Absolute));
ProgramSettingsViever.Content = selectedProg.SettingsPanel;
DisplayingProgram = selectedProg;

View File

@ -10,7 +10,7 @@ public partial class ProgramLabel : UserControl
InitializeComponent();
NameLabel.Content = label;
IconImage.Source = new BitmapImage(new Uri(
$"{Directory.GetCurrent()}{Путь.Разд}icons{Путь.Разд}{icon}",
$"{Directory.GetCurrent()}{Path.Sep}icons{Path.Sep}{icon}",
UriKind.Absolute));
}
}

View File

@ -3,7 +3,7 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<UseWPF>true</UseWPF>
<TargetFramework>net6.0-windows</TargetFramework>
<TargetFramework>net7.0-windows</TargetFramework>
<RootNamespace>Launcher.Client.WPF</RootNamespace>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>disable</Nullable>
@ -22,9 +22,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\DTLib\DTLib.Network\DTLib.Network.csproj" />
<ProjectReference Include="..\..\DTLib\DTLib.Dtsod\DTLib.Dtsod.csproj" />
<ProjectReference Include="..\..\DTLib\DTLib\DTLib.csproj" />
<ProjectReference Include="..\Launcher.Client\Launcher.Client.csproj" />
</ItemGroup>

View File

@ -12,6 +12,8 @@ global using System.Windows;
global using Launcher.Client;
global using static Launcher.Client.LauncherClient;
global using static Launcher.Client.WPF.LauncherMain;
using DTLib.Ben.Demystifier;
using DTLib.Logging;
using Launcher.Client.WPF.GUI;
namespace Launcher.Client.WPF;
@ -22,6 +24,8 @@ public static class LauncherMain
public static void _Main(string[] args)
{
Console.WriteLine("aaa\nbbb\nccc");
return;
LauncherClient.Init();
CurrentLauncherWindow = new LauncherWindow();
CurrentLauncherWindow.Show();
@ -29,8 +33,8 @@ public static class LauncherMain
public static void LogError(string context, Exception ex)
{
string errmsg = $"{context} ERROR:\n{ex}";
string errmsg = ex.ToStringDemystified();
MessageBox.Show(errmsg);
Logger.Log(errmsg);
Logger.LogError(context, errmsg);
}
}

View File

@ -24,7 +24,7 @@ public class Program
public event Action<Program> ProgramSelectedEvent;
public Program(string descriptorFile)
public Program(IOPath descriptorFile)
{
DtsodV23 descriptor= new(File.ReadAllText(descriptorFile));
Name = descriptor["name"];
@ -39,7 +39,7 @@ public class Program
ProgramLabel = new ProgramLabel(Name, IconFile);
ProgramLabel.MouseLeftButtonDown += (_, _) => ProgramSelectedEvent?.Invoke(this);
SettingsFile = $"settings{Путь.Разд}{Directory}.settings";
SettingsFile = $"settings{Path.Sep}{Directory}.settings";
Settings = File.Exists(SettingsFile)
? DtsodConverter.UpdateByDefault(
new DtsodV23(File.ReadAllText(SettingsFile)),

View File

@ -0,0 +1,38 @@
using DTLib.Logging;
namespace Launcher.Client;
public class BufferedLogger : ILogger
{
public bool DebugLogEnabled { get; set; } =
#if DEBUG
true;
#else
false;
#endif
public bool InfoLogEnabled { get; set; } = true;
public bool WarnLogEnabled { get; set; } = true;
public bool ErrorLogEnabled { get; set; } = true;
public ILogFormat Format { get; set; } = new DefaultLogFormat();
private readonly StringBuilder _buffer = new();
public string Buffer
{
get { lock (_buffer) return _buffer.ToString(); }
}
public event Action<string> MessageSent;
public void Log(string context, LogSeverity severity, object message, ILogFormat format)
{
string msgConnected = Format.CreateMessage(context, severity, message);
MessageSent?.Invoke(msgConnected);
lock (_buffer) _buffer.Append(msgConnected);
}
public void Dispose()
{
}
}

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>disable</Nullable>
<RootNamespace>Launcher.Client</RootNamespace>
@ -10,12 +10,6 @@
<Platforms>AnyCPU</Platforms>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\DTLib\DTLib.Network\DTLib.Network.csproj" />
<ProjectReference Include="..\..\DTLib\DTLib.Dtsod\DTLib.Dtsod.csproj" />
<ProjectReference Include="..\..\DTLib\DTLib\DTLib.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Remove="Resources\**\*" />
<EmbeddedResource Include="Resources\**\*" />
@ -23,4 +17,10 @@
<None Update="debug_assets\**\*" CopyToOutputDirectory="Always" Condition="'$(Configuration)' == 'Debug'" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="DTLib.Dtsod" Version="1.3.0" />
<PackageReference Include="DTLib.Logging" Version="1.3.0" />
<PackageReference Include="DTLib.Network" Version="1.3.0" />
</ItemGroup>
</Project>

View File

@ -8,6 +8,7 @@ global using DTLib;
global using DTLib.Dtsod;
global using DTLib.Filesystem;
global using DTLib.Extensions;
using DTLib.Logging;
namespace Launcher.Client;
@ -18,14 +19,14 @@ public static class LauncherClient
public static void Init()
{
Logger.Log("launcher starting...");
Logger.LogInfo(nameof(LauncherClient),"launcher starting...");
Config = new LauncherConfig();
#if DEBUG
const string debug_assets = "debug_assets";
foreach (string file in Directory.GetFiles(debug_assets))
File.Copy(file, file.Remove(0, file.LastIndexOf(Путь.Разд) + 1), true);
File.Copy(file, file.Remove(0, file.LastIndexOf(Path.Sep) + 1), true);
foreach (string subdir in Directory.GetDirectories(debug_assets))
Directory.Copy(subdir, subdir.Remove(0, subdir.LastIndexOf(Путь.Разд) + 1), true);
Directory.Copy(subdir, subdir.Remove(0, subdir.LastIndexOf(Path.Sep) + 1), true);
Directory.Delete(debug_assets);
#endif
Directory.Create("descriptors");
@ -33,7 +34,7 @@ public static class LauncherClient
Directory.Create("backgrounds");
Directory.Create("installed");
Directory.Create("settings");
File.WriteAllText($"descriptors{Путь.Разд}default.descriptor.template",
File.WriteAllText($"descriptors{Path.Sep}default.descriptor.template",
EmbeddedResources.ReadText("Launcher.Client.Resources.default.descriptor.template"));
}
}

View File

@ -2,30 +2,22 @@
namespace Launcher.Client;
public class LauncherLogger : FileLogger
public class LauncherLogger : CompositeLogger
{
public const string LogfileDir = "launcher-logs";
public LauncherLogger() : base(LogfileDir,"launcher-client") {}
private readonly StringBuilder _buffer = new();
public string Buffer
{
get { lock (_buffer) return _buffer.ToString(); }
}
public static readonly IOPath LogfileDir = "launcher-logs";
public readonly string LogfileName;
public event Action<string> MessageSent;
public string Buffer => _bufferedLogger.Buffer;
public override void Log(params string[] msg)
FileLogger _fileLogger = new(LogfileDir,"launcher-client");
ConsoleLogger _consoleLogger = new();
BufferedLogger _bufferedLogger = new BufferedLogger();
public LauncherLogger()
{
base.Log(msg);
StringBuilder strb = new();
strb.Append('[').Append(LastLogMessageTime).Append("]: ");
if (msg.Length == 1) strb.Append(msg[0]);
else for (int i = 1; i < msg.Length; i += 2)
strb.Append(msg[i]);
strb.Append('\n');
string msgConnected = strb.ToString();
MessageSent?.Invoke(msgConnected);
lock (_buffer) _buffer.Append(msgConnected);
_loggers = new ILogger[] { _fileLogger, _consoleLogger, _bufferedLogger };
LogfileName = _fileLogger.LogfileName.Str;
_bufferedLogger.MessageSent += s => MessageSent?.Invoke(s);
}
}

View File

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
<RootNamespace>Launcher.Server</RootNamespace>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>disable</Nullable>
@ -11,16 +11,16 @@
<Platforms>AnyCPU</Platforms>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\DTLib\DTLib.Network\DTLib.Network.csproj" />
<ProjectReference Include="..\..\DTLib\DTLib.Dtsod\DTLib.Dtsod.csproj" />
<ProjectReference Include="..\..\DTLib\DTLib\DTLib.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="launcher-server.dtsod">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<PackageReference Include="DTLib.Dtsod" Version="1.3.0" />
<PackageReference Include="DTLib.Logging" Version="1.3.0" />
<PackageReference Include="DTLib.Network" Version="1.3.0" />
</ItemGroup>
</Project>

View File

@ -9,8 +9,7 @@ global using System.Net.Sockets;
global using System.Text;
global using System.Threading;
global using System.Linq;
using System.Globalization;
using DTLib.Logging;
using DTLib.Logging;
namespace Launcher.Server;
@ -18,7 +17,9 @@ static class Server
{
static readonly Socket mainSocket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
static DtsodV23 config;
private static readonly ConsoleLogger Logger = new("logs", "launcher-server");
private static readonly CompositeLogger Logger = new(
new ConsoleLogger(),
new FileLogger("logs", "launcher-server"));
static readonly object manifestLocker = new();
@ -29,40 +30,42 @@ static class Server
Console.Title = "Launcher.Server";
Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;
PublicLog.LogEvent += Logger.Log;
DTLibInternalLogging.SetLogger(Logger);
config = new DtsodV23(File.ReadAllText("launcher-server.dtsod"));
Logger.Log("b", "local address: <", "c", config["local_ip"], "b",
">\npublic address: <", "c", OldNetwork.GetPublicIP(), "b",
">\nport: <", "c", config["local_port"].ToString(), "b", ">");
Logger.LogInfo("Main", $"""
local address: {config["local_ip"]}
public address: {OldNetwork.GetPublicIP()}
port: {config["local_port"]}
""");
mainSocket.Bind(new IPEndPoint(IPAddress.Parse(config["local_ip"]), config["local_port"]));
mainSocket.Listen(1000);
CreateManifests();
Logger.Log("g", "server started succesfully");
Logger.LogInfo("Main", "server started succesfully");
// запуск отдельного потока для каждого юзера
Logger.Log("b", "waiting for users");
Logger.LogInfo("Main", "waiting for users");
while (true)
{
var userSocket = mainSocket.Accept();
var userThread = new Thread((obj) => UserHandle((Socket)obj));
var userThread = new Thread((obj) => HandleUser((Socket)obj));
userThread.Start(userSocket);
}
}
catch (Exception ex)
{
Logger.Log("r", ex.ToString());
Logger.LogError("Main", ex);
if (mainSocket.Connected)
{
mainSocket.Shutdown(SocketShutdown.Both);
mainSocket.Close();
}
}
Logger.Log("gray", "");
Console.ResetColor();
}
// запускается для каждого юзера в отдельном потоке
static void UserHandle(Socket handlerSocket)
static void HandleUser(Socket handlerSocket)
{
Logger.Log("b", "user connecting... ");
Logger.LogInfo("HandleUser", "user connecting...");
try
{
// запрос хеша пароля и логина
@ -73,7 +76,7 @@ static class Server
// запрос от апдейтера
if (hash == hasher.HashCycled("updater".ToBytes(),64))
{
Logger.Log("b", "user is ", "c", "updater");
Logger.LogInfo("HandleUser", "user is updater");
handlerSocket.SendPackage("updater".ToBytes());
// обработка запросов
while (true)
@ -84,19 +87,19 @@ static class Server
switch (request)
{
case "requesting launcher update":
Logger.Log("b", "updater requested client.exe");
Logger.LogInfo("HandleUser", "updater requested client.exe");
fsp.UploadFile("share\\launcher.exe");
break;
case "register new user":
Logger.Log("b", "new user registration requested");
Logger.LogInfo("HandleUser", "new user registration requested");
handlerSocket.SendPackage("ready".ToBytes());
string req = StringConverter.MergeToString(
hasher.HashCycled(handlerSocket.GetPackage(), 64).HashToString(),
":\n{\n\tusername: \"", handlerSocket.GetPackage().ToString(),
"\";\n\tuuid: \"null\";\n};");
string filepath = $"registration_requests\\{DateTime.Now.ToString(CultureInfo.InvariantCulture).НормализоватьДляПути()}.req";
var filepath = Path.Concat("registration_requests", DateTime.Now.ToString(MyTimeFormat.ForFileNames), ".req");
File.WriteAllText(filepath, req);
Logger.Log("b", $"text wrote to file <", "c", $"registration_requests\\{filepath}", "b", ">");
Logger.LogInfo("HandleUser", $"text wrote to file <{filepath}>");
break;
default:
throw new Exception("unknown request: " + request);
@ -108,7 +111,7 @@ static class Server
// запрос от юзера
else if (FindUser(hash, out var user))
{
Logger.Log("b", $"user is ", "c", user.name);
Logger.LogInfo("HandleUser", "user is " + user.name);
handlerSocket.SendPackage("launcher".ToBytes());
// обработка запросов
while (true)
@ -119,27 +122,26 @@ static class Server
switch (request)
{
case "requesting file download":
var file = handlerSocket.GetPackage().ToString();
Logger.Log("b", $"user ", "c", user.name, "b", " requested file ", "c", file);
if (file == "manifest.dtsod")
{
lock (manifestLocker) fsp.UploadFile("share\\manifest.dtsod");
}
else fsp.UploadFile($"share\\{file}");
var requestedFile = Path.Concat("share",handlerSocket.GetPackage().ToString());
Logger.LogInfo("HandleUser", $"user {user.name} requested file {requestedFile}");
if (requestedFile == "share/manifest.dtsod")
lock (manifestLocker)
fsp.UploadFile(requestedFile.ToString());
else fsp.UploadFile(requestedFile.ToString());
break;
case "requesting uuid":
Logger.Log("b", $"user ", "c", user.name, "b", " requested uuid");
Logger.LogInfo("HandleUser", "user " + user.name + " requested uuid");
handlerSocket.SendPackage(user.uuid.ToBytes());
break;
case "excess files found":
Logger.Log("b", $"user ", "c", user.name, "b", " sent excess files list");
fsp.DownloadFile($"excesses\\{user.name}-" +
$"{DateTime.Now.ToString(CultureInfo.InvariantCulture).НормализоватьДляПути()}.txt");
Logger.LogInfo("HandleUser", "user " + user.name + " sent excess files list");
fsp.DownloadFile(Path.Concat(
"excesses",user.name, DateTime.Now.ToString(MyTimeFormat.ForFileNames),".txt")
.ToString());
break;
case "sending launcher error":
Logger.Log("y", "user ", "c", user.name, "y", "is sending error:");
string error = handlerSocket.GetPackage().ToString();
Logger.Log("y", error + '\n');
Logger.LogWarn("HandleUser", "user "+ user.name + "is sending error:\n"+error);
break;
default:
throw new Exception("unknown request: " + request);
@ -151,13 +153,13 @@ static class Server
// неизвестный юзер
else
{
Logger.Log("y", $"user with hash <{hash.HashToString()}> not found");
Logger.LogWarn("HandleUser", $"user with hash {hash.HashToString()} not found");
handlerSocket.SendPackage("user not found".ToBytes());
}
}
catch (Exception ex)
{
Logger.Log("y", $"UserStart() error:\n message:\n {ex}");
Logger.LogWarn("HandleUser", ex);
if (mainSocket.Connected)
{
mainSocket.Shutdown(SocketShutdown.Both);
@ -166,9 +168,10 @@ static class Server
}
finally
{
if (handlerSocket.Connected) handlerSocket.Shutdown(SocketShutdown.Both);
if (handlerSocket.Connected)
handlerSocket.Shutdown(SocketShutdown.Both);
handlerSocket.Close();
Logger.Log("g", "user disconnected");
Logger.LogInfo("HandleUser", "user disconnected");
}
}
@ -176,19 +179,19 @@ static class Server
{
lock (manifestLocker)
{
Directory.Create($"share\\download_if_not_exist");
Directory.Create($"share\\sync_always");
Directory.Create($"share\\sync_and_remove");
Directory.Create("share\\download_if_not_exist");
Directory.Create("share\\sync_always");
Directory.Create("share\\sync_and_remove");
FSP.CreateManifest($"share\\download_if_not_exist");
FSP.CreateManifest($"share\\sync_always");
FSP.CreateManifest("share\\download_if_not_exist");
FSP.CreateManifest("share\\sync_always");
foreach (string dir in Directory.GetDirectories("share\\sync_and_remove"))
FSP.CreateManifest(dir);
File.WriteAllText($"share\\sync_and_remove\\dirlist.dtsod",
$"dirs: [\""+
File.WriteAllText("share\\sync_and_remove\\dirlist.dtsod",
"dirs: [\""+
Directory.GetDirectories("share\\sync_and_remove")
.MergeToString("\",\"")
.Replace($"share\\sync_and_remove\\", "")+
.Replace("share\\sync_and_remove\\", "")+
"\"];");
}
}

View File

@ -17,12 +17,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Launcher.Client.Avalonia",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Launcher.Client", "Launcher.Client\Launcher.Client.csproj", "{87427137-840D-4D09-A101-9481110682BD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DTLib", "..\DTLib\DTLib\DTLib.csproj", "{E27F82A6-B58F-4C07-8DAB-F1556F24F5E0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DTLib.Dtsod", "..\DTLib\DTLib.Dtsod\DTLib.Dtsod.csproj", "{507C97A8-47ED-4271-952F-49883E508EA7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DTLib.Network", "..\DTLib\DTLib.Network\DTLib.Network.csproj", "{5F53F49F-FFEA-4C2E-B21D-8E11363EA969}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -45,18 +39,6 @@ Global
{87427137-840D-4D09-A101-9481110682BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{87427137-840D-4D09-A101-9481110682BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{87427137-840D-4D09-A101-9481110682BD}.Release|Any CPU.Build.0 = Release|Any CPU
{E27F82A6-B58F-4C07-8DAB-F1556F24F5E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E27F82A6-B58F-4C07-8DAB-F1556F24F5E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E27F82A6-B58F-4C07-8DAB-F1556F24F5E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E27F82A6-B58F-4C07-8DAB-F1556F24F5E0}.Release|Any CPU.Build.0 = Release|Any CPU
{507C97A8-47ED-4271-952F-49883E508EA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{507C97A8-47ED-4271-952F-49883E508EA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{507C97A8-47ED-4271-952F-49883E508EA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{507C97A8-47ED-4271-952F-49883E508EA7}.Release|Any CPU.Build.0 = Release|Any CPU
{5F53F49F-FFEA-4C2E-B21D-8E11363EA969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5F53F49F-FFEA-4C2E-B21D-8E11363EA969}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5F53F49F-FFEA-4C2E-B21D-8E11363EA969}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5F53F49F-FFEA-4C2E-B21D-8E11363EA969}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE