Skip to content

Commit

Permalink
1.0.5 - Full files support !
Browse files Browse the repository at this point in the history
  • Loading branch information
zonetecde committed Mar 9, 2023
1 parent a4a5447 commit 81d0a8b
Show file tree
Hide file tree
Showing 17 changed files with 256 additions and 84 deletions.
23 changes: 19 additions & 4 deletions ClassLibrary/ClassLibrary.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public class User
public User(string userID)
{
this.userID = userID;
this.userApp = string.Empty ;
this.userApp = string.Empty;
}
}

Expand Down Expand Up @@ -58,10 +58,25 @@ public enum MESSAGE_TYPE
DISCONNECTION,
DONNER_ID,
MESSAGE_BRUTE,
MODIFY_FILE,
FILE_UPDATED, // au passé, mais c'est car le client lui recevra ceci lorsqu'un fichié a été modifié par un user
GET_FILE,
DELETE_FILE,
CREATE_FILE
FILE_DELETED, // au passé, mais c'est car le client lui recevra ceci lorsqu'un fichié a été modifié par un user
CREATE_FILE,
LIST_FILE
}

public class FileMessage
{
public string path;
public string content;
public bool warnOtherPeople;

public FileMessage(string path, bool warnOtherPeople = false, string content = "")
{
this.path = path;
this.warnOtherPeople = warnOtherPeople;
this.content = content;
}
}
}
}
File renamed without changes.
Binary file added setup/QLS Zoneck 1.0.5.exe
Binary file not shown.
Binary file removed setup/QLS Zoneck.exe
Binary file not shown.
Binary file added setup/icon.ico
Binary file not shown.
50 changes: 25 additions & 25 deletions setup/setup.iss
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "QLS Zoneck"
#define MyAppVersion "1.0.4"
#define MyAppVersion "1.0.5"
#define MyAppPublisher "zonetecde"
#define MyAppURL "github.com/zonetecde"
#define MyAppURL "github.com/zonetecde/zoneck-server"
#define MyAppExeName "QLS UI.exe"

[Setup]
Expand All @@ -22,9 +22,9 @@ DefaultDirName={autopf}\{#MyAppName}
DisableProgramGroupPage=yes
; Remove the following line to run in administrative install mode (install for all users.)
PrivilegesRequired=lowest
OutputDir=C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\setup
OutputDir=setup
OutputBaseFilename=Zoneck Server Setup
SetupIconFile=C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Logo\logo_final.ico
SetupIconFile=icon.ico
Compression=lzma
SolidCompression=yes
WizardStyle=modern
Expand All @@ -37,27 +37,27 @@ Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";

[Files]
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\ClassLibrary.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\ClassLibrary.pdb"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\log4net.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\log4net.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\Newtonsoft.Json.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\Newtonsoft.Json.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\QLS UI.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\QLS UI.exe.config"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\QLS UI.pdb"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.Common.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.Common.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.Facility.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.Facility.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.SocketBase.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.SocketBase.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.SocketEngine.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.SocketEngine.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.SocketService.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\zck_server.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\zonedetec\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\zck_server.pdb"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\ClassLibrary.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\ClassLibrary.pdb"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\log4net.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\log4net.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\Newtonsoft.Json.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\Newtonsoft.Json.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\QLS UI.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\QLS UI.exe.config"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\QLS UI.pdb"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.Common.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.Common.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.Facility.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.Facility.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.SocketBase.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.SocketBase.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.SocketEngine.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.SocketEngine.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\SuperSocket.SocketService.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\zck_server.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Cloud\OneDrive - Conseil régional Grand Est - Numérique Educatif\Programmation\c#\zoneck server\QLS UI\bin\Debug\zck_server.pdb"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Expand Down
30 changes: 19 additions & 11 deletions zck_client/ClassLibrary.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace zck_client
namespace zck_client
{
public class ClassLibrary
{
Expand All @@ -29,7 +23,7 @@ public class User
public User(string userID)
{
this.userID = userID;
this.userApp = string.Empty ;
this.userApp = string.Empty;
}
}

Expand Down Expand Up @@ -58,11 +52,25 @@ public enum MESSAGE_TYPE
DISCONNECTION,
DONNER_ID,
MESSAGE_BRUTE,
MODIFY_FILE,
FILE_UPDATED,
GET_FILE,
DELETE_FILE,
CREATE_FILE
FILE_DELETED,
CREATE_FILE,
LIST_FILE
}

public class FileMessage
{
public string path;
public string content;
public bool warnOtherPeople;

public FileMessage(string path, bool warnOtherPeople, string content = "")
{
this.path = path;
this.warnOtherPeople = warnOtherPeople;
this.content = content;
}
}
}
}
1 change: 0 additions & 1 deletion zck_client/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// Les informations générales relatives à un assembly dépendent de
Expand Down
83 changes: 72 additions & 11 deletions zck_client/ZoneckClient.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
Expand All @@ -17,6 +16,8 @@ public class ZoneckClient

public ZoneckClient(string appName, string ip, int port, Action<Message> Receive)
{
// TODO: Utiliser l'appName

// Créer une instance du SocketClient
SocketClient = new Socket(SocketType.Stream, ProtocolType.Tcp);
IPAddress _ip = IPAddress.Parse(ip);
Expand All @@ -25,26 +26,86 @@ public ZoneckClient(string appName, string ip, int port, Action<Message> Receive
// Connexion
SocketClient.Connect(point);

// Thread pour recevoir les messages du serveur en continu
// Thread pour recevoir les messages du serveur en continue
Thread thread = new Thread(_Receive);
thread.IsBackground = true;
thread.Start();

// Envois au serveur pour avoir son ID


this.Receive = Receive;
}

/// <summary>
/// Envois un message au serveur
/// Envois un message à tous ou un utilisateur du serveur
/// </summary>
/// <param name="str">Le message à envoyer</param>
public void Send(string str, string toId = "", bool brute = false)
public void Send(string str, string toId = "")
{
string msg = JsonConvert.SerializeObject(new Message(MyId, str, MESSAGE_TYPE.MESSAGE, toId)) + "\r\n";

var buffter = Encoding.UTF8.GetBytes(msg);
var temp = SocketClient.Send(buffter);
}

/// <summary>
/// Demande le contenue d'un fichier stocké sur le serveur
/// </summary>
/// <param name="path">Nom du fichier demandé (ex : folder/file.txt)</param>
/// <remarks>Le contenue du fichier sera envoyé dans votre fonction MessageReceived. Ce sera un message de type "GET_FILE". Son contenue se trouvera donc dans le msg.Content</remarks>
public void GetFile(string path)
{
string msg = JsonConvert.SerializeObject(new Message(MyId, path, MESSAGE_TYPE.GET_FILE)) + "\r\n";

var buffter = Encoding.UTF8.GetBytes(msg);
var temp = SocketClient.Send(buffter);
}

/// <summary>
/// Créé un fichier sur le serveur
/// </summary>
/// <param name="path">Nom du fichier a créé (ex : folder/file.txt)</param>
public void CreateFile(string path)
{
string msg = JsonConvert.SerializeObject(new Message(MyId, path, MESSAGE_TYPE.CREATE_FILE)) + "\r\n";

var buffter = Encoding.UTF8.GetBytes(msg);
var temp = SocketClient.Send(buffter);
}

/// <summary>
/// Supprime un fichier sur le serveur
/// </summary>
/// <param name="path">Chemin du fichier à supprimer</param>
/// <param name="warnOtherPeople">Prévenur les autres utilisateurs qu'un fichier a été supprimé</param>
/// <remarks>Si warnOtherPeople est activé, Les personnes connectées au serveur reçevrons une alerte envoyé dans leur fonction MessageReceived. Ce sera un message de type "FILE_DELETED". Le chemin d'accès au fichier se trouvera dans msg.Content</remarks>
public void DeleteFile(string path, bool warnOtherPeople)
{
string msg = JsonConvert.SerializeObject(new Message(MyId, JsonConvert.SerializeObject(new FileMessage(path, warnOtherPeople)), MESSAGE_TYPE.FILE_DELETED)) + "\r\n";

var buffter = Encoding.UTF8.GetBytes(msg);
var temp = SocketClient.Send(buffter);
}

/// <summary>
/// Modifie un fichier sur le serveur
/// </summary>
/// <param name="path">Le chemin d'accès au fichier</param>
/// <param name="updatedFileContent">Le nouveau contenue du fichier</param>
/// <param name="warnOtherPeople">Prévenur les autres utilisateurs qu'un fichier a été modifié</param>
/// <remarks>Si warnOtherPeople est activé, Les personnes connectées au serveur reçevrons une alerte envoyé dans leur fonction MessageReceived. Ce sera un message de type "FILE_UPDATED". Il faudra désérialiser le msg.Content en type "FileMessage". Le chemin d'accès au fichier se trouvera dans fM.Path, et le nouveau contenu dans fM.Content.</remarks>
public void UpdateFile(string path, string updatedFileContent, bool warnOtherPeople)
{
// id > message
string msg = brute ? "@[B]" + str + "\r\n" : JsonConvert.SerializeObject(new Message(MyId, str, MESSAGE_TYPE.MESSAGE, toId)) + "\r\n";
//Receive(new Message(ConnetionId, str, AppName, MESSAGE_TYPE.MESSAGE));
string msg = JsonConvert.SerializeObject(new Message(MyId, JsonConvert.SerializeObject(new FileMessage(path, warnOtherPeople, updatedFileContent)), MESSAGE_TYPE.FILE_UPDATED)) + "\r\n";

var buffter = Encoding.UTF8.GetBytes(msg);
var temp = SocketClient.Send(buffter);
}

/// <summary>
/// Retourne dans un message de type LIST_FILE (dans votre fonction MessageReceived) tous les fichiers du serveur séparé par une virgule.
/// </summary>
public void ListFile()
{
string msg = JsonConvert.SerializeObject(new Message(MyId, "I wanna receive files", MESSAGE_TYPE.LIST_FILE)) + "\r\n";

var buffter = Encoding.UTF8.GetBytes(msg);
var temp = SocketClient.Send(buffter);
Expand Down Expand Up @@ -87,7 +148,7 @@ private void _Receive()
}
catch
{ }

}
}
}
Expand Down
11 changes: 11 additions & 0 deletions zck_client/app.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.15.0" newVersion="2.0.15.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
4 changes: 2 additions & 2 deletions zck_client/packages.config
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="log4net" version="2.0.3" targetFramework="net472" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" />
<package id="log4net" version="2.0.15" targetFramework="net472" />
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net472" />
<package id="SuperSocket" version="1.6.6.1" targetFramework="net472" />
<package id="SuperSocket.Engine" version="1.6.6.1" targetFramework="net472" />
</packages>
Loading

0 comments on commit 81d0a8b

Please sign in to comment.