diff --git a/serveurFTP/.gitigniore b/serveurFTP/.gitigniore
new file mode 100644
index 0000000000000000000000000000000000000000..21434565d9f187721c0b740555479670adebc458
--- /dev/null
+++ b/serveurFTP/.gitigniore
@@ -0,0 +1,109 @@
+
+# Created by https://www.toptal.com/developers/gitignore/api/maven,java,eclipse
+# Edit at https://www.toptal.com/developers/gitignore?templates=maven,java,eclipse
+
+### Eclipse ###
+.metadata
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.settings/
+.loadpath
+.recommenders
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# PyDev specific (Python IDE for Eclipse)
+*.pydevproject
+
+# CDT-specific (C/C++ Development Tooling)
+.cproject
+
+# CDT- autotools
+.autotools
+
+# Java annotation processor (APT)
+.factorypath
+
+# PDT-specific (PHP Development Tools)
+.buildpath
+
+# sbteclipse plugin
+.target
+
+# Tern plugin
+.tern-project
+
+# TeXlipse plugin
+.texlipse
+
+# STS (Spring Tool Suite)
+.springBeans
+
+# Code Recommenders
+.recommenders/
+
+# Annotation Processing
+.apt_generated/
+.apt_generated_test/
+
+# Scala IDE specific (Scala & Java development for Eclipse)
+.cache-main
+.scala_dependencies
+.worksheet
+
+# Uncomment this line if you wish to ignore the project description file.
+# Typically, this file would be tracked if it contains build/dependency configurations:
+#.project
+
+### Eclipse Patch ###
+# Spring Boot Tooling
+.sts4-cache/
+
+### Java ###
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+### Maven ###
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+# https://github.com/takari/maven-wrapper#usage-without-binary-jar
+.mvn/wrapper/maven-wrapper.jar
+
+# End of https://www.toptal.com/developers/gitignore/api/maven,java,eclipse
diff --git a/serveurFTP/.settings/org.eclipse.m2e.core.prefs b/serveurFTP/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..f897a7f1cb2389f85fe6381425d29f0a9866fb65
--- /dev/null
+++ b/serveurFTP/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/serveurFTP/bin/.project b/serveurFTP/bin/.project
new file mode 100644
index 0000000000000000000000000000000000000000..51988d6c46aa0da6db514f3dfaa0a671ba57b356
--- /dev/null
+++ b/serveurFTP/bin/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>serveurFTP</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/serveurFTP/bin/.settings/org.eclipse.core.resources.prefs b/serveurFTP/bin/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c
--- /dev/null
+++ b/serveurFTP/bin/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/serveurFTP/bin/pom.xml b/serveurFTP/bin/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..714a36bc1bc427ecf60490b576c5259d9fc9f8fd
--- /dev/null
+++ b/serveurFTP/bin/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>sr.projet2</groupId>
+  <artifactId>serveurFTP</artifactId>
+  <version>1.0-SNAPSHOT</version>
+
+  <name>serveurFTP</name>
+  <!-- FIXME change it to the project's website -->
+  <url>http://www.example.com</url>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.7</maven.compiler.source>
+    <maven.compiler.target>1.7</maven.compiler.target>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.11</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
+      <plugins>
+        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
+        <plugin>
+          <artifactId>maven-clean-plugin</artifactId>
+          <version>3.1.0</version>
+        </plugin>
+        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
+        <plugin>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>3.0.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.8.0</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>2.22.1</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-jar-plugin</artifactId>
+          <version>3.0.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-install-plugin</artifactId>
+          <version>2.5.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-deploy-plugin</artifactId>
+          <version>2.8.2</version>
+        </plugin>
+        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
+        <plugin>
+          <artifactId>maven-site-plugin</artifactId>
+          <version>3.7.1</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-project-info-reports-plugin</artifactId>
+          <version>3.0.0</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+</project>
diff --git a/serveurFTP/bin/src/main/java/sr/projet2/App.class b/serveurFTP/bin/src/main/java/sr/projet2/App.class
new file mode 100644
index 0000000000000000000000000000000000000000..a6b2b3df52065e1a3f915bf7ca1d5dca340503a1
Binary files /dev/null and b/serveurFTP/bin/src/main/java/sr/projet2/App.class differ
diff --git a/serveurFTP/bin/src/test/java/sr/projet2/AppTest.class b/serveurFTP/bin/src/test/java/sr/projet2/AppTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..42cbb8c5bb3c3397380a80012fa7379b76e7b71a
Binary files /dev/null and b/serveurFTP/bin/src/test/java/sr/projet2/AppTest.class differ
diff --git a/serveurFTP/pom.xml b/serveurFTP/pom.xml
index 714a36bc1bc427ecf60490b576c5259d9fc9f8fd..43351d634735955dcd4ed5b66d6b6ad4d4223234 100644
--- a/serveurFTP/pom.xml
+++ b/serveurFTP/pom.xml
@@ -35,6 +35,16 @@
           <artifactId>maven-clean-plugin</artifactId>
           <version>3.1.0</version>
         </plugin>
+        <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-javadoc-plugin</artifactId>
+              <version>3.0.0</version>
+              <configuration>
+                  <reportOutputDirectory>${project.build.directory}/docs</reportOutputDirectory>
+                  <destDir>docs</destDir>
+                  <nohelp>true</nohelp>
+              </configuration>
+         </plugin>
         <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
         <plugin>
           <artifactId>maven-resources-plugin</artifactId>
@@ -51,6 +61,7 @@
         <plugin>
           <artifactId>maven-jar-plugin</artifactId>
           <version>3.0.2</version>
+          <configuration><archive><manifest><mainClass>sr.projet2.Main</mainClass></manifest></archive></configuration>
         </plugin>
         <plugin>
           <artifactId>maven-install-plugin</artifactId>
diff --git a/serveurFTP/src/main/java/sr/projet2/Request/FEAT.java b/serveurFTP/src/main/java/sr/projet2/Request/FEAT.java
new file mode 100644
index 0000000000000000000000000000000000000000..035ed15c386ba8a8184cffec8282014cb0e119ac
--- /dev/null
+++ b/serveurFTP/src/main/java/sr/projet2/Request/FEAT.java
@@ -0,0 +1,28 @@
+package sr.projet2.Request;
+
+import java.io.IOException;
+
+import sr.projet2.Server.FtpConnexion;
+
+public class FEAT implements request {
+	private FtpConnexion ftp;
+	public FEAT(FtpConnexion ftp) {
+		this.ftp =ftp;
+	}
+
+	@Override
+	public void send() throws IOException{
+		if (this.ftp.getSocket() == null ) {
+			throw new IOException("Ftp server error");
+		}
+		try {
+			this.ftp.getBufferedWriter().write("211-Features.\r\n");
+			this.ftp.getBufferedWriter().write("211 End.\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
new file mode 100644
index 0000000000000000000000000000000000000000..6a1d2f145b0f0b3cbb924127135c1314f03818c8
--- /dev/null
+++ b/serveurFTP/src/main/java/sr/projet2/Request/LIST.java
@@ -0,0 +1,27 @@
+package sr.projet2.Request;
+
+import java.io.IOException;
+
+import sr.projet2.Server.FtpConnexion;
+
+public class LIST implements request {
+	private FtpConnexion ftp;
+	public LIST(FtpConnexion ftp) {
+		this.ftp =ftp;
+	}
+
+	@Override
+	public void send() throws IOException{
+		if (this.ftp.getSocket() == null ) {
+			throw new IOException("Ftp server error");
+		}
+		try {
+			this.ftp.getBufferedWriter().write("530 please login with USER AND PASS.\r\n");
+			this.ftp.getBufferedWriter().flush();
+		}
+		catch(IOException e){
+			throw new IOException("Connexion failed");
+		}
+	}
+
+}
diff --git a/serveurFTP/src/main/java/sr/projet2/Request/PASS.java b/serveurFTP/src/main/java/sr/projet2/Request/PASS.java
index 5ff9d1338e824d8d0ef3701f2d2aa3a48ac327ea..90e22a9ba910019476f845354316211d2161aed3 100644
--- a/serveurFTP/src/main/java/sr/projet2/Request/PASS.java
+++ b/serveurFTP/src/main/java/sr/projet2/Request/PASS.java
@@ -6,8 +6,10 @@ import sr.projet2.Server.FtpConnexion;
 
 public class PASS implements request {
 	private FtpConnexion ftp;
-	public PASS(FtpConnexion ftp) {
+	private String pass;
+	public PASS(FtpConnexion ftp, String pass) {
 		this.ftp =ftp;
+		this.pass=pass;
 	}
 
 	@Override
@@ -17,8 +19,14 @@ public class PASS implements request {
 
 		}
 		try {
-			this.ftp.getBufferedWriter().write("Login successful.\r\n");
-			this.ftp.getBufferedWriter().flush();
+			if (this.pass.equals("anonymous")){
+				this.ftp.getBufferedWriter().write("230 Login successful.\r\n");
+				this.ftp.getBufferedWriter().flush();
+				this.ftp.connect();
+			}else{
+				this.ftp.getBufferedWriter().write("530 unknown Password\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
new file mode 100644
index 0000000000000000000000000000000000000000..4b63fc64af2da144460cab3f89504caa6dccb0a8
--- /dev/null
+++ b/serveurFTP/src/main/java/sr/projet2/Request/PASV.java
@@ -0,0 +1,35 @@
+package sr.projet2.Request;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+import sr.projet2.Server.FtpConnexion;
+
+public class PASV implements request {
+	private FtpConnexion ftp;
+	public PASV(FtpConnexion ftp) {
+		this.ftp =ftp;
+	}
+
+	@Override
+	public void send() throws IOException{
+		if (this.ftp.getSocket() == null ) {
+			throw new IOException("Ftp server error");
+		}
+		try {
+			ServerSocket socket= new  ServerSocket(0);
+            int newPort = socket.getLocalPort();
+            int port1 = newPort / 256;
+    		int port2 = newPort % 256;
+    		String ips[] = this.ftp.getSocket().getLocalAddress().getHostAddress().split("\\.");
+    		String ip = ips[0] + "," + ips[1] + "," + ips[2] + "," + ips[3] + "," + port1 + "," + port2;
+			this.ftp.getBufferedWriter().write("227 Entering Passive Mode ("+ip+").\r\n");
+			this.ftp.getBufferedWriter().flush();
+		}
+		catch(IOException e){
+			throw new IOException("Connexion failed");
+		}
+	}
+
+}
diff --git a/serveurFTP/src/main/java/sr/projet2/Request/PWD.java b/serveurFTP/src/main/java/sr/projet2/Request/PWD.java
new file mode 100644
index 0000000000000000000000000000000000000000..f3c1263935e891dc2ab6830b5620879dd3419eb1
--- /dev/null
+++ b/serveurFTP/src/main/java/sr/projet2/Request/PWD.java
@@ -0,0 +1,28 @@
+package sr.projet2.Request;
+
+import java.io.IOException;
+
+import sr.projet2.Server.FtpConnexion;
+
+public class PWD implements request {
+	private FtpConnexion ftp;
+	public PWD(FtpConnexion ftp) {
+		this.ftp =ftp;
+	}
+
+	@Override
+	public void send() throws IOException{
+		if (this.ftp.getSocket() == null ) {
+			throw new IOException("Ftp server error");
+		}
+		try {
+			
+			this.ftp.getBufferedWriter().write("257 \""+this.ftp.getDirectory()+"\" is the current 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/SYST.java b/serveurFTP/src/main/java/sr/projet2/Request/SYST.java
new file mode 100644
index 0000000000000000000000000000000000000000..f5d3d8094f523e9421fb933c8dfec8d07848bf5d
--- /dev/null
+++ b/serveurFTP/src/main/java/sr/projet2/Request/SYST.java
@@ -0,0 +1,27 @@
+package sr.projet2.Request;
+
+import java.io.IOException;
+
+import sr.projet2.Server.FtpConnexion;
+
+public class SYST implements request {
+	private FtpConnexion ftp;
+	public SYST(FtpConnexion ftp) {
+		this.ftp =ftp;
+	}
+
+	@Override
+	public void send() throws IOException{
+		if (this.ftp.getSocket() == null ) {
+			throw new IOException("Ftp server error");
+		}
+		try {
+			this.ftp.getBufferedWriter().write("215 UNIX Type: L8.\r\n");
+			this.ftp.getBufferedWriter().flush();
+		}
+		catch(IOException e){
+			throw new IOException("Connexion failed");
+		}
+	}
+
+}
diff --git a/serveurFTP/src/main/java/sr/projet2/Request/TYPE.java b/serveurFTP/src/main/java/sr/projet2/Request/TYPE.java
new file mode 100644
index 0000000000000000000000000000000000000000..35190e9e6ecb1ad119e7671d375d74a302539348
--- /dev/null
+++ b/serveurFTP/src/main/java/sr/projet2/Request/TYPE.java
@@ -0,0 +1,47 @@
+package sr.projet2.Request;
+
+import java.io.IOException;
+
+import sr.projet2.Server.FtpConnexion;
+
+public class TYPE implements request {
+	private FtpConnexion ftp;
+	private String type;
+	public TYPE(FtpConnexion ftp,String type) {
+		this.ftp =ftp;
+		this.type=type;
+	}
+
+	@Override
+	public void send() throws IOException{
+		if (this.ftp.getSocket() == null ) {
+			throw new IOException("Ftp server error");
+		}
+		try {
+	    	switch(this.type) {
+	    		case "A" : 
+	    			this.type = "ASCII";
+	    			break;
+	    		case "E" : 
+	    			this.type = "EBCDIC"; 
+	    			break;
+	    		case "I" : 
+	    			this.type = "Switching to Binary mode"; 
+	    			break;
+	    		case "L" : 
+	    			this.type = "local"; 
+	    			break;
+	    		default: 
+	    			this.ftp.getBufferedWriter().write("400 incorrect type.\r\n"); 
+	    			this.ftp.getBufferedWriter().flush();
+	    			return;
+	    	}
+			this.ftp.getBufferedWriter().write("200 Type "+this.type+".\r\n");
+			this.ftp.getBufferedWriter().flush();
+		}
+		catch(IOException e){
+			throw new IOException("Connexion failed");
+		}
+	}
+
+}
diff --git a/serveurFTP/src/main/java/sr/projet2/Request/USER.java b/serveurFTP/src/main/java/sr/projet2/Request/USER.java
index 8844b2e607f01ac775ce98f7814558f8c89e944d..a52229144ffe55501a37f28d5088779e3b7c0035 100644
--- a/serveurFTP/src/main/java/sr/projet2/Request/USER.java
+++ b/serveurFTP/src/main/java/sr/projet2/Request/USER.java
@@ -6,18 +6,26 @@ import sr.projet2.Server.FtpConnexion;
 
 public class USER implements request {
 	private FtpConnexion ftp;
-	public USER(FtpConnexion ftp) {
+	private String user;
+	public USER(FtpConnexion ftp,String user) {
 		this.ftp =ftp;
+		this.user=user;
 	}
 
 	@Override
 	public void send() throws IOException{
 		if (this.ftp.getSocket() == null ) {
-			
+			throw new IOException("Ftp server error");
 		}
 		try {
-			this.ftp.getBufferedWriter().write("331 PLEASE SPECIFY THE PASSWORD.");
-			this.ftp.getBufferedWriter().flush();
+			if (this.user.equals("anonymous")){
+				this.ftp.getBufferedWriter().write("331 PLEASE SPECIFY THE PASSWORD\r\n");
+				this.ftp.getBufferedWriter().flush();
+			}
+			else{
+				this.ftp.getBufferedWriter().write("530 unknown User\r\n");
+				this.ftp.getBufferedWriter().flush();
+			}
 		}
 		catch(IOException e){
 			throw new IOException("Connexion failed");
diff --git a/serveurFTP/src/main/java/sr/projet2/Server/ConnectionServer.java b/serveurFTP/src/main/java/sr/projet2/Server/ConnectionServer.java
index 23f09fe08d51aac86d7f1eca76b79958b182c6a0..680d39ac0def9f51280b2ab0f27377120be61afe 100644
--- a/serveurFTP/src/main/java/sr/projet2/Server/ConnectionServer.java
+++ b/serveurFTP/src/main/java/sr/projet2/Server/ConnectionServer.java
@@ -7,13 +7,21 @@ import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.net.ServerSocket;
 import java.net.Socket;
+import java.util.Random;
 
 public class ConnectionServer {
 	private int PORT;
 	private ServerSocket srvSckt;
 	
 	public ConnectionServer (int PORT) throws IOException {
+		if(PORT>1024 && PORT<8080){
 		this.PORT=PORT;
+		}
+		else {
+			Random rand = new Random(); 
+			int nombreAleatoire = rand.nextInt(8079 - 1025) + 1024;
+			this.PORT=nombreAleatoire;
+		}
 		server();
 		
 	}
@@ -22,6 +30,7 @@ public class ConnectionServer {
 	public void server() throws IOException {
 		try {
 		this.srvSckt=new ServerSocket(this.PORT);
+		System.out.println("server started");
 		}
 		catch (IOException e) {
 			throw new IOException("Connexion failed");
@@ -31,10 +40,8 @@ public class ConnectionServer {
 	public void serverConnect() throws IOException {
 		try {
 		Socket socket=this.srvSckt.accept();
-		BufferedReader bfR =new BufferedReader(new InputStreamReader(socket.getInputStream()));
-		BufferedWriter bfW = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
-		FtpConnexion ftp= new FtpConnexion(socket, bfR, bfW);
-		ftp.start();
+		FtpConnexion ftp= new FtpConnexion(socket);
+		ftp.run();
 		}
 		catch(IOException e){
 			e.printStackTrace();
diff --git a/serveurFTP/src/main/java/sr/projet2/Server/FtpConnexion.java b/serveurFTP/src/main/java/sr/projet2/Server/FtpConnexion.java
index 9439c51f2aaf0decc0cd6e306e041d9ef5aaa810..e4df8ccc619151b52b8a7c3787f1fb6e828aed7a 100644
--- a/serveurFTP/src/main/java/sr/projet2/Server/FtpConnexion.java
+++ b/serveurFTP/src/main/java/sr/projet2/Server/FtpConnexion.java
@@ -3,22 +3,32 @@ package sr.projet2.Server;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
 import java.net.Socket;
 
 import sr.projet2.Request.AUTH_SSL;
 import sr.projet2.Request.AUTH_TLS;
+import sr.projet2.Request.FEAT;
 import sr.projet2.Request.PASS;
+import sr.projet2.Request.PASV;
+import sr.projet2.Request.PWD;
+import sr.projet2.Request.SYST;
+import sr.projet2.Request.TYPE;
 import sr.projet2.Request.USER;
 
 public class FtpConnexion extends Thread {
 	private Socket socket;
 	private BufferedReader bfR;
 	private BufferedWriter bfW;
-	public FtpConnexion(Socket socket,BufferedReader bfR,BufferedWriter bfW) {
+	private boolean Connected;
+	private String directory;
+	public FtpConnexion(Socket socket) throws IOException {
 		this.socket=socket;
-		this.bfR=bfR;
-		this.bfW=bfW;
-		
+		this.bfR =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
+		this.bfW = new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream()));
+		this.Connected=false;
+		this.directory="/";
 	}
 	
 	public void auth() throws  IOException{
@@ -47,23 +57,54 @@ public class FtpConnexion extends Thread {
 	}
 	
 	
-	public void read(String s) throws IOException {
-		if(s.startsWith("AUTH TLS")) {
+	public void read(String readLine) throws IOException {
+		if(readLine.startsWith("AUTH TLS")) {
 			AUTH_TLS request= new AUTH_TLS(this);
 			request.send();
 		}
-		else if (s.startsWith("AUTH SSL")){
+		else if (readLine.startsWith("AUTH SSL")){
 			AUTH_SSL request= new AUTH_SSL(this);
 			request.send();
 		}
-		else if (s.startsWith("USER")){
-			USER request= new USER(this);
+		else if (readLine.startsWith("USER")){
+			String[] mystring=readLine.split(" ");
+			USER request= new USER(this,mystring[1].trim());
 			request.send();
 		}
-		else if (s.startsWith("PASS")){
-			PASS request= new PASS(this);
+		else if (readLine.startsWith("PASS")){
+			String[] mystring=readLine.split(" ");
+			PASS request= new PASS(this,mystring[1].trim());
 			request.send();
 		}
+		else {
+			if(this.Connected) {
+				if(readLine.startsWith("PWD")) {
+					PWD request= new PWD(this);
+					request.send();
+				}
+				else if(readLine.startsWith("SYST")) {
+					SYST request= new SYST(this);
+					request.send();
+				}
+				else if(readLine.startsWith("FEAT")) {
+					FEAT request= new FEAT(this);
+					request.send();
+				}
+				else if (readLine.startsWith("TYPE")){
+					String[] mystring=readLine.split(" ");
+					TYPE request= new TYPE(this,mystring[1].trim());
+					request.send();
+				}
+				else if (readLine.startsWith("PASV")){
+					PASV request= new PASV(this);
+					request.send();
+				}
+			}
+			else {
+				this.bfW.write("530 server is not connected\r\n");
+				this.bfW.flush();
+			}
+		}
 
 	}
 	
@@ -76,6 +117,16 @@ public class FtpConnexion extends Thread {
 	public BufferedReader getBufferedReader() {
 		return this.bfR;
 	}
-
-
+	public boolean getConnectedState(){
+		return this.Connected;
+	}
+	public void connect() {
+		this.Connected=true;
+	}
+	public void disconnect(){
+		this.Connected=false;
+	}
+	public String getDirectory(){
+		return this.directory;
+	}
 }
diff --git a/serveurFTP/target/classes/sr/projet2/Main.class b/serveurFTP/target/classes/sr/projet2/Main.class
index 618307915fd53b30c751562e01ea1a07763f9023..c831be5bfff64cca7e6e16300ada5fe339697cc6 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Main.class and b/serveurFTP/target/classes/sr/projet2/Main.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/AUTH_SSL.class b/serveurFTP/target/classes/sr/projet2/Request/AUTH_SSL.class
index 3ab14ed8e9707b02b2a2ebeb7527ffa74facdaf8..c56d8c69a147cb02dd4af7a905d7c778fb049a0e 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Request/AUTH_SSL.class and b/serveurFTP/target/classes/sr/projet2/Request/AUTH_SSL.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/AUTH_TLS.class b/serveurFTP/target/classes/sr/projet2/Request/AUTH_TLS.class
index 2ec0165857e1d599560f02fd0329e1ea028e1d4a..15c72760490642f10345209ad68b69fd38c4178a 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Request/AUTH_TLS.class and b/serveurFTP/target/classes/sr/projet2/Request/AUTH_TLS.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/FEAT.class b/serveurFTP/target/classes/sr/projet2/Request/FEAT.class
new file mode 100644
index 0000000000000000000000000000000000000000..e7210017bdad9ae8f827a6119c7981447694a7b3
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..89172d9ac6f3ae59b2fd580bd965f5feeb564407
Binary files /dev/null and b/serveurFTP/target/classes/sr/projet2/Request/LIST.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/PASS.class b/serveurFTP/target/classes/sr/projet2/Request/PASS.class
index 3bb9f9b777f834b478e3cf6f903fabc15a02f8fb..dfad436850b26687c3096b4bad42989ff56fe3a3 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Request/PASS.class and b/serveurFTP/target/classes/sr/projet2/Request/PASS.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/PASV.class b/serveurFTP/target/classes/sr/projet2/Request/PASV.class
new file mode 100644
index 0000000000000000000000000000000000000000..9339601d5975d624f9cdead16ac3b92c8eddb3d2
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..bd2e0d30b96f623de53d793640eebeab645495a7
Binary files /dev/null and b/serveurFTP/target/classes/sr/projet2/Request/PWD.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/SYST.class b/serveurFTP/target/classes/sr/projet2/Request/SYST.class
new file mode 100644
index 0000000000000000000000000000000000000000..7ce9cc66e0e84ccd84bd25d9f765cbaa16d73086
Binary files /dev/null and b/serveurFTP/target/classes/sr/projet2/Request/SYST.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Request/TYPE.class b/serveurFTP/target/classes/sr/projet2/Request/TYPE.class
new file mode 100644
index 0000000000000000000000000000000000000000..defc04d7041d592c233da7c8ed927073ddb924f9
Binary files /dev/null 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 707407981db19149b1dd8e7c2f60544f365cd80d..441896aaf8363cc9b9dbd90ec1aab6ae7bb978f4 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/ConnectionServer.class b/serveurFTP/target/classes/sr/projet2/Server/ConnectionServer.class
index fb513cedff2e5e8f4ddfb49e36019ca6c682dd08..c95e1e168da0667603e791efa370b8bde1fb541e 100644
Binary files a/serveurFTP/target/classes/sr/projet2/Server/ConnectionServer.class and b/serveurFTP/target/classes/sr/projet2/Server/ConnectionServer.class differ
diff --git a/serveurFTP/target/classes/sr/projet2/Server/FtpConnexion.class b/serveurFTP/target/classes/sr/projet2/Server/FtpConnexion.class
index cce33a413af0c96f7751d99c334dcd32341beddc..47d2df0040fc2b08f3e6bb61701ac251be384ea2 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 5b510da8045cc45775b38703ad4bcf815dfefe76..c8427259419a3de002956638a4e6d273c7158048 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
@@ -1,8 +1,14 @@
 /home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Server/ConnectionServer.java
-/home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/USER.java
 /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/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/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
+/home/hocine/eclipse-workspace/serveurFTP/src/main/java/sr/projet2/Request/FEAT.java
diff --git a/serveurFTP/target/serveurFTP-1.0-SNAPSHOT.jar b/serveurFTP/target/serveurFTP-1.0-SNAPSHOT.jar
index 43b1e6069ce7c6cbd59e507e3fd2782e542c35c0..85cc54b1bba6e2606a9dd8216b5f5abdb3ce1777 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 7ac22c58e7aeb18127209488472bcdc0b0ca915b..8f8ab532b44fbd7cfafbb501d26c8dc35c58ce79 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.036" 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.048" 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/surefirebooter4822591889526926263.jar /home/hocine/eclipse-workspace/serveurFTP/target/surefire 2021-02-18T00-17-01_812-jvmRun1 surefire473336015518436635tmp surefire_0141794290096130823tmp"/>
+    <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="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,12 +32,12 @@
     <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/surefirebooter4822591889526926263.jar"/>
+    <property name="surefire.real.class.path" value="/home/hocine/eclipse-workspace/serveurFTP/target/surefire/surefirebooter7079129417024759708.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"/>
     <property name="path.separator" value=":"/>
-    <property name="os.version" value="5.4.0-65-generic"/>
+    <property name="os.version" value="5.4.0-66-generic"/>
     <property name="java.runtime.name" value="OpenJDK Runtime Environment"/>
     <property name="file.encoding" value="UTF-8"/>
     <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/>
@@ -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.002"/>
+  <testcase name="shouldAnswerWithTrue" classname="sr.projet2.AppTest" time="0.003"/>
 </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 7e49324bb442e17cbcd7e721039aaf0f9c619a94..70439b27ebc909d6ca072e40ea128d16678b8d76 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.036 s - in sr.projet2.AppTest
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.048 s - in sr.projet2.AppTest
diff --git a/serveurFTP/target/test-classes/sr/projet2/AppTest.class b/serveurFTP/target/test-classes/sr/projet2/AppTest.class
index 49fd1cc203d5df763b95d89aba9b5c1ce7ddd1a1..61cbc1431ca1510a79c82a93c96feb0872ec69a1 100644
Binary files a/serveurFTP/target/test-classes/sr/projet2/AppTest.class and b/serveurFTP/target/test-classes/sr/projet2/AppTest.class differ