diff --git a/serveurFTP/.gitigniore b/serveurFTP/.getigniore
similarity index 100%
rename from serveurFTP/.gitigniore
rename to serveurFTP/.getigniore
diff --git a/serveurFTP/src/main/java/sr/projet2/Request/CDUP.java b/serveurFTP/src/main/java/sr/projet2/Request/CDUP.java
new file mode 100644
index 0000000000000000000000000000000000000000..395037556ec3dcfa80fbfad6d7c378ecb22dfa1f
--- /dev/null
+++ b/serveurFTP/src/main/java/sr/projet2/Request/CDUP.java
@@ -0,0 +1,40 @@
+package sr.projet2.Request;
+
+import java.io.File;
+import java.io.IOException;
+
+import sr.projet2.Server.FtpConnexion;
+
+public class CDUP implements request {
+	private FtpConnexion ftp;
+	public CDUP(FtpConnexion ftp) {
+		this.ftp =ftp;
+	}
+
+	@Override
+	public void send() throws IOException{
+		if (this.ftp.getSocket() == null ) {
+			throw new IOException("Ftp server error");
+		}
+		try {
+			String newPath=this.ftp.getDirectory();
+			String[] pa=newPath.split("/");
+			newPath="";
+			if(pa.length>2) {
+			for(int i=1;i<pa.length-1;i++) {
+				newPath+="/"+pa[i];
+			}
+			}
+			else {
+				newPath="/";
+			}
+			this.ftp.SetDirectory(newPath);
+			this.ftp.getBufferedWriter().write("250 success to exit.\r\n");
+			this.ftp.getBufferedWriter().flush();
+		}
+		catch(IOException e){
+			throw new IOException("Connexion failed");
+		}
+	}
+
+}
diff --git a/serveurFTP/src/main/java/sr/projet2/Request/CWD.java b/serveurFTP/src/main/java/sr/projet2/Request/CWD.java
new file mode 100644
index 0000000000000000000000000000000000000000..0f13d03d81d53347e32dbebac06b741343b3266a
--- /dev/null
+++ b/serveurFTP/src/main/java/sr/projet2/Request/CWD.java
@@ -0,0 +1,46 @@
+package sr.projet2.Request;
+
+import java.io.File;
+import java.io.IOException;
+
+import sr.projet2.Server.FtpConnexion;
+
+public class CWD implements request {
+	private FtpConnexion ftp;
+	private String directory;
+	public CWD(FtpConnexion ftp,String directory) {
+		this.ftp =ftp;
+		this.directory=directory;
+	}
+
+	@Override
+	public void send() throws IOException{
+		if (this.ftp.getSocket() == null ) {
+			throw new IOException("Ftp server error");
+		}
+		try {
+			String newPath;
+			if(this.ftp.getDirectory().trim().equals("/")) {
+				newPath=this.ftp.getDirectory()+this.directory;
+			}
+			else {
+				newPath=this.ftp.getDirectory()+"/"+this.directory;
+
+			}
+			File file= new File(newPath);
+			if (file.exists() && file.canRead() && file.isDirectory()) {
+				this.ftp.SetDirectory(newPath);
+				this.ftp.getBufferedWriter().write("200 success to access to the directory.\r\n");
+				this.ftp.getBufferedWriter().flush();
+			}
+			else {
+				this.ftp.getBufferedWriter().write("550 failed to access to the directory. \r\n");
+				this.ftp.getBufferedWriter().flush();
+			}
+		}
+		catch(IOException e){
+			throw new IOException("Connexion failed");
+		}
+	}
+
+}
diff --git a/serveurFTP/src/main/java/sr/projet2/Request/LIST.java b/serveurFTP/src/main/java/sr/projet2/Request/LIST.java
index 6a1d2f145b0f0b3cbb924127135c1314f03818c8..84decec1197b3eed48e100db30495eb143ab6d18 100644
--- a/serveurFTP/src/main/java/sr/projet2/Request/LIST.java
+++ b/serveurFTP/src/main/java/sr/projet2/Request/LIST.java
@@ -1,6 +1,15 @@
 package sr.projet2.Request;
 
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
 import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.Socket;
+import java.nio.file.Files;
+import java.sql.Date;
+import java.text.SimpleDateFormat;
 
 import sr.projet2.Server.FtpConnexion;
 
@@ -16,8 +25,40 @@ public class LIST implements request {
 			throw new IOException("Ftp server error");
 		}
 		try {
-			this.ftp.getBufferedWriter().write("530 please login with USER AND PASS.\r\n");
-			this.ftp.getBufferedWriter().flush();
+			File file=new File(this.ftp.getDirectory());
+			if(file.isDirectory()) {
+				this.ftp.getBufferedWriter().write("150 Here comes the directory listing.\r\n");
+				this.ftp.getBufferedWriter().flush();
+				File[] files = file.listFiles();
+				Socket socket1=this.ftp.getServerSocket().accept();
+				BufferedReader bfR1 =new BufferedReader(new InputStreamReader(socket1.getInputStream()));
+				BufferedWriter bfW1 = new BufferedWriter(new OutputStreamWriter(socket1.getOutputStream()));
+				String res="";
+				for(File oneFile: files) {
+					int len =1;
+					if(oneFile.isDirectory() && oneFile.canRead()) {
+						res+="d"; // if directory
+						len=oneFile.listFiles().length;
+					}
+					else {
+						res+="-";
+					}
+					res+="rwxr-xr-x		"; //Permission
+					res+=len+" ";
+					//res+= Files.getOwner(oneFile.toPath()).toString()+"	";
+		    		res+= "root		 ";
+					Date date = new Date(oneFile.lastModified());
+		            SimpleDateFormat dateFormat = new SimpleDateFormat("MMM dd hh:mm");
+		            res+= dateFormat.format(date)+" ";
+		            res+=oneFile.getName()+"\r\n";
+
+				}
+	            bfW1.write(res);
+	            bfW1.flush();
+				socket1.close();
+				this.ftp.getBufferedWriter().write("226 Directory send OK.\r\n");
+				this.ftp.getBufferedWriter().flush();
+			}
 		}
 		catch(IOException e){
 			throw new IOException("Connexion failed");
diff --git a/serveurFTP/src/main/java/sr/projet2/Request/PASV.java b/serveurFTP/src/main/java/sr/projet2/Request/PASV.java
index 4b63fc64af2da144460cab3f89504caa6dccb0a8..bbad0719bbccd3ca4786e79f9363867699d95299 100644
--- a/serveurFTP/src/main/java/sr/projet2/Request/PASV.java
+++ b/serveurFTP/src/main/java/sr/projet2/Request/PASV.java
@@ -18,8 +18,9 @@ public class PASV implements request {
 			throw new IOException("Ftp server error");
 		}
 		try {
-			ServerSocket socket= new  ServerSocket(0);
-            int newPort = socket.getLocalPort();
+			ServerSocket s=new  ServerSocket(0);
+			this.ftp.SetServerSocket(s);
+            int newPort = this.ftp.getServerSocket().getLocalPort();
             int port1 = newPort / 256;
     		int port2 = newPort % 256;
     		String ips[] = this.ftp.getSocket().getLocalAddress().getHostAddress().split("\\.");
diff --git a/serveurFTP/src/main/java/sr/projet2/Server/FtpConnexion.java b/serveurFTP/src/main/java/sr/projet2/Server/FtpConnexion.java
index e4df8ccc619151b52b8a7c3787f1fb6e828aed7a..150815e22ff185b7f15c22ba4663ec331f35844f 100644
--- a/serveurFTP/src/main/java/sr/projet2/Server/FtpConnexion.java
+++ b/serveurFTP/src/main/java/sr/projet2/Server/FtpConnexion.java
@@ -5,11 +5,15 @@ import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
+import java.net.ServerSocket;
 import java.net.Socket;
 
 import sr.projet2.Request.AUTH_SSL;
 import sr.projet2.Request.AUTH_TLS;
+import sr.projet2.Request.CDUP;
+import sr.projet2.Request.CWD;
 import sr.projet2.Request.FEAT;
+import sr.projet2.Request.LIST;
 import sr.projet2.Request.PASS;
 import sr.projet2.Request.PASV;
 import sr.projet2.Request.PWD;
@@ -22,7 +26,8 @@ public class FtpConnexion extends Thread {
 	private BufferedReader bfR;
 	private BufferedWriter bfW;
 	private boolean Connected;
-	private String directory;
+	private static String directory;
+	public static ServerSocket socketServer;
 	public FtpConnexion(Socket socket) throws IOException {
 		this.socket=socket;
 		this.bfR =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
@@ -99,6 +104,19 @@ public class FtpConnexion extends Thread {
 					PASV request= new PASV(this);
 					request.send();
 				}
+				else if (readLine.startsWith("LIST")){
+					LIST request= new LIST(this);
+					request.send();
+				}
+				else if (readLine.startsWith("CWD")){
+					String[] mystring=readLine.split(" ");
+					CWD request= new CWD(this,mystring[1].trim());
+					request.send();
+				}
+				else if (readLine.startsWith("CDUP")){
+					CDUP request= new CDUP(this);
+					request.send();
+				}
 			}
 			else {
 				this.bfW.write("530 server is not connected\r\n");
@@ -129,4 +147,13 @@ public class FtpConnexion extends Thread {
 	public String getDirectory(){
 		return this.directory;
 	}
+	public void SetDirectory(String Directory){
+		this.directory=Directory;
+	}
+	public ServerSocket getServerSocket(){
+		return this.socketServer;
+	}
+	public void SetServerSocket(ServerSocket s){
+		this.socketServer=s;
+	}
 }
diff --git a/serveurFTP/target/classes/sr/projet2/Request/CDUP.class b/serveurFTP/target/classes/sr/projet2/Request/CDUP.class
new file mode 100644
index 0000000000000000000000000000000000000000..56394ab94dff6c99a064f76f98ee060f96026386
Binary files /dev/null and b/serveurFTP/target/classes/sr/projet2/Request/CDUP.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/CWD.class b/serveurFTP/target/classes/sr/projet2/Request/CWD.class
new file mode 100644
index 0000000000000000000000000000000000000000..8815f602c12a6d6a09abee488f1811e5cf7c6aad
Binary files /dev/null and b/serveurFTP/target/classes/sr/projet2/Request/CWD.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/FEAT.class b/serveurFTP/target/classes/sr/projet2/Request/FEAT.class
index e7210017bdad9ae8f827a6119c7981447694a7b3..c42179588c498dfd77fdc3b313e23cf706c58094 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Request/FEAT.class and b/serveurFTP/target/classes/sr/projet2/Request/FEAT.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/LIST.class b/serveurFTP/target/classes/sr/projet2/Request/LIST.class
index 89172d9ac6f3ae59b2fd580bd965f5feeb564407..236d176ca12a0029715e29203e9fe30402e0db6e 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Request/LIST.class and b/serveurFTP/target/classes/sr/projet2/Request/LIST.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/PASV.class b/serveurFTP/target/classes/sr/projet2/Request/PASV.class
index 9339601d5975d624f9cdead16ac3b92c8eddb3d2..c80550d3d2f94bf401af8c0f20d1fbf2b92f4722 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Request/PASV.class and b/serveurFTP/target/classes/sr/projet2/Request/PASV.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/PWD.class b/serveurFTP/target/classes/sr/projet2/Request/PWD.class
index bd2e0d30b96f623de53d793640eebeab645495a7..f9904b7dff6239f671dc5904f77e92cd449af897 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Request/PWD.class and b/serveurFTP/target/classes/sr/projet2/Request/PWD.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/TYPE.class b/serveurFTP/target/classes/sr/projet2/Request/TYPE.class
index defc04d7041d592c233da7c8ed927073ddb924f9..337932a35eb6017a6306acebe34a6bdb656a7327 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Request/TYPE.class and b/serveurFTP/target/classes/sr/projet2/Request/TYPE.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/USER.class b/serveurFTP/target/classes/sr/projet2/Request/USER.class
index 441896aaf8363cc9b9dbd90ec1aab6ae7bb978f4..f886618a06165804b7a61e59a98f8fac54c7ad71 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Request/USER.class and b/serveurFTP/target/classes/sr/projet2/Request/USER.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Server/FtpConnexion.class b/serveurFTP/target/classes/sr/projet2/Server/FtpConnexion.class
index 47d2df0040fc2b08f3e6bb61701ac251be384ea2..89528432d1ca93fb9f56329e4cc3032c397811aa 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Server/FtpConnexion.class and b/serveurFTP/target/classes/sr/projet2/Server/FtpConnexion.class differ
diff --git a/serveurFTP/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/serveurFTP/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index c8427259419a3de002956638a4e6d273c7158048..064918ea60f269f5d497b043d0c38998edd4b587 100644
--- a/serveurFTP/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/serveurFTP/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -2,12 +2,14 @@
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Main.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/SYST.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/TYPE.java
+/home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/CDUP.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/USER.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/LIST.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/AUTH_TLS.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/request.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/PWD.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/PASS.java
+/home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/CWD.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/PASV.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/AUTH_SSL.java
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Server/FtpConnexion.java
diff --git a/serveurFTP/target/serveurFTP-1.0-SNAPSHOT.jar b/serveurFTP/target/serveurFTP-1.0-SNAPSHOT.jar
index 85cc54b1bba6e2606a9dd8216b5f5abdb3ce1777..d3c30b553baed36eb65ed7a948c1d17d1ba8c290 100644
Binary files a/serveurFTP/target/serveurFTP-1.0-SNAPSHOT.jar and b/serveurFTP/target/serveurFTP-1.0-SNAPSHOT.jar differ
diff --git a/serveurFTP/target/surefire-reports/TEST-sr.projet2.AppTest.xml b/serveurFTP/target/surefire-reports/TEST-sr.projet2.AppTest.xml
index 8f8ab532b44fbd7cfafbb501d26c8dc35c58ce79..04f2f66785ae373137c679ddc97e7a57a9598841 100644
--- a/serveurFTP/target/surefire-reports/TEST-sr.projet2.AppTest.xml
+++ b/serveurFTP/target/surefire-reports/TEST-sr.projet2.AppTest.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" name="sr.projet2.AppTest" time="0.048" tests="1" errors="0" skipped="0" failures="0">
+<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" name="sr.projet2.AppTest" time="0.027" tests="1" errors="0" skipped="0" failures="0">
   <properties>
     <property name="sun.desktop" value="gnome"/>
     <property name="awt.toolkit" value="sun.awt.X11.XToolkit"/>
@@ -16,7 +16,7 @@
     <property name="sun.java.launcher" value="SUN_STANDARD"/>
     <property name="user.country" value="FR"/>
     <property name="sun.boot.library.path" value="/usr/lib/jvm/java-11-openjdk-amd64/lib"/>
-    <property name="sun.java.command" value="/home/hocine/eclipse-workspace/serveurFTP/target/surefire/surefirebooter7079129417024759708.jar /home/hocine/eclipse-workspace/serveurFTP/target/surefire 2021-03-07T15-29-07_870-jvmRun1 surefire9845237247780243398tmp surefire_015024554498971470310tmp"/>
+    <property name="sun.java.command" value="/home/hocine/eclipse-workspace/serveurFTP/target/surefire/surefirebooter14735518812710354340.jar /home/hocine/eclipse-workspace/serveurFTP/target/surefire 2021-03-07T18-57-43_678-jvmRun1 surefire10410808926169169035tmp surefire_018045902178909471772tmp"/>
     <property name="jdk.debug" value="release"/>
     <property name="surefire.test.class.path" value="/home/hocine/eclipse-workspace/serveurFTP/target/test-classes:/home/hocine/eclipse-workspace/serveurFTP/target/classes:/home/hocine/.m2/repository/junit/junit/4.11/junit-4.11.jar:/home/hocine/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar:"/>
     <property name="sun.cpu.endian" value="little"/>
@@ -32,7 +32,7 @@
     <property name="java.specification.name" value="Java Platform API Specification"/>
     <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
     <property name="java.awt.graphicsenv" value="sun.awt.X11GraphicsEnvironment"/>
-    <property name="surefire.real.class.path" value="/home/hocine/eclipse-workspace/serveurFTP/target/surefire/surefirebooter7079129417024759708.jar"/>
+    <property name="surefire.real.class.path" value="/home/hocine/eclipse-workspace/serveurFTP/target/surefire/surefirebooter14735518812710354340.jar"/>
     <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
     <property name="java.runtime.version" value="11.0.10+9-Ubuntu-0ubuntu1.20.04"/>
     <property name="user.name" value="hocine"/>
@@ -57,5 +57,5 @@
     <property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
     <property name="java.class.version" value="55.0"/>
   </properties>
-  <testcase name="shouldAnswerWithTrue" classname="sr.projet2.AppTest" time="0.003"/>
+  <testcase name="shouldAnswerWithTrue" classname="sr.projet2.AppTest" time="0.001"/>
 </testsuite>
\ No newline at end of file
diff --git a/serveurFTP/target/surefire-reports/sr.projet2.AppTest.txt b/serveurFTP/target/surefire-reports/sr.projet2.AppTest.txt
index 70439b27ebc909d6ca072e40ea128d16678b8d76..cd1d9c7f24ea109a23cd9234d25120344d979244 100644
--- a/serveurFTP/target/surefire-reports/sr.projet2.AppTest.txt
+++ b/serveurFTP/target/surefire-reports/sr.projet2.AppTest.txt
@@ -1,4 +1,4 @@
 -------------------------------------------------------------------------------
 Test set: sr.projet2.AppTest
 -------------------------------------------------------------------------------
-Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.048 s - in sr.projet2.AppTest
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 s - in sr.projet2.AppTest