From 641d2723465550a1be14b21f68cc5c0121152405 Mon Sep 17 00:00:00 2001 From: Noan RANDON Date: Tue, 21 Mar 2023 16:49:44 +0100 Subject: [PATCH 1/7] :memo: drone --- code/server/Dockerfile | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code/server/Dockerfile b/code/server/Dockerfile index b1845e6..056f416 100644 --- a/code/server/Dockerfile +++ b/code/server/Dockerfile @@ -1,8 +1,3 @@ -FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base -WORKDIR /app -EXPOSE 80 -EXPOSE 443 - FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY ["ApiLeapHit/ApiLeapHit.csproj", "ApiLeapHit/"] @@ -13,10 +8,15 @@ COPY . . WORKDIR "/src/ApiLeapHit" RUN dotnet build "ApiLeapHit.csproj" -c Release -o /app/build -FROM build AS publish -RUN dotnet publish "ApiLeapHit.csproj" -c Release -o /app/publish - -FROM base AS final +# Utilise l'image ASP.NET Core 6 pour exécuter l'application +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS final WORKDIR /app -COPY --from=publish /app/publish . +EXPOSE 80 +EXPOSE 443 + +# Installation du client MySQL pour .NET Core +RUN apt-get update && apt-get install -y mysql-client && apt-get clean + +# Copie les fichiers de l'application dans l'image et définit l'entrée pour lancer l'application +COPY --from=build /app/build . ENTRYPOINT ["dotnet", "ApiLeapHit.dll"] \ No newline at end of file From 6e51df2b4d82c028853a4d0d7a3260d3aa5b3d55 Mon Sep 17 00:00:00 2001 From: Noan RANDON Date: Tue, 21 Mar 2023 16:52:49 +0100 Subject: [PATCH 2/7] :memo: fail dockerFile --- code/server/Dockerfile | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code/server/Dockerfile b/code/server/Dockerfile index 056f416..b1845e6 100644 --- a/code/server/Dockerfile +++ b/code/server/Dockerfile @@ -1,3 +1,8 @@ +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY ["ApiLeapHit/ApiLeapHit.csproj", "ApiLeapHit/"] @@ -8,15 +13,10 @@ COPY . . WORKDIR "/src/ApiLeapHit" RUN dotnet build "ApiLeapHit.csproj" -c Release -o /app/build -# Utilise l'image ASP.NET Core 6 pour exécuter l'application -FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS final -WORKDIR /app -EXPOSE 80 -EXPOSE 443 +FROM build AS publish +RUN dotnet publish "ApiLeapHit.csproj" -c Release -o /app/publish -# Installation du client MySQL pour .NET Core -RUN apt-get update && apt-get install -y mysql-client && apt-get clean - -# Copie les fichiers de l'application dans l'image et définit l'entrée pour lancer l'application -COPY --from=build /app/build . +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "ApiLeapHit.dll"] \ No newline at end of file From 4b8a66cd01e9763fbd042f8db15b7f8c795bd0ca Mon Sep 17 00:00:00 2001 From: Bruno Da Costa Cunha Date: Tue, 21 Mar 2023 16:57:39 +0100 Subject: [PATCH 3/7] =?UTF-8?q?:hammer:=20encore=20des=20modifs=20du=20ser?= =?UTF-8?q?veur=20en=20mettant=20=C3=A0=20jour=20le=20client=20aussi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/server/Server/PongServer.cs | 17 ++++++++++------- code/server/Server/Room.cs | 29 ++++++++++++++--------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/code/server/Server/PongServer.cs b/code/server/Server/PongServer.cs index 2b8cbc8..316a151 100644 --- a/code/server/Server/PongServer.cs +++ b/code/server/Server/PongServer.cs @@ -84,7 +84,7 @@ public class PongServer UdpClient clientSocket = new UdpClient(clientEndPoint); room.playerHost = new KeyValuePair(data.Data,clientSocket); - room.nbPlayer++; + room.NbPlayer++; @@ -94,9 +94,9 @@ public class PongServer room.Port = nextPort; nextPort++; - - // Send connection message to client + + // Send port message to client byte[] connectionData = Encoding.ASCII.GetBytes(nextPort.ToString()); serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); @@ -114,14 +114,17 @@ public class PongServer UdpClient clientSocket = new UdpClient(clientEndPoint); room.playerJoin = new KeyValuePair(data.Data, clientSocket); - room.nbPlayer++; + room.NbPlayer++; - room.PropertyChanged += room.OnReadyChanged; + Console.WriteLine("New connection Client from " + remoteEndPoint.ToString()); - room.Port = nextPort; - nextPort++; + // Send port message to client + byte[] connectionData = Encoding.ASCII.GetBytes(nextPort.ToString()); + serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); + + room.PropertyChanged += room.OnReadyChanged; } diff --git a/code/server/Server/Room.cs b/code/server/Server/Room.cs index d26de3e..0252adf 100644 --- a/code/server/Server/Room.cs +++ b/code/server/Server/Room.cs @@ -31,20 +31,22 @@ namespace Server public int Port { get; set; } - public int nbPlayer = 0; - - public bool maxPlayer + public int NbPlayer { - get { return nbPlayer >= 2; } + get + { + return nbPlayer; + } set { - if (nbPlayer >= 2) + nbPlayer = value; + if (value >= 2) { - maxPlayer = true; - NotifyPropertyChanged("Ready"); + NotifyPropertyChanged("nbPlayer"); } } } + private int nbPlayer; protected void NotifyPropertyChanged(string propertyName) @@ -62,10 +64,6 @@ namespace Server { byte[] receivedData = clientSocket1.Receive(ref remoteEndPoint); - string receivedMessage = Encoding.ASCII.GetString(receivedData); - Console.WriteLine("Received from " + remoteEndPoint.ToString() + ": " + receivedMessage); - - clientSocket2.Send(receivedData, receivedData.Length, remoteEndPoint); } @@ -75,12 +73,13 @@ namespace Server { Room nbPlayer = sender as Room; - bool maxPlayer = nbPlayer.maxPlayer; + int maxPlayer = nbPlayer.nbPlayer; + + //IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Any, Port); + //UdpClient serverSocket = new UdpClient(serverEndPoint); - IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Any, Port); - UdpClient serverSocket = new UdpClient(serverEndPoint); - if (maxPlayer) + if (maxPlayer == 2) { Thread receiveThread1 = new Thread(() => ReceiveMessages(playerHost.Value, playerJoin.Value)); From 4a78c4bc560d337e644bb365709c968926759194 Mon Sep 17 00:00:00 2001 From: Hugo LIVET Date: Wed, 22 Mar 2023 21:22:41 +0100 Subject: [PATCH 4/7] :green_heart: CI --- .drone.yml | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/.drone.yml b/.drone.yml index 0a4df01..93c97e7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,6 +7,45 @@ trigger: - push steps: + + - name: build + image: mcr.microsoft.com/dotnet/sdk:6.0 + commands: + - cd code/server + - dotnet workload restore + - dotnet restore Server.sln + - dotnet build Server.sln -c Release --no-restore + - dotnet publish Server.sln -c Release --no-restore -o CI_PROJECT_DIR/build/release + + - name: tests + image: mcr.microsoft.com/dotnet/sdk:6.0 + commands: + - cd code/server + - dotnet restore Server.sln + - dotnet test Server.sln --no-restore + depends_on: [build] + + - name: code-analysis + image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dronesonarplugin-dotnet6 + commands: + - cd code/server + - dotnet workload restore + - dotnet restore Server.sln + - dotnet sonarscanner begin /k:PongSrv /d:sonar.host.url=$${PLUGIN_SONAR_HOST} /d:sonar.coverageReportPaths="coveragereport/SonarQube.xml" /d:sonar.coverage.exclusions="Tests/**" /d:sonar.login=$${PLUGIN_SONAR_TOKEN} + - dotnet build Server.sln -c Release --no-restore + - dotnet test Server.sln --logger trx --no-restore /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura --collect "XPlat Code Coverage" + - reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport" + - dotnet publish Server.sln -c Release --no-restore -o CI_PROJECT_DIR/build/release + - dotnet sonarscanner end /d:sonar.login=$${PLUGIN_SONAR_TOKEN} + secrets: [ SECRET_SONAR_LOGIN ] + settings: + # accessible en ligne de commande par ${PLUGIN_SONAR_HOST} + sonar_host: https://codefirst.iut.uca.fr/sonar/ + # accessible en ligne de commande par ${PLUGIN_SONAR_TOKEN} + sonar_token: + from_secret: SECRET_SONAR_LOGIN + depends_on: [tests] + - name: build-docker-image image: plugins/docker settings: From b0d54b2af9958614149ee5b3637f33e3488e54d3 Mon Sep 17 00:00:00 2001 From: Bruno Da Costa Cunha Date: Thu, 23 Mar 2023 10:01:05 +0100 Subject: [PATCH 5/7] =?UTF-8?q?:bug:=20mis=20=C3=A0=20jour=20du=20serveur,?= =?UTF-8?q?=20mais=20j'ai=20quand=20meme=20une=20exception=20lors=20de=20l?= =?UTF-8?q?a=20connexion=20client?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/server/Server/Room.cs | 8 ++++++++ code/server/Shared/DTO/Informations.cs | 12 +++++++++++- code/server/Shared/DTO/ObjectTransfert.cs | 6 ++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/code/server/Server/Room.cs b/code/server/Server/Room.cs index 0252adf..11b2197 100644 --- a/code/server/Server/Room.cs +++ b/code/server/Server/Room.cs @@ -8,6 +8,7 @@ using System.Text; using System.Threading.Tasks; using Shared.DTO; using System.ComponentModel; +using System.Text.Json; namespace Server { @@ -81,6 +82,13 @@ namespace Server if (maxPlayer == 2) { + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + + byte[] receivedDataHost = playerHost.Value.Receive(ref remoteEndPoint); + playerJoin.Value.Send(receivedDataHost, receivedDataHost.Length, remoteEndPoint); + + byte[] receivedDataJoin = playerJoin.Value.Receive(ref remoteEndPoint); + playerHost.Value.Send(receivedDataJoin, receivedDataJoin.Length, remoteEndPoint); Thread receiveThread1 = new Thread(() => ReceiveMessages(playerHost.Value, playerJoin.Value)); diff --git a/code/server/Shared/DTO/Informations.cs b/code/server/Shared/DTO/Informations.cs index 4974c43..db0044d 100644 --- a/code/server/Shared/DTO/Informations.cs +++ b/code/server/Shared/DTO/Informations.cs @@ -9,6 +9,16 @@ namespace Shared.DTO public class Informations { public Action Action { get; set; } - public string? IdRoom { get; set; } + public long Frame { get; set; } + public string TypeData { get; set; } + public string? IdRoom { get; set; } + + public Informations(Action action, long frame, string typeData, string? idRoom = null) + { + Action = action; + Frame = frame; + TypeData = typeData; + IdRoom = idRoom; + } } } diff --git a/code/server/Shared/DTO/ObjectTransfert.cs b/code/server/Shared/DTO/ObjectTransfert.cs index 5acfca2..3e2c017 100644 --- a/code/server/Shared/DTO/ObjectTransfert.cs +++ b/code/server/Shared/DTO/ObjectTransfert.cs @@ -10,5 +10,11 @@ namespace Shared.DTO { public Informations Informations { get; set; } public T Data { get; set; } + + public ObjectTransfert(Informations infos, T data) + { + Informations = infos; + Data = data; + } } } From e31c68d90b33c0a9c1e605df6e42c36a9c0c1b19 Mon Sep 17 00:00:00 2001 From: Bruno Da Costa Cunha Date: Thu, 23 Mar 2023 11:25:45 +0100 Subject: [PATCH 6/7] On ira tester mnt avec Hugo en tant que serveur pour regarder les packets qui arrivent via WireShark --- code/server/Server/PongServer.cs | 3 +-- code/server/Server/Room.cs | 6 +++--- code/server/Shared/DTO/ObjectTransfert.cs | 5 ----- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/code/server/Server/PongServer.cs b/code/server/Server/PongServer.cs index 316a151..c15a5f7 100644 --- a/code/server/Server/PongServer.cs +++ b/code/server/Server/PongServer.cs @@ -114,9 +114,7 @@ public class PongServer UdpClient clientSocket = new UdpClient(clientEndPoint); room.playerJoin = new KeyValuePair(data.Data, clientSocket); - room.NbPlayer++; - Console.WriteLine("New connection Client from " + remoteEndPoint.ToString()); @@ -125,6 +123,7 @@ public class PongServer serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); room.PropertyChanged += room.OnReadyChanged; + room.NbPlayer++; } diff --git a/code/server/Server/Room.cs b/code/server/Server/Room.cs index 11b2197..893b6c0 100644 --- a/code/server/Server/Room.cs +++ b/code/server/Server/Room.cs @@ -82,12 +82,12 @@ namespace Server if (maxPlayer == 2) { - IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 3133); byte[] receivedDataHost = playerHost.Value.Receive(ref remoteEndPoint); - playerJoin.Value.Send(receivedDataHost, receivedDataHost.Length, remoteEndPoint); - byte[] receivedDataJoin = playerJoin.Value.Receive(ref remoteEndPoint); + + playerJoin.Value.Send(receivedDataHost, receivedDataHost.Length, remoteEndPoint); playerHost.Value.Send(receivedDataJoin, receivedDataJoin.Length, remoteEndPoint); Thread receiveThread1 = new Thread(() => ReceiveMessages(playerHost.Value, playerJoin.Value)); diff --git a/code/server/Shared/DTO/ObjectTransfert.cs b/code/server/Shared/DTO/ObjectTransfert.cs index 3e2c017..e50061d 100644 --- a/code/server/Shared/DTO/ObjectTransfert.cs +++ b/code/server/Shared/DTO/ObjectTransfert.cs @@ -11,10 +11,5 @@ namespace Shared.DTO public Informations Informations { get; set; } public T Data { get; set; } - public ObjectTransfert(Informations infos, T data) - { - Informations = infos; - Data = data; - } } } From dcaa46107c18da66ffdc788c134c2deb84660c5e Mon Sep 17 00:00:00 2001 From: Bruno Da Costa Cunha Date: Thu, 23 Mar 2023 12:13:51 +0100 Subject: [PATCH 7/7] =?UTF-8?q?:bug:=20serveur=20n'arrive=20pas=20=C3=A0?= =?UTF-8?q?=20recevoir=20dans=20le=20port=20unique,=20on=20va=20resoudre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/server/Server/PongServer.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/server/Server/PongServer.cs b/code/server/Server/PongServer.cs index c15a5f7..c41803b 100644 --- a/code/server/Server/PongServer.cs +++ b/code/server/Server/PongServer.cs @@ -110,7 +110,7 @@ public class PongServer // Assign a unique port to the client - IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, nextPort); + IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, room.Port); UdpClient clientSocket = new UdpClient(clientEndPoint); room.playerJoin = new KeyValuePair(data.Data, clientSocket); @@ -125,7 +125,6 @@ public class PongServer room.PropertyChanged += room.OnReadyChanged; room.NbPlayer++; - } } \ No newline at end of file