The File Distribution Tool is a client-server application that allows for secure group-based file sharing over a network. The system is designed with a server (Sender) that manages groups, handles authentication, and sends files, and clients (Receivers) that can join groups, receive files, and interact with the server to manage their memberships.
- Authentication: Ensures that only authorized users can access and interact with the system.
- Group Management: Create, delete, and manage groups to organize users and files.
- File Transmission: Securely send files to active group members over a network using UDP multicast.
- Pending File Handling: Files can be added to a pending list and sent when group members are active.
- Join Requests: Clients can request to join a group, and the server can approve or deny these requests.
- Client Management: Track which clients are in which groups and manage their memberships.
- Receiver Activity Check: Verify if a receiver is active before sending files.
- Python 3.x
- Basic understanding of networking, UDP, and sockets.
- Clone the repository:
git clone https://github.com/Sudhu2004/Tally_SystemProgramming.git
- Navigate to the project directory:
cd Tally_SystemProgramming - Install required Python packages (if any):
pip install -r requirements.txt
The sender is responsible for managing groups, handling client authentication, and sending files to group members.
- Run the
main()function in the sender script:python admin.py
- Create Group: Create a new group with a specific IP.
- Delete Group: Delete an existing group.
- Add Client to Group: Manually add a client to a group.
- Remove Client from Group: Remove a client from a group.
- List Groups: Display all available groups.
- Add File to Pending List: Add a file to a group’s pending list, which will be sent when the group members are active.
- Send Pending Files: Send all pending files to the active members of a group.
- View Pending Files Status: Display the status of pending files for each group.
- View Join Requests: View pending join requests from clients.
- Approve Join Request: Approve a client's request to join a group.
- View Client Groups: Display the groups a specific client is a part of.
- Check Active Receivers: Check if a receiver is active on the network.
- View Group Members: Display the current members of a group.
- Exit: Exit the application.
The receiver interacts with the sender, allowing the user to authenticate, join groups, and receive files.
- Run the
main()function in the receiver script:python Client\newClient.py
- Request and List Available Groups: Request and display the list of available groups from the server.
- Join Group: Send a request to join a specific group.
- View My Groups: Display the groups the receiver is currently a part of.
- Receive File: Actively receive files sent to the group by the sender.
- Exit: Exit the application.
When a receiver tries to interact with the server, they are prompted to authenticate using their login ID and password. The credentials are validated against those stored on the server.
Files are sent over the network using UDP multicast. The server sends files to all active members of a group, and clients can receive these files, which are written to the local filesystem.
- Sender creates a group with IP
224.0.0.1. - Receiver authenticates and requests to join the group.
- Sender approves the join request.
- Sender adds a file to the group's pending list.
- Sender sends the pending file to the active members of the group.
- Receiver receives the file and saves it locally.
- Multithreading: The system uses threading to handle multiple clients simultaneously and to manage file transmission without blocking the main process.
- Error Handling: Basic error handling is implemented to manage network issues and authentication failures.
- Encryption: Implement encryption for file transmission to enhance security.
- Web Interface: Develop a web-based interface for easier management of groups and clients.
- Database Integration: Store user credentials and group information in a database for persistence.
- Ensure that the correct IP and port are used for communication between the sender and receivers.
- Verify network connectivity between the sender and receivers.
- Check for any firewall or network restrictions that may block UDP traffic.
For any issues or contributions, please contact.