{"id":22439032,"url":"https://github.com/aalkiyumi/multi-threaded-web-server-and-ftp-client","last_synced_at":"2025-07-09T23:12:58.758Z","repository":{"id":252148964,"uuid":"839570597","full_name":"AAlkiyumi/Multi-Threaded-Web-Server-and-FTP-Client","owner":"AAlkiyumi","description":"This project implements a multi-threaded web server in Python and extends it to act as an FTP client. The server handles various file requests and integrates FTP functionality to serve text files upon request.","archived":false,"fork":false,"pushed_at":"2024-08-07T22:56:48.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T09:24:33.857Z","etag":null,"topics":["building-a-multi-threaded-web-server","client-server-architecture","computer-networks-and-networked-computing","cs4065","file-handling","ftp-client","ftp-integration","implementing-the-ftp-client","multi-threaded-web-server","programming-assignment-1","socket-programming","text-file-handling","university-of-cincinnati","web-server-development"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AAlkiyumi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-07T22:18:29.000Z","updated_at":"2024-11-12T21:51:07.000Z","dependencies_parsed_at":"2024-08-08T01:37:18.386Z","dependency_job_id":"40c52c7d-5c40-49c6-8c66-7e68808825a9","html_url":"https://github.com/AAlkiyumi/Multi-Threaded-Web-Server-and-FTP-Client","commit_stats":null,"previous_names":["qme02/multi-threaded-web-server-and-ftp-client","aalkiyumi/multi-threaded-web-server-and-ftp-client"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AAlkiyumi/Multi-Threaded-Web-Server-and-FTP-Client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AAlkiyumi%2FMulti-Threaded-Web-Server-and-FTP-Client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AAlkiyumi%2FMulti-Threaded-Web-Server-and-FTP-Client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AAlkiyumi%2FMulti-Threaded-Web-Server-and-FTP-Client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AAlkiyumi%2FMulti-Threaded-Web-Server-and-FTP-Client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AAlkiyumi","download_url":"https://codeload.github.com/AAlkiyumi/Multi-Threaded-Web-Server-and-FTP-Client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AAlkiyumi%2FMulti-Threaded-Web-Server-and-FTP-Client/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264505065,"owners_count":23618884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["building-a-multi-threaded-web-server","client-server-architecture","computer-networks-and-networked-computing","cs4065","file-handling","ftp-client","ftp-integration","implementing-the-ftp-client","multi-threaded-web-server","programming-assignment-1","socket-programming","text-file-handling","university-of-cincinnati","web-server-development"],"created_at":"2024-12-06T01:12:31.749Z","updated_at":"2025-07-09T23:12:58.736Z","avatar_url":"https://github.com/AAlkiyumi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multi-Threaded Web Server and FTP Client\n\n## Overview\n\nThis repository contains an implementation of a multi-threaded web server and an FTP client. The project is divided into two main tasks:\n\n1. **Task 1:** Implement a multi-threaded web server in Python.\n2. **Task 2:** Extend the web server to act as an FTP client to download text files from a local FTP server.\n\n## Getting Started\n\n### Prerequisites\n\n- Python 3.x\n- Docker (for setting up the FTP server)\n\n### Installation\n\n1. **Clone the repository:**\n   ```bash\n   git clone https://github.com/qme02/Multi-Threaded-Web-Server-and-FTP-Client\n   cd Multi-Threaded-Web-Server-and-FTP-Client\n\n### Docker Setup for FTP Server\n\n1. **Install Docker:**\n- Follow the [official Docker installation guide](https://docs.docker.com/get-docker/) for your operating system.\n\n2. **Run the Docker container for the FTP server:**\n   ```bash\n   docker run --rm -it -p 20:20 -p 21:21 -p 4559-4564:4559-4564 -e FTP_USER=1234 -e FTP_PASSWORD=1234 docker.io/panubo/vsftpd:latest\n\n3. **List running Docker containers to find the container ID in a new terminal window:**\n   ```bash\n   docker container ls\n\n4. **Log in to the container and change ownership of the FTP directory:**\n- Replace \u003cCONTAINER_ID\u003e with the actual container ID from the previous step.\n   ```bash\n   docker exec -it \u003cCONTAINER_ID\u003e /bin/bash\n- Inside the container, change the ownership of the FTP directory:\n   ```bash\n   chown ftp:ftp /srv\n\n5. **Create a test file in the FTP directory:**\n- Still inside the container, create a test file:\n   ```bash\n   echo \"Hello World!\" \u003e\u003e /srv/ftp_test.txt\n\n6. **Verify setup by accessing files through the web server:**\n- In your web browser, navigate to the following URLs to test various content types:\n   - http://localhost:6789/index.html\n   - http://localhost:6789/index2.html\n   - http://localhost:6789/index.txt\n   - http://localhost:6789/index.png\n   - http://localhost:6789/index.jpg\n   - http://localhost:6789/index.jpeg\n   - http://localhost:6789/index.gif\n   - http://localhost:6789/ftp_test.txt (This will test the FTP client functionality)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faalkiyumi%2Fmulti-threaded-web-server-and-ftp-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faalkiyumi%2Fmulti-threaded-web-server-and-ftp-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faalkiyumi%2Fmulti-threaded-web-server-and-ftp-client/lists"}