Git Product home page Git Product logo

nwp_myftp's Introduction

my_ftp

Time: 3 weeks

Team: 1

Language: C

The project

The goal of this project is to create a FTP server. You MUST implement the given protocol (bonuses must be RFC959 compliant). You MUST implement request sequences that are explained in the protocol (more information could befind in RFC959).The network communication will be achieved through the use of TCP sockets.

USAGE:

>> make
>> ./myftp –help
USAGE: ./myftp port path
    port              the port number on which the server socket listens
    path              the path to the home directory for the Anonymous user
WARNING

The server MUST be able to handle several clients at the same time by using select for command manage-ment and fork for data transfer. The server MUST have an authentication with an Anonymous account and an empty password. Data transfers MUST use active or passive mode.

TESTS

>> make tests_run

other rules: make fclean, make clean, make re

Author Corentin COUTRET-ROZET

nwp_myftp's People

Watchers

 avatar  avatar

nwp_myftp's Issues

Prompt

Make a promt such as:
username@adrr:port >>

Connection failed

Connection to localhost:51247 failed Expected reply-code: 220 Received : [Ncat: Cannot assign requested address.$]

Wrong command

Wrong command lead to an infinite loop in the client.

TO FIX:

  • client has to wait for a Reply-code for each sent command.
  • server has to sent an ERROR Reply-code if no command match
  • server has to clean the buffer after each execution and check if it's empty before to check if its a command

Client

Do client that create, set a socket and connect to the server. It should read from the terminal and send buffer to the server.

Commands

The following are the mandatory FTP commands from client to server:

  • ** USER** : Specify user for authentication

  • PASS : Specify password for authentication

  • ** CWD ** : Change working directory

  • ** CDUP** : Change working directory to parent directory

  • ** QUIT** : Disconnection

  • ** DELE** : Delete file on the server

  • PWD : Print working directory

  • ** PASV ** : Enable "passive" mode for data transfer

  • PORT : Enable "active" mode for data transfer

  • HELP [ ] : List available commands

  • NOOP : Do nothing

(the following are commands using data transfer )

  • RETR : Download file from server to client
  • STOR : Upload file from client to server
  • LIST [ ] : List files in the current working directory

Server loop

Create a main loop of communication between Server and clients.

Bootstrap

This bootstrap aims to introduce you to the client-server model.

It will hinge on 3 main steps:

  • creating a server
  • creating a client
  • Handling multiple clients
  • First step to File Transfer Protocol

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.